Parametrar som stöds av GitOps (Flux v2)
Azure tillhandahåller en funktion för automatiserad programdistribution med GitOps som fungerar med Azure Kubernetes Service (AKS) och Azure Arc-aktiverade Kubernetes-kluster. Med GitOps med Flux v2 kan du använda din Git-lagringsplats som sanningskälla för klusterkonfiguration och programdistribution. Mer information finns i Programdistributioner med GitOps (Flux v2) och Självstudie: Distribuera program med GitOps med Flux v2.
GitOps på Azure Arc-aktiverade Kubernetes eller Azure Kubernetes Service använder Flux, en populär verktygsuppsättning med öppen källkod som stöder många parametrar för att aktivera olika scenarier. En beskrivning av alla parametrar som Flux stöder finns i den officiella Flux-dokumentationen.
Information om hur du ser alla parametrar som stöds av Flux i Azure finns i dokumentationenaz k8s-configuration
. Den här implementeringen stöder för närvarande inte alla parametrar som Flux stöder. Meddela oss om en parameter som du behöver saknas i Azure-implementeringen.
I den az k8s-configuration flux create
här artikeln beskrivs några av de parametrar och argument som är tillgängliga för kommandot. Du kan också se den fullständiga listan med parametrar för az k8s-configuration flux
med hjälp av parametern -h
i Azure CLI (till exempel az k8s-configuration flux -h
eller az k8s-configuration flux create -h
).
Dricks
En lösning för att distribuera Flux-resurser med parametrar som inte stöds är att definiera nödvändiga Flux-anpassade resurser (till exempel GitRepository eller Kustomization) i git-lagringsplatsen. Distribuera dessa resurser med az k8s-configuration flux create
kommandot . Sedan kommer du fortfarande att kunna komma åt dina Flux-resurser via Azure Arc-användargränssnittet.
Allmänna konfigurationsargument
Parameter | Format | Anteckningar |
---|---|---|
--cluster-name -c |
String | Namnet på klusterresursen i Azure. |
--cluster-type -t |
Tillåtna värden: connectedClusters , managedClusters |
Används connectedClusters för Azure Arc-aktiverade Kubernetes-kluster eller managedClusters för AKS-kluster. |
--resource-group -g |
String | Namnet på den Azure-resursgrupp som innehåller klusterresursen. |
--name -n |
String | Namn på Flux-konfigurationen i Azure. |
--namespace --ns |
String | Namnet på namnområdet för att distribuera konfigurationen. Standard: default . |
--scope -s |
String | Behörighetsomfång för operatorerna. Möjliga värden är cluster (fullständig åtkomst) eller namespace (begränsad åtkomst). Standard: cluster . |
--suspend |
flag | Pausar alla käll- och kustomize-avstämningar som definierats i den här Flux-konfigurationen. Avstämningar som är aktiva vid tidpunkten för avstängningen fortsätter. |
Allmänna källargument
Parameter | Format | Anteckningar |
---|---|---|
--kind |
String | Källtyp att stämma av. Tillåtna värden: bucket , git , azblob . Standard: git . |
--timeout |
golang-varaktighetsformat | Maximal tid för att försöka stämma av källan innan tidsgränsen nås. Standard: 10m . |
--sync-interval --interval |
golang-varaktighetsformat | Tid mellan avstämningar av källan i klustret. Standard: 10m . |
Källreferensargument för Git-lagringsplats
Parameter | Format | Anteckningar |
---|---|---|
--branch |
String | Förgrena i Git-källan för synkronisering till klustret. Standard: master . Nyare lagringsplatser kan ha en rotgren med namnet main , i vilket fall du behöver ange --branch=main . |
--tag |
String | Tagga i Git-källan för att synkronisera med klustret. Exempel: --tag=3.2.0 . |
--semver |
String | Git-taggintervall semver i Git-källan för synkronisering till klustret. Exempel: --semver=">=3.1.0-rc.1 <3.2.0" . |
--commit |
String | Git commit SHA i Git-källan för synkronisering till klustret. Exempel: --commit=363a6a8fe6a7f13e05d34c163b0ef02a777da20a . |
Mer information finns i Flux-dokumentationen om strategier för utcheckning av Git-lagringsplats.
Offentlig Git-lagringsplats
Parameter | Format | Anteckningar |
---|---|---|
--url -u |
http[s]://server/repo[.git] |
URL för Git-lagringsplatsens källa som ska stämmas av med klustret. |
Privat Git-lagringsplats med SSH
Viktigt!
Azure DevOps tillkännagav utfasningen av SSH-RSA som en krypteringsmetod som stöds för att ansluta till Azure-lagringsplatser med hjälp av SSH. Om du använder SSH-nycklar för att ansluta till Azure-lagringsplatser i Flux-konfigurationer rekommenderar vi att du flyttar till säkrare RSA-SHA2-256- eller RSA-SHA2-512-nycklar. Mer information finns i Utfasning av Azure DevOps SSH-RSA.
Privat Git-lagringsplats med SSH- och Flux-skapade nycklar
Lägg till den offentliga nyckel som genereras av Flux till användarkontot i din Git-tjänstleverantör.
Parameter | Format | Anteckningar |
---|---|---|
--url -u |
ssh://user@server/repo[.git] |
git@ bör ersätta user@ om den offentliga nyckeln är associerad med lagringsplatsen i stället för användarkontot. |
Privat Git-lagringsplats med SSH och användarbaserade nycklar
Använd din egen privata nyckel direkt eller från en fil. Nyckeln måste vara i PEM-format och avslutas med en ny rad (\n
).
Lägg till den associerade offentliga nyckeln till användarkontot i din Git-tjänstleverantör.
Parameter | Format | Anteckningar |
---|---|---|
--url -u |
ssh://user@server/repo[.git] | git@ bör ersätta user@ om den offentliga nyckeln är associerad med lagringsplatsen i stället för användarkontot. |
--ssh-private-key |
Base64-nyckel i PEM-format | Ange nyckeln direkt. |
--ssh-private-key-file |
Fullständig sökväg till lokal fil | Ange den fullständiga sökvägen till den lokala filen som innehåller PEM-formatnyckeln. |
Privat Git-värd med SSH och kända värdar som tillhandahålls av användaren
Flux-operatorn har en lista över vanliga Git-värdar i filen known_hosts
. Flux använder den här informationen för att autentisera Git-lagringsplatsen innan SSH-anslutningen upprättas. Om du använder en ovanlig Git-lagringsplats eller en egen Git-värd kan du ange värdnyckeln så att Flux kan identifiera din lagringsplats.
Precis som med privata nycklar kan du ange ditt known_hosts
-innehåll direkt eller i en fil. När du tillhandahåller ditt eget innehåll använder du specifikationerna för known_hosts innehållsformat, tillsammans med något av de föregående SSH-nyckelscenarierna.
Parameter | Format | Anteckningar |
---|---|---|
--url -u |
ssh://user@server/repo[.git] | git@ kan ersätta user@ . |
--known-hosts |
Base64-sträng | Ange known_hosts innehåll direkt. |
--known-hosts-file |
Fullständig sökväg till lokal fil | Ange known_hosts innehåll i en lokal fil. |
Privat Git-lagringsplats med en HTTPS-användare och nyckel
Parameter | Format | Anteckningar |
---|---|---|
--url -u |
https://server/repo[.git] |
HTTPS med grundläggande autentisering. |
--https-user |
Råsträng | HTTPS-användarnamn. |
--https-key |
Råsträng | PERSONLIG HTTPS-åtkomsttoken eller lösenord. |
Privat Git-lagringsplats med ett HTTPS CA-certifikat
Parameter | Format | Anteckningar |
---|---|---|
--url -u |
https://server/repo[.git] |
HTTPS med grundläggande autentisering. |
--https-ca-cert |
Base64-sträng | CA-certifikat för TLS-kommunikation. |
--https-ca-cert-file |
Fullständig sökväg till lokal fil | Ange CA-certifikatinnehåll i en lokal fil. |
Argument för bucketkälla
Om du använder bucket
källan, här är de bucketspecifika kommandoargumenten.
Parameter | Format | Anteckningar |
---|---|---|
--url -u |
URL-sträng | URL:en för bucket . Format som stöds: http:// , https:// . |
--bucket-name |
String | Namnet på synkroniseringen bucket . |
--bucket-access-key |
String | Åtkomstnyckel-ID som används för att autentisera bucket med . |
--bucket-secret-key |
String | Hemlig nyckel som används för att autentisera bucket med . |
--bucket-insecure |
Booleskt | Kommunicera med en bucket utan TLS. Om inte anges, antas falskt; om det tillhandahålls, antas sant. |
Källargument för Azure Blob Storage-konto
Om du använder azblob
källan, här är de blobspecifika kommandoargumenten.
Parameter | Format | Anteckningar |
---|---|---|
--url -u |
URL-sträng | URL:en för azblob . |
--container-name |
String | Namnet på den Azure Blob Storage-container som ska synkroniseras |
--sp_client_id |
String | Klient-ID:t för autentisering av tjänstens huvudnamn med Azure Blob krävs för den här autentiseringsmetoden |
--sp_tenant_id |
String | Klientorganisations-ID:t för autentisering av tjänstens huvudnamn med Azure Blob krävs för den här autentiseringsmetoden |
--sp_client_secret |
String | Klienthemligheten för att autentisera ett huvudnamn för tjänsten med Azure Blob |
--sp_client_cert |
String | Base64-kodat klientcertifikat för autentisering av tjänstens huvudnamn med Azure Blob |
--sp_client_cert_password |
String | Lösenordet för klientcertifikatet som används för att autentisera ett huvudnamn för tjänsten med Azure Blob |
--sp_client_cert_send_chain |
String | Anger om x5c-huvudet ska inkluderas i klientanspråk när en token hämtas för att aktivera ämnesnamn/utfärdarbaserad autentisering för klientcertifikatet |
--account_key |
String | Den delade Azure Blob-nyckeln för autentisering |
--sas_token |
String | Azure Blob SAS-token för autentisering |
--managed-identity-client-id |
String | Klient-ID för den hanterade identiteten för autentisering med Azure Blob |
Viktigt!
När du använder hanterad identitetsautentisering för AKS-kluster och azblob
-källa måste den hanterade identiteten tilldelas minst rollen Storage Blob Data Reader . Autentisering med en hanterad identitet är ännu inte tillgänglig för Azure Arc-aktiverade Kubernetes-kluster.
Lokal hemlighet för autentisering med källa
Du kan använda en lokal Kubernetes-hemlighet för autentisering med en git
, bucket
eller azBlob
källa. Den lokala hemligheten måste innehålla alla autentiseringsparametrar som behövs för källan och måste skapas i samma namnområde som Flux-konfigurationen.
Parameter | Format | Anteckningar |
---|---|---|
--local-auth-ref --local-ref |
String | Lokal referens till en Kubernetes-hemlighet i namnområdet fluxkonfiguration som ska användas för autentisering med källan. |
För HTTPS-autentisering skapar du en hemlighet med username
och password
:
kubectl create ns flux-config
kubectl create secret generic -n flux-config my-custom-secret --from-literal=username=<my-username> --from-literal=password=<my-password-or-key>
För SSH-autentisering skapar du en hemlighet med fälten identity
och known_hosts
:
kubectl create ns flux-config
kubectl create secret generic -n flux-config my-custom-secret --from-file=identity=./id_rsa --from-file=known_hosts=./known_hosts
Viktigt!
Azure DevOps tillkännagav utfasningen av SSH-RSA som en krypteringsmetod som stöds för att ansluta till Azure-lagringsplatser med hjälp av SSH. Om du använder SSH-nycklar för att ansluta till Azure-lagringsplatser i Flux-konfigurationer rekommenderar vi att du flyttar till säkrare RSA-SHA2-256- eller RSA-SHA2-512-nycklar. Mer information finns i Utfasning av Azure DevOps SSH-RSA.
När du skapar Flux-konfigurationen i båda fallen använder --local-auth-ref my-custom-secret
du i stället för de andra autentiseringsparametrarna:
az k8s-configuration flux create -g <cluster_resource_group> -c <cluster_name> -n <config_name> -t connectedClusters --scope cluster --namespace flux-config -u <git-repo-url> --kustomization name=kustomization1 --local-auth-ref my-custom-secret
Läs mer om hur du använder en lokal Kubernetes-hemlighet med dessa autentiseringsmetoder:
- HTTPS-autentisering för Git-lagringsplats
- Självsignerade HTTPS-certifikat för Git-lagringsplats
- SSH-autentisering för Git-lagringsplats
- Bucket statisk autentisering
Kommentar
Om du behöver Flux för att komma åt källan via proxyn måste du uppdatera Azure Arc-agenterna med proxyinställningarna. Mer information finns i Ansluta med en utgående proxyserver.
Git-implementering
För att stödja olika lagringsplatsprovidrar som implementerar Git kan Flux konfigureras att använda ett av två Git-bibliotek: go-git
eller libgit2
. Mer information finns i Flux-dokumentationen.
GitOps-implementeringen av Flux v2 avgör automatiskt vilket bibliotek som ska användas för offentliga molnlagringsplatser:
- För GitHub-, GitLab- och BitBucket-lagringsplatser använder
go-git
Flux . - För Azure DevOps och alla andra lagringsplatser använder
libgit2
Flux .
För lokala lagringsplatser använder libgit2
Flux .
Kustomisering
Kustomization är en inställning som skapats för Flux-konfigurationer som gör att du kan välja en specifik sökväg i källdatabasen som är avstämd i klustret. Du behöver inte skapa en kustomization.yaml-fil på den angivna sökvägen. Som standard är alla manifest i den här sökvägen avstämda. Men om du vill ha ett Kustomize-överlägg för program som är tillgängliga på den här lagringsplatsens sökväg bör du skapa Kustomize-filer i git för Flux-konfigurationen att använda.
Med hjälp az k8s-configuration flux kustomization create
av kan du skapa en eller flera kustomizations under konfigurationen.
Parameter | Format | Anteckningar |
---|---|---|
--kustomization |
Inget värde | Start av en sträng med parametrar som konfigurerar en kustomisering. Du kan använda den flera gånger för att skapa flera kustomizations. |
name |
String | Unikt namn för den här kustomiseringen. |
path |
String | Sökväg i Git-lagringsplatsen för att stämma av med klustret. Standardvärdet är den översta nivån för grenen. |
prune |
Booleskt | Standard är false . Ange prune=true för att säkerställa att de objekt som Flux distribuerade till klustret rensas om de tas bort från lagringsplatsen eller om Flux-konfigurationen eller kustomizations tas bort. Användning prune=true är viktigt för miljöer där användarna inte har åtkomst till klustren och endast kan göra ändringar via Git-lagringsplatsen. |
depends_on |
String | Namnet på en eller flera kustomizations (i den här konfigurationen) som måste stämmas av innan den här kustomiseringen kan stämmas av. Exempel: depends_on=["kustomization1","kustomization2"] . Om du tar bort en kustomisering som har beroende kustomiseringar blir DependencyNotReady tillståndet för beroende kustomiseringar och avstämningen stoppas. |
timeout |
golang-varaktighetsformat | Standard: 10m . |
sync_interval |
golang-varaktighetsformat | Standard: 10m . |
retry_interval |
golang-varaktighetsformat | Standard: 10m . |
validation |
String | Värden: none , client , server . Standard: none . Mer information finns i Flux-dokumentationen . |
force |
Booleskt | Standard: false . Ange force=true för att instruera kustomize-kontrollanten att återskapa resurser när korrigeringen misslyckas på grund av en oföränderlig fältändring. |
Du kan också använda az k8s-configuration flux kustomization
för att uppdatera, lista, visa och ta bort kustomiseringar i en Flux-konfiguration.
Nästa steg
- Läs mer om programdistributioner med GitOps (Flux v2) för AKS och Azure Arc-aktiverade Kubernetes.
- Använd vår självstudie för att lära dig hur du aktiverar GitOps i dina AKS- eller Azure Arc-aktiverade Kubernetes-kluster.
- Läs mer om CI/CD-arbetsflöde med GitOps.