Aller au contenu
A beautiful cover image with the text "Argo CD"

Après avoir lu l’article de Vegard S. Hagen “Argo CD Kustomize with Helm” et décidé que leur solution n’était pas adaptée à notre cluster, nous sommes directement passés au guide “Getting started” par défaut d’Argo CD. Et maintenant, nous allons vous faire traverser les étapes de configuration d’argoprojArgo CD sur k3s-iok3s et ciliumCilium, en poursuivant à partir du chapitre “Setup Certificate Manager with Cloudflare” de notre article précédent “Setting up Kubernetes with Cilium and Cloudflare”. Dans ce même article récent, nous avons également configuré keel-hqKeel à la fin, mais cette étape sera désormais inutile car nous utiliserons Argo CD pour obtenir le code le plus récent et le plus avancé à partir de chaque dépôt githubGitHub. Bonne lecture !

Pré-requis

Avant de commencer, nous devons nous assurer que nous avons installé kubectl, un fichier kubeconfig (k3s enregistre ce fichier ici :

/etc/rancher/k3s/config.yaml
flannel-backend: "none"
disable-kube-proxy: true
disable-network-policy: true
cluster-init: true
disable:
- servicelb
- traefik

) et CoreDNS (vérifiez si vous avez CoreDNS en exécutant cette commande :

Fenêtre de terminal
kubectl get pods -n kube-system -l k8s-app=kube-dns

commande).

Installation

Tout d’abord, appliquons tous les services nécessaires, les déploiements et de nombreuses autres ressources Kubernetes différentes en exécutant :

Fenêtre de terminal
kubectl create namespace argocd
kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yaml

Certificat

De plus, nous aurons besoin d’un certificat :

apiVersion: cert-manager.io/v1
kind: Certificate
metadata:
name: argocd
namespace: argocd
spec:
secretName: argocd
issuerRef:
name: acme-issuer
kind: ClusterIssuer
dnsNames:
- "argo-cd.trueberryless.org"

Appliquez cette ressource en exécutant kubectl apply -f certificate.yaml.

Contrôleur d’Ingress

Nous aurons également besoin d’un contrôleur d’Ingress géré par Cilium :

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: argocd-ingress
namespace: argocd
spec:
rules:
- host: argo-cd.trueberryless.org
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: argocd-server
port:
number: 80
tls:
- hosts:
- argo-cd.trueberryless.org
secretName: argocd

Appliquez cette ressource en exécutant kubectl apply -f argocd-ingress.yaml.

Désactiver TLS dans Argo CD

Avec le certificat, la connexion entre le client et le serveur est sécurisée. Cependant, il existe toujours un certificat auto-signé au sein des services argoprojArgo CD, dont nous n’avons pas strictement besoin. Nous pouvons donc désactiver la sécurité du serveur Argo CD en modifiant la propriété server.insecure.

Pour ce faire, exécutez d’abord cette commande :

Fenêtre de terminal
kubectl edit cm argocd-cmd-params-cm -n argocd

ce qui ouvrira, espérons-le, un fichier dans vim ou neovim (sinon ce serait une honte si vous nous demandez, MDR). Le fichier devrait ressembler à ceci :

# Please edit the object below. Lines beginning with a '#' will be ignored,
# and an empty file will abort the edit. If an error occurs while saving this file will be
# reopened with the relevant failures.
#
apiVersion: v1
data:
server.insecure: "true"
kind: ConfigMap
metadata:
annotations:
kubectl.kubernetes.io/last-applied-configuration: |
{"apiVersion":"v1","kind":"ConfigMap","metadata":{"annotations":{},"labels":{"app.kubernetes.io/name":"argocd-cmd-params-cm","app.kubernetes.io/part-of":"argocd"},"name":"arg
creationTimestamp: "2024-07-27T11:15:28Z"
labels:
app.kubernetes.io/name: argocd-cmd-params-cm
app.kubernetes.io/part-of: argocd
name: argocd-cmd-params-cm
namespace: argocd
resourceVersion: "239710156"
uid: 5f53d26b-3adf-4ed9-9807-c3da847335a2
data:
server.insecure: "true"

Les deux dernières lignes ne seront probablement pas là au départ, mais c’est exactement le paramètre que nous voulons atteindre. Allez-y et ajoutez ces deux lignes (marquées ci-dessus) et enregistrez le fichier (Esc:wq si vous êtes cool).

Redémarrez le serveur Argo CD en exécutant cette commande et en attendant que le déploiement soit terminé :

Fenêtre de terminal
kubectl rollout restart deploy argocd-server -n argocd
kubectl rollout status deploy argocd-server -n argocd

Après toutes ces étapes, nous devrions maintenant voir l’interface utilisateur sur https://argo-cd.trueberryless.org (protégé par mot de passe).

Tableau de bord de l'interface utilisateur d'Argo CD

Ajouter le manifest au dépôt

Pour créer une nouvelle application dans argoprojArgo CD (via l’interface utilisateur ou l’interface CLI — nous utilisons l’interface utilisateur car nous n’avons pas configuré l’interface CLI), nous devons préparer le dépôt Git. Comme le dépôt est la seule source de vérité, c’est aussi l’endroit où nous définissons toutes les ressources Kubernetes qui devraient être créées par Argo CD.

Nous recommandons de créer un nouveau dossier dans le dépôt Git appelé quelque chose comme manifest. Dans ce dossier, nous allons créer quelques fichiers :

  • certificate.yaml :

    apiVersion: cert-manager.io/v1
    kind: Certificate
    metadata:
    name: mutanuq
    namespace: mutanuq
    spec:
    secretName: mutanuq
    issuerRef:
    name: acme-issuer
    kind: ClusterIssuer
    dnsNames:
    - "mutanuq.trueberryless.org"
  • deployment.yaml :

    apiVersion: apps/v1
    kind: Deployment
    metadata:
    name: mutanuq
    namespace: mutanuq
    labels:
    app: mutanuq
    spec:
    replicas: 3
    selector:
    matchLabels:
    app: mutanuq
    template:
    metadata:
    labels:
    app: mutanuq
    spec:
    containers:
    - name: mutanuq
    image: "trueberryless/mutanuq"
    imagePullPolicy: Always
  • service.yaml :

    apiVersion: v1
    kind: Service
    metadata:
    name: mutanuq
    namespace: mutanuq
    annotations:
    cert-manager.io/issuer: acme-issuer
    spec:
    selector:
    app: mutanuq
    ports:
    - name: http
    port: 80
  • ingress.yaml :

    apiVersion: networking.k8s.io/v1
    kind: Ingress
    metadata:
    name: mutanuq
    namespace: mutanuq
    spec:
    rules:
    - host: mutanuq.trueberryless.org
    http:
    paths:
    - path: /
    pathType: Prefix
    backend:
    service:
    name: mutanuq
    port:
    number: 80
    tls:
    - hosts:
    - mutanuq.trueberryless.org
    secretName: mutanuq

Ces fichiers sont essentiellement les mêmes que ceux mentionnés dans l’autre article mais séparés en quatre fichiers, car cela nous donne l’avantage de manipuler le manifest depuis githubGitHub Actions. Mais chaque chose en son temps, vous verrez comment configurer le manifest avec GitHub Actions dans le prochain article.

Créer une nouvelle application dans l’interface utilisateur d’Argo CD

Vous verrez probablement le grand bouton NEW APP dans l’interface utilisateur d’argoprojArgo CD. Cliquez dessus et créez une nouvelle application avec les propriétés adaptées ci-dessous :

  • Nom de l’application : mutanuq
  • Nom du projet : défaut
  • Politique de synchronisation : En savoir plus dans cet article / laissez Manuel pour l’instant
  • URL du dépôt : https://github.com/trueberryless-org/mutanuq
  • Révision : HEAD
  • Chemin : manifest
  • URL du cluster : https://kubernetes.default.svc
  • Namespace : mutanuq

Optionnellement — si vous avez le CLI installé — vous pouvez exécuter cette commande pour obtenir le même résultat :

Fenêtre de terminal
argocd app create mutanuq \
--project default \
--repo https://github.com/trueberryless-org/mutanuq \
--revision HEAD \
--path manifest \
--dest-server https://kubernetes.default.svc \
--dest-namespace mutanuq

Vous devriez maintenant voir votre site web en cours de déploiement dans l’interface utilisateur. Ce processus peut prendre un certain temps, car, par exemple, la demande de certificat doit être approuvée. Une application saine devrait ressembler à ceci :

Interface utilisateur d'exemple d'Argo CD

Célébrez avec un café !

Félicitations, vous avez configuré avec succès argoprojArgo CD sur un cluster k3s-iok3s ! Vous méritez une pause café. Savourez une tasse bien méritée et, si vous souhaitez partager un café virtuel avec moi, n’hésitez pas à soutenir mon travail sur Ko-fi. Merci !

Continuation

La suite dans notre prochain article de blog, qui décrira comment configurer un dépôt githubGitHub pouvant ensuite être déployé via Argo CD.