このステップでは、Apigee Ingress ゲートウェイ用の Kubernetes Service を設定する方法について説明します。公開可能な IP アドレスを取得するには、Ingress のデプロイごとに Kubernetes Service が必要です。プロキシへのクライアント呼び出しにより、この IP アドレスに解決されるホスト名が呼び出されます。
Apigee Ingress ゲートウェイの Kubernetes Service のオプション
IP アドレスを割り当てる Kubernetes Service を提供する方法は 2 つあります。
- Apigee Ingress ゲートウェイごとにカスタム Kubernetes Service を作成する(推奨)。
- デフォルトの Kubernetes Service を使用する。
独自の Kubernetes Service を作成する
本番環境では、Ingress ゲートウェイごとにカスタム Kubernetes Service を作成することをおすすめします。
- Apigee によってデフォルト サービスが削除されますが、クリーンアップ時にカスタム Kubernetes Service は削除されません。このため、Apigee ハイブリッドの再インストール時に IP アドレスが解放されることはありません。
- EKS、AKS、OpenShift などの Google Cloud 以外のプラットフォームでは、クラウド プロバイダと連携するように Kubernetes Service をカスタマイズする必要があります。Apigee ではデフォルトの Kubernetes Service に対する一部のカスタマイズがサポートされていないため、デフォルトのサービスを使用するよりも、カスタムの Kubernetes Service を作成するほうが適切です。
次の手順に沿って新しい Ingress ゲートウェイにトラフィックを設定し、ルーティングします。
- 必要な Pod セレクタのラベル(
app
、ingress_name
、org
)を使用して Kubernetes Service を作成します。これらのラベルは、Apigee Ingress ゲートウェイ Pod にすでに存在しています。次のテンプレートを使用してサービス ファイルを作成します。
apiVersion: v1 kind: Service metadata: name: SERVICE_NAME namespace: apigee spec: ports: - name: status-port port: 15021 protocol: TCP targetPort: 15021 - name: https port: 443 protocol: TCP targetPort: 8443 selector: app: apigee-ingressgateway #required ingress_name: INGRESS_NAME org: ORG_NAME type: LoadBalancer loadBalancerIP: LOAD_BALANCER_IP
- SERVICE_NAME は、このサービスを識別するための名前です。例:
apigee-prod-1
- INGRESS_NAME は、この Apigee Ingress ゲートウェイの名前です。
overrides.yaml
ファイルでingressGateways.name
に指定した名前と一致する必要があります。詳細については、構成プロパティのリファレンスのingressGateways
をご覧ください。 - ORG_NAME は Apigee 組織の名前です。
overrides.yaml
ファイルでorg
に指定した名前と一致する必要があります。詳細については、構成プロパティのリファレンスのorg
をご覧ください。 - LOAD_BALANCER_IP は、ロードバランサの IP アドレスです。
ロードバランサに予約されている IP アドレスがある場合は、それを入力します。
IP アドレスを予約していない場合は、デフォルトの Apigee Ingress サービスから返された IP アドレスを使用できます。次のコマンドで返される
EXTERNAL-IP
を使用します。kubectl get svc -n apigee -l app=apigee-ingressgateway
Apigee Ingress ゲートウェイにより、次のポートが公開されます。
ポート 説明 443 ランタイム トラフィック。 15021 ヘルスチェック。 status-port
により、GKE Ingress ヘルスチェックで使用できる/healthz/ready
エンドポイントが公開されます。 - SERVICE_NAME は、このサービスを識別するための名前です。例:
SERVICE_FILENAME.yaml
を適用してサービスを作成します。kubectl apply -f SERVICE_FILENAME.yaml
- 次のコマンドで Apigee Ingress ゲートウェイの外部 IP を検索します。
kubectl get svc -n apigee SERVICE_NAME
出力は次のようになります。
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE apigee-ingressgateway-prod-hybrid-37a39bd LoadBalancer 192.0.2.123 233.252.0.123 15021:32049/TCP,80:31624/TCP,443:30723/TCP 16h
-
デフォルトの Apigee Ingress ゲートウェイ サービスのロードバランサを無効にします。
- オーバーライド ファイルの
ingressGateways[].svcType
プロパティをClusterIP
に更新します。ingressGateways: svcType: ClusterIP
-
apigeectl apply --org
を使用して変更を適用します。${APIGEECTL_HOME}/apigeectl apply -f ${HYBRID_FILES}/overrides/overrides.yaml
詳細については、デフォルトの Apigee Ingress ゲートウェイ サービスのロードバランサを無効にするをご覧ください。
- オーバーライド ファイルの
ヘルスチェック呼び出しを行って Ingress ゲートウェイをテストします。
curl -H 'User-Agent: GoogleHC/' https://DOMAIN/healthz/ingress -k \ --resolve "DOMAIN:443:INGRESS_IP_ADDRESS"
ここで
- DOMAIN は、プロジェクトと組織の設定 - ステップ 3: 環境グループを作成するで作成した、環境グループのホスト名として指定したドメインです。
- INGRESS_IP_ADDRESS は、Ingress の IP アドレスです(例:
233.252.0.123
)。
成功した場合、次の結果が返されます。
Apigee Ingress is healthy
- この IP アドレスを使用して、登録事業者または DNS プロバイダの DNS レコード(通常は
A
またはCNAME
レコード)を更新します。
デフォルトの Kubernetes Service を使用する
非本番環境の場合、または Apigee Ingress ゲートウェイを介して初期トラフィックをテストする場合は、Apigee ハイブリッドにより Ingress のデプロイごとにデフォルトの Kubernetes Service が提供されます。
overrides.yaml
ファイルで、デフォルト サービスの限定的な構成の変更ができます。使用可能な構成オプションについては、Apigee Ingress ゲートウェイの管理をご覧ください。たとえば、アノテーションを追加できます。
本番環境では、Ingress に Kubernetes Service を使用することをおすすめします。独自の Kubernetes Service を作成するの説明に従ってください。
- 次のコマンドで、デフォルトの Apigee Ingress サービスの外部 IP を検索します。
kubectl get svc -n apigee -l app=apigee-ingressgateway
出力は次のようになります。
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE apigee-ingressgateway-prod-hybrid-37a39bd LoadBalancer 192.0.2.123 233.252.0.123 15021:32049/TCP,80:31624/TCP,443:30723/TCP 16h
ヘルスチェック呼び出しを行って Ingress ゲートウェイをテストします。
curl -H 'User-Agent: GoogleHC/' https://DOMAIN/healthz/ingress -k \ --resolve "DOMAIN:443:INGRESS_IP_ADDRESS"
ここで
- DOMAIN は、プロジェクトと組織の設定 - ステップ 3: 環境グループを作成するで作成した、環境グループのホスト名として指定したドメインです。
- INGRESS_IP_ADDRESS は、Ingress の IP アドレスです(例:
233.252.0.123
)。
成功した場合、次の結果が返されます。
Apigee Ingress is healthy
- この IP アドレスを使用して、登録事業者または DNS プロバイダの DNS レコード(通常は
A
またはCNAME
レコード)を更新します。