Oktatóanyag: Konfigurációk üzembe helyezése a GitOps használatával egy Azure Arc-kompatibilis Kubernetes-fürtön
Fontos
Ez az oktatóanyag a Flux v1-et tartalmazó GitOpshoz készült. A Flux v2-vel rendelkező GitOps mostantól elérhető az Azure Arc-kompatibilis Kubernetes- és Azure Kubernetes Service- (AKS-) fürtökhöz; nyissa meg a GitOps és a Flux v2 használatát ismertető oktatóanyagot. Javasoljuk, hogy mihamarabb migráljon a Flux v2-re .
A 2024. január 1. előtt létrehozott Flux v1-alapú fürtkonfigurációs erőforrások támogatása 2025. május 24-én megszűnik. 2024. január 1-től nem hozhat létre új Flux v1-alapú fürtkonfigurációs erőforrásokat.
Ebben az oktatóanyagban a GitOps használatával fog konfigurációkat alkalmazni egy Azure Arc-kompatibilis Kubernetes-fürtön. A következőket fogja megtanulni:
- Hozzon létre egy konfigurációt egy Azure Arc-kompatibilis Kubernetes-fürtön egy példa Git-adattár használatával.
- Ellenőrizze, hogy a konfiguráció sikeresen létrejött-e.
- Konfigurálás alkalmazása privát Git-adattárból.
- Ellenőrizze a Kubernetes konfigurációját.
Előfeltételek
Egy Azure-fiók, aktív előfizetéssel. Hozzon létre ingyenes fiókot.
Egy meglévő Azure Arc-kompatibilis Kubernetes-csatlakoztatott fürt.
- Ha még nem csatlakoztatott fürtöt, tekintse meg az Azure Arc-kompatibilis Kubernetes-fürt csatlakoztatása rövid útmutatót.
A funkció előnyeinek és architektúrájának ismerete. További információ: Konfigurációk és GitOps – Azure Arc-kompatibilis Kubernetes-cikk.
Telepítse az
k8s-configuration
1.0.0-s verziójú >Azure CLI-bővítményt:az extension add --name k8s-configuration
Tipp
Ha a
k8s-configuration
bővítmény már telepítve van, a következő paranccsal frissítheti a legújabb verzióra:az extension update --name k8s-configuration
Konfiguráció létrehozása
A cikkben használt példaadattár egy fürtoperátor személye köré van strukturálva. Az adattár jegyzékfájljai kiosztanak néhány névteret, üzembe helyezik a számítási feladatokat, és csapatspecifikus konfigurációt biztosítanak. Ha ezt az adattárat a GitOps használatával használja, a következő erőforrásokat hozza létre a fürtön:
- Névterek:
cluster-config
, ,team-a
team-b
- Telepítési:
arc-k8s-demo
- Konfigurációtérkép:
team-a/endpoints
A config-agent
lekérdezések az Azure-t kérdezik le az új vagy frissített konfigurációkról. Ez a feladat akár 5 percet is igénybe vehet.
Ha privát adattárat társít a konfigurációval, hajtsa végre az alábbi lépéseket a Konfiguráció alkalmazása privát Git-adattárból című témakörben.
Az Azure parancssori felület használatával
Az Azure CLI-bővítmény k8s-configuration
használatával összekapcsolhat egy csatlakoztatott fürtöt a git-adattár példával.
Nevezze el ezt a konfigurációt
cluster-config
.Utasítsa az ügynököt, hogy helyezze üzembe az operátort a
cluster-config
névtérben.Adja meg az operátor
cluster-admin
engedélyeit.az k8s-configuration 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" }
Nyilvános Git-adattár használata
Paraméter | Formátum |
---|---|
--repository-url |
http[s]://server/repo[.git] |
Privát Git-adattár használata SSH-val és Fluxszal létrehozott kulcsokkal
Adja hozzá a Flux által létrehozott nyilvános kulcsot a Git-szolgáltató felhasználói fiókjához. Ha a kulcsot a felhasználói fiók helyett az adattárhoz adja hozzá, használja git@
az URL-cím helyett user@
.
További részletekért ugorjon a Konfiguráció alkalmazása privát Git-adattárból szakaszra.
Paraméter | Formátum | Jegyzetek |
---|---|---|
--repository-url |
ssh://user@server/repo[.git] vagy user@server:repo[.git] | git@ lecserélheti a user@ |
Privát Git-adattár használata SSH-val és felhasználó által megadott kulcsokkal
Közvetlenül vagy egy fájlban adja meg a saját titkos kulcsát. A kulcsnak PEM formátumban kell lennie, és új vonallal (\n) kell végződnie.
Adja hozzá a társított nyilvános kulcsot a Git-szolgáltató felhasználói fiókjához. Ha a kulcsot a felhasználói fiók helyett az adattárhoz adja hozzá, használja git@
a következő helyett: user@
.
További részletekért ugorjon a Konfiguráció alkalmazása privát Git-adattárból szakaszra.
Paraméter | Formátum | Jegyzetek |
---|---|---|
--repository-url |
ssh://user@server/repo[.git] vagy user@server:repo[.git] | git@ lecserélheti a user@ |
--ssh-private-key |
base64 kódolású kulcs PEM formátumban | Kulcs közvetlen megadása |
--ssh-private-key-file |
a helyi fájl teljes elérési útja | Adja meg a PEM-formátumú kulcsot tartalmazó helyi fájl teljes elérési útját |
Privát Git-gazdagép használata SSH-val és felhasználó által biztosított, ismert gazdagépekkel
A Flux-operátor az ismert gazdagépek fájljában tárolja a gyakori Git-gazdagépek listáját a Git-adattár SSH-kapcsolat létrehozása előtti hitelesítéséhez. Ha nem gyakori Git-adattárat vagy saját Git-gazdagépet használ, megadhatja a gazdagépkulcsot, hogy a Flux azonosítani tudja az adattárat.
A titkos kulcsokhoz hasonlóan közvetlenül vagy egy fájlban is megadhatja known_hosts tartalmát. Ha saját tartalmat ad meg, használja a known_hosts tartalomformátum specifikációit, valamint a fenti SSH-kulcsforgatókönyvek egyikét.
Paraméter | Formátum | Jegyzetek |
---|---|---|
--repository-url |
ssh://user@server/repo[.git] vagy user@server:repo[.git] | git@ lecserélheti a user@ |
--ssh-known-hosts |
base64 kódolású | Ismert gazdagépek tartalmának közvetlen biztosítása |
--ssh-known-hosts-file |
a helyi fájl teljes elérési útja | Ismert gazdagépek tartalmának megadása helyi fájlban |
Privát Git-adattár használata HTTPS-lel
Paraméter | Formátum | Jegyzetek |
---|---|---|
--repository-url |
https://server/repo[.git] | HTTPS alapszintű hitelesítéssel |
--https-user |
nyers vagy base64 kódolású | HTTPS-felhasználónév |
--https-key |
nyers vagy base64 kódolású | HTTPS személyes hozzáférési jogkivonat vagy jelszó |
Megjegyzés
- A Helm operátordiagram 1.2.0-s vagy újabb verziója támogatja a HTTPS Helm-kiadás privát hitelesítését.
- A HTTPS Helm-kiadás nem támogatott az AKS által felügyelt fürtök esetében.
- Ha a Fluxnak szüksége van a Git-adattár proxyn keresztüli eléréséhez, frissítenie kell az Azure Arc-ügynököket a proxybeállításokkal. További információ: Csatlakozás kimenő proxykiszolgáló használatával.
További paraméterek
A konfiguráció testreszabása a következő választható paraméterekkel:
Paraméter | Leírás |
---|---|
--enable-helm-operator |
Váltson a Helm-diagramok üzembe helyezésének támogatásához. |
--helm-operator-params |
Diagramértékek a Helm-operátorhoz (ha engedélyezve van). Például: --set helm.versions=v3 . |
--helm-operator-chart-version |
A Helm-operátor diagramverziója (ha engedélyezve van). Használja az 1.2.0-s vagy újabb verziót. Alapértelmezett: '1.2.0'. |
--operator-namespace |
Az operátor névterének neve. Alapértelmezett: 'default'. Max. 23 karakter. |
--operator-params |
Az operátor paraméterei. Csak szimpla idézőjelek között adható meg. Például: --operator-params='--git-readonly --sync-garbage-collection --git-branch=main' |
A következőben --operator-params
támogatott beállítások:
Beállítás | Leírás |
---|---|
--git-branch |
A Kubernetes-jegyzékfájlokhoz használandó Git-adattár ága. Az alapértelmezett érték a "master". Az újabb adattárak gyökérága nevű main , ebben az esetben be kell állítania a következőt --git-branch=main : . |
--git-path |
Relatív elérési út a Flux Git-adattárában a Kubernetes-jegyzékfájlok megkereséséhez. |
--git-readonly |
A Git-adattár írásvédettnek minősül. A Flux nem próbál írni rá. |
--manifest-generation |
Ha engedélyezve van, a Flux megkeresi a .flux.yaml fájlt, és futtatja a Kustomize-t vagy más jegyzékgenerátorokat. |
--git-poll-interval |
Az az időszak, amikor a Git-adattárat lekérdezi az új véglegesítések esetében. Az alapértelmezett érték 5m (5 perc). |
--sync-garbage-collection |
Ha engedélyezve van, a Flux törli az általa létrehozott, de a Gitben már nem található erőforrásokat. |
--git-label |
Címke a szinkronizálási folyamat nyomon követéséhez. A Git-ág címkézésére szolgál. Az alapértelmezett szint a flux-sync . |
--git-user |
A Git-véglegesítés felhasználóneve. |
--git-email |
Email a Git véglegesítéséhez. |
Ha nem szeretné, hogy a Flux az adattárba írjon, vagy --git-user
--git-email
nincs beállítva, akkor --git-readonly
a rendszer automatikusan beállítja.
További információt a Flux dokumentációjában talál.
Megjegyzés
A Flux alapértelmezés szerint a master
git-adattár ágából szinkronizál. Az újabb Git-adattárakban azonban a nevű gyökérág main
található, ebben az esetben a --operator-params értéket kell megadnia --git-branch=main
.
Tipp
A konfigurációt az Azure Arc-kompatibilis Kubernetes-erőforrás GitOps lapján, a Azure Portal hozhatja létre.
A konfiguráció ellenőrzése
Az Azure CLI használatával ellenőrizze, hogy a konfiguráció sikeresen létrejött-e.
az k8s-configuration show --name cluster-config --cluster-name AzureArcTest1 --resource-group AzureArcTest --cluster-type connectedClusters
A konfigurációs erőforrás megfelelőségi állapottal, üzenetekkel és hibakeresési információkkal frissül.
{
"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"
}
Konfiguráció létrehozásakor vagy frissítésekor néhány dolog történik:
- Az Azure Arc
config-agent
figyeli az Azure Resource Manager az új vagy frissített konfigurációkat (Microsoft.KubernetesConfiguration/sourceControlConfigurations
), és észreveszi az újPending
konfigurációt. - A
config-agent
beolvassa a konfigurációs tulajdonságokat, és létrehozza a célnévteret. - Az Azure Arc
controller-manager
létrehoz egy Kubernetes-szolgáltatásfiókot, és leképezi a ClusterRoleBinding vagy a RoleBinding szolgáltatásra a megfelelő engedélyekhez (cluster
vagynamespace
hatókörhöz). Ezután üzembe helyezi a példányát.flux
- Ha az SSH-t Flux által generált kulcsokkal használja, létrehoz egy SSH-kulcsot,
flux
és naplózza a nyilvános kulcsot. - A
config-agent
jelentés állapota vissza a konfigurációs erőforráshoz az Azure-ban.
A kiépítési folyamat során a konfigurációs erőforrás néhány állapotváltozáson halad át. A folyamat előrehaladásának monitorozása a az k8s-configuration show ...
fenti paranccsal:
Szakasz módosítása | Description |
---|---|
complianceStatus ->Pending |
A kezdeti és a folyamatban lévő állapotot jelöli. |
complianceStatus ->Installed |
config-agent sikeresen konfigurálta a fürtöt, és hiba nélkül üzembe helyezte flux . |
complianceStatus ->Failed |
config-agent hiba történt az üzembe helyezés során flux . A részletek a válasz törzsében complianceStatus.message találhatók. |
Konfiguráció alkalmazása privát Git-adattárból
Ha privát Git-adattárat használ, konfigurálnia kell az SSH nyilvános kulcsát az adattárban. A megadott vagy a Flux hozza létre az SSH nyilvános kulcsát. A nyilvános kulcsot konfigurálhatja az adott Git-adattár vagy azon a Git-felhasználó esetében, amely hozzáféréssel rendelkezik az adattárhoz.
Saját nyilvános kulcs lekérése
Ha saját SSH-kulcsokat hozott létre, akkor már rendelkezik titkos és nyilvános kulcsokkal.
Nyilvános kulcs lekérése az Azure CLI használatával
Ha a Flux hozza létre a kulcsokat, használja az alábbiakat az Azure CLI-ben.
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"
Nyilvános kulcs lekérése az Azure Portalról
Ha a Flux létrehozza a kulcsokat, tekintse át az alábbi lépéseket Azure Portal.
- Az Azure Portalon keresse meg a csatlakoztatott fürterőforrást.
- Az erőforrás oldalán válassza a "GitOps" lehetőséget, és tekintse meg a fürt konfigurációinak listáját.
- Válassza ki azt a konfigurációt, amely a privát Git-adattárat használja.
- A megnyíló környezeti ablakban másolja ki az adattár nyilvános kulcsát az ablak alján.
Nyilvános kulcs hozzáadása a GitHub használatával
Használja az alábbi lehetőségek egyikét:
1. lehetőség: Nyilvános kulcs hozzáadása a felhasználói fiókhoz (a fiókban lévő összes adattárra vonatkozik):
- Nyissa meg a GitHubot, és kattintson a profil ikonjára az oldal jobb felső sarkában.
- Kattintson a Settings (Beállítások) lehetőségre.
- Kattintson az SSH- és GPG-kulcsokra.
- Kattintson az Új SSH-kulcs elemre.
- Adjon meg egy címet.
- Illessze be a nyilvános kulcsot idézőjelek nélkül.
- Kattintson az SSH-kulcs hozzáadása elemre.
2. lehetőség: A nyilvános kulcs üzembehelyezési kulcsként való hozzáadása a Git-adattárhoz (csak erre az adattárra vonatkozik):
- Nyissa meg a GitHubot, és keresse meg az adattárat.
- Kattintson a Settings (Beállítások) lehetőségre.
- Kattintson a Kulcsok üzembe helyezése elemre.
- Kattintson az Üzembe helyezési kulcs hozzáadása elemre.
- Adjon meg egy címet.
- Jelölje be az Írási hozzáférés engedélyezése jelölőnégyzetet.
- Illessze be a nyilvános kulcsot idézőjelek nélkül.
- Kattintson a Kulcs hozzáadása elemre.
Nyilvános kulcs hozzáadása Azure DevOps-adattár használatával
Az alábbi lépések segítségével adhatja hozzá a kulcsot az SSH-kulcsaihoz:
- A jobb felső sarokban (a profilkép mellett) található Felhasználói beállítások területen kattintson az SSH nyilvános kulcsok elemre.
- Válassza az + Új kulcs lehetőséget.
- Adjon meg egy nevet.
- Illessze be a nyilvános kulcsot idézőjelek nélkül.
- Kattintson a Hozzáadás parancsra.
A Kubernetes-konfiguráció ellenőrzése
A példány telepítése után config-agent
a flux
Git-adattárban tárolt erőforrásoknak a fürtbe kell áramlaniuk. Ellenőrizze, hogy a névterek, üzemelő példányok és erőforrások a következő paranccsal lettek-e létrehozva:
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
Láthatjuk, hogy , team-a
team-b
, itops
és cluster-config
névterek lettek létrehozva.
Az flux
operátor a konfigurációs erőforrás utasítása szerint lett üzembe helyezve cluster-config
a névtérben:
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
További feltárás
A konfigurációs adattár részeként üzembe helyezett többi erőforrást a következő módon ismerheti meg:
kubectl -n team-a get cm -o yaml
kubectl -n itops get all
Az erőforrások eltávolítása
Konfiguráció törlése az Azure CLI vagy Azure Portal használatával. A törlési parancs futtatása után a konfigurációs erőforrás azonnal törlődik az Azure-ban. A társított objektumok teljes törlésének a fürtből 10 percen belül meg kell történnie. Ha a konfiguráció eltávolításkor meghiúsult állapotban van, a társított objektumok teljes törlése akár egy órát is igénybe vehet.
Ha egy hatókörrel rendelkező namespace
konfigurációt töröl, az Azure Arc nem törli a névteret a meglévő számítási feladatok megszakításának elkerülése érdekében. Szükség esetén manuálisan is törölheti ezt a névteret a használatával kubectl
.
az k8s-configuration delete --name cluster-config --cluster-name AzureArcTest1 --resource-group AzureArcTest --cluster-type connectedClusters
Megjegyzés
A fürt azon módosításai, amelyek a követett Git-adattárból történő üzembe helyezések eredményeként történtek, nem törlődnek a konfiguráció törlésekor.
Következő lépések
Folytassa a következő oktatóanyaggal, amelyből megtudhatja, hogyan implementálhatja a CI/CD-t a GitOps használatával.