サービスの使用による Kubernetes との内部および外部通信の作成

Using the API Gateway Module to Expose Services

Objectives

After completing this lesson, you will be able to:
  • API ゲートウェイモジュールのコンポーネントの説明
  • API ゲートウェイコンポーネントを使用したサービスの公開

API ゲートウェイモジュール

プロジェクト "Kyma" により、クラスタ外でのサービスおよび機能の公開を可能にするモジュールで Kubernetes プラットフォームが拡張されます。API ゲートウェイモジュールを使用して、Kubernetes サービスが Kyma クラスタの外部からアクセスできるようにします。

Istio および API ゲートウェイはデフォルトの Kyma モジュールであり、プロビジョニングされると Kyma ランタイムに追加されます。関数を作成し、API ゲートウェイを使用して公開する場合は、サーバレスモジュールも追加する必要があります。イベントで公開されているサービスをトリガするには、イベンティングモジュールを追加します。公開されたワークロードを監視するには、遠隔測定モジュールを追加し、提供される可観測性機能を使用します。

API ゲートウェイモジュールの機能

API ゲートウェイモジュールによるサービスの公開

API ゲートウェイは、Istio モジュールによってインストールされるオープンソースプロジェクト Istio に基づいています。次の章では、Istio に関する詳細について説明します。

API ゲートウェイモジュールにより、kyma-gateway と呼ばれるカスタム設定の Istio Ingress ゲートウェイが kyma-system 名前空間にインストールされます。kyma-gateway は、Kyma クラスタに入るすべての外部トラフィックの一元的な連絡先です。Envoy プロキシをアプリケーションベースのサービスプロキシとして使用し、トラフィックを処理して適切なサービスに転送します。

このモジュールでは、受信 HTTP 要求を承認するために Istio 機能も使用されます。これにより、ワークロードを安全に公開するために使用できる APIRule カスタムリソースが提供されます。APIRule を使用すると、以下を実行できます。

  • 複数のワークロードをグループ化し、単一のホストで公開します。
  • 短いホスト名を使用して、新しいクラスタへのリソースの移行を簡略化します。
  • 特定の HTTP メソッドへのアクセスを許可する簡単な設定を提供する noAuth アクセス方針を設定します。
  • jwt または extAuth アクセス方針を設定することで、ワークロードを保護します。jwt アクセス方針により、Istio の JWT 設定を使用して、公開されたサービスを保護し、JSON Web トークンを使用してそれらを操作することができます。extAuth アクセス方針により、カスタム認証および権限ロジックを実装することができます。

APIRule カスタムリソースの概要

API ゲートウェイモジュールを使用してサービスを公開するには、APIRule (apirules.gateway.kyma-project.io) と呼ばれる Kubernetes カスタムリソース (CR) を作成する必要があります。サービスの APIRule を作成することで、API ゲートウェイコントローラにより、kyma-gateway の背後に Istio VirtualService が作成されます。そのため、APIRule CR では、サービスを迅速かつ安全にプロビジョニングできる上位レベルの抽象化があります。

APIRule を定義するには、種類が apirules.gateway.kyma-project.io の CR を作成する必要があります。単純な APIRule マニフェストは以下のようになります。

YAML
123456789101112131415
apiVersion: gateway.kyma-project.io/v2 kind: APIRule metadata: name: my-api-rule spec: hosts: - my-api-rule.xxxxx.kyma.ondemand.com service: name: hello-kyma-svc port: 80 gateway: kyma-system/kyma-gateway rules: - path: /* methods: ["GET"] noAuth: true

APIRule CR の spec セクションについて詳しく見てみましょう。

  • gateway: サービスを公開するための Istio Ingress ゲートウェイ。開発目的で、Kyma ドメインおよびデフォルトのゲートウェイ kyma-system/kyma-gateway を使用できます。本稼働環境では、カスタムドメインを使用して TLS ゲートウェイを設定します。
  • hosts: サービスを公開するホストのホストまたはサブドメインを指定します。Istio VirtualServices を使用して、同じホストの背後に複数のサービスを公開できます。
  • service: 公開する Kubernetes サービスを指定します。name は、公開する Kubernetes サービスの名前です。port は、公開する Kubernetes サービスのポートです。
  • rules: アクセスルールの配列を指定します。ルールごとに、マッチングする必要がある要求のパスが path フィールドで指定され、methods 配列で HTTP メソッドが指定されます。APIRule では、アクセス方針のコンセプトを使用して、公開されたエンドポイントのセキュリティ設定を定義することができます。サポートされているアクセス方針は、noAuth、jwt、および extAuth です。noAuth を true に設定すると、認証が無効になります。jwt 項目では Istio JWT アクセス方針が指定され、extAuth 項目では Istio External Authorization アクセス方針が指定されます。

詳細については、APIRule Custom Resource を参照してください。

Kyma ダッシュボードの APIRule カスタムリソース

Kyma ダッシュボードでは、APIRule を作成してワークロードを公開する簡単な方法が提供されます。APIRule の作成は、Functions and Services のビューに統合されています。ただし、APIRule ビューに移動し、新しい APIRule を作成することもできます。

Kyma ダッシュボードの APIRule

APIRule 仕様は、YAML ファイルで定義するか、Kyma ダッシュボードでフォームベースのビューを使用することができます。

Kyma ダッシュボードを使用した APIRule の作成

サマリ

API ゲートウェイモジュールにより、Kyma ランタイムクラスタ外でのサービスおよび機能の公開が可能になります。このモジュールはオープンソースプロジェクト Istio に基づいており、Kyma クラスタに入る外部トラフィックを処理する kyma-gateway と呼ばれるカスタム設定の Istio Ingress ゲートウェイが含まれています。API ゲートウェイモジュールを使用してサービスを公開するには、APIRule CR を作成します。これにより、JWT トークンやカスタム認証などを使用したワークロードのグループ化および保護が可能になります。

その他の参考資料