IngressTrait
IngressTraitカスタム・リソースには、アプリケーションへのトラフィック・ルーティングのホストおよびパス・ルールの構成が含まれます。IngressTraitを指定するサンプルApplicationConfigurationを次に示します。このIngressTraitを示すサンプル・アプリケーションをデプロイするには、Hello World Helidonを参照してください。
apiVersion: core.oam.dev/v1alpha2
kind: ApplicationConfiguration
metadata:
name: hello-helidon-appconf
namespace: hello-helidon
annotations:
version: v1.0.0
description: "Hello Helidon application"
spec:
components:
- componentName: hello-helidon-component
traits:
- trait:
apiVersion: oam.verrazzano.io/v1alpha1
kind: IngressTrait
metadata:
name: hello-helidon-ingress
spec:
rules:
- paths:
- path: "/greet"
pathType: Prefix
サンプル構成では、IngressTrait hello-helidon-ingress
がhello-helidon-component
アプリケーション・コンポーネントに設定され、パスとパス・タイプを構成するイングレス・ルールを定義します。これにより、アプリケーションへの外部アクセス用のルートが公開されます。IngressRuleにhosts
リストが指定されていないため、DNSホスト名が自動的に生成されます。
たとえば、サンプル・アプリケーション構成が正常にデプロイされると、IngressTraitで指定されたpath
および生成されたホスト名でアプリケーションにアクセスできます。
$ HOST=$(kubectl get gateways.networking.istio.io hello-helidon-hello-helidon-gw -n hello-helidon -o jsonpath={.spec.servers[0].hosts[0]})
$ echo $HOST
hello-helidon-appconf.hello-helidon.11.22.33.44.nip.io
$ curl -sk -X GET https://${HOST}/greet
ロード・バランサのセッション・アフィニティは、宛先ルールにHTTP Cookieを使用して構成します。次に示すApplicationConfigurationのサンプルは更新したもので、宛先ルールにHTTP Cookieが使用されています。
apiVersion: core.oam.dev/v1alpha2
kind: ApplicationConfiguration
metadata:
name: hello-helidon-appconf
namespace: hello-helidon
annotations:
version: v1.0.0
description: "Hello Helidon application"
spec:
components:
- componentName: hello-helidon-component
traits:
- trait:
apiVersion: oam.verrazzano.io/v1alpha1
kind: IngressTrait
metadata:
name: hello-helidon-ingress
spec:
rules:
- paths:
- path: "/greet"
pathType: Prefix
- destination:
httpCookie:
name: sessioncookie
path: "/"
ttl: 600
さらに、特定のリクエスト・プリンシパルへのアクセスを制限し、オプションで追加条件に基づいて予測される認可ポリシーを、パスに対して指定できます。パスのリクエストは、定義した条件を満たす一致リクエスト・プリンシパルに制限されます。それ以外の場合、リクエストは拒否されます。
apiVersion: core.oam.dev/v1alpha2
kind: ApplicationConfiguration
metadata:
name: hello-helidon-appconf
namespace: hello-helidon
annotations:
version: v1.0.0
description: "Hello Helidon application"
spec:
components:
- componentName: hello-helidon-component
traits:
- trait:
apiVersion: oam.verrazzano.io/v1alpha1
kind: IngressTrait
metadata:
name: hello-helidon-ingress
spec:
rules:
- paths:
- path: "/greet"
pathType: Prefix
authorizationPolicy:
rules:
- from:
requestPrincipals:
- "*"
when:
- key: request.auth.claims[realm_access][roles]
values:
- "customer"
ホスト名に関連する次のルールを使用します:
- ホスト名を指定した場合、証明書を指定するオプションがあります。証明書を指定しないと、Verrazzanoによって証明書が生成されます。
- 証明書を指定する場合は、ホスト名を指定する必要があります。
- ホスト名または証明書を指定しないと、Verrazzanoによってそれらが生成されます。
IngressTrait
フィールド | 型 | 説明 | 必須 |
---|---|---|---|
apiVersion |
文字列 | oam.verrazzano.io/v1alpha1 |
はい |
kind |
文字列 | IngressTrait | はい |
metadata |
ObjectMeta | メタデータのフィールドについては、Kubernetes APIのドキュメントを参照してください。 | いいえ |
spec |
IngressTraitSpec | イングレス・トレイトの希望の状態。 | はい |
IngressTraitSpec
IngressTraitSpecは、イングレス・トレイトの希望の状態を指定します。
フィールド | 型 | 説明 | 必須 |
---|---|---|---|
rules |
IngressRule配列 | イングレス・トレイトに対するイングレス・ルールのリスト。 | はい |
tls |
IngressSecurity | イングレス・トレイトのセキュリティ・パラメータ。これは、IngressRuleに特定のホストが指定されている場合にのみ必要です。 | いいえ |
IngressRule
IngressRuleは、イングレス・トレイトのルールを指定します。
フィールド | 型 | 説明 | 必須 |
---|---|---|---|
hosts |
文字列配列 | イングレス・トレイトによって公開される1つ以上のホスト。ワイルドカード・ホストまたは空のホストは除外されます。有効なホストが指定されていない場合は、DNSホスト名が自動的に生成され、使用されます。 | いいえ |
paths |
IngressPath配列 | イングレス・トレイト用に公開されるパス。 | はい |
destination |
IngressDestination | イングレス・パスの宛先ホストおよびポート。 | いいえ |
IngressPath
IngressPathは、イングレス・トレイト用に公開する特定のパスを指定します。
フィールド | 型 | 説明 | 必須 |
---|---|---|---|
path |
文字列 | パスが指定されない場合、デフォルトでスラッシュ(/ )に設定されます。 |
いいえ |
pathType |
文字列 | パス・タイプ値は大/小文字が区別され、次のように書式設定されます:
pathType が含まれていない場合、パスが/ の場合はprefix 、それ以外の場合はexact にデフォルト設定されます。 |
いいえ |
authorizationPolicy |
AuthorizationPolicy | リクエストを承認するためのルールのセットを定義します。 | いいえ |
IngressDestination
IngressDestinationは、イングレス・パスの特定の宛先ホストおよびポートを指定します。
フィールド | 型 | 説明 | 必須 |
---|---|---|---|
host |
文字列 | 宛先ホスト。 | いいえ |
port |
uint32 | 宛先ポート。 | いいえ |
httpCookie |
HttpCookie | セッション・アフィニティCookie。 | いいえ |
ノート
サービスに複数のポートが定義されている場合、宛先ポートを指定するか、サービス・ポート名に接頭辞http
を指定する必要があります。
HttpCookie
HttpCookieは、イングレス・トレイのセッション・アフィニティCookieを指定します。
フィールド | 型 | 説明 | 必須 |
---|---|---|---|
name |
文字列 | HTTP Cookieの名前。 | いいえ |
path |
文字列 | HTTP Cookieのパス。 | いいえ |
ttl |
uint32 | HTTP Cookieの存続期間(秒)。 | いいえ |
IngressSecurity
IngressSecurityは、イングレス・トレイトのトランスポートを保護する証明書を含むシークレットを指定します。
フィールド | 型 | 説明 | 必須 |
---|---|---|---|
secretName |
文字列 | トランスポートを保護している証明書を含むシークレットの名前。ここでシークレットを指定することは、IngressRuleで指定された特定のホストに対して証明書が作成されたことを意味します。 | はい |
AuthorizationPolicy
AuthorizationPolicyは、リクエストを承認するためのルールのセットを定義します。
フィールド | 型 | 説明 | 必須 |
---|---|---|---|
rules |
文字列配列 | ルールを使用して、リクエスト・プリンシパルのリクエストと、オプションの条件リストに指定された特定のパスを照合します。 | はい |
AuthorizationRule
AuthorizationRuleは、条件リストに該当する特定のパスにアクセスする、リクエスト・プリンシパル・リストのリクエストを照合します。
フィールド | 型 | 説明 | 必須 |
---|---|---|---|
from |
AuthorizationRuleFrom | リクエストにアクセスするためのリクエスト・プリンシパルを指定します。アスタリスク(* )は、リクエストにリクエスト・プリンシパルが見つかった場合など、値が空でない場合と一致します。 |
はい |
when |
AuthorizationRuleCondition | リクエストにアクセスするための追加条件のリストを指定します。 | いいえ |
AuthorizationRuleFrom
リクエスト・プリンシパルのリストを指定します。
フィールド | 型 | 説明 | 必須 |
---|---|---|---|
requestPrincipals |
文字列配列 | リクエストにアクセスするためのリクエスト・プリンシパルを指定します。 | はい |
AuthorizationRuleCondition
承認のためのその他の必須属性を指定します。
フィールド | 型 | 説明 | 必須 |
---|---|---|---|
key |
文字列 | リクエスト属性の名前。 | はい |
values |
文字列配列 | 属性で許可される値のリスト。 | はい |