Öğ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. ileaz aks create
oluş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ınaz 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ı kullanmaknamespace
için gereken değişikliklere bakın. - ve
apps
adlarıylainfra
iki kustomizasyon belirtilir. Her biri depodaki bir yol ile ilişkilendirilir. apps
Kustomizasyon, kustomizasyonainfra
bağlıdır.infra
(Kustomizasyon çalışmadan önceapps
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
, kustomize
ve 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ılantrue
)--config helm-controller.enabled=<true/false>
(varsayılantrue
)--config kustomize-controller.enabled=<true/false>
(varsayılantrue
)--config notification-controller.enabled=<true/false>
(varsayılantrue
)--config image-automation-controller.enabled=<true/false>
(varsayılanfalse
)--config image-reflector-controller.enabled=<true/false>
(varsayılanfalse
)
Örneğin, bildirimleri devre dışı bırakmak için olarak false
ayarlayabilirsiniznotification-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 Kustomize denetleyicisi
- Başvuru belgelerini kustomize
- Kustomization dosyası
- Kustomize projesi
- Kustomize kılavuzları
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:
- Helm kullanıcıları için Flux
- Helm sürümlerini yönetme
- Flux v1 Helm'den Flux v2 Helm'e geçiş
- Flux Helm denetleyicisi
İ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.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 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.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 OOM watch
v1.7.5'den microsoft.flux
baş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 outOfMemoryWatch
değ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 , info
veya error
değerleridirdebug
. Örneğin, ve kustomize-controller
iç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 error
değ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.
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>
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
İş 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
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
- Yapılandırmalar ve GitOps hakkında daha fazla bilgi edinin.
- GitOps'yi uygun ölçekte zorlamak için Azure İlkesi kullanmayı öğrenin.
- GitOps (Flux v2) durumunu ve etkinliğini izleme hakkında bilgi edinin.