Skip to content

Concourse

Let's see how to run Concourse (docs) in a Kubernetes cluster.

CLI

We'll need Concourse CLI (fly) to interact with Concourse server:

bash
# gets the binary archive from https://github.com/concourse/concourse/releases (update the version)
curl -L https://github.com/concourse/concourse/releases/download/v7.13.2/fly-7.13.2-linux-amd64.tgz | tar -xzf -
sudo mv fly /usr/local/bin/
sudo chmod +x /usr/local/bin/fly
fly --version

Configuration

We'll use the official Helm chart:

Deployment

bash
# adds Helm chart repository
helm repo add concourse https://concourse-charts.storage.googleapis.com/
helm repo update

# installs
helm upgrade --install concourse concourse/concourse --namespace concourse --create-namespace

# uninstalls
helm uninstall concourse -n concourse
kubectl delete ns concourse

Examples

Instruqt, Traefik, cert-manager, Let's Encrypt

bash
DOMAIN=concourse.console.${_SANDBOX_ID}.instruqt.io

# installs the chart with helm
helm upgrade --install concourse concourse/concourse --namespace concourse --create-namespace \
  --set web.ingress.annotations.'cert-manager\.io/cluster-issuer'=letsencrypt-prod \
  --set web.ingress.enabled=true \
  --set web.ingress.hosts[0]=$DOMAIN \
  --set web.ingress.ingressClassName=traefik \
  --set web.ingress.tls[0].secretName=concourse-tls \
  --set web.ingress.tls[0].hosts[0]=$DOMAIN \
  --set concourse.web.externalUrl=https://$DOMAIN

# logs in (test/test by default)
fly --target localhost login --concourse-url https://$DOMAIN/