Latihan - Membuat alur Azure DevOps untuk menyebarkan aplikasi cloud-native Anda
Manajer Anda ingin Anda mengubah CI/CD untuk aplikasi eShop perusahaan untuk menggunakan Azure Pipelines. Sekarang Anda akan membuat Alur Azure DevOps untuk membangun dan menyebarkan layanan produk Anda.
Membuat Alur Azure DevOps
Penting
Sebelum memulai, Anda harus memiliki akun Azure DevOps. Jika Anda tidak memilikinya, Anda dapat membuatnya secara gratis di dev.azure.com.
- Masuk ke dev.azure.com.
- Pilih + Proyek baru.
- Untuk Nama proyek, masukkan penyebaran eShop.
- Biarkan Visibilitas diatur ke Privat, dan pilih Buat.
- Di sebelah kiri, pilih Alur, lalu pilih Buat Alur.
- Pada halaman Connect, untuk Di mana kode Anda?, pilih GitHub.
- Jika diminta, masuk ke GitHub, dan otorisasi Azure Pipelines untuk mengakses akun GitHub Anda.
- Untuk Pilih repositori, pilih repositori turunan (fork) Anda.
- Pada halaman Konfigurasikan, pilih opsi Sebarkan ke Azure Kubernetes Service.
- Di panel Sebarkan ke Azure Kubernetes Service , pilih langganan Azure Anda, lalu pilih Lanjutkan.
- Jika diminta, masuk ke langganan Azure Anda.
- Untuk Kluster , pilih kluster AKS yang Anda buat di unit sebelumnya aks-eshop.
- Untuk Namespace, biarkan Ada dipilih, lalu pilih default.
- Untuk Container Registry, pilih Azure Container Registry yang Anda buat di modul sebelumnya seperti acseshop186748394.
- Untuk Nama gambar, masukkan productservice .
- Untuk Port Layanan , masukkan 8080.
- Pilih Validasi dan konfigurasikan.
Meninjau file YAML pipeline
Azure Pipelines menggunakan file YAML untuk menentukan langkah-langkah untuk membangun dan menyebarkan aplikasi Anda. File YAML disimpan di repositori GitHub Anda dan dibuat secara otomatis untuk Anda, berdasarkan informasi yang Anda berikan.
Mari kita tinjau file YAML:
trigger:
- main
resources:
- repo: self
variables:
# Container registry service connection established during pipeline creation
dockerRegistryServiceConnection: '3bcbb23c-6fca-4ff0-8719-bfbdb64a89b1'
imageRepository: 'productservice'
containerRegistry: 'acseshop186748394.azurecr.io'
dockerfilePath: '**/Dockerfile'
tag: '$(Build.BuildId)'
imagePullSecret: 'acseshop18674839414442d34-auth'
# Agent VM image name
vmImageName: 'ubuntu-latest'
stages:
- stage: Build
displayName: Build stage
jobs:
- job: Build
displayName: Build
pool:
vmImage: $(vmImageName)
steps:
- task: Docker@2
displayName: Build and push an image to container registry
inputs:
command: buildAndPush
repository: $(imageRepository)
dockerfile: $(dockerfilePath)
containerRegistry: $(dockerRegistryServiceConnection)
tags: |
$(tag)
- upload: manifests
artifact: manifests
- stage: Deploy
displayName: Deploy stage
dependsOn: Build
jobs:
- deployment: Deploy
displayName: Deploy
pool:
vmImage: $(vmImageName)
environment: 'PhilStollerymod9cloudnativeexercisecode-1959.default'
strategy:
runOnce:
deploy:
steps:
- task: KubernetesManifest@0
displayName: Create imagePullSecret
inputs:
action: createSecret
secretName: $(imagePullSecret)
dockerRegistryEndpoint: $(dockerRegistryServiceConnection)
- task: KubernetesManifest@0
displayName: Deploy to Kubernetes cluster
inputs:
action: deploy
manifests: |
$(Pipeline.Workspace)/manifests/deployment.yml
$(Pipeline.Workspace)/manifests/service.yml
imagePullSecrets: |
$(imagePullSecret)
containers: |
$(containerRegistry)/$(imageRepository):$(tag)
Bagian pemicu dan sumber daya menentukan kapan jalur harus dijalankan. Dalam hal ini, alur akan berjalan ketika perubahan dilakukan pada cabang utama repositori Anda.
Bagian variabel mendefinisikan variabel yang digunakan dalam pipeline. Variabel-variabel digunakan untuk menentukan Azure Container Registry dan Dockerfile yang digunakan.
YAML kemudian mendefinisikan pekerjaan Build yang menggunakan agen terbaru ubuntu. Pekerjaan ini menggunakan tugas Docker untuk membangun dan mendorong gambar ke Azure Container Registry.
Tahap terakhir adalah Menerapkan layanan produk yang telah diperbarui ke AKS. Pekerjaan ini menggunakan tugas KubernetesManifest untuk menyebarkan gambar ke AKS.
Jalankan alur
Pada bagian kanan atas halaman Tinjau YAML alur Anda, pilih Simpan dan jalankan. Di panel Simpan dan jalankan:
- Pilih Buat cabang baru untuk commit ini.
- Biarkan semua opsi lain diatur ke defaultnya.
- Pilih Simpan dan jalankan.
Memantau dan memecahkan masalah alur
Azure Pipelines dipantau dan dikelola dari portal Azure DevOps. Mari kita lihat hasil dari menjalankan alur kerja yang Anda buat.
Halaman ringkasan menunjukkan kepada Anda semua tahap alur yang sedang berjalan. Anda dapat memilih tahap untuk melihat langkah-langkah secara lebih rinci. Sebentar lagi, Anda akan melihat bahwa pipeline telah gagal. Pilih tahap Build.
Pada tahap pembangunan, Anda dapat melihat bahwa pembangunan tersebut telah gagal. Pilih di langkah Build dan unggah citra ke Azure Container Registry. Kesalahan dalam file log menunjukkan:
##[error]Unhandled: No Dockerfile matching /home/vsts/work/1/s/**/Dockerfile was found.
Memperbaiki kesalahan
Di DevOps, kembali ke halaman ringkasan alur. Anda akan mengedit alur yang dibuat untuk memperbaiki kesalahan.
Di kanan atas, pilih menu Tindakan lainnya , lalu pilih Edit alur.
Baris 17 dari file YAML mendefinisikan Dockerfile untuk digunakan, dan secara default alur mengharapkan ada file bernama Dockerfile di akar repositori.
eShop menggunakan file docker yang berbeda untuk layanan produk bernama DockerfileProducts. Edit Baris 17 menjadi:
dockerfilePath: '**/DockerfileProducts.acr'Pilih Simpan.
Di panel Simpan, pilih Simpan.
Pilih Jalankan lalu, di panel Jalankan alur, pilih Jalankan.
Perhatikan tahap pembangunan selesai pada. Tahap Sebarkan berhenti hingga Anda memilihnya dan mengizinkannya untuk menjalankannya.
Jalur pemrosesan berhasil diselesaikan dengan sukses. Pilih tahap Sebarkan untuk melihat langkah-langkahnya.