Mengonfigurasi pemilihan rute jalur dasar

Topik ini membahas perutean jalur dasar. Dengan perutean jalur dasar, Anda dapat mengonfigurasi dan mengelola cara Apigee Hybrid merutekan panggilan proxy API ke lingkungan yang benar.

Menggunakan pemilihan rute jalur dasar untuk mengelola deployment proxy

Karena dapat memetakan satu host virtual ke beberapa lingkungan secara campuran, Anda memerlukan cara untuk menentukan jalur dasar proxy yang akan dipetakan ke lingkungan tertentu.

Sebagai contoh, misalkan Anda ingin memetakan dua lingkungan ke alias host yang sama: apitest.mydomain.net. Dalam file penggantian, Anda dapat membuat konfigurasi berikut di mana lingkungan dev1 dan dev2 dipetakan ke host ini. Contoh:

envs:
  - name: dev1
    hostAlias: "apitest.mydomain.net"
    ...
  - name: dev2
    hostAlias: "apitest.mydomain.net"
    ...

Sekarang, katakanlah Anda men-deploy {i>proxy<i} ke lingkungan ini. Anda men-deploy:

  • Proxy foo1 dengan jalur dasar /foo1 ke dev1
  • Proxy foo2 dengan jalur dasar /foo2 ke dev2

Misalnya klien memanggil API ini: https://apitest.mydomain.net/foo1. Perlu diketahui bahwa tidak ada apa pun dalam jalur ini (atau dalam header host yang dibuat untuk permintaan) yang memberi tahu hybrid ke lingkungan mana panggilan akan dirutekan. Apakah proxy foo1 di-deploy ke dev1 atau dev2? Hanya berdasarkan URL permintaan, tidak ada cara untuk mengetahuinya. Anda harus secara eksplisit memetakan setiap jalur dasar ini ke satu atau beberapa lingkungan.

Untuk menentukan lingkungan mana yang akan menerima panggilan proxy, tambahkan properti paths.uri.prefixes ke properti envs dalam file penggantian Anda, seperti yang ditunjukkan dalam contoh berikut:

gcpProjectID: example
k8sClusterName: apigee-hybrid

# Apigee org name.
org: my-org

envs:
    # Apigee environment name.
  - name: dev1
    hostAlias: "apitest.mydomain.net"
    sslCertPath: ./certs/keystore.pem
    sslKeyPath: ./certs/keystore.key
    serviceAccountPaths:
      synchronizer: ./service-accounts/example-apigee-synchronizer.json
      udca: ./service-accounts/example-apigee-udca.json
    paths:
      uri:
        prefixes:
          - /foo1
  - name: dev2
    hostAlias: "apitest.mydomain.net"
    sslCertPath: ./certs/keystore.pem
    sslKeyPath: ./certs/keystore.key
    serviceAccountPaths:
      synchronizer: ./service-accounts/example-apigee-synchronizer.json
      udca: ./service-accounts/example-apigee-udca.json
    paths:
      uri:
        prefixes:
          - /foo2
    ...

Sekarang, saat panggilan API masuk seperti: https://apitest.mydomain.net/foo1, router masuk tahu ke mana harus mengirimkannya. Alat tersebut mengetahui bahwa proxy /foo1 di-deploy ke lingkungan dev1, dan panggilan dialihkan ke pemroses pesan dev1.

Jika Anda mengirim panggilan ini, https://apitest.mydomain.net/foo2, panggilan tersebut juga akan dirutekan ke MP lingkungan dev2, dan seterusnya.

Singkatnya, konfigurasi paths.uri.prefixes memungkinkan Anda mengelola deployment proxy di antara beberapa lingkungan yang memiliki alias host yang sama.

Praktik Terbaik: Gunakan perutean jalur dasar saat Anda ingin beberapa lingkungan berbagi alias host yang sama. Perutean jalur dasar memungkinkan Anda membatasi jumlah proxy yang di-deploy ke setiap lingkungan tunggal. Untuk mengetahui informasi selengkapnya, lihat Membatasi jumlah deployment proxy.

Menambahkan lingkungan baru ke domain yang sama

Bagian ini menjelaskan cara menambahkan lingkungan baru ke domain.

Dalam skenario ini, asumsikan bahwa Anda memiliki lingkungan dev1 yang sudah di-deploy ke cluster. Dalam contoh konfigurasi ini, hanya proxy dengan awalan basepath /foo1 yang diizinkan:

gcpProjectID: example
k8sClusterName: apigee-hybrid

# Apigee org name.
org: my-org

envs:
    # Apigee environment name.
  - name: dev1
    hostAlias: "apitest.mydomain.net"
    sslCertPath: ./certs/keystore.pem
    sslKeyPath: ./certs/keystore.key
    serviceAccountPaths:
      synchronizer: ./service-accounts/example-apigee-synchronizer.json
      udca: ./service-accounts/example-apigee-udca.json
    paths:
      uri:
        prefixes:
          - /foo1

mart:
  hostAlias: "mart.apigee-hybrid-docs.net"
  serviceAccountPath: ./service-accounts/example-apigee-mart.json
  sslCertPath: ./certs/fullchain.pem
  sslKeyPath: ./certs/privkey.key

metrics:
  serviceAccountPath: ./service-accounts/willwitman-istio-25240157d44a.json

Untuk menambahkan lingkungan lain yang memiliki domain yang sama, ikuti langkah-langkah berikut:

  1. Buat file penggantian baru dengan konfigurasi lingkungan baru. Misalnya, konfigurasi ini akan membuat lingkungan yang disebut dev2. Dalam lingkungan ini, hanya proxy dengan akhiran jalur /foo2 yang diizinkan:
    gcpProjectID: example
    k8sClusterName: apigee-hybrid
    
    # Apigee org name.
    org: my-org
    
    envs:
        # Apigee environment name.
      - name: dev2
        hostAlias: "apitest.mydomain.net"
        sslCertPath: ./certs/keystore.pem
        sslKeyPath: ./certs/keystore.key
        serviceAccountPaths:
          synchronizer: ./service-accounts/example-apigee-synchronizer.json
          udca: ./service-accounts/example-apigee-udca.json
        paths:
          uri:
            prefixes:
              - /foo2
    
    mart:
      hostAlias: "mart.apigee-hybrid-docs.net"
      serviceAccountPath: ./service-accounts/example-apigee-mart.json
      sslCertPath: ./certs/fullchain.pem
      sslKeyPath: ./certs/privkey.key
    
    metrics:
      serviceAccountPath: ./service-accounts/willwitman-istio-25240157d44a.json
    
  2. Jalankan perintah berikut dalam urutan apa pun:
    1. apigeectl apply -f overrides/overrides-dev2.yaml -c udca
    2. apigeectl apply -f overrides/overrides-dev2.yaml -c synchronizer
    3. apigeectl apply -f overrides/overrides-dev2.yaml -c runtime
  3. Deploy proxy foo2 ke lingkungan dev2.
  4. Panggil proxy untuk menguji penyiapan.
    curl https://apitest.mydomain.net/foo2

Menambahkan jalur dasar proxy baru ke lingkungan yang ada

Untuk menambahkan jalur dasar baru ke lingkungan yang ada, cukup tambahkan entri prefixes untuk setiap jalur dasar baru. Misalnya, jika Anda membuat proxy baru dengan jalur dasar /foo4, dan ingin men-deploy-nya ke lingkungan bernama dev2, ikuti langkah-langkah berikut:

  1. Buka file penggantian yang memiliki definisi lingkungan dev2.
  2. Tambahkan jalur dasar /foo4 ke elemen paths.uri.prefixes:
    gcpProjectID: example
    k8sClusterName: apigee-hybrid
    
    # Apigee org name.
    org: my-org
    
    envs:
        # Apigee environment name.
      - name: dev2
        hostAlias: "apitest.mydomain.net"
        sslCertPath: ./certs/keystore.pem
        sslKeyPath: ./certs/keystore.key
        serviceAccountPaths:
          synchronizer: ./service-accounts/example-apigee-synchronizer.json
          udca: ./service-accounts/example-apigee-udca.json
        paths:
          uri:
            prefixes:
              - /foo2
              - /foo4
    
    mart:
      hostAlias: "mart.apigee-hybrid-docs.net"
      serviceAccountPath: ./service-accounts/example-apigee-mart.json
      sslCertPath: ./certs/fullchain.pem
      sslKeyPath: ./certs/privkey.key
    
    metrics:
      serviceAccountPath: ./service-accounts/willwitman-istio-25240157d44a.json
    
  3. Terapkan komponen runtime ke cluster:
    apigeectl apply -f overrides/overrides-dev2.yaml -c runtime
  4. Panggil proxy untuk menguji penyiapan.
    curl https://apitest.mydomain.net/foo4

    Jika panggilan API masuk untuk https://apitest.mydomain.net/foo4, hybrid tahu untuk merutekannya ke lingkungan dev2.