Bagikan melalui


Menyebarkan aplikasi web Go ke Azure Container Apps

Dalam mulai cepat ini, Anda belajar menyebarkan aplikasi web Go dalam kontainer ke Azure Container Apps.

Azure Container Apps memungkinkan Anda menjalankan kode aplikasi yang dikemas dalam kontainer apa pun tanpa mengelola infrastruktur cloud yang rumit atau orkestrator kontainer yang kompleks. Ini juga menghilangkan kebutuhan untuk khawatir tentang runtime atau model pemrograman. Penggunaan umum Azure Container Apps meliputi: Menyebarkan titik akhir API, menghosting aplikasi pemrosesan latar belakang, menangani pemrosesan berbasis peristiwa, dan menjalankan layanan mikro.

Ikuti tutorial ini untuk menelusuri pembuatan gambar Docker, menyebarkan gambar tersebut ke Azure Container Registry, dan menyebarkan aplikasi web Go ke Azure Container Apps.

Prasyarat

  • Langganan Azure: Jika Anda tidak memiliki langganan Azure, buat akun gratis sebelum memulai.

Siapkan

Untuk masuk ke Azure dari CLI, jalankan perintah az login dan ikuti perintah untuk menyelesaikan proses autentikasi.

az login

Untuk memastikan Anda menjalankan CLI versi terbaru, jalankan perintah az upgrade .

az upgrade

Selanjutnya, instal atau perbarui ekstensi Azure Container Apps untuk CLI.

Jika Anda menerima kesalahan tentang parameter yang hilang saat menjalankan az containerapp perintah di Azure CLI, pastikan Anda memiliki versi terbaru ekstensi Azure Container Apps yang terinstal.

az extension add --name containerapp --upgrade

Catatan

Mulai Mei 2024, ekstensi Azure CLI tidak lagi mengaktifkan fitur pratinjau secara default. Untuk mengakses fitur pratinjau Container Apps, instal ekstensi Container Apps dengan --allow-preview true.

az extension add --name containerapp --upgrade --allow-preview true

Sekarang setelah ekstensi atau modul saat ini diinstal, daftarkan Microsoft.Appnamespace , Microsoft.ContainerRegistry, dan Microsoft.OperationalInsights .

az provider register --namespace Microsoft.App
az provider register --namespace Microsoft.ContainerRegistry
az provider register --namespace Microsoft.OperationalInsights

Catatan

Sumber daya Azure Container Apps dimigrasikan dari namespace Microsoft.Web ke namespace Microsoft.App. Untuk informasi selengkapnya, lihat Migrasi namespace layanan dari Microsoft.Web ke Microsoft.App pada bulan Maret 2022.

Mengunduh aplikasi sampel

Untuk mengikuti tutorial ini, Anda memerlukan aplikasi sampel untuk kontainer. Repositori GitHub msdocs-go-webapp-quickstart menyediakan sampel aplikasi web Go. Unduh atau klon aplikasi contoh ke stasiun kerja lokal Anda.

git clone https://github.com/Azure-Samples/msdocs-go-webapp-quickstart.git

cd msdocs-go-webapp-quickstart

Membuat Azure Container Registry

Azure Container Registry memungkinkan Anda membuat, menyimpan, dan mengelola gambar kontainer. Gunakan untuk menyimpan gambar Docker yang berisi sampel aplikasi web Go yang disediakan di repositori sampel yang disebutkan sebelumnya.

Jalankan perintah berikut untuk membuat Azure Container Registry:

  1. Atur variabel lingkungan untuk sumber daya yang akan Anda buat. Ganti teks tempat penampung dalam tanda kurung siku dengan nilai yang sesuai. Nama Azure Container Registry Anda harus unik secara global.

    RESOURCE_GROUP_NAME="<resourceGroupName>"  # Name of the Azure resource group to create
    LOCATION="<location>"                      # Azure region (For example, "eastus", "westus2")
    ACR_NAME="<azureContainerRegistryName>"    # Globally unique name for Azure Container Registry
    

    Contoh perintah untuk mengatur variabel lingkungan adalah untuk shell Bash. Jika Anda menggunakan shell yang berbeda, sesuaikan perintahnya.

  2. Buat grup sumber daya Azure dengan perintah pembuatan grupaz.

    az group create \
        --name $RESOURCE_GROUP_NAME \
        --location $LOCATION
    
  3. Buat Azure Container Registry dengan perintah az acr create .

    az acr create \
        --resource-group $RESOURCE_GROUP_NAME \
        --name $ACR_NAME \
        --sku basic
    
  4. Masuk ke instans kontainer Azure dengan perintah az acr login .

    az acr login --name $ACR_NAME
    

    Catatan

    Jika Anda mendapatkan kesalahan yang mirip dengan kesalahan berikut saat menjalankan az acr login perintah, pastikan daemon Docker berjalan di sistem Anda:

    You may want to use 'az acr login -n $ACR_NAME --expose-token' to get an access token, which doesn't require Docker to be installed.
    An error occurred: DOCKER_COMMAND_ERROR
    

Membangun dan mendorong gambar Docker

Setelah Anda membuat Azure Container Registry, susun dan unggah Docker image dari aplikasi web Go yang berupa sampel.

Jalankan perintah berikut untuk membangun dan mendorong gambar ke registri.

  1. Atur variabel lingkungan untuk gambar Docker yang akan Anda buat. Ganti teks placeholder dalam kurung siku dengan nilai yang sesuai.

    IMAGE_NAME="go-webapp"  # Name for the Docker image
    

    Contoh perintah untuk mengatur variabel lingkungan adalah untuk shell Bash. Jika Anda menggunakan shell yang berbeda, sesuaikan perintahnya.

  2. Dapatkan informasi server masuk dengan perintah az acr show dan simpan dalam variabel lingkungan.

    LOGIN_SERVER=$(az acr show \
        --name $ACR_NAME \
        --resource-group $RESOURCE_GROUP_NAME \
        --query loginServer \
        --output tsv)
    
    echo "Login server: $LOGIN_SERVER"
    
  3. Buat gambar Docker secara lokal.

    docker build -t $LOGIN_SERVER/$IMAGE_NAME:latest .
    
  4. Dorong gambar Docker ke Azure Container Registry.

    docker push $LOGIN_SERVER/$IMAGE_NAME:latest
    
  5. Verifikasi bahwa gambar berhasil didorong ke Azure Container Registry dengan perintah az acr repository list .

    az acr repository list \
        --name $ACR_NAME \
        --output table
    

Sekarang setelah Anda memiliki gambar yang tersedia di Azure Container Registry, Anda siap untuk menyebarkan Aplikasi Kontainer Azure dan lingkungannya.

Membuat lingkungan Azure Container Apps

Azure Container Apps tidak memiliki kompleksitas orkestrator kontainer, tetapi masih memerlukan beberapa cara untuk menetapkan batas yang aman. Lingkungan Azure Container Apps menyediakan kemampuan ini. Aplikasi Kontainer yang disebarkan di lingkungan yang sama berbagi jaringan virtual yang sama dan menulis log ke ruang kerja Analitik Log yang sama. Sebelum dapat menyebarkan Aplikasi Kontainer Azure, Anda memerlukan lingkungan untuk disebarkan.

  1. Atur variabel lingkungan untuk sumber daya yang akan Anda buat. Ganti teks placeholder dalam tanda kurung dengan nilai yang sesuai.

    CONTAINER_APP_ENV="mygoappenv"  # Name for the Container Apps environment
    CONTAINER_APP_NAME="mygoapp"    # Name for your container app
    

    Contoh perintah untuk mengatur variabel lingkungan adalah untuk shell Bash. Jika Anda menggunakan shell yang berbeda, sesuaikan perintahnya.

  2. Jalankan perintah az containerapp env create untuk membuat lingkungan Azure Container Apps.

    az containerapp env create \
        --name $CONTAINER_APP_ENV \
        --resource-group $RESOURCE_GROUP_NAME \
        --location $LOCATION
    

Menyebarkan ke Azure Container Apps

Pada titik ini, Anda telah menyelesaikan langkah-langkah berikut:

  • Membuat Azure Container Registry.
  • Membuat dan mengunggah Docker image ke registri.
  • Siapkan lingkungan Azure Container Apps.

Langkah terakhir adalah menyebarkan aplikasi.

Jalankan perintah az containerapp create untuk menyebarkan aplikasi web Go ke Azure Container Apps.

az containerapp create \
    --name $CONTAINER_APP_NAME \
    --resource-group $RESOURCE_GROUP_NAME \
    --environment $CONTAINER_APP_ENV \
    --image "$LOGIN_SERVER/$IMAGE_NAME:latest" \
    --registry-server "$LOGIN_SERVER" \
    --registry-identity system \
    --target-port 8080 \
    --ingress external

Parameter --registry-identity system mengonfigurasi identitas terkelola yang ditetapkan sistem pada aplikasi kontainer. Aplikasi kontainer menggunakan identitas ini daripada nama pengguna dan kata sandi, yang kurang aman, untuk mengautentikasi dengan registri kontainer. Perintah ini juga secara otomatis membuat penugasan peran AcrPull bagi identitas ini, mengotorisasinya untuk mengambil gambar dari registri. Untuk menggunakan identitas terkelola untuk autentikasi dan otorisasi, registri harus merupakan Azure Container Registry.

Memverifikasi URL aplikasi web

  1. Jalankan perintah az containerapp show untuk mendapatkan FQDN (Nama Domain Yang Sepenuhnya Memenuhi Syarat) dari ingress aplikasi web.

    APP_FQDN=$(az containerapp show \
        --name $CONTAINER_APP_NAME \
        --resource-group $RESOURCE_GROUP_NAME \
        --query properties.configuration.ingress.fqdn \
        --output tsv)
    
    echo "App URL: https://$APP_FQDN"
    
  2. Jalankan perintah curl terhadap FQDN dan verifikasi bahwa output mencerminkan HTML dari situs web. Anda juga dapat membuka URL di browser web untuk berinteraksi dengan aplikasi web.

    curl "https://$APP_FQDN"
    

    'Perintah mengembalikan HTML untuk beranda aplikasi web yang mirip dengan yang berikut ini:

    <!DOCTYPE html>
    <html>
    
    <head>
        <title>Hello Azure - Go Quickstart</title>
        <link rel="stylesheet" href="/assets/main.css">
        <link rel="icon" type="image/x-icon" href="/assets/favicon.ico">
    </head>
    
    <header>
        <h1>Welcome to Azure</h1>
    </header>
    
    <section>
        <img src="/assets/images/azure-icon.svg">
        <form method="post">
            <label for="form-label">Could you please tell me your name?</label><br>
            <input type="text" id="name" name="name" style="max-width: 256px;"><br>
            <button type="submit">Say Hello</button>
        </form>
    </section>
    
    </html>
    

Membersihkan sumber daya

Setelah selesai dengan aplikasi contoh, Anda dapat menghapus semua sumber daya untuk aplikasi dari Azure. Melakukannya menghindari biaya yang sedang berlangsung dan menjaga langganan Azure Anda tetap tidak berantakan. Menghapus grup sumber daya juga menghapus semua sumber daya dalam grup sumber daya dan merupakan cara tercepat untuk menghapus semua sumber daya Azure untuk aplikasi Anda.

Jalankan perintah az group delete untuk menghapus grup sumber daya dan sumber dayanya.

az group delete \
    --name $RESOURCE_GROUP_NAME \
    --no-wait

Langkah berikutnya