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:
-
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.
-
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 zurAzure/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 ContainerregistrierungPROJECT_NAME
in den Namen deines ProjektsRESOURCE_GROUP
in die Ressourcengruppe mit deinem AKS-ClusterCLUSTER_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.
# 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 }}
# 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:
- Den ursprünglichen Startworkflow findest du unter
azure-kubernetes-service.yml
im GitHub Actions-Repositorystarter-workflows
. - In diesem Workflow werden die offiziellen Azure-Aktionen
Azure/login
,Azure/aks-set-context
,Azure/CLI
,Azure/k8s-bake
undAzure/k8s-deploy
verwendet. - Weitere Beispiele für GitHub Action-Workflows, die in Azure bereitgestellt werden können, findest du im Repository actions-workflow-samples.