Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Tutorial ini menjelaskan cara menggunakan GitOps dalam kluster Kubernetes. GitOps dengan ArgoCD diaktifkan sebagai ekstensi kluster di kluster Kubernetes dengan dukungan Azure Arc atau kluster Azure Kubernetes Service (AKS). Dengan GitOps, Anda dapat menggunakan repositori Git sebagai sumber kebenaran untuk konfigurasi kluster dan penyebaran aplikasi.
Penting
GitOps dengan ArgoCD saat ini dalam PRATINJAU. Lihat Ketentuan Penggunaan Tambahan untuk Pratinjau Microsoft Azure untuk persyaratan hukum yang berlaku untuk fitur Azure yang dalam versi beta, pratinjau, atau belum dirilis ke ketersediaan umum. Untuk dukungan ekstensi GitOps produksi, coba ekstensi GitOps menggunakan Flux.
Petunjuk / Saran
Meskipun sumber dalam tutorial ini adalah repositori Git, ArgoCD mendukung sumber file umum lainnya seperti repositori Helm dan Open Container Initiative (OCI).
Prasyarat
Untuk menyebarkan aplikasi menggunakan GitOps, Anda memerlukan kluster Kubernetes dengan dukungan Azure Arc atau kluster AKS:
Kluster Kubernetes yang mendukung Azure Arc
Kluster terhubung Kubernetes dengan dukungan Azure Arc yang aktif dan berjalan.
Pelajari cara menyambungkan kluster Kubernetes ke Azure Arc. Jika Anda perlu terhubung melalui proksi keluar, pastikan Anda menginstal agen Arc dengan pengaturan proksi.
Izin baca dan tulis pada jenis sumber daya
Microsoft.Kubernetes/connectedClusters.
Kluster Azure Kubernetes Service
Kluster AKS berbasis MSI yang aktif dan berjalan.
Penting
Kluster AKS perlu dibuat dengan Identitas Layanan Terkelola (MSI), bukan Nama Prinsipal Layanan (SPN), agar ekstensi ini berfungsi. Untuk kluster AKS baru yang dibuat dengan
az aks create, kluster berbasis MSI secara default. Untuk mengonversi kluster berbasis SPN ke MSI, jalankanaz aks update -g $RESOURCE_GROUP -n $CLUSTER_NAME --enable-managed-identity. Untuk informasi selengkapnya, lihat Menggunakan identitas terkelola di AKS.Izin baca dan tulis pada jenis sumber daya
Microsoft.ContainerService/managedClusters.
Umum untuk kedua jenis kluster
Izin baca dan tulis pada jenis sumber daya ini:
Microsoft.KubernetesConfiguration/extensions
Azure CLI versi 2.15 atau lebih baru. Instal Azure CLI atau gunakan perintah berikut untuk memperbarui ke versi terbaru:
az version az upgradeAlat baris perintah Kubernetes, kubectl.
kubectlsudah diinstal jika Anda menggunakan Azure Cloud Shell.Pasang
kubectlsecara lokal menggunakan perintahaz aks install-cli:az aks install-cliPendaftaran penyedia sumber daya Azure berikut:
az provider register --namespace Microsoft.Kubernetes az provider register --namespace Microsoft.ContainerService az provider register --namespace Microsoft.KubernetesConfigurationPendaftaran adalah proses asinkron dan harus selesai dalam waktu 10 menit. Untuk memantau proses pendaftaran, gunakan perintah berikut:
az provider show -n Microsoft.KubernetesConfiguration -o table Namespace RegistrationPolicy RegistrationState --------------------------------- -------------------- ------------------- Microsoft.KubernetesConfiguration RegistrationRequired Registered
Dukungan versi dan wilayah
GitOps saat ini didukung di semua wilayah yang didukung Kubernetes dengan dukungan Azure Arc. GitOps saat ini didukung di subset wilayah yang didukung AKS. Layanan GitOps menambahkan wilayah baru yang didukung pada irama reguler.
Persyaratan jaringan
Agen GitOps memerlukan TCP keluar (keluar) ke sumber repositori di port 22 (SSH) atau port 443 (HTTPS) agar berfungsi. Agen juga memerlukan akses ke URL keluar berikut:
| Titik akhir (DNS) | Deskripsi |
|---|---|
https://management.azure.com |
Diperlukan agen untuk berkomunikasi dengan layanan Konfigurasi Kubernetes. |
https://<region>.dp.kubernetesconfiguration.azure.com |
Titik akhir sarana data bagi agen untuk mendorong status dan mengambil informasi konfigurasi. Tergantung pada <region> (wilayah yang didukung yang disebutkan sebelumnya). |
https://login.microsoftonline.com |
Diperlukan untuk mengambil dan memperbarui token Azure Resource Manager. |
https://mcr.microsoft.com |
Diperlukan untuk mengunduh gambar kontainer untuk pengontrol. |
Mengaktifkan ekstensi CLI
Instal paket ekstensi terbaru k8s-configuration dan k8s-extension CLI:
az extension add -n k8s-configuration
az extension add -n k8s-extension
Untuk memperbarui paket ini ke versi terbaru:
az extension update -n k8s-configuration
az extension update -n k8s-extension
Untuk melihat daftar semua ekstensi Azure CLI yang diinstal dan versinya, gunakan perintah berikut:
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
Membuat ekstensi GitOps (ArgoCD) (penginstalan sederhana)
Penginstalan GitOps ArgoCD mendukung multi-penyewaan dalam mode ketersediaan tinggi (HA) dan mendukung identitas beban kerja.
Penting
Mode HA adalah konfigurasi default dan memerlukan tiga simpul dalam kluster untuk dapat menginstal. Perintah di bawah ini menambahkan --config deployWithHighAvailability=false untuk menginstal ekstensi pada satu simpul.
Perintah ini membuat konfigurasi paling sederhana yang menginstal komponen ArgoCD ke namespace baru argocd dengan akses di seluruh cluster. Akses di seluruh kluster memungkinkan definisi aplikasi ArgoCD terdeteksi di namespace apa pun yang tercantum dalam konfigurasi configmap ArgoCD di kluster. Misalnya: 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"
Jika Anda ingin membatasi akses ArgoCD ke namespace tertentu, gunakan --config namespaceInstall=true bersama dengan --target-namespace <namespace> parameter. Perintah penginstalan ini membuat namespace baru <namespace> dan menginstal komponen ArgoCD di <namespace>. Perintah penginstalan juga memungkinkan kemampuan untuk menginstal beberapa instans ArgoCD di kluster yang sama. Definisi aplikasi ArgoCD dalam konfigurasi ini hanya berfungsi di namespace <namespace>.
Membuat ekstensi GitOps (ArgoCD) dengan identitas beban kerja
Metode penginstalan alternatif yang direkomendasikan untuk penggunaan produksi adalah identitas beban kerja. Metode ini memungkinkan Anda menggunakan identitas ID Microsoft Entra untuk mengautentikasi ke sumber daya Azure tanpa perlu mengelola rahasia atau kredensial di repositori Git Anda. Penginstalan ini menggunakan autentikasi identitas beban kerja yang diaktifkan di ArgoCD versi OSS 3.0.0-rc2 atau yang lebih baru.
Penting
Mode HA adalah konfigurasi default dan memerlukan tiga simpul dalam kluster untuk dapat menginstal. Tambahkan --config deployWithHighAvailability=false untuk menginstal ekstensi pada satu simpul.
Untuk membuat ekstensi dengan identitas beban kerja, pertama-tama ganti variabel berikut dengan nilai Anda sendiri dalam templat Bicep ini:
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'
}
}
}
Templat Bicep dapat dibuat menggunakan perintah ini:
az deployment group create --resource-group <resource-group> --template-file <bicep-file>
Parameter-parameternya
clusterName adalah nama kluster Kubernetes dengan dukungan AKS atau Arc.
workloadIdentityClientId dan ssoWorkloadIdentityClientId adalah ID klien dari identitas terkelola yang ingin digunakan untuk identitas beban kerja.
ssoWorkloadIdentityClientId digunakan untuk autentikasi untuk UI ArgoCD dan workloadIdentityClientId digunakan untuk identitas beban kerja untuk komponen ArgoCD. Kunjungi Microsoft Entra ID App Registration Auth menggunakan OIDC untuk informasi tambahan tentang penyiapan umum dan konfigurasi ssoWorkloadIdentityClientId.
url adalah IP publik UI ArgoCD. Tidak ada IP publik atau nama domain kecuali kluster sudah memiliki pengontrol ingress yang disediakan pelanggan. Jika demikian, aturan ingress perlu ditambahkan ke UI ArgoCD setelah penyebaran.
oidcConfig - ganti <your-tenant-id> dengan ID penyewa ID Microsoft Entra Anda. Ganti <same-value-as-ssoWorkloadIdentityClientId-above> dengan nilai ssoWorkloadIdentityClientIdyang sama dengan .
policy variabel adalah argocd-rbac-cm configmap konfigurasi ArgoCD.
g, replace-me##-argocd-ui-entra-group-admin-id adalah ID grup Microsoft Entra yang memberikan akses admin ke UI ArgoCD. ID grup Microsoft Entra dapat ditemukan di portal Azure di bawah ID > Grup > Microsoft Entra nama-grup-Anda> Properti. Anda dapat menggunakan ID pengguna Microsoft Entra alih-alih ID grup Microsoft Entra. ID pengguna Microsoft Entra dapat ditemukan di portal Azure di bawah ID > Microsoft Entra > Pengguna nama pengguna Anda> Properti.
Membuat kredensial identitas beban kerja
Untuk menyiapkan kredensial identitas beban kerja baru, ikuti langkah-langkah berikut:
Ambil URL penerbit OIDC untuk kluster AKS atau kluster Kubernetes dengan dukungan Arc.
Buat identitas terkelola dan catat ID klien dan ID penyewanya.
Buat kredensial identitas federasi untuk kluster AKS atau kluster Kubernetes dengan dukungan Arc. Contohnya:
# 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://AzureADTokenExchangePastikan untuk memberikan izin yang tepat untuk identitas beban kerja untuk sumber daya yang Anda inginkan untuk ditarik oleh pengontrol sumber atau pengontrol pemantul gambar. Misalnya, jika menggunakan Azure Container Registry, pastikan (
Container Registry Repository Readeruntuk registri yang diaktifkan ABAC) atauAcrPull(untuk registri non-ABAC) telah diterapkan.
Menghubungkan ke registri ACR privat atau repositori ACR dengan menggunakan identitas beban kerja
Untuk menggunakan registri ACR privat atau repositori ACR, ikuti instruksi dalam dokumentasi ArgoCD resmi untuk menyambungkan ke registri ACR privat. Beri Label pada Pod, Buat Kredensial Identitas Federasi, dan Tambahkan anotasi ke Akun Layanan dalam panduan tersebut telah diselesaikan oleh ekstensi dengan penyebaran Bicep dan dapat dilewati.
Mengakses UI ArgoCD
Jika tidak ada pengontrol ingress yang ada untuk kluster AKS, maka UI ArgoCD dapat diekspos langsung menggunakan layanan LoadBalancer. Perintah berikut akan mengekspos UI ArgoCD pada port 80 dan 443.
kubectl -n argocd expose service argocd-server --type LoadBalancer --name argocd-server-lb --port 80 --target-port 8080
Menyebarkan aplikasi ArgoCD
Sekarang setelah ekstensi ArgoCD diinstal, Anda dapat menyebarkan aplikasi menggunakan UI ArgoCD atau CLI. Contoh berikut hanya menggunakan kubectl apply untuk menerapkan penyimpanan AKS di dalam aplikasi ArgoCD ke proyek ArgoCD default di argocd namespace.
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
Aplikasi demo toko AKS diinstal ke namespace pets. Lihat halaman web aplikasi dengan mengikuti instruksi ini. Pastikan untuk mengunjungi alamat IP menggunakan http dan bukan https.
Perbarui konfigurasi ekstensi
Peta konfigurasi ArgoCD dapat diperbarui setelah penginstalan dan pengaturan konfigurasi ekstensi lainnya menggunakan perintah berikut:
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'”
Penting untuk memperbarui configmap ArgoCD melalui ekstensi agar pengaturannya tidak tertimpa.
Menerapkan templat bicep adalah metode alternatif untuk az cli memperbarui konfigurasi.
Menghapus ekstensi
Gunakan perintah berikut untuk menghapus ekstensi.
az k8s-extension delete -g <resource-group> -c <cluster-name> -n argocd -t managedClusters --yes
Langkah selanjutnya
- Masalah file dan permintaan fitur pada repositori Azure/AKS dan pastikan untuk menyertakan kata "ArgoCD" dalam deskripsi atau judul.
- Jelajahi sampel kode rekayasaAKS-Platform yang menggunakan OSS ArgoCD dengan Backstage dan Cluster API Provider for Azure (CAPZ) atau Crossplane.