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: MetricsTrait
            spec:
                scraper: verrazzano-system/vmi-system-prometheus-0
        - 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-appconf-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
あるいは、IngressRuleに特定のホスト名を指定することもできます。これは、特定のホストに対してシークレットと証明書が作成され、関連付けられたIngressSecurity secretNameフィールドにシークレット名が指定されていることを意味します。
ロード・バランサのセッション・アフィニティは、宛先ルールに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: MetricsTrait
            spec:
                scraper: verrazzano-system/vmi-system-prometheus-0
        - 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
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にデフォルト設定されます。 | いいえ | 
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で指定された特定のホストに対して証明書が作成されたことを意味します。 | はい |