Menyebarkan gateway yang dihost sendiri Azure API Management ke Azure Container Apps
BERLAKU UNTUK: Pengembang | Premium
Artikel ini menyediakan langkah-langkah untuk menyebarkan komponen gateway yang dihost sendiri dari Azure API Management ke Azure Container Apps.
Sebarkan gateway yang dihost sendiri ke aplikasi kontainer untuk mengakses API yang dihosting di lingkungan Azure Container Apps yang sama.
Prasyarat
Menyelesaikan mulai cepat berikut: Membuat instans Azure API Management.
Untuk Azure CLI:
Gunakan lingkungan Bash di Azure Cloud Shell. Untuk informasi selengkapnya, lihat Mulai Cepat untuk Bash di Azure Cloud Shell.
Jika Anda lebih suka menjalankan perintah referensi CLI secara lokal, instal Azure CLI. Jika Anda menjalankan Windows atau macOS, pertimbangkan untuk menjalankan Azure CLI dalam kontainer Docker. Untuk informasi lebih lanjut, lihat Cara menjalankan Azure CLI di kontainer Docker.
Jika Anda menggunakan instalasi lokal, masuk ke Azure CLI dengan menggunakan perintah login az. Untuk menyelesaikan proses autentikasi, ikuti langkah-langkah yang ditampilkan di terminal Anda. Untuk opsi masuk lainnya, lihat Masuk dengan Azure CLI.
Saat Anda diminta, instal ekstensi Azure CLI pada penggunaan pertama. Untuk informasi selengkapnya tentang ekstensi, lihat Menggunakan ekstensi dengan Azure CLI.
Jalankan versi az untuk menemukan versi dan pustaka dependen yang diinstal. Untuk meningkatkan ke versi terbaru, jalankan peningkatan az.
Catatan
Contoh perintah Azure CLI dalam artikel ini memerlukan
containerapp
ekstensi Azure CLI. Jika Anda belum menggunakanaz containerapp
perintah, ekstensi diinstal secara dinamis saat Anda menjalankan perintah pertamaaz containerapp
Anda. Pelajari selengkapnya tentang ekstensi Azure CLI.
Memprovisikan gateway di instans API Management Anda
Sebelum menyebarkan gateway yang dihost sendiri, provisikan sumber daya gateway di instans Azure API Management Anda. Untuk langkah-langkahnya, lihat Menyediakan gateway yang dihost sendiri. Dalam contoh dalam artikel ini, gateway diberi nama my-gateway
.
Mendapatkan pengaturan penyebaran gateway dari API Management
Untuk menyebarkan gateway, Anda memerlukan nilai titik akhir Token dan Konfigurasi gateway. Anda dapat menemukannya di portal Azure:
- Masuk ke portal Microsoft Azure, dan buka instans API Management Anda.
- Di menu sebelah kiri, di bawah Penyebaran dan infrastruktur, pilih Gateway.
- Pilih sumber daya gateway yang Anda provisikan, dan pilih Penyebaran.
- Salin nilai titik akhir Token dan Konfigurasi.
Menyebarkan gateway yang dihost sendiri ke aplikasi kontainer
Anda dapat menyebarkan gambar kontainer gateway yang dihost sendiri ke aplikasi kontainer menggunakan portal Azure, Azure CLI, atau alat lainnya. Artikel ini memperlihatkan langkah-langkah menggunakan Azure CLI.
Membuat lingkungan aplikasi kontainer
Pertama, buat lingkungan aplikasi kontainer menggunakan perintah az containerapp env create :
#!/bin/bash
az containerapp env create --name my-environment --resource-group myResourceGroup \
--location centralus
Perintah ini membuat:
- Lingkungan aplikasi kontainer bernama
my-environment
yang Anda gunakan untuk mengelompokkan aplikasi kontainer. - Ruang kerja analitik log
Membuat aplikasi kontainer untuk gateway yang dihost sendiri
Untuk menyebarkan gateway yang dihost sendiri ke aplikasi kontainer di lingkungan, jalankan perintah az containerapp create .
Variabel pertama yang ditetapkan untuk nilai titik akhir Token dan Konfigurasi dari sumber daya gateway API Management.
#!/bin/bash
endpoint="<API Management configuration endpoint>"
token="<API Management gateway token>"
Buat aplikasi kontainer menggunakan az containerapp create
perintah :
#!/bin/bash
az containerapp create --name my-gateway \
--resource-group myResourceGroup --environment 'my-environment' \
--image "mcr.microsoft.com/azure-api-management/gateway:2.5.0" \
--target-port 8080 --ingress external \
--min-replicas 1 --max-replicas 3 \
--env-vars "config.service.endpoint"="$endpoint" "config.service.auth"="$token" "net.server.http.forwarded.proto.enabled"="true"
Perintah ini membuat:
Aplikasi kontainer bernama
my-gateway
dalammyResourceGroup
grup sumber daya. Dalam contoh ini, aplikasi kontainer dibuat menggunakanmcr.microsoft.com/azure-api-management/gateway:2.5.0
gambar. Pelajari selengkapnya tentang gambar kontainer gateway yang dihost sendiri.Dukungan untuk ingress eksternal ke aplikasi kontainer pada port 8080.
Minimal 1 dan maksimum 3 replika aplikasi kontainer.
Koneksi dari gateway yang dihost sendiri ke instans API Management menggunakan nilai konfigurasi yang diteruskan dalam variabel lingkungan. Untuk detailnya, lihat pengaturan konfigurasi kontainer gateway yang dihost sendiri.
Catatan
ingress Azure Container Apps meneruskan permintaan HTTPS ke aplikasi kontainer gateway yang dihost sendiri sebagai HTTP. Di sini,
net.server.http.forwarded.proto.enabled
variabel lingkungan diatur ketrue
sehingga gateway yang dihost sendiri menggunakanX-Forwarded-Proto
header untuk menentukan protokol asli permintaan.
Konfirmasikan bahwa aplikasi kontainer sedang berjalan
Masuk ke portal Azure, dan navigasikan ke aplikasi kontainer Anda.
Pada halaman Gambaran Umum aplikasi kontainer, periksa apakah Status Sedang Berjalan.
Kirim permintaan pengujian ke titik akhir status di
/status-012345678990abcdef
. Misalnya, gunakan perintah yangcurl
mirip dengan yang berikut ini.curl -i https://my-gateway.happyvalley-abcd1234.centralus.azurecontainerapps.io/status-012345678990abcdef
Permintaan yang
200 OK
berhasil mengembalikan respons.
Tip
Dengan menggunakan CLI, Anda juga dapat menjalankan perintah az containerapp show untuk memeriksa status aplikasi kontainer.
Konfirmasikan bahwa gateway sehat
Masuk ke portal Microsoft Azure, dan buka instans API Management Anda.
Di menu sebelah kiri, di bawah Penyebaran dan infrastruktur, pilih Gateway.
Pada halaman Gambaran Umum , periksa Status gateway Anda. Jika gateway sehat, gateway melaporkan heartbeat gateway reguler.
Contoh skenario
Contoh berikut menunjukkan bagaimana Anda dapat menggunakan gateway yang dihost sendiri untuk mengakses API yang dihosting di aplikasi kontainer di lingkungan yang sama. Seperti yang ditunjukkan dalam diagram berikut, gateway yang dihost sendiri dapat diakses dari internet, sementara API hanya dapat diakses dalam lingkungan aplikasi kontainer.
- Menyebarkan aplikasi kontainer yang menghosting API di lingkungan yang sama dengan gateway yang dihost sendiri
- Menambahkan API ke instans API Management Anda
- Memanggil API melalui gateway yang dihost sendiri
Menyebarkan aplikasi kontainer yang menghosting API di lingkungan yang sama dengan gateway yang dihost sendiri
Misalnya, sebarkan contoh API album musik ke aplikasi kontainer. Untuk akses nanti ke API menggunakan gateway yang dihost sendiri, sebarkan API di lingkungan yang sama dengan gateway yang dihost sendiri. Untuk langkah-langkah dan informasi terperinci tentang sumber daya yang digunakan dalam contoh ini, lihat Mulai Cepat: Membangun dan menyebarkan dari kode sumber lokal ke Azure Container Apps. Langkah-langkah yang disingkat mengikuti:
Unduh kode sumber Python ke komputer lokal Anda. Jika mau, unduh kode sumber dalam bahasa lain pilihan Anda.
Ekstrak kode sumber ke folder lokal dan ubah ke folder containerapps-albumapi-python-main/src .
Jalankan perintah az containerapp up berikut untuk menyebarkan API ke aplikasi kontainer di lingkungan yang sama dengan gateway yang dihost sendiri.
.
Perhatikan di akhir perintah, yang menentukan folder saat ini sebagai sumber untuk aplikasi kontainer.#!/bin/bash az containerapp up --name albums-api \ --resource-group myResourceGroup --location centralus \ --environment my-environment --source .
Konfirmasikan bahwa aplikasi kontainer berjalan dan dapat diakses secara eksternal di FQDN yang dikembalikan dalam output perintah. Secara default API dapat diakses di
/albums
titik akhir. Contoh:https://albums-api.happyvalley-abcd1234.centralus.azurecontainerapps.io/albums/albums
.
Mengonfigurasi API untuk ingress internal
Sekarang perbarui aplikasi kontainer yang menghosting API sampel untuk mengaktifkan masuk hanya di lingkungan kontainer. Pengaturan ini membatasi akses ke API hanya dari gateway yang dihost sendiri yang Anda sebarkan.
- Masuk ke portal Azure, dan navigasikan ke aplikasi kontainer Anda.
- Di menu sebelah kiri, pilih Ingress.
- Atur Ingress ke Diaktifkan.
- Di Lalu lintas masuk, pilih Terbatas pada Lingkungan Aplikasi Kontainer.
- Tinjau pengaturan yang tersisa dan pilih Simpan.
Menambahkan API ke instans API Management Anda
Berikut ini adalah contoh langkah-langkah untuk menambahkan API ke instans API Management Anda dan mengonfigurasi backend API. Untuk informasi selengkapnya, lihat Menambahkan API ke Azure API Management.
Menambahkan API ke instans API Management Anda
- Di portal, navigasikan ke instans API Management tempat Anda mengonfigurasi gateway yang dihost sendiri.
- Di menu sebelah kiri, pilih API>+ Tambahkan API.
- Pilih HTTP dan pilih Penuh. Masukkan pengaturan berikut:
- Nama tampilan: Masukkan nama deskriptif. Contoh: API Album.
- URL layanan web: Masukkan FQDN internal aplikasi kontainer yang menghosting API. Contoh:
http://albums-api.internal.happyvalley-abcd1234.centralus.azurecontainerapps.io
. - Skema URL: Pilih HTTP.
- Akhiran URL API: Masukkan akhiran pilihan Anda. Contoh: albumapi.
- Gateway: Pilih gateway yang dihost sendiri yang Anda provisikan. Contoh: my-gateway.
- Konfigurasikan pengaturan API lainnya sesuai dengan skenario Anda. Pilih Buat.
Menambahkan operasi API
- Di menu sebelah kiri, pilih API>Album API API.
- Pilih + Tambahkan operasi.
- Masukkan pengaturan operasi:
- Nama tampilan: Masukkan nama deskriptif untuk operasi. Contoh: Dapatkan album.
- URL: Pilih Dapatkan dan masukkan
/albums
untuk titik akhir. - Pilih Simpan.
Memanggil API melalui gateway yang dihost sendiri
Panggil API menggunakan FQDN gateway yang dihost sendiri yang berjalan di aplikasi kontainer. Temukan FQDN di halaman Gambaran Umum aplikasi kontainer di portal Azure, atau jalankan perintah berikutaz containerapp show
.
#!/bin/bash
az containerapp show --name my-gateway --resource-group myResourceGroup \
--query "properties.configuration.ingress.fqdn" --output tsv
Misalnya, jalankan perintah berikut curl
untuk memanggil API di /albumapi/albums
titik akhir. Jika API Anda memerlukan kunci langganan, berikan kunci langganan yang valid untuk instans API Management Anda sebagai header dalam permintaan:
curl -i https://my-gateway.happyvalley-abcd1234.centralus.azurecontainerapps.io/albumapi/albums -H "Ocp-Apim-Subscription-Key: <subscription-key>"
Ketika pengujian berhasil, backend merespons dengan kode respons HTTP yang berhasil dan beberapa data.
HTTP/1.1 200 OK
content-length: 751
content-type: application/json
date: Wed, 28 Feb 2024 22:45:09 GMT
[...]
[{"id":1,"title":"You, Me and an App Id","artist":"Daprize","price":10.99,"image_url":"https://aka.ms/albums-daprlogo"},{"id":2,"title":"Seven Revision Army","artist":"The Blue-Green Stripes","price":13.99,"image_url":"https://aka.ms/albums-containerappslogo"},{"id":3,"title":"Scale It Up","artist":"KEDA Club","price":13.99,"image_url":"https://aka.ms/albums-kedalogo"},{"id":4,"title":"Lost in Translation","artist":"MegaDNS","price":12.99,"image_url":"https://aka.ms/albums-envoylogo"},{"id":5,"title":"Lock Down Your Love","artist":"V is for VNET","price":12.99,"image_url":"https://aka.ms/albums-vnetlogo"},{"id":6,"title":"Sweet Container O' Mine","artist":"Guns N Probeses","price":14.99,"image_url":"https://aka.ms/albums-containerappslogo"}]
Tip
Jika Anda telah mengaktifkan pengelogan API ke Application insights, Anda dapat mengkueri log untuk melihat permintaan dan respons.