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 aan.
- Een GitHub-account. Als u nog geen account hebt, kunt u zich gratis registreren.
- Wanneer u GitHub Actions gebruikt, moet u de integratie tussen Azure en uw GitHub-opslagplaats configureren. Zie GitHub Actions gebruiken om verbinding te maken met Azure om de integratie te configureren.
- Een bestaand AKS-cluster met een gekoppelde ACR. Als u nog geen account hebt, raadpleegt u Verifiëren met ACR vanuit AKS.
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:
Naam | Beschrijving | Meer informatie |
---|---|---|
azure/aks-set-context |
Stel de doel-AKS-clustercontext 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 een manifestbestand dat u wilt gebruiken voor implementaties met behulp van Helm, kustomize of kompose. | azure/k8s-bake |
azure/k8s-create-secret |
Maak een algemeen geheim of docker-registry-geheim in het Kubernetes-cluster. | azure/k8s-create-secret |
azure/k8s-deploy |
Manifesten implementeren in Kubernetes-clusters. | azure/k8s-deploy |
azure/k8s-lint |
Valideer/lint uw manifestbestanden. | azure/k8s-lint |
azure/setup-helm |
Installeer een specifieke versie van het binaire Helm-bestand 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 OIDC (Open ID Connect) configureren en de azure/login
actie bijwerken om OIDC te gebruiken. Zie Azure-aanmelding instellen met OpenID Connect-verificatie voor meer informatie.
De opslagplaats splitsen en bijwerken
Navigeer naar de Azure Vote-opslagplaats en selecteer Fork.
Werk de
azure-vote-all-in-one-redis.yaml
bij om uw ACR voor deazure-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 ...
Voer de bijgewerkte door
azure-vote-all-in-one-redis.yaml
in uw opslagplaats.
Geheimen maken
Maak een service-principal voor toegang tot uw resourcegroep met de
Contributor
rol met behulp van deaz ad sp create-for-rbac
opdracht . Vervang door de abonnements-id<SUBSCRIPTION_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>, ... }
Navigeer naar de instellingen van uw GitHub-opslagplaats en selecteerBeveiligingsgeheimen> en variabelen >Acties.
Selecteer voor elk geheim Nieuwe opslagplaatsgeheim en voer 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>
.registry De naam van het register. repository azuredocs resource_group De naam van uw resourcegroep. cluster_name De naam van uw cluster.
Zie Versleutelde geheimen voor meer informatie over het maken van geheimen.
Actiebestand maken
Maak een
.github/workflows/main.yml
in de opslagplaats 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 die de actie activeert. In het voorbeeldbestand wordt de actie geactiveerd wanneer een wijziging naar deazure-vote
map wordt gepusht.De
steps
sectie bevat elke afzonderlijke actie:- De broncode voor uitchecken maakt gebruik van de GitHub Actions Actie Uitchecken om de opslagplaats te klonen.
- ACR-build maakt gebruik van de Azure Container Registry Actie Bouwen om de installatiekopieën te bouwen en te uploaden naar uw register.
- Azure-aanmelding maakt gebruik van de Azure-aanmeldingsactie om u aan te melden bij uw Azure-account.
- AKS-context instellen maakt gebruik van de Azure AKS-actie Context instellen om de context voor uw AKS-cluster in te stellen.
- Setup kubectl maakt gebruik van de Azure AKS Setup Kubectl Action om kubectl te installeren op uw runner.
- Implementeren in AKS maakt gebruik van de Azure Kubernetes Deploy Action om de toepassing te implementeren in uw Kubernetes-cluster.
Voer het
.github/workflows/main.yml
bestand door in uw opslagplaats.Als u wilt controleren of de actie werkt, werkt u de
azure-vote/azure-vote/config_file.cfg
bij met de volgende inhoud:# UI Configurations TITLE = 'Azure Voting App' VOTE1VALUE = 'Fish' VOTE2VALUE = 'Dogs' SHOWHOST = 'false'
Voer de bijgewerkte door
azure-vote/azure-vote/config_file.cfg
in uw opslagplaats.Selecteer acties in de opslagplaats en controleer of er een werkstroom wordt uitgevoerd. Controleer vervolgens of de werkstroom een groen vinkje heeft en of de bijgewerkte toepassing is geïmplementeerd in uw cluster.
Volgende stappen
Bekijk de volgende starterswerkstromen voor AKS. Zie Starterswerkstromen gebruiken voor meer informatie.