Aracılığıyla paylaş


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

Tavsiye

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.

Alternatif olarak yeni Microsoft GitOps ArgoCD uzantısını kullanmayı deneyin. Argo CD, Flux v2 ile karşılaştırıldığında farklı bir özellik ve özellik kümesi sağlayan popüler bir açık kaynak GitOps aracıdır.

Önkoşullar

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

Azure Arc özellikli Kubernetes kümeleri

Azure Kubernetes Service kümeleri

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

    Önemli

    Uzantı SPN tabanlı AKS kümeleriyle çalışmadığı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. SPN tabanlı kümeleri MSI'ye dönüştürmek 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. Azure Cloud Shell kullanıyorsanız kubectl zaten yüklüdür.

    kubectl komutunu kullanarak az aks install-cli'yi yerel olarak yükleyin:

    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 bitmelidir. 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 desteklenmektedir. 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ında (SSH) veya 443 numaralı bağlantı noktasında (HTTPS) depo kaynağına giden (çıkış) TCP gerekir. Ajanlar ayrıca aşağıdaki giden URL'lere erişim gerekmektedir.

Uç nokta (DNS) Açıklama
https://management.azure.com Ajanın Kubernetes Yapılandırma hizmetine bağlantı kurabilmesi 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ölgelere) 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 çekmek için 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

Tavsiye

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.

Bir Flux yapılandırması uygulayın

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 eğitim materyalini kullanımınızı kolaylaştırmak ve temel ilkeleri örneklemek için tasarlanmıştır. Depo, güncel kalabilmek için sürüm yükseltmelerinden zaman zaman önemli değişiklikler alabilir. Bu değişiklikler bu öğreticinin yeni kullanımını etkilemez, yalnızca önceki uygulamaları etkiler. Daha fazla bilgi için önemli 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ı cluster-config.
  • Genel Git deposunun URL'si şeklindedir https://github.com/Azure/gitops-flux2-kustomize-helm-mt.
  • Git deposu dalı main.
  • Yapılandırmanın kapsamı şeklindedir cluster. Bu kapsam, işleçlere küme genelinde değişiklik yapma izinleri verir. Bu öğreticide namespace kapsamı kullanmak için gereken değişiklikleri inceleyin.
  • infra ve apps adlarıyla iki kustomizasyon belirtilmiştir. Her biri depodaki bir yol ile ilişkilendirilir.
  • apps Kustomizasyon, kustomizasyona infra bağlıdır. (infra Özelleştirme çalışmadan önce apps özelleştirme bitmelidir.)
  • Her iki özelleştirme için de prune=true ayarlayın. 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).

Tavsiye

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 createkümenizde uzantının bir örneğini oluşturun.

Flux yapılandırması ilk kez yüklendiğinde, mutabakat hala devam ettiği için ilk uyumluluk durumu Pending veya Non-compliant 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. Yeni kapsayıcı görüntüleri kullanılabilir olduğunda git deposunu güncelleştirmek için kullanılan ve image-automation denetleyicilerinin açıkça etkinleştirilmesi gerekir.image-reflector

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 notification-controller.enabled öğesini false olarak ayarlayabilirsiniz.

Bu örnek komut, image-reflector ve image-automation denetleyicilerini yükler. 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 kimlik doğrulama referansıyla çalışma

Yerel bir gizli kimlik doğrulama referansı kullanmak için, gizli anahtarın fluxConfiguration ad alanında bulunması gerekir. Gizli bilgi, kaynak için gereken tüm kimlik doğrulama parametrelerini de içermelidir.

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

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:

Tavsiye

Helm'in dizin dosyalarını işleme şekli nedeniyle Helm grafiklerini işlemek pahalı bir işlemdir ve yüksek bellek ayak izine sahip olabilir. Sonuç olarak, aynı anda çok sayıda Helm chartının birleştirilmesi, hafızada 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 senkronizasyonu nedeniyle bu sınırı ve talepleri 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, yapılandırılan kaynağa referans verilerek güncellenir. Ş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'denmicrosoft.flux baş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 itibaren microsoft.flux kullanılabilir.

Katı değişim politikası etkin olan 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.flux itibaren 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 Bellek Yetersizliği İzleyici

microsoft.flux v1.7.5'ten itibaren Helm OOM watch'u etkinleştirebilirsiniz. Daha fazla bilgi için bkz. OOM algılama sırasında 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

memoryThreshold ve outOfMemoryWatch değerlerini belirtmezseniz, varsayılan bellek eşiği%95 olarak ayarlanır ve bellek kullanımını kontrol etme aralığı 500 ms olarak belirlenir.

Yapılandırılabilir log seviyesi 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 debug, infoveya error. Örneğin, log-levelsource-controller ve kustomize-controller için değiştirmek amacıyla 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

microsoft.flux v1.9.1 ile başlayarak fluxconfig-agent ve fluxconfig-controller, info ve error günlük düzeylerini destekler (ancak debug değil). Bu seçenekleri değiştirmek için komutunu k8s-extension kullanın:

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

Örneğin, aşağıdaki komut log-level'yi error olarak değiştirir.

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

Flux uzantısı podlarında yorum yapılandırması

Azure Güvenlik Duvarı dışındaki bir çözümü yapılandırırken AKS kümesi için ağ ve FQDN/uygulama kuralları gerekir. v1.11.1'den microsoft.flux itibaren, Flux denetleyici podları artık pod belirtimlerine ek açıklamayı kubernetes.azure.com/set-kube-service-host-fqdn ekleyebilir. Bu ek açıklama, 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

Arc özellikli Kubernetes kümelerinde ve AKS kümelerinde iş yükü kimliği

İş yükü kimliği etkinleştirilmiş kümelerde Flux yapılandırmaları oluşturabilirsiniz. İş yükü kimliği etkinleştirilmiş AKS kümelerindeki Flux yapılandırmaları v1.8.0'dan microsoft.flux başlayarak ve v.1.15.1'den başlayarak microsoft.flux desteklenir.

İş yükü kimliği etkinleştirilmiş kümelerde Flux yapılandırmaları oluşturmak için aşağıdaki adımlarda gösterildiği gibi uzantıyı değiştirin.

  1. AKS kümeniz veya Arc özellikli Kubernetes kümeniz için OIDC veren URL'sini alın.

  2. Yönetilen kimlik oluşturun ve istemci kimliğini ve kiracı 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> workloadIdentity.azureTenantId=<tenant_id>
    
  4. AKS kümeniz veya Arc özellikli Kubernetes kümeniz için 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 "${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 "${OIDC_ISSUER}" --subject system:serviceaccount:"flux-system":"image-reflector-controller" --audience api://AzureADTokenExchange
    
    # For image-automation 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 "${OIDC_ISSUER}" --subject system:serviceaccount:"flux-system":"image-automation-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 "${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 .spec.provider olarak belirlediğinden azure 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 kullanılıyorsa, Container Registry Repository Reader (ABAC özellikli kayıt defterleri için) veya (ABAC olmayan kayıt defterleri için) uygulandığından emin olun.

Azure DevOps ile iş yükü kimliğini kullanma

Azure DevOps ile iş yükü kimliğini kullanmak için aşağıdaki önkoşulları etkinleştirin:

  • Azure DevOps Kuruluşunuzun Microsoft Entra'ya bağlı olduğundan emin olun.
  • AKS kümeleri veya Arc özellikli Kubernetes kümeleri için adımları izleyerek kümenizde iş yükü kimliğinin düzgün ayarlandığını onaylayın.
  • Yönetilen kimlik ve federasyon kimlik bilgileri oluşturun ve bu bölümün önceki bölümlerinde açıklandığı gibi Flux uzantısının flux denetleyici podlarında iş yükü kimliğini etkinleştirin.
  • Yönetilen kimliği Azure DevOps kuruluşuna kullanıcı olarak ekleyerek Azure DevOps deposuna erişim izinlerine sahip olduğundan emin olun. Ayrıntılı adımlar için bkz. Azure DevOps'ta hizmet sorumlularını ve yönetilen kimlikleri kullanma.

Ardından, kimlik bilgisiz kimlik doğrulamasını etkinleştirmek için flux yapılandırmasının gitRepository sağlayıcısını "azure" olarak ayarlayın. Bu, Bicep, ARM şablonları veya Azure CLI kullanılarak yapılandırılabilir. Örneğin, Azure CLI kullanarak sağlayıcıyı ayarlamak için aşağıdaki komutu çalıştırın:

az k8s-configuration flux update --cluster-name <cluster-name> --resource-group <resource-group> --cluster-type <cluster-type> --name flux --provider "azure"

Azure DevOps SSH-RSA kullanımdan kaldırılması

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, Flux source-controller ve image-automation-controller (etkinleştirilirse) kullanarak Azure DevOps depolarına SSH bağlantıları kurmak için kullanılan konak anahtar algoritmasını az k8s-extension update komutunu güncelleyin. Ö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 kullanımdan kaldırma hakkında daha fazla bilgi için bkz. Azure Repos için SSH-RSA desteğin sonu.

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

Tavsiye

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