Amazon EKS 설치하기 - Amazon EKS

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

Amazon EKS 설치하기

Project Calico는 Kubernetes에 대한 네트워크 정책 엔진입니다. Calico 네트워크 정책 집행을 통해 네트워크 세분화 및 테넌트 격리를 구현할 수 있습니다. 이는 테넌트를 각각 격리해야 하는 다중 테넌트 환경에서 또는 개발, 스테이징 및 프로덕션에 별도의 환경을 생성하고자 하는 경우 유용합니다. 네트워크 정책은 네트워크 수신 및 발신 규칙을 생성할 수 있다는 점에서 AWS 보안 그룹과 유사하지만, 인스턴스를 보안 그룹에 할당하는 대신 포드 선택기 및 레이블을 사용하여 네트워크 정책을 포드에 할당합니다. 다음 절차에서는 Amazon EKS 클러스터의 Linux 노드에 Calico를 설치하는 방법을 보여줍니다. Windows 노드에 Calico를 설치하려면 단원을 참조하십시오.아마존 EKS 윈도우 컨테이너에 옥양목 사용.

참고
  • Amazon EKS에 Fargate 를 사용하는 경우 Calico가 지원되지 않습니다.

  • 옥양목은 규칙을 추가iptables를 Calico 외부에서 이미 구현 한 기존 규칙보다 우선 순위가 높을 수 있습니다. 기존 항목 추가iptables규칙을 Calico 정책에 적용하여 Calico에 의해 재정의 된 Calico 정책 이외의 규칙이 발생하지 않도록하십시오.

  • 운영 환경포드의 보안 그룹를 사용하는 경우 분기 네트워크 인터페이스의 포드로 이동하는 트래픽 흐름은 Calico 네트워크 정책 적용을 받지 않으며 Amazon EC2 보안 그룹 적용으로만 제한됩니다. 이러한 제한을 없애기 위한 커뮤니티의 노력이 진행 중입니다.

Amazon EKS Linux 노드에 Calico를 설치하려면

  1. 에서 Calico 매니페스트를 적용합니다.aws/amazon-vpc-cni-k8sGitHub 프로젝트. 이러한 매니페스트DaemonSetscalico-system네임스페이스.

    kubectl apply -f https://raw.githubusercontent.com/aws/amazon-vpc-cni-k8s/master/config/master/calico-operator.yaml kubectl apply -f https://raw.githubusercontent.com/aws/amazon-vpc-cni-k8s/master/config/master/calico-crs.yaml
  2. calico-system 데몬 세트를 확인하고 calico-node 데몬 세트가 DESIRED 수만큼 포드를 보유하고 READY 상태가 될 때까지 대기합니다. 이 경우 Calico가 작동 중입니다.

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

    결과:

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

Amazon EKS 클러스터에서 Calico를 삭제하려면

Amazon EKS 클러스터에서 Calico 사용을 마치면 다음 명령을 사용하여 삭제할 수 있습니다.

kubectl delete -f https://raw.githubusercontent.com/aws/amazon-vpc-cni-k8s/master/config/master/calico-crs.yaml kubectl delete -f https://raw.githubusercontent.com/aws/amazon-vpc-cni-k8s/master/config/master/calico-operator.yaml

Stars Policy 데모

이 단원에서는 Project Calico 문서에서 제공하는 Stars Policy 데모를 연습합니다. 데모는 Amazon ES 클러스터에 프런트엔드, 백엔드 및 클라이언트 서비스를 생성합니다. 데모는 또한 각 서비스 간 이용 가능한 수신 및 발신 경로를 보여주는 관리 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

    리소스를 삭제 한 후에도 여전히iptables클러스터에서 예기치 않은 방식으로 네트워킹을 방해할 수 있는 노드에 규칙을 추가합니다. Calico를 제거하는 유일한 방법은 모든 노드를 종료하고 휴지통으로 이동하는 것입니다. 모든 노드를 종료하려면 Auto Scaling 그룹 원하는 개수를 0으로 설정한 다음, 원하는 개수로 백업하거나 노드를 종료하면 됩니다. 노드를 휴지통으로 이동할 수 없는 경우 최후의 수단 절차는 Calico GitHub 리포지토리에서 Disabling and removing Calico Policy를 참조하세요.