Sestavování, testování a nasazování kontejnerů do služby Azure Kubernetes Service (AKS) pomocí GitHub Actions
GitHub Actions nabízí flexibilitu při vytváření pracovního postupu životního cyklu automatizovaného vývoje softwaru. K nasazení do kontejnerů ze služby Azure Container Registry (ACR) do služby Azure Kubernetes Service (AKS) pomocí GitHub Actions můžete použít několik akcí Kubernetes.
Požadavky
- Účet Azure s aktivním předplatným. Pokud ho nemáte, vytvořte si účet zdarma.
- Účet GitHub. Pokud ho nemáte, zdarma se zaregistrujte.
- Pokud používáte GitHub Actions, musíte nakonfigurovat integraci mezi Azure a úložištěm GitHub. Pokud chcete nakonfigurovat integraci, přečtěte si téma Použití GitHub Actions pro připojení k Azure.
- Existující cluster AKS s připojeným ACR. Pokud ho nemáte, přečtěte si téma Ověřování pomocí ACR z AKS.
GitHub Actions pro AKS
Pomocí GiHub Actions můžete automatizovat pracovní postupy vývoje softwaru z GitHubu. Další informace najdete v tématu GitHub Actions pro Azure.
Následující tabulka uvádí dostupné akce pro AKS:
Název | Popis | Další podrobnosti |
---|---|---|
azure/aks-set-context |
Nastavte kontext cílového clusteru AKS pro další akce, které se mají použít nebo spustit jakékoli příkazy kubectl. | azure/aks-set-context |
azure/k8s-set-context |
Nastavte kontext cílového clusteru Kubernetes pro další akce, které se mají použít nebo spustit jakékoli příkazy kubectl. | azure/k8s-set-context |
azure/k8s-bake |
Soubor manifestu Bake, který se má použít pro nasazení pomocí Helmu, kustomize nebo sestavení. | azure/k8s-bake |
azure/k8s-create-secret |
Vytvořte v clusteru Kubernetes obecný tajný kód nebo tajný kód registru Dockeru. | azure/k8s-create-secret |
azure/k8s-deploy |
Nasaďte manifesty do clusterů Kubernetes. | azure/k8s-deploy |
azure/k8s-lint |
Ověřte nebo lintujte soubory manifestu. | azure/k8s-lint |
azure/setup-helm |
Nainstalujte na spouštěč konkrétní verzi binárního souboru Helm. | azure/setup-helm |
azure/setup-kubectl |
Nainstalujte na spouštěč konkrétní verzi kubectl. | azure/setup-kubectl |
azure/k8s-artifact-substitute |
Aktualizujte značku nebo digest pro image kontejneru. | azure/k8s-artifact-substitute |
azure/aks-create-action |
Vytvořte cluster AKS pomocí Terraformu. | azure/aks-create-action |
azure/aks-github-runner |
Nastavte agenty v místním prostředí pro GitHub Actions. | azure/aks-github-runner |
azure/acr-build |
Vytváření kontejnerů pomocí ACR | azure/acr-build |
Použití GitHub Actions s AKS
Jako příklad můžete pomocí GitHub Actions nasadit aplikaci do clusteru AKS při každém nasdílení změn do úložiště GitHub. V tomto příkladu se používá aplikace Azure Vote .
Poznámka:
V tomto příkladu se k ověřování s clusterem ACR a AKS používá instanční objekt. Alternativně můžete nakonfigurovat Open ID Connect (OIDC) a aktualizovat azure/login
akci tak, aby používala OIDC. Další informace najdete v tématu Nastavení přihlášení Azure s ověřováním OpenID Connect.
Rozvětvování a aktualizace úložiště
Přejděte do úložiště Azure Vote a vyberte Fork.
Aktualizujte image
azure-vote-all-in-one-redis.yaml
tak, aby používalaazure-vote-front
službu ACR.<registryName>
nahraďte názvem vašeho registru.... containers: - name: azure-vote-front image: <registryName>.azurecr.io/azuredocs/azure-vote-front:v1 ...
Potvrďte aktualizaci
azure-vote-all-in-one-redis.yaml
do úložiště.
Vytváření tajných kódů
Pomocí příkazu vytvořte instanční objekt pro přístup ke skupině prostředků s
Contributor
rolíaz ad sp create-for-rbac
. Nahraďte<SUBSCRIPTION_ID>
ID předplatného vašeho účtu Azure a<RESOURCE_GROUP>
názvem skupiny prostředků obsahující vaši službu ACR.az ad sp create-for-rbac \ --name "ghActionAzureVote" \ --scope /subscriptions/<SUBSCRIPTION_ID>/resourceGroups/<RESOURCE_GROUP> \ --role Contributor \ --json-auth
Výstup by měl vypadat podobně jako v následujícím příkladu výstupu:
{ "clientId": <clientId>, "clientSecret": <clientSecret>, "subscriptionId": <subscriptionId>, "tenantId": <tenantId>, ... }
Přejděte do nastavení úložiště GitHub a vyberte Akce tajných>kódů zabezpečení a proměnných>.
Pro každý tajný klíč vyberte Nový tajný klíč úložiště a zadejte název a hodnotu tajného klíče.
Název tajného klíče Hodnota tajného klíče AZURE_CREDENTIALS Celý výstup JSON z az ad sp create-for-rbac
příkazu.service_principal Hodnota . <clientId>
service_principal_password Hodnota . <clientSecret>
předplatné Hodnota . <subscriptionId>
klient Hodnota . <tenantId>
registr Název registru. úložiště azuredocs resource_group Název vaší skupiny prostředků cluster_name Název clusteru.
Další informace o vytváření tajných kódů naleznete v tématu Šifrované tajné kódy.
Vytvoření souboru akcí
V úložišti vytvořte
.github/workflows/main.yml
a vložte následující obsah: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
Oddíl
on
obsahuje událost, která akci aktivuje. V ukázkovém souboru se akce aktivuje při vložení změny doazure-vote
adresáře.Oddíl
steps
obsahuje každou samostatnou akci:- Zdrojový kód rezervace používá k klonování úložiště akci rezervace GitHub Actions.
- Sestavení ACR používá akci sestavení služby Azure Container Registry k sestavení image a jejímu nahrání do registru.
- Přihlášení k Azure používá akci přihlášení Azure k přihlášení k účtu Azure.
- Nastavení kontextu AKS používá k nastavení kontextu clusteru AKS kontext azure AKS.
- Instalační program kubectl pomocí akce Kubectl instalace Azure AKS nainstaluje kubectl do spouštěče.
- Nasazení do AKS používá akci nasazení Azure Kubernetes k nasazení aplikace do clusteru Kubernetes.
.github/workflows/main.yml
Potvrďte soubor do úložiště.Pokud chcete potvrdit, že akce funguje, aktualizujte
azure-vote/azure-vote/config_file.cfg
následující obsah:# UI Configurations TITLE = 'Azure Voting App' VOTE1VALUE = 'Fish' VOTE2VALUE = 'Dogs' SHOWHOST = 'false'
Potvrďte aktualizaci
azure-vote/azure-vote/config_file.cfg
do úložiště.V úložišti vyberte Akce a potvrďte, že je spuštěný pracovní postup. Pak ověřte, že pracovní postup má zelenou značku zaškrtnutí a aktualizovaná aplikace se nasadí do clusteru.
Další kroky
Projděte si následující úvodní pracovní postupy pro AKS. Další informace naleznete v tématu Použití úvodních pracovních postupů.
Azure Kubernetes Service