Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
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
Selesaikan panduan memulai cepat berikut: Membuat instans Azure API Management.
Untuk Azure CLI:
Gunakan lingkungan Bash di Azure Cloud Shell. Untuk informasi selengkapnya, lihat Mulai menggunakan 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 penginstalan lokal, masuk ke Azure CLI dengan menggunakan perintah az login. Untuk menyelesaikan proses autentikasi, ikuti langkah-langkah yang ditampilkan di terminal Anda. Untuk opsi masuk lainnya, lihat Mengautentikasi ke Azure menggunakan Azure CLI.
Saat diminta, instal ekstensi Azure CLI saat pertama kali digunakan. Untuk informasi selengkapnya tentang ekstensi, lihat Menggunakan dan mengelola ekstensi dengan Azure CLI.
Jalankan az version untuk mengetahui versi dan pustaka dependen yang terinstal. Untuk meng-upgrade ke versi terbaru, jalankan az upgrade.
Nota
Contoh perintah Azure CLI dalam artikel ini memerlukan
containerappekstensi Azure CLI. Jika Anda belum menggunakanaz containerappperintah, ekstensi diinstal secara dinamis saat Anda menjalankan perintah pertamaaz containerappAnda. Pelajari selengkapnya tentang ekstensi Azure CLI.
Memprovisikan gateway di instans Azure 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 artikel ini, gateway diberi nama my-gateway.
Mendapatkan pengaturan penyebaran gateway dari API Management
Untuk menyebarkan gateway, Anda memerlukan nilai titik akhirToken dan Konfigurasi gateway. Anda dapat menemukannya di portal Microsoft Azure:
- Masuk ke portal Microsoft Azure, dan buka instans Azure API Management Anda.
- Di menu sebelah kiri, di bawah Penyebaran + infrastruktur, pilih Gateway yang dihost sendiri.
- Pilih sumber daya gateway yang Anda provisikan, dan pilihPenyebaran>.
- Salin nilai titik akhirToken dan Konfigurasi.
Menyebarkan gateway yang dihost sendiri ke aplikasi kontainer
Anda dapat menyebarkan gambar kontainer gateway yang dihost sendiri ke aplikasi kontainer menggunakan portal Microsoft 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-environmentyang 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 .
Tetapkan variabel untuk nilai Token dan titik akhir Konfigurasi dari sumber daya gateway Azure 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.9.2" \
--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-gatewaydalammyResourceGroupgrup sumber daya. Dalam contoh ini, aplikasi kontainer menggunakan citramcr.microsoft.com/azure-api-management/gateway:2.9.2. Untuk informasi selengkapnya tentang gateway yang dihost sendiri, lihat gambar kontainer.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 Azure API Management dengan meneruskan nilai konfigurasi dalam variabel lingkungan. Untuk detailnya, lihat pengaturan konfigurasi kontainer pada gateway yang dihosting sendiri.
Nota
ingress Azure Container Apps meneruskan permintaan HTTPS ke aplikasi kontainer gateway yang dihosting sendiri sebagai HTTP. Di sini,
net.server.http.forwarded.proto.enabledvariabel lingkungan diatur ketruesehingga gateway yang dihost sendiri menggunakanX-Forwarded-Protoheader untuk menentukan protokol asli permintaan.
Konfirmasikan bahwa aplikasi kontainer sedang berjalan
Masuk ke portal Microsoft Azure, dan buka aplikasi kontainer Anda.
Pada halaman Gambaran Umum aplikasi kontainer, periksa apakah StatusSedang Berjalan.
Kirim permintaan pengujian ke titik akhir status di
/status-012345678990abcdef. Misalnya, gunakancurlyang mirip dengan perintah berikut.curl -i https://my-gateway.happyvalley-abcd1234.centralus.azurecontainerapps.io/status-012345678990abcdefJika permintaan berhasil, akan mengembalikan respons
200 OK.
Petunjuk / Saran
Dengan menggunakan CLI, Anda juga dapat menjalankan perintah az containerapp show untuk memeriksa status aplikasi kontainer.
Pastikan bahwa kondisi gateway baik
Masuk ke portal Microsoft Azure dan buka instans Azure API Management Anda.
Di menu sebelah kiri, di bawah Penyebaran + infrastruktur, pilih Gateway yang dihost sendiri.
Pada halaman Gambaran Umum , periksa Status gateway Anda. Jika gateway berfungsi dengan baik, ia melaporkan detak jantung 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.
- Sebarkan aplikasi kontainer yang menghosting API di lingkungan yang sama dengan gateway yang dihost sendiri.
- Tambahkan API ke instans Azure API Management Anda.
- Panggil API melalui gateway yang dihost sendiri.
Menyebarkan aplikasi kontainer yang menghosting API di lingkungan yang sama dengan gateway yang dihost sendiri
Dalam contoh ini, Anda menyebarkan contoh API album musik ke aplikasi kontainer. Untuk mengakses API nanti dengan 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
/albumstitik 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 Microsoft Azure, dan buka aplikasi kontainer Anda.
- Di menu sebelah kiri, pilih Networking>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 Azure API Management Anda
Langkah-langkah berikut menunjukkan cara menambahkan API ke instans Azure 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 Microsoft Azure, buka instans API Management tempat Anda mengonfigurasi gateway yang dihost sendiri.
- Di menu sebelah kiri, pilih API 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(S).
- 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
/albumsuntuk titik akhir. - Pilih Simpan.
Memanggil API melalui gateway yang dihost sendiri
Gunakan FQDN dari gateway yang dihosting sendiri yang berjalan di aplikasi kontainer untuk memanggil API. Temukan FQDN di halaman Gambaran Umum aplikasi kontainer di portal Microsoft Azure, atau jalankan perintah berikut az 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"}]
Petunjuk / Saran
Jika Anda mengaktifkan pengelogan untuk API Anda ke Application insights, Anda dapat mengkueri log untuk melihat permintaan dan respons.
Keterbatasan
Instans gateway yang dihost sendiri mengandalkan protokol UDP untuk komunikasi heartbeat dan batas kecepatan. Karena Azure Container Apps saat ini tidak mendukung protokol UDP, baik untuk ingress maupun untuk lalu lintas internal, kebijakan rate-limit tidak dapat mensinkronisasi penghitungnya di seluruh setiap instans. Akibatnya, mempertahankan tiga replika aplikasi kontainer gateway yang dihost sendiri dengan batas X dapat mengakibatkan tiga kali lalu lintas hingga batas X tercapai.
Azure Container Apps mendistribusikan permintaan secara linier di setiap replika yang tersedia dan sehat. Untuk menerapkan pembatasan tarif, Anda dapat membagi batas yang diinginkan dengan jumlah replika yang ingin Anda jalankan dan mengatur nilai yang dihasilkan dalam konfigurasi. Pendekatan ini memiliki kelemahan tersendiri karena Anda mungkin tidak dapat memperhitungkan penghitung yang telah disesuaikan apabila dan ketika aplikasi kontainer Anda diskalakan.