Halaman ini berlaku untuk Apigee dan Apigee hybrid.
Lihat Dokumentasi Apigee Edge.
Contoh ini menunjukkan cara menggunakan Adaptor Apigee untuk Envoy dengan deployment hybrid Apigee.
Prasyarat
Sebelum memulai: |
---|
|
|
|
Ringkasan
Contoh ini menjelaskan cara menggunakan Adaptor Apigee untuk Envoy dengan Apigee Hybrid. Dalam contoh ini, Anda akan men-deploy layanan HTTP sederhana di Kubernetes yang sama cluster tempat Apigee Hybrid di-deploy. Kemudian, Anda akan mengonfigurasi Adaptor Apigee untuk Envoy untuk mengelola panggilan API ke layanan ini dengan Apigee.
Gambar berikut menunjukkan arsitektur dasar untuk integrasi hybrid Apigee:
Channel Proxy Envoy di-deploy dengan layanan HTTP target sebagai file bantuan Istio dalam mesh layanan Istio. File bantuan menangani traffic API ke dan dari layanan target, serta berkomunikasi dengan Layanan Jarak Jauh. {i>Remote Service<i} juga mengkomunikasikan dengan bidang pengelolaan hybrid untuk mengambil informasi proxy dan produk API.
Memeriksa konfigurasi gcloud
- Pastikan konfigurasi
gcloud
Anda sudah disetel ke project GCP yang terkait dengan organisasi hybrid.Untuk menampilkan daftar setelan saat ini:
gcloud config list
Jika perlu, tetapkan project ID GCP yang benar dengan perintah ini:
gcloud config set project project-id
- Anda harus diautentikasi dengan Google Cloud SDK (gcloud) untuk project GCP Anda:
gcloud auth login
Men-deploy layanan pengujian ke cluster
Pada langkah ini, Anda akan men-deploy layanan pengujian permintaan/respons HTTP sederhana ke cluster yang sama tempat Apigee Hybrid di-deploy.
- Buka direktori Remote Service:
cd $REMOTE_SERVICE_HOME
- Aktifkan injeksi Istio di namespace
default
cluster. Pada langkah selanjutnya, Anda akan men-deploy file bantuan Envoy ke cluster yang sama. Mengaktifkan injeksi Istio akan membuat kemungkinan deployment sidecar. Contoh ini menggunakan namespacedefault
, dan semua petunjuk berikutnya menganggap itulah yang terjadi.kubectl label namespace default istio-injection=enabled
- Terapkan layanan
httpbin
sederhana ke cluster di namespace default:kubectl apply -f samples/istio/httpbin.yaml
- Sekarang, uji layanannya. Memulai layanan
curl
yang berjalan di cluster dan membuka terminal:kubectl run -it curl --image=curlimages/curl --restart=Never -- sh
- Uji layanan dengan memanggilnya dari dalam cluster:
curl -i httpbin.default.svc.cluster.local/headers
Jika berhasil, Anda akan melihat status 200, dan layanan menampilkan daftar header. Contoh:
HTTP/1.1 200 OK server: envoy date: Tue, 12 May 2020 17:09:01 GMT content-type: application/json content-length: 328 access-control-allow-origin: * access-control-allow-credentials: true x-envoy-upstream-service-time: 7 { "headers": { "Accept": "*/*", "Content-Length": "0", "Host": "httpbin.default.svc.cluster.local", "User-Agent": "curl/7.70.0-DEV", "X-B3-Parentspanid": "69f88bc3e322e157", "X-B3-Sampled": "0", "X-B3-Spanid": "8dd725f30e393d8b", "X-B3-Traceid": "38093cd817ad30a569f88bc3e322e157" } }
Menyediakan Apigee Hybrid
Pada langkah ini, Anda akan menggunakan Remote Service CLI untuk menyediakan hybrid dengan
Proxy API remote-service
. Perintah penyediaan juga
menyiapkan sertifikat pada
Apigee, dan membuat kredensial yang akan digunakan layanan jarak jauh untuk terhubung kembali dengan aman ke Apigee.
- Buka direktori
$CLI_HOME
:cd $CLI_HOME
- Jika Anda bukan pemilik project GCP yang terkait dengan organisasi hybrid Apigee,
pastikan bahwa akun pengguna GCP Anda menyertakan peran
Apigee Organization Admin
. Lihat Memberikan, mengubah, dan mencabut akses ke resource. - Jalankan perintah ini untuk mendapatkan token akses:
TOKEN=$(gcloud auth print-access-token);echo $TOKEN
- Buat variabel lingkungan berikut. Variabel-variabel ini akan
digunakan sebagai
parameter ke skrip penyediaan:
export ORG=organization_name
export ENV=environment_name
export RUNTIME=host_alias_url
export NAMESPACE=hybrid_runtime_namespace
Dengan keterangan:
Variabel Deskripsi organization_name Nama organisasi Apigee untuk penginstalan hybrid Apigee Anda. environment_name Nama lingkungan di organisasi hybrid Apigee Anda. host_alias_url URL yang menyertakan hostAlias
untuk host virtual yang ditentukan dalam konfigurasi hybrid Anda. URL harus diawali denganhttps://
. Contoh:https://apitest.apigee-hybrid-docs.net
hybrid_runtime_namepace Namespace tempat runtime Hybrid komponen di-deploy. Catatan: Namespace default untuk deployment hybrid adalah apigee
. - Jalankan perintah berikut untuk menyediakan proxy layanan jarak jauh untuk Apigee Hybrid:
Jika Anda tidak melakukan upgrade, gunakan perintah ini untuk menyediakan Apigee:
./apigee-remote-service-cli provision --organization $ORG --environment $ENV \ --runtime $RUNTIME --namespace $NAMESPACE --token $TOKEN > config.yaml
Jika Anda melakukan upgrade, gunakan perintah ini dengan flag
--force-proxy-install
untuk menyediakan Apigee:./apigee-remote-service-cli provision --force-proxy-install --organization $ORG --environment $ENV \ --runtime $RUNTIME --namespace $NAMESPACE --token $TOKEN > config.yaml
- Periksa isi file
config.yaml
. Ini akan terlihat seperti berikut:# Configuration for apigee-remote-service-envoy # generated by apigee-remote-service-cli provision on 2020-07-06 18:03:58 apiVersion: v1 kind: ConfigMap metadata: name: apigee-remote-service-envoy namespace: apigee data: config.yaml: | tenant: remote_service_api: https://apitest.apigee-hybrid-docs.net/remote-service org_name: hybrid-docs env_name: envoy allow_unverified_ssl_cert: true analytics: collection_interval: 10s fluentd_endpoint: apigee-udca-hybrid-docs-envoy.apigee:20001 tls: ca_file: /opt/apigee/tls/ca.crt key_file: /opt/apigee/tls/tls.key cert_file: /opt/apigee/tls/tls.crt --- apiVersion: v1 kind: Secret metadata: name: hybrid-docs-envoy-policy-secret namespace: apigee type: Opaque data: remote-service.crt: eyJrZXlzIjpbeyJrdHkiOiJSU0EiLCJhbGci... remote-service.key: LS0tLS1CRUdJTiBSU0EgUFJJVkFURS... remote-service.properties: a2lkPTIwMjAtMDctMDZ...
- Terapkan konfigurasi layanan (output file dengan perintah penyediaan) ke cluster:
kubectl apply -f $CLI_HOME/config.yaml
- Verifikasi proxy dan sertifikat Anda. Berikut ini akan menampilkan JSON yang valid:
curl --http1.1 -i $RUNTIME/remote-service/certs
Output-nya akan terlihat seperti ini:
{ "keys": [ { "alg": "RS256", "e": "AQAB", "kid": "2020-05-11T11:32:26-06:00", "kty": "RSA", "n": "0v-nbTQyAmtVZ-wZRP0ZPIbrVaX91YO9JZ9xCQPb4mOdOSS7yKfTDJGg0KM130sGVYBvR76alN8 fhrrSDEG5VXG8YYMqPXarwRC7MRJWocCQ_ECYrjDD0_Q018M2HyXZYSd8fhAogi9mVUYsEmCKqJH53Dh1 jqsHOQzBLKsX0iDO9hEZNFtjbX0UCbSxsUlmBCub7Uj2S-PahA6DEQOMhQjZM7bBMtkTMpFmaJ_RZTmow BHP57qMna17R8wHD4kUsO2u_-3HHs5PSj1NrEYoVU2dwLQw0GlkB__ZWeFgXTqot81vb-PmoM9YxwoZrm TcHdljugWy_s7xROPzTod0uw" } ] }
Menjalankan Layanan Jarak Jauh untuk Envoy
Pada langkah ini, Anda akan memulai Remote Service untuk klien Envoy di mesh layanan
tempat Apigee Hybrid diinstal. Layanan ini menyediakan endpoint ke file bantuan Istio yang
diinstal pada layanan target. Pada langkah berikutnya, Anda akan menginstal file bantuan
dengan layanan httpbin
.
- Buka
$REMOTE_SERVICE_HOME/samples/istio/hybrid-apigee-remote-service-envoy.yaml
di editor. - Anda mungkin perlu menyesuaikan konfigurasi jika tidak menggunakan versi terbaru
{i>Remote Service<i}. Jika Anda menggunakan
versi terbaru,
lanjutkan ke langkah
berikutnya. Jika Anda tidak
menggunakan versi terbaru, setel
image:
untuk mereferensikan versi Anda. Misalnya, jika Anda menggunakan versiv1.0.0-beta.4
, ubah tagimage
menjadi:image: "gcr.io/apigee-api-management-istio/apigee-remote-service-envoy:v1.0.0-beta.4"
- Tetapkan elemen
tls-volume.secretName
ke organisasi dan lingkungan Anda:... volumes: - name: tls-volume secret: defaultMode: 420 secretName: apigee-runtime-$ORG-$ENV-tls - name: policy-secret secret: defaultMode: 420 secretName: $ORG-$ENV-policy-secret
Contoh:
... volumes: - name: tls-volume secret: defaultMode: 420 secretName: apigee-runtime-myorg-myenv-tls - name: policy-secret secret: defaultMode: 420 secretName: myorg-myenv-policy-secret ...
- Terapkan Apigee Remote Service ke mesh layanan:
kubectl apply -f $REMOTE_SERVICE_HOME/samples/istio/hybrid-apigee-remote-service-envoy.yaml
- Terapkan
EnvoyFilter
ke file bantuan Istio di namespace default. TujuanEnvoyFilter
memungkinkan file bantuanhttpbin
berkomunikasi dengan Apigee Remote Service.:kubectl apply -f $REMOTE_SERVICE_HOME/samples/istio/envoyfilter-sidecar.yaml
Menguji penginstalan
- Sekarang, kembali ke shell curl yang Anda buka di langkah
Deploy layanan pengujian ke cluster dan panggil
httpbin
layanan:curl -i httpbin.default.svc.cluster.local/headers
Layanan sekarang dikelola oleh Apigee, dan karena Anda tidak menyediakan kunci API, mengembalikan pesan {i>error<i} berikut.
curl -i httpbin.default.svc.cluster.local/headers HTTP/1.1 403 Forbidden date: Tue, 12 May 2020 17:51:36 GMT server: envoy content-length: 0 x-envoy-upstream-service-time: 11
- Konfigurasi produk API dan dapatkan kunci API seperti yang dijelaskan di Cara mendapatkan kunci API.
- Lakukan panggilan API menggunakan kunci tersebut:
export APIKEY=YOUR_API_KEY
curl -i httpbin.default.svc.cluster.local/headers -H "x-api-key: $APIKEY"
Panggilan akan berhasil dengan status 200 dan menampilkan daftar header dalam respons. Contoh:
curl -i httpbin.default.svc.cluster.local/headers -H "x-api-key: kyOTalNNLMPfOSy6rnVeclmVSL6pA2zS" HTTP/1.1 200 OK server: envoy date: Tue, 12 May 2020 17:55:34 GMT content-type: application/json content-length: 828 access-control-allow-origin: * access-control-allow-credentials: true x-envoy-upstream-service-time: 301 { "headers": { "Accept": "*/*", "Content-Length": "0", "Host": "httpbin.default.svc.cluster.local", "User-Agent": "curl/7.70.0-DEV", "X-Api-Key": "kyOTalNNLMPfOSy6rnVeclmVSL6pA2zS", "X-Apigee-Accesstoken": "", "X-Apigee-Api": "httpbin.default.svc.cluster.local", "X-Apigee-Apiproducts": "httpbin", "X-Apigee-Application": "httpbin", "X-Apigee-Authorized": "true", "X-Apigee-Clientid": "kyOTalNNLMPfOSy6rnVeclmVSL6pA2zS", "X-Apigee-Developeremail": "jdoe@example.com", "X-Apigee-Environment": "envoy", "X-Apigee-Organization": "acme-org", "X-Apigee-Scope": "", "X-B3-Parentspanid": "1476f9a2329bbdfa", "X-B3-Sampled": "0", "X-B3-Spanid": "1ad5c19bfb4bc96f", "X-B3-Traceid": "6f329a34e8ca07811476f9a2329bbdfa" } }
Langkah berikutnya
Traffic API ke layanan httpbin
kini dikelola oleh Apigee. Berikut
beberapa fitur yang dapat Anda coba dan coba:
- Jika Anda mengonfigurasi produk API seperti yang dijelaskan di
Cara mendapatkan kunci API,
batas kuota ditetapkan menjadi 5 permintaan per menit. Coba panggil layanan
httpbin
beberapa kali lagi untuk memicu kuota. Jika melebihi kuota, Anda akan melihat error ini:HTTP/1.1 429 Too Many Requests
- Akses Analisis Apigee di UI Edge. Buka Analyze > Metrik API > API Performa Proxy.
- Membuat dan menggunakan token JWT untuk mengautentikasi panggilan API.
- Gunakan CLI untuk mengelola, membuat token, dan mengontrol binding. Untuk mengetahui detail CLI, lihat Reference.