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. ArgoCD ile GitOps, Azure Arc özellikli Kubernetes kümelerinde veya Azure Kubernetes Service (AKS) kümelerinde küme uzantısı olarak etkinleştirilir. GitOps ile Git deponuzu küme yapılandırması ve uygulama dağıtımı için gerçek kaynağı olarak kullanabilirsiniz.
Önemli
ArgoCD ile GitOps şu anda ÖNİzLEME aşamasındadır. Beta, önizleme aşamasında olan veya henüz genel kullanıma sunulmamış Azure özellikleri için geçerli olan yasal koşullar için Bkz. Microsoft Azure Önizlemeleri için Ek Kullanım Koşulları . Üretim GitOps uzantısı desteği için Flux kullanarak GitOps uzantısını deneyin.
Tavsiye
Bu öğreticideki kaynak bir Git deposu olsa da, ArgoCD Helm ve Open Container Initiative (OCI) depoları gibi diğer yaygın dosya kaynaklarını destekler.
Önkoşullar
GitOps kullanarak uygulama dağıtmak için Azure Arc özellikli kubernetes kümesine veya AKS kümesine ihtiyacınız vardır:
Azure Arc özellikli Kubernetes kümeleri
Azure Arc özellikli Kubernetes bağlı ve çalışır durumda olan bir küme.
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/connectedClustersokuma ve yazma izinleri.
Azure Kubernetes Service kümeleri
Çalışır durumda olan MSI tabanlı bir AKS kümesi.
Önemli
Bu uzantının çalışması için AKS kümesinin Hizmet Asıl Adı (SPN) ile değil Yönetilen Hizmet Kimliği (MSI) ile oluşturulması gerekir. 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ı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/managedClustersokuma 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
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 upgradeKubernetes komut satırı istemcisi kubectl. Azure Cloud Shell kullanıyorsanız
kubectlzaten yüklüdür.kubectlkomutunu kullanarakaz aks install-cli'yi yerel olarak yükleyin:az aks install-cliAş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.KubernetesConfigurationKayı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.
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 |
Denetleyiciler 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.10.7
False whl k8s-configuration C:\Users\somename\.azure\cliextensions\k8s-configuration False 2.2.0
False whl k8s-extension C:\Users\somename\.azure\cliextensions\k8s-extension False 1.6.4
GitOps (ArgoCD) uzantısı oluşturma (basit yükleme)
GitOps ArgoCD yüklemesi , yüksek kullanılabilirlik (HA) modunda çoklu kiracıyı destekler ve iş yükü kimliğini destekler.
Önemli
HA modu varsayılan yapılandırmadır ve yükleyebilmek için kümede üç düğüm gerektirir. Aşağıdaki komut uzantıyı tek bir düğüme yüklemek için ekler --config deployWithHighAvailability=false .
Bu komut, ArgoCD bileşenlerini küme genelinde erişime sahip yeni argocd bir ad alanına yükleyerek en basit yapılandırmayı oluşturur. Küme genelinde erişim, ArgoCD uygulama tanımlarının kümedeki ArgoCD yapılandırma haritası yapılandırmasında listelenen herhangi bir ad alanında algılanması sağlar. Örneğin: namespace1,namespace2
az k8s-extension create --resource-group <resource-group> --cluster-name <cluster-name> \
--cluster-type managedClusters \
--name argocd \
--extension-type Microsoft.ArgoCD \
--release-train preview \
--config deployWithHighAvailability=false \
--config namespaceInstall=false \
--config "config-maps.argocd-cmd-params-cm.data.application\.namespaces=namespace1,namespace2"
ArgoCD erişimini belirli bir ad alanıyla sınırlamak istiyorsanız, --config namespaceInstall=true'yi --target-namespace <namespace> parametreleriyle birlikte kullanın. Bu yükleme komutu yeni <namespace> bir ad alanı oluşturur ve 'de <namespace>ArgoCD bileşenlerini yükler. Yükleme komutu aynı kümeye birden çok ArgoCD örneği yükleme olanağı da sağlar. Bu yapılandırmadaki ArgoCD uygulama tanımları yalnızca ad alanında <namespace> çalışır.
İş yükü kimliğiyle GitOps (ArgoCD) uzantısı oluşturma
Üretim kullanımı için önerilen alternatif bir yükleme yöntemi iş yükü kimliğidir. Bu yöntem, Git deponuzda gizli dizileri veya kimlik bilgilerini yönetmeye gerek kalmadan Azure kaynaklarında kimlik doğrulaması yapmak için Microsoft Entra Id kimliklerini kullanmanıza olanak tanır. Bu yükleme, ArgoCD'nin 3.0.0-rc2 veya sonraki işletim sistemi sürümünde etkinleştirilen iş yükü kimliği kimlik doğrulamasını kullanır.
Önemli
HA modu varsayılan yapılandırmadır ve yükleyebilmek için kümede üç düğüm gerektirir. Uzantıyı tek bir düğüme yüklemek için --config deployWithHighAvailability=false ekleyin.
İş yükü kimliğiyle uzantı oluşturmak için, önce bu Bicep şablonunda aşağıdaki değişkenleri kendi değerlerinizle değiştirin:
var clusterName = '<aks-or-arc-cluster-name>'
var workloadIdentityClientId = 'replace-me##-##-###-###'
var ssoWorkloadIdentityClientId = 'replace-me##-##-###-###'
var url = 'https://<public-ip-for-argocd-ui>/'
var oidcConfig = '''
name: Azure
issuer: https://login.microsoftonline.com/<your-tenant-id>/v2.0
clientID: <same-value-as-ssoWorkloadIdentityClientId-above>
azure:
useWorkloadIdentity: true
requestedIDTokenClaims:
groups:
essential: true
requestedScopes:
- openid
- profile
- email
'''
var defaultPolicy = 'role:readonly'
var policy = '''
p, role:org-admin, applications, *, */*, allow
p, role:org-admin, clusters, get, *, allow
p, role:org-admin, repositories, get, *, allow
p, role:org-admin, repositories, create, *, allow
p, role:org-admin, repositories, update, *, allow
p, role:org-admin, repositories, delete, *, allow
g, replace-me##-argocd-ui-Microsoft Entra-group-admin-id, role:org-admin
'''
resource cluster 'Microsoft.ContainerService/managedClusters@2024-10-01' existing = {
name: clusterName
}
resource extension 'Microsoft.KubernetesConfiguration/extensions@2023-05-01' = {
name: 'argocd'
scope: cluster
properties: {
extensionType: 'Microsoft.ArgoCD'
releaseTrain: 'preview'
configurationSettings: {
'workloadIdentity.enable': 'true'
'workloadIdentity.clientId': workloadIdentityClientId
'workloadIdentity.entraSSOClientId': ssoWorkloadIdentityClientId
'config-maps.argocd-cm.data.oidc\\.config': oidcConfig
'config-maps.argocd-cm.data.url': url
'config-maps.argocd-rbac-cm.data.policy\\.default': defaultPolicy
'config-maps.argocd-rbac-cm.data.policy\\.csv': policy
'config-maps.argocd-cmd-params-cm.data.application\\.namespaces': 'default, argocd'
}
}
}
Bicep şablonu şu komut kullanılarak oluşturulabilir:
az deployment group create --resource-group <resource-group> --template-file <bicep-file>
Parametreler
clusterName AKS veya Arc özellikli Kubernetes kümesinin adıdır.
workloadIdentityClientId ve ssoWorkloadIdentityClientId iş yükü kimliği için kullanılmak istenen yönetilen kimliğin istemci kimlikleridir.
ssoWorkloadIdentityClientId, ArgoCD kullanıcı arabirimi için kimlik doğrulaması için kullanılır ve workloadIdentityClientId ArgoCD bileşenleri için iş yükü kimliği için kullanılır. ssoWorkloadIdentityClientId'nin genel kurulumu ve yapılandırması hakkında ek bilgi için OIDC kullanarak Microsoft Entra Id Uygulama Kaydı Kimlik Doğrulaması'nı ziyaret edin.
url ArgoCD kullanıcı arabiriminin genel IP adresidir. Kümede müşteri tarafından sağlanan bir giriş denetleyicisi yoksa genel IP veya etki alanı adı yoktur. Öyleyse, giriş kuralının dağıtımdan sonra ArgoCD kullanıcı arabirimine eklenmesi gerekir.
oidcConfig - Microsoft Entra Kimliğinizin kiracı kimliğiyle <your-tenant-id> değerini değiştirin.
<same-value-as-ssoWorkloadIdentityClientId-above> öğesini ssoWorkloadIdentityClientId ile aynı değerle değiştirin.
policy değişkeni ArgoCD'nin ayarlarıdır argocd-rbac-cm configmap .
g, replace-me##-argocd-ui-entra-group-admin-id , ArgoCD kullanıcı arabirimine yönetici erişimi veren Microsoft Entra grup kimliğidir. Microsoft Entra grup kimliği, Azure portalında Microsoft Entra ID > Groups >your-group-name> Properties altında bulunabilir. Microsoft Entra grup kimliği yerine Microsoft Entra kullanıcı kimliğini kullanabilirsiniz. Microsoft Entra kullanıcı kimliği, Azure portalında Microsoft Entra Id > Users >your-user-name> Properties altında bulunabilir.
İş yükü kimlik bilgileri oluşturma
Yeni iş yükü kimliği kimlik bilgilerini ayarlamak için şu adımları izleyin:
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.
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:"argocd":"source-controller" --audience api://AzureADTokenExchangeKaynak 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.
İş yükü kimliğini kullanarak özel ACR kayıt defterlerine veya ACR depolarına bağlanma
Özel ACR kayıt defteri veya ACR depolarını kullanmak için, özel ACR kayıt defterlerine bağlanmaya yönelik resmi ArgoCD belgelerindeki yönergeleri izleyin. Bu kılavuzdaki Podları Etiketleme, Federasyon Kimliği Kimlik Bilgileri Oluşturma ve Hizmet Hesabına ek açıklama ekleme adımları, Bicep dağıtımıyla uzantı tarafından tamamlanmıştır ve atlanabilir.
ArgoCD kullanıcı arabirimine erişme
AKS kümesi için mevcut giriş denetleyicisi yoksa, ArgoCD kullanıcı arabirimi bir LoadBalancer hizmeti kullanılarak doğrudan kullanıma sunulur. Aşağıdaki komut, 80 ve 443 numaralı bağlantı noktasında ArgoCD kullanıcı arabirimini kullanıma sunar.
kubectl -n argocd expose service argocd-server --type LoadBalancer --name argocd-server-lb --port 80 --target-port 8080
ArgoCD uygulamasını dağıtma
Artık ArgoCD uzantısı yüklü olduğuna göre, ArgoCD kullanıcı arabirimini veya CLI'yı kullanarak bir uygulama dağıtabilirsiniz. Aşağıdaki örnek, bir ArgoCD uygulamasının içinde AKS deposunu varsayılan ArgoCD projesine, `kubectl apply` kullanarak `argocd` ad alanında dağıtmak için basitçe kullanır.
kubectl apply -f - <<EOF
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
name: aks-store-demo
namespace: argocd
spec:
project: default
source:
repoURL: https://github.com/Azure-Samples/aks-store-demo.git
targetRevision: HEAD
path: kustomize/overlays/dev
syncPolicy:
automated: {}
destination:
namespace: argocd
server: https://kubernetes.default.svc
EOF
AKS mağaza tanıtım uygulaması pets ad alanına yüklendi.
Bu yönergeleri izleyerek uygulama web sayfasına bakın. HTTPS değil http kullanarak IP adresini ziyaret edin.
Uzantı yapılandırmasını güncelleştirme
ArgoCD yapılandırma haritaları yüklemeden ve diğer uzantı yapılandırma ayarlarından sonra aşağıdaki komut kullanılarak güncelleştirilebilir:
az k8s-extension update --resource-group <resource-group> --cluster-name <cluster-name> --cluster-type <cluster-type> --name Microsoft.ArgoCD –-config "config-maps.argocd-cm.data.url='https://<public-ip-for-argocd-ui>/auth/callback'”
ArgoCD configürasyon haritasını uzantı aracılığıyla güncelleştirmek önemlidir, böylece ayarlar üzerine yazılmasın.
Bicep şablonunu uygulamak, yapılandırmayı güncellemek için az cli'ye alternatif bir yöntemdir.
Uzantıyı silme
Uzantıyı silmek için aşağıdaki komutları kullanın.
az k8s-extension delete -g <resource-group> -c <cluster-name> -n argocd -t managedClusters --yes
Sonraki Adımlar
- Azure/AKS deposundaki dosya sorunları ve özellik istekleri ve açıklamaya veya başlığa "ArgoCD" sözcüğünü eklediğinizden emin olun.
- Azure için Backstage ve Küme API Sağlayıcısı (CAPZ) veya Çapraz Düzlem ile OSS ArgoCD dağıtanAKS-Platform mühendislik kodu örneğini keşfedin.