CanIPull'ı bir Azure Kubernetes Service (AKS) kümesine dağıtma

CanIPull, Azure Kubernetes Service (AKS) için bir tanılama aracıdır. Bunu, Azure Copilot'u veya bu makaledeki eksiksiz Kubernetes bildirimini kullanarak dağıtın. CanIPull seçilen bir düğümden küme kimliği yapılandırmasını okur, Azure Container Registry (ACR) kimlik doğrulama sunucusu için DNS çözümlemesini denetler ve ilk ACR belirteci değişimini doğrular.

Bu makalede, Azure Copilot veya Kubernetes bildirimi kullanarak CanIPull'ı çalıştırma işlemi gösterilmektedir. CanIPull v0.1.0 aynı anda bir AMD64 Linux düğümünde çalışır. Bağlantılarını veya yapılandırmasını karşılaştırmak için desteklenen diğer düğümlerde denetimi yineleyin.

Important

CanIPull uçtan uca görüntü çekme testi değildir. Başarılı bir sonuç bir depoya, görüntü bildirimine veya görüntü katmanına erişimi onaylamaz çünkü CanIPull bir görüntüyü seçmez veya çekmez.

Prerequisites

Başlamadan önce şunları yapmanız gerekir:

  • En az bir AMD64 Linux düğümüne sahip mevcut bir AKS kümesi.
  • Test etmek istediğiniz mevcut bir ACR örneği.

CanIPull'ı Azure Copilot ile dağıtmak için Azure portalında Azure Copilot erişiminiz de olmalıdır.

CanIPull'ı el ile dağıtmak için şunları da yapmanız gerekir:

  • Azure CLI yüklendi.
  • AKS kümesi için kullanıcı kimlik bilgilerini alma ve ACR örneğini okuma izinlerine sahip kimliği doğrulanmış bir Azure CLI oturumu.
  • kubectl AKS kümenize bağlanacak şekilde yapılandırıldı.
  • Küme kapsamında düğümleri listeleme; default ad alanında pod oluşturma, alma, listeleme, izleme ve silme; ve default ad alanında pod günlüklerini alma için Kubernetes izinleri.

CanIPull'ı Azure Copilot ile dağıtma

Azure Copilot AKS kümesini, AMD64 Linux düğümünü ve ACR kimlik doğrulama sunucusunu seçip CanIPull'ı sizin için dağıtabilir. Tanılama, seçilen düğümden DNS çözümlemesini ve ACR belirteci değişimini denetler. Bir depoyu veya imajı seçmez ya da bunlara erişmez.

  1. Azure portalında Copilot açın.
  2. Aşağıdaki istemlerden birini girin:
  • Help me deploy CanIPull to my AKS cluster.
  • Can an AMD64 Linux node in my AKS cluster resolve and authenticate to a specific Azure Container Registry?
  • Help me test ACR token exchange from an AMD64 Linux node in my AKS cluster.
  1. CanIPull'ın çalışmasını istediğiniz AKS kümesini ve AMD64 Linux düğümünü seçin.
  2. DNS ve belirteç değişim denetimleri için kimlik doğrulama sunucusunu kullanmak istediğiniz ACR örneğini seçin.
  3. Seçimleri gözden geçirin ve dağıtımı onaylayın.
  4. Dağıtım tamamlandıktan sonra komut bölmesini açmak için istemi izleyin.
  5. DNS, küme kimliği ve ACR belirteci değişim sonuçları için CanIPull günlüklerini gözden geçirin.

Bu deneyim hakkında daha fazla bilgi için bkz. Azure Copilot ile CanIPull kullanma.

CanIPull'ı manuel olarak dağıtın

CanIPull'ı el ile dağıtmak için kümeye bağlanın, bir AMD64 Linux düğümü seçin, tam etki alanı adına sahip ACR oturum açma sunucusunu alın, bu bölümde sağlanan pod bildirimini eksiksiz olarak canipull.yaml olarak kaydedin ve kubectl apply --filename canipull.yaml komutunu çalıştırın. Tek kullanımlık pod, hedef düğümü seçmenize ve tanılama günlüklerini kubectl ile doğrudan incelemenize olanak tanır.

Important

Manifest, seçili düğümden /etc/kubernetes/azure.json mount eder. Bu dosya hassas küme kimliği yapılandırmasını içerir. Podu yalnızca güvenilir bir küme yöneticisiyseniz dağıtın. CanIPull ayrıntı düzeyini artırmayın; çünkü daha yüksek düzeyler erişim belirteçlerini yazdırabilir. Testi tamamlar tamamlamaz podu silin.

Kümeye bağlanın ve bir düğüm seçin

  1. AKS kümesi ve ACR örneği için değişkenleri ayarlayın.

    RESOURCE_GROUP=<resource-group>
    CLUSTER_NAME=<aks-cluster-name>
    ACR_NAME=<acr-name>
    
  2. Küme kimlik bilgilerini alın.

    az aks get-credentials \
      --resource-group $RESOURCE_GROUP \
      --name $CLUSTER_NAME
    
  3. ACR oturum açma sunucusunu alın. CanIPull, ACR kaynak adı yerine myregistry.azurecr.io gibi tam nitelikli oturum açma sunucusunu bekler.

    ACR_LOGIN_SERVER=$(az acr show \
      --name $ACR_NAME \
      --query loginServer \
      --output tsv)
    
    echo $ACR_LOGIN_SERVER
    
  4. AMD64 Linux düğümlerini listeleyin ve tanılama denetimini çalıştırmak istediğiniz düğümü seçin. CanIPull v0.1.0 yalnızca AMD64 düğümlerini destekler.

    kubectl get nodes \
      --selector kubernetes.io/os=linux,kubernetes.io/arch=amd64 \
      --output wide
    

CanIPull bildiriminin tamamını oluşturma ve dağıtma

  1. Bildirimin tamamını adlı canipull.yamlbir dosyaya kopyalayın. <acr-login-server> ve <target-linux-node> yer tutucularını önceki bölümdeki düğüm adı ve ACR oturum açma sunucusuyla değiştirin. Bildirim CanIPull'ı seçili düğüme sabitler, hizmet hesabı belirteci bağlamasını ve ayrıcalık yükseltmesini devre dışı bırakır ve gerekli düğüm yapılandırmasını salt okunur olarak bağlar.

    apiVersion: v1
    kind: Pod
    metadata:
      name: canipull
      namespace: default
      labels:
        app: canipull
    spec:
      automountServiceAccountToken: false
      nodeName: <target-linux-node>
      restartPolicy: Never
      containers:
        - name: canipull
          image: mcr.microsoft.com/aks/canipull:v0.1.0
          imagePullPolicy: IfNotPresent
          args:
            - <acr-login-server>
          securityContext:
            allowPrivilegeEscalation: false
            capabilities:
              drop:
                - ALL
            readOnlyRootFilesystem: true
          volumeMounts:
            - name: azure-config
              mountPath: /etc/kubernetes/azure.json
              readOnly: true
      volumes:
        - name: azure-config
          hostPath:
            path: /etc/kubernetes/azure.json
            type: File
    
  2. Pod'u oluşturun.

    kubectl apply --filename canipull.yaml
    
  3. Pod'un bitmesini bekleyin.

    kubectl get pod canipull --watch
    

    Error Completed C tuşlarına, pod durumu + veya olarak değiştiğinde basın.

CanIPull sonuçlarını gözden geçirme

Tanılama çıkışını görüntüleyin.

kubectl logs canipull

Başarılı bir test aşağıdaki sonuçları içerir:

  • ACR kimlik doğrulama sunucusu DNS aracılığıyla çözümlenmektedir.
  • CanIPull düğümden Azure yapılandırmasını okur.
  • Kümenin kubelet kimliği veya hizmet sorumlusu kimlik doğrulaması yapabilir.
  • ACR, ilk belirteç değişimini kabul eder.

Bu sonuçlar yalnızca seçilen düğümün ACR kimlik doğrulama sunucusunu çözümleyebildiğini ve küme kimliğinin ilk belirteç değişimini tamamlayabildiğini onaylar. CanIPull bir görüntüyü çekmez veya bir depoya, görüntü bildirimine veya görüntü katmanına erişimi doğrulamaz.

Aracın son başarı iletisi, testin kapsamından daha geniş bir ifade kullanır ve aşağıdaki çıktıya benzer:

Your cluster can pull images from <acr-login-server>!

Uçtan uca görüntü çekme işlemini doğrulamak için hedef depodaki bir görüntüye başvuran bir iş yükü dağıtın.

Test başarısız olursa, FAILED ile işaretlenen günlük satırını gözden geçirin. Yaygın nedenler şunlardır:

  • ACR kimlik doğrulama sunucusu seçilen düğümden çözümlenmiyor.
  • Seçili düğüm /etc/kubernetes/azure.json içermiyor.
  • Küme kimliği kimlik bilgileri geçerli değil.
  • ACR, kubelet kimliği veya hizmet sorumlusu için belirteç değişimini reddeder.

Belirteç alışverişi, kimliğin ACR’ye erişim yetkisi olmadığından başarısız olursa AKS’den ACR’ye kimlik doğrulama bölümüne bakın.

Kaynakları temizle

CanIPull podunu silin ve düğüm yapılandırmasına erişimini kaldırın.

kubectl delete pod canipull