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 další akce, které se mají použít nebo spustit jakékoli 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 spustit jakékoli příkazy kubectl. azure/k8s-set-context
azure/k8s-bake Soubor manifestu Bake, který se má použít pro nasazení pomocí Helmu, kustomize nebo sestavení. 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 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

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 s ověřováním OpenID Connect.

Rozvětvování a aktualizace úložiště

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

  2. Aktualizujte image azure-vote-all-in-one-redis.yaml tak, aby používala azure-vote-front službu 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 ú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ů obsahující vaši službu 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í úložiště GitHub a vyberte Akce tajných>kódů zabezpečení a proměnných>.

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

    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.
    service_principal Hodnota .<clientId>
    service_principal_password Hodnota .<clientSecret>
    předplatné Hodnota .<subscriptionId>
    klient Hodnota .<tenantId>
    registr Název registru.
    úložiště azuredocs
    resource_group 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. Zdrojový kód rezervace používá k klonování úložiště akci rezervace GitHub Actions.
    2. Sestavení ACR používá akci sestavení služby 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í Azure k přihlášení k účtu Azure.
    4. Nastavení kontextu AKS používá k nastavení kontextu clusteru AKS kontext azure AKS.
    5. Instalační program kubectl pomocí akce Kubectl instalace Azure AKS nainstaluje kubectl do spouštěče.
    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 potvrdit, že akce funguje, aktualizujte azure-vote/azure-vote/config_file.cfg 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 ú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ů.