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によって証明書が生成されます。
- 証明書を指定する場合、その証明書のTLSシークレットは
istio-system
ネームスペースに存在する必要があります。 - 証明書を指定する場合は、ホスト名を指定する必要があります。
- ホスト名または証明書を指定しないと、Verrazzanoによってそれらが生成されます。