Gunakan cluster connect 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 tanpa memerlukan port masuk 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 gratis.
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
Kluster terhubung Kube yang didukung Azure Arc yang sudah ada.
- Jika Anda belum menyambungkan kluster, gunakan mulai cepat kami.
- Tingkatkan agen Anda ke versi terbaru.
Selain memenuhi 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.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)
Untuk mendapatkan segmen wilayah titik akhir regional, hapus semua spasi dari nama wilayah Azure. Misalnya, wilayah US Timur 2 , nama wilayahnya adalah eastus2
.
Misalnya: san-af-<region>-prod.azurewebsites.net
harus berada san-af-eastus2-prod.azurewebsites.net
di wilayah US Timur 2.
Untuk melihat daftar semua wilayah, jalankan perintah ini:
az account list-locations -o table
Pilihan autentikasi Azure Active Directory
Dapatkan yang
objectId
terkait dengan entitas Azure Active Directory (Azure AD) Anda.Untuk akun pengguna Azure AD:
AAD_ENTITY_OBJECT_ID=$(az ad signed-in-user show --query userPrincipalName -o tsv)
Untuk aplikasi Azure AD:
AAD_ENTITY_OBJECT_ID=$(az ad sp show --id <id> --query id -o tsv)
Otorisasi entitas dengan izin yang sesuai.
Jika Anda menggunakan Kube asli ClusterRoleBinding atau RoleBinding untuk pemeriksaan otorisasi pada kluster, dengan
kubeconfig
file yang mengarah keapiserver
kluster Anda untuk akses langsung, Anda dapat membuat penetapan peran yang dipetakan ke entitas Microsoft Azure Active Directory (perwakilan layanan atau pengguna) yang perlu mengakses kluster ini. Contoh:kubectl create clusterrolebinding demo-user-binding --clusterrole cluster-admin --user=$AAD_ENTITY_OBJECT_ID
Jika Anda menggunakan Azure RBAC untuk pemeriksaan otorisasi pada kluster, Anda dapat membuat penetapan peran Azure yang dipetakan ke entitas Microsoft Azure Active Directory. Contoh:
az role assignment create --role "Azure Arc Kubernetes Viewer" --assignee $AAD_ENTITY_OBJECT_ID --scope $ARM_ID_CLUSTER az role assignment create --role "Azure Arc Enabled Kubernetes Cluster User Role" --assignee $AAD_ENTITY_OBJECT_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 layanan yang berbeda dalam perintah pertama, ganti di sini untuk
default
.kubectl create clusterrolebinding demo-user-binding --clusterrole cluster-admin --serviceaccount default:demo-user
Buat 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
Akses kluster Anda
Siapkan koneksi
kubeconfig
kluster yang diperlukan untuk mengakses kluster Anda berdasarkan opsi autentikasi yang digunakan:Jika menggunakan autentikasi Azure AD, setelah masuk ke Azure CLI menggunakan entitas Azure AD yang menarik, dapatkan Cluster Connect
kubeconfig
yang diperlukan untuk berkomunikasi dengan kluster dari mana saja (bahkan dari luar firewall di sekitar kluster):az connectedk8s proxy -n $CLUSTER_NAME -g $RESOURCE_GROUP
Jika menggunakan autentikasi akun layanan, dapatkan koneksi
kubeconfig
kluster yang diperlukan untuk berkomunikasi dengan kluster dari mana saja:az connectedk8s proxy -n $CLUSTER_NAME -g $RESOURCE_GROUP --token $TOKEN
Gunakan
kubectl
untuk mengirim permintaan ke kluster:kubectl get pods
Sekarang, Anda akan melihat respons dari kluster yang berisi daftar semua pod di bawah namespace layanan default
.
Batasan umum
Gunakan az connectedk8s show
untuk memeriksa versi agen Kubernetes dengan dukungan Arc.
Saat membuat permintaan ke kluster Kubernetes, jika entitas Azure AD 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 Azure AD RBAC pada kluster Anda.
- Menyebarkan dan mengelola ekstensi kluster.