Gunakan koneksi kluster untuk terhubung dengan aman ke kluster Kubernetes dengan dukungan Azure Arc
Dengan koneksi kluster, Anda dapat terhubung dengan aman ke kluster Kubernetes dengan dukungan Azure Arc dari mana saja tanpa memerlukan port masuk apa pun untuk diaktifkan pada firewall.
Akses ke apiserver
pada kluster Kubernetes dengan Azure Arc aktif memungkinkan skenario berikut:
- Penelusuran kesalahan dan pemecahan masalah interaktif.
- Akses kluster ke layanan Azure untuk lokasi kustom dan sumber daya lain yang dibuat di atasnya.
Sebelum memulai, tinjau gambaran umum konseptual fitur koneksi kluster.
Prasyarat
Akun Azure dengan langganan aktif. Buat akun secara gratis.
Kluster terhubung Kube yang didukung Azure Arc yang sudah ada.
- Jika Anda belum menyambungkan kluster, harap gunakan mulai cepat kami.
- Tingkatkan agen Anda ke versi terbaru.
Aktifkan persyaratan jaringan untuk Kubernetes dengan dukungan Arc
Aktifkan titik akhir ini untuk akses keluar:
Titik akhir Port *.servicebus.windows.net
443 guestnotificationservice.azure.com
,*.guestnotificationservice.azure.com
443 Catatan
Untuk menerjemahkan
*.servicebus.windows.net
kartubebas ke titik akhir tertentu, gunakan perintah\GET https://guestnotificationservice.azure.com/urls/allowlist?api-version=2020-01-01&location=<location>
. Dalam perintah ini, wilayah harus ditentukan untuk<location>
tempat penampung.
Untuk mendapatkan segmen wilayah titik akhir regional, hapus semua spasi dari nama wilayah Azure. Misalnya, wilayah US Timur 2 , nama wilayahnya adalah eastus2
.
Misalnya: *.<region>.arcdataservices.com
harus berada *.eastus2.arcdataservices.com
di wilayah US Timur 2.
Untuk melihat daftar semua wilayah, jalankan perintah ini:
az account list-locations -o table
Get-AzLocation | Format-Table
Instal versi
connectedk8s
terbaru ekstensi Azure CLI:az extension add --name connectedk8s
Jika Anda sudah menginstal ekstensi
connectedk8s
, perbarui ekstensi ke versi terbaru:az extension update --name connectedk8s
Ganti tempat penampung dan jalankan perintah di bawah ini untuk mengatur variabel lingkungan yang digunakan dalam dokumen ini:
CLUSTER_NAME=<cluster-name> RESOURCE_GROUP=<resource-group-name> ARM_ID_CLUSTER=$(az connectedk8s show -n $CLUSTER_NAME -g $RESOURCE_GROUP --query id -o tsv)
Mengonfigurasikan autentikasi
Pada kluster berkemampuan Arc yang ada, buat ClusterRoleBinding dengan autentikasi Microsoft Entra atau token akun layanan.
Opsi autentikasi Microsoft Entra
Dapatkan yang
objectId
terkait dengan entitas Microsoft Entra Anda. Jika Anda menggunakan satu akun pengguna, dapatkan nama prinsipal pengguna (UPN) yang terkait dengan entitas Microsoft Entra Anda.- Untuk akun grup Microsoft Entra:
AAD_ENTITY_ID=$(az ad signed-in-user show --query id -o tsv)
Untuk akun pengguna tunggal Microsoft Entra:
AAD_ENTITY_ID=$(az ad signed-in-user show --query userPrincipalName -o tsv)
Untuk aplikasi Microsoft Entra:
AAD_ENTITY_ID=$(az ad sp show --id <id> --query id -o tsv)
Otorisasi entitas dengan izin yang sesuai.
Jika Anda menggunakan ClusterRoleBinding asli Kubernetes atau RoleBinding untuk pemeriksaan otorisasi pada kluster, dengan
kubeconfig
file yang menunjuk keapiserver
kluster Anda untuk akses langsung, Anda dapat membuat satu yang dipetakan ke entitas Microsoft Entra (perwakilan layanan atau pengguna) yang perlu mengakses kluster ini. Contohnya:kubectl create clusterrolebinding demo-user-binding --clusterrole cluster-admin --user=$AAD_ENTITY_ID
Jika Anda menggunakan Azure RBAC untuk pemeriksaan otorisasi pada kluster, Anda dapat membuat penetapan peran Azure yang berlaku yang dipetakan ke entitas Microsoft Entra. Contohnya:
az role assignment create --role "Azure Arc Kubernetes Viewer" --assignee $AAD_ENTITY_ID --scope $ARM_ID_CLUSTER az role assignment create --role "Azure Arc Enabled Kubernetes Cluster User Role" --assignee $AAD_ENTITY_ID --scope $ARM_ID_CLUSTER
Opsi autentikasi token akun layanan
Dengan file yang
kubeconfig
menunjuk keapiserver
kluster Kubernetes Anda, jalankan perintah ini untuk membuat akun layanan. Contoh ini membuat akun layanan di namespace default, tetapi Anda dapat mengganti namespace layanan lain untukdefault
.kubectl create serviceaccount demo-user -n default
Buat ClusterRoleBinding untuk memberi akun layanan ini izin yang sesuai pada kluster. Jika Anda menggunakan namespace yang berbeda dalam perintah pertama, ganti di sini untuk
default
.kubectl create clusterrolebinding demo-user-binding --clusterrole cluster-admin --serviceaccount default:demo-user
Membuat token akun layanan:
kubectl apply -f - <<EOF apiVersion: v1 kind: Secret metadata: name: demo-user-secret annotations: kubernetes.io/service-account.name: demo-user type: kubernetes.io/service-account-token EOF
TOKEN=$(kubectl get secret demo-user-secret -o jsonpath='{$.data.token}' | base64 -d | sed 's/$/\n/g')
Dapatkan token ke output ke konsol
echo $TOKEN
Mengakses kluster Anda dari perangkat klien
Sekarang Anda dapat mengakses kluster dari klien yang berbeda. Jalankan langkah-langkah berikut pada perangkat klien lain.
Masuk menggunakan autentikasi Microsoft Entra atau autentikasi token akun layanan.
Dapatkan koneksi
kubeconfig
kluster yang diperlukan untuk berkomunikasi dengan kluster dari mana saja (bahkan dari luar firewall di sekitar kluster), berdasarkan opsi autentikasi yang digunakan:Jika menggunakan autentikasi Microsoft Entra:
az connectedk8s proxy -n $CLUSTER_NAME -g $RESOURCE_GROUP
Jika menggunakan autentikasi token akun layanan:
az connectedk8s proxy -n $CLUSTER_NAME -g $RESOURCE_GROUP --token $TOKEN
Catatan
Perintah ini akan membuka proksi dan memblokir shell saat ini.
Dalam sesi shell yang berbeda, gunakan
kubectl
untuk mengirim permintaan ke kluster:kubectl get pods -A
Sekarang, Anda akan melihat respons dari kluster yang berisi daftar semua pod di bawah namespace layanan default
.
Pembatasan yang diketahui
Gunakan az connectedk8s show
untuk memeriksa versi agen Kubernetes yang didukung Arc.
Saat membuat permintaan ke kluster Kubernetes, jika entitas Microsoft Entra yang digunakan adalah bagian dari lebih dari 200 grup, Anda mungkin melihat kesalahan berikut:
You must be logged in to the server (Error:Error while retrieving group info. Error:Overage claim (users with more than 200 group membership) is currently not supported.
Ini adalah keterbatasan yang diketahui. Untuk melewati kesalahan ini:
- Buat perwakilan layanan, yang cenderung tidak menjadi anggota lebih dari 200 grup.
- Masuk ke Azure CLI dengan perwakilan layanan sebelum menjalankan
az connectedk8s proxy
perintah.
Langkah berikutnya
- Siapkan Microsoft Entra RBAC di kluster Anda.
- Menyebarkan dan mengelola ekstensi kluster.