Mengaktifkan klien non-SNI dan HTTP

Topik ini menjelaskan cara mengaktifkan klien non-SNI, klien HTTP, dan kombinasi keduanya untuk digunakan dengan Apigee Hybrid.

Cara mengonfigurasi klien non-SNI

Bagian ini menjelaskan cara mengaktifkan dukungan untuk klien non-SNI (Server Name Indication) di Apigee Hybrid. Klien non-SNI menggunakan port 443 dan diwajibkan jika Anda ingin mengintegrasikan instance hybrid runtime dengan Google Cloud Load Balancing atau untuk klien yang tidak mendukung SNI.
  1. Buat definisi resource kustom (CRD) ApigeeRoute. Pastikan enableNonSniClient ditetapkan ke true:
    apiVersion: apigee.cloud.google.com/v1alpha1
    kind: ApigeeRoute
    metadata:
      name: route_name
      namespace: apigee
    spec:
      hostnames:
      - "*"
      ports:
      - number: 443
        protocol: HTTPS
        tls:
          credentialName: credential_name
          mode: SIMPLE
          #optional
          minProtocolVersion: TLS_AUTO
      selector:
        app: istio-ingressgateway
      enableNonSniClient: true
    

    Dengan keterangan:

    • route_name adalah nama yang Anda berikan ke CRD.
    • credential_name adalah nama Secret Kubernetes yang di-deploy ke cluster yang berisi kredensial TLS untuk virtualhost Anda. Anda dapat menemukan nama kredensial dengan Perintah kubectl berikut:
      kubectl -n apigee get ApigeeRoutes -o=yaml | grep credentialName
    • hostnames harus ditetapkan ke karakter pengganti "*".
  2. Buka file penggantian dan buat perubahan yang dijelaskan di langkah berikutnya.
  3. Untuk setiap grup lingkungan, tambahkan nama ApigeeRoute ke properti additionalGateways. Contoh:
    virtualhosts:
      - name: default
        sslCertPath: ./certs/fullchain.pem
        sslKeyPath: ./certs/privkey.pem
        additionalGateways: ["route_name"]
  4. Simpan file CRD. Contoh: ApigeeRoute.yaml
  5. Terapkan CRD ke cluster:
    kubectl apply -f ApigeeRoute.yaml -n apigee
  6. Terapkan perubahan pada virtualhosts:
    $APIGEECTL_HOME/apigeectl apply -f overrides.yaml --settings virtualhosts --env $ENVIRONMENT

Catatan penggunaan

  • Apa yang terjadi jika cluster memiliki lebih dari satu organisasi?

    Karena traffic masuk berada pada level cluster untuk port tertentu (443), dan hanya boleh ada satu pasangan kunci/sertifikat untuk CRD ApigeeRoute, semua organisasi harus menggunakan pasangan kunci/sertifikat yang sama.

  • Apa yang terjadi jika cluster memiliki lebih dari satu grup lingkungan. Apakah fitur ini akan berfungsi jika host virtual menggunakan pasangan kunci/sertifikat yang sama?

    Semua nama host di semua grup lingkungan harus menggunakan pasangan kunci/sertifikat yang sama.

  • Mengapa kami membuat ApigeeRoute, bukan Gateway?

    ApigeeRoutes dapat divalidasi oleh Apigee; tetapi, Gateway (Istio CRD) tidak dapat valid. Secara teknis, Gateway bahkan dapat berfungsi, tetapi kita dapat mencegah potensi kesalahan konfigurasi (melalui webhook validasi).

Mengaktifkan klien HTTP

Bagian ini menjelaskan dukungan untuk klien HTTP untuk digunakan dengan Apigee Hybrid.

  1. Buat definisi resource kustom (CRD) ApigeeRoute. Contoh:
    apiVersion: apigee.cloud.google.com/v1alpha1
    kind: ApigeeRoute
    metadata:
      name: route_name
      namespace: apigee
    spec:
      hostnames:
      - "*"
      ports:
      - number: 80
        protocol: HTTP
      selector:
        app: istio-ingressgateway
      enableNonSniClient: true

    Dengan keterangan:

    • route_name adalah nama yang Anda berikan ke CRD.
    • hostnames harus ditetapkan ke karakter pengganti "*".
  2. Buka file penggantian dan buat perubahan yang dijelaskan di langkah berikutnya.
  3. Untuk setiap grup lingkungan, tambahkan nama ApigeeRoute ke properti additionalGateways. Contoh:
    virtualhosts:
      - name: default
        sslCertPath: ./certs/fullchain.pem
        sslKeyPath: ./certs/privkey.pem
        additionalGateways: ["route_name"]
  4. Simpan file CRD. Contoh: ApigeeRoute.yaml
  5. Terapkan CRD ke cluster:
    kubectl apply -f ApigeeRoute.yaml -n apigee
  6. Terapkan perubahan pada virtualhosts:
    $APIGEECTL_HOME/apigeectl apply -f overrides.yaml --settings virtualhosts --env $ENVIRONMENT

Mengaktifkan dukungan untuk klien non-SNI dan HTTP

Bagian ini menjelaskan cara mengaktifkan klien non-SNI (port 443) dan HTTP (port 80) untuk digunakan dengan Apigee Hybrid.

  1. Buat definisi resource kustom (CRD) ApigeeRoute. Contoh:
    apiVersion: apigee.cloud.google.com/v1alpha1
    kind: ApigeeRoute
    metadata:
      name: route_name
      namespace: apigee
    spec:
      hostnames:
      - "*"
      ports:
      - number: 443
        protocol: HTTPS
        tls:
          credentialName: credential_name
          mode: SIMPLE
          #optional
          minProtocolVersion: TLS_AUTO
      - number: 80
        protocol: HTTP
      selector:
        app: istio-ingressgateway
      enableNonSniClient: true

    Dengan keterangan:

    • route_name adalah nama yang Anda berikan ke CRD.
    • hostname harus ditetapkan ke karakter pengganti "*".
    • credential_name adalah nama Secret Kubernetes yang di-deploy ke cluster yang berisi kredensial TLS untuk virtualhost Anda. Anda dapat menemukan nama kredensial dengan Perintah kubectl berikut:
      kubectl -n apigee get ApigeeRoutes -o=yaml | grep credentialName
  2. Buka file penggantian dan buat perubahan yang dijelaskan di langkah berikutnya.
  3. Untuk setiap grup lingkungan, tambahkan nama ApigeeRoute ke properti additionalGateways. Contoh:
    virtualhosts:
      - name: default
        sslCertPath: ./certs/fullchain.pem
        sslKeyPath: ./certs/privkey.pem
        additionalGateways: ["route_name"]
  4. Simpan file CRD. Contoh: ApigeeRoute.yaml
  5. Terapkan CRD ke cluster:
    kubectl apply -f ApigeeRoute.yaml -n apigee
  6. Terapkan perubahan pada virtualhosts:
    $APIGEECTL_HOME/apigeectl apply -f overrides.yaml --settings virtualhosts --env $ENVIRONMENT