Latihan - Membuat tindakan GitHub untuk disebarkan ke AKS
- 10 menit
Dalam latihan ini, Anda akan menyelesaikan tugas-tugas berikut:
- Tingkatkan tindakan GitHub yang ada untuk menyertakan tugas penerapan.
- Verifikasi bahwa perubahan disebarkan ke kluster Azure Kubernetes Service (AKS).
- Batalkan penyebaran.
Memperbarui manifes Kubernetes untuk layanan produk
Untuk menyebarkan versi baru layanan produk eShop, edit file product.yml untuk mengarahkan ke Azure Container Registry (ACR) yang Anda gunakan di unit sebelumnya.
Di repositori fork Anda, pilih code tab, lalu pilih file product.yml.
Untuk mengedit file, pilih ikon edit (pensil).
Sunting baris ini
containers: - image: [replace with your ACR name].azurecr.io/productservice:latest[replace with your ACR name]Ganti dengan nama ACR Anda, seperti acseshop186748394.Di kanan atas, pilih Terapkan perubahan..., lalu dalam dialog pilih Terapkan perubahan.
Membuat tindakan penyebaran
Kode YAML menambahkan langkah GitHub yang memiliki satu langkah, yang menyebarkan gambar baru. Berikut adalah langkah-langkah dalam pelari ubuntu-latest:
- Memeriksa repositori tempat file ini berada.
- Azure Login masuk ke Azure dengan kredensial perwakilan layanan.
- Menyiapkan kubelogin untuk login non-interaktif mengonfigurasi file kubeconfig untuk autentikasi Azure.
- Dapatkan konteks set konteks K8s mengatur kredensial Azure Kubernetes Service (AKS) dalam file runner.kube/config.
- Menyebarkan aplikasi menyebarkan aplikasi ke AKS, menggunakan gambar yang dibangun pada langkah sebelumnya dan file manifes Kubernetes yang Anda edit sebelumnya.
Selesaikan langkah-langkah berikut untuk membuat tindakan GitHub yang menyebarkan layanan kupon:
Di repositori fork Anda, pada code tab, pilih tab .github/workflows.
Pilih azure-kubernetes-service.yml.
Untuk mengedit file, pilih ikon edit (pensil).
Di bagian bawah file, tempelkan kode YAML berikut ke editor:
deploy: permissions: actions: read contents: read id-token: write runs-on: ubuntu-latest needs: [buildImage] steps: # Checks out the repository this file is in - uses: actions/checkout@v3 # Logs in with your Azure credentials - name: Azure login uses: azure/login@v1.4.6 with: creds: '${{ secrets.AZURE_CREDENTIALS }}' # Use kubelogin to configure your kubeconfig for Azure auth - name: Set up kubelogin for non-interactive login uses: azure/use-kubelogin@v1 with: kubelogin-version: 'v0.0.25' # Retrieves your Azure Kubernetes Service cluster's kubeconfig file - name: Get K8s context uses: azure/aks-set-context@v3 with: resource-group: ${{ env.RESOURCE_GROUP }} cluster-name: ${{ env.CLUSTER_NAME }} admin: 'false' use-kubelogin: 'true' # Deploys application based on given manifest file - name: Deploys application uses: Azure/k8s-deploy@v4 with: action: deploy manifests: ${{ env.DEPLOYMENT_MANIFEST_PATH }} images: | ${{ env.AZURE_CONTAINER_REGISTRY }}.azurecr.io/${{ env.CONTAINER_NAME }}:${{ github.sha }} pull-images: falseDi kanan atas, pilih Terapkan perubahan..., lalu dalam dialog pilih Terapkan perubahan.
Memicu penyebaran
Memperbarui file azure-kubernetes-service.yml dan melakukan perubahan secara otomatis memicu penyebaran lain. Sekarang, lihat bagaimana perubahan kode yang dilakukan dapat memicu penyebaran lain.
Anda memiliki produk baru yang ingin ditambahkan tim pemasaran Anda ke katalog.
Di repositori fork Anda, pada code tab, pilih folder Products.
Pilih folder Data.
Pilih file ProductDataContext.c.
Untuk mengedit file, pilih ikon edit (pensil).
Di bagian bawah file, tambahkan produk baru ke larik produk :
new Product { Name = "Camping Tent 2", Description = "This updated tent is improved and cheaper, perfect for your next trip.", Price = 79.99m, ImageUrl = "product9.png" },Di kanan atas, pilih Terapkan perubahan..., lalu dalam dialog pilih Terapkan perubahan.
Memantau penyebaran
Untuk memantau kemajuan penyebaran, pilih tab Actions.
Pilih hasil eksekusi alur kerja terbaru yang tercantum untuk alur kerja Build and deploy an app to AKS. Nama eksekusi adalah pesan penerapan yang Anda gunakan di langkah sebelumnya.
Pilih tugas deploy untuk melihat detail pelaksanaan alur kerja ini.
Di terminal, jalankan perintah berikut untuk memantau pod layanan kupon di kluster AKS Anda. Pengaturan
--selectormenyaring daftar agar hanya menampilkan pod untuk layanan kupon, dan pengaturan--watchmenginstruksikankubectluntuk memantau perubahan.kubectl get pods --selector=app=productservice --watchSelama proses penyebaran, variasi dari output berikut muncul:
NAME READY STATUS RESTARTS AGE productservice-7979d4c47-xlcrr 1/1 Running 0 17m productservice-ff98b6d8d-7wmsh 0/1 Pending 0 0s productservice-ff98b6d8d-7wmsh 0/1 Pending 0 0s productservice-ff98b6d8d-7wmsh 0/1 ContainerCreating 0 0s productservice-ff98b6d8d-7wmsh 1/1 Running 0 4s productservice-7979d4c47-xlcrr 1/1 Terminating 0 19mPada output sebelumnya, perhatikan bahwa pod productservice baru dibuat. Ketika pod baru siap, pod lama akan dihentikan. Proses ini membuat transisi ke versi baru semulus mungkin.
Memverifikasi aplikasi
Selesaikan langkah-langkah berikut untuk memverifikasi bahwa aplikasi Anda masih berfungsi:
Lihat eShop yang disebarkan dengan menjalankan perintah ini di terminal:
echo "http://$(kubectl get services --namespace ingress-nginx ingress-nginx-controller --output jsonpath='{.status.loadBalancer.ingress[0].ip}')"Perintah mengembalikan alamat IP eksternal untuk aplikasi web. Tahan CTRL dan pilih tautan untuk membuka aplikasi di tab baru.
Buka halaman produk untuk melihat tenda baru yang tercantum di bagian bawah halaman.
Batalkan penerapan
Salah satu mitigasi umum untuk masalah produksi adalah kembali ke penyebaran yang sudah terbukti baik. Kubernetes mempertahankan riwayat penyebaran yang dapat Anda gunakan untuk mengembalikan ke versi aplikasi sebelumnya.
Di terminal Anda, jalankan perintah ini untuk menghapus tenda baru yang baru saja Anda tambahkan ke situs web:
kubectl rollout undo deployment/productservice
Anda akan melihat pesan konsol ini:
deployment.apps/productservice rolled back
Segarkan halaman produk di browser Anda, dan tenda baru tidak akan lagi tercantum.
Nota
Dalam skenario kehidupan nyata, Anda menerapkan hasil build ke beberapa lingkungan. Misalnya, Anda mungkin memiliki lingkungan pengembangan, pengujian, dan penahapan. Anda dapat memicu alur kerja penyebaran berdasarkan peristiwa seperti penggabungan PR. Anda dapat menambahkan gerbang kualitas atau persetujuan, seperti persetujuan PR pemangku kepentingan, untuk mencegah penyebaran tak terduga ke produksi.