Öğretici: Azure Arc özellikli Kubernetes kümesinde GitOps kullanarak yapılandırmaları dağıtma
Önemli
Bu öğretici, Flux v1 ile GitOps'a yöneliktir. Flux v2 ile GitOps artık Azure Arc özellikli Kubernetes ve Azure Kubernetes Service (AKS) kümelerinde kullanılabilir; Flux v2 ile GitOps öğreticisine gidin. En kısa zamanda Flux v2'ye geçiş yapmanızı öneririz.
1 Ocak 2024 tarihinden önce oluşturulan Flux v1 tabanlı küme yapılandırma kaynakları desteği 24 Mayıs 2025'te sona erecektir. 1 Ocak 2024'den itibaren yeni Flux v1 tabanlı küme yapılandırma kaynakları oluşturamayacaksınız.
Bu öğreticide, Azure Arc özellikli kubernetes kümesinde GitOps kullanarak Flux v1 yapılandırmalarını uygulayacaksınız. Nasıl yapılacağını öğrenin:
- Örnek git deposunu kullanarak Azure Arc özellikli kubernetes kümesinde bir yapılandırma oluşturun.
- Yapılandırmanın başarıyla oluşturulduğunu doğrulayın.
- Özel git deposundan yapılandırma uygulama.
- Kubernetes yapılandırmasını doğrulayın.
Önkoşullar
Etkin aboneliği olan bir Azure hesabı. Ücretsiz hesap oluşturun.
Mevcut Azure Arc özellikli Kubernetes bağlı kümesi.
Bu özelliğin avantajlarını ve mimarisini anlama. Yapılandırmalar ve GitOps - Azure Arc özellikli Kubernetes makalesinde daha fazla bilgi edinin.
k8s-configuration
Sürüm >= 1.0.0'ın Azure CLI uzantısını yükleyin:az extension add --name k8s-configuration
İpucu
k8s-configuration
Uzantı zaten yüklüyse, aşağıdaki komutu kullanarak uzantıyı en son sürüme güncelleştirebilirsiniz -az extension update --name k8s-configuration
Yapılandırma oluşturma
Bu makalede kullanılan örnek depo, küme işlecinin kişisi etrafında yapılandırılmıştır. Bu depodaki bildirimler birkaç ad alanı sağlar, iş yüklerini dağıtır ve takıma özgü bazı yapılandırmalar sağlar. GitOps ile bu depoyu kullanmak kümenizde aşağıdaki kaynakları oluşturur:
- Ad Alanları:
cluster-config
,team-a
,team-b
- Dağıtım:
arc-k8s-demo
- ConfigMap:
team-a/endpoints
Yeni config-agent
veya güncelleştirilmiş yapılandırmalar için Azure'ın yoklamasını sağlar. Bu görev 5 dakika kadar sürer.
Özel bir depoyu yapılandırmayla ilişkilendiriyorsanız, Özel Git deposundan yapılandırmayı uygulama bölümünde aşağıdaki adımları tamamlayın.
Önemli
Bu öğretici, Flux v1 ile GitOps'a yöneliktir. Flux v2 ile GitOps artık Azure Arc özellikli Kubernetes ve Azure Kubernetes Service (AKS) kümelerinde kullanılabilir; Flux v2 ile GitOps öğreticisine gidin. En kısa zamanda Flux v2'ye geçiş yapmanızı öneririz.
1 Ocak 2024 tarihinden önce oluşturulan Flux v1 tabanlı küme yapılandırma kaynakları desteği 24 Mayıs 2025'te sona erecektir. 1 Ocak 2024'den itibaren yeni Flux v1 tabanlı küme yapılandırma kaynakları oluşturamayacaksınız.
Azure CLI kullanma
Bağlı bir kümeyi örnek Git deposuna bağlamak için için k8s-configuration
azure CLI uzantısını kullanın.
Bu yapılandırmaya adını verin
cluster-config
.Aracıya, işleci ad alanına dağıtmasını
cluster-config
sağlayın.İşleç
cluster-admin
izinlerini verin.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" }
Genel Git deposu kullanma
Parametre | Biçim |
---|---|
--repository-url |
http[s]://server/repo[.git] |
SSH ve Flux tarafından oluşturulan anahtarlarla özel Git deposunu kullanma
Flux tarafından oluşturulan ortak anahtarı Git hizmet sağlayıcınızdaki kullanıcı hesabına ekleyin. Anahtar kullanıcı hesabı yerine depoya eklenirse URL yerine user@
kullanıngit@
.
Daha fazla ayrıntı için Özel Git deposundan yapılandırmayı uygulama bölümüne atlayın.
Parametre | Biçim | Notlar |
---|---|---|
--repository-url |
ssh://user@server/repo[.git] veya user@server:repo[.git] | git@ değiştirilebilir user@ |
SSH ve kullanıcı tarafından sağlanan anahtarlarla özel Git deposunu kullanma
Doğrudan veya bir dosya içinde kendi özel anahtarınızı sağlayın. Anahtar PEM biçiminde olmalı ve yeni satırla (\n) bitmelidir.
İlişkili ortak anahtarı Git hizmet sağlayıcınızdaki kullanıcı hesabına ekleyin. Anahtar kullanıcı hesabı yerine depoya eklenirse yerine kullanın git@
user@
.
Daha fazla ayrıntı için Özel Git deposundan yapılandırmayı uygulama bölümüne atlayın.
SSH ve kullanıcı tarafından sağlanan bilinen konaklarla özel bir Git konağı kullanma
Flux operatörü, SSH bağlantısı kurmadan önce Git deposunun kimliğini doğrulamak için bilinen konaklar dosyasında yaygın Git konaklarının listesini tutar. Yaygın olmayan bir Git deposu veya kendi Git konağınızı kullanıyorsanız, Flux'un deponuzu tanımlayabilmesi için konak anahtarını sağlayabilirsiniz.
Özel anahtarlar gibi, known_hosts içeriğinizi doğrudan veya bir dosyada sağlayabilirsiniz. Kendi içeriğinizi sağlarken, yukarıdaki SSH anahtar senaryolarından biriyle birlikte known_hosts içerik biçimi belirtimlerini kullanın.
Parametre | Biçim | Notlar |
---|---|---|
--repository-url |
ssh://user@server/repo[.git] veya user@server:repo[.git] | git@ değiştirilebilir user@ |
--ssh-known-hosts |
base64 ile kodlanmış | Bilinen konak içeriğini doğrudan sağlama |
--ssh-known-hosts-file |
yerel dosyanın tam yolu | Yerel bir dosyada bilinen konak içeriği sağlama |
HTTPS ile özel Git deposu kullanma
Parametre | Biçim | Notlar |
---|---|---|
--repository-url |
https://server/repo[.git] | Temel kimlik doğrulaması ile HTTPS |
--https-user |
ham veya base64 ile kodlanmış | HTTPS kullanıcı adı |
--https-key |
ham veya base64 ile kodlanmış | HTTPS kişisel erişim belirteci veya parolası |
Not
- Helm operatör grafiği sürüm 1.2.0+ HTTPS Helm yayın özel kimlik doğrulamasını destekler.
- HTTPS Helm sürümü AKS tarafından yönetilen kümeler için desteklenmez.
- Ara sunucunuz aracılığıyla Git deposuna erişmek için Flux'a ihtiyacınız varsa Azure Arc aracılarını ara sunucu ayarlarıyla güncelleştirmeniz gerekir. Daha fazla bilgi için bkz . Giden ara sunucu kullanarak bağlanma.
Ek Parametreler
Yapılandırmayı aşağıdaki isteğe bağlı parametrelerle özelleştirin:
Parametre | Açıklama |
---|---|
--enable-helm-operator |
Helm grafiği dağıtımları desteğini etkinleştirmek için geçiş yapın. |
--helm-operator-params |
Helm işleci için grafik değerleri (etkinse). Örneğin, --set helm.versions=v3 . |
--helm-operator-chart-version |
Helm işleci için grafik sürümü (etkinse). 1.2.0+ sürümünü kullanın. Varsayılan: '1.2.0'. |
--operator-namespace |
İşleç ad alanının adı. Varsayılan: 'default'. En fazla: 23 karakter. |
--operator-params |
İşleç için parametreler. Tek tırnak içinde verilmelidir. Örneğin --operator-params='--git-readonly --sync-garbage-collection --git-branch=main' |
'de --operator-params
desteklenen seçenekler:
Seçenek | Açıklama |
---|---|
--git-branch |
Kubernetes bildirimleri için kullanılacak Git deposunun dalı. Varsayılan değer 'ana' şeklindedir. Daha yeni depoların adlı main kök dalları vardır. Bu durumda değerini ayarlamanız --git-branch=main gerekir. |
--git-path |
Kubernetes bildirimlerini bulmak için Git deposundaki Göreli yol: Flux. |
--git-readonly |
Git deposu salt okunur olarak kabul edilir. Flux buna yazmaya çalışmaz. |
--manifest-generation |
Etkinleştirilirse, Flux .flux.yaml dosyasını arar ve Kustomize veya diğer bildirim oluşturucularını çalıştırır. |
--git-poll-interval |
Yeni işlemeler için Git deposunu yoklama dönemi. Varsayılan değer ( 5m 5 dakika). |
--sync-garbage-collection |
Etkinleştirilirse, Flux oluşturduğu kaynakları siler, ancak artık Git'te bulunmaz. |
--git-label |
Eşitleme ilerleme durumunu izlemek için etiket. Git dalını etiketlemek için kullanılır. Varsayılan flux-sync değeridir. |
--git-user |
Git işlemesi için kullanıcı adı. |
--git-email |
Git işlemesi için kullanılacak e-posta. |
Flux'un depoya yazılmasını istemiyorsanız ve --git-user
veya --git-email
ayarlanmamışsa --git-readonly
otomatik olarak ayarlanır.
Daha fazla bilgi için Flux belgelerine bakın.
Not
Flux varsayılan olarak git deposunun master
dalından eşitlenir. Ancak, daha yeni git depolarında adlı main
kök dal bulunur ve bu durumda --operator-params içinde ayarlamanız --git-branch=main
gerekir.
İpucu
Azure portalda Azure Arc özellikli Kubernetes kaynağının GitOps sekmesinde bir yapılandırma oluşturabilirsiniz.
Yapılandırmayı doğrulama
Yapılandırmanın başarıyla oluşturulduğunu doğrulamak için Azure CLI'yi kullanın.
az k8s-configuration show --name cluster-config --cluster-name AzureArcTest1 --resource-group AzureArcTest --cluster-type connectedClusters
Yapılandırma kaynağı uyumluluk durumu, iletiler ve hata ayıklama bilgileriyle güncelleştirilir.
{
"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"
}
Bir yapılandırma oluşturulduğunda veya güncelleştirildiğinde birkaç şey gerçekleşir:
- Azure Arc
config-agent
, yeni veya güncelleştirilmiş yapılandırmalar (Microsoft.KubernetesConfiguration/sourceControlConfigurations
) için Azure Resource Manager'ı izler ve yeniPending
yapılandırmayı fark eder. - yapılandırma
config-agent
özelliklerini okur ve hedef ad alanını oluşturur. - Azure Arc
controller-manager
bir Kubernetes hizmet hesabı oluşturur ve uygun izinler (cluster
veya kapsam) için bu hesabı ClusterRoleBinding veyanamespace
RoleBinding ile eşler. Ardından bir örneğiniflux
dağıtır. - Flux tarafından oluşturulan anahtarlarla SSH seçeneğini kullanıyorsanız,
flux
bir SSH anahtarı oluşturur ve ortak anahtarı günlüğe kaydeder. - Raporların
config-agent
durumu Azure'daki yapılandırma kaynağına döner.
Sağlama işlemi gerçekleşirken yapılandırma kaynağı birkaç durum değişikliğinde ilerler. Yukarıdaki komutla ilerleme durumunu az k8s-configuration show ...
izleyin:
Aşama değişikliği | Açıklama |
---|---|
complianceStatus ->Pending |
İlk ve devam eden durumları temsil eder. |
complianceStatus ->Installed |
config-agent kümeyi başarıyla yapılandırdı ve hatasız dağıtıldı flux . |
complianceStatus ->Failed |
config-agent dağıtılırken bir hatayla flux karşılaştı. Ayrıntılar yanıt gövdesinde complianceStatus.message sağlanır. |
Özel Git deposundan yapılandırma uygulama
Özel git deposu kullanıyorsanız, deponuzda SSH ortak anahtarını yapılandırmanız gerekir. SSH ortak anahtarını siz sağlarsınız veya Flux oluşturur. Ortak anahtarı belirli bir Git deposunda veya depoya erişimi olan Git kullanıcısında yapılandırabilirsiniz.
Kendi ortak anahtarınızı alma
Kendi SSH anahtarlarınızı oluşturduysanız zaten özel ve ortak anahtarlarınız vardır.
Azure CLI kullanarak ortak anahtarı alma
Anahtarları Flux oluşturduysa Azure CLI’da aşağıdakini kullanın.
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"
Azure portaldan ortak anahtarı alma
Anahtarları Flux oluşturuyorsa Azure portalında aşağıdaki adımları izleyin.
- Azure portalda bağlı küme kaynağına gidin.
- Kaynak sayfasında "GitOps" öğesini seçin ve bu kümenin yapılandırmalarının listesine bakın.
- Özel Git deposunu kullanan yapılandırmayı seçin.
- Açılan bağlam penceresinde, pencerenin en altındaki Depo ortak anahtarını kopyalayın.
GitHub kullanarak ortak anahtar ekleme
Aşağıdaki seçeneklerden birini kullanın:
1. Seçenek: Ortak anahtarı kullanıcı hesabınıza ekleyin (hesabınızdaki tüm depolara uygulanır):
- GitHub'ı açın ve sayfanın sağ üst köşesindeki profil simgesine tıklayın.
- Ayarlar’a tıklayın.
- SSH ve GPG anahtarlarına tıklayın.
- Yeni SSH anahtarı'ne tıklayın.
- Başlık sağlayın.
- Ortak anahtarı iki yanındaki tırnak işaretleri olmadan yapıştırın.
- SSH anahtarı ekle'ye tıklayın.
2. Seçenek: Ortak anahtarı Git deposuna dağıtım anahtarı olarak ekleyin (yalnızca bu depoya uygulanır):
- GitHub’ı açın ve deponuza gidin.
- Ayarlar’a tıklayın.
- Anahtarları dağıt'a tıklayın.
- Dağıtım anahtarı ekle'ye tıklayın.
- Başlık sağlayın.
- Yazma erişimine izin ver’i işaretleyin.
- Ortak anahtarı iki yanındaki tırnak işaretleri olmadan yapıştırın.
- Anahtar ekle'ye tıklayın.
Azure DevOps deposunu kullanarak ortak anahtar ekleme
Aşağıdaki adımları kullanarak anahtarı SSH anahtarlarınıza ekleyin:
- Sağ üstteki Kullanıcı Ayarları'nın altında (profil görüntüsünün yanında) SSH ortak anahtarları'na tıklayın.
- + Yeni Anahtar’ı seçin.
- Bir ad girin.
- Ortak anahtarı iki yanındaki tırnak işaretleri olmadan yapıştırın.
- Ekle'yi tıklatın.
Kubernetes yapılandırmasını doğrulama
Örneği yükledikten flux
sonra config-agent
Git deposunda tutulan kaynakların kümeye akmaya başlaması gerekir. Ad alanlarının, dağıtımların ve kaynakların aşağıdaki komutla oluşturulduğunu denetleyin:
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
, , team-b
itops
ve cluster-config
ad alanlarının team-a
oluşturulduğunu görebiliriz.
İşleç flux
, yapılandırma kaynağı tarafından yönlendirildiği gibi ad alanına dağıtıldı cluster-config
:
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
Keşfetmeye devam edin
Yapılandırma deposunun bir parçası olarak dağıtılan diğer kaynakları şu şekilde inceleyebilirsiniz:
kubectl -n team-a get cm -o yaml
kubectl -n itops get all
Kaynakları temizleme
Azure CLI veya Azure portalını kullanarak yapılandırmayı silin. Delete komutunu çalıştırdıktan sonra yapılandırma kaynağı Azure'da hemen silinir. kümeden ilişkili nesnelerin tam silinmesi 10 dakika içinde gerçekleşmelidir. Yapılandırma kaldırıldığında başarısız durumdaysa, ilişkili nesnelerin tam silinmesi bir saate kadar sürebilir.
Kapsamı olan namespace
bir yapılandırma silindiğinde, mevcut iş yüklerinin bozulmasını önlemek için ad alanı Azure Arc tarafından silinmez. Gerekirse, kullanarak kubectl
bu ad alanını el ile silebilirsiniz.
az k8s-configuration delete --name cluster-config --cluster-name AzureArcTest1 --resource-group AzureArcTest --cluster-type connectedClusters
Not
kümede izlenen Git deposundan yapılan dağıtımların sonucu olan değişiklikler, yapılandırma silindiğinde silinmez.
Önemli
Bu öğretici, Flux v1 ile GitOps'a yöneliktir. Flux v2 ile GitOps artık Azure Arc özellikli Kubernetes ve Azure Kubernetes Service (AKS) kümelerinde kullanılabilir; Flux v2 ile GitOps öğreticisine gidin. En kısa zamanda Flux v2'ye geçiş yapmanızı öneririz.
1 Ocak 2024 tarihinden önce oluşturulan Flux v1 tabanlı küme yapılandırma kaynakları desteği 24 Mayıs 2025'te sona erecektir. 1 Ocak 2024'den itibaren yeni Flux v1 tabanlı küme yapılandırma kaynakları oluşturamayacaksınız.
Sonraki adımlar
GitOps ile CI/CD uygulamayı öğrenmek için sonraki öğreticiye ilerleyin.