Membangun dan menyebarkan ke Azure Kubernetes Service dengan Azure Pipelines
Azure DevOps
Gunakan Azure Pipelines untuk menyebarkan secara otomatis ke Azure Kubernetes Service (AKS). Azure Pipelines memungkinkan Anda membangun, menguji, dan menyebarkan dengan integrasi berkelanjutan (CI) dan pengiriman berkelanjutan (CD) menggunakan Azure DevOps.
Dalam artikel ini, Anda akan mempelajari cara membuat alur yang terus-menerus membangun dan menyebarkan aplikasi Anda. Setiap kali Anda mengubah kode Anda di repositori yang berisi Dockerfile, gambar didorong ke Azure Container Registry Anda, dan manifes kemudian disebarkan ke kluster AKS Anda.
Prasyarat
- Akun Azure dengan langganan aktif. Buat akun secara gratis.
- Koneksi layanan Azure Resource Manager. Buat koneksi layanan Azure Resource Manager.
- Akun GitHub. Buat akun GitHub gratis jika Anda belum memilikinya.
Mendapatkan kode
Buat cabang pada repositori berikut yang berisi aplikasi contoh dan Dockerfile:
https://github.com/MicrosoftDocs/pipelines-javascript-docker
Membuat sumber daya Azure
Masuk ke portal Microsoft Azure, lalu pilih tombol Cloud Shell di sudut kanan atas. Gunakan Azure CLI atau PowerShell untuk membuat kluster AKS.
Membuat registri kontainer
# Create a resource group
az group create --name myapp-rg --location eastus
# Create a container registry
az acr create --resource-group myapp-rg --name mycontainerregistry --sku Basic
# Create a Kubernetes cluster
az aks create \
--resource-group myapp-rg \
--name myapp \
--node-count 1 \
--enable-addons monitoring \
--generate-ssh-keys
Masuk ke Azure Pipelines
Masuk ke Azure Pipelines. Setelah Anda masuk, browser Anda masuk ke https://dev.azure.com/my-organization-name
dan menampilkan dasbor Azure DevOps Anda.
Dalam organisasi yang Anda pilih, buat proyek. Jika Anda tidak memiliki proyek apa pun di organisasi Anda, Anda melihat layar Buat proyek untuk memulai. Jika tidak, pilih tombol Buat Project di sudut kanan atas dasbor.
Membuat alur
Menghubungkan dan memilih repositori Anda
Masuk ke organisasi Azure DevOps Anda dan buka proyek Anda.
Buka Alur, lalu pilih Alur baru.
Lakukan langkah-langkah wizard dengan terlebih dahulu memilih GitHub sebagai lokasi kode sumber Anda.
Anda dapat diarahkan ke GitHub untuk masuk. Jika demikian, masukkan informasi masuk GitHub Anda.
Saat Anda melihat daftar repositori, pilih repositori Anda.
Anda mungkin diarahkan ke GitHub untuk menginstal aplikasi Azure Pipelines. Jika demikian, pilih Setujui & instal.
Pilih Sebarkan ke Azure Kubernetes Service.
Jika Anda diminta, pilih langganan tempat Anda membuat registri dan kluster.
Pilih kluster
myapp
.Untuk Namespace, pilih Yang sudah ada, lalu pilih default.
Pilih nama registri kontainer Anda.
Anda dapat membiarkan nama gambar diatur ke default.
Atur port layanan ke 8080.
Atur kotak centang Aktifkan Aplikasi Tinjau untuk Permintaan Pull untuk meninjau konfigurasi terkait aplikasi yang akan disertakan dalam alur YAML yang dibuat secara otomatis dalam langkah-langkah berikutnya.
Pilih Validasi dan konfigurasikan.
Saat Azure Pipelines membuat alur Anda, prosesnya akan:
Buat koneksi layanan registri Docker untuk mengaktifkan alur Anda untuk mendorong gambar ke registri kontainer Anda.
Buat lingkungan dan sumber daya Kubernetes di dalam lingkungan. Untuk kluster yang didukung RBAC, sumber daya Kubernetes yang dibuat secara implisit membuat objek ServiceAccount dan RoleBinding di kluster sehingga ServiceAccount yang dibuat tidak dapat melakukan operasi di luar namespace yang dipilih.
Buat file azure-pipelines.yml, yang menentukan alur Anda.
Buat file manifes Kubernetes. File ini dibuat dengan menghidrasi template deployment.yml dan service.yml berdasarkan pilihan yang Anda buat. Saat Anda siap, pilih Simpan dan jalankan.
Pilih Simpan dan jalankan.
Anda dapat mengubah Pesan penerapan menjadi sesuatu seperti Tambahkan alur ke repositori kami. Saat Anda siap, pilih Simpan dan jalankan untuk menerapkan alur baru ke dalam repositori Anda, lalu mulai eksekusi pertama dari alur baru Anda!
Melihat penyebaran aplikasi Anda
Saat alur Anda berjalan, perhatikan tahap build Anda, lalu tahap penyebaran Anda, dari biru (berjalan) menjadi hijau (selesai). Anda dapat memilih tahapan dan pekerjaan untuk melihat alur Anda yang dijalankan.
Catatan
Jika Anda menggunakan agen yang dihosting Microsoft, Anda harus menambahkan rentang IP agen yang dihosting Microsoft ke firewall Anda. Dapatkan daftar mingguan rentang IP dari file JSON mingguan, yang diterbitkan setiap hari Rabu. Rentang IP baru mulai berlaku pada hari Senin berikutnya. Untuk informasi selengkapnya, lihat agen yang dihosting Microsoft. Untuk menemukan rentang IP yang diperlukan untuk organisasi Azure DevOps Anda, pelajari cara mengidentifikasi kemungkinan rentang IP untuk agen yang dihosting Microsoft.
Setelah eksekusi alur selesai, jelajahi apa yang terjadi lalu lihat aplikasi Anda disebarkan. Dari ringkasan alur:
Pilih tab Lingkungan.
Pilih Lihat lingkungan.
Pilih instance aplikasi Anda untuk namespace layanan yang Anda terapkan. Jika Anda menggunakan default, maka itu adalah aplikasi myapp di namespace default .
Pilih tab Layanan.
Pilih dan salin alamat IP eksternal ke clipboard Anda.
Buka tab atau jendela browser baru dan masukkan <alamat IP>:8080.
Jika Anda membangun aplikasi contoh kami, maka Halo dunia akan muncul di browser Anda.
Cara alur dibangun
Setelah Anda selesai memilih opsi, lalu melanjutkan untuk memvalidasi dan mengonfigurasi alur Azure Pipelines membuat alur untuk Anda, menggunakan templat Menyebarkan ke Azure Kubernetes Service.
Tahap build menggunakan tugas Docker untuk membangun dan mendorong gambar ke Azure Container Registry.
- stage: Build
displayName: Build stage
jobs:
- job: Build
displayName: Build job
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)
- task: PublishPipelineArtifact@1
inputs:
artifactName: 'manifests'
path: 'manifests'
Pekerjaan penyebaran menggunakan tugas manifes Kubernetes untuk membuat imagePullSecret
yang diperlukan oleh node kluster Kubernetes untuk menarik dari sumber daya Azure Container Registry. File manifes kemudian digunakan oleh tugas manifes Kubernetes untuk disebarkan ke kluster Kubernetes. File manifes, service.yml
dan deployment.yml
, dihasilkan saat Anda menggunakan templat Sebarkan ke Azure Kubernetes Service .
- stage: Deploy
displayName: Deploy stage
dependsOn: Build
jobs:
- deployment: Deploy
displayName: Deploy job
pool:
vmImage: $(vmImageName)
environment: 'myenv.aksnamespace' #customize with your environment
strategy:
runOnce:
deploy:
steps:
- task: DownloadPipelineArtifact@2
inputs:
artifactName: 'manifests'
downloadPath: '$(System.ArtifactsDirectory)/manifests'
- task: KubernetesManifest@1
displayName: Create imagePullSecret
inputs:
action: 'createSecret'
connectionType: 'kubernetesServiceConnection'
kubernetesServiceConnection: 'myapp-default' #customize for your Kubernetes service connection
secretType: 'dockerRegistry'
secretName: '$(imagePullSecret)'
dockerRegistryEndpoint: '$(dockerRegistryServiceConnection)'
- task: KubernetesManifest@1
displayName: Deploy to Kubernetes cluster
inputs:
action: 'deploy'
connectionType: 'kubernetesServiceConnection'
kubernetesServiceConnection: 'myapp-default' #customize for your Kubernetes service connection
manifests: |
$(Pipeline.Workspace)/manifests/deployment.yml
$(Pipeline.Workspace)/manifests/service.yml
containers: '$(containerRegistry)/$(imageRepository):$(tag)'
imagePullSecrets: '$(imagePullSecret)'
Membersihkan sumber daya
Setiap kali Anda selesai dengan sumber daya yang Anda buat, Anda dapat menggunakan perintah berikut untuk menghapusnya:
az group delete --name myapp-rg
Masukkan y
saat Anda diminta.
Azure Kubernetes Service