Sdílet prostřednictvím


Sestavování, testování a nasazování kontejnerů do služby Azure Kubernetes Service (AKS) pomocí GitHub Actions

GitHub Actions nabízí flexibilitu při vytváření pracovního postupu životního cyklu automatizovaného vývoje softwaru. K nasazení do kontejnerů ze služby Azure Container Registry (ACR) do služby Azure Kubernetes Service (AKS) pomocí GitHub Actions můžete použít několik akcí Kubernetes.

Požadavky

GitHub Actions pro AKS

Pomocí GiHub Actions můžete automatizovat pracovní postupy vývoje softwaru z GitHubu. Další informace najdete v tématu GitHub Actions pro Azure.

Následující tabulka uvádí dostupné akce pro AKS:

Název Popis Další podrobnosti
azure/aks-set-context Nastavte kontext cílového clusteru AKS pro použití jinými akcemi nebo pro spuštění příkazů kubectl. azure/aks-set-context (nastavit kontext)
azure/k8s-set-context Nastavte kontext cílového clusteru Kubernetes pro další akce nebo spuštění jakýchkoli příkazů kubectl. azure/k8s-set-context
azure/k8s-bake Vytvořte soubor manifestu pro nasazení pomocí Helmu, kustomize nebo kompose. azure/k8s-bake
azure/k8s-create-secret Vytvořte v clusteru Kubernetes obecný tajný kód nebo tajný kód registru Dockeru. azure/k8s-create-secret
azure/k8s-deploy Nasaďte manifesty do clusterů Kubernetes. azure/k8s-deploy
azure/k8s-lint Ověřte nebo lintujte soubory manifestu. azure/k8s-lint
azure/setup-helm Nainstalujte na spouštěč konkrétní verzi binárního souboru Helm. azure/setup-helm
azure/setup-kubectl Nainstalujte na spouštěč konkrétní verzi kubectl. azure/setup-kubectl
azure/k8s-artifact-substitute Aktualizujte značku nebo digest pro kontejnerové obrazy. azure/k8s-artifact-substitute
azure/aks-create-action Vytvořte cluster AKS pomocí Terraformu. azure/aks-create-action
azure/aks-github-runner Nastavte vlastní hostované agenty pro GitHub Actions. azure/aks-github-runner
azure/acr-build Vytváření kontejnerů pomocí ACR azure/acr-build

Použití GitHub Actions s AKS

Jako příklad můžete pomocí GitHub Actions nasadit aplikaci do clusteru AKS při každém nasdílení změn do úložiště GitHub. V tomto příkladu se používá aplikace Azure Vote .

Poznámka:

V tomto příkladu se k ověřování s clusterem ACR a AKS používá instanční objekt. Alternativně můžete nakonfigurovat Open ID Connect (OIDC) a aktualizovat azure/login akci tak, aby používala OIDC. Další informace najdete v tématu Nastavení přihlášení Azure pomocí autentizace OpenID Connect.

Forkovat a aktualizovat úložiště

  1. Přejděte do úložiště Azure Vote a vyberte Fork.

  2. Aktualizujte azure-vote-all-in-one-redis.yaml, aby používal vaše ACR pro obraz azure-vote-front. <registryName> nahraďte názvem vašeho registru.

    ...
          containers:
          - name: azure-vote-front
            image: <registryName>.azurecr.io/azuredocs/azure-vote-front:v1
    ...
    
  3. Uložte aktualizovaný azure-vote-all-in-one-redis.yaml do svého úložiště.

Vytváření tajných kódů

  1. Pomocí příkazu vytvořte instanční objekt pro přístup ke skupině prostředků s rolí Contributor pomocí az ad sp create-for-rbac. Nahraďte <SUBSCRIPTION_ID> ID předplatného vašeho účtu Azure a <RESOURCE_GROUP> názvem skupiny prostředků, která obsahuje váš ACR.

    az ad sp create-for-rbac \
        --name "ghActionAzureVote" \
        --scope /subscriptions/<SUBSCRIPTION_ID>/resourceGroups/<RESOURCE_GROUP> \
        --role Contributor \
        --json-auth
    

    Výstup by měl vypadat podobně jako v následujícím příkladu výstupu:

    {
      "clientId": <clientId>,
      "clientSecret": <clientSecret>,
      "subscriptionId": <subscriptionId>,
      "tenantId": <tenantId>,
      ...
    }
    
  2. Přejděte do nastavení vašeho úložiště GitHub a vyberte Zabezpečení>Tajnosti a proměnné>Akce.

  3. Pro každý tajný údaj vyberte Nový tajný údaj úložiště a zadejte jeho název a hodnotu.

    Název tajného klíče Hodnota tajného klíče
    AZURE_CREDENTIALS Celý výstup JSON z az ad sp create-for-rbac příkazu.
    služební principál Hodnota <clientId>.
    service_principal_password Hodnota <clientSecret>.
    odběr Hodnota <subscriptionId>.
    klient Hodnota <tenantId>.
    registr Název registru.
    úložiště azuredocs
    skupina zdrojů Název vaší skupiny prostředků
    cluster_name Název clusteru.

Další informace o vytváření tajných kódů naleznete v tématu Šifrované tajné kódy.

Vytvoření souboru akcí

  1. V úložišti vytvořte .github/workflows/main.yml a vložte následující obsah:

    name: build_deploy_aks
    on:
      push:
        paths:
          - "azure-vote/**"
    jobs:
      build:
        runs-on: ubuntu-latest
        steps:
          - name: Checkout source code 
            uses: actions/checkout@v3
          - name: ACR build
            id: build-push-acr
            uses: azure/acr-build@v1
            with:
              service_principal: ${{ secrets.service_principal }}
              service_principal_password: ${{ secrets.service_principal_password }}
              tenant: ${{ secrets.tenant }}
              registry: ${{ secrets.registry }}
              repository: ${{ secrets.repository }}
              image:  azure-vote-front
              folder: azure-vote
              branch: master
              tag: ${{ github.sha }}
          - name: Azure login
            id: login
            uses: azure/login@v1.4.3
            with:
              creds: ${{ secrets.AZURE_CREDENTIALS }}
          - name: Set AKS context
            id: set-context
            uses: azure/aks-set-context@v3
            with:
              resource-group: '${{ secrets.resource_group }}' 
              cluster-name: '${{ secrets.cluster_name }}'
          - name: Setup kubectl
            id: install-kubectl
            uses: azure/setup-kubectl@v3
          - name: Deploy to AKS
            id: deploy-aks
            uses: Azure/k8s-deploy@v4
            with:
              namespace: 'default'
              manifests: |
                 azure-vote-all-in-one-redis.yaml
              images: '${{ secrets.registry }}.azurecr.io/${{ secrets.repository }}/azure-vote-front:${{ github.sha }}'
              pull-images: false 
    

    Oddíl on obsahuje událost, která akci aktivuje. V ukázkovém souboru se akce aktivuje při vložení změny do azure-vote adresáře.

    Oddíl steps obsahuje každou samostatnou akci:

    1. Vycheckoutování zdrojového kódu používá akci GitHub Actions Checkout k naklonování úložiště.
    2. Sestavení ACR využívá akci sestavení Azure Container Registry k vytvoření obrazu a jeho nahrání do registru.
    3. Přihlášení k Azure používá akci přihlášení Azure k přihlášení k účtu Azure.
    4. Nastavení kontextu AKS používá akci Nastavení kontextu Azure AKS pro nastavení kontextu vašeho AKS clusteru.
    5. Nastavení kubectl používá Azure AKS Setup Kubectl Action k instalaci kubectl na váš spouštěč.
    6. Nasazení do AKS používá akci nasazení Azure Kubernetes k nasazení aplikace do clusteru Kubernetes.
  2. Vložte soubor .github/workflows/main.yml do svého úložiště.

  3. Pokud chcete potvrdit, že akce funguje, aktualizujte azure-vote/azure-vote/config_file.cfg následujícím obsahem.

    # UI Configurations
    TITLE = 'Azure Voting App'
    VOTE1VALUE = 'Fish'
    VOTE2VALUE = 'Dogs'
    SHOWHOST = 'false'
    
  4. Uložte aktualizovaný azure-vote/azure-vote/config_file.cfg do svého úložiště.

  5. V úložišti vyberte Akce a potvrďte, že je spuštěný pracovní postup. Pak ověřte, že pracovní postup má zelenou značku zaškrtnutí a aktualizovaná aplikace se nasadí do clusteru.

Další kroky

Projděte si následující úvodní pracovní postupy pro AKS. Další informace naleznete v tématu Použití úvodních pracovních postupů.