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.
- Een GitHub-account. Als u geen account hebt, kunt u zich registreren voor een gratis account.
- 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. Zie Verifiëren met ACR vanuit AKS als u er nog geen hebt.
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:
Name | Beschrijving | Meer informatie |
---|---|---|
azure/aks-set-context |
Stel de AKS-doelclustercontext 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 het manifestbestand dat moet worden gebruikt voor implementaties met behulp van Helm, kustomize of kompose. | azure/k8s-bake |
azure/k8s-create-secret |
Maak een algemeen geheim of docker-registergeheim in het Kubernetes-cluster. | azure/k8s-create-secret |
azure/k8s-deploy |
Implementeer manifesten in Kubernetes-clusters. | azure/k8s-deploy |
azure/k8s-lint |
Valideer/lint uw manifestbestanden. | azure/k8s-lint |
azure/setup-helm |
Installeer een specifieke versie van Helm binary 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 Open ID Connect (OIDC) configureren en de azure/login
actie bijwerken om OIDC te gebruiken. Zie Azure-aanmelding instellen met OpenID Connect-verificatie voor meer informatie.
Fork en werk de opslagplaats bij
Navigeer naar de Azure Vote-opslagplaats en selecteer Fork.
Werk het
azure-vote-all-in-one-redis.yaml
bestand 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 gegevens
azure-vote-all-in-one-redis.yaml
door naar 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<SUBSCRIPTION_ID>
door de abonnements-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 selecteer Beveiligingsgeheimen>>en variabelenacties.
Voor elk geheim selecteert u Nieuw opslagplaatsgeheim en voert u 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>
.register De naam van het register. repository azuredocs resource_group De naam van uw resourcegroep. cluster_name De naam van het cluster.
Zie Versleutelde geheimen voor meer informatie over het maken van geheimen.
Actiebestand maken
Maak in uw opslagplaats een
.github/workflows/main.yml
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 waarmee de actie wordt geactiveerd. 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 Checkout Action om de opslagplaats te klonen.
- ACR-build maakt gebruik van de Build-actie van Azure Container Registry om de installatiekopieën te bouwen en deze te uploaden naar uw register.
- Azure-aanmelding maakt gebruik van de Azure-aanmeldingsactie om u aan te melden bij uw Azure-account.
- Stel AKS-context in met behulp van de Azure AKS-contextactie om de context voor uw AKS-cluster in te stellen.
- Kubectl instellen maakt gebruik van de Azure AKS Setup Kubectl Action om kubectl op uw runner te installeren.
- 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 naar uw opslagplaats.Werk de actie bij met de volgende inhoud om te bevestigen dat de actie werkt
azure-vote/azure-vote/config_file.cfg
:# UI Configurations TITLE = 'Azure Voting App' VOTE1VALUE = 'Fish' VOTE2VALUE = 'Dogs' SHOWHOST = 'false'
Voer de bijgewerkte gegevens
azure-vote/azure-vote/config_file.cfg
door naar uw opslagplaats.Selecteer acties in uw opslagplaats en bevestig dat een werkstroom wordt uitgevoerd. Controleer vervolgens of de werkstroom een groen vinkje heeft en dat de bijgewerkte toepassing is geïmplementeerd in uw cluster.
Volgende stappen
Bekijk de volgende starterswerkstromen voor AKS. Zie Starter-werkstromen gebruiken voor meer informatie.
Azure Kubernetes Service