目次

Network Load Balancer またはApplication Load Balancerを使用して、Smart Check をEKSに配信する

Smart Check をEKS環境に配置する場合、現在の初期設定のロードバランサはClassic Load Balancer(CLB)です。

2022年8月15日をもってEC2-Classic Load Balancerのサービスは終了します。そのため、Classic Load BalancerをEC2-ClassicネットワークからVPCに移行するか、 Network Load Balancer (NLB)またはApplication Load Balancer(ALB)を使用することをお勧めします。

ここでは、NLBまたはALBのいずれかを使用するように Smart Check を設定する手順について説明します。 EKSはVPCでプロビジョニングされるため、次の手順はオプションですが、既存の多くの Smart Check ユーザに推奨されます。

ここでは、 Smart Checkの導入に関する基本的な知識があることを前提としています。詳細については、Install Deep Security Smart Checkを参照してください。

NLBを使用して Smart Check を配信する

  1. AWS Load Balancerコントローラをクラスタにインストールしてデプロイします。 AWS提供の手順 に従い、前提条件を注意深くメモします。

  2. overrides.yamlファイルに適切な注釈を設定します。

    service:
      type: LoadBalancer
      annotations:
        service.beta.kubernetes.io/aws-load-balancer-type: "nlb"
        service.beta.kubernetes.io/aws-load-balancer-scheme: "internet-facing"
        service.beta.kubernetes.io/aws-load-balancer-nlb-target-type: "ip"
  3. 次のコマンドを実行します。

    • Smart Check をアップグレードします。
    helm upgrade \
      --values overrides.yaml \
      deepsecurity-smartcheck \
      https://github.com/deep-security/smartcheck-helm/archive/master.tar.gz
    • 初めての場合は次のように配置します。
    helm install \
      --values overrides.yaml \
    deepsecurity-smartcheck \
    https://github.com/deep-security/smartcheck-helm/archive/master.tar.gz
  4. (オプション)Amazon Webコンソールに、新しい Network Load Balancer が[Provisioning]または[Active]状態で表示されます。表示されない場合は、overrides.yamlファイルを確認し、service.annotationsへの変更が保存および適用されていることを確認してください。

  5. 次のコマンドを実行して、 Smart Checkのサービスエンドポイントを確認します。

    export SERVICE_IP=$(kubectl get svc proxy –o jsonpath='{.status.loadBalancer.ingress[0].ip}')
    echo https://$SERVICE_IP:443
  6. サービスエンドポイントに移動します。ページがロードされない場合は、ロードバランサがまだプロビジョニングしている場合があるため、数分お待ちください。

ALBを使用して Smart Check を配信する

  1. AWS Load Balancerコントローラをクラスタにインストールしてデプロイします。 AWSが提供する手順に従ってください

  2. 適切な注釈をoverrides.yamlファイルに設定します。

    service:
       type: NodePort
  3. 次のコマンドを実行します。

    • Smart Check をアップグレードします。
    helm upgrade \
      --values overrides.yaml \
     deepsecurity-smartcheck \
      https://github.com/deep-security/smartcheck-helm/archive/master.tar.gz
    • 初めての場合は次のように配置します。
    helm install \
      --values overrides.yaml \
      deepsecurity-smartcheck \
      https://github.com/deep-security/smartcheck-helm/archive/master.tar.gz
  4. Smart Check の入力マニフェストファイルを作成し、sc_ingress.yamlという名前を付けます。
    次のマニフェストで提供するには、AWSにデプロイされた証明書 が必要です。

    Sample sc_ingress.yaml manifest file

    apiVersion: networking.k8s.io/v1
    kind: Ingress
    metadata:
        namespace: "default"
        name: "deepsecurity-smartcheck-ingress"
        annotations:
            alb.ingress.kubernetes.io/scheme: internet-facing
            alb.ingress.kubernetes.io/target-type: ip
            alb.ingress.kubernetes.io/backend-protocol: HTTPS
            alb.ingress.kubernetes.io/listen-ports: '[{"HTTP": 80}, {"HTTPS":443}]'
            alb.ingress.kubernetes.io/certificate-arn: <certificate-arn-here>
        labels:
            app: deepsecurity-smartcheck-ingress
    spec:
        ingressClassName: alb
        rules:
        - http:
            paths:
            - path: /
                pathType: Prefix
                backend:
                    service:
                        name: proxy
                        port:
                            number: 443

    AWS Load Balancer Controller は、バックエンドのリソースフィールドをサポートしていません。

  5. 次のコマンドを使用して、入力マニフェストファイルを配信します。

    kubectl apply -f sc_ingress.yaml

  6. 次を使用して、 Smart Check を使用できるエンドポイントを指定し、ALBを作成します。

    kubectl get ingress

    出力例

    名前空間 名前 クラス ホスト アドレス ポート 経過時間
    初期設定 deepsecurity-smartcheck-ingress alb * k8s-default-deepsecu-593ed39b4a-2027600391.us-west-2.elb.amazonaws.com 80 16分

  7. (オプション)問題が発生した場合は、Amazon EKSのサービスロードバランサのトラブルシューティング方法 および トラブルシューティングを参照してください。

    多くの場合、問題はAWSロードバランサコントローラが正しく設定されていないことが原因です。次のコマンドを実行して、投稿されたエラーを確認することもできます。

    kubectl logs -n kube-system deployment.apps/aws-load-balancer-controller

  8. (オプション)Webページにアクセスしてもロードされない場合は、「dig <endpoint>」を実行してみます。生成されたIPに移動して、代わりにWebページが存在するかどうかを確認します。たとえば、

    k8s-default-deepsecu-593ed39b4a-1368766740.us-west-2.elb.amazonaws.com. 1 IN A 52.25.79.241
    k8s-default-deepsecu-593ed39b4a-1368766740.us-west-2.elb.amazonaws.com. 1 IN A 34.210.15.98
    k8s-default-deepsecu-593ed39b4a-1368766740.us-west-2.elb.amazonaws.com. 1 IN A 44.239.37.197
  9. サービスエンドポイントに移動します。ページがロードされない場合は、ロードバランサがまだプロビジョニング中の場合は数分お待ちください。

トラブルシューティング

サービスIPが<保留中>のままである

AWS Load Balancerコントローラをデプロイする の手順を実行し、各手順が完了していることを確認します。また、オーバーライドがoverrides.yamlに従って設定されていることを確認してください。

詳細については、Amazon EKSのサービスロードバランサのトラブルシューティング方法 を参照してください。

入力コントローラがアドレスに解決されない、またはaws-load-balancerコントローラのログで「不正な」エラーが表示される

AWS Load Balancer Controller アドオンのインストール に記載されている必要なポリシー、ロール、およびサービスアカウントに従っていることを確認します。

次のコマンドもデバッグに役立ちます。

kubectl logs -n kube-system deployment.apps/aws-load-balancer-controller

その他のリソース

EC2-ClassicからVPCへの移行

EC2-Classic Networking廃止予定–準備方法はこちら