| ... | @@ -587,29 +587,32 @@ procfile exec` to replicate the environment where your application will run. |
... | @@ -587,29 +587,32 @@ procfile exec` to replicate the environment where your application will run. |
|
|
#### Workers
|
|
#### Workers
|
|
|
|
|
|
|
|
Some web applications need to run extra deployments for "worker processes". For
|
|
Some web applications need to run extra deployments for "worker processes". For
|
|
|
example it is common in a Rails application to have a separate worker process
|
|
example, it is common in a Rails application to have a separate worker process
|
|
|
to run background tasks like sending emails.
|
|
to run background tasks like sending emails.
|
|
|
|
|
|
|
|
The [default Helm chart](https://gitlab.com/gitlab-org/charts/auto-deploy-app)
|
|
The [default Helm chart](https://gitlab.com/gitlab-org/charts/auto-deploy-app)
|
|
|
used in Auto Deploy [has support for running worker
|
|
used in Auto Deploy [has support for running worker
|
|
|
processes](https://gitlab.com/gitlab-org/charts/auto-deploy-app/merge_requests/9).
|
|
processes](https://gitlab.com/gitlab-org/charts/auto-deploy-app/merge_requests/9).
|
|
|
|
|
|
|
|
In order to run a worker you'll need to ensure that it is able to respond to
|
|
In order to run a worker, you'll need to ensure that it is able to respond to
|
|
|
the standard health checks which expect a successful HTTP response on port
|
|
the standard health checks, which expect a successful HTTP response on port
|
|
|
`5000`. For sidekiq you could make use of the
|
|
`5000`. For [Sidekiq](https://github.com/mperham/sidekiq), you could make use of
|
|
|
[sidekiq_alive gem](https://rubygems.org/gems/sidekiq_alive) to do this.
|
|
the [`sidekiq_alive` gem](https://rubygems.org/gems/sidekiq_alive) to do this.
|
|
|
|
|
|
|
|
In order to work with sidekiq you'll also need to ensure your deployments have
|
|
In order to work with Sidekiq, you'll also need to ensure your deployments have
|
|
|
access to a redis instance. Auto DevOps won't deploy this for you so you'll
|
|
access to a Redis instance. Auto DevOps won't deploy this for you so you'll
|
|
|
need to manage this separately and then set a CI variable
|
|
need to:
|
|
|
`K8S_SECRET_REDIS_URL` which the URL of this instance to ensure it's passed
|
|
|
|
|
into your deployments.
|
|
|
|
|
|
|
|
|
|
Once you have configured your worker to respond to health checks you you will
|
|
- Maintain your own Redis instance.
|
|
|
|
- Set a CI variable `K8S_SECRET_REDIS_URL`, which the URL of this instance to
|
|
|
|
ensure it's passed into your deployments.
|
|
|
|
|
|
|
|
Once you have configured your worker to respond to health checks, you will
|
|
|
need to configure a CI variable `HELM_UPGRADE_EXTRA_ARGS` with the value
|
|
need to configure a CI variable `HELM_UPGRADE_EXTRA_ARGS` with the value
|
|
|
`--values helm-values.yaml`. Then you can, for example, run a
|
|
`--values helm-values.yaml`.
|
|
|
[sidekiq](https://github.com/mperham/sidekiq) worker for your rails application
|
|
|
|
|
by adding a file named `helm-values.yaml` to your repo with the following
|
|
Then you can, for example, run a Sidekiq worker for your Rails application
|
|
|
|
by adding a file named `helm-values.yaml` to your repository with the following
|
|
|
content:
|
|
content:
|
|
|
|
|
|
|
|
```yml
|
|
```yml
|
| ... | |
... | |
| ... | | ... | |