検索

5.3. サンプルアプリケーションのデプロイ

download PDF
  1. サンプルアプリケーション用に新しいプロジェクトを作成します。

    $ oc new-project hello-world
  2. Hello World アプリケーションをデプロイします。

    $ oc new-app -n hello-world --image=docker.io/openshift/hello-openshift
  3. 事前に作成済みのサービスリソースを NodePort サービスタイプに変換します。

    $ oc -n hello-world patch service hello-openshift -p '{"spec":{"type":"NodePort"}}'
  4. AWS Load Balancer Operator を使用して AWS ALB をデプロイします。

    $ cat << EOF | oc apply -f -
    apiVersion: networking.k8s.io/v1
    kind: Ingress
    metadata:
      name: hello-openshift-alb
      namespace: hello-world
      annotations:
        alb.ingress.kubernetes.io/scheme: internet-facing
    spec:
      ingressClassName: alb
      rules:
        - http:
            paths:
              - path: /
                pathType: Exact
                backend:
                  service:
                    name: hello-openshift
                    port:
                      number: 8080
    EOF
  5. AWS ALB Ingress エンドポイントを curl して、Hello World アプリケーションにアクセスできることを確認します。

    注記

    AWS ALB のプロビジョニングには数分かかります。curl: (6) Could not resolve host というエラーが表示された場合は、待機してから再試行してください。

    $ INGRESS=$(oc -n hello-world get ingress hello-openshift-alb -o jsonpath='{.status.loadBalancer.ingress[0].hostname}')
    $ curl "http://${INGRESS}"

    出力例

    Hello OpenShift!

5.3.1. AWS WAF の設定

AWS WAF サービスは Web アプリケーションファイアウォールです。ROSA などの保護対象の Web アプリケーションリソースに転送される HTTP および HTTPS 要求を監視、保護、制御できます。

  1. Web ACL に適用する AWS WAF ルールファイルを作成します。

    $ cat << EOF > ${SCRATCH}/waf-rules.json
    [
        {
          "Name": "AWS-AWSManagedRulesCommonRuleSet",
          "Priority": 0,
          "Statement": {
            "ManagedRuleGroupStatement": {
              "VendorName": "AWS",
              "Name": "AWSManagedRulesCommonRuleSet"
            }
          },
          "OverrideAction": {
            "None": {}
          },
          "VisibilityConfig": {
            "SampledRequestsEnabled": true,
            "CloudWatchMetricsEnabled": true,
            "MetricName": "AWS-AWSManagedRulesCommonRuleSet"
          }
        },
        {
          "Name": "AWS-AWSManagedRulesSQLiRuleSet",
          "Priority": 1,
          "Statement": {
            "ManagedRuleGroupStatement": {
              "VendorName": "AWS",
              "Name": "AWSManagedRulesSQLiRuleSet"
            }
          },
          "OverrideAction": {
            "None": {}
          },
          "VisibilityConfig": {
            "SampledRequestsEnabled": true,
            "CloudWatchMetricsEnabled": true,
            "MetricName": "AWS-AWSManagedRulesSQLiRuleSet"
          }
        }
    ]
    EOF

    これにより、コア (共通) および SQL AWS マネージドルールセットが有効になります。

  2. 上記で指定したルールを使用して、AWS WAF の Web ACL を作成します。

    $ WAF_ARN=$(aws wafv2 create-web-acl \
      --name ${CLUSTER}-waf \
      --region ${REGION} \
      --default-action Allow={} \
      --scope REGIONAL \
      --visibility-config SampledRequestsEnabled=true,CloudWatchMetricsEnabled=true,MetricName=${CLUSTER}-waf-metrics \
      --rules file://${SCRATCH}/waf-rules.json \
      --query 'Summary.ARN' \
      --output text)
  3. Ingress リソースに AWS WAF の Web ACL ARN のアノテーションを付けます。

    $ oc annotate -n hello-world ingress.networking.k8s.io/hello-openshift-alb \
      alb.ingress.kubernetes.io/wafv2-acl-arn=${WAF_ARN}
  4. ルールが反映されるまで 10 秒待ち、アプリケーションがまだ動作するかテストします。

    $ curl "http://${INGRESS}"

    出力例

    Hello OpenShift!

  5. WAF が不正な要求を拒否することをテストします。

    $ curl -X POST "http://${INGRESS}" \
      -F "user='<script><alert>Hello></alert></script>'"

    出力例

    <html>
    <head><title>403 Forbidden</title></head>
    <body>
    <center><h1>403 Forbidden</h1></center>
    </body>
    </html

    注記

    AWS WAF 統合の有効化には数分かかる場合があります。403 Forbidden エラーが表示されない場合は、数秒待ってからもう一度お試しください。

    予期される結果は 403 Forbidden エラーです。このエラーが返されれば、アプリケーションは AWS WAF によって保護されています。

Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

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

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。

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

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

会社概要

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

© 2024 Red Hat, Inc.