Membangun, menguji, dan menyebarkan kontainer ke Azure Kubernetes Service (AKS) menggunakan GitHub Actions
GitHub Actions memberi Anda fleksibilitas untuk membangun alur kerja siklus hidup pengembangan perangkat lunak otomatis. Anda dapat menggunakan beberapa tindakan Kubernetes untuk menyebarkan ke kontainer dari Azure Container Registry (ACR) ke Azure Kubernetes Service (AKS) dengan GitHub Actions.
- Akun Azure dengan langganan aktif. Jika Anda tidak memilikinya, buat akun secara gratis.
- Akun GitHub. Jika Anda belum memilikinya, daftar gratis.
- Saat menggunakan GitHub Actions, Anda perlu mengonfigurasi integrasi antara Azure dan repositori GitHub Anda. Untuk mengonfigurasi integrasi, lihat Menggunakan GitHub Actions untuk menyambungkan ke Azure.
- Kluster AKS yang ada dengan ACR terlampir. Jika Anda tidak memilikinya, lihat Mengautentikasi dengan ACR dari AKS.
Dengan GiHub Actions, Anda dapat mengotomatiskan alur kerja pengembangan perangkat lunak dari dalam GitHub. Untuk informasi selengkapnya, lihat Tindakan GitHub untuk Azure.
Tabel berikut ini mencantumkan tindakan yang tersedia untuk AKS:
Nama | Deskripsi | Detail Selengkapnya |
---|---|---|
azure/aks-set-context |
Atur konteks kluster AKS target untuk tindakan lain untuk menggunakan atau menjalankan perintah kubectl apa pun. | azure/aks-tentukan-konteks |
azure/k8s-set-context |
Atur konteks kluster Kubernetes target untuk tindakan lain untuk menggunakan atau menjalankan perintah kubectl apa pun. | azure/k8s-tentukan-konteks |
azure/k8s-bake |
Buat file manifes untuk digunakan untuk penyebaran menggunakan Helm, kustomisasi, atau kompose. | azure/k8s-bake |
azure/k8s-create-secret |
Buat rahasia generik atau rahasia docker-registri di kluster Kubernetes. | azure/k8s-buat-rahasia |
azure/k8s-deploy |
Sebarkan manifes ke kluster Kubernetes. | azure/k8s-sebarkan |
azure/k8s-lint |
Validasi/lint file manifes Anda. | azure/k8s-lint |
azure/setup-helm |
Instal versi tertentu dari biner Helm pada runner. | azure/siapkan-helm |
azure/setup-kubectl |
Instal versi kubectl tertentu pada runner. | azure/siapkan-kubectl |
azure/k8s-artifact-substitute |
Perbarui tag atau digest untuk gambar kontainer. | azure/k8s-artefak-pengganti |
azure/aks-create-action |
Buat kluster AKS menggunakan Terraform. | azure/aks-buat-tindakan |
azure/aks-github-runner |
Siapkan agen yang dihost sendiri untuk GitHub Actions. | azure/aks-github-runner |
azure/acr-build |
Buat kontainer menggunakan ACR. | azure/acr-build |
Sebagai contoh, Anda dapat menggunakan GitHub Actions untuk menyebarkan aplikasi ke kluster AKS Anda setiap kali perubahan didorong ke repositori GitHub Anda. Contoh ini menggunakan aplikasi Azure Vote.
Catatan
Contoh ini menggunakan perwakilan layanan untuk autentikasi dengan kluster ACR dan AKS Anda. Atau, Anda dapat mengonfigurasi Open ID Connect (OIDC) dan memperbarui tindakan azure/login
untuk menggunakan OIDC. Untuk informasi selengkapnya, lihat Menyiapkan Azure Login dengan autentikasi OpenID Connect.
Navigasikan ke repositori Azure Vote dan pilih Fork.
azure-vote-all-in-one-redis.yaml
Perbarui untuk menggunakan ACR Anda untukazure-vote-front
gambar. Ganti<registryName>
dengan nama aplikasi web Anda.... containers: - name: azure-vote-front image: <registryName>.azurecr.io/azuredocs/azure-vote-front:v1 ...
Terapkan yang diperbarui
azure-vote-all-in-one-redis.yaml
ke repositori Anda.
Buat perwakilan layanan untuk mengakses grup sumber daya Anda dengan
Contributor
peran menggunakanaz ad sp create-for-rbac
perintah . Ganti<SUBSCRIPTION_ID>
dengan ID langganan akun Azure Anda dan<RESOURCE_GROUP>
dengan nama grup sumber daya yang berisi ACR Anda.az ad sp create-for-rbac \ --name "ghActionAzureVote" \ --scope /subscriptions/<SUBSCRIPTION_ID>/resourceGroups/<RESOURCE_GROUP> \ --role Contributor \ --json-auth
Output Anda akan terlihat mirip dengan contoh output berikut:
{ "clientId": <clientId>, "clientSecret": <clientSecret>, "subscriptionId": <subscriptionId>, "tenantId": <tenantId>, ... }
Navigasi ke pengaturan repositori GitHub Anda dan pilih Tindakan Rahasia dan variabel>Keamanan>.
Untuk setiap rahasia, pilih Rahasia Repositori Baru dan masukkan nama dan nilai rahasia.
Nama rahasia Nilai rahasia KREDENSIAL_AZURE Seluruh output JSON dari az ad sp create-for-rbac
perintah .perwakilan_layanan Nilai dari <clientId>
.kata sandi_perwakilan_layanan Nilai dari <clientSecret>
.langganan Nilai dari <subscriptionId>
.penyewa Nilai dari <tenantId>
.registri Nama registri Anda. repositori azuredocs resource_group Nama grup sumber daya Anda. cluster_name Nama kluster Anda.
Untuk informasi selengkapnya tentang membuat rahasia, lihat Rahasia Terenkripsi.
Di repositori Anda, buat
.github/workflows/main.yml
dan tempelkan konten berikut: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
Bagian
on
berisi peristiwa yang memicu tindakan. Dalam file contoh, tindakan memicu saat perubahan didorong keazure-vote
direktori.Bagian berisi
steps
setiap tindakan yang berbeda:- Periksa kode sumber menggunakan GitHub Actions Checkout Actions untuk mengkloning repositori.
- ACR build menggunakan Azure Container Registry Build Action untuk membangun gambar dan mengunggahnya ke registri Anda.
- Login Azure menggunakan Azure Login Action untuk masuk ke akun Azure Anda.
- Atur konteks AKS menggunakan Azure AKS Set Context Action untuk mengatur konteks kluster AKS Anda.
- Siapkan kubectl menggunakan Azure AKS Setup Kubectl Action untuk menginstal kubectl pada runner Anda.
- Sebarkan ke AKS menggunakan Azure Kubernetes Deploy Action untuk menyebarkan aplikasi ke kluster Kubernetes Anda.
Terapkan file ke
.github/workflows/main.yml
repositori Anda.Untuk mengonfirmasi bahwa tindakan berfungsi, perbarui
azure-vote/azure-vote/config_file.cfg
dengan konten berikut:# UI Configurations TITLE = 'Azure Voting App' VOTE1VALUE = 'Fish' VOTE2VALUE = 'Dogs' SHOWHOST = 'false'
Terapkan yang diperbarui
azure-vote/azure-vote/config_file.cfg
ke repositori Anda.Di repositori Anda, pilih Tindakan dan konfirmasi alur kerja sedang berjalan. Kemudian, konfirmasikan alur kerja memiliki tanda centang hijau dan aplikasi yang diperbarui disebarkan ke kluster Anda.
Tinjau alur kerja pemula berikut untuk AKS. Untuk informasi selengkapnya, lihat Menggunakan alur kerja pemula.
Umpan balik Azure Kubernetes Service
Azure Kubernetes Service adalah proyek sumber terbuka. Pilih tautan untuk memberikan umpan balik: