Skapa, testa och distribuera containrar till Azure Kubernetes Service (AKS) med GitHub Actions
GitHub Actions ger dig flexibiliteten att skapa ett arbetsflöde för automatiserad programvaruutvecklingslivscykel. Du kan använda flera Kubernetes-åtgärder för att distribuera till containrar från Azure Container Registry (ACR) till Azure Kubernetes Service (AKS) med GitHub Actions.
Förutsättningar
- Ett Azure-konto med en aktiv prenumeration. Om du inte har något skapar du ett konto kostnadsfritt.
- Ett GitHub-konto. Om du inte har ett sådant kan du registrera dig utan kostnad.
- När du använder GitHub Actions måste du konfigurera integreringen mellan Azure och din GitHub-lagringsplats. Information om hur du konfigurerar integreringen finns i Använda GitHub Actions för att ansluta till Azure.
- Ett befintligt AKS-kluster med en ansluten ACR. Om du inte har någon läser du Autentisera med ACR från AKS.
GitHub Actions för AKS
Med GiHub Actions kan du automatisera dina arbetsflöden för programvaruutveckling inifrån GitHub. Mer information finns i GitHub Actions för Azure.
I följande tabell visas tillgängliga åtgärder för AKS:
Name | beskrivning | Mer information |
---|---|---|
azure/aks-set-context |
Ange AKS-målklusterkontexten för andra åtgärder som ska användas eller köra kubectl-kommandon. | azure/aks-set-context |
azure/k8s-set-context |
Ange kubernetes-målklusterkontexten för andra åtgärder som ska användas eller köra kubectl-kommandon. | azure/k8s-set-context |
azure/k8s-bake |
Baka manifestfil som ska användas för distributioner med helm, kustomize eller kompose. | azure/k8s-bake |
azure/k8s-create-secret |
Skapa en allmän hemlighet eller docker-registry-hemlighet i Kubernetes-klustret. | azure/k8s-create-secret |
azure/k8s-deploy |
Distribuera manifest till Kubernetes-kluster. | azure/k8s-deploy |
azure/k8s-lint |
Verifiera/lint dina manifestfiler. | azure/k8s-lint |
azure/setup-helm |
Installera en specifik version av Helm-binärfilen på löparen. | azure/setup-helm |
azure/setup-kubectl |
Installera en specifik version av kubectl på löparen. | azure/setup-kubectl |
azure/k8s-artifact-substitute |
Uppdatera taggen eller sammandraget för containeravbildningar. | azure/k8s-artifact-substitute |
azure/aks-create-action |
Skapa ett AKS-kluster med Terraform. | azure/aks-create-action |
azure/aks-github-runner |
Konfigurera lokalt installerade agenter för GitHub Actions. | azure/aks-github-runner |
azure/acr-build |
Skapa containrar med hjälp av ACR. | azure/acr-build |
Använda GitHub Actions med AKS
Du kan till exempel använda GitHub Actions för att distribuera ett program till ditt AKS-kluster varje gång en ändring skickas till din GitHub-lagringsplats. I det här exemplet används Azure Vote-programmet .
Kommentar
I det här exemplet används ett huvudnamn för tjänsten för autentisering med ditt ACR- och AKS-kluster. Du kan också konfigurera Open ID Connect (OIDC) och uppdatera åtgärden så att den azure/login
använder OIDC. Mer information finns i Konfigurera Azure-inloggning med OpenID Connect-autentisering.
Förgrena och uppdatera lagringsplatsen
azure-vote-all-in-one-redis.yaml
Uppdatera för att använda din ACR för avbildningenazure-vote-front
. Byt ut<registryName>
mot namnet på ditt register.... containers: - name: azure-vote-front image: <registryName>.azurecr.io/azuredocs/azure-vote-front:v1 ...
Checka in den uppdaterade
azure-vote-all-in-one-redis.yaml
till lagringsplatsen.
Skapa hemligheter
Skapa ett huvudnamn för tjänsten för att komma åt resursgruppen med
Contributor
rollen med hjälp avaz ad sp create-for-rbac
kommandot . Ersätt<SUBSCRIPTION_ID>
med prenumerations-ID:t för ditt Azure-konto och<RESOURCE_GROUP>
med namnet på resursgruppen som innehåller din ACR.az ad sp create-for-rbac \ --name "ghActionAzureVote" \ --scope /subscriptions/<SUBSCRIPTION_ID>/resourceGroups/<RESOURCE_GROUP> \ --role Contributor \ --json-auth
Dina utdata bör se ut ungefär som följande exempelutdata:
{ "clientId": <clientId>, "clientSecret": <clientSecret>, "subscriptionId": <subscriptionId>, "tenantId": <tenantId>, ... }
Gå till inställningarna för GitHub-lagringsplatsen och välj Säkerhetshemligheter>och variabler>Åtgärder.
För varje hemlighet väljer du Ny lagringsplatshemlighet och anger namnet och värdet för hemligheten.
Hemligt namn Hemligt värde AZURE_CREDENTIALS Hela JSON-utdata från az ad sp create-for-rbac
kommandot.service_principal Värdet för <clientId>
.service_principal_password Värdet för <clientSecret>
.prenumeration Värdet för <subscriptionId>
.klientorganisation Värdet för <tenantId>
.register Namnet på registret. repository azuredocs resource_group Namnet på resursgruppen. cluster_name Namnet på klustret.
Mer information om hur du skapar hemligheter finns i Krypterade hemligheter.
Skapa åtgärdsfil
På lagringsplatsen skapar du en
.github/workflows/main.yml
och klistrar in följande innehåll: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
Avsnittet
on
innehåller händelsen som utlöser åtgärden. I exempelfilen utlöses åtgärden när en ändring skickas tillazure-vote
katalogen.Avsnittet
steps
innehåller varje distinkt åtgärd:- Checkout-källkoden använder GitHub Actions Checkout-åtgärden för att klona lagringsplatsen.
- ACR-versionen använder Azure Container Registry Build Action för att skapa avbildningen och ladda upp den till registret.
- Azure-inloggning använder Azure-inloggningsåtgärden för att logga in på ditt Azure-konto.
- Ange AKS-kontext använder Azure AKS Set Context Action för att ange kontexten för ditt AKS-kluster.
- Installation av kubectl använder Kubectl-åtgärden för Azure AKS-installation för att installera kubectl på din löpare.
- Distribuera till AKS använder Azure Kubernetes Deploy Action för att distribuera programmet till ditt Kubernetes-kluster.
Checka in filen på
.github/workflows/main.yml
lagringsplatsen.För att bekräfta att åtgärden fungerar uppdaterar
azure-vote/azure-vote/config_file.cfg
du med följande innehåll:# UI Configurations TITLE = 'Azure Voting App' VOTE1VALUE = 'Fish' VOTE2VALUE = 'Dogs' SHOWHOST = 'false'
Checka in den uppdaterade
azure-vote/azure-vote/config_file.cfg
till lagringsplatsen.På lagringsplatsen väljer du Åtgärder och bekräftar att ett arbetsflöde körs. Bekräfta sedan att arbetsflödet har en grön bockmarkering och att det uppdaterade programmet distribueras till klustret.
Nästa steg
Granska följande startarbetsflöden för AKS. Mer information finns i Använda startarbetsflöden.
Azure Kubernetes Service