3.5. ステップ 5 - ゲートウェイポリシーと HTTP ルートの設定


この時点で、ゲートウェイのデプロイは完了していますが、エンドポイントは公開されておらず、HTTPS リスナーはプログラムされていません。次に、CertificateIssuer を使用して HTTPS リスナー証明書をセットアップする TLSPolicy を設定できます。

保護されていないエンドポイントに対してデフォルトの HTTP 403 レスポンスをセットアップする AuthPolicy と、このゲートウェイによって公開されるエンドポイントをさらに保護するために意図的に低く指定されたデフォルトのグローバル制限を設定する RateLimitPolicy を定義します。

また、負荷分散ストラテジーが含まれる DNSPolicy と、ゲートウェイがバックエンドアプリケーション API と通信するための HTTPRoute も定義します。

3.5.1. TLS ポリシーの設定

手順

  1. 次のとおり、ゲートウェイの TLSPolicy を設定します。

    kubectl apply -f - <<EOF
    apiVersion: kuadrant.io/v1
    kind: TLSPolicy
    metadata:
      name: ${gatewayName}-tls
      namespace: ${gatewayNS}
    spec:
      targetRef:
        name: ${gatewayName}
        group: gateway.networking.k8s.io
        kind: Gateway
      issuerRef:
        group: cert-manager.io
        kind: ClusterIssuer
        name: ${clusterIssuerName}
    EOF
  2. 次のとおり、TLS ポリシーがコントローラーによって受け入れられたことを確認します。

    kubectl get tlspolicy ${gatewayName}-tls -n ${gatewayNS} -o=jsonpath='{.status.conditions[?(@.type=="Accepted")].message}'

3.5.2. 認証ポリシーの設定

手順

  1. 次のとおり、ゲートウェイのデフォルトの deny-all AuthPolicy を設定します。

    kubectl apply -f - <<EOF
    apiVersion: kuadrant.io/v1
    kind: AuthPolicy
    metadata:
      name: ${gatewayName}-auth
      namespace: ${gatewayNS}
    spec:
      targetRef:
        group: gateway.networking.k8s.io
        kind: Gateway
        name: ${gatewayName}
      defaults:
        rules:
          authorization:
            "deny":
              opa:
                rego: "allow = false"
    EOF
  2. 次のとおり、認証ポリシーがコントローラーによって受け入れられたことを確認します。

    kubectl get authpolicy ${gatewayName}-auth -n ${gatewayNS} -o=jsonpath='{.status.conditions[?(@.type=="Accepted")].message}'

3.5.3. 流量制御ポリシーの設定

手順

  1. 次のとおり、ゲートウェイのデフォルトの RateLimitPolicy を設定します。

    kubectl apply -f  - <<EOF
    apiVersion: kuadrant.io/v1
    kind: RateLimitPolicy
    metadata:
      name: ${gatewayName}-rlp
      namespace: ${gatewayNS}
    spec:
      targetRef:
        group: gateway.networking.k8s.io
        kind: Gateway
        name: ${gatewayName}
      defaults:
        limits:
          "low-limit":
            rates:
            - limit: 2
              window: 10s
    EOF
    注記

    クラスターによっては、RateLimitPolicy が適用されるまでに数分間がかかる場合があります。この例では、制限が機能していることを示すために意図的に低く設定されています。

  2. 流量制御が受け入れられたことを確認するには、以下のコマンドを入力します。

    kubectl get ratelimitpolicy ${gatewayName}-rlp -n ${gatewayNS} -o=jsonpath='{.status.conditions[?(@.type=="Accepted")].message}'

3.5.4. DNS ポリシーの設定

手順

  1. 次のとおり、ゲートウェイの DNSPolicy を設定します。

    kubectl apply -f - <<EOF
    apiVersion: kuadrant.io/v1
    kind: DNSPolicy
    metadata:
      name: ${gatewayName}-dnspolicy
      namespace: ${gatewayNS}
    spec:
      targetRef:
        name: ${gatewayName}
        group: gateway.networking.k8s.io
        kind: Gateway
      providerRefs:
        - name: aws-credentials
      loadBalancing:
        weight: 120
        geo: EU
        defaultGeo: true
    EOF
    注記

    DNSPolicy は、これまでの手順で定義した DNS プロバイダー Secret を使用します。この例の geoEU ですが、必要に応じて変更できます。

  2. 次のとおり、DNSPolicy が受け入れられたことを確認します。

    kubectl get dnspolicy ${gatewayName}-dnspolicy -n ${gatewayNS} -o=jsonpath='{.status.conditions[?(@.type=="Accepted")].message}'

3.5.5. HTTP ルートの作成

注記

テストの目的で、このセクションでは、toystore アプリケーションがデプロイされていることを前提としています。詳細は、4章Connectivity Link アプリケーション開発者のワークフロー を参照してください。

手順

  1. 次のように HTTPRoute を作成して Gateway をテストします。

    kubectl apply -f - <<EOF
    apiVersion: gateway.networking.k8s.io/v1
    kind: HTTPRoute
    metadata:
      name: test
      namespace: ${gatewayNS}
      labels:
        service: toystore
    spec:
      parentRefs:
      - name: ${gatewayName}
        namespace: ${gatewayNS}
      hostnames:
      - "test.${rootDomain}"
      rules:
      - backendRefs:
        - name: toystore
          port: 80
    EOF
  2. 次のとおり、ゲートウェイポリシーが適用されたことを確認します。

    kubectl get dnspolicy ${gatewayName}-dnspolicy -n ${gatewayNS} -o=jsonpath='{.status.conditions[?(@.type=="Enforced")].message}'
    kubectl get authpolicy ${gatewayName}-auth -n ${gatewayNS} -o=jsonpath='{.status.conditions[?(@.type=="Enforced")].message}'
    kubectl get ratelimitpolicy ${gatewayName}-rlp -n ${gatewayNS} -o=jsonpath='{.status.conditions[?(@.type=="Enforced")].message}'
  3. 次のとおり、HTTPS リスナーの準備が完了したことを確認します。

    kubectl get gateway ${gatewayName} -n ${gatewayNS} -o=jsonpath='{.status.listeners[0].conditions[?(@.type=="Programmed")].message}'
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

Red Hat ドキュメントについて

Legal Notice

Theme

© 2026 Red Hat
トップに戻る