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

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

この構成は、Apigee Ingress ゲートウェイと Anthos Service Mesh の両方で機能します。

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: APP_NAME
      enableNonSniClient: true

    ここで

    • ROUTE_NAME は、CRD に付ける名前です。
    • CREDENTIAL_NAME は、仮想ホストの TLS 認証情報が格納されているクラスタにデプロイされる Kubernetes Secret の名前です。認証情報名は、次の kubectl コマンドで確認できます。
      kubectl -n apigee get ApigeeRoutes -o=yaml | grep credentialName
    • APP_NAME: Ingress ゲートウェイのタイプを指定します。
      • apigee-ingressgateway: Apigee Ingress ゲートウェイの場合。
      • istio-ingressgateway: Anthos Service Mesh の場合。
    • 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 を作成する理由

    ApigeeRoute は Apigee で検証できますが、ゲートウェイ(Istio CRD)は検証できません。技術的にはゲートウェイも検証できますが、検証 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