Contoh Native Envoy untuk Apigee dan hybrid

Halaman ini berlaku untuk Apigee dan Apigee hybrid.

Lihat Dokumentasi Apigee Edge.

Contoh ini menunjukkan cara menggunakan Adaptor Apigee untuk Envoy dengan menginstal dan menjalankan Envoy secara lokal, bukan di dalam cluster Kubernetes. Anda dapat mengikuti contoh dalam dokumen ini untuk Apigee dan Apigee Hybrid penginstalan.

Panggilan proxy API melalui Envoy yang berjalan sebagai aplikasi native. Apigee menyediakan Layanan pengelolaan API, seperti pembuatan produk API dan aplikasi developer. Envoy berkomunikasi dengan pengelolaan Apigee melalui layanan jarak jauh adaptor. Adaptor juga mengirim data analisis ke Apigee di tempat Anda dapat melihatnya Analisis Apigee.

Prasyarat

Sebelum memulai:

Memeriksa konfigurasi gcloud

  1. Pastikan konfigurasi gcloud Anda sudah disetel ke project Google Cloud yang terkait dengan Organisasi Apigee.

    Untuk mencantumkan setelan saat ini. Lihat juga gcloud config.

    gcloud config list

    Jika perlu, tetapkan project ID Google Cloud yang benar dengan perintah ini:

    gcloud config set project project-id
  2. Anda harus diautentikasi dengan Google Cloud SDK (gcloud) untuk project Google Cloud Anda. Lihat juga gcloud auth login.
    gcloud auth login

Menyediakan Apigee

Pada langkah ini, Anda akan menggunakan Remote Service CLI guna menyediakan Adaptor Apigee untuk aset Envoy ke Apigee. Perintah penyediaan men-deploy proxy API yang digunakan untuk operasi adaptor Apigee, menyiapkan sertifikat di Apigee, dan membuat kredensial yang akan digunakan layanan jarak jauh untuk terhubung dengan aman dari sistem Anda ke Apigee.

  1. Buka direktori $CLI_HOME:
    cd $CLI_HOME
  2. (Opsional) Secara default, adaptor akan mencari kredensial akun layanan default di Project cloud untuk mendapatkan izin guna mengirim data analisis ke Apigee. Jika Anda tidak ingin menggunakan bawaan kredensial akun layanan, Anda dapat membuat akun layanan dan mereferensikan kuncinya di penyediaan resource. Akun layanan harus memiliki peran apigee.analyticsAgent. Untuk mengetahui petunjuknya, lihat Membuat dan mengelola akun layanan.
  3. 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  ## Apigee hybrid only
    export AX_SERVICE_ACCOUNT=analytics_service_account  ## Optional

    Dengan keterangan:

    Variabel Deskripsi
    organization_name Nama organisasi Apigee Anda.
    environment_name Nama lingkungan di organisasi Anda.
    host_alias_url
    • Untuk Apigee Hybrid, URL yang menyertakan hostAlias untuk host virtual yang ditentukan dalam konfigurasi hybrid Anda.
    • Untuk Apigee, nama host dari grup lingkungan yang menyertakan lingkungan. Anda dapat menemukan grup lingkungan di UI Apigee di bagian Admin > Lingkungan > Grup.
    • Catatan: URL harus diawali dengan https://. Contoh: https://apitest.mydomain.net

    hybrid_runtime_namepace (Khusus Apigee Hybrid) Namespace tempat runtime Hybrid komponen di-deploy.

    Catatan: Namespace default untuk deployment hybrid adalah apigee.

    analytics_service_account (Opsional) Jalur ke file JSON kunci akun layanan Google Cloud yang memiliki Peran Apigee Analytics Agent. Untuk deskripsi mendetail tentang , lihat Perintah Provisioning.
  4. Jika Anda bukan pemilik project Google Cloud yang terkait dengan organisasi Apigee, pastikan akun pengguna Google Cloud Anda menyertakan peran Apigee Organization Admin, atau peran API Creator dan Deployer. Lihat Memberikan, mengubah, dan mencabut akses ke resource.
  5. Dapatkan token akses:
    TOKEN=$(gcloud auth print-access-token);echo $TOKEN
  6. Sediakan proxy layanan jarak jauh untuk Apigee. Output perintah dialihkan ke file konfigurasi yang akan Anda gunakan di langkah selanjutnya.

    Jika Anda tidak melakukan upgrade, gunakan perintah ini untuk menyediakan Apigee. Jika Anda Penyediaan ke Apigee Hybrid, pastikan Anda menambahkan parameter --namespace $NAMESPACE:

    ./apigee-remote-service-cli provision --organization $ORG --environment $ENV \
         --runtime $RUNTIME --analytics-sa $AX_SERVICE_ACCOUNT --token $TOKEN > config.yaml

    Jika Anda melakukan upgrade, gunakan perintah ini dengan flag --force-proxy-install untuk menyediakan Apigee. Jika Anda Penyediaan ke Apigee Hybrid, pastikan Anda menambahkan parameter --namespace $NAMESPACE:

    ./apigee-remote-service-cli provision --force-proxy-install --organization $ORG --environment $ENV \
         --runtime $RUNTIME --analytics-sa $AX_SERVICE_ACCOUNT --token $TOKEN > config.yaml
  7. Periksa isi file config.yaml. Ini akan terlihat seperti berikut:
    # Configuration for apigee-remote-service-envoy (platform: Google Cloud)
    # generated by apigee-remote-service-cli provision on 2020-11-20 02:49:28
    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: apigee-remote-service-envoy
      namespace: apigee
    data:
      config.yaml: |
        tenant:
          remote_service_api: https://apitest.mydomain.com/remote-service
          org_name: my-org
          env_name: test
        analytics:
          collection_interval: 10s
        auth:
          jwt_provider_key: https://apitest.mydomain.com/remote-service/token
    ---
    apiVersion: v1
    kind: Secret
    metadata:
      name: my-org-new-test-policy-secret
      namespace: apigee
    type: Opaque
    data:
      remote-service.crt: eyJrZXlzIjpbeyJrdHkiOiJSU0EiLCJhbGci...
      remote-service.key: LS0tLS1CRUdJTiBSU0EgUFJJVkFURS...
      remote-service.properties: a2lkPTIwMjAtMDctMDZ...
    ---
    apiVersion: v1
    kind: Secret
    metadata:
      name: my-org-new-test-analytics-secret
      namespace: apigee
    type: Opaque
    data:
      client_secret.json: ewogICJ0eXBlIjogInNlcnZ...
    ---
    apiVersion: v1
    kind: ServiceAccount
    metadata:
      name: apigee-remote-service-envoy
      namespace: apigee

Jalankan apigee-remote-service-envoy

Anda dapat menjalankan Remote Service sebagai biner native atau di Docker.

Menjalankan layanan secara native

Jalankan biner layanan dengan file konfigurasi yang dihasilkan oleh perintah penyediaan:

$REMOTE_SERVICE_HOME/apigee-remote-service-envoy -c config_file_path/config.yaml

Menjalankan layanan di Docker

Image Docker dipublikasikan dengan tag rilis. Untuk penginstalan ini, gunakan versi terbaru. Ada adalah tiga variasi gambar yang dapat dipilih:

Variasi Gambar
Google distroless google/apigee-envoy-adapter:v2.0.3
Ubuntu google/apigee-envoy-adapter:v2.0.3-ubuntu
Ubuntu dengan Boring Crypto google/apigee-envoy-adapter:v2.0.3-boring

Misalnya, untuk menjalankan gambar awal dengan config.yaml lokal yang tersedia sebagai /config.yaml melalui pemasangan volume, gunakan perintah ini:

docker run -v ./config.yaml:/config.yaml google/apigee-envoy-adapter:v2.0.3

Membuat contoh file konfigurasi Envoy

Buat contoh file konfigurasi Envoy menggunakan CLI:

  1. Pastikan Anda berada di direktori $ENVOY_HOME.
  2. Lihat daftar template konfigurasi yang tersedia:
    $CLI_HOME/apigee-remote-service-cli samples templates
  3. Jalankan perintah contoh. Untuk TEMPLATE, ganti salah satu template Envoy yang didukung:

    $CLI_HOME/apigee-remote-service-cli samples create --template TEMPLATE -c ./config.yaml

    Perintah ini membuat file ./samples/envoy-config.yaml.

Untuk mengetahui informasi selengkapnya, lihat Perintah contoh.

Menginstal dan menjalankan proxy Envoy

Ikuti langkah-langkah berikut untuk menginstal dan menjalankan proxy Envoy:

  1. Download biner Envoy atau membangunnya.
  2. Jalankan Envoy menggunakan contoh file konfigurasi yang Anda buat sebelumnya untuk layanan httpbin.org:
    envoy -c ./samples/envoy-config.yaml

Menguji penginstalan

  1. Konfigurasi produk API dan dapatkan kunci API seperti yang dijelaskan di Cara mendapatkan kunci API.
  2. Panggil layanan httpbin tanpa kunci API:
    curl -i http://localhost:8080/headers -H "HOST:httpbin.org"
    

    Layanan sekarang dikelola oleh Apigee, dan karena Anda tidak menyediakan kunci API, panggilan akan mengembalikan {i>error<i} berikut.

    curl -i http://localhost:8080/headers -H "HOST:httpbin.org"
    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
  3. Lakukan panggilan API menggunakan kunci tersebut:
    export APIKEY=YOUR_API_KEY
    curl -i http://localhost:8080/headers -H "HOST:httpbin.org" -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": "kyOTalNNLMPfOSy6rneclmVSL6pA2zS",
        "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": "kyOTalNNLMPfOSy6rVeclmVSL6pA2zS",
        "X-Apigee-Developeremail": "user@mydomain.com",
        "X-Apigee-Environment": "test",
        "X-Apigee-Organization": "my-org",
        "X-Apigee-Scope": "",
        "X-B3-Parentspanid": "1476f9a2329bbdfa",
        "X-B3-Sampled": "0",
        "X-B3-Spanid": "1ad5c19bfb4bc96f",
        "X-B3-Traceid": "6f329a34e8ca07811476f9a2329bbdfa"
      }
    }

Meng-uninstal adaptor Apigee Envoy

Untuk menghapus penginstalan adaptor Apigee Envoy:

  1. Di mana pun Anda memilih untuk menjalankan adaptor envoy (secara native atau di Docker), hapus adaptor tersebut.
  2. Hapus proxy remote-service dan remote-token dari lingkungan Apigee Anda. Lihat Menghapus proxy API.
  3. Hapus semua produk atau operasi API yang tidak digunakan yang digunakan oleh kasus penggunaan adaptor Envoy. Lihat Menghapus produk API.

Langkah berikutnya

Traffic API ke layanan httpbin kini dikelola oleh Apigee. Berikut beberapa fitur yang dapat Anda coba dan coba:

  • Akses Analisis Apigee di UI Edge. Buka Analyze > Metrik API > API Performa Proxy.
  • Pelajari opsi CLI di Reference.