Aracılığıyla paylaş


Öğ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.

    • Henüz bir kümeye bağlanmadıysanız Azure Arc özellikli Kubernetes kümesini bağlama hızlı başlangıcımızı inceleyin.
  • 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.

  1. Bu yapılandırmaya adını verin cluster-config.

  2. Aracıya, işleci ad alanına dağıtmasını cluster-config sağlayın.

  3. İş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.

Parametre Biçim Notlar
--repository-url ssh://user@server/repo[.git] veya user@server:repo[.git] git@ değiştirilebilir user@
--ssh-private-key PEM biçiminde base64 ile kodlanmış anahtar Anahtarı doğrudan sağlayın
--ssh-private-key-file yerel dosyanın tam yolu PEM biçim anahtarını içeren yerel dosyanın tam yolunu belirtin

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-paramsdesteklenen 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ı mainkök dalları vardır. Bu durumda değerini ayarlamanız --git-branch=maingerekir.
--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ı mainkö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:

  1. Azure Arc config-agent , yeni veya güncelleştirilmiş yapılandırmalar (Microsoft.KubernetesConfiguration/sourceControlConfigurations) için Azure Resource Manager'ı izler ve yeni Pending yapılandırmayı fark eder.
  2. yapılandırma config-agent özelliklerini okur ve hedef ad alanını oluşturur.
  3. Azure Arc controller-manager bir Kubernetes hizmet hesabı oluşturur ve uygun izinler (clusterveya kapsam) için bu hesabı ClusterRoleBinding veya namespace RoleBinding ile eşler. Ardından bir örneğini fluxdağıtır.
  4. 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.
  5. 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 fluxkarşı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.

  1. Azure portalda bağlı küme kaynağına gidin.
  2. Kaynak sayfasında "GitOps" öğesini seçin ve bu kümenin yapılandırmalarının listesine bakın.
  3. Özel Git deposunu kullanan yapılandırmayı seçin.
  4. 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):

    1. GitHub'ı açın ve sayfanın sağ üst köşesindeki profil simgesine tıklayın.
    2. Ayarlar’a tıklayın.
    3. SSH ve GPG anahtarlarına tıklayın.
    4. Yeni SSH anahtarı'ne tıklayın.
    5. Başlık sağlayın.
    6. Ortak anahtarı iki yanındaki tırnak işaretleri olmadan yapıştırın.
    7. 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):

    1. GitHub’ı açın ve deponuza gidin.
    2. Ayarlar’a tıklayın.
    3. Anahtarları dağıt'a tıklayın.
    4. Dağıtım anahtarı ekle'ye tıklayın.
    5. Başlık sağlayın.
    6. Yazma erişimine izin ver’i işaretleyin.
    7. Ortak anahtarı iki yanındaki tırnak işaretleri olmadan yapıştırın.
    8. 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:

  1. 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.
  2. + Yeni Anahtar’ı seçin.
  3. Bir ad girin.
  4. Ortak anahtarı iki yanındaki tırnak işaretleri olmadan yapıştırın.
  5. 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-bitopsve cluster-config ad alanlarının team-aoluş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 kubectlbu 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.