サービス メッシュ(ASM)は、イングレス ゲートウェイとエグレス ゲートウェイを提供して、インバウンド トラフィックとアウトバウンド トラフィックを制御し、エンドツーエンドの暗号化を実装します。このトピックでは、ASM イングレス ゲートウェイとエグレス ゲートウェイの機能について説明します。
イングレス ゲートウェイ
イングレス ゲートウェイは、レイヤー 7 でのインバウンド トラフィックをルーティングするための統一された入り口を提供します。リクエストの内容に基づいて、同じ伝送制御プロトコル(TCP)ポートからの HTTP リクエストを異なる Kubernetes サービスにルーティングします。イングレス ゲートウェイは、ライフサイクル管理、複数プロトコルのサポート、トラフィック管理、セキュリティ機能、可観測性機能など、さまざまな機能を提供します。
機能 | 説明 | 参照 |
ライフサイクル管理 | インターネットまたは内部ネットワークを介したアプリケーションへのアクセスの単一のエントリ ポイントとして機能するように、Kubernetes クラスターに ASM イングレス ゲートウェイをデプロイできます。イングレス ゲートウェイは、トラフィックの管理とルーティングを簡素化し、レイヤー 7 のロード バランシング機能を使用して、HTTP リクエストのパス、ホスト ヘッダー、またはその他の属性に基づいて、対応するバックエンド サービスにトラフィックをインテリジェントに分散できます。 ASM コンソールでイングレス ゲートウェイを管理できます。 | |
ASM サーバーレス ゲートウェイを使用してシステムの可用性と弾力性を向上させる | サーバーレス ゲートウェイは、ASM によって提供される新しいタイプのゲートウェイです。サーバーレス ゲートウェイは、トラフィックの急増を処理してシステムの安定性を向上させながら、コンピューティング コストを低く抑えるのに役立ちます。データ プレーン上の Container Service for Kubernetes(ACK)クラスターで実行される ASM ゲートウェイと比較して、ASM サーバーレス ゲートウェイには、高い安定性、高い弾力性、低コストという利点があります。さらに、ASM サーバーレス ゲートウェイはサーバーレス方式でデプロイされ、ASM によって管理されます。したがって、ASM サーバーレス ゲートウェイは ACK クラスターに依存しないため、可用性が高くなっています。 | |
ネットワーク ロードバランサー(NLB)の使用 | NLB は、モノのインターネット(IoE)時代向けのレイヤー 4 ロード バランシング サービスです。NLB は超高性能を提供し、オンデマンドで自動的にスケーリングできます。より高い可用性をサポートし、ゲートウェイ トラフィックの安定性をさらに向上させます。イングレス ゲートウェイは NLB をサポートしています。イングレス ゲートウェイの ServiceType を LoadBalancer に設定すると、デフォルトでクラシック ロードバランサー(CLB)インスタンスがイングレス ゲートウェイのロードバランサーとして関連付けられます。 | |
複数プロトコルのサポート | YAML ファイルを作成する必要なく、グラフィカル ユーザー インターフェース(GUI)でデスティネーション ルールと仮想サービスを作成できます。これにより、トラフィック管理が簡素化されます。 | |
ネットワーク トポロジの最適化、アプリケーション サーバーのスケールアウト、またはユーザー トラフィックの調整を行う必要がある場合は、ASM コンソールのトラフィック管理センターを使用して TCP トラフィックをスムーズに移行できます。これにより、ビジネスの継続性とサービスの高可用性を確保できます。 | ||
セキュアな HTTPS プロトコルを介した暗号化アクセスを提供する必要がある場合は、ASM イングレス ゲートウェイを使用して HTTPS を有効にできます。ASM では、イングレス ゲートウェイを使用して動的証明書ロードを有効にすることができます。これにより、秘密鍵、サーバー証明書、ルート証明書をリアルタイムで動的に構成でき、イングレス ゲートウェイを再起動したり、シークレット ボリュームをマウントしたりする必要がなくなります。これにより、操作が簡素化され、イングレス ゲートウェイの再起動によるサービス中断のリスクがなくなります。イングレス ゲートウェイを使用すると、複数の証明書とその秘密鍵を監視および管理できます。これにより、異なるホストに対して柔軟で安全な通信機能が提供され、データ送信のセキュリティが強化されます。 | ||
ASM イングレス ゲートウェイを使用して、ASM インスタンス内の Google リモート プロシージャ コール(gRPC)サービスにアクセスできます。これにより、gRPC サービスに対して正確なアクセス制御を実装し、サービス ガバナンスを向上させ、サービス間の通信のセキュリティを確保できます。 | ||
ASMGrpcJsonTranscoder を使用して、JSON ボディを持つ HTTP リクエスト(HTTP/JSON リクエスト)を gRPC リクエストにトランスコードできます。この機能により、クライアントから HTTP/JSON リクエストを送信して、ASM インスタンス内の gRPC サービスにアクセスできます。 | ASMGrpcJsonTranscoder を使用して、HTTP/JSON リクエストが ASM インスタンス内の gRPC サービスにアクセスできるようにする | |
WebSocket は、単一の TCP 接続を介して全二重通信チャネルを提供するコンピューター通信プロトコルです。WebSocket は、開放型システム間相互接続(OSI)モデルのアプリケーション層にあります。WebSocket を使用すると、サーバーはクライアントにデータをプッシュできます。WebSocket に準拠するサービスは WebSocket サービスです。 | ||
一般的なトラフィック管理機能 | フラッシュ セールなどのシナリオでは、トラフィックが瞬時にシステムでサポートされる最大負荷を超えるピークに達する可能性があります。その結果、多数の呼び出しが処理待ちになり、システムが応答しなくなります。ASM は、ゲートウェイとサービスのトラフィックを調整するために使用できるローカル調整機能を提供します。このようにして、システムが過負荷になるのを防ぐことができます。 | |
イングレス ゲートウェイの特定のルートに対してグローバル調整を構成して、トラフィック バースト、サービスの過負荷、リソースの枯渇、悪意のある攻撃などの問題に対処するためのトラフィックを正確に制御できます。これにより、バックエンド サービスの安定性が保護され、コストが削減され、ユーザー エクスペリエンスが向上します。 | ||
ASM では、仮想サービスやデスティネーション ルールなどのリソースを構成して、マイクロサービスの非侵入型トラフィック ガバナンスを実装できます。たとえば、トラフィック ルーティング、調整、サーキット ブレーキング、トラフィック ミラーリングなどの機能を使用できます。 | ||
Gateway API は、SIG-NETWORK コミュニティによって管理されているオープン ソース プロジェクトです。このプロジェクトは、表現力豊かで拡張性があり、ロール指向のインターフェースを提供することにより、サービス ネットワーキングを進化させることを目的としています。Gateway API を使用して、クラスター内のアプリケーションにアクセスするためのルーティング ルールを定義できます。 | ||
マネージド クラスターで Ingress リソースを使用し、特定の ASM ゲートウェイを Ingress コントローラーとして指定できます。 | ||
トラフィック ミラーリング機能を使用して、本番トラフィックをテスト クラスターまたはテスト サービス バージョンにミラーリングできます。ミラーリングされた本番トラフィックを使用したテストは、本番環境に影響を与えることなく、バージョン変更に伴うリスクを軽減します。 | ||
セッション アフィニティ(スティッキー セッションとも呼ばれます)は、ロードバランサーで使用できる機能であり、同じユーザーまたはセッションからのすべてのリクエストを同じバックエンド サーバーに渡すことができます。この機能は、オンライン ショッピング カート、ログオン セッション、パーソナライズされた設定など、ユーザー状態を維持する必要があるシナリオに適用されます。 | ||
トラフィック セキュリティと動的証明書ロード | セキュアな HTTPS プロトコルを介した暗号化アクセスを提供する必要がある場合は、ASM イングレス ゲートウェイを使用して HTTPS を有効にできます。ASM では、イングレス ゲートウェイを使用して動的証明書ロードを有効にすることができます。これにより、秘密鍵、サーバー証明書、ルート証明書をリアルタイムで動的に構成でき、イングレス ゲートウェイを再起動したり、シークレット ボリュームをマウントしたりする必要がなくなります。これにより、操作が簡素化され、イングレス ゲートウェイの再起動によるサービス中断のリスクがなくなります。イングレス ゲートウェイを使用すると、複数の証明書とその秘密鍵を監視および管理できます。これにより、異なるホストに対して柔軟で安全な通信機能が提供され、データ送信のセキュリティが強化されます。 | |
イングレス ゲートウェイとサイドカー プロキシ間のすべてのデータは、相互トランスポート層セキュリティ(mTLS)トンネルを介して送信されます。サイドカー プロキシがアプリケーションに挿入されている場合は、エンドツーエンドの暗号化を確実にするために、イングレス ゲートウェイで TLS ターミネーションを構成することをお勧めします。サイドカー プロキシがアプリケーションに挿入されていない場合、またはその他の特別な状況が発生した場合、イングレス ゲートウェイは TLS パススルーをサポートします。 | ||
イングレス ゲートウェイを使用して、HTTPS と動的証明書ロードを有効にできます。これにより、ゲートウェイのセキュリティが確保されます。証明書をイングレス ゲートウェイの CLB インスタンスにバインドすることにより、HTTPS リスナーを作成することもできます。HTTPS リスナーは、HTTPS リクエストを HTTP リクエストに復号化し、HTTP リクエストをイングレス ゲートウェイ ポッドに転送します。 | ||
ASM では、証明書管理機能を使用して、ASM インスタンス内の複数のクラスターに証明書を同期できます。証明書管理機能は、証明書情報の表示や有効期限のアラートなどの機能を提供することにより、証明書の管理に役立ちます。 | ||
以前のトランスポート層セキュリティ(TLS)バージョンの使用によってセキュリティ リスクが発生する場合は、イングレス ゲートウェイで新しい TLS バージョンを構成できます。次に、TLS 1.0 や TLS 1.1 などの以前のバージョンを無効にし、より安全な TLS 1.2 以降を有効にして、中間者攻撃やデータ侵害などのセキュリティ リスクを効果的に防ぐことができます。これにより、サービスとクライアント間の HTTPS 接続の安定性とセキュリティが保証されます。 | ||
イングレス ゲートウェイでは、mTLS プロトコルに基づく gRPC サービスを構成できます。このセキュリティ メカニズムにより、承認されたクライアントのみが gRPC サービスにアクセスできます。エンドツーエンドの暗号化と双方向認証は、データ送信プロセス全体で実装され、盗聴、改ざん、不正アクセスから情報を効果的に保護します。 | ||
視覚的に証明書をドメイン名にバインドできます。証明書をドメイン名にバインドした後、イングレス ゲートウェイを使用して HTTPS などのプロトコルを介してドメイン名にアクセスできます。これにより、イングレス ゲートウェイのセキュリティが向上します。 | ||
イングレス ゲートウェイを Web アプリケーション ファイアウォール(WAF)インスタンスに接続し、アクセス ログのフィールドをカスタマイズして、WAF インスタンスによってバックツーオリジン リクエストに追加されたヘッダーを表示できます。これにより、オンラインでの運用と保守が容易になります。 | ||
cert-manager は、証明書の発行とデプロイに使用できる証明書ライフサイクル管理システムです。 cert-manager を使用して、ASM ゲートウェイの証明書を発行できます。これにより、ASM ゲートウェイを使用して HTTPS 経由でサービスにアクセスできます。これにより、データ送信のセキュリティが確保されます。 | ||
承認管理 | ASM では、イングレス ゲートウェイのブラックリストまたはホワイトリストを構成して、送信元 IP アドレス、HTTP リクエストのドメイン名、ポート、リモート IP ブロックに基づいて ASM インスタンス内のアプリケーションへのアクセスを制御できます。この機能を使用して、ASM インスタンス内のアプリケーションのセキュリティを確保できます。このトピックでは、特定の送信元 IP アドレスからのリクエストを拒否または許可するように、イングレス ゲートウェイのブラックリストまたはホワイトリストを構成する方法について説明します。 | |
HTTP リクエストのドメイン名、パス、メソッドに基づいてリクエストを認証するなど、ニーズに基づいてアクセス制御ポリシーをカスタマイズする必要がある場合は、イングレス ゲートウェイを使用してカスタム承認を実装し、認証されたユーザーのみがキー サービスにアクセスできるようにすることができます。 | ||
OAuth 2.0 プロトコル上に構築された OpenID Connect(OIDC)は、ID 認証と承認のプロトコルです。シングル サインオン(SSO)を実装するためによく使用されます。イングレス ゲートウェイで OIDC ベースの SSO を構成した後、Alibaba Cloud IDentity as a Service(IDaaS)または OIDC プロトコルに準拠する他の ID プロバイダー(IdP)によって提供される ID 情報を使用して、単一の ID で複数の関連システムにログオンできます。さらに、アプリケーションを変更する必要はありません。これにより、アプリケーションのセキュリティが向上し、アプリケーションの開発と管理が簡素化されます。 | ||
JSON Web トークン(JWT)は、ユーザーを認証するためによく使用されます。JWT は、ユーザー情報と暗号化されたユーザー情報を格納するフィールドを保持します。JWT ベースの認証を実装する場合、暗号化されたユーザー情報は復号化され、入力されたユーザー情報と比較されます。これにより、ユーザー ID が検証されます。イングレス ゲートウェイで JWT ベースの認証を構成できます。 | ||
動的なアクセス制御が必要な場合は、イングレス ゲートウェイに Open Policy Agent(OPA)エンジンを統合して、ユーザー ID やリクエスト コンテンツに基づいて承認ポリシーをカスタマイズし、サービス間の通信をリアルタイムで制御できます。これにより、不正アクセスが効果的に防止され、データ侵害のリスクが軽減され、ASM インスタンス内のアプリケーションのセキュリティが強化されます。このトピックでは、OPA エンジンを使用して、イングレス ゲートウェイが受信するリクエストを認証および承認する方法について説明します。この例では、リクエストはイングレス ゲートウェイを通過して HTTPBin アプリケーションにアクセスします。 | ||
コードを変更せずにカスタム承認サービスを使用して、ASM インスタンス内のすべてのアプリケーションに SSO を実装できます。これにより、アプリケーション変換と運用と保守のコストが削減されます。 | ||
自己管理型 Keycloak を IdP として使用して、ASM インスタンス内のすべてのアプリケーションに SSO を実装できます。 | ||
ASM インスタンス内のイングレス ゲートウェイに JWT ベースの認証を構成して、リクエストの送信元を認証できます。この方法は、エンドユーザー認証とも呼ばれます。ASM インスタンス内のイングレス ゲートウェイに JWT ベースの認証を構成した後、ASM は、イングレス ゲートウェイを使用してサービスにアクセスするリクエストに、リクエスト ヘッダーに有効な JWT が含まれているかどうかを確認します。有効な JWT を含むリクエストのみが許可されます。 | ||
あるドメインのクライアントが別のドメインのサービス、または同じドメインに存在するがクライアントとは異なるポートを使用するサービスにアクセスする場合、クライアントはクロスオリジン リクエストを開始します。サービスがクロスオリジン リソース アクセスを許可しない場合、クライアントはサービスにアクセスできません。この場合、ASM インスタンスの仮想サービスにクロスオリジン リソース シェアリング(CORS)ポリシーを構成して、CORS を実装できます。 | ||
アクセス リクエストを開始するクライアントと ASM ゲートウェイの間にレイヤー 7 プロキシがデプロイされているかどうかにかかわらず、特定の IP アドレスが ASM インスタンス内のアプリケーションにアクセスするのを制限できます。 | ||
カスタム機能 | 複数のイングレス ゲートウェイに Istio ゲートウェイを構成できます。これにより、構成プロセスが簡素化されます。 | |
複数の CLB インスタンスをイングレス ゲートウェイに関連付けることにより、複数の CLB インスタンスを使用してイングレス ゲートウェイにアクセスできます。 | ||
イングレス ゲートウェイで IP ベースのアクセス制御を実施するには、クライアントの送信元 IP アドレスを取得する必要があります。たとえば、IP アドレスのブラックリストまたはホワイトリストを構成することにより、イングレス ゲートウェイへのリクエストを拒否または許可する承認ポリシーを作成できます。 | ||
IPv6 アドレスを使用するイングレス ゲートウェイを作成できます。IPv6 は、IPv4 と比較してより高いセキュリティを提供します。 | ||
データ プレーン上の Kubernetes クラスターのポッドが、イングレス ゲートウェイで構成されている CLB インスタンスの IP アドレスにアクセスできない場合は、Kubernetes クラスターの IP アドレスまたはイングレス ゲートウェイの名前を使用して、Kubernetes クラスター内の CLB インスタンスの IP アドレスにアクセスできます。 | データ プレーン上の Kubernetes クラスターのポッドが、イングレス ゲートウェイで構成されている CLB インスタンスの IP アドレスにアクセスできない場合はどうすればよいですか? | |
クライアントが HTTPS を使用していて、HTTP/2 のサポートに制限されており、構成を変更してもこの問題を解決できない場合は、イングレス ゲートウェイで HTTP/2 を無効にすることをお勧めします。 |
エグレス ゲートウェイ
ASM は、ASM 内のアプリケーションのすべてのアウトバウンド トラフィックをルーティングするためのエグレス ゲートウェイを提供します。ASM コンソールまたは Kubernetes API を使用して、エグレス ゲートウェイを作成および管理できます。
機能 | 説明 | 参照 |
ライフサイクル管理 | アプリケーションがインターネットまたは内部ネットワーク トラフィックの中央集中型エグレスを必要とする場合は、Kubernetes クラスターに ASM エグレス ゲートウェイをデプロイできます。中央集中型エグレスとして、エグレス ゲートウェイは、クラスター内の外部サービス トラフィックの管理とルーティングを簡素化できます。 | |
カスタム機能 | ASM インスタンス内のアプリケーションが外部サービスと通信する必要がある場合は、エグレス ゲートウェイを使用してすべてのアウトバウンド トラフィックを一元管理できます。エグレス ゲートウェイを構成した後、トラフィックのセキュリティ制御とルーティングを実装して、ASM インスタンス内のアプリケーションのセキュリティと可観測性を向上させることができます。 | |
バージョン 1.16.4 以降の ASM インスタンスでは、CustomResourceDefinition(CRD)フィールドを使用してエグレス トラフィック ポリシーを定義できます。 |
Istio ゲートウェイ
Istio ゲートウェイは、ASM インスタンスのエッジで実行され、インバウンドまたはアウトバウンドの HTTP/TCP トラフィックを受信するロードバランサーを定義します。
機能 | 説明 | 参照 |
ライフサイクル管理 | ASM コンソールで Istio ゲートウェイを作成、変更、および削除できます。 |
ゲートウェイの高度な機能
ASM では、グレースフル シャットダウンと可観測性機能を提供する高可用性ゲートウェイを構成できます。これにより、トラフィックの損失が軽減され、運用と保守のコストが削減されます。
機能 | 説明 | 参照 |
高可用性 | 高性能で高可用性の ASM ゲートウェイを構成して、サービスの継続性を確保できます。 | |
ASM ゲートウェイのポッドを特定のノードにスケジュールして、ゲートウェイの高可用性を向上させ、ゲートウェイ ポッドとアプリケーション ポッド間の分離を強化できます。 | ||
サーバーレス ASM ゲートウェイは、仮想ノードと Elastic Container Instance に基づいて提供されます。弾力的なリソースが必要で、ノードの保守が不要なサービス シナリオに適用できます。 | ||
ASM ゲートウェイの YAML ファイルでポッド アンチアフィニティ ポリシーを構成して、ゲートウェイのポッドを異なるノードまたはゾーンに割り当てることができます。これにより、ゲートウェイの可用性が向上します。 | ||
ASM ゲートウェイでスケールインまたはローリング再起動操作を実行すると、ゲートウェイ ポッドの数が減少するため、少量のトラフィックが失われます。この問題を解決するには、グレースフル シャットダウンを有効にします。これにより、ゲートウェイ ポッドの数が減少した場合でも、指定された期間内にトラフィックの転送を継続できます。これにより、トラフィックが失われないことが保証されます。 | ||
複数のクラスターに ASM ゲートウェイをデプロイして、サービスの可用性を向上させることができます。複数のクラスターにサービスをデプロイし、これらのクラスターに統一されたイングレス ゲートウェイを構成して、これらのクラスターへのイングレス トラフィックを管理できます。 | ||
ASM ゲートウェイは、サービス トラフィックのイングレスまたはエグレスを管理します。高可用性である必要があります。ASM ゲートウェイのアップグレード後にビジネスの継続性を確保するために、ASM ゲートウェイのカナリア アップグレードを実行できます。新しいバージョンのゲートウェイ ポッドを起動して、ポッドからトラフィックが正しく転送されることを確認できます。その後、ASM ゲートウェイを完全にアップグレードできます。ポッドからトラフィックが転送されるときに問題が発生した場合は、いつでも新しいバージョンのポッドを削除できます。問題が解決したら、アップグレードを続行できます。 | ||
可観測性 | ビジネス要件に基づいて、ASM ゲートウェイのアクセス ログを生成および収集する機能を個別に構成できます。ASM ゲートウェイのアクセス ログを生成する機能を有効にすると、ゲートウェイはアクセス ログを標準出力に出力します。アクセス ログに出力されるフィールドをカスタマイズできます。ASM ゲートウェイのアクセス ログを収集する機能を有効にすると、ゲートウェイによって出力されたログが Alibaba Cloud の Simple Log Service に収集され、ログの保存と分析、およびクエリと分析結果をチャートで視覚化できます。 | |
ビジネス要件に基づいて、ASM ゲートウェイのメトリックを生成および収集する機能を個別に構成できます。ASM ゲートウェイのメトリックを生成する機能を有効にすると、ゲートウェイ自体が対応するメトリックを生成します。ゲートウェイによって生成されるメトリックをカスタマイズできます。ASM ゲートウェイのメトリックを収集する機能を有効にすると、生成されたメトリックが Managed Service for Prometheus に収集され、メトリックの保存と分析、およびクエリと分析結果をチャートで視覚化できます。 | ||
リクエスト ペイロード処理 | Web アプリケーションの HTTP レスポンス ヘッダーを追加して、アプリケーションのセキュリティを向上させることができます。 | |
ASM ゲートウェイのデータ圧縮を有効にして、HTTP リクエストのレスポンス コンテンツを圧縮できます。これにより、応答時間とトラフィック消費が削減されます。 |
既存のシステムとの統合
自己管理型 Istio イングレス ゲートウェイまたは NGINX Ingress Controller から ASM ゲートウェイにトラフィックを移行して一元管理できます。これにより、メンテナンス コストが削減され、運用と保守の効率が向上します。
機能 | 説明 | 参照 |
自己管理型ゲートウェイから ASM イングレス ゲートウェイへのトラフィックの移行 | 自己管理型 Istio イングレス ゲートウェイから ASM イングレス ゲートウェイにトラフィックを移行できます。 | |
NGINX Ingress Controller から ASM イングレス ゲートウェイにトラフィックを移行できます。 | ||
一般的な NGINX 構成を ASM ゲートウェイに移行できます。 |