Configuration d'Argo CD dans un cluster k3s
Cette traduction a été générée par une IA générative à l'aide de la traduction continue Action. →

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’Argo CD sur
k3s et
Cilium, 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 à 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
GitHub. Bonne lecture !
Nous supposons que vous avez suivi notre autre article de blog.
Avant de commencer, nous devons nous assurer que nous avons installé kubectl
, un fichier kubeconfig (k3s enregistre ce fichier ici :
flannel-backend: "none"disable-kube-proxy: truedisable-network-policy: truecluster-init: truedisable: - servicelb - traefik
) et CoreDNS (vérifiez si vous avez CoreDNS en exécutant cette commande :
kubectl get pods -n kube-system -l k8s-app=kube-dns
commande).
Tout d’abord, appliquons tous les services nécessaires, les déploiements et de nombreuses autres ressources Kubernetes différentes en exécutant :
kubectl create namespace argocdkubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yaml
De plus, nous aurons besoin d’un certificat :
apiVersion: cert-manager.io/v1kind: Certificatemetadata: name: argocd namespace: argocdspec: secretName: argocd issuerRef: name: acme-issuer kind: ClusterIssuer dnsNames: - "argo-cd.trueberryless.org"
Appliquez cette ressource en exécutant kubectl apply -f certificate.yaml
.
Nous aurons également besoin d’un contrôleur d’Ingress géré par Cilium :
apiVersion: networking.k8s.io/v1kind: Ingressmetadata: name: argocd-ingress namespace: argocdspec: 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
.
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 Argo 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 :
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: v1data: server.insecure: "true"kind: ConfigMapmetadata: 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-c3da847335a2data: 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é :
kubectl rollout restart deploy argocd-server -n argocdkubectl 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).
Les identifiants de connexion à l’interface utilisateur d’Argo CD se composent d’un utilisateur et d’un mot de passe. L’utilisateur est toujours admin
et vous pouvez obtenir votre mot de passe en exécutant :
kubectl -n argocd get secret argocd-initial-admin-secret -o jsonpath="{.data.password}" | base64 -d
Pour créer une nouvelle application dans Argo 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/v1kind: Certificatemetadata:name: mutanuqnamespace: mutanuqspec:secretName: mutanuqissuerRef:name: acme-issuerkind: ClusterIssuerdnsNames:- "mutanuq.trueberryless.org" -
deployment.yaml
:apiVersion: apps/v1kind: Deploymentmetadata:name: mutanuqnamespace: mutanuqlabels:app: mutanuqspec:replicas: 3selector:matchLabels:app: mutanuqtemplate:metadata:labels:app: mutanuqspec:containers:- name: mutanuqimage: "trueberryless/mutanuq"imagePullPolicy: Always -
service.yaml
:apiVersion: v1kind: Servicemetadata:name: mutanuqnamespace: mutanuqannotations:cert-manager.io/issuer: acme-issuerspec:selector:app: mutanuqports:- name: httpport: 80 -
ingress.yaml
:apiVersion: networking.k8s.io/v1kind: Ingressmetadata:name: mutanuqnamespace: mutanuqspec:rules:- host: mutanuq.trueberryless.orghttp:paths:- path: /pathType: Prefixbackend:service:name: mutanuqport:number: 80tls:- hosts:- mutanuq.trueberryless.orgsecretName: 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 GitHub Actions. Mais chaque chose en son temps, vous verrez comment configurer le manifest avec GitHub Actions dans le prochain article.
Vous verrez probablement le grand bouton NEW APP
dans l’interface utilisateur d’Argo 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 :
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 :
Félicitations, vous avez configuré avec succès Argo CD sur un cluster
k3s ! 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 !
La suite dans notre prochain article de blog, qui décrira comment configurer un dépôt GitHub pouvant ensuite être déployé via Argo CD.