Erstellen, Testen und Bereitstellen von Containern für den Azure Kubernetes Service (AKS) mithilfe von GitHub Actions
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 (ACR) zu Azure Kubernetes Service (AKS) mit GitHub Actions bereitzustellen.
Voraussetzungen
- Ein Azure-Konto mit einem aktiven Abonnement. Erstellen Sie ein kostenloses Konto, falls Sie keines besitzen.
- Ein GitHub-Konto. Falls Sie noch nicht über ein Konto verfügen, können Sie sich kostenlos registrieren.
- Wenn Sie GitHub Actions verwenden, müssen Sie die Integration zwischen Azure und Ihrem GitHub-Repository konfigurieren. Informationen zum Konfigurieren der Integration finden Sie unter Verwenden GitHub Actions zum Herstellen einer Verbindung mit Azure.
- Ein vorhandener AKS-Cluster mit einem angefügten ACR. Wenn Sie über keines verfügen, finden Sie weitere Informationen unter Authentifizieren mit ACR von AKS.
GitHub Actions für AKS
Mit GitHub Actions können Sie Ihre Softwareentwicklungsworkflows innerhalb von GitHub automatisieren. Weitere Informationen finden Sie unter GitHub Actions für Azure.
Die folgende Tabelle enthält die verfügbaren Aktionen für AKS:
Name | BESCHREIBUNG | Weitere Informationen |
---|---|---|
azure/aks-set-context |
Legen Sie den AKS-Zielclusterkontext fest, den andere Aktionen verwenden sollen, oder führen Sie beliebige kubectl-Befehle aus. | azure/aks-set-context |
azure/k8s-set-context |
Legen Sie den Kubernetes-Zielclusterkontext fest, den andere Aktionen verwenden sollen, oder führen Sie beliebige kubectl-Befehle aus. | azure/k8s-set-context |
azure/k8s-bake |
Erstellen Sie eine Manifestdatei, die Sie für Bereitstellungen mithilfe von Helm, kustomize oder kompose verwenden möchten. | 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 |
azure/acr-build |
Erstellt Container mithilfe von ACR. | azure/acr-build |
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 wählen Sie Fork aus.
Aktualisieren Sie die Datei
azure-vote-all-in-one-redis.yaml
so, dass Ihr ACR für dasazure-vote-front
-Image verwendet wird. Ersetzen Sie<registryName>
durch den Namen Ihrer Registrierung.... containers: - name: azure-vote-front image: <registryName>.azurecr.io/azuredocs/azure-vote-front:v1 ...
Commiten Sie die aktualisierte
azure-vote-all-in-one-redis.yaml
-Datei für Ihr Repository.
Erstellen von Geheimnissen
Erstellen Sie mithilfe des Befehls
az ad sp create-for-rbac
einen Dienstprinzipal, um mit der RolleContributor
auf Ihre Ressourcengruppe zuzugreifen. Ersetzen Sie<SUBSCRIPTION_ID>
durch die Abonnement-ID Ihres Azure-Kontos und<RESOURCE_GROUP>
durch den Namen der Ressourcengruppe, die Ihren ACR enthält.az ad sp create-for-rbac \ --name "ghActionAzureVote" \ --scope /subscriptions/<SUBSCRIPTION_ID>/resourceGroups/<RESOURCE_GROUP> \ --role Contributor \ --json-auth
Ihre Ausgabe sollte in etwa dem folgendem Beispiel entsprechen:
{ "clientId": <clientId>, "clientSecret": <clientSecret>, "subscriptionId": <subscriptionId>, "tenantId": <tenantId>, ... }
Navigieren Sie zu den Einstellungen Ihres GitHub-Repositorys, und wählen Sie Sicherheit>Geheimnisse und Variablen>Aktionen aus.
Wählen Sie für jedes Geheimnis Neues Repositorygeheimnis aus, und geben Sie den Namen und den Wert des Geheimnisses ein.
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 Registry. repository azuredocs resource_group Der Name Ihrer Ressourcengruppe. cluster_name Der Name Ihres Clusters.
Weitere Informationen zum Erstellen von Geheimnissen finden Sie unter Verschlüsselte Geheimnisse.
Aktionsdatei erstellen
Erstellen Sie in Ihrem Repository eine
.github/workflows/main.yml
-Datei, und fügen Sie den folgenden Inhalt ein: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
Der
on
-Abschnitt enthält das Ereignis, das die Aktion auslöst. In der Beispieldatei wird die Aktion ausgelöst, wenn eine Änderung in das Verzeichnisazure-vote
gepusht wird.Der
steps
-Abschnitt enthält jede einzelne Aktion:- 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 Kubernetes-Cluster bereitzustellen.
Committen Sie die
.github/workflows/main.yml
-Datei in Ihr Repository.Um zu bestätigen, dass die Aktion funktioniert, aktualisieren Sie die
azure-vote/azure-vote/config_file.cfg
-Datei mit dem folgenden Inhalt:# UI Configurations TITLE = 'Azure Voting App' VOTE1VALUE = 'Fish' VOTE2VALUE = 'Dogs' SHOWHOST = 'false'
Commiten Sie die aktualisierte
azure-vote/azure-vote/config_file.cfg
-Datei für Ihr Repository.Wählen Sie in Ihrem Repository Aktionen aus, und bestätigen Sie, dass ein Workflow ausgeführt wird. Vergewissern Sie sich dann, dass der Workflow 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 finden Sie unter Verwenden von Startworkflows.
Azure Kubernetes Service