Delen via


Containers bouwen, testen en implementeren in Azure Kubernetes Service (AKS) met behulp van GitHub Actions

GitHub Actions biedt u de flexibiliteit om een geautomatiseerde werkstroom voor de levenscyclus van softwareontwikkeling te bouwen. U kunt meerdere Kubernetes-acties gebruiken om te implementeren in containers van Azure Container Registry (ACR) naar Azure Kubernetes Service (AKS) met GitHub Actions.

Vereisten

  • Een Azure-account met een actief abonnement. Als u nog geen account hebt, maakt u gratis een account.
  • Een GitHub-account. Als u geen account hebt, kunt u zich registreren voor een gratis account.
  • Een bestaand AKS-cluster met een gekoppelde ACR. Zie Verifiëren met ACR vanuit AKS als u er nog geen hebt.

GitHub Actions voor AKS

Met GiHub Actions kunt u uw werkstromen voor softwareontwikkeling automatiseren vanuit GitHub. Zie GitHub Actions voor Azure voor meer informatie.

De volgende tabel bevat de beschikbare acties voor AKS:

Name Beschrijving Meer informatie
azure/aks-set-context Stel de AKS-doelclustercontext in voor andere acties om kubectl-opdrachten te gebruiken of uit te voeren. azure/aks-set-context
azure/k8s-set-context Stel de Kubernetes-doelclustercontext in voor andere acties om kubectl-opdrachten te gebruiken of uit te voeren. azure/k8s-set-context
azure/k8s-bake Bak het manifestbestand dat moet worden gebruikt voor implementaties met behulp van Helm, kustomize of kompose. azure/k8s-bake
azure/k8s-create-secret Maak een algemeen geheim of docker-registergeheim in het Kubernetes-cluster. azure/k8s-create-secret
azure/k8s-deploy Implementeer manifesten in Kubernetes-clusters. azure/k8s-deploy
azure/k8s-lint Valideer/lint uw manifestbestanden. azure/k8s-lint
azure/setup-helm Installeer een specifieke versie van Helm binary op de runner. azure/setup-helm
azure/setup-kubectl Installeer een specifieke versie van kubectl op de runner. azure/setup-kubectl
azure/k8s-artifact-substitute Werk de tag of samenvatting voor containerinstallatiekopieën bij. azure/k8s-artifact-substitute
azure/aks-create-action Maak een AKS-cluster met behulp van Terraform. azure/aks-create-action
azure/aks-github-runner Stel zelf-hostende agents in voor GitHub Actions. azure/aks-github-runner
azure/acr-build Bouw containers met behulp van ACR. azure/acr-build

GitHub Actions gebruiken met AKS

U kunt bijvoorbeeld GitHub Actions gebruiken om een toepassing in uw AKS-cluster te implementeren telkens wanneer een wijziging naar uw GitHub-opslagplaats wordt gepusht. In dit voorbeeld wordt de Azure Vote-toepassing gebruikt.

Notitie

In dit voorbeeld wordt een service-principal gebruikt voor verificatie met uw ACR- en AKS-cluster. U kunt ook Open ID Connect (OIDC) configureren en de azure/login actie bijwerken om OIDC te gebruiken. Zie Azure-aanmelding instellen met OpenID Connect-verificatie voor meer informatie.

Fork en werk de opslagplaats bij

  1. Navigeer naar de Azure Vote-opslagplaats en selecteer Fork.

  2. Werk het azure-vote-all-in-one-redis.yaml bestand bij om uw ACR voor de azure-vote-front installatiekopieën te gebruiken. Vervang <registryName> door de naam van uw register.

    ...
          containers:
          - name: azure-vote-front
            image: <registryName>.azurecr.io/azuredocs/azure-vote-front:v1
    ...
    
  3. Voer de bijgewerkte gegevens azure-vote-all-in-one-redis.yaml door naar uw opslagplaats.

Geheimen maken

  1. Maak een service-principal voor toegang tot uw resourcegroep met de Contributor rol met behulp van de az ad sp create-for-rbac opdracht. Vervang <SUBSCRIPTION_ID> door de abonnements-id van uw Azure-account en <RESOURCE_GROUP> door de naam van de resourcegroep die uw ACR bevat.

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

    De uitvoer moet er ongeveer uitzien als in de volgende voorbeelduitvoer:

    {
      "clientId": <clientId>,
      "clientSecret": <clientSecret>,
      "subscriptionId": <subscriptionId>,
      "tenantId": <tenantId>,
      ...
    }
    
  2. Navigeer naar de instellingen van uw GitHub-opslagplaats en selecteer Beveiligingsgeheimen>>en variabelenacties.

  3. Voor elk geheim selecteert u Nieuw opslagplaatsgeheim en voert u de naam en waarde van het geheim in.

    Geheime naam Geheime waarde
    AZURE_CREDENTIALS De volledige JSON-uitvoer van de az ad sp create-for-rbac opdracht.
    service_principal De waarde van <clientId>.
    service_principal_password De waarde van <clientSecret>.
    abonnement De waarde van <subscriptionId>.
    tenant De waarde van <tenantId>.
    register De naam van het register.
    repository azuredocs
    resource_group De naam van uw resourcegroep.
    cluster_name De naam van het cluster.

Zie Versleutelde geheimen voor meer informatie over het maken van geheimen.

Actiebestand maken

  1. Maak in uw opslagplaats een .github/workflows/main.yml en plak de volgende inhoud:

    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 
    

    De on sectie bevat de gebeurtenis waarmee de actie wordt geactiveerd. In het voorbeeldbestand wordt de actie geactiveerd wanneer een wijziging naar de azure-vote map wordt gepusht.

    De steps sectie bevat elke afzonderlijke actie:

    1. De broncode voor uitchecken maakt gebruik van de GitHub Actions Checkout Action om de opslagplaats te klonen.
    2. ACR-build maakt gebruik van de Build-actie van Azure Container Registry om de installatiekopieën te bouwen en deze te uploaden naar uw register.
    3. Azure-aanmelding maakt gebruik van de Azure-aanmeldingsactie om u aan te melden bij uw Azure-account.
    4. Stel AKS-context in met behulp van de Azure AKS-contextactie om de context voor uw AKS-cluster in te stellen.
    5. Kubectl instellen maakt gebruik van de Azure AKS Setup Kubectl Action om kubectl op uw runner te installeren.
    6. Implementeren in AKS maakt gebruik van de Azure Kubernetes Deploy Action om de toepassing te implementeren in uw Kubernetes-cluster.
  2. Voer het .github/workflows/main.yml bestand door naar uw opslagplaats.

  3. Werk de actie bij met de volgende inhoud om te bevestigen dat de actie werkt azure-vote/azure-vote/config_file.cfg :

    # UI Configurations
    TITLE = 'Azure Voting App'
    VOTE1VALUE = 'Fish'
    VOTE2VALUE = 'Dogs'
    SHOWHOST = 'false'
    
  4. Voer de bijgewerkte gegevens azure-vote/azure-vote/config_file.cfg door naar uw opslagplaats.

  5. Selecteer acties in uw opslagplaats en bevestig dat een werkstroom wordt uitgevoerd. Controleer vervolgens of de werkstroom een groen vinkje heeft en dat de bijgewerkte toepassing is geïmplementeerd in uw cluster.

Volgende stappen

Bekijk de volgende starterswerkstromen voor AKS. Zie Starter-werkstromen gebruiken voor meer informatie.