Bagikan melalui


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

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

  1. Masuk ke organisasi Azure DevOps Anda dan buka proyek Anda.

  2. Buka Alur, lalu pilih Alur baru.

  3. Lakukan langkah-langkah wizard dengan terlebih dahulu memilih GitHub sebagai lokasi kode sumber Anda.

  4. Anda dapat diarahkan ke GitHub untuk masuk. Jika demikian, masukkan informasi masuk GitHub Anda.

  5. Saat Anda melihat daftar repositori, pilih repositori Anda.

  6. Anda mungkin diarahkan ke GitHub untuk menginstal aplikasi Azure Pipelines. Jika demikian, pilih Setujui & instal.

  7. Pilih Sebarkan ke Azure Kubernetes Service.

  8. Jika Anda diminta, pilih langganan tempat Anda membuat registri dan kluster.

  9. Pilih kluster myapp.

  10. Untuk Namespace, pilih Yang sudah ada, lalu pilih default.

  11. Pilih nama registri kontainer Anda.

  12. Anda dapat membiarkan nama gambar diatur ke default.

  13. Atur port layanan ke 8080.

  14. 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.

  15. 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.

  16. Pilih Simpan dan jalankan.

  17. 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:

  1. Pilih tab Lingkungan.

  2. Pilih Lihat lingkungan.

  3. Pilih instance aplikasi Anda untuk namespace layanan yang Anda terapkan. Jika Anda menggunakan default, maka itu adalah aplikasi myapp di namespace default .

  4. Pilih tab Layanan.

  5. Pilih dan salin alamat IP eksternal ke clipboard Anda.

  6. 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.