Gunakan Cluster Connect untuk menyambungkan ke kluster Kubernetes yang mendukung Azure Arc

Dengan Cluster Connect, Anda dapat tersambung ke kluster Kubernetes dengan Azure Arc aktif secara aman tanpa perlu meminta port masuk untuk diaktifkan pada firewall. Akses ke apiserver pada kluster Kubernetes dengan Azure Arc aktif memungkinkan skenario berikut:

  • Mengaktifkan penelusuran kesalahan dan pemecahan masalah interaktif.
  • Menyediakan akses kluster ke layanan Azure untuk lokasi kustom dan sumber daya lain yang dibuat di atasnya.

Gambaran umum konseptual fitur ini tersedia di artikel Cluster Connect - Kubernetes dengan Azure Arc aktif.

Prasyarat

  • Instal atau upgrade Azure CLI ke versi = 2.16.0 dan < = 2.29.0

  • Instal connectedk8s ekstensi Versi Azure CLI > = 1.2.0:

    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.

  • Aktifkan titik akhir di bawah untuk akses keluar selain yang disebutkan pada menyambungkan kluster Kubernetes ke Azure Arc:

    Titik akhir Port
    *.servicebus.windows.net 443
    guestnotificationservice.azure.com, *.guestnotificationservice.azure.com 443
  • 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)
    

Aktifkan fitur Cluster Connect

Anda dapat mengaktifkan Cluster Connect di semua kluster Kube dengan Azure Arc aktif dengan menjalankan perintah berikut pada komputer tempat file kubeconfig diarahkan ke kluster yang menjadi perhatian:

az connectedk8s enable-features --features cluster-connect -n $CLUSTER_NAME -g $RESOURCE_GROUP

Pilihan autentikasi Azure Active Directory

  1. Dapatkan objectId yang terkait dengan entitas Microsoft Azure Active Directory Anda:

    • Akun pengguna Microsoft Azure Active Directory:

      AAD_ENTITY_OBJECT_ID=$(az ad signed-in-user show --query objectId -o tsv)
      
    • Untuk aplikasi Azure AD:

      AAD_ENTITY_OBJECT_ID=$(az ad sp show --id <id> --query objectId -o tsv)
      
  2. Otorisasi entitas AAD dengan izin yang sesuai:

    • Jika Anda menggunakan Kube asli ClusterRoleBinding atau RoleBinding untuk pemeriksaan otorisasi pada kluster, dengan kubeconfig file yang mengarah ke apiserver 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 admin-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
      

Opsi autentikasi token akun layanan

  1. Dengan file kubeconfig yang menunjuk ke apiserver kluster Kubernetes, buat akun layanan di namespace layanan mana pun (perintah berikut membuatnya di namespace layanan default):

    kubectl create serviceaccount admin-user
    
  2. Buat ClusterRoleBinding atau RoleBinding untuk memberikan izin yang sesuai pada kluster ke akun layanan ini. Contoh:

    kubectl create clusterrolebinding admin-user-binding --clusterrole cluster-admin --serviceaccount default:admin-user
    
  3. Mendapatkan token akun layanan menggunakan perintah berikut

    SECRET_NAME=$(kubectl get serviceaccount admin-user -o jsonpath='{$.secrets[0].name}')
    
    TOKEN=$(kubectl get secret ${SECRET_NAME} -o jsonpath='{$.data.token}' | base64 -d | sed $'s/$/\\\n/g')
    

Akses kluster Anda

  1. Siapkan kubeconfig berbasis Cluster Connect yang diperlukan untuk mengakses kluster Anda berdasarkan opsi autentikasi yang digunakan:

    • Jika menggunakan opsi autentikasi Azure Active Directory, setelah masuk ke Azure CLI menggunakan entitas Microsoft Azure AD yang diinginkan, 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 opsi autentikasi akun layanan, dapatkan Cluster Connect kubeconfig yang diperlukan untuk berkomunikasi dengan kluster dari mana saja:

      az connectedk8s proxy -n $CLUSTER_NAME -g $RESOURCE_GROUP --token $TOKEN
      
  2. 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

Saat melakukan permintaan ke kluster Kubernetes, jika entitas Azure AD yang digunakan merupakan bagian dari lebih dari 200 grup, kesalahan berikut diamati karena ini adalah batasan umum:

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. 

Untuk melewati kesalahan ini:

  1. Buat perwakilan layanan, yang cenderung tidak menjadi anggota lebih dari 200 grup.
  2. Masuk ke Azure CLI dengan kepala layanan sebelum menjalankan perintah.

Langkah berikutnya

Menyiapkan Azure AD RBAC pada kluster Anda