Nasazení CanIPull do clusteru Azure Kubernetes Service (AKS)

CanIPull je diagnostický nástroj pro Azure Kubernetes Service (AKS). Nasaďte ho pomocí Azure Copilot nebo kompletního manifestu Kubernetes v tomto článku. CanIPull přečte konfiguraci identity clusteru z jednoho vybraného uzlu, zkontroluje překlad DNS pro ověřovací server Azure Container Registry (ACR) a ověří počáteční výměnu tokenů ACR.

Tento článek ukazuje, jak spustit CanIPull pomocí Azure Copilot nebo manifestu Kubernetes. CanIPull v0.1.0 běží na jednom linuxovém uzlu AMD64 najednou. Opakujte kontrolu na jiných podporovaných uzlech a porovnejte jejich připojení nebo konfiguraci.

Important

CanIPull není kompletní test přijetí změn obrázku. Úspěšný výsledek nepotvrzuje přístup k úložišti, manifestu image nebo vrstvě image, protože CanIPull nevybere ani nevytáhne image.

Předpoklady

Než začnete, potřebujete:

  • Existující cluster AKS s alespoň jedním linuxovým uzlem AMD64.
  • Existující instance služby ACR, kterou chcete otestovat.

Pokud chcete nasadit CanIPull s Azure Copilot, potřebujete také přístup k Azure Copilot na portálu Azure.

Pokud chcete Nasadit CanIPull ručně, potřebujete také:

  • Azure CLI nainstalován.
  • Ověřená relace Azure CLI s oprávněními k získání přihlašovacích údajů uživatele pro cluster AKS a čtení instance ACR.
  • kubectl nakonfigurováno pro připojení ke clusteru AKS.
  • Oprávnění Kubernetes k vypsání uzlů na úrovni clusteru; vytváření, získávání, vypisování, sledování a odstraňování podů v oboru názvů default; a získávání protokolů podů v oboru názvů default.

Nasazení CanIPull s využitím Azure Copilot

Azure Copilot může vybrat cluster AKS, linuxový uzel AMD64 a server pro ověřování ACR a pak za vás nasadit CanIPull. Diagnostika zkontroluje překlad DNS a výměnu tokenu ACR z vybraného uzlu. Nevybere úložiště ani obraz a nemá k nim přístup.

  1. Na portálu Azure otevřete Copilot.
  2. Zadejte jednu z následujících výzev:
  • 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. Vyberte cluster AKS a linuxový uzel AMD64, ve kterém chcete spustit CanIPull.
  2. Vyberte instanci ACR, jejíž ověřovací server chcete použít pro kontroly DNS a výměny tokenů.
  3. Zkontrolujte výběry a potvrďte nasazení.
  4. Po dokončení nasazení postupujte podle pokynů a otevřete podokno příkazu Spustit.
  5. Projděte si záznamy CanIPull pro DNS, identitu clusteru a výsledky výměny tokenů ACR.

Další informace o tomto prostředí najdete v tématu Použití canIPull s Azure Copilot.

Nasadit CanIPull ručně

Pokud chcete Nasadit CanIPull ručně, připojte se ke clusteru, vyberte uzel AMD64 Linux, získejte plně kvalifikovaný přihlašovací server ACR, uložte úplný manifest podu uvedený v této části jako canipull.yamla spusťte kubectl apply --filename canipull.yaml. Jednorázový pod umožňuje zvolit cílový uzel a zkontrolovat diagnostické protokoly přímo pomocí kubectl.

Important

Manifest připojuje /etc/kubernetes/azure.json z vybraného uzlu. Tento soubor obsahuje konfiguraci citlivé identity clusteru. Nasaďte pod jenom v případě, že jste důvěryhodný správce clusteru. Nezvětšujte úroveň podrobností CanIPull, protože vyšší úrovně můžou tisknout přístupové tokeny. Jakmile test dokončíte, odstraňte ho.

Připojení ke clusteru a výběr uzlu

  1. Nastavte proměnné pro cluster AKS a instanci ACR.

    RESOURCE_GROUP=<resource-group>
    CLUSTER_NAME=<aks-cluster-name>
    ACR_NAME=<acr-name>
    
  2. Získejte přihlašovací údaje clusteru.

    az aks get-credentials \
      --resource-group $RESOURCE_GROUP \
      --name $CLUSTER_NAME
    
  3. Získejte přihlašovací server ACR. CanIPull očekává plně kvalifikovaný název přihlašovacího serveru, například myregistry.azurecr.io, nikoli název prostředku ACR.

    ACR_LOGIN_SERVER=$(az acr show \
      --name $ACR_NAME \
      --query loginServer \
      --output tsv)
    
    echo $ACR_LOGIN_SERVER
    
  4. Vypište linuxové uzly AMD64 a zvolte uzel, na kterém chcete spustit diagnostickou kontrolu. CanIPull v0.1.0 podporuje pouze uzly AMD64.

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

Vytvoření a nasazení kompletního manifestu CanIPull

  1. Zkopírujte úplný manifest do souboru s názvem canipull.yaml. Nahraďte <target-linux-node> a <acr-login-server> názvem uzlu a přihlašovacím serverem ACR uvedenými v předchozí části. Manifest připne CanIPull na vybraný uzel, zakáže připojení tokenu účtu služby a eskalaci oprávnění a připojí požadovanou konfiguraci uzlu jen pro čtení.

    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. Vytvořte pod.

    kubectl apply --filename canipull.yaml
    
  3. Počkejte, až se pod dokončí.

    kubectl get pod canipull --watch
    

    Stiskněte ctrl+C , když se stav podu změní na Completed nebo Error.

Zkontrolujte výsledky CanIPull

Zobrazení výstupu diagnostiky

kubectl logs canipull

Úspěšný test obsahuje následující výsledky:

  • Ověřovací server ACR se překládá prostřednictvím DNS.
  • CanIPull přečte konfiguraci Azure z uzlu.
  • Identita kubeletu clusteru nebo instanční objekt služby se může autentizovat.
  • Služba ACR přijímá počáteční výměnu tokenů.

Tyto výsledky potvrzují pouze to, že vybraný uzel dokáže přeložit název ověřovacího serveru ACR a že identita clusteru může dokončit počáteční výměnu tokenů. CanIPull nenačítá image ani neověřuje přístup k úložišti, manifestu image nebo vrstvě image.

Konečná zpráva o úspěchu nástroje používá širší formulaci než obor testu a podobá se následujícímu výstupu:

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

Chcete-li ověřit stažení image v rámci kompletního procesu, nasaďte pracovní zátěž, která používá image z cílového repozitáře.

Pokud test selže, zkontrolujte řádek protokolu označený FAILED. Mezi běžné příčiny patří:

  • Ověřovací server ACR se nepřeloží z vybraného uzlu.
  • Vybraný uzel neobsahuje /etc/kubernetes/azure.json.
  • Přihlašovací údaje identity clusteru nejsou platné.
  • ACR odmítne výměnu tokenu pro identitu služby kubelet nebo instanční objekt služby.

Pokud výměna tokenů selže, protože identita nemá oprávnění pro přístup k ACR, přečtěte si téma Ověřování pomocí ACR z AKS.

Vyčistěte zdroje

Odstraňte pod CanIPull a odeberte jeho přístup ke konfiguraci uzlu.

kubectl delete pod canipull