Zelfstudie: Configuraties implementeren met GitOps in een Kubernetes-cluster met Azure Arc
Belangrijk
Deze zelfstudie is bedoeld voor GitOps met Flux v1. GitOps met Flux v2 is nu beschikbaar voor Azure Arc-clusters met Kubernetes en Azure Kubernetes Service (AKS). ga naar de zelfstudie voor GitOps met Flux v2. U wordt aangeraden zo snel mogelijk naar Flux v2 te migreren.
Ondersteuning voor op Flux v1 gebaseerde clusterconfiguratiebronnen die vóór 1 januari 2024 zijn gemaakt, eindigt op 24 mei 2025. Vanaf 1 januari 2024 kunt u geen nieuwe op Flux v1 gebaseerde clusterconfiguratiebronnen maken.
In deze zelfstudie past u Flux v1-configuraties toe met behulp van GitOps in een Kubernetes-cluster met Azure Arc. U leert het volgende:
- Maak een configuratie op een Kubernetes-cluster met Azure Arc met behulp van een git-voorbeeldopslagplaats.
- Controleer of de configuratie is gemaakt.
- Configuratie toepassen vanuit een persoonlijke Git-opslagplaats.
- Valideer de Kubernetes-configuratie.
Vereisten
Een Azure-account met een actief abonnement. Gratis een account maken
Een bestaand met Azure Arc verbonden Kubernetes-cluster.
- Als u nog geen cluster hebt verbonden, doorloopt u de quickstart Een Kubernetes-cluster met Azure Arc verbinden.
Inzicht in de voordelen en architectuur van deze functie. Lees meer in het artikel Configuraties en GitOps - Kubernetes met Azure Arc.
Installeer de
k8s-configuration
Azure CLI-extensie van versie >= 1.0.0:az extension add --name k8s-configuration
Tip
Als de extensie al is geïnstalleerd, kunt u deze
k8s-configuration
bijwerken naar de nieuwste versie met behulp van de volgende opdracht -az extension update --name k8s-configuration
Een configuratie maken
De voorbeeldopslagplaats die in dit artikel wordt gebruikt, is gestructureerd rond de persona van een clusteroperator. De manifesten in deze opslagplaats richten enkele naamruimten in, implementeren workloads en bieden een aantal teamspecifieke configuraties. Met behulp van deze opslagplaats met GitOps worden de volgende resources in uw cluster gemaakt:
- Naamruimten:
cluster-config
,team-a
team-b
- Implementatie:
arc-k8s-demo
- ConfigMap:
team-a/endpoints
De config-agent
polls naar Azure voor nieuwe of bijgewerkte configuraties. Deze taak duurt maximaal 5 minuten.
Als u een privéopslagplaats aan de configuratie wilt koppelen, voert u de onderstaande stappen uit in Configuratie toepassen vanuit een persoonlijke Git-opslagplaats.
Belangrijk
Deze zelfstudie is bedoeld voor GitOps met Flux v1. GitOps met Flux v2 is nu beschikbaar voor Azure Arc-clusters met Kubernetes en Azure Kubernetes Service (AKS). ga naar de zelfstudie voor GitOps met Flux v2. U wordt aangeraden zo snel mogelijk naar Flux v2 te migreren.
Ondersteuning voor op Flux v1 gebaseerde clusterconfiguratiebronnen die vóór 1 januari 2024 zijn gemaakt, eindigt op 24 mei 2025. Vanaf 1 januari 2024 kunt u geen nieuwe op Flux v1 gebaseerde clusterconfiguratiebronnen maken.
Azure CLI gebruiken
Gebruik de Azure CLI-extensie om k8s-configuration
een verbonden cluster te koppelen aan de Git-voorbeeldopslagplaats.
Geef deze configuratie
cluster-config
een naam.Geef de agent de opdracht om de operator in de
cluster-config
naamruimte te implementeren.Geef de operator
cluster-admin
machtigingen.az k8s-configuration flux create --name cluster-config --cluster-name AzureArcTest1 --resource-group AzureArcTest --operator-instance-name cluster-config --operator-namespace cluster-config --repository-url https://github.com/Azure/arc-k8s-demo --scope cluster --cluster-type connectedClusters
{ "complianceStatus": { "complianceState": "Pending", "lastConfigApplied": "0001-01-01T00:00:00", "message": "{\"OperatorMessage\":null,\"ClusterState\":null}", "messageLevel": "3" }, "configurationProtectedSettings": {}, "enableHelmOperator": false, "helmOperatorProperties": null, "id": "/subscriptions/<sub id>/resourceGroups/<group name>/providers/Microsoft.Kubernetes/connectedClusters/<cluster name>/providers/Microsoft.KubernetesConfiguration/sourceControlConfigurations/cluster-config", "name": "cluster-config", "operatorInstanceName": "cluster-config", "operatorNamespace": "cluster-config", "operatorParams": "--git-readonly", "operatorScope": "cluster", "operatorType": "Flux", "provisioningState": "Succeeded", "repositoryPublicKey": "", "repositoryUrl": "https://github.com/Azure/arc-k8s-demo", "resourceGroup": "MyRG", "sshKnownHostsContents": "", "systemData": { "createdAt": "2020-11-24T21:22:01.542801+00:00", "createdBy": null, "createdByType": null, "lastModifiedAt": "2020-11-24T21:22:01.542801+00:00", "lastModifiedBy": null, "lastModifiedByType": null }, "type": "Microsoft.KubernetesConfiguration/sourceControlConfigurations" }
Een openbare Git-opslagplaats gebruiken
Parameter | Format |
---|---|
--repository-url |
http[s]://server/repo[.git] |
Een privé-Git-opslagplaats gebruiken met door SSH en Flux gemaakte sleutels
Voeg de openbare sleutel die door Flux wordt gegenereerd toe aan het gebruikersaccount in uw Git-serviceprovider. Als de sleutel wordt toegevoegd aan de opslagplaats in plaats van het gebruikersaccount, gebruikt git@
u deze in plaats van user@
in de URL.
Ga naar de sectie Configuratie toepassen vanuit een privé-Git-opslagplaats voor meer informatie.
Parameter | Format | Opmerkingen |
---|---|---|
--repository-url |
ssh://user@server/repo[.git] of user@server:repo[.git] | git@ kan vervangen user@ |
Een privé-Git-opslagplaats gebruiken met SSH en door de gebruiker verstrekte sleutels
Geef uw eigen persoonlijke sleutel rechtstreeks of in een bestand op. De sleutel moet de PEM-indeling hebben en eindigen op newline (\n).
Voeg de bijbehorende openbare sleutel toe aan het gebruikersaccount in uw Git-serviceprovider. Als de sleutel wordt toegevoegd aan de opslagplaats in plaats van het gebruikersaccount, gebruikt u git@
deze in plaats van user@
.
Ga naar de sectie Configuratie toepassen vanuit een privé-Git-opslagplaats voor meer informatie.
Parameter | Format | Opmerkingen |
---|---|---|
--repository-url |
ssh://user@server/repo[.git] of user@server:repo[.git] | git@ kan vervangen user@ |
--ssh-private-key |
Base64-gecodeerde sleutel in PEM-indeling | Sleutel rechtstreeks opgeven |
--ssh-private-key-file |
volledig pad naar lokaal bestand | Geef het volledige pad naar het lokale bestand op dat de PEM-indelingssleutel bevat |
Een privé-Git-host gebruiken met SSH en door de gebruiker verstrekte bekende hosts
De Flux-operator houdt een lijst bij met veelvoorkomende Git-hosts in het bestand met bekende hosts om de Git-opslagplaats te verifiëren voordat de SSH-verbinding tot stand wordt gebracht. Als u een ongebruikelijke Git-opslagplaats of uw eigen Git-host gebruikt, kunt u de hostsleutel opgeven zodat Flux uw opslagplaats kan identificeren.
Net als persoonlijke sleutels kunt u uw known_hosts inhoud rechtstreeks of in een bestand opgeven. Wanneer u uw eigen inhoud oplevert, gebruikt u de specificaties van de known_hosts inhoudsindeling, samen met een van de bovenstaande SSH-sleutelscenario's.
Parameter | Format | Opmerkingen |
---|---|---|
--repository-url |
ssh://user@server/repo[.git] of user@server:repo[.git] | git@ kan vervangen user@ |
--ssh-known-hosts |
base64-gecodeerd | Rechtstreeks inhoud van bekende hosts opgeven |
--ssh-known-hosts-file |
volledig pad naar lokaal bestand | Geef bekende hosts-inhoud op in een lokaal bestand |
Een persoonlijke Git-opslagplaats gebruiken met HTTPS
Parameter | Format | Opmerkingen |
---|---|---|
--repository-url |
https://server/repo[.git] | HTTPS met basisverificatie |
--https-user |
onbewerkte of base64-gecodeerde | HTTPS-gebruikersnaam |
--https-key |
onbewerkte of base64-gecodeerde | Persoonlijk HTTPS-toegangstoken of -wachtwoord |
Notitie
- Helm-operatorgrafiek versie 1.2.0+ ondersteunt de privéverificatie van de HTTPS Helm-release.
- HTTPS Helm-release wordt niet ondersteund voor door AKS beheerde clusters.
- Als u Flux nodig hebt voor toegang tot de Git-opslagplaats via uw proxy, moet u de Azure Arc-agents bijwerken met de proxy-instellingen. Zie Verbinding maken met een uitgaande proxyserver voor meer informatie.
Aanvullende parameters
Pas de configuratie aan met de volgende optionele parameters:
Parameter | Description |
---|---|
--enable-helm-operator |
Schakel over om ondersteuning in te schakelen voor Helm-grafiekimplementaties. |
--helm-operator-params |
Grafiekwaarden voor Helm-operator (indien ingeschakeld). Bijvoorbeeld: --set helm.versions=v3 . |
--helm-operator-chart-version |
Grafiekversie voor Helm-operator (indien ingeschakeld). Gebruik versie 1.2.0+. Standaard: '1.2.0'. |
--operator-namespace |
Naam voor de operatornaamruimte. Standaard: 'standaard'. Maximaal 23 tekens. |
--operator-params |
Parameters voor operator. Moet worden opgegeven binnen enkele aanhalingstekens. Bijvoorbeeld --operator-params='--git-readonly --sync-garbage-collection --git-branch=main' |
Opties die worden ondersteund in --operator-params
:
Optie | Omschrijving |
---|---|
--git-branch |
Vertakking van Git-opslagplaats die moet worden gebruikt voor Kubernetes-manifesten. De standaardwaarde is 'master'. Nieuwere opslagplaatsen hebben een hoofdbranch met de naam main , in welk geval u moet instellen --git-branch=main . |
--git-path |
Relatief pad in de Git-opslagplaats voor Flux om Kubernetes-manifesten te vinden. |
--git-readonly |
Git-opslagplaats wordt beschouwd als alleen-lezen. Flux probeert er niet naar te schrijven. |
--manifest-generation |
Indien ingeschakeld, zoekt Flux naar .flux.yaml en voert u Kustomize of andere manifestgeneratoren uit. |
--git-poll-interval |
Periode waarop git-opslagplaats moet worden gecontroleerd op nieuwe doorvoeringen. De standaardwaarde is 5m (5 minuten). |
--sync-garbage-collection |
Als deze optie is ingeschakeld, worden resources verwijderd die door Flux zijn gemaakt, maar die niet meer aanwezig zijn in Git. |
--git-label |
Label om de voortgang van de synchronisatie bij te houden. Wordt gebruikt om de Git-vertakking te taggen. Standaard is flux-sync . |
--git-user |
Gebruikersnaam voor Git-doorvoer. |
--git-email |
E-mail die moet worden gebruikt voor Git-doorvoer. |
Als u niet wilt dat Flux naar de opslagplaats schrijft en --git-user
of --git-email
niet is ingesteld, --git-readonly
wordt deze automatisch ingesteld.
Zie de Flux-documentatie voor meer informatie.
Notitie
Flux wordt standaard gesynchroniseerd vanuit de master
vertakking van de Git-opslagplaats. Nieuwere Git-opslagplaatsen hebben echter de hoofdvertakking met de naam main
, in welk geval u moet instellen --git-branch=main
in de --operator-params.
Tip
U kunt een configuratie maken in Azure Portal op het tabblad GitOps van de Kubernetes-resource met Azure Arc.
De configuratie valideren
Gebruik de Azure CLI om te controleren of de configuratie is gemaakt.
az k8s-configuration show --name cluster-config --cluster-name AzureArcTest1 --resource-group AzureArcTest --cluster-type connectedClusters
De configuratieresource wordt bijgewerkt met informatie over nalevingsstatus, berichten en foutopsporing.
{
"complianceStatus": {
"complianceState": "Installed",
"lastConfigApplied": "2020-12-10T18:26:52.801000+00:00",
"message": "...",
"messageLevel": "Information"
},
"configurationProtectedSettings": {},
"enableHelmOperator": false,
"helmOperatorProperties": {
"chartValues": "",
"chartVersion": ""
},
"id": "/subscriptions/<sub id>/resourceGroups/AzureArcTest/providers/Microsoft.Kubernetes/connectedClusters/AzureArcTest1/providers/Microsoft.KubernetesConfiguration/sourceControlConfigurations/cluster-config",
"name": "cluster-config",
"operatorInstanceName": "cluster-config",
"operatorNamespace": "cluster-config",
"operatorParams": "--git-readonly",
"operatorScope": "cluster",
"operatorType": "Flux",
"provisioningState": "Succeeded",
"repositoryPublicKey": "...",
"repositoryUrl": "git://github.com/Azure/arc-k8s-demo.git",
"resourceGroup": "AzureArcTest",
"sshKnownHostsContents": null,
"systemData": {
"createdAt": "2020-12-01T03:58:56.175674+00:00",
"createdBy": null,
"createdByType": null,
"lastModifiedAt": "2020-12-10T18:30:56.881219+00:00",
"lastModifiedBy": null,
"lastModifiedByType": null
},
"type": "Microsoft.KubernetesConfiguration/sourceControlConfigurations"
}
Wanneer een configuratie wordt gemaakt of bijgewerkt, gebeurt er een aantal dingen:
- Azure Arc
config-agent
bewaakt Azure Resource Manager voor nieuwe of bijgewerkte configuraties (Microsoft.KubernetesConfiguration/sourceControlConfigurations
) en ziet de nieuwePending
configuratie. - De
config-agent
configuratie-eigenschappen worden gelezen en de doelnaamruimte gemaakt. - Azure Arc
controller-manager
maakt een Kubernetes-serviceaccount en wijst dit toe aan ClusterRoleBinding of RoleBinding voor de juiste machtigingen (cluster
ofnamespace
het juiste bereik). Vervolgens wordt een exemplaar vanflux
. - Als u de optie van SSH met door Flux gegenereerde sleutels gebruikt,
flux
genereert u een SSH-sleutel en registreert u de openbare sleutel. - De
config-agent
status wordt teruggezet naar de configuratieresource in Azure.
Terwijl het inrichtingsproces plaatsvindt, doorloopt de configuratieresource enkele statuswijzigingen. Controleer de voortgang met de az k8s-configuration show ...
bovenstaande opdracht:
Fasewijziging | Beschrijving |
---|---|
complianceStatus ->Pending |
Vertegenwoordigt de initiële en actieve statussen. |
complianceStatus ->Installed |
config-agent het cluster is geconfigureerd en zonder fouten geïmplementeerd flux . |
complianceStatus ->Failed |
config-agent er is een fout opgetreden bij het flux implementeren. Details worden weergegeven in complianceStatus.message de hoofdtekst van het antwoord. |
Configuratie toepassen vanuit een privé-Git-opslagplaats
Als u een persoonlijke Git-opslagplaats gebruikt, moet u de openbare SSH-sleutel in uw opslagplaats configureren. U kunt de openbare SSH-sleutel opgeven of flux genereren. U kunt de openbare sleutel configureren in de specifieke Git-opslagplaats of op de Git-gebruiker die toegang heeft tot de opslagplaats.
Haal uw eigen openbare sleutel op
Als u uw eigen SSH-sleutels hebt gegenereerd, hebt u al de privé en openbare sleutels.
Haal de openbare sleutel op met behulp van Azure CLI
Gebruik het volgende in Azure CLI als Flux de sleutels genereert.
az k8s-configuration show --resource-group <resource group name> --cluster-name <connected cluster name> --name <configuration name> --cluster-type connectedClusters --query 'repositoryPublicKey'
"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAREDACTED"
Haal de openbare sleutel op uit de Azure Portal
Doorloop het volgende in Azure Portal als Flux de sleutels genereert.
- Navigeer in de Azure Portal naar de verbonden clusterbron.
- Selecteer 'GitOps' op de resourcepagina en bekijk de lijst met configuraties voor dit cluster.
- Selecteer de configuratie die gebruikmaakt van de privé-Git-opslagplaats.
- Kopieer in het contextvenster dat wordt geopend de openbare sleutel van de opslagplaats onderaan het venster.
Openbare sleutel toevoegen met GitHub
Gebruik een van de volgende opties:
Optie 1: Voeg de openbare sleutel toe aan uw gebruikersaccount (geldt voor alle opslagplaatsen in uw account):
- Open GitHub en klik op het profielpictogram in de rechterbovenhoek van de pagina.
- Klik op Instellingen.
- Klik op SSH- en GPG-sleutels.
- Klik op nieuwe SSH-sleutel.
- Geef een titel op.
- Plak de openbare sleutel zonder omringende aanhalingstekens.
- Klik op SSH-sleutel toevoegen.
Optie 2: Voeg de openbare sleutel toe als een implementatiesleutel in de Git-opslagplaats (geldt alleen voor deze opslagplaats):
- Open GitHub en navigeer naar uw opslagplaats.
- Klik op Instellingen.
- Klik op Sleutels implementeren.
- Klik op Implementatiesleutel toevoegen.
- Geef een titel op.
- Schakel Schrijftoegang toestaan in.
- Plak de openbare sleutel zonder omringende aanhalingstekens.
- Klik op Sleutel toevoegen.
Voeg openbare sleutel toe met behulp van een Azure DevOps-opslagplaats
Gebruik de volgende stappen om de sleutel toe te voegen aan uw SSH-sleutels:
- Klik onder Gebruikersinstellingen in de rechterbovenhoek (naast de profielafbeelding) op openbare SSH-sleutels.
- Selecteer + Nieuwe sleutel.
- Geef een naam op.
- Plak de openbare sleutel zonder omringende aanhalingstekens.
- Klik op Toevoegen.
De Kubernetes-configuratie valideren
Nadat config-agent
het flux
exemplaar is geïnstalleerd, moeten resources in de Git-opslagplaats beginnen met stromen naar het cluster. Controleer of de naamruimten, implementaties en resources zijn gemaakt met de volgende opdracht:
kubectl get ns --show-labels
NAME STATUS AGE LABELS
azure-arc Active 24h <none>
cluster-config Active 177m <none>
default Active 29h <none>
itops Active 177m fluxcd.io/sync-gc-mark=sha256.9oYk8yEsRwWkR09n8eJCRNafckASgghAsUWgXWEQ9es,name=itops
kube-node-lease Active 29h <none>
kube-public Active 29h <none>
kube-system Active 29h <none>
team-a Active 177m fluxcd.io/sync-gc-mark=sha256.CS5boSi8kg_vyxfAeu7Das5harSy1i0gc2fodD7YDqA,name=team-a
team-b Active 177m fluxcd.io/sync-gc-mark=sha256.vF36thDIFnDDI2VEttBp5jgdxvEuaLmm7yT_cuA2UEw,name=team-b
We kunnen zien dat team-a
er naamruimten team-b
itops
cluster-config
en naamruimten zijn gemaakt.
De flux
operator is geïmplementeerd in cluster-config
de naamruimte, zoals aangegeven door de configuratieresource:
kubectl -n cluster-config get deploy -o wide
NAME READY UP-TO-DATE AVAILABLE AGE CONTAINERS IMAGES SELECTOR
cluster-config 1/1 1 1 3h flux docker.io/fluxcd/flux:1.16.0 instanceName=cluster-config,name=flux
memcached 1/1 1 1 3h memcached memcached:1.5.15 name=memcached
Verdere verkenning
U kunt de andere resources verkennen die zijn geïmplementeerd als onderdeel van de configuratieopslagplaats met behulp van:
kubectl -n team-a get cm -o yaml
kubectl -n itops get all
Resources opschonen
Verwijder een configuratie met behulp van de Azure CLI of Azure Portal. Nadat u de opdracht Verwijderen hebt uitgevoerd, wordt de configuratieresource onmiddellijk verwijderd in Azure. Het volledig verwijderen van de gekoppelde objecten uit het cluster moet binnen tien minuten plaatsvinden. Als de configuratie de status Mislukt heeft wanneer deze wordt verwijderd, kan het maximaal een uur duren voordat de configuratie is verwijderd.
Wanneer een configuratie met namespace
bereik wordt verwijderd, wordt de naamruimte niet verwijderd door Azure Arc om te voorkomen dat bestaande workloads worden onderbroken. Indien nodig kunt u deze naamruimte handmatig verwijderen met behulp van kubectl
.
az k8s-configuration delete --name cluster-config --cluster-name AzureArcTest1 --resource-group AzureArcTest --cluster-type connectedClusters
Notitie
Wijzigingen in het cluster die het resultaat waren van implementaties uit de bijgehouden Git-opslagplaats, worden niet verwijderd wanneer de configuratie wordt verwijderd.
Belangrijk
Deze zelfstudie is bedoeld voor GitOps met Flux v1. GitOps met Flux v2 is nu beschikbaar voor Azure Arc-clusters met Kubernetes en Azure Kubernetes Service (AKS). ga naar de zelfstudie voor GitOps met Flux v2. U wordt aangeraden zo snel mogelijk naar Flux v2 te migreren.
Ondersteuning voor op Flux v1 gebaseerde clusterconfiguratiebronnen die vóór 1 januari 2024 zijn gemaakt, eindigt op 24 mei 2025. Vanaf 1 januari 2024 kunt u geen nieuwe op Flux v1 gebaseerde clusterconfiguratiebronnen maken.
Volgende stappen
Ga naar de volgende zelfstudie voor meer informatie over het implementeren van CI/CD met GitOps.