본문으로 바로가기 본문 바로가기
WIKI 기술 지식 베이스

Kubernetes 정책 데모

원문 보기 위키 갱신

이 데모는 Kubernetes 위에서 프론트엔드, 백엔드, 클라이언트 서비스를 띄우고, 각 서비스에 네트워크 정책을 적용하면서 연결이 어떻게 허용·차단되는지 실시간으로 눈으로 확인하는 예제예요. 관리 UI 그래프에 서비스별 노드와 연결 상태가 나타나요. 단계를 하나씩 따라 하면 정책의 효과가 바로 보여요.

출처: 문서

본문

포함된 데모는 모두 Kubernetes에서 실행되는 프론트엔드와 백엔드 서비스, 그리고 클라이언트 서비스를 구성해요. 그런 다음 각 서비스에 네트워크 정책을 설정해요.

사전 요구 사항

Kubernetes 네트워크 정책 API를 지원하는 Kubernetes 클러스터를 만들려면, 시작 가이드 중 하나를 따르세요.

stars 예제 실행하기

1) 프론트엔드, 백엔드, 클라이언트, management-ui 앱 만들기

kubectl create -f https://docs.tigera.io/files/00-namespace.yaml
kubectl create -f https://docs.tigera.io/files/01-management-ui.yaml
kubectl create -f https://docs.tigera.io/files/02-backend.yaml
kubectl create -f https://docs.tigera.io/files/03-frontend.yaml
kubectl create -f https://docs.tigera.io/files/04-client.yaml

모든 파드가 Running 상태에 들어갈 때까지 기다리세요.

kubectl get pods --all-namespaces --watch

이 데모에 필요한 Docker 이미지를 내려받는 데 몇 분 걸릴 수 있다는 점에 유의하세요.

관리 UI는 Kubernetes에서 NodePort 서비스로 실행되며, 이 예제에서 서비스들의 연결성을 보여 줘요.

브라우저에서 http://<k8s-node-ip>:30002를 방문하면 UI를 볼 수 있어요.

모든 파드가 시작되면, 전체 연결(full connectivity) 상태여야 해요. UI를 방문하면 확인할 수 있어요. 각 서비스는 그래프에서 하나의 노드로 표현돼요.

  • backend -> 노드 "B"
  • frontend -> 노드 "F"
  • client -> 노드 "C"

2) 격리 활성화하기

다음 명령을 실행하면 프론트엔드, 백엔드, 클라이언트 서비스에 대한 모든 접근이 차단돼요.

kubectl create -n stars -f https://docs.tigera.io/files/default-deny.yaml
kubectl create -n client -f https://docs.tigera.io/files/default-deny.yaml

격리 확인하기

관리 UI를 새로 고침하세요 (변경 사항이 UI에 반영되기까지 최대 10초 걸릴 수 있어요). 이제 격리가 활성화되어 UI도 파드에 접근할 수 없게 됐고, 그래서 파드들이 더 이상 UI에 나타나지 않아요.

3) 네트워크 정책 오브젝트로 UI가 서비스에 접근하게 하기

관리 UI로부터의 접근을 허용하려면 다음 YAML 파일들을 적용하세요.

kubectl create -f https://docs.tigera.io/files/allow-ui.yaml
kubectl create -f https://docs.tigera.io/files/allow-ui-client.yaml

몇 초 후에 UI를 새로 고침하면 — 이제 서비스들이 다시 보이지만, 서로에게는 접근할 수 없어요.

4) 프론트엔드에서 백엔드로의 트래픽을 허용하는 backend-policy.yaml 파일 만들기

kubectl create -f https://docs.tigera.io/files/backend-policy.yaml

UI를 새로 고침하세요. 다음을 볼 거예요:

  • 프론트엔드가 이제 백엔드에 접근할 수 있어요 (TCP 포트 6379로만).
  • 백엔드는 프론트엔드에 전혀 접근할 수 없어요.
  • 클라이언트는 프론트엔드에도, 백엔드에도 접근할 수 없어요.

5) 프론트엔드 서비스를 클라이언트 네임스페이스에 노출하기

kubectl create -f https://docs.tigera.io/files/frontend-policy.yaml

이제 클라이언트는 프론트엔드에 접근할 수 있지만 백엔드에는 접근할 수 없어요. 프론트엔드와 백엔드 어느 쪽도 클라이언트로 연결을 시작할 수 없어요. 프론트엔드는 여전히 백엔드에 접근할 수 있어요.

Kubernetes 파드에 Calico로 이그레스 정책을 적용하려면 고급 정책 데모를 참고하세요.

6) (선택) 데모 환경 정리하기

데모 네임스페이스를 삭제해서 데모를 정리할 수 있어요:

kubectl delete ns client stars management-ui

더 알아보기 (Learn more)

default-deny로 시작해서 정책을 하나씩 풀어 나가는 과정이 이 데모의 핵심이에요. UI 그래프에서 정책 적용 전후의 연결 변화가 바로 보이니 정책 학습에 딱 좋아요. 이그레스 제어까지 보려면 고급 데모로 이어가세요.