GitHub Actions für die Bereitstellung im Kubernetes Service
GitHub Actions bietet Ihnen die Flexibilität, einen automatisierten Workflow für den Softwareentwicklungs-Lebenszyklus zu erstellen. Sie können mehrere Kubernetes-Aktionen verwenden, um Container von Azure Container Registry zu Azure Kubernetes Service mit GitHub Actions bereitzustellen.
Voraussetzungen
- Ein Azure-Konto mit einem aktiven Abonnement. Sie können kostenlos ein Konto erstellen.
- Ein GitHub-Konto. Falls Sie noch nicht über ein Konto verfügen, können Sie sich kostenlos registrieren.
- Ein vorhandener AKS-Cluster mit einer angefügten Azure Container Registry (ACR).
Konfigurieren der Integration zwischen Azure und Ihrem GitHub-Repository
Wenn Sie GitHub Actions verwenden, müssen Sie die Integration zwischen Azure und Ihrem GitHub-Repository konfigurieren. Weitere Informationen zum Herstellen einer Verbindung zwischen Ihrem GitHub-Repository und Azure finden Sie unter Verwenden von GitHub Actions zum Herstellen einer Verbindung mit Azure.
Verfügbare Aktionen
GitHub Actions unterstützt Sie beim Automatisieren Ihrer Softwareentwicklungsworkflows innerhalb von GitHub. Weitere Informationen zur Verwendung von GitHub Actions mit Azure finden Sie unter Was ist GitHub Actions für Azure?.
Die folgende Tabelle zeigt die verfügbaren GitHub Actions, die speziell mit AKS integriert sind.
Name | BESCHREIBUNG | Weitere Informationen |
---|---|---|
azure/aks-set-context |
Legen Sie den AKS-Zielclusterkontext fest, der von anderen Aktionen verwendet wird, oder führen Sie beliebige kubectl-Befehle aus. | azure/aks-set-context |
azure/k8s-set-context |
Legen Sie den Kubernetes-Zielclusterkontext fest, der von anderen Aktionen verwendet wird, oder führen Sie beliebige kubectl-Befehle aus. | azure/k8s-set-context |
azure/k8s-bake |
Erstellen Sie eine Manifestdatei, die Sie mithilfe von Helm, kustomize oder kompose für Bereitstellungen verwenden können. | azure/k8s-bake |
azure/k8s-create-secret |
Erstellen Sie ein generisches Geheimnis oder docker-registry-Geheimnis im Kubernetes-Cluster. | azure/k8s-create-secret |
azure/k8s-deploy |
Stellen Sie Manifeste in Kubernetes-Clustern bereit. | azure/k8s-deploy |
azure/k8s-lint |
Überprüfen (Lint) Sie die Manifestdateien. | azure/k8s-lint |
azure/setup-helm |
Installieren Sie eine bestimmte Version der Helm-Binärdatei auf dem Runner. | azure/setup-helm |
azure/setup-kubectl |
Installiert eine bestimmte Version von kubectl auf dem Runner. | azure/setup-kubectl |
azure/k8s-artifact-substitute |
Aktualisieren Sie das Tag oder den Digest für Containerimages. | azure/k8s-artifact-substitute |
azure/aks-create-action |
Erstellen Sie einen AKS-Cluster mithilfe von Terraform. | azure/aks-create-action |
azure/aks-github-runner |
Richten Sie selbstgehostete Agents für GitHub Actions ein. | azure/aks-github-runner |
Darüber hinaus verwendet das Beispiel im nächsten Abschnitt die Aktion azure/acr-build.
Beispiel für die Verwendung von GitHub Actions mit AKS
Sie können z. B. GitHub Actions verwenden, um eine Anwendung auf Ihrem AKS-Cluster bereitzustellen, sobald eine Änderung in Ihr GitHub-Repository gepusht wird. In diesem Beispiel wird die Azure Vote-Anwendung verwendet.
Hinweis
In diesem Beispiel wird ein Dienstprinzipal für die Authentifizierung bei Ihrem ACR- und AKS-Cluster verwendet. Alternativ können Sie auch Open ID Connect (OIDC) konfigurieren und die Aktion azure/login
aktualisieren, um OIDC zu verwenden. Weitere Informationen finden Sie unter Einrichten der Azure-Anmeldung mit OpenID Connect-Authentifizierung.
Forken und Aktualisieren des Repositorys
Navigieren Sie zum Azure Vote-Repository, und klicken Sie auf die Schaltfläche Forken.
Sobald das Repository geforkt ist, aktualisieren Sie azure-vote-all-in-one-redis.yaml
, um Ihre ACR-Instanz für das azure-vote-front
-Image zu verwenden.
...
containers:
- name: azure-vote-front
image: <registryName>.azurecr.io/azuredocs/azure-vote-front:v1
...
Wichtig
Das Update auf azure-vote-all-in-one-redis.yaml
muss für Ihr Repository committet werden, bevor Sie die weiteren Schritte durchführen können.
Erstellen von Geheimnissen
Erstellen Sie mithilfe des folgenden Befehls ein Dienstprinzipal, um mit der Rolle Contributor
auf Ihre Ressourcengruppe zuzugreifen, und ersetzen Sie Folgendes:
<SUBSCRIPTION_ID>
durch die Abonnement-ID Ihres Azure-Kontos<RESOURCE_GROUP>
durch den Namen der Ressourcengruppe, in der sich Ihre ACR-Instanz befindet
az ad sp create-for-rbac \
--name "ghActionAzureVote" \
--scope /subscriptions/<SUBSCRIPTION_ID>/resourceGroups/<RESOURCE_GROUP> \
--role Contributor \
--sdk-auth
Im Folgenden sehen Sie eine Beispielausgabe des obigen Befehls.
{
"clientId": <clientId>,
"clientSecret": <clientSecret>,
"subscriptionId": <subscriptionId>,
"tenantId": <tenantId>,
...
}
Erstellen Sie in Ihrem GitHub-Repository die unten folgenden Geheimnisse, die Ihre Aktion verwenden soll. So erstellen Sie ein Geheimnis
- Navigieren Sie zu den Einstellungen des Repositorys, und wählen Sie Sicherheit > Geheimnisse und Variablen > Aktionen aus.
- Klicken Sie für jedes Geheimnis auf Neues Repositorygeheimnis, und geben Sie den Namen und den Wert des Geheimnisses ein.
Weitere Informationen zum Erstellen von Geheimnissen finden Sie unter Verschlüsselte Geheimnisse.
Geheimnisname | Geheimniswert |
---|---|
AZURE_CREDENTIALS | Die gesamte JSON-Ausgabe des az ad sp create-for-rbac -Befehls |
service_principal | Der Wert von <clientId> |
service_principal_password | Der Wert von <clientSecret> |
Abonnement | Der Wert von <subscriptionId> |
tenant | Der Wert von <tenantId> |
Registrierung | Der Name Ihrer Registrierung |
repository | azuredocs |
resource_group | Den Namen Ihrer Ressourcengruppe |
cluster_name | Der Name Ihres Clusters |
Aktionsdatei erstellen
Erstellen Sie eine .github/workflows/main.yml
In Ihrem Repository mit den folgenden Inhalten:
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
Wichtig
Die .github/workflows/main.yml
-Datei muss für Ihr Repository committet sein, bevor Sie die Aktion ausführen können.
Der on
-Abschnitt enthält das Ereignis, das die Aktion auslöst. In der obigen Datei wird die Aktion ausgelöst, wenn eine Änderung in das Verzeichnis azure-vote
gepusht wird.
In der obigen Datei enthält der steps
-Abschnitt jede einzelne Aktion, die der Reihe nach ausgeführt wird:
- Quellcode auschecken verwendet die Aktion „Auschecken“ von GitHub Actions, um das Repository zu klonen.
- ACR erstellen verwendet die Aktion „Erstellen“ von Azure Container Registry, um das Image zu erstellen und es in Ihre Registrierung hochzuladen.
- Azure-Anmeldung verwendet die Azure-Aktion „Anmelden“ für die Anmeldung bei Ihrem Azure-Konto.
- AKS-Kontext festlegen verwendet die Aktion „Kontext festlegen“ von Azure AKS, um den Kontext für Ihren AKS-Cluster festzulegen.
- kubectl einrichten verwendet die Aktion „Kubectl einrichten“ von Azure AKS, um kubectl auf Ihrem Runner zu installieren.
- In AKS bereitstellen verwendet die Aktion „Bereitstellen“ von Azure Kubernetes, um die Anwendung in Ihrem Kuberentes-Cluster bereitzustellen.
Bestätigen Sie, dass die Aktion funktioniert, indem Sie ein Update von azure-vote/azure-vote/config_file.cfg
auf die folgende Version durchführen und die Änderungen in Ihr Repository pushen:
# UI Configurations
TITLE = 'Azure Voting App'
VOTE1VALUE = 'Fish'
VOTE2VALUE = 'Dogs'
SHOWHOST = 'false'
Klicken Sie in Ihrem Repository auf Actions, und bestätigen Sie, dass ein Workflow ausgeführt wird. Sobald der Workflow abgeschlossen ist, bestätigen Sie, dass er mit einem grünen Häkchen versehen ist und die aktualisierte Anwendung in Ihrem Cluster bereitgestellt wurde.
Nächste Schritte
Überprüfen Sie die folgenden Startworkflows für AKS. Weitere Informationen zur Verwendung von Startworkflows finden Sie unter Verwenden von Startworkflows.