Skip to content

Helm: enable automatic creation of external provisioner deployment #8243

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
johnstcn opened this issue Jun 28, 2023 · 1 comment · Fixed by #9050
Closed

Helm: enable automatic creation of external provisioner deployment #8243

johnstcn opened this issue Jun 28, 2023 · 1 comment · Fixed by #9050
Assignees
Milestone

Comments

@johnstcn
Copy link
Member

Problem

From testing in #8213, provisionerd uses the vast majority of CPU resources. Large number of concurrent provisioner jobs can easily saturate the CPU causing knock-on effects in Coder HTTP API (latency etc.).

Our recommended way of doing this is with external provisioners.

However, there is currently no simple path to deploying external provisioners in Helm. Creating an external provisioner currently requires a CODER_TOKEN, which presents us with a chicken-and-egg problem in the current Helm chart.

You can work around this currently by manually applying a deployment manifest with a manually generated coder token, but it would be a nice experience for a Kubernetes operator if this were supported natively in the Helm chart.

Proposed Solution

Per @deansheather's comment in #8183 (comment):

  • Add configuration knobs in our current Helm chart to enable creation of an external provisionerd enddpoint, something like:
    • provisionerd.external.enable (create a separate provisionerd deployment)
    • provisionerd.external.replicas (replica count of the provisionerd deployment)
    • provisionerd.external.concurrency (max number of jobs per provisionerd replica)
    • provisionerd.external.resources.{requests,limits} (requests, limits per provisionerd replica)
  • Add the ability for external provisioners to authenticate with coder using a pre-shared secret.
  • Randomly generate a shared secret between the coder and provisionerd deployments, and pass this into both deployments.
@sharkymark
Copy link
Contributor

Large customers with big workspace provisioning swings at the beginning of the day, or after lunch (if auto-off is aggressive) will want and like this - to prevent a coderd replica from becoming exhausted, dropping workspace connections, and restarting.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging a pull request may close this issue.

4 participants