Azure Arc özellikli Kubernetes kümelerine güvenli bir şekilde bağlanmak için küme bağlantısı kullanma

Küme bağlantısı ile, güvenlik duvarında herhangi bir gelen bağlantı noktasının etkinleştirilmesine gerek kalmadan Azure Arc özellikli Kubernetes kümelerine her yerden güvenli bir şekilde bağlanabilirsiniz.

Azure Arc özellikli Kubernetes kümesine apiserver erişim aşağıdaki senaryoları etkinleştirir:

Başlamadan önce küme bağlantısı özelliğinin kavramsal genel bakışını gözden geçirin.

Önkoşullar

  • Azure CLI'yi en son sürüme yükleyin veya güncelleştirin .

  • Azure CLI uzantısının connectedk8s en son sürümünü yükleyin:

    az extension add --name connectedk8s
    

    Uzantıyı zaten yüklediyseniz uzantıyı connectedk8s en son sürüme güncelleştirin:

    az extension update --name connectedk8s
    
  • Bu belgede kullanılan ortam değişkenlerini ayarlamak için yer tutucuları değiştirin ve aşağıdaki komutu çalıştırın:

    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)
    
  • Arc özellikli Kubernetes için ağ gereksinimlerini karşılamaya ek olarak, giden erişim için bu uç noktaları etkinleştirin:

    Uç nokta Bağlantı noktası
    *.servicebus.windows.net 443
    guestnotificationservice.azure.com, *.guestnotificationservice.azure.com 443

    Not

    Joker karakteri *.servicebus.windows.net belirli uç noktalara çevirmek için komutunu \GET https://guestnotificationservice.azure.com/urls/allowlist?api-version=2020-01-01&location=<location>kullanın. Bu komut içinde, yer tutucu için <location> bölge belirtilmelidir.

Bölgesel uç noktanın bölge kesimini almak için Azure bölge adından tüm alanları kaldırın. Örneğin, Doğu ABD 2 bölgesi, bölge adı şeklindedir eastus2.

Örneğin: *.<region>.arcdataservices.com Doğu ABD 2 bölgesinde olmalıdır *.eastus2.arcdataservices.com .

Tüm bölgelerin listesini görmek için şu komutu çalıştırın:

az account list-locations -o table
Get-AzLocation | Format-Table

Kimlik doğrulaması kurulumu

Mevcut Arc özellikli kümede, Microsoft Entra kimlik doğrulaması veya bir hizmet hesabı belirteci ile ClusterRoleBinding oluşturun.

Microsoft Entra kimlik doğrulama seçeneği

  1. objectId Microsoft Entra varlığınız ile ilişkili öğesini alın.

    • Microsoft Entra kullanıcı hesabı için:

      AAD_ENTITY_OBJECT_ID=$(az ad signed-in-user show --query id -o tsv)
      
    • Microsoft Entra uygulaması için:

      AAD_ENTITY_OBJECT_ID=$(az ad sp show --id <id> --query id -o tsv)
      
  2. Varlığa uygun izinlerle yetki verin.

    • Kümede yetkilendirme denetimleri için Kubernetes yerel ClusterRoleBinding veya RoleBinding kullanıyorsanız, kubeconfig dosya doğrudan erişim için kümenizin üzerine geliyorsa apiserver , bu kümeye erişmesi gereken Microsoft Entra varlığıyla (hizmet sorumlusu veya kullanıcı) eşlenmiş bir tane oluşturabilirsiniz. Örneğin:

      kubectl create clusterrolebinding demo-user-binding --clusterrole cluster-admin --user=$AAD_ENTITY_OBJECT_ID
      
    • Kümede yetkilendirme denetimleri için Azure RBAC kullanıyorsanız, Microsoft Entra varlığına eşlenmiş uygun bir Azure rol ataması oluşturabilirsiniz. Örneğin:

      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
      

Hizmet hesabı belirteci kimlik doğrulama seçeneği

  1. kubeconfig Dosya Kubernetes kümenizin üzerine gelin apiserver ve bir hizmet hesabı oluşturmak için bu komutu çalıştırın. Bu örnek, hizmet hesabını varsayılan ad alanında oluşturur, ancak yerine defaultbaşka bir ad alanı kullanabilirsiniz.

    kubectl create serviceaccount demo-user -n default
    
  2. Bu hizmet hesabına küme üzerinde uygun izinleri vermek için ClusterRoleBinding oluşturun. İlk komutta farklı bir ad alanı kullandıysanız, yerine buraya defaultyazın.

    kubectl create clusterrolebinding demo-user-binding --clusterrole cluster-admin --serviceaccount default:demo-user
    
  3. Hizmet hesabı belirteci oluşturma:

    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')
    
  4. Konsola çıkış yapmak için belirteci alma

    echo $TOKEN
    

İstemci cihazından kümenize erişme

Artık kümeye farklı bir istemciden erişebilirsiniz. Aşağıdaki adımları başka bir istemci cihazında çalıştırın.

  1. Microsoft Entra kimlik doğrulamasını veya hizmet hesabı belirteci kimlik doğrulamasını kullanarak oturum açın.

  2. Kümeyle iletişim kurmak için gereken küme bağlantısını kubeconfig , kullanılan kimlik doğrulama seçeneğine bağlı olarak her yerden (kümeyi çevreleyen güvenlik duvarının dışından bile) alın:

    • Microsoft Entra kimlik doğrulaması kullanılıyorsa:

      az connectedk8s proxy -n $CLUSTER_NAME -g $RESOURCE_GROUP
      
    • Hizmet hesabı belirteci kimlik doğrulaması kullanılıyorsa:

      az connectedk8s proxy -n $CLUSTER_NAME -g $RESOURCE_GROUP --token $TOKEN
      

      Not

      Bu komut proxy'yi açar ve geçerli kabuğu engeller.

  3. Farklı bir kabuk oturumunda, kümeye istek göndermek için kullanın kubectl :

    kubectl get pods -A
    

Şimdi kümeden ad alanı altındaki default tüm podların listesini içeren bir yanıt görmeniz gerekir.

Bilinen sınırlamalar

Arc özellikli Kubernetes aracı sürümünüzü denetlemek için kullanın az connectedk8s show .

Kubernetes kümesine istekler yaparken, kullanılan Microsoft Entra varlığı 200'den fazla grubun parçasıysa aşağıdaki hatayı görebilirsiniz:

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.

Bu bilinen bir sınırlamadır. Bu hatayı geçmek için:

  1. 200'den fazla grubun üyesi olma olasılığı daha düşük olan bir hizmet sorumlusu oluşturun.
  2. Komutunu çalıştırmadan önce hizmet sorumlusuyla Azure CLI'daaz connectedk8s proxy oturum açın.

Sonraki adımlar