Öğretici: Flux v2 ile GitOps kullanarak uygulama dağıtma

Bu öğreticide Kubernetes kümesinde GitOps'un nasıl kullanılacağı açıklanmaktadır. Flux v2 ile GitOps, Azure Arc özellikli Kubernetes kümelerinde veya Azure Kubernetes Service (AKS) kümelerinde bir küme uzantısı olarak etkinleştirilir. microsoft.flux Küme uzantısı yüklendikten sonra Git depo kaynaklarınızı kümeyle eşitleyen ve kümeyi istenen duruma göre uzlaştıran bir veya daha fazla fluxConfigurations kaynak oluşturabilirsiniz. GitOps ile Git deponuzu küme yapılandırması ve uygulama dağıtımı için gerçek kaynağı olarak kullanabilirsiniz.

Bu öğreticide, bir kustomizasyonun diğerine nasıl bağımlılık oluşturabileceğini görebilmeniz için iki kustomizasyona sahip örnek bir GitOps yapılandırması kullanacağız. Senaryonuza bağlı olarak gerektiğinde daha fazla kustomizasyon ve bağımlılık ekleyebilirsiniz.

Dalmadan önce, Flux ile GitOps'un kavramsal olarak nasıl çalıştığını öğrenmek için bir dakikanızı ayırın.

İpucu

Bu öğreticideki kaynak bir Git deposu olsa da, Flux Helm depoları, Buckets ve Azure Blob Depolama gibi diğer yaygın dosya kaynakları için de destek sağlar.

Ayrıca Bicep, ARM şablonları veya Terraform AzAPI sağlayıcısını kullanarak da Flux yapılandırmaları oluşturabilirsiniz. Daha fazla bilgi için bkz . Microsoft.KubernetesConfiguration fluxConfigurations.

Önemli

Uzantı, microsoft.flux ana sürüm 1.0.0'i yayımladı. Bu, çok kiracılı özelliği içerir. Uzantının microsoft.flux önceki bir sürümünü kullanan mevcut GitOps Flux v2 yapılandırmalarınız varsa, Azure CLI'yı kullanarak el ile en son sürüme yükseltebilirsiniz: az k8s-extension create -g <RESOURCE_GROUP> -c <CLUSTER_NAME> -n flux --extension-type microsoft.flux -t <CLUSTER_TYPE> (Arc kümeleri ve -t managedClusters AKS kümeleri için kullanın-t connectedClusters).

Önkoşullar

Flux v2 ile GitOps kullanarak uygulama dağıtmak için şunları yapmanız gerekir:

Azure Arc özellikli Kubernetes kümeleri için

  • Azure Arc özellikli Kubernetes bağlı ve çalışır durumda olan bir küme. ARM64 tabanlı kümeler 1.7.0 sürümünden itibaren microsoft.flux desteklenir.

    Kubernetes kümesini Azure Arc'a bağlamayı öğrenin. Giden ara sunucu üzerinden bağlanmanız gerekiyorsa Arc aracılarını ara sunucu ayarlarıyla yüklediğinizden emin olun.

  • Kaynak türü üzerinde Microsoft.Kubernetes/connectedClusters okuma ve yazma izinleri.

Azure Kubernetes Service kümeleri için

  • Çalışır durumda olan MSI tabanlı aks kümesi.

    Önemli

    Uzantı SPN tabanlı AKS kümeleriyle çalışmayacağından AKS kümesinin MSI (SPN değil) ile oluşturulduğundan microsoft.flux emin olun. ile az aks createoluşturulan yeni AKS kümeleri için küme varsayılan olarak MSI tabanlıdır. MSI'ye dönüştürülmesi gereken önceden oluşturulmuş SPN tabanlı kümeler için komutunu çalıştırın az aks update -g $RESOURCE_GROUP -n $CLUSTER_NAME --enable-managed-identity. Daha fazla bilgi için bkz . AKS'de yönetilen kimlik kullanma.

  • Kaynak türü üzerinde Microsoft.ContainerService/managedClusters okuma ve yazma izinleri.

Her iki küme türü için de ortak

  • Şu kaynak türleri üzerinde okuma ve yazma izinleri:

    • Microsoft.KubernetesConfiguration/extensions
    • Microsoft.KubernetesConfiguration/fluxConfigurations
  • Azure CLI sürüm 2.15 veya üzeri. Azure CLI'yi yükleyin veya aşağıdaki komutları kullanarak en son sürüme güncelleştirin:

    az version
    az upgrade
    
  • Kubernetes komut satırı istemcisi kubectl. kubectl Azure Cloud Shell kullanıyorsanız zaten yüklüdür.

    komutunu kullanarak az aks install-cli yerel olarak yükleyinkubectl:

    az aks install-cli
    
  • Aşağıdaki Azure kaynak sağlayıcılarının kaydı:

    az provider register --namespace Microsoft.Kubernetes
    az provider register --namespace Microsoft.ContainerService
    az provider register --namespace Microsoft.KubernetesConfiguration
    

    Kayıt zaman uyumsuz bir işlemdir ve 10 dakika içinde tamamlanmalıdır. Kayıt işlemini izlemek için aşağıdaki komutu kullanın:

    az provider show -n Microsoft.KubernetesConfiguration -o table
    
    Namespace                          RegistrationPolicy    RegistrationState
    ---------------------------------  --------------------  -------------------
    Microsoft.KubernetesConfiguration  RegistrationRequired  Registered
    

Sürüm ve bölge desteği

GitOps şu anda Azure Arc özellikli Kubernetes'in desteklediği tüm bölgelerde desteklenmektedir. GitOps şu anda AKS'nin desteklediği bölgelerin bir alt kümesinde desteklenir. GitOps hizmeti, düzenli bir tempoda desteklenen yeni bölgeler ekliyor.

Flux v2 uzantısının en son sürümü ve önceki iki sürüm (N-2) desteklenir. Genellikle uzantının en son sürümünü kullanmanızı öneririz.

Ağ gereksinimleri

GitOps aracılarının çalışması için 22 numaralı bağlantı noktası (SSH) veya 443 numaralı bağlantı noktası (HTTPS) üzerinden depo kaynağına giden (çıkış) TCP gerekir. Aracılar ayrıca aşağıdaki giden URL'lere de erişim gerektirir:

Uç nokta (DNS) Description
https://management.azure.com Aracının Kubernetes Yapılandırma hizmetiyle iletişim kurması için gereklidir.
https://<region>.dp.kubernetesconfiguration.azure.com Aracının durumu göndermesi ve yapılandırma bilgilerini getirmesi için veri düzlemi uç noktası. <region> (Daha önce bahsedilen desteklenen bölgeler) bağlıdır.
https://login.microsoftonline.com Azure Resource Manager belirteçlerini getirmek ve güncelleştirmek için gereklidir.
https://mcr.microsoft.com Flux denetleyicileri için kapsayıcı görüntülerini çekerken gereklidir.

CLI uzantılarını etkinleştirme

En son k8s-configuration ve k8s-extension CLI uzantı paketlerini yükleyin:

az extension add -n k8s-configuration
az extension add -n k8s-extension

Bu paketleri en son sürümlere güncelleştirmek için:

az extension update -n k8s-configuration
az extension update -n k8s-extension

Yüklü tüm Azure CLI uzantılarının ve sürümlerinin listesini görmek için aşağıdaki komutu kullanın:

az extension list -o table

Experimental   ExtensionType   Name                   Path                                                       Preview   Version
-------------  --------------  -----------------      -----------------------------------------------------      --------  --------
False          whl             connectedk8s           C:\Users\somename\.azure\cliextensions\connectedk8s         False     1.2.7
False          whl             k8s-configuration      C:\Users\somename\.azure\cliextensions\k8s-configuration    False     1.5.0
False          whl             k8s-extension          C:\Users\somename\.azure\cliextensions\k8s-extension        False     1.1.0

İpucu

Hataları çözme konusunda yardım için Azure Arc özellikli Kubernetes kümeleri için uzantı sorunlarını giderme makalesinin GitOps (Flux v2) bölümüne bakın.

Flux yapılandırması uygulama

k8s-configuration AKS veya Arc özellikli Kubernetes kümesinde GitOps'yi etkinleştirmek için Azure CLI uzantısını veya Azure portalını kullanın. Tanıtım için genel gitops-flux2-kustomize-helm-mt deposunu kullanın.

Önemli

Tanıtım deposu, bu öğreticiyi kullanımınızı basitleştirmek ve bazı temel ilkeleri göstermek için tasarlanmıştır. Depo, güncel tutmak için sürüm yükseltmelerinden zaman zaman hataya neden olan değişiklikler alabilir. Bu değişiklikler, bu öğreticideki yeni uygulamanızı, yalnızca silinmemiş önceki öğretici uygulamalarını etkilemez. Bu değişikliklerin nasıl işleneceğini öğrenmek için lütfen hataya neden olan değişiklik bildirimine bakın.

Aşağıdaki örnek, aşağıdaki değerleri ve ayarları kullanarak kümeye Flux yapılandırması uygulamak için komutunu kullanır az k8s-configuration flux create :

  • Kümeyi içeren kaynak grubu şeklindedir flux-demo-rg.
  • Azure Arc kümesinin adı şeklindedir flux-demo-arc.
  • Küme türü Azure Arc ()-t connectedClusters olur, ancak bu örnek AKS (-t managedClusters ile de çalışır).
  • Flux yapılandırmasının adıdır cluster-config.
  • Yapılandırma yüklemesi için ad alanı şeklindedir cluster-config.
  • Genel Git deposunun URL'si şeklindedir https://github.com/Azure/gitops-flux2-kustomize-helm-mt.
  • Git deposu dalı şeklindedir main.
  • Yapılandırmanın kapsamı şeklindedir cluster. Bu kapsam, işleçlere küme genelinde değişiklik yapma izinleri verir. Bu öğreticiyle kapsamı kullanmak namespace için gereken değişikliklere bakın.
  • ve appsadlarıyla infra iki kustomizasyon belirtilir. Her biri depodaki bir yol ile ilişkilendirilir.
  • apps Kustomizasyon, kustomizasyona infra bağlıdır. infra(Kustomizasyon çalışmadan önce apps kustomizasyon bitmelidir.)
  • Her iki kustomizasyonda da ayarlayın prune=true . Bu ayar, Flux'un kümeye dağıttığı nesnelerin depodan kaldırıldıklarında veya Flux yapılandırması veya kustomizasyonları silindiğinde temizlenmesini sağlar.
az k8s-configuration flux create -g flux-demo-rg \
-c flux-demo-arc \
-n cluster-config \
--namespace cluster-config \
-t connectedClusters \
--scope cluster \
-u https://github.com/Azure/gitops-flux2-kustomize-helm-mt \
--branch main  \
--kustomization name=infra path=./infrastructure prune=true \
--kustomization name=apps path=./apps/staging prune=true dependsOn=\["infra"\]

Uzantı microsoft.flux kümeye yüklenir (önceki bir GitOps dağıtımında yüklü değilse).

İpucu

az k8s-configuration flux create komutu uzantıyı microsoft.flux kümeye dağıtır ve yapılandırmayı oluşturur. Bazı senaryolarda, yapılandırma kaynaklarınızı oluşturmadan önce flux uzantısı örneğini ayrı olarak oluşturmak isteyebilirsiniz. Bunu yapmak için komutunu kullanarak az k8s-extension create kümenizde uzantının bir örneğini oluşturun.

Flux yapılandırması ilk kez yüklendiğinde, ilk uyumluluk durumu veya Non-compliant mutabakatın hala devam ediyor olması Pending olabilir. Bir dakika kadar sonra, son uyumluluk durumunu görmek için yapılandırmayı yeniden sorgula.

az k8s-configuration flux show -g flux-demo-rg -c flux-demo-arc -n cluster-config -t connectedClusters

Dağıtımın başarılı olduğunu onaylamak için aşağıdaki komutu çalıştırın:

az k8s-configuration flux show -g flux-demo-rg -c flux-demo-arc -n cluster-config -t connectedClusters

Başarılı bir dağıtımla aşağıdaki ad alanları oluşturulur:

  • flux-system: Flux uzantısı denetleyicilerini tutar.
  • cluster-config: Flux yapılandırma nesnelerini tutar.
  • nginx, podinfo, redis: Git deposundaki bildirimlerde açıklanan iş yükleri için ad alanları.

Ad alanlarını onaylamak için aşağıdaki komutu çalıştırın:

kubectl get namespaces

Ad flux-system alanı Flux uzantısı nesnelerini içerir:

  • Azure Flux denetleyicileri: fluxconfig-agent, fluxconfig-controller
  • OSS Flux denetleyicileri: source-controller, kustomize-controller, helm-controller, notification-controller

Flux aracısı ve denetleyici podları çalışır durumda olmalıdır. Aşağıdaki komutu kullanarak bunu onaylayın:

kubectl get pods -n flux-system

NAME                                      READY   STATUS    RESTARTS   AGE
fluxconfig-agent-9554ffb65-jqm8g          2/2     Running   0          21m
fluxconfig-controller-9d99c54c8-nztg8     2/2     Running   0          21m
helm-controller-59cc74dbc5-77772          1/1     Running   0          21m
kustomize-controller-5fb7d7b9d5-cjdhx     1/1     Running   0          21m
notification-controller-7d45678bc-fvlvr   1/1     Running   0          21m
source-controller-df7dc97cd-4drh2         1/1     Running   0          21m

Ad alanında cluster-config Flux yapılandırma nesneleri vardır.

kubectl get crds

NAME                                                   CREATED AT
alerts.notification.toolkit.fluxcd.io                  2022-04-06T17:15:48Z
arccertificates.clusterconfig.azure.com                2022-03-28T21:45:19Z
azureclusteridentityrequests.clusterconfig.azure.com   2022-03-28T21:45:19Z
azureextensionidentities.clusterconfig.azure.com       2022-03-28T21:45:19Z
buckets.source.toolkit.fluxcd.io                       2022-04-06T17:15:48Z
connectedclusters.arc.azure.com                        2022-03-28T21:45:19Z
customlocationsettings.clusterconfig.azure.com         2022-03-28T21:45:19Z
extensionconfigs.clusterconfig.azure.com               2022-03-28T21:45:19Z
fluxconfigs.clusterconfig.azure.com                    2022-04-06T17:15:48Z
gitconfigs.clusterconfig.azure.com                     2022-03-28T21:45:19Z
gitrepositories.source.toolkit.fluxcd.io               2022-04-06T17:15:48Z
helmcharts.source.toolkit.fluxcd.io                    2022-04-06T17:15:48Z
helmreleases.helm.toolkit.fluxcd.io                    2022-04-06T17:15:48Z
helmrepositories.source.toolkit.fluxcd.io              2022-04-06T17:15:48Z
imagepolicies.image.toolkit.fluxcd.io                  2022-04-06T17:15:48Z
imagerepositories.image.toolkit.fluxcd.io              2022-04-06T17:15:48Z
imageupdateautomations.image.toolkit.fluxcd.io         2022-04-06T17:15:48Z
kustomizations.kustomize.toolkit.fluxcd.io             2022-04-06T17:15:48Z
providers.notification.toolkit.fluxcd.io               2022-04-06T17:15:48Z
receivers.notification.toolkit.fluxcd.io               2022-04-06T17:15:48Z
volumesnapshotclasses.snapshot.storage.k8s.io          2022-03-28T21:06:12Z
volumesnapshotcontents.snapshot.storage.k8s.io         2022-03-28T21:06:12Z
volumesnapshots.snapshot.storage.k8s.io                2022-03-28T21:06:12Z
websites.extensions.example.com                        2022-03-30T23:42:32Z

Aşağıdaki komutları kullanarak yapılandırmanın diğer ayrıntılarını onaylayın.

kubectl get fluxconfigs -A

NAMESPACE        NAME             SCOPE     URL                                                       PROVISION   AGE
cluster-config   cluster-config   cluster   https://github.com/Azure/gitops-flux2-kustomize-helm-mt   Succeeded   44m
kubectl get gitrepositories -A

NAMESPACE        NAME             URL                                                       READY   STATUS                                                            AGE
cluster-config   cluster-config   https://github.com/Azure/gitops-flux2-kustomize-helm-mt   True    Fetched revision: main/4f1bdad4d0a54b939a5e3d52c51464f67e474fcf   45m
kubectl get helmreleases -A

NAMESPACE        NAME      READY   STATUS                             AGE
cluster-config   nginx     True    Release reconciliation succeeded   66m
cluster-config   podinfo   True    Release reconciliation succeeded   66m
cluster-config   redis     True    Release reconciliation succeeded   66m
kubectl get kustomizations -A


NAMESPACE        NAME                   READY   STATUS                                                            AGE
cluster-config   cluster-config-apps    True    Applied revision: main/4f1bdad4d0a54b939a5e3d52c51464f67e474fcf   65m
cluster-config   cluster-config-infra   True    Applied revision: main/4f1bdad4d0a54b939a5e3d52c51464f67e474fcf   65m

İş yükleri Git deposundaki bildirimlerden dağıtılır.

kubectl get deploy -n nginx

NAME                                       READY   UP-TO-DATE   AVAILABLE   AGE
nginx-ingress-controller                   1/1     1            1           67m
nginx-ingress-controller-default-backend   1/1     1            1           67m

kubectl get deploy -n podinfo

NAME      READY   UP-TO-DATE   AVAILABLE   AGE
podinfo   1/1     1            1           68m

kubectl get all -n redis

NAME                 READY   STATUS    RESTARTS   AGE
pod/redis-master-0   1/1     Running   0          68m

NAME                     TYPE        CLUSTER-IP    EXTERNAL-IP   PORT(S)    AGE
service/redis-headless   ClusterIP   None          <none>        6379/TCP   68m
service/redis-master     ClusterIP   10.0.13.182   <none>        6379/TCP   68m

NAME                            READY   AGE
statefulset.apps/redis-master   1/1     68m

Flux kümesi uzantısıyla hangi denetleyicilerin dağıtıldığını denetleme

Bazı senaryolarda, Flux kümesi uzantısıyla hangi Flux denetleyicilerinin yüklendiğini değiştirmek isteyebilirsiniz.

source, helm, kustomizeve notification Flux denetleyicileri varsayılan olarak yüklenir. image-automation Yeni kapsayıcı görüntüleri kullanılabilir olduğunda git deposunu güncelleştirmek için kullanılan ve image-reflector denetleyicilerinin açıkça etkinleştirilmesi gerekir.

Varsayılan seçenekleri değiştirmek için komutunu kullanabilirsiniz k8s-extension :

  • --config source-controller.enabled=<true/false> (varsayılan true)
  • --config helm-controller.enabled=<true/false> (varsayılan true)
  • --config kustomize-controller.enabled=<true/false> (varsayılan true)
  • --config notification-controller.enabled=<true/false> (varsayılan true)
  • --config image-automation-controller.enabled=<true/false> (varsayılan false)
  • --config image-reflector-controller.enabled=<true/false> (varsayılan false)

Örneğin, bildirimleri devre dışı bırakmak için olarak falseayarlayabilirsiniznotification-controller.enabled.

Bu örnek komut ve image-automation denetleyicilerini yüklerimage-reflector. Bir Flux yapılandırması ilk oluşturulduğunda Flux uzantısı otomatik olarak oluşturulduysa, uzantı adı olur flux.

az k8s-extension create -g <cluster_resource_group> -c <cluster_name> -t <connectedClusters or managedClusters or provisionedClusters> --name flux --extension-type microsoft.flux --config image-automation-controller.enabled=true image-reflector-controller.enabled=true

AKS kümeleri için kimlik doğrulama yöntemi olarak Kubelet kimliğini kullanma

AKS kümeleri için, kullanılacak kimlik doğrulama seçeneklerinden biri kubelet identity'dir. Varsayılan olarak AKS, yönetilen kaynak grubunda kendi kubelet kimliğini oluşturur. İsterseniz, önceden oluşturulmuş bir kubelet yönetilen kimliği kullanabilirsiniz. Bunu yapmak için, Flux uzantısı yükleme sırasında parametresini --config useKubeletIdentity=true ekleyin.

az k8s-extension create --resource-group <resource-group> --cluster-name <cluster-name> --cluster-type managedClusters --name flux --extension-type microsoft.flux --config useKubeletIdentity=true

Red Hat OpenShift ekleme kılavuzu

Flux denetleyicileri, kümede podları düzgün bir şekilde sağlamak için kök olmayan bir Güvenlik Bağlamı Kısıtlaması gerektirir. Uzantı dağıtılmadan önce bu kısıtlamaların kümeye microsoft.flux eklenmesi gerekir.

NS="flux-system"
oc adm policy add-scc-to-user nonroot system:serviceaccount:$NS:kustomize-controller
oc adm policy add-scc-to-user nonroot system:serviceaccount:$NS:helm-controller
oc adm policy add-scc-to-user nonroot system:serviceaccount:$NS:source-controller
oc adm policy add-scc-to-user nonroot system:serviceaccount:$NS:notification-controller
oc adm policy add-scc-to-user nonroot system:serviceaccount:$NS:image-automation-controller
oc adm policy add-scc-to-user nonroot system:serviceaccount:$NS:image-reflector-controller

Flux eklemeye yönelik OpenShift kılavuzu hakkında daha fazla bilgi için Flux belgelerine bakın.

Parametrelerle çalışma

Flux, çeşitli senaryoları etkinleştirmek için birçok parametreyi destekler. Flux'un desteklediği tüm parametrelerin açıklaması için resmi Flux belgelerine bakın. Azure'da Flux henüz tüm parametreleri desteklememektedir. Azure uygulamasında ihtiyacınız olan bir parametrenin eksik olup olmadığını bize bildirin.

Kullanılabilir parametreler ve bunların nasıl kullanılacağı hakkında bilgi için bkz . GitOps (Flux v2) tarafından desteklenen parametreler.

Yerel gizli dizi kimlik doğrulaması başvurusuyla çalışma

Yerel gizli dizi kimlik doğrulaması başvurusu kullanmak için gizli dizinin dağıtılacağı ad alanında fluxConfiguration bulunması gerekir. Gizli dizi, kaynak için gereken tüm kimlik doğrulama parametrelerini de içermelidir.

Çeşitli fluxConfiguration kaynaklar için gizli dizi oluşturma hakkında bilgi için bkz . Kaynakla kimlik doğrulaması için yerel gizli dizi.

Flux Kustomize denetleyicisini kullanarak küme yapılandırmasını yönetme

Flux Kustomize denetleyicisi, küme uzantısının microsoft.flux bir parçası olarak yüklenir. Git deposundan eşitlenen Kubernetes bildirimlerini kullanarak küme yapılandırmasının ve uygulama dağıtımının bildirim temelli yönetimine olanak tanır. Bu Kubernetes bildirimleri isteğe bağlı olarak bir kustomize.yaml dosyası içerebilir.

Kullanım ayrıntıları için aşağıdaki kaynaklara bakın:

Flux Helm denetleyicisini kullanarak Helm grafik sürümlerini yönetme

Flux Helm denetleyicisi, küme uzantısının microsoft.flux bir parçası olarak yüklenir. Helm grafik sürümlerini Git deponuzda bulundurduğunuz Kubernetes bildirimleriyle bildirimli olarak yönetmenize olanak tanır.

Kullanım ayrıntıları için aşağıdaki kaynaklara bakın:

İpucu

Helm'in dizin dosyalarını işleme şekli nedeniyle Helm grafiklerini işlemek pahalı bir işlemdir ve çok yüksek bellek ayak izine sahip olabilir. Sonuç olarak, aynı anda çok sayıda Helm grafiğinin mutabık olması bellekte ani artışlara ve OOMKilled hatalara neden olabilir. Varsayılan olarak, denetleyici bellek sınırını 1Gi ve bellek isteklerini 64Mi olarak ayarlar. Çok sayıda büyük Helm grafiği mutabakatı nedeniyle bu sınırı ve istekleri artırmak için microsoft.flux uzantısını yükledikten sonra aşağıdaki komutu çalıştırın:

az k8s-extension update -g <resource-group> -c <cluster-name> -n flux -t connectedClusters --config source-controller.resources.limits.memory=2Gi source-controller.resources.requests.memory=300Mi

Helm grafikleri için GitRepository kaynağını kullanma

Helm grafikleriniz kaynağın GitRepository parçası fluxConfigurations olarak yapılandırdığınız kaynakta depolanıyorsa, aşağıdaki örnekte gösterildiği gibi HelmRelease.yaml dosyanıza ekleyerek clusterconfig.azure.com/use-managed-source: "true" yapılandırılan kaynağın Helm grafiklerinin kaynağı olarak kullanılması gerektiğini belirtebilirsiniz:

---
apiVersion: helm.toolkit.fluxcd.io/v2beta1
kind: HelmRelease
metadata:
  name: somename
  namespace: somenamespace
  annotations:
    clusterconfig.azure.com/use-managed-source: "true"
spec:
  ...

Bu ek açıklamayı kullandığınızda, dağıtılan HelmRelease'a yapılandırılan kaynağa başvuru ile düzeltme eki eklenir. Şu anda yalnızca GitRepository kaynak desteklenmektedir.

Helm kayması algılama

Helm sürümleri için kayma algılama varsayılan olarak etkinleştirilmez. v1.7.5'den microsoft.fluxbaşlayarak, aşağıdaki komutu çalıştırarak Helm kayma algılamasını etkinleştirebilirsiniz:

az k8s-extension update --resource-group <resource-group> --cluster-name <cluster-name> --name flux --cluster-type <cluster-type> --config helm-controller.detectDrift=true 

Katı derleme sonrası değişken değiştirme

v1.13.1 sürümünden microsoft.flux itibaren katı derleme sonrası değişken değişimi kullanılabilir.

Katı değiştirme ilkesi etkin bir Flux uzantısı oluşturmak için şu komutu çalıştırın:

az k8s-extension create --resource-group <resource-group> --cluster-name <cluster-name> --cluster-type <cluster-type> --name flux --extension-type microsoft.flux --config kustomize-controller.strict-substitution-mode=true

Katı değiştirme ilkesini etkinleştirmek üzere mevcut bir Flux uzantısını güncelleştirmek için şu komutu çalıştırın:

az k8s-extension update --resource-group <resource-group> --cluster-name <cluster-name> --cluster-type <cluster-type> --name flux --config kustomize-controller.strict-substitution-mode=true

Dikey ölçeklendirme

Dikey ölçeklendirme desteği v1.12.0'dan microsoft.fluxitibaren kullanılabilir. Şu anda yalnızca Flux dikey ölçeklendirme belgelerinde açıklanan belirli parametreler yerel olarak desteklenmektedir. Diğer parametreler kümeye el ile uygulanabilir.

Denetleyicilerdeki kaynak sınırlarını geçerli sınırların ötesinde artırmak için, bu komutu çalıştırarak belirli kaynak türünü ve değerini gerektiği gibi değiştirin:

az k8s-extension update --resource-group <resource-group> --cluster-name <cluster-name> --cluster-type <cluster-type> --name flux --config kustomize-controller.resources.limits.memory=2Gi kustomize-controller.resources.limits.cpu=2000m

Paralel olarak gerçekleştirilebilecek mutabakat sayısını artırmak için şu komutu çalıştırın:

az k8s-extension update --resource-group <resource-group> --cluster-name <cluster-name> --cluster-type <cluster-type> --name flux --config kustomize-controller.concurrent=6 kustomize-controller.requeue-dependency=50s

Bellek içi derlemeyi etkinleştirmek için şu komutu çalıştırın:

az k8s-extension update --resource-group <resource-group> --cluster-name <cluster-name> --cluster-type <cluster-type> --name flux --config kustomize-controller.enable-in-memory-build=true

Helm OOM watch

v1.7.5'den microsoft.fluxbaşlayarak Helm OOM watch'u etkinleştirebilirsiniz. Daha fazla bilgi için bkz . OOM algılamaya yakın Helm'i etkinleştirme.

Bu özelliği etkinleştirirken olası düzeltme stratejilerini gözden geçirmeyi ve gerektiğinde uygulamayı unutmayın.

OOM watch'u etkinleştirmek için aşağıdaki komutu çalıştırın:

az k8s-extension update --resource-group <resource-group> --cluster-name <cluster-name> --name flux --cluster-type <cluster-type> --config helm-controller.outOfMemoryWatch.enabled=true helm-controller.outOfMemoryWatch.memoryThreshold=70 helm-controller.outOfMemoryWatch.interval=700ms

ve outOfMemoryWatchdeğerlerini memoryThreshold belirtmezseniz, varsayılan bellek eşiği %95 olarak ayarlanır ve bellek kullanımı 500 ms olarak ayarlanır.

Yapılandırılabilir günlük düzeyi parametreleri

Varsayılan olarak, log-level Flux denetleyicileri için olarak ayarlanır info. v1.8.3'den microsoft.flux başlayarak, aşağıdaki komutu kullanarak k8s-extension bu varsayılan ayarları değiştirebilirsiniz:

--config helm-controller.log-level=<info/error/debug>
--config source-controller.log-level=<info/error/debug>
--config kustomize-controller.log-level=<info/error/debug>
--config notification-controller.log-level=<info/error/debug>
--config image-automation-controller.log-level=<info/error/debug>
--config image-reflector-controller.log-level=<info/error/debug>

Geçerli değerler , infoveya errordeğerleridirdebug. Örneğin, ve kustomize-controlleriçin değerini değiştirmek log-level için source-controller aşağıdaki komutu kullanın:

az k8s-extension update --resource-group <resource-group> --cluster-name <cluster-name> --cluster-type <cluster-type> --name flux --config source-controller.log-level=error kustomize-controller.log-level=error

v1.9.1 ile microsoft.flux başlayarak ve fluxconfig-agent fluxconfig-controller destek info ve error günlük düzeyleri (ancak değildebug). Bunlar aşağıdaki gibi k8s-extension komutu kullanılarak değiştirilebilir:

--config fluxconfig-agent.log-level=<info/error>
--config fluxconfig-controller.log-level=<info/error>

Örneğin, aşağıdaki komut olarak errordeğişirlog-level:

az k8s-extension update --resource-group <resource-group> --cluster-name <cluster-name> --cluster-type <cluster-type> --name flux --config fluxconfig-agent.log-level=error fluxconfig-controller.log-level=error

Azure DevOps SSH-RSA kullanımdan kaldırma

Azure DevOps , SSH kullanarak Azure depolarına bağlanmak için desteklenen bir şifreleme yöntemi olarak SSH-RSA'nın kullanımdan kaldırlanacağını duyurdu. Flux yapılandırmalarında Azure depolarına bağlanmak için SSH anahtarları kullanıyorsanız, daha güvenli RSA-SHA2-256 veya RSA-SHA2-512 anahtarlarına geçmenizi öneririz.

Flux yapılandırmalarını mutabık tutarken, ssh-rsa'nın kullanım dışı bırakıldığını veya desteklenmediğini belirten bir hata iletisi görebilirsiniz. Bu durumda, komutunu kullanarak Azure DevOps depolarına Flux source-controller ve image-automation-controller (etkinleştirilirse) SSH bağlantıları kurmak için kullanılan konak anahtar algoritmasını güncelleştirin az k8s-extension update . Örneğin:

az k8s-extension update --cluster-name <cluster-name> --resource-group <resource-group> --cluster-type <cluster-type> --name flux --config source-controller.ssh-host-key-args="--ssh-hostkey-algos=rsa-sha2-512,rsa-sha2-256"

az k8s-extension update --cluster-name <cluster-name> --resource-group <resource-group> --cluster-type <cluster-type> --name flux --config image-automation-controller.ssh-host-key-args="--ssh-hostkey-algos=rsa-sha2-512,rsa-sha2-256"

Azure DevOps SSH-RSA'nın kullanımdan kaldırılması hakkında daha fazla bilgi için bkz . Azure Depoları için SSH-RSA desteğinin sonu.

Flux uzantısı podlarında ek açıklama yapılandırma

Azure Güvenlik Duvarı dışında bir çözüm yapılandırılırken AKS kümesi için ağ ve FQDN/uygulama kuralları gerekir. v1.11.1'den microsoft.flux başlayarak, Flux denetleyicisi podları artık pod belirtimlerinde ek açıklamayı kubernetes.azure.com/set-kube-service-host-fqdn ayarlayabilir. Bu, katman 7 güvenlik duvarı mevcut olsa bile API Server'ın etki alanı adına gelen trafiğe izin verir ve uzantı yüklemesi sırasında dağıtımları kolaylaştırır. Flux uzantısını kullanırken bu ek açıklamayı yapılandırmak için aşağıdaki komutları kullanın.

# Create flux extension with annotation

az k8s-extension create --resource-group <resource-group> --cluster-name <cluster-name> --cluster-type <cluster-type> --name flux --extension-type microsoft.flux --config setKubeServiceHostFqdn=true
    
# Update flux extension with annotation

az k8s-extension update --resource-group <resource-group> --cluster-name <cluster-name> --cluster-type <cluster-type> --name flux --config setKubeServiceHostFqdn=true

AKS kümelerinde iş yükü kimliği

v1.8.0'dan microsoft.flux başlayarak aks kümelerinde iş yükü kimliği etkinleştirilmiş Flux yapılandırmaları oluşturabilirsiniz. Bunu yapmak için aşağıdaki adımlarda gösterildiği gibi flux uzantısını değiştirin.

  1. Kümeniz için OIDC veren URL'sini alın.

  2. Yönetilen kimlik oluşturun ve istemci kimliğini not edin.

  3. Aşağıdaki komutu kullanarak kümede flux uzantısını oluşturun:

    az k8s-extension create --resource-group <resource_group_name> --cluster-name <aks_cluster_name> --cluster-type managedClusters --name flux --extension-type microsoft.flux --config workloadIdentity.enable=true workloadIdentity.azureClientId=<user_assigned_client_id>
    
  4. Federasyon kimliği kimlik bilgileri oluşturun. Örneğin:

    # For source-controller
    az identity federated-credential create --name ${FEDERATED_IDENTITY_CREDENTIAL_NAME} --identity-name "${USER_ASSIGNED_IDENTITY_NAME}" --resource-group "${RESOURCE_GROUP}" --issuer "${AKS_OIDC_ISSUER}" --subject system:serviceaccount:"flux-system":"source-controller" --audience api://AzureADTokenExchange
    
    # For image-reflector controller if you plan to enable it during extension creation, it is not deployed by default
    az identity federated-credential create --name ${FEDERATED_IDENTITY_CREDENTIAL_NAME} --identity-name "${USER_ASSIGNED_IDENTITY_NAME}" --resource-group "${RESOURCE_GROUP}" --issuer "${AKS_OIDC_ISSUER}" --subject system:serviceaccount:"flux-system":"image-reflector-controller" --audience api://AzureADTokenExchange
    
    # For kustomize-controller
    az identity federated-credential create --name ${FEDERATED_IDENTITY_CREDENTIAL_NAME} --identity-name "${USER_ASSIGNED_IDENTITY_NAME}" --resource-group "${RESOURCE_GROUP}" --issuer "${AKS_OIDC_ISSUER}" --subject system:serviceaccount:"flux-system":"kustomize-controller" --audience api://AzureADTokenExchange
    
  5. İş yükü kimliğini kullanması gereken özel kaynağın bildirimdeki değerini azure olarak belirlediğinden .spec.provider emin olun. Örneğin:

    apiVersion: source.toolkit.fluxcd.io/v1beta2
    kind: HelmRepository
    metadata:
      name: acrrepo
    spec:
      interval: 10m0s
      type: <helm_repository_type>
      url: <helm_repository_link>
      provider: azure
    
  6. Kaynak denetleyicisi veya görüntü yansıtıcı denetleyicisinin çekmesini istediğiniz kaynak için iş yükü kimliği için uygun izinleri sağladığından emin olun. Örneğin, Azure Container Registry AcrPull kullanılıyorsa izinler gereklidir.

Flux yapılandırmasını ve uzantısını silme

Flux yapılandırmalarınızı ve isterseniz Flux uzantısını silmek için aşağıdaki komutları kullanın.

Flux yapılandırmalarını silme

Aşağıdaki komut hem Azure'daki fluxConfigurations kaynağı hem de kümedeki Flux yapılandırma nesnelerini siler. Flux yapılandırması başlangıçta kustomizasyon parametresiyle prune=true oluşturulduğundan, Git deposundaki bildirimleri temel alarak kümede oluşturulan tüm nesneler, Flux yapılandırması kaldırıldığında kaldırılır. Ancak, bu komut Flux uzantısının kendisini kaldırmaz.

az k8s-configuration flux delete -g flux-demo-rg -c flux-demo-arc -n cluster-config -t connectedClusters --yes

Flux kümesi uzantısını silme

Flux uzantısını sildiğinizde hem Azure'daki microsoft.flux uzantı kaynağı hem de kümedeki Flux uzantısı nesneleri kaldırılır.

Önemli

Flux uzantısını silmeden önce kümedeki tüm Flux yapılandırmalarını sildiğinizden emin olun. Uzantıyı önce Flux yapılandırmalarını silmeden silmek, kümenizi kararsız bir durumda bırakabilir.

Flux yapılandırması ilk oluşturulduğunda Flux uzantısı otomatik olarak oluşturulduysa uzantı adı olur flux.

az k8s-extension delete -g flux-demo-rg -c flux-demo-arc -n flux -t connectedClusters --yes

İpucu

Bu komutlar, Azure Arc özellikli Kubernetes kümesi için uygun olan öğesini kullanır -t connectedClusters. Aks kümesi için bunun yerine kullanın -t managedClusters .

Sonraki adımlar