Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/kiwicom/crane
⬆ A GitLab CI ready image to upgrade services in Rancher
https://github.com/kiwicom/crane
docker docker-image gitlab gitlab-ci rancher rancher-api rancher-upgrades
Last synced: about 2 months ago
JSON representation
⬆ A GitLab CI ready image to upgrade services in Rancher
- Host: GitHub
- URL: https://github.com/kiwicom/crane
- Owner: kiwicom
- License: mit
- Archived: true
- Created: 2017-03-31T09:28:10.000Z (over 7 years ago)
- Default Branch: master
- Last Pushed: 2023-04-04T14:49:24.000Z (over 1 year ago)
- Last Synced: 2024-07-15T15:37:54.833Z (5 months ago)
- Topics: docker, docker-image, gitlab, gitlab-ci, rancher, rancher-api, rancher-upgrades
- Language: Python
- Homepage: https://code.kiwi.com/announcing-crane-e8ce911b187b
- Size: 316 KB
- Stars: 96
- Watchers: 7
- Forks: 11
- Open Issues: 27
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
- awesome-rancher - GitLab CI ready image - A GitLab CI ready image to upgrade services in Rancher (Rancher 1.0 / Community projects 1.0)
README
# crane
![crane logo - an origami crane](logo.png)
A GitLab CI ready image to upgrade services in Rancher.
See the [whole story on our blog at code.kiwi.com](https://code.kiwi.com/announcing-crane-e8ce911b187b)![![Python: 3.7](https://img.shields.io/badge/python-3.7-blue.svg)](https://python.org)
[![Code style: black](https://img.shields.io/badge/code%20style-black-black.svg)](https://github.com/ambv/black)
[![Gitlab pipeline status (branch)](https://img.shields.io/gitlab/pipeline/kiwicom/crane/master.svg)](https://gitlab.com/kiwicom/crane/pipelines)## Usage
1. Deploy your application on Rancher manually,
with an image tagged with a git reference
(our recommendation is to use the commit SHA, but you can also use git tags.)
2. Get a Rancher Environment API key
and add the API keypair as secret variables in the project,
named `RANCHER_ACCESS_KEY` and `RANCHER_SECRET_KEY`.
3. Also add `RANCHER_URL` and `RANCHER_ENV_ID`,
preferably in secret variables, or in `.gitlab-ci.yml`.
(In the example URL `https://rancher.example.com/env/1a81/apps/stacks/1e551/services/1s1456/containers`
the environment ID is `1a81`. This ID always starts with `1a`.)
4. Add something like this to your `.gitlab-ci.yml`:```yaml
stages:
# [...]
- deploydeploy-production:
stage: deploy
image: kiwicom/crane:3.2.1
script:
- crane --stack my-app --service api --service worker
environment:
name: production
url: https://my-app.example.com/
when: manual
```## Settings
| CLI flag | Environment variable | Required | Default |
| ----------------------- | --------------------------- | -------- | ------- |
| `--url` | `RANCHER_URL` | Yes | |
| `--access-key` | `RANCHER_ACCESS_KEY` | Yes | |
| `--secret-key` | `RANCHER_SECRET_KEY` | Yes | |
| `--env` | `RANCHER_ENV_ID` | Yes | |
| `--stack` | `RANCHER_STACK_NAME` | Yes | |
| `--new-commit` | `CRANE_NEW_COMMIT` | No | HEAD |
| `--new-image` | `CRANE_NEW_IMAGE` | No | None |
| `--service` | `RANCHER_SERVICE_NAME` | No | app |
| `--sidekick` | `RANCHER_SIDEKICK_NAME` | No | None |
| `--batch-size` | `CRANE_BATCH_SIZE` | No | 1 |
| `--batch-interval` | `CRANE_BATCH_INTERVAL` | No | 2 |
| `--start-first` | `CRANE_START_FIRST` | No | False |
| `--sleep-after-upgrade` | `CRANE_SLEEP_AFTER_UPGRADE` | No | 0 |
| `--manual-finish` | `CRANE_MANUAL_FINISH` | No | False |## Integrations & Extensions
### Slack
When `--slack-token` is set,
crane can post an announcement to `--slack-channel`
with details about the ongoing deployment.
You can use `--slack-link` to add useful URLs to this announcements
such as Datadog dashboards, Sentry issues, or the project repository.
You can set `--slack-channel` multiple times;
all channels will have the same annnouncement posted to them.
If you're setting the channel names via the environment variable,
separate them with a space.| CLI flag | Environment variable | Details |
| ----------------- | --------------------- | ----------------------------- |
| `--slack-token` | `CRANE_SLACK_TOKEN` | Slack API token |
| `--slack-channel` | `CRANE_SLACK_CHANNEL` | Slack channels to announce in |
| `--slack-link` | `CRANE_SLACK_LINK` | links to mention in Slack |### Sentry
With `--sentry-webhook`, crane can post release details to Sentry.
[Release tracking](https://docs.sentry.io/learn/releases/#what-is-a-release) is useful
to provide additional context to errors tracked in Sentry.| CLI flag | Environment variable | Details |
| ------------------ | ---------------------- | -------------------------- |
| `--sentry-webhook` | `CRANE_SENTRY_WEBHOOK` | Sentry release webhook URL |### Datadog
If you set an API key with `--datadog-key`,
Crane will post successful and failed releases to your Datadog event feed.
These events can then be marked on charts and displayed on dashboards.| CLI flag | Environment variable | Details |
| --------------- | -------------------- | ---------------------------- |
| `--datadog-key` | `CRANE_DATADOG_KEY` | URLs to post release info to |### Generic webhooks
With the `--webhook-url` option,
you can specify URLs that crane will send release info to,
in its own format.
One use for this is for analytics;
if somebody sets up a listener for these events,
they'll have the data needed to identify correlations
between releases and changes in user behavior or sales numbers.| CLI flag | Environment variable | Details |
| ----------------- | --------------------- | ---------------------------- |
| `--webhook-url` | `CRANE_WEBHOOK_URL` | URLs to post release info to |
| `--webhook-token` | `CRANE_WEBHOOK_TOKEN` | Auth token for webhooks |