Sdílet prostřednictvím


Jak používat konektor služby ve službě Azure Kubernetes Service (AKS)

Azure Kubernetes Service (AKS) je jednou z výpočetních služeb podporovaných konektorem služeb. Cílem tohoto článku je pomoct pochopit:

  • Jaké operace se provádí v clusteru při vytváření připojení služby.
  • Jak používat konektor služby Kubernetes resources Service Connector.
  • Řešení potíží a zobrazení protokolů konektoru služby v clusteru AKS

Požadavky

Co dělá konektor služby Operations Service Connector v clusteru

V závislosti na různých cílových službách a typech ověřování vybraných při vytváření připojení ke službě provádí Konektor služby různé operace v clusteru AKS. Následující seznam uvádí možné operace provedené konektorem Service Connector.

Přidání rozšíření Kubernetes konektoru služby

Do clusteru se při prvním vytvoření připojení služby přidá rozšíření Kubernetes s názvem sc-extension . Později rozšíření pomáhá vytvářet prostředky Kubernetes v clusteru uživatele, kdykoli přijde požadavek na připojení služby do konektoru Service Connector. Rozšíření najdete v clusteru AKS na webu Azure Portal v nabídce Rozšíření a aplikace .

Snímek obrazovky webu Azure Portal a zobrazení rozšíření AKS

Rozšíření je také místo, kde jsou uložena metadata připojení clusteru. Odinstalace rozšíření znepřístupňuje všechna připojení v clusteru. Operátor rozšíření je hostovaný v oboru názvů sc-systemclusteru .

Vytváření prostředků Kubernetes

Service Connector vytvoří některé prostředky Kubernetes pro obor názvů, který uživatel zadal při vytváření připojení služby. Prostředky Kubernetes ukládají informace o připojení, které vyžadují definice úloh uživatele nebo kód aplikace pro komunikaci s cílovými službami. V závislosti na různých typech ověřování se vytvoří různé prostředky Kubernetes. Connection String Pro typy ověřování a Service Principal typy ověřování se vytvoří tajný klíč Kubernetes. Workload Identity Pro typ ověřování se kromě tajného kódu Kubernetes vytvoří také účet služby Kubernetes.

Prostředky Kubernetes vytvořené konektorem služby pro každé připojení služby najdete na webu Azure Portal v prostředku Kubernetes v nabídce Konektor služby.

Snímek obrazovky webu Azure Portal zobrazte prostředky Kubernetes vytvořené konektorem služby.

Odstranění připojení služby neodstraní přidružený prostředek Kubernetes. V případě potřeby odeberte prostředek ručně, například příkaz kubectl delete.

Povolení doplňku azureKeyvaultSecretsProvider

Pokud je cílová služba Azure Key Vault a ovladač CSI úložiště tajných kódů je povolený při vytváření připojení služby, konektor služby povolí azureKeyvaultSecretsProvider doplněk pro cluster.

Snímek obrazovky webu Azure Portal s povolením ovladače CSI pro keyvault při vytváření připojení

Postupujte podle kurzuPřipojení ke službě Azure Key Vault pomocí ovladače CSI a nastavte připojení ke službě Azure Key Vault pomocí ovladače CSI služby Secret Store.

Povolení vystavitele identity úloh a OpenID Connect (OIDC)

Pokud je Workload Identity typ ověřování při vytváření připojení služby, konektor Service Connector povolí identitu úloh a vystavitele OIDC pro cluster.

Snímek obrazovky webu Azure Portal s použitím identity úlohy k vytvoření připojení

Pokud je Workload Identitytyp ověřování , je potřeba spravovaná identita přiřazená uživatelem k vytvoření přihlašovacích údajů federované identity. Přečtěte si další informace o identitách úloh nebo si podle kurzunastavte připojení ke službě Azure Storage pomocí identity úloh.

Použití prostředků Kubernetes vytvořených konektorem služby

Různé prostředky Kubernetes se vytvoří, když se liší typ cílové služby a typ ověřování. Následující části ukazují, jak pomocí konektoru služby vytvořené prostředky Kubernetes v definici úloh clusteru a kódech aplikací.

Tajný kód Kubernetes

Tajný klíč Kubernetes se vytvoří, když je Connection String typ ověřování nebo Service Principal. Definice úlohy clusteru může odkazovat přímo na tajný klíč. Následující fragment kódu je příkladem.

apiVersion: batch/v1
kind: Job
metadata:
  namespace: default
  name: sc-sample-job
spec:
  template:
    spec:
      containers:
      - name: raw-linux
        image: alpine
        command: ['printenv']
        envFrom:
          - secretRef:
              name: <SecretCreatedByServiceConnector>
      restartPolicy: OnFailure

Kódy aplikací pak můžou využívat připojovací řetězec v tajném kódu z proměnné prostředí. V ukázkovém kódu se dozvíte více o názvech proměnných prostředí a o tom, jak je použít v kódech aplikace k ověření v různých cílových službách.

Účet služby Kubernetes

Účet služby Kubernetes i tajný klíč se vytvoří, když je Workload Identitytyp ověřování . Definice úlohy clusteru může odkazovat na účet služby a tajný klíč k ověření prostřednictvím identity úlohy. Následující fragment kódu poskytuje příklad.

apiVersion: batch/v1
kind: Job
metadata:
  namespace: default
  name: sc-sample-job
  labels:
    azure.workload.identity/use: "true"
spec:
  template:
    spec:
      serviceAccountName: <ServiceAccountCreatedByServiceConnector>
      containers:
      - name: raw-linux
        image: alpine
        command: ['printenv']
        envFrom:
          - secretRef:
              name: <SecretCreatedByServiceConnector>
      restartPolicy: OnFailure

V tomto kurzu se dozvíte, jak se připojit ke službě Azure Storage pomocí identity úloh.

Řešení potíží a zobrazení protokolů

Pokud dojde k chybě a nejde ji zmírnit opakovaným pokusem při vytváření připojení služby, můžou vám shromáždět další informace o řešení potíží následující metody.

Kontrola rozšíření Kubernetes konektoru služby

Rozšíření Kubernetes konektoru služby je postavené na rozšířeních clusteru Kubernetes s podporou Azure Arc. Pomocí následujících příkazů můžete zjistit, jestli během instalace nebo aktualizace rozšíření nedošlo k nějakým chybám.

  1. k8s-extension Nainstalujte rozšíření Azure CLI.
az extension add --name k8s-extension
  1. Získejte stav rozšíření service connectoru. statuses Zkontrolujte vlastnost ve výstupu příkazu a zjistěte, jestli nedošlo k nějakým chybám.
az k8s-extension show \
    --resource-group MyClusterResourceGroup \
    --cluster-name MyCluster \
    --cluster-type managedClusters \
    --name sc-extension

Kontrola protokolů clusteru Kubernetes

Pokud během instalace rozšíření dojde k chybě a chybová zpráva ve statuses vlastnosti neposkytuje dostatek informací o tom, co se stalo, můžete protokoly Kubernetes dále zkontrolovat pomocí následujících kroků.

  1. Připojte se ke clusteru AKS.

    az aks get-credentials \
        --resource-group MyClusterResourceGroup \
        --name MyCluster
    
  2. Rozšíření service Connectoru je nainstalované v oboru názvů sc-system prostřednictvím chartu Helm, zkontrolujte obor názvů a verzi helmu pomocí následujících příkazů.

    • Zkontrolujte, jestli obor názvů existuje.
    kubectl get ns
    
    • Zkontrolujte stav verze Helmu.
    helm list -n sc-system
    
  3. Během instalace nebo aktualizace rozšíření vytvoří úloha Kubernetes prostředky sc-job kubernetes pro připojení služby. Selhání spuštění úlohy obvykle způsobuje selhání rozšíření. Spuštěním následujících příkazů zkontrolujte stav úlohy. Pokud sc-job v sc-system oboru názvů neexistuje, měl by být úspěšně proveden. Tato úloha je navržená tak, aby se po úspěšném spuštění automaticky odstranila.

    • Zkontrolujte, jestli úloha existuje.
    kubectl get job -n sc-system
    
    • Získejte stav úlohy.
    kubectl describe job/sc-job -n sc-system
    
    • Prohlédněte si protokoly úloh.
    kubectl logs job/sc-job -n sc-system
    

Běžné chyby a zmírnění rizik

Konflikt

Chybová zpráva:Operation returned an invalid status code: Conflict.

Důvod: K této chybě obvykle dochází při pokusu o vytvoření připojení služby v době, kdy je cluster AKS (Azure Kubernetes Service) ve stavu aktualizace. Aktualizace připojení služby je v konfliktu s probíhající aktualizací. K tomu může dojít také v případě, že vaše předplatné není zaregistrované Microsoft.KubernetesConfiguration pro poskytovatele prostředků.

Snížení rizika:

  • Spuštěním následujícího příkazu se ujistěte, že je vaše předplatné zaregistrované pro Microsoft.KubernetesConfiguration poskytovatele prostředků.

    az provider register -n Microsoft.KubernetesConfiguration
    
  • Ujistěte se, že je váš cluster ve stavu Úspěch, a zkuste vytvoření zopakovat.

Timeout

Chybová zpráva:

  • Long running operation failed with status 'Failed'. Unable to get a response from the Agent in time.
  • Timed out waiting for the resource to come to a ready/completed state

Důvod: K této chybě často dochází, když se kvůli omezením prostředků nebo jiným problémům nepodaří naplánovat úlohu Kubernetes použitou k vytvoření nebo aktualizaci rozšíření clusteru Konektoru služby.

Zmírnění: Podrobné důvody najdete v protokolech clusteru Kubernetes a zjistěte je a vyřešte. Běžným problémem je, že kvůli preempci nejsou k dispozici žádné uzly. V takovém případě zvažte přidání dalších uzlů nebo povolení automatického škálování pro uzly.

Neoprávněný přístup k prostředkům

Chybová zpráva:You do not have permission to perform ... If access was recently granted, please refresh your credentials.

Důvod: Service Connector vyžaduje oprávnění k provozování prostředků Azure, ke kterému se chcete připojit, aby bylo možné provádět operace připojení vaším jménem. Tato chyba značí nedostatek potřebných oprávnění k některým prostředkům Azure.

Zmírnění: Zkontrolujte oprávnění k prostředkům Azure zadaným v chybové zprávě. Získejte požadovaná oprávnění a zkuste vytvoření zopakovat.

Chybějící registrace předplatného

Chybová zprávaThe subscription is not registered to use namespace 'Microsoft.KubernetesConfiguration':

Důvod: Konektor služby vyžaduje registraci Microsoft.KubernetesConfigurationpředplatného , což je poskytovatel prostředků pro rozšíření clusteru Kubernetes s podporou Azure Arc.

Zmírnění rizik: Spuštěním následujícího příkazu zaregistrujte Microsoft.KubernetesConfiguration poskytovatele prostředků. Další informace o chybách registrace poskytovatele prostředků najdete v tomto kurzu.

az provider register -n Microsoft.KubernetesConfiguration

Další problémy

Pokud výše uvedená omezení rizik váš problém nevyřeší, zkuste rozšíření clusteru konektoru služby resetovat tak, že ho odeberete a zkusíte vytvoření zopakovat. Očekává se, že tato metoda vyřeší většinu problémů souvisejících s rozšířením clusteru Service Connector.

K resetování rozšíření použijte následující příkazy rozhraní příkazového řádku:

az extension add --name k8s-extension

az k8s-extension delete \
    --resource-group <MyClusterResourceGroup> \
    --cluster-name <MyCluster> \
    --cluster-type managedClusters \
    --name sc-extension

Další kroky

Zjistěte, jak integrovat různé cílové služby a přečíst si o jejich nastavení konfigurace a metodách ověřování.