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
Gateway yang dihost sendiri dari Azure API Management memerlukan konektivitas dengan instance API Management berbasis cloud yang terkait untuk melaporkan status, memeriksa dan menerapkan konfigurasi pembaruan, serta mengirim metrik dan peristiwa.
Selain menggunakan token akses gateway (kunci autentikasi) untuk terhubung dengan instans API Management berbasis cloud-nya, Anda dapat mengaktifkan gateway yang dihost sendiri untuk mengautentikasi ke instans cloud terkait dengan menggunakan aplikasi Microsoft Entra. Dengan autentikasi Microsoft Entra, Anda dapat mengonfigurasi waktu kedaluwarsa yang lebih lama untuk rahasia dan menggunakan langkah-langkah standar untuk mengelola dan memutar rahasia di Direktori Aktif.
Gambaran umum skenario
API konfigurasi gateway yang dihost sendiri dapat memeriksa kontrol akses berbasis peran Azure (RBAC) untuk menentukan siapa yang memiliki izin untuk membaca konfigurasi gateway. Setelah Anda membuat aplikasi Microsoft Entra dengan izin tersebut, gateway yang dihost sendiri dapat mengautentikasi ke instans API Management menggunakan aplikasi.
Untuk mengaktifkan autentikasi Microsoft Entra, selesaikan langkah-langkah berikut:
- Buat dua peran kustom untuk:
- Biarkan API konfigurasi mendapatkan akses ke informasi RBAC pelanggan
- Memberikan izin untuk membaca konfigurasi gateway yang dihost sendiri
- Memberikan akses RBAC ke identitas terkelola instans API Management
- Membuat aplikasi Microsoft Entra dan memberinya akses untuk membaca konfigurasi gateway
- Menyebarkan gateway dengan opsi konfigurasi baru
Prasyarat
- Instans API Management di tingkat layanan Pengembang atau Premium. Jika diperlukan, selesaikan panduan memulai cepat berikut: Buat instans Azure API Management.
- Provisikan sumber daya gateway pada instans.
- Aktifkan identitas terkelola yang ditetapkan sistem pada instans.
- Gambar kontainer gateway yang dihost sendiri versi 2.2 atau yang lebih baru
Catatan batasan
- Hanya identitas terkelola yang ditetapkan sistem yang didukung.
Membuat peran kustom
Buat dua peran kustom berikut yang ditetapkan di langkah selanjutnya. Anda dapat menggunakan izin yang tercantum dalam templat JSON berikut untuk membuat peran kustom menggunakan portal Microsoft Azure, Azure CLI, Azure PowerShell, atau alat Azure lainnya.
Saat mengonfigurasi peran kustom, perbarui AssignableScopes properti dengan nilai cakupan yang sesuai untuk direktori Anda, seperti langganan tempat instans API Management Anda ditempatkan.
Peran Layanan Akses Validator Konfigurasi Manajemen API
{
"Description": "Can access RBAC permissions on the API Management resource to authorize requests in Configuration API.",
"IsCustom": true,
"Name": "API Management Configuration API Access Validator Service Role",
"Permissions": [
{
"Actions": [
"Microsoft.Authorization/*/read"
],
"NotActions": [],
"DataActions": [],
"NotDataActions": []
}
],
"NotDataActions": [],
"AssignableScopes": [
"/subscriptions/{subscriptionID}"
]
}
Peran Pembaca Konfigurasi Gateway API Management
{
"Description": "Can read self-hosted gateway configuration from Configuration API",
"IsCustom": true,
"Name": "API Management Gateway Configuration Reader Role",
"Permissions": [
{
"Actions": [],
"NotActions": [],
"DataActions": [
"Microsoft.ApiManagement/service/gateways/getConfiguration/action"
],
"NotDataActions": []
}
],
"NotDataActions": [],
"AssignableScopes": [
"/subscriptions/{subscriptionID}"
]
}
Menambahkan penetapan peran
Menetapkan Peran Layanan Validator Akses Konfigurasi Manajemen API
Tetapkan Peran Layanan Validator Akses untuk Konfigurasi API Management ke identitas terkelola dari instans API Management. Untuk langkah-langkah terperinci untuk menetapkan peran, lihat Menetapkan peran Azure menggunakan portal.
- Cakupan: Grup sumber daya atau langganan tempat instans API Management disebarkan
- Peran: Layanan Validator Akses API Management Configuration API
- Menetapkan akses ke: Identitas Terkelola dari Instans API Management
Menetapkan Peran Pembaca Konfigurasi Gateway Manajemen API
Langkah 1: Daftarkan aplikasi Microsoft Entra
Buat aplikasi Microsoft Entra baru. Untuk langkah-langkahnya, lihat Membuat aplikasi Microsoft Entra dan perwakilan layanan yang dapat mengakses sumber daya. Aplikasi Microsoft Entra digunakan oleh gateway yang dihost sendiri untuk mengautentikasi ke instans API Management.
- Membuat rahasia klien
- Perhatikan nilai aplikasi berikut untuk digunakan di bagian berikutnya saat menyebarkan gateway yang dihost sendiri: ID aplikasi (klien), ID direktori (penyewa), dan rahasia klien
Langkah 2: Tetapkan Peran Layanan Pembaca Konfigurasi Gateway Manajemen API
Tetapkan Peran Layanan Pembaca Konfigurasi Gateway API Management ke aplikasi.
- Cakupan: Instans API Management (atau grup sumber daya atau langganan tempat aplikasi disebarkan)
- Peran: Peran Pembaca Konfigurasi Gateway API Management
- Menetapkan akses ke: Aplikasi Microsoft Entra
Menyebarkan gateway yang dihost sendiri
Sebarkan gateway yang dihost sendiri ke Kubernetes, menambahkan pengaturan pendaftaran aplikasi Microsoft Entra ke data elemen gateway ConfigMap. Dalam contoh file konfigurasi YAML berikut, gateway diberi nama mygw dan file diberi nama mygw.yaml.
Penting
Jika Anda mengikuti panduan penyebaran Kubernetes yang ada:
- Pastikan untuk menghilangkan langkah untuk menyimpan kunci autentikasi default menggunakan
kubectl create secret genericperintah . - Ganti file konfigurasi dasar berikut untuk file YAML default yang dihasilkan portal Microsoft Azure untuk Anda. File berikut menambahkan konfigurasi Microsoft Entra sebagai pengganti konfigurasi untuk menggunakan kunci autentikasi.
---
apiVersion: v1
kind: ConfigMap
metadata:
name: mygw-env
labels:
app: mygw
data:
config.service.endpoint: "<service-name>.configuration.azure-api.net"
config.service.auth: azureAdApp
config.service.auth.azureAd.authority: "https://login.microsoftonline.com"
config.service.auth.azureAd.tenantId: "<Azure AD tenant ID>"
config.service.auth.azureAd.clientId: "<Azure AD client ID>"
config.service.auth.azureAd.clientSecret: "<Azure AD client secret>"
gateway.name: <gateway-id>
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: mygw
labels:
app: mygw
spec:
replicas: 1
selector:
matchLabels:
app: mygw
strategy:
type: RollingUpdate
rollingUpdate:
maxUnavailable: 0
maxSurge: 25%
template:
metadata:
labels:
app: mygw
spec:
terminationGracePeriodSeconds: 60
containers:
- name: mygw
image: mcr.microsoft.com/azure-api-management/gateway:v2
ports:
- name: http
containerPort: 8080
- name: https
containerPort: 8081
# Container port used for rate limiting to discover instances
- name: rate-limit-dc
protocol: UDP
containerPort: 4290
# Container port used for instances to send heartbeats to each other
- name: dc-heartbeat
protocol: UDP
containerPort: 4291
readinessProbe:
httpGet:
path: /status-0123456789abcdef
port: http
scheme: HTTP
initialDelaySeconds: 0
periodSeconds: 5
failureThreshold: 3
successThreshold: 1
envFrom:
- configMapRef:
name: mygw-env
---
apiVersion: v1
kind: Service
metadata:
name: mygw-live-traffic
labels:
app: mygw
spec:
type: LoadBalancer
externalTrafficPolicy: Local
ports:
- name: http
port: 80
targetPort: 8080
- name: https
port: 443
targetPort: 8081
selector:
app: mygw
---
apiVersion: v1
kind: Service
metadata:
name: mygw-instance-discovery
labels:
app: mygw
annotations:
azure.apim.kubernetes.io/notes: "Headless service being used for instance discovery of self-hosted gateway"
spec:
clusterIP: None
type: ClusterIP
ports:
- name: rate-limit-discovery
port: 4290
targetPort: rate-limit-dc
protocol: UDP
- name: discovery-heartbeat
port: 4291
targetPort: dc-heartbeat
protocol: UDP
selector:
app: mygw
Sebarkan gateway ke Kubernetes dengan perintah berikut:
kubectl apply -f mygw.yaml
Konfirmasikan bahwa gateway sedang berjalan
Jalankan perintah berikut untuk memeriksa apakah penyebaran berhasil. Mungkin perlu sedikit waktu agar semua objek dibuat dan agar pod dapat diinisialisasi.
kubectl get deploymentsIni harus kembali
NAME READY UP-TO-DATE AVAILABLE AGE <gateway-name> 1/1 1 1 18sJalankan perintah berikut untuk memeriksa apakah layanan berhasil dibuat. IP dan port layanan Anda akan berbeda.
kubectl get servicesIni harus kembali
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE <gateway-name>-live-traffic ClusterIP None <none> 4290/UDP,4291/UDP 9m1s <gateway-name>-instance-discovery LoadBalancer 10.99.236.168 <pending> 80:31620/TCP,443:30456/TCP 9m1sKembali ke portal Microsoft Azure dan pilih Gambaran Umum.
Konfirmasikan bahwa Status menunjukkan tanda centang hijau, diikuti dengan jumlah simpul yang cocok dengan jumlah replika yang ditentukan dalam file YAML. Status ini berarti pod gateway yang di-host sendiri yang disebarkan berhasil berkomunikasi dengan layanan Manajemen API dan memiliki "heartbeat" yang teratur.
Petunjuk / Saran
- Jalankan
kubectl logs deployment/<gateway-name>perintah untuk melihat log dari pod yang dipilih secara acak jika ada lebih dari satu. - Jalankan
kubectl logs -huntuk serangkaian opsi perintah lengkap, seperti cara melihat log untuk pod atau kontainer tertentu.
Konten terkait
- Pelajari selengkapnya tentang API Management gateway yang dihosting sendiri.
- Pelajari selengkapnya tentang panduan untuk menjalankan gateway yang di-host sendiri di Kubernetes di lingkungan produksi.
- Pelajari cara menyebarkan gateway yang dihost sendiri API Management ke kluster Kubernetes dengan dukungan Azure Arc.