Tutoriel : Déployer des applications à l’aide de GitOps avec Flux v2
Ce didacticiel explique comment utiliser GitOps dans un cluster Kubernetes. GitOps avec Flux v2 est activé en tant qu’extension de cluster dans les clusters Kubernetes avec Azure Arc ou les clusters Azure Kubernetes Service (AKS). Une fois l'microsoft.flux
extension de cluster installée, vous pouvez créer une ou plusieurs ressources fluxConfigurations
qui synchronisent vos sources de référentiel git sur le cluster et rapprochent le cluster de l’état souhaité. Avec GitOps, vous pouvez utiliser votre référentiel git comme source de vérité pour la configuration du cluster et le déploiement d’applications.
Dans ce tutoriel, nous utilisons un exemple de configuration GitOps avec deux kustomizations, afin de voir comment une kustomization peut avoir une dépendance sur une autre. Vous pouvez ajouter d’autres kustomisations et dépendances en fonction des besoins, en fonction de votre scénario.
Avant de vous plonger dans, prenez un moment pour découvrir comment fonctionne GitOps avec Flux.
Conseil
Bien que la source de ce tutoriel soit un dépôt Git, Flux prend également en charge d’autres sources de fichiers courantes, comme des dépôts Helm, des fragments et Stockage Blob Azure.
Vous pouvez également créer des configurations Flux à l’aide de Bicep, de modèles ARM ou d’un fournisseur Terraform AzAPI. Pour plus d’informations, consultez Microsoft.KubernetesConfiguration fluxConfigurations.
Important
L’extension microsoft.flux
a publié la version principale 1.0.0. Elle inclut la fonctionnalité de prise en charge multilocataire. Si vous avez des configurations GitOps Flux v2 existantes qui utilisent une version précédente de l’extension microsoft.flux
, vous pouvez mettre à niveau vers la version la plus récente manuellement en utilisant Azure CLI : az k8s-extension create -g <RESOURCE_GROUP> -c <CLUSTER_NAME> -n flux --extension-type microsoft.flux -t <CLUSTER_TYPE>
(utilisez -t connectedClusters
pour les clusters Arc et -t managedClusters
pour les clusters AKS).
Prérequis
Pour déployer des applications à l’aide de GitOps avec Flux v2, il vous faut :
Pour les clusters Kubernetes avec Azure Arc
Un cluster Kubernetes connecté à Azure Arc qui est en cours d’exécution. Les clusters ARM64 sont pris en charge à compter de
microsoft.flux
version 1.7.0.Découvrez comment connecter un cluster Kubernetes à Azure Arc. Si vous devez vous connecter via un proxy sortant, veillez à installer les agents Arc avec les paramètres de proxy.
Autorisations de lecture et d’écriture sur le groupe de ressources
Microsoft.Kubernetes/connectedClusters
.
Pour les clusters Azure Kubernetes Service (AKS)
Un cluster AKS basé sur une identité de service managée (MSI) qui est en cours d’exécution.
Important
Assurez-vous que le cluster AKS est créé avec MSI (et non SPN), car l'extension
microsoft.flux
ne fonctionne pas avec les clusters AKS basés sur SPN. Pour les nouveaux clusters AKS créés avecaz aks create
, le cluster est basé sur MSI par défaut. Pour les clusters SPN déjà créés qui doivent être convertis en MSI, exécutezaz aks update -g $RESOURCE_GROUP -n $CLUSTER_NAME --enable-managed-identity
. Pour plus d’informations, consultez Utiliser une identité managée dans AKS.Autorisations de lecture et d’écriture sur le groupe de ressources
Microsoft.ContainerService/managedClusters
.
Commun aux deux types de cluster
Autorisations de lecture et d’écriture sur ces types de ressources :
Microsoft.KubernetesConfiguration/extensions
Microsoft.KubernetesConfiguration/fluxConfigurations
Azure CLI, version 2.15 ou ultérieure. Installez Azure CLI ou utilisez les commandes suivantes pour effectuer une mise à jour vers la dernière version :
az version az upgrade
Le client de ligne de commande Kubernetes, kubectl. Si vous utilisez Azure Cloud Shell,
kubectl
est déjà installé.Installez
kubectl
en local avec la commandeaz aks install-cli
:az aks install-cli
Inscription des fournisseurs de ressources Azure suivants :
az provider register --namespace Microsoft.Kubernetes az provider register --namespace Microsoft.ContainerService az provider register --namespace Microsoft.KubernetesConfiguration
L’inscription est un processus asynchrone qui doit se terminer dans un délai de 10 minutes. Pour superviser le processus d’inscription, utilisez la commande suivante :
az provider show -n Microsoft.KubernetesConfiguration -o table Namespace RegistrationPolicy RegistrationState --------------------------------- -------------------- ------------------- Microsoft.KubernetesConfiguration RegistrationRequired Registered
Prise en charge des versions et des régions
GitOps est actuellement pris en charge dans toutes les régions prises en charge par Kubernetes avec Azure Arc. GitOps est actuellement pris en charge dans un sous-ensemble des régions prises en charge par AKS. Le service GitOps ajoute de nouvelles régions prises en charge sur une cadence régulière.
La version la plus récente de l’extension Flux v2 et les deux versions précédentes (N-2) sont prises en charge. Nous recommandons généralement d’utiliser la version la plus récente de l’extension.
Configuration requise pour le réseau
Les agents GitOps nécessitent le protocole TCP sortant (sortie) vers la source du référentiel sur le port 22 (SSH) ou le port 443 (HTTPS) pour fonctionner. Les agents requièrent également accès aux URL sortantes suivantes :
Point de terminaison (DNS) | Description |
---|---|
https://management.azure.com |
Requis pour que l’agent communique avec le service de configuration Kubernetes. |
https://<region>.dp.kubernetesconfiguration.azure.com |
Point de terminaison du plan de données permettant à l’agent d’envoyer (push) le statut et de récupérer (fetch) les informations de configuration. Dépend de <region> (les régions prises en charge mentionnées précédemment). |
https://login.microsoftonline.com |
Requis pour extraire et mettre à jour des jetons Azure Resource Manager. |
https://mcr.microsoft.com |
Requis pour extraire des images conteneurs pour les contrôleurs de Flux. |
Activer les extensions CLI
Installez les derniers packages d’extension CLI k8s-configuration
et k8s-extension
:
az extension add -n k8s-configuration
az extension add -n k8s-extension
Pour mettre à jour ces packages vers les dernières versions :
az extension update -n k8s-configuration
az extension update -n k8s-extension
Pour afficher une liste des extensions Azure CLI installées et leurs versions, utilisez la commande suivante :
az extension list -o table
Experimental ExtensionType Name Path Preview Version
------------- -------------- ----------------- ----------------------------------------------------- -------- --------
False whl connectedk8s C:\Users\somename\.azure\cliextensions\connectedk8s False 1.2.7
False whl k8s-configuration C:\Users\somename\.azure\cliextensions\k8s-configuration False 1.5.0
False whl k8s-extension C:\Users\somename\.azure\cliextensions\k8s-extension False 1.1.0
Conseil
Pour obtenir de l’aide sur la résolution des erreurs, consultez la section GitOps (Flux v2) de Résoudre les problèmes d’extension pour les clusters Kubernetes avec Azure Arc.
Appliquez une configuration Flux
Utilisez l'extension k8s-configuration
d’Azure CLI (ou le portail Azure) pour activer GitOps dans un cluster KUBERNETES AKS ou Arc. Pour une démonstration, utilisez le référentiel gitops-flux2-kustomize-helm-mt public.
Important
Le référentiel de démonstration est conçu pour simplifier votre utilisation de ce didacticiel et illustrer certains principes clés. Pour rester à jour, le référentiel peut obtenir des changements cassants occasionnellement à partir des mises à niveau de version. Ces modifications n’affectent pas votre nouvelle application de ce didacticiel, mais uniquement les applications de didacticiel précédentes qui n’ont pas été supprimées. Pour savoir comment gérer ces changements, consultez l’exclusion de responsabilité des changements cassants.
L’exemple suivant utilise la commande az k8s-configuration flux create
pour appliquer une configuration Flux à un cluster, à l’aide des valeurs et paramètres suivants :
- Le groupe de ressources qui contient le cluster est
flux-demo-rg
: - Le nom du cluster Azure Arc est
flux-demo-arc
. - Le type de cluster est Azure Arc (
-t connectedClusters
), mais cet exemple fonctionne également avec AKS (-t managedClusters
). - Le nom de la configuration du Flux est
cluster-config
. - L’espace de noms pour l’installation de la configuration est
cluster-config
. - L’URL du référentiel Git public est
https://github.com/Azure/gitops-flux2-kustomize-helm-mt
. - La branche du référentiel Git est
main
. - La portée de la configuration est
cluster
. Cette étendue donne aux opérateurs les autorisations nécessaires pour apporter des modifications à l’ensemble du cluster. Pour utiliser l’étenduenamespace
avec ce didacticiel, consultez les modifications nécessaires. - Deux kustomizations sont spécifiées avec des noms
infra
etapps
. Chacune est associée à un chemin d’accès dans le référentiel. - La kustomization
apps
dépend de la kustomizationinfra
. (La kustomizationinfra
doit se terminer avant l'exécution de la kustomizationapps
.) - Définir
prune=true
sur les deux kustomizations. Ce paramètre garantit que les objets déployés par Flux sur le cluster sont nettoyés s’ils sont supprimés du référentiel, ou si la configuration de Flux ou les kustomizations sont supprimés.
az k8s-configuration flux create -g flux-demo-rg \
-c flux-demo-arc \
-n cluster-config \
--namespace cluster-config \
-t connectedClusters \
--scope cluster \
-u https://github.com/Azure/gitops-flux2-kustomize-helm-mt \
--branch main \
--kustomization name=infra path=./infrastructure prune=true \
--kustomization name=apps path=./apps/staging prune=true dependsOn=\["infra"\]
L’extension microsoft.flux
est installée sur le cluster (si elle n’était pas déjà installée dans un déploiement GitOps précédent).
Conseil
La commande az k8s-configuration flux create
déploie l’extension microsoft.flux
sur le cluster et crée la configuration. Dans certains scénarios, vous pouvez créer l’extension de flux instance séparément avant de créer vos ressources de configuration. Pour ce faire, utilisez la az k8s-extension create
commande pour créer un instance de l’extension sur votre cluster.
Lorsque la configuration du flux est installée d’abord, l’état de conformité initial peut être Pending
ou Non-compliant
, car le rapprochement est toujours en cours. Au bout d’une minute environ, vous pouvez interroger à nouveau la configuration pour voir l’état de conformité final.
az k8s-configuration flux show -g flux-demo-rg -c flux-demo-arc -n cluster-config -t connectedClusters
Pour vérifier que le déploiement a réussi, exécutez la commande suivante :
az k8s-configuration flux show -g flux-demo-rg -c flux-demo-arc -n cluster-config -t connectedClusters
Un déploiement réussi crée les espaces de noms suivants :
flux-system
: Contient les contrôleurs d’extension de Flux.cluster-config
: Contient les objets de configuration de Flux.nginx
,podinfo
,redis
: Espaces de noms pour les charges de travail décrites dans manifestes dans le référentiel Git.
Pour confirmer les espaces de noms, exécutez la commande suivante :
kubectl get namespaces
L'espace de noms flux-system
contient les objets d’extension de Flux :
- Contrôleurs Azure Flux :
fluxconfig-agent
,fluxconfig-controller
- Contrôleurs OSS Flux :
source-controller
,kustomize-controller
,helm-controller
,notification-controller
L'agent Flux et les pods du contrôleur doivent être en état de fonctionnement. Confirmez cela à l’aide de la commande suivante :
kubectl get pods -n flux-system
NAME READY STATUS RESTARTS AGE
fluxconfig-agent-9554ffb65-jqm8g 2/2 Running 0 21m
fluxconfig-controller-9d99c54c8-nztg8 2/2 Running 0 21m
helm-controller-59cc74dbc5-77772 1/1 Running 0 21m
kustomize-controller-5fb7d7b9d5-cjdhx 1/1 Running 0 21m
notification-controller-7d45678bc-fvlvr 1/1 Running 0 21m
source-controller-df7dc97cd-4drh2 1/1 Running 0 21m
L’espace de nomscluster-config
contient les objets de configuration de Flux.
kubectl get crds
NAME CREATED AT
alerts.notification.toolkit.fluxcd.io 2022-04-06T17:15:48Z
arccertificates.clusterconfig.azure.com 2022-03-28T21:45:19Z
azureclusteridentityrequests.clusterconfig.azure.com 2022-03-28T21:45:19Z
azureextensionidentities.clusterconfig.azure.com 2022-03-28T21:45:19Z
buckets.source.toolkit.fluxcd.io 2022-04-06T17:15:48Z
connectedclusters.arc.azure.com 2022-03-28T21:45:19Z
customlocationsettings.clusterconfig.azure.com 2022-03-28T21:45:19Z
extensionconfigs.clusterconfig.azure.com 2022-03-28T21:45:19Z
fluxconfigs.clusterconfig.azure.com 2022-04-06T17:15:48Z
gitconfigs.clusterconfig.azure.com 2022-03-28T21:45:19Z
gitrepositories.source.toolkit.fluxcd.io 2022-04-06T17:15:48Z
helmcharts.source.toolkit.fluxcd.io 2022-04-06T17:15:48Z
helmreleases.helm.toolkit.fluxcd.io 2022-04-06T17:15:48Z
helmrepositories.source.toolkit.fluxcd.io 2022-04-06T17:15:48Z
imagepolicies.image.toolkit.fluxcd.io 2022-04-06T17:15:48Z
imagerepositories.image.toolkit.fluxcd.io 2022-04-06T17:15:48Z
imageupdateautomations.image.toolkit.fluxcd.io 2022-04-06T17:15:48Z
kustomizations.kustomize.toolkit.fluxcd.io 2022-04-06T17:15:48Z
providers.notification.toolkit.fluxcd.io 2022-04-06T17:15:48Z
receivers.notification.toolkit.fluxcd.io 2022-04-06T17:15:48Z
volumesnapshotclasses.snapshot.storage.k8s.io 2022-03-28T21:06:12Z
volumesnapshotcontents.snapshot.storage.k8s.io 2022-03-28T21:06:12Z
volumesnapshots.snapshot.storage.k8s.io 2022-03-28T21:06:12Z
websites.extensions.example.com 2022-03-30T23:42:32Z
Confirmez d’autres détails de la configuration à l’aide des commandes suivantes.
kubectl get fluxconfigs -A
NAMESPACE NAME SCOPE URL PROVISION AGE
cluster-config cluster-config cluster https://github.com/Azure/gitops-flux2-kustomize-helm-mt Succeeded 44m
kubectl get gitrepositories -A
NAMESPACE NAME URL READY STATUS AGE
cluster-config cluster-config https://github.com/Azure/gitops-flux2-kustomize-helm-mt True Fetched revision: main/4f1bdad4d0a54b939a5e3d52c51464f67e474fcf 45m
kubectl get helmreleases -A
NAMESPACE NAME READY STATUS AGE
cluster-config nginx True Release reconciliation succeeded 66m
cluster-config podinfo True Release reconciliation succeeded 66m
cluster-config redis True Release reconciliation succeeded 66m
kubectl get kustomizations -A
NAMESPACE NAME READY STATUS AGE
cluster-config cluster-config-apps True Applied revision: main/4f1bdad4d0a54b939a5e3d52c51464f67e474fcf 65m
cluster-config cluster-config-infra True Applied revision: main/4f1bdad4d0a54b939a5e3d52c51464f67e474fcf 65m
Les charges de travail sont déployées à partir de manifestes dans le référentiel Git.
kubectl get deploy -n nginx
NAME READY UP-TO-DATE AVAILABLE AGE
nginx-ingress-controller 1/1 1 1 67m
nginx-ingress-controller-default-backend 1/1 1 1 67m
kubectl get deploy -n podinfo
NAME READY UP-TO-DATE AVAILABLE AGE
podinfo 1/1 1 1 68m
kubectl get all -n redis
NAME READY STATUS RESTARTS AGE
pod/redis-master-0 1/1 Running 0 68m
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/redis-headless ClusterIP None <none> 6379/TCP 68m
service/redis-master ClusterIP 10.0.13.182 <none> 6379/TCP 68m
NAME READY AGE
statefulset.apps/redis-master 1/1 68m
Contrôler les contrôleurs déployés avec l’extension de cluster Flux
Pour certains scénarios, vous souhaiterez peut-être modifier les contrôleurs Flux qui sont installés avec l’extension de cluster Flux.
Les contrôleurs de Flux source
, helm
, kustomize
et notification
sont installés par défaut. Les contrôleurs image-automation
etimage-reflector
, utilisés pour mettre à jour un référentiel Git lorsque de nouvelles images conteneur sont disponibles, doivent être activés explicitement.
Vous pouvez utiliser la commande k8s-extension
pour modifier les options par défaut :
--config source-controller.enabled=<true/false>
(par défauttrue
)--config helm-controller.enabled=<true/false>
(par défauttrue
)--config kustomize-controller.enabled=<true/false>
(par défauttrue
)--config notification-controller.enabled=<true/false>
(par défauttrue
)--config image-automation-controller.enabled=<true/false>
(par défautfalse
)--config image-reflector-controller.enabled=<true/false>
(par défautfalse
)
Par exemple, pour désactiver les notifications, vous pouvez définir notification-controller.enabled
sur false
.
Cet exemple de commande installe les contrôleurs image-reflector
et image-automation
. Si l’extension Flux a été créée automatiquement lorsqu’une configuration flux a été créée pour la première fois, le nom de l’extension est flux
.
az k8s-extension create -g <cluster_resource_group> -c <cluster_name> -t <connectedClusters or managedClusters or provisionedClusters> --name flux --extension-type microsoft.flux --config image-automation-controller.enabled=true image-reflector-controller.enabled=true
Utilisation d’une identité Kubelet comme méthode d’authentification pour les clusters AKS
Pour des clusters AKS, l’une des options d’authentification à utiliser est l’identité kubelet. Par défaut, AKS crée sa propre identité kubelet dans le groupe de ressources managé. Si vous préférez, vous pouvez utiliser une identité managée kubelet précréée. Pour ce faire, ajoutez le paramètre --config useKubeletIdentity=true
au moment de l’installation de l’extension Flux.
az k8s-extension create --resource-group <resource-group> --cluster-name <cluster-name> --cluster-type managedClusters --name flux --extension-type microsoft.flux --config useKubeletIdentity=true
Conseils d’intégration Red Hat OpenShift
Les contrôleurs de flux nécessitent une contrainte de contexte de sécurité non racine pour approvisionner correctement les pods sur le cluster. Ces contraintes doivent être ajoutées au cluster avant le déploiement de l’extension microsoft.flux
.
NS="flux-system"
oc adm policy add-scc-to-user nonroot system:serviceaccount:$NS:kustomize-controller
oc adm policy add-scc-to-user nonroot system:serviceaccount:$NS:helm-controller
oc adm policy add-scc-to-user nonroot system:serviceaccount:$NS:source-controller
oc adm policy add-scc-to-user nonroot system:serviceaccount:$NS:notification-controller
oc adm policy add-scc-to-user nonroot system:serviceaccount:$NS:image-automation-controller
oc adm policy add-scc-to-user nonroot system:serviceaccount:$NS:image-reflector-controller
Pour plus d’informations sur les conseils d’OpenShift pour l’intégration de Flux, consultez la documentation Flux.
Utiliser des paramètres
Flux prend en charge de nombreux paramètres pour activer différents scénarios. Pour obtenir une description de tous les paramètres pris en charge par flux, consultez la documentation Flux officielle. Flux dans Azure ne prend pas encore en charge tous les paramètres. Faites-nous savoir si un paramètre dont vous avez besoin est manquant dans l’implémentation d’Azure.
Pour plus d’informations sur les paramètres disponibles et leur utilisation, consultez paramètres pris en charge par GitOps (Flux v2).
Utiliser une référence d’authentification de secret local
Pour utiliser une référence d’authentification de secret local, le secret doit exister dans le même espace de noms où le fluxConfiguration
sera déployé. Le secret doit également contenir tous les paramètres d’authentification nécessaires pour la source.
Pour découvrir des informations sur la création de secrets pour diverses sources fluxConfiguration
, consultez Secret local pour l’authentification auprès de la source.
Gérer la configuration du cluster à l’aide du contrôleur Flux Kustomize
Le contrôleur Flux Kustomize est installé dans le cadre de l'extension de cluster microsoft.flux
. Il permet la gestion déclarative de la configuration du cluster et le déploiement d’applications à l’aide de manifestes Kubernetes synchronisés à partir d’un référentiel Git. Ces manifestes Kubernetes peuvent éventuellement inclure un fichier kustomize.yaml .
Pour plus d’informations d’utilisation, consultez les ressources suivantes :
- Contrôleur flux Kustomize
- Documents de référence Kustomize
- Fichier kustomization
- Projet Kustomize
- Guides Kustomize
Gérer les versions du graphique Helm à l'aide du contrôleur Flux Helm
Le contrôleur Flux Helm est installé dans le cadre de l'extension microsoft.flux
de cluster. Il vous permet de gérer de façon déclarative les versions du graphique Helm avec les manifestes Kubernetes que vous gérez dans votre référentiel Git.
Pour plus d’informations d’utilisation, consultez les ressources suivantes :
- Flux pour les utilisateurs Helm
- Gérer les versions Helm
- Migrer vers Flux v2 Helm à partir de Flux v1 Helm
- Contrôleur Flux Helm
Conseil
En raison de la façon dont Helm gère les fichiers d’index, le traitement des graphiques Helm est une opération coûteuse et peut avoir une empreinte mémoire très élevée. Par conséquent, le rapprochement d’un grand nombre de graphiques Helm à la fois peut entraîner des pics de mémoire et des erreursOOMKilled
. Par défaut, le contrôleur définit sa limite de mémoire à 1 Gi et ses demandes de mémoire à 64 Mi. Pour augmenter cette limite et les demandes en raison d’un nombre élevé de rapprochements de graphiques Helm volumineux, exécutez la commande suivante après avoir installé l’extension microsoft.flux :
az k8s-extension update -g <resource-group> -c <cluster-name> -n flux -t connectedClusters --config source-controller.resources.limits.memory=2Gi source-controller.resources.requests.memory=300Mi
Utiliser la source GitRepository pour des graphiques Helm
Si vos graphiques Helm sont stockés dans la source GitRepository
que vous configurez dans le cadre de la ressource fluxConfigurations
, vous pouvez indiquer que la source configurée doit être utilisée comme source des graphiques Helm en ajoutant clusterconfig.azure.com/use-managed-source: "true"
à votre fichier HelmRelease.yaml, comme le montre l’exemple suivant :
---
apiVersion: helm.toolkit.fluxcd.io/v2beta1
kind: HelmRelease
metadata:
name: somename
namespace: somenamespace
annotations:
clusterconfig.azure.com/use-managed-source: "true"
spec:
...
Lorsque vous utilisez cette annotation, le HelmRelease déployé est corrigé avec la référence à la source configurée. Actuellement, seule la source GitRepository
est prise en charge.
Détection de la dérive Helm
La détection de dérive pour les versions Helm n’est pas activée par défaut. À partir de microsoft.flux
v1.7.5, vous pouvez activer la détection de dérive Helm en exécutant la commande suivante :
az k8s-extension update --resource-group <resource-group> --cluster-name <cluster-name> --name flux --cluster-type <cluster-type> --config helm-controller.detectDrift=true
Substitution stricte de variable post-génération
Substitution stricte de variable post-génération est disponible à partir de microsoft.flux
v1.13.1.
Pour créer une extension Flux avec une stratégie activée de substitution stricte, exécutez cette commande :
az k8s-extension create --resource-group <resource-group> --cluster-name <cluster-name> --cluster-type <cluster-type> --name flux --extension-type microsoft.flux --config kustomize-controller.strict-substitution-mode=true
Pour mettre à jour une extension Flux existante afin d’activer une stratégie de substitution stricte, exécutez cette commande :
az k8s-extension update --resource-group <resource-group> --cluster-name <cluster-name> --cluster-type <cluster-type> --name flux --config kustomize-controller.strict-substitution-mode=true
Mise à l’échelle verticale
La prise en charge de la mise à l’échelle verticale est disponible à partir de microsoft.flux
v1.12.0. Actuellement, seuls les paramètres spécifiques décrits dans la documentation sur la mise à l’échelle verticale de flux sont pris en charge en mode natif. D’autres paramètres peuvent être appliqués manuellement au cluster.
Pour augmenter les limites de ressources sur les contrôleurs au-delà des limites actuelles, exécutez cette commande, en modifiant le type de ressource et la valeur spécifiques en fonction des besoins :
az k8s-extension update --resource-group <resource-group> --cluster-name <cluster-name> --cluster-type <cluster-type> --name flux --config kustomize-controller.resources.limits.memory=2Gi kustomize-controller.resources.limits.cpu=2000m
Pour augmenter le nombre de rapprochements qui peuvent être effectués en parallèle, exécutez cette commande :
az k8s-extension update --resource-group <resource-group> --cluster-name <cluster-name> --cluster-type <cluster-type> --name flux --config kustomize-controller.concurrent=6 kustomize-controller.requeue-dependency=50s
Pour activer la génération en mémoire, exécutez cette commande :
az k8s-extension update --resource-group <resource-group> --cluster-name <cluster-name> --cluster-type <cluster-type> --name flux --config kustomize-controller.enable-in-memory-build=true
Espion OOM Helm
À partir de microsoft.flux
v1.7.5, vous pouvez activer l’espion OOM Helm. Pour plus d’informations, consultez Activer Helm près de la détection OOM.
Veillez à passer en revue les stratégies de correction potentielles et à les appliquer si nécessaire lors de l’activation de cette fonctionnalité.
Pour activer l’espion OOM, exécutez la commande suivante :
az k8s-extension update --resource-group <resource-group> --cluster-name <cluster-name> --name flux --cluster-type <cluster-type> --config helm-controller.outOfMemoryWatch.enabled=true helm-controller.outOfMemoryWatch.memoryThreshold=70 helm-controller.outOfMemoryWatch.interval=700ms
Si vous ne spécifiez pas de valeurs pour memoryThreshold
et outOfMemoryWatch
, le seuil de mémoire par défaut est défini sur 95 %, l’intervalle dont il faut vérifier l’utilisation de la mémoire est défini sur 500 ms.
Paramètres configurables au niveau du journal
Par défaut, le log-level
pour les contrôleurs de flux est défini sur info
. À compter de microsoft.flux
v1.8.3, vous pouvez modifier ces paramètres par défaut à l’aide de la commande k8s-extension
comme suit :
--config helm-controller.log-level=<info/error/debug>
--config source-controller.log-level=<info/error/debug>
--config kustomize-controller.log-level=<info/error/debug>
--config notification-controller.log-level=<info/error/debug>
--config image-automation-controller.log-level=<info/error/debug>
--config image-reflector-controller.log-level=<info/error/debug>
Les valeurs valides sont debug
, info
ou error
. Par exemple, pour modifier l' log-level
pour le source-controller
et le kustomize-controller
, utilisez la commande suivante :
az k8s-extension update --resource-group <resource-group> --cluster-name <cluster-name> --cluster-type <cluster-type> --name flux --config source-controller.log-level=error kustomize-controller.log-level=error
À compter de microsoft.flux
version 1.9.1, fluxconfig-agent
et fluxconfig-controller
prennent en charge les niveaux de journalisation info
et error
(mais pas debug
). Vous pouvez les modifier à l’aide de la commande k8s-extension comme suit :
--config fluxconfig-agent.log-level=<info/error>
--config fluxconfig-controller.log-level=<info/error>
Par exemple, la commande suivante change log-level
en error
:
az k8s-extension update --resource-group <resource-group> --cluster-name <cluster-name> --cluster-type <cluster-type> --name flux --config fluxconfig-agent.log-level=error fluxconfig-controller.log-level=error
Dépréciation d’Azure DevOps SSH-RSA
Azure DevOps annoncé la dépréciation du SSH-RSA comme méthode de chiffrement prise en charge pour la connexion aux référentiels Azure à l’aide de SSH. Si vous utilisez des clés SSH pour vous connecter aux référentiels Azure dans les configurations flux, nous vous recommandons de passer à des clés RSA-SHA2-256 ou RSA-SHA2-512 plus sécurisées.
Lors de la rapprochement des configurations flux, un message d’erreur indiquant que ssh-rsa est sur le point d’être déconseillé ou n’est pas pris en charge. Si c’est le cas, mettez à jour l’algorithme de clé hôte utilisé pour établir des connexions SSH aux référentiels Azure DevOps à partir du flux source-controller
et image-automation-controller
(si activé) à l’aide de la commande az k8s-extension update
. Par exemple :
az k8s-extension update --cluster-name <cluster-name> --resource-group <resource-group> --cluster-type <cluster-type> --name flux --config source-controller.ssh-host-key-args="--ssh-hostkey-algos=rsa-sha2-512,rsa-sha2-256"
az k8s-extension update --cluster-name <cluster-name> --resource-group <resource-group> --cluster-type <cluster-type> --name flux --config image-automation-controller.ssh-host-key-args="--ssh-hostkey-algos=rsa-sha2-512,rsa-sha2-256"
Pour plus d’informations sur la dépréciation d’Azure DevOps SSH-RSA, consultez fin de la prise en charge de SSH-RSA pour Azure Repos.
Configurer l’annotation sur les pods d’extension Flux
Lors de la configuration d’une solution autre qu’Azure Firewall, des règles de réseau et de FQDN/application sont nécessaires pour un cluster AKS. Démarrer avec microsoft.flux
v1.11.1, Les pods de contrôleur de flux peuvent maintenant définir l’annotation kubernetes.azure.com/set-kube-service-host-fqdn
dans leurs spécifications de pod. Cela permet au trafic vers le nom de domaine du serveur d’API, même lorsqu’un pare-feu de couche 7 est présent, ce qui facilite les déploiements lors de l’installation de l’extension. Pour configurer cette annotation lors de l’utilisation de l’extension Flux, utilisez les commandes suivantes.
# Create flux extension with annotation
az k8s-extension create --resource-group <resource-group> --cluster-name <cluster-name> --cluster-type <cluster-type> --name flux --extension-type microsoft.flux --config setKubeServiceHostFqdn=true
# Update flux extension with annotation
az k8s-extension update --resource-group <resource-group> --cluster-name <cluster-name> --cluster-type <cluster-type> --name flux --config setKubeServiceHostFqdn=true
Identité de charge de travail dans les clusters AKS
À compter de microsoft.flux
v1.8.0, vous pouvez créer des configurations Flux dans clusters AKS avec l’identité de charge de travail activée. Pour ce faire, modifiez l’extension de flux comme indiqué dans les étapes suivantes.
Récupérez l’URL de l’émetteur OIDC pour votre cluster.
Créez une identité managée et notez son ID client.
Créez l’extension de flux sur le cluster à l’aide de la commande suivante :
az k8s-extension create --resource-group <resource_group_name> --cluster-name <aks_cluster_name> --cluster-type managedClusters --name flux --extension-type microsoft.flux --config workloadIdentity.enable=true workloadIdentity.azureClientId=<user_assigned_client_id>
Établissez une informations d’identification d’identité fédérée. Par exemple :
# For source-controller az identity federated-credential create --name ${FEDERATED_IDENTITY_CREDENTIAL_NAME} --identity-name "${USER_ASSIGNED_IDENTITY_NAME}" --resource-group "${RESOURCE_GROUP}" --issuer "${AKS_OIDC_ISSUER}" --subject system:serviceaccount:"flux-system":"source-controller" --audience api://AzureADTokenExchange # For image-reflector controller if you plan to enable it during extension creation, it is not deployed by default az identity federated-credential create --name ${FEDERATED_IDENTITY_CREDENTIAL_NAME} --identity-name "${USER_ASSIGNED_IDENTITY_NAME}" --resource-group "${RESOURCE_GROUP}" --issuer "${AKS_OIDC_ISSUER}" --subject system:serviceaccount:"flux-system":"image-reflector-controller" --audience api://AzureADTokenExchange # For kustomize-controller az identity federated-credential create --name ${FEDERATED_IDENTITY_CREDENTIAL_NAME} --identity-name "${USER_ASSIGNED_IDENTITY_NAME}" --resource-group "${RESOURCE_GROUP}" --issuer "${AKS_OIDC_ISSUER}" --subject system:serviceaccount:"flux-system":"kustomize-controller" --audience api://AzureADTokenExchange
Vérifiez que la ressource personnalisée qui doit utiliser les jeux d’identités de charge de travail
.spec.provider
valeur pourazure
dans le manifeste. Par exemple :apiVersion: source.toolkit.fluxcd.io/v1beta2 kind: HelmRepository metadata: name: acrrepo spec: interval: 10m0s type: <helm_repository_type> url: <helm_repository_link> provider: azure
Veillez à fournir les autorisations appropriées pour l’identité de charge de travail pour la ressource que vous souhaitez que le contrôleur source-contrôleur ou le contrôleur de réflexion d’image extrait. Par exemple, si vous utilisez Azure Container Registry,
AcrPull
les autorisations sont requises.
Supprimer la configuration et l’extension flux
Utilisez les commandes suivantes pour supprimer votre configuration Flux et, si vous le souhaitez, l’extension Flux elle-même.
Supprimer la configuration Flux
La commande suivante supprime à la fois la ressource fluxConfigurations
dans Azure et les objets de configuration Flux dans le cluster. Étant donné que la configuration de Flux a été créée à l’origine avec le paramètre prune=true
pour kustomization, tous les objets créés dans le cluster en fonction des manifestes dans le référentiel git seront supprimés lors de la suppression de la configuration de Flux. Toutefois, cette commande ne supprime pas l’extension Flux elle-même.
az k8s-configuration flux delete -g flux-demo-rg -c flux-demo-arc -n cluster-config -t connectedClusters --yes
Supprimer l’extension de cluster de Flux
Lorsque vous supprimez l’extension Flux, la ressource d’extension microsoft.flux
dans Azure et les objets d’extension Flux dans le cluster sont supprimés.
Important
Veillez à supprimer toutes les configurations flux dans le cluster avant de supprimer l’extension Flux. La suppression de l’extension sans supprimer d’abord les configurations flux peut laisser votre cluster dans une condition instable.
Si l’extension de Flux a été créée automatiquement lors de la création de la configuration de Flux, le nom de l’extension sera flux
.
az k8s-extension delete -g flux-demo-rg -c flux-demo-arc -n flux -t connectedClusters --yes
Conseil
Ces commandes utilisent -t connectedClusters
, qui est approprié pour un cluster Kubernetes avec Azure Arc. Pour un cluster AKS, utilisez -t managedClusters
à la place.
Étapes suivantes
- En savoir plus sur les configurations et GitOps.
- Découvrez comment utiliser Azure Policy pour appliquer GitOps à grande échelle.
- En savoir plus sur Surveiller l’état et l’activité GitOps (Flux v2).