HashiCorpは、Consul API Gatewayをベータリリースに移行した。このリリースではConsul Service Mesh入力ソリューションに多くの新機能が追加されている。例えば、TCPRouteのサポート、Helm Chartを介したインストール、リスナーごとのTLS設定などである。
Consul API Gatewayにより、Consulサービスメッシュで実行されているアプリケーションへのトラフィックのルーティングが簡単になる。これは、2つの主要な問題を解決することを目的としたもので、入口でのアクセス制御とトラフィック管理の簡素化である。Consul API Gatewayを使うと、外部接続要求のプロトコルを設定し、信頼できるプロバイダーからのTLS証明書をクライアントに提供できるようになる。このサービスでは、ホスト名、パス、ヘッダー、HTTPメソッド内のパターンマッチングによって、サービス間での負荷分散とトラフィックのルーティングもできるようになる。
Consul API Gatewayは、Kubernetes Gateway API仕様に基づいて構築されている。この仕様では、カスタムリソース定義(CRD)が定義されている。クライアント要求のパスまたはプロトコルに基づいてゲートウェイとルートを作成するためのものである。これはオープンソースプロジェクトで「表現力豊かで拡張性がある、ロール指向のインターフェースを通じてKubernetesサービスネットワーキングを進化させるものであり、多くのベンダーによって実装され、幅広い業界をサポートする」ことを目的としている。
このリリースでは、TCPRouteを介したクライアントとサービスメッシュアプリケーション間のTCP接続とTCP + TLS接続の両方のサポートが追加されている。TLSリスナーを活用するTCPベースのルートを作成することも可能である。以下の例では、Kubernetes Gateway API CRDを使ってTCPルートを実装および管理している。
apiVersion: gateway.networking.k8s.io/v1alpha2
kind: TCPRoute
metadata:
name: tcp-app-1
spec:
parentRefs:
- name: my-tcp-gateway
sectionName: foo
rules:
- backendRefs:
- name: my-foo-service
port: 6000
リスナーごとにTLS設定を構成できるようになった。これには、許容される最小および最大のTLSバージョンと暗号スイートの設定が含まれる。この例では、最小TLSバージョンを1.3に設定し、ポート8843でHTTPSトラフィックに対して許可する暗号スイートを指定している。
listeners:
- protocol: HTTPS
port: 8443
name: https
allowedRoutes:
namespaces:
from: Same
tls:
certificateRefs:
- name: consul-server-cert
options:
"api-gateway.consul.hashicorp.com/tls_min_version": "TLSv1_3"
"api-gateway.consul.hashicorp.com/tls_cipher_suites": "TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256"
このリリースではConsul Helmチャートが強化されている。Consul API Gatewayのインストールと設定がサポートされるようになったためである。これは、Consul Helmチャートのバージョン0.40.0以降で使用でき、Consulサーバはバージョン1.11.1以降を実行する必要がある。
リリースの詳細については、HashiCorpブログとConsulドキュメントをご覧ください。Consul API Gateway on Kubernetesを設定手順を説明する新しいHashiCorp Learnチュートリアルもある。