Bagikan melalui


Lakukan penyebaran ke Aplikasi Azure Container dengan GitHub Actions

Azure Container Apps memungkinkan Anda menggunakan Tindakan GitHub untuk menerbitkan revisi ke aplikasi kontainer Anda. Saat penerapan didorong ke repositori GitHub Anda, alur kerja dipicu yang memperbarui gambar kontainer di registri kontainer. Azure Container Apps membuat revisi baru berdasarkan gambar kontainer yang diperbarui.

Perubahan pada repo GitHub memicu tindakan untuk membuat revisi baru.

Alur kerja GitHub Actions dipicu oleh penerapan ke cabang tertentu di repositori Anda. Saat membuat alur kerja, Anda memutuskan cabang mana yang memicu alur kerja.

Artikel ini memperlihatkan kepada Anda cara membuat alur kerja yang dapat disesuaikan sepenuhnya. Untuk menghasilkan alur kerja GitHub Actions pemula dengan Azure CLI, lihat Membuat alur kerja GitHub Actions dengan Azure CLI.

Tindakan GitHub Azure Container Apps

Untuk membangun dan menyebarkan aplikasi kontainer, Anda menambahkan azure/container-apps-deploy-action tindakan ke alur kerja GitHub Actions Anda.

Tindakan ini mendukung skenario berikut:

  • Membangun dari Dockerfile dan menyebarkan ke Aplikasi Kontainer
  • Buat dari kode sumber tanpa Dockerfile dan sebarkan ke Aplikasi Kontainer. Bahasa yang didukung termasuk .NET, Java, Node.js, PHP, dan Python
  • Menyebarkan gambar kontainer yang ada ke Aplikasi Kontainer

Contoh penggunaan

Berikut adalah beberapa skenario umum untuk menggunakan tindakan. Untuk informasi selengkapnya, lihat halaman GitHub Marketplace tindakan.

Membangun dan menyebarkan ke Aplikasi Kontainer

Cuplikan berikut menunjukkan cara membuat gambar kontainer dari kode sumber dan menyebarkannya ke Container Apps.

steps:

  - name: Log in to Azure
    uses: azure/login@v1
    with:
      creds: ${{ secrets.AZURE_CREDENTIALS }}

  - name: Build and deploy Container App
    uses: azure/container-apps-deploy-action@v1
    with:
      appSourcePath: ${{ github.workspace }}/src
      acrName: myregistry
      containerAppName: my-container-app
      resourceGroup: my-rg

Tindakan ini menggunakan Dockerfile di appSourcePath untuk membangun gambar kontainer. Jika tidak ada Dockerfile yang ditemukan, tindakan mencoba membangun gambar kontainer dari kode sumber di appSourcePath.

Menyebarkan gambar kontainer yang ada ke Aplikasi Kontainer

Cuplikan berikut menunjukkan cara menyebarkan gambar kontainer yang ada ke Container Apps.

steps:

  - name: Log in to Azure
    uses: azure/login@v1
    with:
      creds: ${{ secrets.AZURE_CREDENTIALS }}

  - name: Build and deploy Container App
    uses: azure/container-apps-deploy-action@v1
    with:
      acrName: myregistry
      containerAppName: my-container-app
      resourceGroup: my-rg
      imageToDeploy: myregistry.azurecr.io/app:${{ github.sha }}

Penting

Jika Anda membangun gambar kontainer dalam langkah terpisah, pastikan Anda menggunakan tag unik seperti SHA penerapan alih-alih tag stabil seperti latest. Untuk informasi selengkapnya, lihat Praktik terbaik tag gambar.

Mengautentikasi dengan Azure Container Registry

Tindakan Azure Container Apps perlu mengautentikasi dengan Azure Container Registry Anda untuk mendorong gambar kontainer. Aplikasi kontainer juga perlu mengautentikasi dengan Azure Container Registry Anda untuk menarik gambar kontainer.

Untuk mendorong gambar, tindakan secara otomatis mengautentikasi dengan registri kontainer yang ditentukan dalam acrName menggunakan kredensial yang disediakan untuk tindakan.azure/login

Untuk menarik gambar, Azure Container Apps menggunakan identitas terkelola (disarankan) atau info masuk admin untuk mengautentikasi dengan Azure Container Registry. Untuk menggunakan identitas terkelola, aplikasi kontainer yang disebarkan tindakan harus dikonfigurasi untuk menggunakan identitas terkelola. Untuk mengautentikasi dengan kredensial admin registri, atur input dan acrPassword tindakanacrUsername.

Konfigurasi

Anda mengambil langkah-langkah berikut untuk mengonfigurasi alur kerja GitHub Actions untuk disebarkan ke Azure Container Apps.

  • Membuat repositori GitHub untuk aplikasi Anda
  • Membuat aplikasi kontainer dengan identitas terkelola diaktifkan
  • AcrPull Menetapkan peran untuk Azure Container Registry ke identitas terkelola aplikasi kontainer
  • Mengonfigurasi rahasia di repositori GitHub Anda
  • Membuat alur kerja GitHub Actions

Prasyarat

Persyaratan Petunjuk
Akun Azure Jika Anda tidak memilikinya, buat akun secara gratis. Anda memerlukan izin Kontributor atau Pemilik pada langganan Azure untuk melanjutkan. Lihat Menetapkan peran Azure menggunakan portal Azure untuk detailnya.
Akun GitHub Mendaftar secara gratis.
Azure CLI Instal Azure CLI.

Membuat repositori GitHub dan mengkloning kode sumber

Sebelum Anda membuat alur kerja, kode sumber untuk aplikasi Anda harus berada di repositori GitHub.

  1. Masuk ke Azure dengan Azure CLI.

    az login
    
  2. Selanjutnya, instal ekstensi Azure Container Apps terbaru untuk CLI.

    az extension add --name containerapp --upgrade
    
  3. Jika Anda tidak memiliki repositori GitHub Anda sendiri, buat repositori dari sampel.

    1. Navigasi ke lokasi berikut untuk membuat repositori baru:
    2. Beri nama repositori my-container-appAnda .
  4. Kloning repositori ke mesin lokal Anda.

    git clone https://github.com/<YOUR_GITHUB_ACCOUNT_NAME>/my-container-app.git
    

Membuat aplikasi kontainer dengan identitas terkelola diaktifkan

Buat aplikasi kontainer Anda menggunakan az containerapp up perintah dalam langkah-langkah berikut. Perintah ini membuat sumber daya Azure, membangun gambar kontainer, menyimpan gambar dalam registri, dan menyebarkan ke aplikasi kontainer.

Setelah membuat aplikasi, Anda dapat menambahkan identitas terkelola ke aplikasi dan menetapkan identitas AcrPull peran untuk memungkinkan identitas menarik gambar dari registri.

  1. Ubah ke folder src repositori kloning.

    cd my-container-app
    cd src
    
  2. Buat sumber daya Azure dan sebarkan aplikasi kontainer dengan az containerapp up perintah .

    az containerapp up \
      --name my-container-app \
      --source . \
      --ingress external 
    
  3. Dalam output perintah, perhatikan nama Azure Container Registry.

  4. Dapatkan ID sumber daya lengkap dari registri kontainer.

    az acr show --name <ACR_NAME> --query id --output tsv
    

    Ganti <ACR_NAME> dengan nama aplikasi web Anda.

  5. Aktifkan identitas terkelola untuk aplikasi kontainer.

    az containerapp identity assign \
      --name my-container-app \
      --resource-group my-container-app-rg \
      --system-assigned \
      --output tsv
    

    Perhatikan ID utama identitas terkelola dalam output perintah.

  6. Tetapkan AcrPull peran untuk Azure Container Registry ke identitas terkelola aplikasi kontainer.

    az role assignment create \
      --assignee <MANAGED_IDENTITY_PRINCIPAL_ID> \
      --role AcrPull \
      --scope <ACR_RESOURCE_ID>
    

    Ganti <MANAGED_IDENTITY_PRINCIPAL_ID> dengan ID utama identitas terkelola dan <ACR_RESOURCE_ID> dengan ID sumber daya Azure Container Registry.

  7. Konfigurasikan aplikasi kontainer untuk menggunakan identitas terkelola untuk menarik gambar dari Azure Container Registry.

    az containerapp registry set \
      --name my-container-app \
      --resource-group my-container-app-rg \
      --server <ACR_NAME>.azurecr.io \
      --identity system
    

    Ganti <ACR_NAME> dengan nama Azure Container Registry Anda.

Mengonfigurasi rahasia di repositori GitHub Anda

Alur kerja GitHub memerlukan rahasia bernama AZURE_CREDENTIALS untuk mengautentikasi dengan Azure. Rahasia berisi kredensial untuk perwakilan layanan dengan peran Kontributor pada grup sumber daya yang berisi aplikasi kontainer dan registri kontainer.

  1. Buat perwakilan layanan dengan peran Kontributor pada grup sumber daya yang berisi aplikasi kontainer dan registri kontainer.

    az ad sp create-for-rbac \
      --name my-app-credentials \
      --role contributor \
      --scopes /subscriptions/<SUBSCRIPTION_ID>/resourceGroups/my-container-app-rg \
      --json-auth \
      --output json
    

    Ganti <SUBSCRIPTION_ID> dengan ID langganan Azure Anda. Jika registri kontainer Anda berada dalam grup sumber daya yang berbeda, tentukan kedua grup sumber daya dalam --scopes parameter .

  2. Salin output JSON dari perintah .

  3. Di repositori GitHub, navigasikan ke Pengaturan> Aksi> Keamanan dan pilih Rahasia repositori baru.

  4. Masukkan AZURE_CREDENTIALS sebagai nama dan tempelkan konten output JSON sebagai nilai .

  5. Pilih Tambahkan rahasia.

Membuat alur kerja GitHub Actions

  1. Di repositori GitHub, navigasikan ke Tindakan dan pilih Alur kerja baru.

  2. Pilih Siapkan alur kerja Anda sendiri.

  3. Tempelkan YAML berikut ke editor.

    name: Azure Container Apps Deploy
    
    on:
      push:
        branches:
          - main
    
    jobs:
      build:
        runs-on: ubuntu-latest
    
        steps:
          - uses: actions/checkout@v3
    
          - name: Log in to Azure
            uses: azure/login@v1
            with:
              creds: ${{ secrets.AZURE_CREDENTIALS }}
    
          - name: Build and deploy Container App
            uses: azure/container-apps-deploy-action@v1
            with:
              appSourcePath: ${{ github.workspace }}/src
              acrName: <ACR_NAME>
              containerAppName: my-container-app
              resourceGroup: my-container-app-rg
    

    Ganti <ACR_NAME> dengan nama Azure Container Registry Anda. Konfirmasikan bahwa nama cabang di bawah branches dan nilai untuk appSourcePath, containerAppName, dan resourceGroup cocok dengan nilai untuk repositori dan sumber daya Azure Anda.

  4. Terapkan perubahan pada cabang utama .

Alur kerja GitHub Actions yang dijalankan harus mulai membangun dan menyebarkan aplikasi kontainer Anda. Untuk memeriksa kemajuannya, navigasikan ke Tindakan.

Untuk menyebarkan revisi baru aplikasi Anda, dorong penerapan baru ke cabang utama .