Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
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 Arc özellikli Kubernetes bağlı ve çalışır durumda olan bir küme. Arm64 tabanlı kümeler sürüm 1.7.0'dan
microsoft.flux
itibaren 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
Ç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. ileaz aks create
oluş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ı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. Azure Cloud Shell kullanıyorsanız
kubectl
zaten yüklüdür.kubectl
komutunu kullanarakaz 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 öğreticidenamespace
kapsamı kullanmak için gereken değişiklikleri inceleyin. -
infra
veapps
adlarıyla iki kustomizasyon belirtilmiştir. Her biri depodaki bir yol ile ilişkilendirilir. -
apps
Kustomizasyon, kustomizasyonainfra
bağlıdır. (infra
Özelleştirme çalışmadan önceapps
ö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 create
kü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
, kustomize
ve 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ı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 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 Kustomize denetleyicisi
- Kustomize başvuru belgeleri
- Kustomizasyon 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:
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
, info
veya error
. Örneğin, log-level
'ı source-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.
AKS kümeniz veya Arc özellikli Kubernetes kümeniz için OIDC veren URL'sini alın.
Yönetilen kimlik oluşturun ve istemci kimliğini ve kiracı kimliğini not edin.
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>
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
İş yükü kimliğini kullanması gereken özel kaynağın bildirimdeki değerini
.spec.provider
olarak belirlediğindenazure
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 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
- Yapılandırmalar ve GitOps hakkında daha fazla bilgi edinin.
- GitOps'u büyük ölçekte zorlamak için Azure İlkesi'ni kullanmayı öğrenin.
- GitOps (Flux v2) durumunu ve etkinliğini izleme hakkında bilgi edinin.