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-ingresshello-helidon-componentアプリケーション・コンポーネントに設定され、パスとパス・タイプを構成するイングレス・ルールを定義します。これにより、アプリケーションへの外部アクセス用のルートが公開されます。IngressRulehostsリストが指定されていないため、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によってそれらが生成されます。