Sestavení, testování a nasazení kontejnerů do Azure Kubernetes Service (AKS) pomocí GitHub Actions

GitHub Actions vám poskytuje flexibilitu při vytváření automatizovaného pracovního postupu vývoje životního cyklu softwaru. K nasazení do kontejnerů z Azure Container Registry (ACR) do Azure Kubernetes Service (AKS) s 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 Description Další podrobnosti
azure/aks-set-context Nastavte kontext cílového clusteru AKS pro další akce, které se mají použít, nebo spusťte příkazy kubectl. azure/aks-set-context
azure/k8s-set-context Nastavte kontext cílového clusteru Kubernetes pro další akce, které se mají použít, nebo spusťte příkazy kubectl. azure/k8s-set-context
azure/k8s-bake Bake soubor manifestu pro nasazení pomocí Helm, kustomize nebo kompose. azure/k8s-bake
azure/k8s-create-secret V clusteru Kubernetes vytvořte obecný tajný klíč nebo tajný klíč docker-registry. azure/k8s-create-secret
azure/k8s-deploy Nasazení manifestů do clusterů Kubernetes azure/k8s-deploy
azure/k8s-lint Ověřte nebo lintujte soubory manifestu. azure/k8s-lint
azure/setup-helm Nainstalujte na runner konkrétní verzi binárního souboru Helm. azure/setup-helm
azure/setup-kubectl Nainstalujte na runner konkrétní verzi kubectl. azure/setup-kubectl
azure/k8s-artifact-substitute Aktualizujte značku nebo hodnotu hash pro image kontejneru. azure/k8s-artifact-substitute
azure/aks-create-action Vytvořte cluster AKS pomocí Terraformu. azure/aks-create-action
azure/aks-github-runner Nastavte agenty v místním prostředí pro GitHub Actions. azure/aks-github-runner
azure/acr-build Vytváření kontejnerů pomocí ACR azure/acr-build

Použití GitHub Actions s AKS

Například můžete použít GitHub Actions k nasazení aplikace do clusteru AKS pokaždé, když se změna odešle do úložiště GitHub. Tento příklad používá aplikaci Azure Vote .

Poznámka

Tento příklad používá instanční objekt k ověřování pomocí clusteru ACR a AKS. 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í k Azure s ověřováním OpenID Connect.

Fork a aktualizace ú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 se pro azure-vote-front image používala služba ACR. <registryName> nahraďte názvem vašeho registru.

    ...
          containers:
          - name: azure-vote-front
            image: <registryName>.azurecr.io/azuredocs/azure-vote-front:v1
    ...
    
  3. Potvrďte aktualizaci 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 Contributor rolí 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:

    {
      "clientId": <clientId>,
      "clientSecret": <clientSecret>,
      "subscriptionId": <subscriptionId>,
      "tenantId": <tenantId>,
      ...
    }
    
  2. Přejděte do nastavení úložiště GitHub a vyberteAkce tajných klíčů a proměnných>zabezpečení>.

  3. U každého tajného kódu vyberte Nový tajný klíč úložiště a zadejte název a hodnotu tajného klíče.

    Název tajného kódu Hodnota tajného kódu
    AZURE_CREDENTIALS Celý výstup JSON z az ad sp create-for-rbac příkazu
    service_principal Hodnota .<clientId>
    service_principal_password Hodnota .<clientSecret>
    předplatné Hodnota .<subscriptionId>
    Nájemce Hodnota .<tenantId>
    registry Název registru.
    úložiště azuredocs
    resource_group Název vaší skupiny prostředků.
    cluster_name Název vašeho clusteru.

Další informace o vytváření tajných kódů najdete 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á aktivuje akci. 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. Zdrojový kód rezervace používá akci rezervace GitHub Actions k naklonování úložiště.
    2. ACR Build používá akci sestavení Azure Container Registry k sestavení image a jejímu nahrání do registru.
    3. Přihlášení k Azure používá akci přihlášení k Azure k přihlášení k vašemu účtu Azure.
    4. Nastavení kontextu AKS používá akci Azure AKS Nastavit kontext k nastavení kontextu pro cluster AKS.
    5. Instalace kubectl pomocí akce Kubectl instalace Azure AKS Kubectl nainstaluje kubectl do vašeho runneru.
    6. Nasazení do AKS používá akci nasazení Azure Kubernetes k nasazení aplikace do clusteru Kubernetes.
  2. .github/workflows/main.yml Potvrďte soubor do úložiště.

  3. Pokud chcete ověřit, že akce funguje, aktualizujte azure-vote/azure-vote/config_file.cfg do souboru následující obsah:

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

  5. V úložišti vyberte Akce a ověřte, že pracovní postup běží. Pak ověřte, že má pracovní postup zelené zaškrtnutí a že se aktualizovaná aplikace nasadí do clusteru.

Další kroky

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