Amazon EKS に Calico をインストールする - Amazon EKS

Amazon EKS に Calico をインストールする

Project Calico は、Kubernetes のネットワークポリシーエンジンです。Calico ネットワークポリシーの実施によって、ネットワークのセグメンテーションとテナントの隔離を実装できます。これは、マルチテナント環境でテナントを相互に分離する必要がある場合や、開発、ステージング、本稼働用に個別の環境を作成する場合に便利です。ネットワークポリシーは、ネットワークの入力および出力ルールを作成できる点で AWS セキュリティグループと似ています。インスタンスをセキュリティグループに割り当てるのではなく、ポッドセレクタおよびラベルを使用してネットワークポリシーをポッドに割り当てます。次の手順では、Amazon EKS クラスターに Calico をインストールする方法について説明します。

注記

Amazon EKS で Fargate を使用する場合、Calico はサポートされません。

Amazon EKS クラスターに Calico をインストールするには

  1. aws/amazon-vpc-cni-k8sGitHub プロジェクト」から Calico マニフェストを適用します。このマニフェストによって、kube-system 名前空間にデーモンセットが作成されます。

    kubectl apply -f https://raw.githubusercontent.com/aws/amazon-vpc-cni-k8s/release-1.6/config/v1.6/calico.yaml
  2. kube-system デーモンセットを監視して、calico-node デーモンセットのポッドが READY 状態で DESIRED 数になるまで待機します。この場合、Calico は動作しています。

    kubectl get daemonset calico-node --namespace kube-system

    出力:

    NAME DESIRED CURRENT READY UP-TO-DATE AVAILABLE NODE SELECTOR AGE calico-node 3 3 3 3 3 <none> 38s

Calico を Amazon EKS クラスターから削除するには

  • Amazon EKS クラスターで Calico が不要になった場合は、以下のコマンドを使用してデーモンセットを削除できます。​

    kubectl delete -f https://raw.githubusercontent.com/aws/amazon-vpc-cni-k8s/release-1.6/config/v1.6/calico.yaml

Stars Policy デモ

このセクションでは、Project Calico ドキュメントに用意されている「Stars Policy デモ」について説明していきます。このデモでは、Amazon EKS クラスターにフロントエンド、バックエンド、およびクライアントサービスを作成します。また、このデモでは、各サービス間で利用可能な入力および出力のパスを示す管理 GUI が作成されます。

ネットワークポリシーを作成する前に、サービスはすべて、双方向に通信できます。ネットワークポリシーを適用すると、クライアントはフロントエンドサービスとのみ、バックエンドはフロントエンドとのみ通信できることがわかります。

Stars Policy デモを実行するには

  1. フロントエンド、バックエンド、クライアント、および管理 UI サービスを適用します。

    kubectl apply -f https://docs.projectcalico.org/v3.3/getting-started/kubernetes/tutorials/stars-policy/manifests/00-namespace.yaml kubectl apply -f https://docs.projectcalico.org/v3.3/getting-started/kubernetes/tutorials/stars-policy/manifests/01-management-ui.yaml kubectl apply -f https://docs.projectcalico.org/v3.3/getting-started/kubernetes/tutorials/stars-policy/manifests/02-backend.yaml kubectl apply -f https://docs.projectcalico.org/v3.3/getting-started/kubernetes/tutorials/stars-policy/manifests/03-frontend.yaml kubectl apply -f https://docs.projectcalico.org/v3.3/getting-started/kubernetes/tutorials/stars-policy/manifests/04-client.yaml
  2. すべてのポッドが Running ステータスになるまで待機します。

    kubectl get pods --all-namespaces --watch
  3. 管理 UI に接続するには、ローカルポート 9001 をクラスター上で実行されている management-ui サービスに転送します。

    kubectl port-forward service/management-ui -n management-ui 9001
  4. ローカルシステムでブラウザを開き、http://localhost:9001/ を指定します。管理 UI が表示されます。[C] ノードはクライアントサービス、[F] ノードはフロントエンドサービス、[B] ノードはバックエンドサービスを表します。各ノードには、他のすべてのノードへの完全な通信アクセスが含まれます (太字で色付けされた行)。

    
                        オープンネットワークポリシー
  5. 相互にサービスを分離するには、次のネットワークポリシーを適用します。

    kubectl apply -n stars -f https://docs.projectcalico.org/v3.3/getting-started/kubernetes/tutorials/stars-policy/policies/default-deny.yaml kubectl apply -n client -f https://docs.projectcalico.org/v3.3/getting-started/kubernetes/tutorials/stars-policy/policies/default-deny.yaml
  6. ブラウザを更新します。管理 UI はノードに到達できなくなるため、UI に表示されないことがわかります。

  7. 管理 UI がサービスにアクセスできるように、次のネットワークポリシーを適用します。

    kubectl apply -f https://docs.projectcalico.org/v3.3/getting-started/kubernetes/tutorials/stars-policy/policies/allow-ui.yaml kubectl apply -f https://docs.projectcalico.org/v3.3/getting-started/kubernetes/tutorials/stars-policy/policies/allow-ui-client.yaml
  8. ブラウザを更新します。管理 UI は再びノードに到達できますが、ノードは相互に通信できないことがわかります。

    
                        UI アクセスネットワークポリシー
  9. フロントエンドサービスからバックエンドサービスへのトラフィックを許可するには、次のネットワークポリシーを適用します。

    kubectl apply -f https://docs.projectcalico.org/v3.3/getting-started/kubernetes/tutorials/stars-policy/policies/backend-policy.yaml
  10. client 名前空間からフロントエンドサービスへのトラフィックを許可するには、次のネットワークポリシーを適用します。

    kubectl apply -f https://docs.projectcalico.org/v3.3/getting-started/kubernetes/tutorials/stars-policy/policies/frontend-policy.yaml
    
                        最終ネットワークポリシー
  11. (オプション) デモが完了したら、以下のコマンドを使用してリソースを削除することができます。

    kubectl delete -f https://docs.projectcalico.org/v3.3/getting-started/kubernetes/tutorials/stars-policy/manifests/04-client.yaml kubectl delete -f https://docs.projectcalico.org/v3.3/getting-started/kubernetes/tutorials/stars-policy/manifests/03-frontend.yaml kubectl delete -f https://docs.projectcalico.org/v3.3/getting-started/kubernetes/tutorials/stars-policy/manifests/02-backend.yaml kubectl delete -f https://docs.projectcalico.org/v3.3/getting-started/kubernetes/tutorials/stars-policy/manifests/01-management-ui.yaml kubectl delete -f https://docs.projectcalico.org/v3.3/getting-started/kubernetes/tutorials/stars-policy/manifests/00-namespace.yaml