SNI 以外のクライアントと HTTP クライアントを有効にする

このトピックでは、SNI 以外のクライアント、HTTP クライアント、および両方を組み合わせたものを Apigee ハイブリッドで使用するために、それぞれを有効にする方法について説明します。

SNI 以外のクライアントの構成方法

このセクションでは、Apigee ハイブリッドで SNI(Server Name Indication)以外のクライアントのサポートを有効にする方法について説明します。SNI 以外のクライアントはポート 443 を使用し、ハイブリッド ランタイム インスタンスを Cloud Load Balancing と統合する場合、または SNI をサポートしていないクライアントの場合は必須です。
  1. ApigeeRoute カスタム リソース定義(CRD)を作成します。enableNonSniClienttrue に設定されているかを確認します。
    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
    

    ここで

    • route_name は、CRD に付ける名前です。
    • credential_name は、仮想ホストの TLS 認証情報が格納されているクラスタにデプロイされる Kubernetes Secret の名前です。認証情報名は、次の kubectl コマンドで確認できます。
      kubectl -n apigee get ApigeeRoutes -o=yaml | grep credentialName
    • hostnames にはワイルドカード「*」を設定する必要があります。
  2. オーバーライド ファイルを開き、次の手順で説明する変更を加えます。
  3. 環境グループごとに、ApigeeRoute 名を additionalGateways プロパティに追加します。次に例を示します。
    virtualhosts:
      - name: default
        sslCertPath: ./certs/fullchain.pem
        sslKeyPath: ./certs/privkey.pem
        additionalGateways: ["route_name"]
  4. CRD ファイルを保存します。例: ApigeeRoute.yaml
  5. その CRD をクラスタに適用します。
    kubectl apply -f ApigeeRoute.yaml -n apigee
  6. 変更を virtualhosts に適用します。
    $APIGEECTL_HOME/apigeectl apply -f overrides.yaml --settings virtualhosts --env $ENVIRONMENT

使用上の注意

  • クラスタに複数の組織が存在する場合

    Ingress は特定のポート(443)のクラスタレベルにあり、ApigeeRoute CRD 用に使用できる鍵 / 証明書ペアは 1 つのみであるため、すべての組織が同じ鍵 / 証明書ペアを共有する必要があります。

  • クラスタに複数の環境グループがある場合。仮想ホストで同じ鍵 / 証明書ペアを共有する場合、機能しますか?

    すべての環境グループのホスト名はすべて、同じ鍵 / 証明書ペアを使用する必要があります。

  • ゲートウェイではなく ApigeeRoute を作成する理由

    ApigeeRoutes は Apigee で検証できますが、Gateway(Istio CRD)は Apigee で検証できません。厳密には、ゲートウェイも検証できますが、構成ミスの可能性を(検証 Webhook によって)回避できます。

HTTP クライアントを有効にする

このセクションでは、Apigee ハイブリッドで使用する HTTP クライアントのサポートについて説明します。

  1. ApigeeRoute カスタム リソース定義(CRD)を作成します。次に例を示します。
    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

    ここで

    • route_name は、CRD に付ける名前です。
    • hostnames にはワイルドカード「*」を設定する必要があります。
  2. オーバーライド ファイルを開き、次の手順で説明する変更を加えます。
  3. 環境グループごとに、ApigeeRoute 名を additionalGateways プロパティに追加します。次に例を示します。
    virtualhosts:
      - name: default
        sslCertPath: ./certs/fullchain.pem
        sslKeyPath: ./certs/privkey.pem
        additionalGateways: ["route_name"]
  4. CRD ファイルを保存します。例: ApigeeRoute.yaml
  5. その CRD をクラスタに適用します。
    kubectl apply -f ApigeeRoute.yaml -n apigee
  6. 変更を virtualhosts に適用します。
    $APIGEECTL_HOME/apigeectl apply -f overrides.yaml --settings virtualhosts --env $ENVIRONMENT

SNI 以外のクライアントと HTTP クライアントの両方のサポートを有効にする

このセクションでは、Apigee ハイブリッドで使用する SNI 以外のクライアント(ポート 443)と HTTP クライアント(ポート 80)の両方を有効にする方法について説明します。

  1. ApigeeRoute カスタム リソース定義(CRD)を作成します。次に例を示します。
    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

    ここで

    • route_name は、CRD に付ける名前です。
    • hostname にはワイルドカード「*」を設定する必要があります。
    • credential_name は、仮想ホストの TLS 認証情報が格納されているクラスタにデプロイされる Kubernetes Secret の名前です。認証情報名は、次の kubectl コマンドで確認できます。
      kubectl -n apigee get ApigeeRoutes -o=yaml | grep credentialName
  2. オーバーライド ファイルを開き、次の手順で説明する変更を加えます。
  3. 環境グループごとに、ApigeeRoute 名を additionalGateways プロパティに追加します。次に例を示します。
    virtualhosts:
      - name: default
        sslCertPath: ./certs/fullchain.pem
        sslKeyPath: ./certs/privkey.pem
        additionalGateways: ["route_name"]
  4. CRD ファイルを保存します。例: ApigeeRoute.yaml
  5. その CRD をクラスタに適用します。
    kubectl apply -f ApigeeRoute.yaml -n apigee
  6. 変更を virtualhosts に適用します。
    $APIGEECTL_HOME/apigeectl apply -f overrides.yaml --settings virtualhosts --env $ENVIRONMENT