Skip to main content

Bereitstellen für Azure Kubernetes Service

Im Rahmen deines Continuous Deployment-Workflows (CD) kannst du dein Projekt in Azure Kubernetes Service (AKS) bereitstellen.

Hinweis: GitHub-gehostete Runner werden auf GitHub Enterprise Server derzeit nicht unterstützt. Weitere Informationen zur geplanten zukünftigen Unterstützung findest Du in der GitHub public roadmap.

Einführung

In diesem Leitfaden wird erläutert, wie GitHub Actions zum Erstellen und Bereitstellen eines Projekts für Azure Kubernetes Service verwendet wird.

Hinweis: Wenn deine GitHub Actions-Workflows auf Ressourcen eines Cloudanbieters zugreifen müssen, der OpenID Connect (OIDC) unterstützt, kannst du deine Workflows so konfigurieren, dass die Authentifizierung direkt beim Cloudanbieter erfolgt. Dadurch musst du diese Anmeldeinformationen nicht mehr als langlebige Geheimnisse speichern und profitierst zudem von weiteren Sicherheitsvorteilen. Weitere Informationen findest du unter Informationen zur Sicherheitshärtung mit OpenID Connect. und Konfigurieren von OpenID Connect in Azure.

Voraussetzungen

Bevor du deinen GitHub Actions-Workflow erstellst, musst du die folgenden Einrichtungsschritte ausführen:

  1. Erstelle einen AKS-Zielcluster und eine Instanz von Azure Container Registry (ACR). Weitere Informationen findest du unter Schnellstart: Bereitstellen eines AKS-Clusters mithilfe des Azure-Portals – Azure Kubernetes Service und Schnellstart: Erstellen einer Registrierung im Portal – Azure Container Registry in der Azure-Dokumentation.

  2. Erstelle ein Geheimnis mit dem Namen AZURE_CREDENTIALS zum Speichern deiner Azure-Anmeldeinformationen. Weitere Informationen dazu, wie du diese Informationen findest, sowie zur Struktur des Geheimnisses findest du in der Dokumentation zur Azure/login-Aktion.

Erstellen des Workflows

Nachdem die Voraussetzungen erfüllt sind, kannst du mit dem Erstellen des Workflows fortfahren.

Der folgende Beispielworkflow zeigt, wie du ein Projekt erstellst und für Azure Kubernetes Service bereitstellst, wenn Code in dein Repository gepusht wird.

Ändere unter dem Workflowschlüssel env die folgenden Werte:

  • AZURE_CONTAINER_REGISTRY in den Namen deiner Containerregistrierung
  • PROJECT_NAME in den Namen deines Projekts
  • RESOURCE_GROUP in die Ressourcengruppe mit deinem AKS-Cluster
  • CLUSTER_NAME in den Namen deines AKS-Clusters

Dieser Workflow verwendet das helm-Rendermodul für die azure/k8s-bake-Aktion. Wenn du das helm-Rendermodul verwendest, ändere den Wert von CHART_PATH in den Pfad deiner Helm-Datei. Ändere CHART_OVERRIDE_PATH in ein Array aus Außerkraftsetzungsdateipfaden. Wenn du ein anderes Rendermodul verwendest, aktualisiere die Eingabeparameter, die an die Aktion azure/k8s-bake gesendet werden.

YAML
# Dieser Workflow verwendet Aktionen, die nicht von GitHub zertifiziert sind.
# Sie werden von einem Drittanbieter bereitgestellt und unterliegen
# separaten Nutzungsbedingungen, Datenschutzbestimmungen und Support
# Onlinedokumentation.

# GitHub empfiehlt, Aktionen an einen Commit-SHA anzuheften.
# Um eine neuere Version zu erhalten, musst du den SHA aktualisieren.
# Du kannst auch auf ein Tag oder einen Branch verweisen, aber die Aktion kann sich ohne Vorwarnung ändern.

name: Build and deploy to Azure Kubernetes Service

env:
  AZURE_CONTAINER_REGISTRY: MY_REGISTRY_NAME # set this to the name of your container registry
  PROJECT_NAME: MY_PROJECT_NAME              # set this to your project's name
  RESOURCE_GROUP: MY_RESOURCE_GROUP          # set this to the resource group containing your AKS cluster
  CLUSTER_NAME: MY_CLUSTER_NAME              # set this to the name of your AKS cluster
  REGISTRY_URL: MY_REGISTRY_URL              # set this to the URL of your registry
  # If you bake using helm:
  CHART_PATH: MY_HELM_FILE                   # set this to the path to your helm file
  CHART_OVERRIDE_PATH: MY_OVERRIDE_FILES     # set this to an array of override file paths

on: [push]

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v4

    - name: Azure Login
      uses: azure/login@14a755a4e2fd6dff25794233def4f2cf3f866955
      with:
        creds: ${{ secrets.AZURE_CREDENTIALS }}

    - name: Build image on ACR
      uses: azure/CLI@61bb69d64d613b52663984bf12d6bac8fd7b3cc8
      with:
        azcliversion: 2.29.1
        inlineScript: |
          az configure --defaults acr=${{ env.AZURE_CONTAINER_REGISTRY }}
          az acr build -t  -t ${{ env.REGISTRY_URL }}/${{ env.PROJECT_NAME }}:${{ github.sha }}

    - name: Gets K8s context
      uses: azure/aks-set-context@94ccc775c1997a3fcfbfbce3c459fec87e0ab188
      with:
          creds: ${{ secrets.AZURE_CREDENTIALS }}
          resource-group: ${{ env.RESOURCE_GROUP }}
          cluster-name: ${{ env.CLUSTER_NAME }}
      id: login

    - name: Configure deployment
      uses: azure/k8s-bake@61041e8c2f75c1f01186c8f05fb8b24e1fc507d8
      with:
        renderEngine: 'helm'
        helmChart: ${{ env.CHART_PATH }}
        overrideFiles: ${{ env.CHART_OVERRIDE_PATH }}
        overrides: |
          replicas:2
        helm-version: 'latest'
      id: bake

    - name: Deploys application
      uses: Azure/k8s-deploy@dd4bbd13a5abd2fc9ca8bdcb8aee152bb718fa78
      with:
        manifests: ${{ steps.bake.outputs.manifestsBundle }}
        images: |
          ${{ env.AZURE_CONTAINER_REGISTRY }}.azurecr.io/${{ env.PROJECT_NAME }}:${{ github.sha }}
        imagepullsecrets: |
          ${{ env.PROJECT_NAME }}

Zusätzliche Ressourcen

Die folgenden Ressourcen können ebenfalls nützlich sein: