Skip to content

Commit b515366

Browse files
committed
docs: Add "Gateway API v1.1: Service mesh, GRPCRoute, and a whole lot more"
1 parent 5c00b32 commit b515366

File tree

1 file changed

+215
-0
lines changed
  • content/ja/blog/_posts/2024-05-09-gateway-api-v1.1

1 file changed

+215
-0
lines changed
Lines changed: 215 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,215 @@
1+
---
2+
layout: blog
3+
title: "Gateway API v1.1: サービスメッシュ、GRPCRoute、そして更なる進化"
4+
date: 2024-05-09T09:00:00-08:00
5+
slug: gateway-api-v1-1
6+
author: >
7+
[Richard Belleville](https://github.com/gnossen) (Google),
8+
[Frank Budinsky](https://github.com/frankbu) (IBM),
9+
[Arko Dasgupta](https://github.com/arkodg) (Tetrate),
10+
[Flynn](https://github.com/kflynn) (Buoyant),
11+
[Candace Holman](https://github.com/candita) (Red Hat),
12+
[John Howard](https://github.com/howardjohn) (Solo.io),
13+
[Christine Kim](https://github.com/xtineskim) (Isovalent),
14+
[Mattia Lavacca](https://github.com/mlavacca) (Kong),
15+
[Keith Mattix](https://github.com/keithmattix) (Microsoft),
16+
[Mike Morris](https://github.com/mikemorris) (Microsoft),
17+
[Rob Scott](https://github.com/robscott) (Google),
18+
[Grant Spence](https://github.com/gcs278) (Red Hat),
19+
[Shane Utt](https://github.com/shaneutt) (Kong),
20+
[Gina Yeh](https://github.com/ginayeh) (Google),
21+
and other review and release note contributors
22+
---
23+
24+
**翻訳者:** [Taisuke Okamoto](https://github.com/b1gb4by) ([IDC Frontier Inc.](https://www.idcf.jp/)),
25+
26+
![Gateway API logo](gateway-api-logo.svg)
27+
28+
昨年10月のGateway APIの正式リリース後、Kubernetes SIG Networkは[Gateway API](https://gateway-api.sigs.k8s.io/)のv1.1リリースを発表しました。
29+
このリリースでは、いくつかの機能が _標準機能_ (GA)に昇格しています。
30+
特にサービスメッシュとGRPCRouteのサポートが含まれます。
31+
また、セッション維持とクライアント証明書の検証を含む新しい実験的機能も導入しています。
32+
33+
## 新機能
34+
35+
### 標準機能への昇格
36+
37+
このリリースでは、4つの待望の機能が標準機能に昇格しました。
38+
これにより、これらの機能は実験的な段階を卒業したことになります。
39+
標準リリースチャンネルへの含有は、APIの設計に対する高い信頼性を示すとともに、後方互換性を保証するものです。
40+
他のKubernetes APIと同様に、標準チャンネルの機能も時間とともに後方互換性を保ちながら進化していきます。
41+
今後もこれらの新機能のさらなる改良と改善が行われることを期待しています。
42+
これらの仕組みについて詳しくは、Gateway APIの[バージョニングポリシー](https://gateway-api.sigs.k8s.io/concepts/versioning/)をご覧ください。
43+
44+
#### [サービスメッシュのサポート](https://gateway-api.sigs.k8s.io/mesh/)
45+
46+
Gateway APIのサービスメッシュサポートにより、サービスメッシュユーザーは同じAPIを使用してIngressトラフィックとメッシュトラフィックを管理できるようになりました。
47+
これにより、同じポリシーとルーティングインターフェースを再利用できます。
48+
Gateway API v1.1では、HTTPRouteなどのルートがServiceを`parentRef`として持つことができるようになり、特定のサービスへのトラフィックの動作を制御できます。
49+
詳細については、[Gateway APIのサービスメッシュドキュメント](https://gateway-api.sigs.k8s.io/mesh/)をお読みいただくか、[Gateway APIの実装リスト](https://gateway-api.sigs.k8s.io/implementations/#service-mesh-implementation-status)をご覧ください。
50+
51+
例えば、アプリケーションのコールグラフの深部にあるワークロードに対して、HTTPRouteを使用してカナリアデプロイメントを行うことができます。
52+
以下はその例です:
53+
54+
```yaml
55+
apiVersion: gateway.networking.k8s.io/v1
56+
kind: HTTPRoute
57+
metadata:
58+
name: color-canary
59+
namespace: faces
60+
spec:
61+
parentRefs:
62+
- name: color
63+
kind: Service
64+
group: ""
65+
port: 80
66+
rules:
67+
- backendRefs:
68+
- name: color
69+
port: 80
70+
weight: 50
71+
- name: color2
72+
port: 80
73+
weight: 50
74+
```
75+
76+
これにより、名前空間`faces`内の`color`サービスに送信されるトラフィックが、元の`color`サービスと`color2`サービスの間で50対50に分割されます。
77+
この設定は移植性が高く、あるメッシュから別のメッシュへ簡単に移行できます。
78+
79+
#### [GRPCRoute](https://gateway-api.sigs.k8s.io/guides/grpc-routing/)
80+
81+
すでにGRPCRouteの実験的機能バージョンを使用している場合、使用しているコントローラーがGRPCRoute v1をサポートするようアップデートされるまで、標準バージョンのGRPCRouteへのアップグレードは控えることをお勧めします。
82+
それまでは、`v1alpha2`と`v1`の両方のAPIバージョンを含むv1.1の実験的チャンネルバージョンのGRPCRouteにアップグレードしても問題ありません。
83+
84+
#### [ParentReference Port](https://gateway-api.sigs.k8s.io/reference/spec/#gateway.networking.k8s.io%2fv1.ParentReference)
85+
86+
ParentReferenceにportフィールドが追加されました。
87+
これにより、リソースをGatewayのリスナー、Service、あるいは他の親リソース(実装によって異なります)に関連付けることができるようになりました。
88+
ポートにバインドすることで、複数のリスナーに一度に関連付けることも可能です。
89+
90+
例えば、HTTPRouteをGatewayの特定のリスナーに関連付ける際、リスナー名ではなくリスナーのポートを指定できるようになりました。
91+
これにより、一つまたは複数の特定のリスナーに関連付けることができます。
92+
93+
詳細については、[Gatewayへの関連付け](リンク先のURLを挿入してください)を参照してください。
94+
95+
#### [適合性プロファイルとレポート](https://gateway-api.sigs.k8s.io/concepts/conformance/#conformance-profiles)
96+
97+
適合性レポートのAPIが拡張され、実装の動作モードを指定する`mode`フィールドと、Gateway APIのチャネル(標準版または実験的機能版)をしめす`gatewayAPIChannel`が追加されました。
98+
`gatewayAPIVersion`と`gatewayAPIChannel`は、テスト結果の簡単な説明とともに、テストスイートの仕組みによって自動的に入力されるようになりました。
99+
レポートの構成がより体系的に整理され、実装者はテストの実行方法に関する情報を追加し、再現手順を提供できるようになりました。
100+
101+
### 実験的機能版チャンネルへの新機能追加
102+
103+
#### [Gatewayのクライアント証明書の検証](https://gateway-api.sigs.k8s.io/geps/gep-91/)
104+
105+
Gatewayの各リスナーでクライアント証明書の検証が設定できるようになりました。
106+
これは、`tls`内に新しく追加された`frontendValidation`フィールドによって実現されています。
107+
このフィールドでは、クライアントが提示する証明書を検証するための信頼アンカーとして使用できるCA証明書のリストを設定できます。
108+
109+
以下の例は、ConfigMapの`foo-example-com-ca-cert`に保存されているCA証明書を使用して、Gatewayリスナーの`foo-https`に接続するクライアントの証明書を検証する方法をしめしています。
110+
111+
```yaml
112+
apiVersion: gateway.networking.k8s.io/v1
113+
kind: Gateway
114+
metadata:
115+
name: client-validation-basic
116+
spec:
117+
gatewayClassName: acme-lb
118+
listeners:
119+
name: foo-https
120+
protocol: HTTPS
121+
port: 443
122+
hostname: foo.example.com
123+
tls:
124+
certificateRefs:
125+
kind: Secret
126+
group: ""
127+
name: foo-example-com-cert
128+
frontendValidation:
129+
caCertificateRefs:
130+
kind: ConfigMap
131+
group: ""
132+
name: foo-example-com-ca-cert
133+
```
134+
135+
#### [セッション維持とBackendLBPolicy](https://gateway-api.sigs.k8s.io/geps/gep-1619/)
136+
137+
Gateway APIに[セッション維持機能](https://gateway-api.sigs.k8s.io/reference/spec/#gateway.networking.k8s.io%2fv1.SessionPersistence)が導入されました。
138+
これは新しいポリシー([BackendLBPolicy](https://gateway-api.sigs.k8s.io/reference/spec/#gateway.networking.k8s.io/v1alpha2.BackendLBPolicy))によってサービスレベルで設定でき、さらにHTTPRouteとGRPCRoute内のフィールドを使用してルートレベルでも設定可能です。
139+
BackendLBPolicyとルートレベルのAPIは、セッションのタイムアウト、セッション名、セッションタイプ、クッキーの有効期間タイプなど、同じセッション維持の設定を提供します。
140+
141+
以下は、`foo`サービスにクッキーベースのセッション維持を有効にする`BackendLBPolicy`の設定例です。
142+
セッション名を`foo-session`に設定し、絶対タイムアウトとアイドルタイムアウトを定義し、クッキーをセッションクッキーとして設定しています:
143+
144+
```yaml
145+
apiVersion: gateway.networking.k8s.io/v1alpha2
146+
kind: BackendLBPolicy
147+
metadata:
148+
name: lb-policy
149+
namespace: foo-ns
150+
spec:
151+
targetRefs:
152+
- group: core
153+
kind: service
154+
name: foo
155+
sessionPersistence:
156+
sessionName: foo-session
157+
absoluteTimeout: 1h
158+
idleTimeout: 30m
159+
type: Cookie
160+
cookieConfig:
161+
lifetimeType: Session
162+
```
163+
164+
### その他の変更点
165+
166+
#### [TLS関連用語の明確化](https://gateway-api.sigs.k8s.io/geps/gep-2907/)
167+
168+
API全体でTLS関連の用語を統一する取り組みの一環として、BackendTLSPolicyに互換性のない変更を加えました。
169+
これにより、新しいAPIバージョン(v1alpha3)が導入されました。
170+
既存のv1alpha2を使用している場合は、データのバックアップや古いバージョンのアンインストールなど、適切な対応が必要です。
171+
172+
v1alpha2のBackendTLSPolicyフィールドへの参照は、v1alpha3に更新する必要があります。
173+
主な変更点は以下の通りです:
174+
175+
- `targetRef`が`targetRefs`に変更(複数のターゲットへの適用が可能に)
176+
- `tls`が`validation`に変更
177+
- `tls.caCertRefs`が`validation.caCertificateRefs`に変更
178+
- `tls.wellKnownCACerts`が`validation.wellKnownCACertificates`に変更
179+
180+
このリリースに含まれるすべての変更点については、[v1.1.0リリースノート](https://github.com/kubernetes-sigs/gateway-api/releases/tag/v1.1.0)をご覧ください。
181+
182+
## Gateway APIの背景
183+
184+
Gateway APIのアイデアは、2019年のKubeCon San Diegoで次世代のIngress APIとして[最初に提案](https://youtu.be/Ne9UJL6irXY?si=wgtC9w8PMB5ZHil2)されました。
185+
それ以来、すばらしいコミュニティが形成され、おそらく[Kubernetes史上最も協力的なAPI](https://www.youtube.com/watch?v=V3Vu_FWb4l4)を開発してきました。
186+
これまでに200人以上がこのAPIに貢献しており、その数は今も増え続けています。
187+
188+
メンテナーは、リポジトリへのコミット、議論、アイデア、あるいは一般的なサポートなど、あらゆる形でGateway APIに貢献してくださった _全ての方々_ に感謝の意を表します。
189+
このように献身的で活発なコミュニティのサポートなしでは、ここまで到達することはできませんでした。
190+
191+
## 実際に使ってみましょう
192+
193+
Gateway APIの特徴として、最新版を使用するためにKubernetesそのものを最新にする必要がありません。
194+
Kubernetes 1.26以降であれば、このバージョンのGateway APIをすぐに利用開始できます。
195+
196+
APIを試すには、[スタートガイド](https://gateway-api.sigs.k8s.io/guides/)をご覧ください。
197+
198+
## 開発に参加しませんか
199+
200+
Ingressやサービスメッシュ向けのKubernetesルーティングAPIの未来を形作るチャンスがたくさんあります。
201+
202+
- [ユーザーガイド](https://gateway-api.sigs.k8s.io/guides)で、対応可能なユースケースをチェックしてみてください。
203+
- [既存のGatewayコントローラー](https://gateway-api.sigs.k8s.io/implementations/)を実際に試してみるのもおすすめです。
204+
- さらに、[コミュニティへの参加](https://gateway-api.sigs.k8s.io/contributing/)もお待ちしています。一緒にGateway APIの未来を築いていきましょう!
205+
206+
## 関連するKubernetesブログ記事
207+
208+
- [New Experimental Features in Gateway API v1.0](/blog/2023/11/28/gateway-api-ga/)
209+
11/2023
210+
- [Gateway API v1.0: GA Release](/blog/2023/10/31/gateway-api-ga/)
211+
10/2023
212+
- [Introducing ingress2gateway; Simplifying Upgrades to Gateway API](/blog/2023/10/25/introducing-ingress2gateway/)
213+
10/2023
214+
- [Gateway API v0.8.0: Introducing Service Mesh Support](/blog/2023/08/29/gateway-api-v0-8/)
215+
08/2023

0 commit comments

Comments
 (0)