Installation avec Helm

Les installations de production de concourse sont faits avec Helm ou du Kubernetes. Généralement, vous avez un noeud principal et un ou plusieurs noeuds associés pour le traitement des jobs. L'avantage de cette architecture est le scalling. Si les jobs sont nombreux avoir plus de noeuds associés est un avantage considérable.

Installer Helm

Il faudra comme prérequis avoir helm d'installé sur la machine cible de l'installation.

Mac OS

brew install helm

Windows

choco install kubernetes-helm

ou

scoop install helm

Linux (apt)

curl https://baltocdn.com/helm/signing.asc | gpg --dearmor | sudo tee /usr/share/keyrings/helm.gpg > /dev/null
sudo apt-get install apt-transport-https --yes
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/helm.gpg] https://baltocdn.com/helm/stable/debian/ all main" | sudo tee /etc/apt/sources.list.d/helm-stable-debian.list
sudo apt-get update
sudo apt-get install helm

Linux (rpm)

sudo dnf install helm

Linux (snap)

sudo snap install helm --classic

Installer Concourse CI par Helm

Le helm chart de concourse sur Github s'appelle concourse/concourse-chart. Le fichier de configuration du chart s'appelle values.yml. Il est super documenté et vous permet de comprendre en détails toutes les options de configuration.

Avant d'appliquer, remplacez <nom_installation> par un nom que vous voulez donnez aux déploiements.

Installation avec les valeurs par défaut

helm repo add concourse https://concourse-charts.storage.googleapis.com/
helm install <nom_installation> concourse/concourse

Installation avec des configurations personnalisées

helm repo add concourse https://concourse-charts.storage.googleapis.com/
helm install <nom_installation> -f values.yaml concourse/concourse

Configuration de ingress

Une fois installé, vous devez exposer votre installation. Généralement, ça passe pas ingress et un gestionnaire de certificats SSL. Voici des exemples de configurations:

apiVersion: cert-manager.io/v1
kind: ClusterIssuer
metadata:
  name: lets-encrypt
spec:
  acme:
    email: <votre-email>
    server: https://acme-v02.api.letsencrypt.org/directory
    privateKeySecretRef:
      name: <nom-ingress-tls>
    solvers:
      - http01:
          ingress:
            class: public
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: <nom-meta>
  namespace: default
  annotations:
    cert-manager.io/cluster-issuer: lets-encrypt
spec:
  tls:
    - hosts:
        - <nom-de-domaine-concourse>
      secretName: <nom-ingress-tls>
  rules:
    - host: <nom-de-domaine-concourse>
      http:
        paths:
          - path: /
            pathType: Prefix
            backend:
              service:
                name: <nom-service-conteneurs>
                port:
                  number: <port-expose-service>

À la fin de l'installation, il est important que vous devez vérifier l'état de vos pods, services, load balancers Kubernetes et diagnostiquer les problèmes éventuels. Les platformes étant différentes, les techniques d'installation des certificats SSL et de Ingress sont fonction des l'implémentations de la spécification.