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 harus mengelola infrastruktur cloud yang rumit atau orkestrator kontainer yang kompleks, dan tanpa 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.App namespace layanan dan Microsoft.OperationalInsights .

Catatan

Sumber daya Azure Container Apps telah bermigrasi dari namespace layanan Microsoft.Web ke namespace layanan Microsoft.App. Lihat Migrasi Namespace layanan dari Microsoft.Web ke Microsoft.App pada bulan Maret 2022 untuk detail selengkapnya.

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

Mengunduh aplikasi sampel

Untuk mengikuti tutorial ini, Anda memerlukan aplikasi sampel untuk kontainer. Contoh aplikasi web Go disediakan di repositori GitHub msdocs-go-webapp-quickstart . 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. Anda akan menggunakannya untuk menyimpan gambar Docker yang berisi sampel aplikasi web Go yang disediakan dalam repositori sampel yang disebutkan sebelumnya.

Jalankan perintah berikut untuk membuat Azure Container Registry:

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

    
    
    az group create \
        --name <resourceGroupName> \
        --location eastus
    
  2. Buat Azure Container Registry dengan perintah az acr create .

    az acr create \
        --resource-group <resourceGroupName> \
        --name <azureContainerRegistryName> \
        --sku basic
    
  3. Masuk ke instans kontainer Azure dengan perintah az acr login .

    az acr login --name <azureContainerRegistryName>  
    

Ganti <resourceGroupName> dan <azureContainerRegistryName> dengan nilai yang sesuai. Nama Azure Container Registry Anda harus unik secara global.

Catatan

Jika Anda mendapatkan kesalahan yang mirip dengan yang berikut ini saat menjalankan az acr login perintah, pastikan deamon docker berjalan pada sistem Anda:

You may want to use 'az acr login -n <azureContainerRegistryName> --expose-token' to get an access token, which does not require Docker to be installed.
2024-09-12 17:25:25.127779 An error occurred: DOCKER_COMMAND_ERROR

Membangun dan mendorong gambar Docker

Setelah Anda membuat Azure Container Registry, buat dan dorong gambar Docker dari sampel aplikasi web Go.

Jalankan perintah berikut membangun dan mendorong gambar ke registri:

  1. Dapatkan informasi server masuk dengan perintah az acr show .

    az acr show \
        --name <azureContainerRegistryName> \
        --resource-group <resourceGroupName> \
        --query loginServer \
        --output tsv  
    
  2. Buat gambar Docker secara lokal.

    docker build -t <loginServer>/<imageName>:latest .
    
  3. Dorong gambar Docker ke Azure Container Registry.

    docker push <loginServer>/<imageName>:latest
    
  4. Verifikasi bahwa gambar berhasil didorong ke Azure Container Registry dengan perintah az acr repository list .

    az acr repository list \
        --name <azureContainerRegistryName> \
        --output table
    

Ganti loginServer, imageName dan azureContainerRegistryName dengan nilai yang sesuai. Nama gambar adalah gambar Docker yang didorong ke Azure Container Registry dan kemudian digunakan untuk menyebarkan ke Azure Container Apps.

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 aman, di mana lingkungan Azure Container Apps masuk. 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.

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

    az containerapp env create \
        --name <containerAppEnvName> \
        --resource-group <resourceGroupName> \
        --location "East US"
    

Menyebarkan ke Azure Container Apps

Pada titik ini, Anda telah membuat Azure Container Registry, membangun dan mendorong gambar Docker ke dalamnya, dan membuat lingkungan Azure Container Apps. Yang tersisa hanyalah menyebarkan aplikasi.

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

az containerapp create \
    --name <containerAppName> \
    --resource-group <resourceGroupName> \
    --environment <containerAppEnvName> \
    --image "<loginServer>/<imageName>:latest" \
    --registry-server "<loginServer>" \
    --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/kata sandi, yang kurang aman, untuk mengautentikasi dengan registri kontainer. Perintah ini juga secara otomatis membuat AcrPull penetapan peran untuk identitas, sehingga diotorisasi untuk menarik gambar dari registri. Untuk menggunakan identitas terkelola untuk autentikasi dan otorisasi, registri harus merupakan Azure Container Registry.

Memverifikasi URL aplikasi web

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

APP_FQDN=$(az containerapp show \
    --name <containerAppName> \
    --resource-group <resourceGroupName> \
    --query properties.configuration.ingress.fqdn \
    --output tsv)

Selanjutnya, jalankan perintah curl terhadap FQDN dan konfirmasi output mencerminkan HTML situs web.

curl "https://$APP_FQDN"

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 <resourceGroupName> \
    --no-wait

Langkah berikutnya