このトピックでは、SNI 以外のクライアント、HTTP クライアント、その両方の組み合わせを Apigee ハイブリッドで使用するために有効にする方法について説明します。
SNI 以外のクライアントの構成方法
このセクションでは、Apigee ハイブリッドで SNI(Server Name Indication)以外のクライアントのサポートを有効にする方法について説明します。SNI 以外のクライアントはポート 443 を使用します。このクライアントは、ハイブリッド ランタイム インスタンスを Cloud Load Balancing と統合する場合や SNI をサポートしていないクライアントに必要になります。- ApigeeRoute カスタム リソース定義(CRD)を作成します。
enableNonSniClient
がtrue
に設定されていることを確認します。apiVersion: apigee.cloud.google.com/v1alpha1 kind: ApigeeRoute metadata: name: ROUTE_NAME namespace: APIGEE_NAMESPACE spec: hostnames: - "*" ports: - number: 443 protocol: HTTPS tls: credentialName: CREDENTIAL_NAME mode: SIMPLE #optional minProtocolVersion: TLS_AUTO selector: app: apigee-ingressgateway enableNonSniClient: true
ここで
- ROUTE_NAME は、カスタム リソース(CR)に付ける名前です。
- CREDENTIAL_NAME は、仮想ホストの TLS 認証情報が格納されているクラスタにデプロイされる Kubernetes Secret の名前です。認証情報名は、次の
kubectl
コマンドで確認できます。kubectl -n APIGEE_NAMESPACE get ApigeeRoutes -o=yaml | grep credentialName
hostnames
にはワイルドカード * を設定する必要があります。
- オーバーライド ファイルを開き、次の手順で説明する変更を加えます。
- 環境グループごとに、ApigeeRoute 名を
additionalGateways
プロパティに追加します。次に例を示します。virtualhosts: - name: default sslCertPath: ./certs/fullchain.pem sslKeyPath: ./certs/privkey.pem additionalGateways: ["ROUTE_NAME"]
- CRD ファイルを保存します。例:
ApigeeRoute.yaml
- CRD をクラスタに適用します。
kubectl apply -f ApigeeRoute.yaml -n APIGEE_NAMESPACE
- 変更を
virtualhosts
に適用します。シェルで $ENV_GROUP 環境変数を設定している場合は、次のコマンドで使用できます。helm upgrade $ENV_GROUP apigee-virtualhost/ \ --namespace APIGEE_NAMESPACE \ --atomic \ --set envgroup=$ENV_GROUP \ -f OVERRIDES_FILE.yaml
使用上の注意
- クラスタに複数の組織が存在する場合
Ingress は特定のポート(443)のクラスタレベルにあり、ApigeeRoute CRD に使用できる鍵 / 証明書ペアは 1 つしかないため、すべての組織が同じ鍵 / 証明書ペアを共有する必要があります。
- クラスタに複数の環境グループがある場合に仮想ホストで同じ鍵 / 証明書ペアを共有できるかどうか
あらゆる環境グループのすべてのホスト名で同じ鍵 / 証明書ペアを使用する必要があります。
- ゲートウェイではなく ApigeeRoute を作成する理由
ApigeeRoute は Apigee で検証できますが、ゲートウェイ(Istio CRD)は検証できません。技術的にはゲートウェイも検証できますが、検証 Webhook を通じて潜在的な構成ミスを回避できます。
HTTP クライアントを有効にする
このセクションでは、Apigee ハイブリッドで使用する HTTP クライアントのサポートについて説明します。
- ApigeeRoute カスタム リソース定義(CRD)を作成します。次に例を示します。
apiVersion: apigee.cloud.google.com/v1alpha1 kind: ApigeeRoute metadata: name: ROUTE_NAME namespace: APIGEE_NAMESPACE spec: hostnames: - "*" ports: - number: 80 protocol: HTTP selector: app: istio-ingressgateway enableNonSniClient: true
ここで
- ROUTE_NAME は、CRD に付ける名前です。
hostnames
にはワイルドカード * を設定する必要があります。
- オーバーライド ファイルを開き、次の手順で説明する変更を加えます。
- 環境グループごとに、ApigeeRoute 名を
additionalGateways
プロパティに追加します。次に例を示します。virtualhosts: - name: default sslCertPath: ./certs/fullchain.pem sslKeyPath: ./certs/privkey.pem additionalGateways: ["ROUTE_NAME"]
- CRD ファイルを保存します。例:
ApigeeRoute.yaml
- CRD をクラスタに適用します。
kubectl apply -f ApigeeRoute.yaml -n APIGEE_NAMESPACE
- 変更を
virtualhosts
に適用します。helm upgrade $ENV_GROUP apigee-virtualhost/ \ --namespace APIGEE_NAMESPACE \ --atomic \ --set envgroup=$ENV_GROUP \ -f OVERRIDES_FILE.yaml
SNI 以外のクライアントと HTTP クライアントの両方のサポートを有効にする
このセクションでは、Apigee ハイブリッドで使用する SNI 以外のクライアント(ポート 443)と HTTP クライアント(ポート 80)の両方を有効にする方法について説明します。
- ApigeeRoute カスタム リソース定義(CRD)を作成します。次に例を示します。
apiVersion: apigee.cloud.google.com/v1alpha1 kind: ApigeeRoute metadata: name: ROUTE_NAME namespace: APIGEE_NAMESPACE 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_NAMESPACE get ApigeeRoutes -o=yaml | grep credentialName
- オーバーライド ファイルを開き、次の手順で説明する変更を加えます。
- 環境グループごとに、ApigeeRoute 名を
additionalGateways
プロパティに追加します。次に例を示します。virtualhosts: - name: default sslCertPath: ./certs/fullchain.pem sslKeyPath: ./certs/privkey.pem additionalGateways: ["ROUTE_NAME"]
- CRD ファイルを保存します。例:
ApigeeRoute.yaml
- CRD をクラスタに適用します。
kubectl apply -f ApigeeRoute.yaml -n APIGEE_NAMESPACE
- 変更を
virtualhosts
に適用します。helm upgrade $ENV_GROUP apigee-virtualhost/ \ --namespace APIGEE_NAMESPACE \ --atomic \ --set envgroup=$ENV_GROUP \ -f OVERRIDES_FILE.yaml