Bagian ini menjelaskan penggunaan Apigee Connect untuk komunikasi antara bidang pengelolaan hibrida dan layanan MART di bidang runtime.
Pengantar
Apigee Connect memungkinkan bidang pengelolaan Apigee Hybrid terhubung secara aman ke layanan MART di bidang runtime tanpa mengharuskan Anda mengekspos endpoint MART di internet. Jika Anda menggunakan Apigee Connect, Anda tidak perlu mengonfigurasi gateway ingress MART dengan alias host dan sertifikat DNS yang sah.

Prasyarat
Apigee Hybrid 1.2.0 atau yang lebih baru.
Menambahkan Apigee Connect ke runtime hybrid
Apigee Connect diaktifkan secara default untuk penginstalan baru Apigee Hybrid versi 1.3.0 dan yang lebih baru. Oleh karena itu, Anda kemungkinan besar memerlukan langkah-langkah ini jika mengupgrade dari versi yang lebih lama.
Jika Apigee Connect dikonfigurasi dan diaktifkan, ingress MART akan diabaikan: bidang pengelolaan hanya terhubung ke MART menggunakan Apigee Connect. Semua traffic MART antara bidang runtime hybrid melewati koneksi Apigee Connect yang aman.
Ikuti langkah-langkah berikut untuk mengaktifkan dan menggunakan Apigee Connect dengan Apigee Hybrid:
- Aktifkan Apigee Connect API di
Library API Google Cloud. Anda dapat mengaktifkan API di
Konsol Google Cloud (GCP) atau dengan
gcloud. Untuk mengetahui petunjuk tentang cara mengaktifkan API di konsol Google Cloud, lihat Langkah 3: Aktifkan API. Untuk menggunakangcloudguna mengaktifkan API:- Tetapkan project saat ini di gcloud ke project GCP yang sama dengan project yang
Apigee-nya diaktifkan dan organisasi Apigee Anda disediakan.
$ gcloud config set project YOUR_GCP_PROJECT_ID
Dengan
YOUR_GCP_PROJECT_IDadalah project ID. - Periksa untuk melihat apakah Apigee Connect API sudah diaktifkan:
gcloud services list
NAME TITLE apigee.googleapis.com Apigee API apigeeconnect.googleapis.com Apigee Connect API bigquery.googleapis.com BigQuery API ...
- Jika hasilnya tidak menyertakan
apigeeconnect.googleapis.com, aktifkan API:$ gcloud services enable apigeeconnect.googleapis.com
- Tetapkan project saat ini di gcloud ke project GCP yang sama dengan project yang
Apigee-nya diaktifkan dan organisasi Apigee Anda disediakan.
- Tambahkan peran Apigee Connect Agent ke akun layanan MART yang Anda buat
di langkah
Buat akun layanan dalam petunjuk penginstalan hybrid Apigee:
- Jika perlu, dapatkan alamat email akun layanan MART Anda:
gcloud iam service-accounts list
NAME EMAIL DISABLED apigee-mart apigee-mart@hybrid-example.iam.gserviceaccount.com False ...
- Periksa untuk melihat apakah akun layanan MART sudah memiliki peran yang ditetapkan untuknya:
gcloud projects get-iam-policy YOUR_GCP_PROJECT_ID
... - members: - serviceAccount:apigee-mart@hybrid-example.iam.gserviceaccount.com role: roles/apigeeconnect.Agent ...
- Jika hasilnya tidak menyertakan
role: roles/apigeeconnect.Agent, tetapkan peran:gcloud projects add-iam-policy-binding YOUR_GCP_PROJECT_ID \ --member serviceAccount:YOUR_MART_SERVICE_ACCOUNT_EMAIL --role roles/apigeeconnect.Agent
Dengan
YOUR_GCP_PROJECT_IDadalah ID project GCP Anda, danYOUR_MART_SERVICE_ACCOUNT_EMAILadalah alamat email akun layanan MART.
Peran Apigee Connect Agent telah ditentukan sebelumnya dan memiliki izin berikut yang ditetapkan untuknya:
Izin Deskripsi apigeeconnect.endpoints.connectIni adalah izin untuk menyiapkan Agen Apigee Connect. Untuk mengetahui detail tentang cara menetapkan izin akses melalui konsol GCP atau API, lihat:
- Jika perlu, dapatkan alamat email akun layanan MART Anda:
- Pastikan file kunci akun layanan MART berada di direktori
hybrid_files/service_accounts, seperti yang dijelaskan dalam Membuat akun layanan. - Buka file penggantian Anda. Jika properti
connectAgent:enabledtidak disetel ke benar, atau tidak ada, tambahkan atau perbarui stanza berikut.Stanza Apigee Connect harus segera mengikuti di bawah stanza k8sCluster.
Konfigurasi mengharuskan Anda memberikan jalur ke kunci akun layanan yang didownload. Kunci harus untuk akun layanan dengan peran Apigee Connect Agent .
# Apigee Connect Agent connectAgent: enabled: true serviceAccountPath: ./service-accounts/MART_SA_KEYFILE.json# Apigee Connect Agent connectAgent: enabled: true replicaCountMin: 3 serviceAccountPath: ./service-accounts/connect_agent_sa_key.json - Aktifkan fitur Apigee Connect untuk organisasi Anda. Nama fiturnya adalah
features.mart.connect.enabled.- Temukan kunci akun layanan dengan peran Admin Organisasi Apigee yang
Anda gunakan saat pertama kali menginstal Apigee Hybrid seperti yang dijelaskan di bagian
Aktifkan
akses sinkronisasi. Ini adalah akun layanan
apigee-org-admin . Anda akan memerlukan kunci ini untuk membuat token yang diperlukan untuk melakukan panggilan API seperti yang dijelaskan di bawah. - Jalankan kedua perintah ini untuk mendapatkan token:
export GOOGLE_APPLICATION_CREDENTIALS=org-admin-service-account-file $ export TOKEN=$(gcloud auth application-default print-access-token)
Dengan org-admin-service-account-file adalah jalur di sistem Anda ke kunci akun layanan dengan peran Admin Organisasi Apigee.
- Periksa untuk melihat apakah Apigee Connect sudah diaktifkan:
curl https://apigee.googleapis.com/v1/organizations/your_org_name \ -H "Authorization: Bearer $TOKEN"
Cari di hasil:
"properties": { "property": [ { "name": "features.mart.connect.enabled", "value": "true" }, { "name": "features.hybrid.enabled", "value": "true" } ] }, - Jika hasilnya tidak menyertakan
features..mart.connect.enabledyang ditetapkan ketrue, panggil Apigee API berikut untuk mengaktifkan Apigee Connect bagi organisasi Anda:curl -v -X PUT \ https://apigee.googleapis.com/v1/organizations/your_org_name \ -H "Content-Type: application/json" \ -H "Authorization: Bearer $TOKEN" \ -d '{ "name" : "your_org_name", "properties" : { "property" : [ { "name" : "features.hybrid.enabled", "value" : "true" }, { "name" : "features.mart.connect.enabled", "value" : "true" } ] } }'
- Temukan kunci akun layanan dengan peran Admin Organisasi Apigee yang
Anda gunakan saat pertama kali menginstal Apigee Hybrid seperti yang dijelaskan di bagian
Aktifkan
akses sinkronisasi. Ini adalah akun layanan
- Mulai Agen Apigee Connect di cluster.
Jika Anda telah melakukan perubahan pada salah satu langkah di atas, gunakan perintah berikut untuk memulai Agen Apigee Connect:
$APIGEECTL_HOME/apigeectl apply -f your_overrides_file.yaml --org
- Periksa log Agen Apigee Connect. Jika tidak ada error yang dilaporkan, upgrade berhasil:
kubectl logs -n namespace apigee-connect-agent-pod-name
Apigee Connect Agent melaporkan kategori log berikut:
Untuk mendapatkan bantuan terkait cara melihat log audit di Apigee hybrid, lihat Informasi pencatatan audit.Kategori log audit Operasi DATA_READ ConnectionService.ListConnectionsDATA_WRITE Tether.Egress - Uji penginstalan.
mart: hostAlias: "mart.apigee-hybrid-docs.net" # ignored when Apigee Connect is enabled. serviceAccountPath: ./service-accounts/example-project-apigee-mart.json sslCertPath: ./certs/fullchain.pem # ignored when Apigee Connect is enabled. sslKeyPath: ./certs/privkey.key # ignored when Apigee Connect is enabled.
Dengan upgrade ini, bidang runtime hybrid berkomunikasi dengan bidang pengelolaan melalui Apigee Connect.
Lihat juga: Menghapus Apigee Connect.
Menguji penginstalan
- Buka UI Apigee Hybrid.
- Pastikan semua Developer dan aplikasi Developer yang Anda buat sebelumnya ada di UI. Karena kueri entitas ini dilakukan dari server MART, entitas ini hanya akan ada jika komunikasi antara bidang pengelolaan dan runtime dikonfigurasi dengan benar.
- Untuk memastikan permintaan melewati Apigee Connect dan bukan melalui ingress MART, periksa
log server MART. Anda akan melihat entri untuk agen Apigee Connect bernama
apigee-connect-agent-1.0:kubectl logs -n apigee apigee-mart-orgname-rc101-q72tl --org | grep connect
Contoh:
"2020-07-31 04:59:52,321 org: env: target: action: context-id: mode: pool-1-thread-1 INFO. gserviceaccount.com 1576040392317 /v1/organizations/apigee-connect-hybrid-prod/developers/ count=100&expand=true&startKey=4ee9e8f7-12b2-4cde-bf10-32d991469876 200 GET apigee-connect -hybrid-prod 10.40.11.3 10.40.0.5 apigee-connect-agent-1.0 null"
- Perbarui token otorisasi Anda:
export TOKEN=$(gcloud auth application-default print-access-token)
- Panggil Apigee API untuk melihat aliran yang tersedia yang terhubung dengan endpoint
apigee-mart:curl -s https://apigeeconnect.googleapis.com/v1/projects/YOUR_GCP_PROJECT_ID/endpoints/apigee_mart/connections \ -H "Authorization: Bearer $TOKEN"
{ "connections": [ { "endpoint": "projects/865098068308/endpoints/apigee_mart", "cluster": { "name": "apigee-connect-test-cluster2", "region": "australia-southeast1" }, "streamCount": 4 }, { "endpoint": "projects/865098068308/endpoints/apigee_mart", "cluster": { "name": "apigee-connect-test-cluster", "region": "us-central1" }, "streamCount": 2 } ] }
- Periksa log Apigee Connect Agent:
kubectl logs -n namespace apigee-connect-agent-YOUR_GCP_PROJECT_ID-<....>
Log berikut menunjukkan bahwa Agen Apigee Connect telah dimulai dan berkomunikasi dengan benar:
I0719 11.66:10.765526 2314949 main.go:47] Agent's flag values below I0719 11.66:10.765928 2314949 main.go:50] "alsologtostderr" : false I0719 11.66:10.765940 2314949 main.go:50] "cluster_name" : testABC I0719 11.66:10.765947 2314949 main.go:50] "cluster_region" : us-west2 I0719 11.66:10.765953 2314949 main.go:50] "cpu_profile_enabled" : false I0719 11.66:10.765959 2314949 main.go:50] "http_client_timeout" : 2m0s I0719 11.66:10.765966 2314949 main.go:50] "http_port" : 7070 I0719 11.66:10.765972 2314949 main.go:50] "http_server" : false I0719 11.66:10.765978 2314949 main.go:50] "insecure_ssl" : false I0719 11.66:10.765984 2314949 main.go:50] "local_cert" : I0719 11.66:10.765990 2314949 main.go:50] "log_backtrace_at" : :0 I0719 11.66:10.766001 2314949 main.go:50] "log_dir" : I0719 11.66:10.766007 2314949 main.go:50] "logtostderr" : true I0719 11.66:10.766012 2314949 main.go:50] "mem_profile_enabled" : false I0719 11.66:10.766018 2314949 main.go:50] "project" : projects/apigee-connect-hybrid-prod I0719 11.66:10.766025 2314949 main.go:50] "resource_id" : I0719 11.66:10.766031 2314949 main.go:50] "server_addr" : apigeeconnect.googleapis.com:443 I0719 11.66:10.766036 2314949 main.go:50] "server_cert" : ./server.crt I0719 11.66:10.766042 2314949 main.go:50] "server_key" : ./server.key I0719 11.66:10.766047 2314949 main.go:50] "stderrthreshold" : 2 I0719 11.66:10.766054 2314949 main.go:50] "target_server" : http://127.0.0.1/ I0719 11.66:10.766059 2314949 main.go:50] "tether_endpoint" : APIGEE_MART I0719 11.66:10.766065 2314949 main.go:50] "v" : 0 I0719 11.66:10.766072 2314949 main.go:50] "vmodule" : I0719 11.66:10.845441 2314949 agent.go:400] successfully initiated http client I0719 11.66:10.845772 2314949 agent.go:728] starting metrics http server at ":7070" I0719 11.66:11.231.69 2314949 agent.go:245] listening on tether 6407043920806543360 I0719 11.68:11.346544 2314949 agent.go:245] listening on tether 2101602677040349184 I0719 12:00:11.461084 2314949 agent.go:245] listening on tether 9109203697228840960 I0719 12:02:11.683743 2314949 agent.go:245] listening on tether 8978599308035096576 I0719 12:02:40.325633 2314949 agent.go:255] tether id 6407043920806543360 is closed ...
- Di UI hybrid, buat produk API, developer, dan aplikasi developer. Kemudian, lakukan beberapa
panggilan API ke proxy.
Log Connect Agent yang dibuat saat memproses permintaan akan berguna untuk melihat kondisi atau error:
kubectl logs -n namespace apigee-connect-agent-YOUR_GCP_PROJECT_ID-<....>
INFO: 2020/04/13 03:29:08 "961ff385-600a-427a-8864-ba066ff42330": received response from target "apigee-mart-apigee-connect-hybrid-prod.apigee.svc.cluster.local:8843", status code: 200 INFO: 2020/04/13 03:29:08 Attempting to send response 961ff385-600a-427a-8864-ba066ff42330 on tether 16734438331890270208 INFO: 2020/04/13 03:29:09 "e2fc0492-6e78-4c58-972b-7de8258b9e86": received response from target "apigee-mart-apigee-connect-hybrid-prod.apigee.svc.cluster.local:8843", status code: 200 INFO: 2020/04/13 03:29:09 Attempting to send response e2fc0492-6e78-4c58-972b-7de8258b9e86 on tether 12483040283652521984 INFO: 2020/04/13 03:29:10 "1ab3023b-b763-4b91-bf4f-ca8c02f62e50": received response from target "apigee-mart-apigee-connect-hybrid-prod.apigee.svc.cluster.local:8843", status code: 200 INFO: 2020/04/13 03:29:10 Attempting to send response 1ab3023b-b763-4b91-bf4f-ca8c02f62e50 on tether 12483040283652521984 INFO: 2020/04/13 03:29:12 "1fa3e3c3-a36e-4ff1-b2d3-5cf14f2f8fdd": received response from target "apigee-mart-apigee-connect-hybrid-prod.apigee.svc.cluster.local:8843", status code: 200 INFO: 2020/04/13 03:29:12 Attempting to send response 1fa3e3c3-a36e-4ff1-b2d3-5cf14f2f8fdd on tether 16734438331890270208 INFO: 2020/04/13 03:29:13 "09b7ef9d-f53d-466a-a174-e88fc7e5286d": received response from target "apigee-mart-apigee-connect-hybrid-prod.apigee.svc.cluster.local:8843", status code: 200 INFO: 2020/04/13 03:29:13 Attempting to send response 09b7ef9d-f53d-466a-a174-e88fc7e5286d on tether 16734438331890270208 INFO: 2020/04/13 03:29:14 "c2ce8b73-8faf-4a05-88d9-24fb2bf45552": received response from target "apigee-mart-apigee-connect-hybrid-prod.apigee.svc.cluster.local:8843", status code: 200 INFO: 2020/04/13 03:29:14 Attempting to send response c2ce8b73-8faf-4a05-88d9-24fb2bf45552 on tether 12483040283652521984 INFO: 2020/04/13 03:29:15 "fdc3bac5-2b83-4b57-a28d-d8b455dae71e": received response from target "apigee-mart-apigee-connect-hybrid-prod.apigee.svc.cluster.local:8843", status code: 200 INFO: 2020/04/13 03:29:15 Attempting to send response fdc3bac5-2b83-4b57-a28d-d8b455dae71e on tether 12483040283652521984 INFO: 2020/04/13 03:29:16 "260026a9-f578-4447-a1d2-d8e49cf181d8": received response from target "apigee-mart-apigee-connect-hybrid-prod.apigee.svc.cluster.local:8843", status code: 200 INFO: 2020/04/13 03:29:16 Attempting to send response 260026a9-f578-4447-a1d2-d8e49cf181d8 on tether 12483040283652521984 INFO: 2020/04/13 03:29:17 "bf3d74a1-94ae-4041-892f-56f1ed9c9cff": received response from target "apigee-mart-apigee-connect-hybrid-prod.apigee.svc.cluster.local:8843", status code: 200 INFO: 2020/04/13 03:29:17 Attempting to send response bf3d74a1-94ae-4041-892f-56f1ed9c9cff on tether 16734438331890270208 INFO: 2020/04/13 03:29:18 "6d017278-3b7a-40fb-9c63-7c34320e7df1": received response from target "apigee-mart-apigee-connect-hybrid-prod.apigee.svc.cluster.local:8843", status code: 200
Log yang disebabkan oleh kegagalan Agen Connect karena error izin IAM ditolak, sehingga menyebabkan agen mengalami error:
F0719 12:34:33.128565 2326128 tether.go:29] failed to register stream with Apigee Connect, got 'PermissionDenied': rpc error: code = PermissionDenied desc = Permission denied on resource '// apigeeconnect.googleapis.com/projects/apigee-connect-hybrid-prod/endpoints/APIGEE_MART' (or it may not exist).
F0719 12:34:33.128565 2326128 tether.go:29] failed to register stream with Apigee Connect, got 'PermissionDenied': rpc error: code = PermissionDenied desc = Permission denied on resource pro ject apigee-connect-hybrid-prod.
Menghapus Apigee Connect
Jika Anda menghapus deployment Apigee Connect, status pod dapat tetap dalam status "Terminating" selama hingga tujuh menit. Waktu ini sudah diperkirakan. Agen Apigee Connect menunggu koneksi yang ada berakhir, bukan menghentikannya secara tiba-tiba. Penundaan ini memastikan bahwa permintaan dalam proses tidak hilang.