Sestavení, testování a nasazení kontejnerů do Azure Kubernetes Service (AKS) pomocí GitHub Actions
GitHub Actions vám poskytuje flexibilitu při vytváření automatizovaného pracovního postupu vývoje životního cyklu softwaru. K nasazení do kontejnerů z Azure Container Registry (ACR) do Azure Kubernetes Service (AKS) s 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.
- Při použití GitHub Actions je potřeba nakonfigurovat integraci mezi Azure a úložištěm GitHub. Informace o konfiguraci integrace najdete v tématu 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 | Description | Další podrobnosti |
---|---|---|
azure/aks-set-context |
Nastavte kontext cílového clusteru AKS pro další akce, které se mají použít, nebo spusťte 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 spusťte příkazy kubectl. | azure/k8s-set-context |
azure/k8s-bake |
Bake soubor manifestu pro nasazení pomocí Helm, kustomize nebo kompose. | azure/k8s-bake |
azure/k8s-create-secret |
V clusteru Kubernetes vytvořte obecný tajný klíč nebo tajný klíč docker-registry. | azure/k8s-create-secret |
azure/k8s-deploy |
Nasazení manifestů do clusterů Kubernetes | azure/k8s-deploy |
azure/k8s-lint |
Ověřte nebo lintujte soubory manifestu. | azure/k8s-lint |
azure/setup-helm |
Nainstalujte na runner konkrétní verzi binárního souboru Helm. | azure/setup-helm |
azure/setup-kubectl |
Nainstalujte na runner konkrétní verzi kubectl. | azure/setup-kubectl |
azure/k8s-artifact-substitute |
Aktualizujte značku nebo hodnotu hash 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
Například můžete použít GitHub Actions k nasazení aplikace do clusteru AKS pokaždé, když se změna odešle do úložiště GitHub. Tento příklad používá aplikaci Azure Vote .
Poznámka
Tento příklad používá instanční objekt k ověřování pomocí clusteru ACR a AKS. 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í k Azure s ověřováním OpenID Connect.
Fork a aktualizace úložiště
Přejděte do úložiště Azure Vote a vyberte Fork.
Aktualizujte ,
azure-vote-all-in-one-redis.yaml
aby se proazure-vote-front
image používala služba 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 svého ú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ů, která obsahuje váš 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:
{ "clientId": <clientId>, "clientSecret": <clientSecret>, "subscriptionId": <subscriptionId>, "tenantId": <tenantId>, ... }
Přejděte do nastavení úložiště GitHub a vyberteAkce tajných klíčů a proměnných>zabezpečení>.
U každého tajného kódu vyberte Nový tajný klíč úložiště a zadejte název a hodnotu tajného klíče.
Název tajného kódu Hodnota tajného kódu AZURE_CREDENTIALS Celý výstup JSON z az ad sp create-for-rbac
příkazuservice_principal Hodnota . <clientId>
service_principal_password Hodnota . <clientSecret>
předplatné Hodnota . <subscriptionId>
Nájemce Hodnota . <tenantId>
registry Název registru. úložiště azuredocs resource_group Název vaší skupiny prostředků. cluster_name Název vašeho clusteru.
Další informace o vytváření tajných kódů najdete 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á aktivuje akci. 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á akci rezervace GitHub Actions k naklonování úložiště.
- ACR Build používá akci sestavení Azure Container Registry k sestavení image a jejímu nahrání do registru.
- Přihlášení k Azure používá akci přihlášení k Azure k přihlášení k vašemu účtu Azure.
- Nastavení kontextu AKS používá akci Azure AKS Nastavit kontext k nastavení kontextu pro cluster AKS.
- Instalace kubectl pomocí akce Kubectl instalace Azure AKS Kubectl nainstaluje kubectl do vašeho runneru.
- 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 ověřit, že akce funguje, aktualizujte
azure-vote/azure-vote/config_file.cfg
do souboru 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 svého úložiště.V úložišti vyberte Akce a ověřte, že pracovní postup běží. Pak ověřte, že má pracovní postup zelené zaškrtnutí a že se aktualizovaná aplikace nasadí do clusteru.
Další kroky
Projděte si následující počáteční pracovní postupy pro AKS. Další informace najdete v tématu Použití počátečních pracovních postupů.