네트워킹
네트워킹 (Networking)
CloudNativePG 오퍼레이터가 PostgreSQL 클러스터와 원활하게 통신하려면 기본 Kubernetes 클러스터의 네트워킹이 제대로 준비되어야 해요. 네트워킹 제약이 어떤 부분에 영향을 주고, 어떤 설정을 확인해야 하는지를 정리해 드릴게요.
출처: 문서
본문
CloudNativePG는 기본 Kubernetes 클러스터에 필요한 연결(connectivity)이 이미 설정되어 있다고 가정해요. Kubernetes에서의 네트워킹은 중요하고 방대한 주제이므로, 자세한 내용은 Kubernetes 문서를 참고해 주세요.
로컬 KinD 또는 K3d 클러스터에 CloudNativePG를 설치하기 위해 quickstart 가이드를 따른다면, 두 플랫폼 모두 기본적으로 네트워킹 제한을 추가하지 않기 때문에 네트워킹 문제를 만날 일은 없을 거예요.
하지만 기존 인프라에 CloudNativePG를 배포할 때는 오퍼레이터와 PostgreSQL 클러스터 간의 통신을 방해할 수 있는 네트워킹 제한이 있을 수 있어요. 특히 기존의 네트워크 정책(Network Policies)이 특정 유형의 트래픽을 제한하고 있을 수 있어요.
반대로, 보안을 강화하기 위해 환경에 네트워크 정책을 직접 추가하고 싶을 수도 있어요. 보안 문서(security.md)에서 언급한 대로, 오퍼레이터가 모든 클러스터 파드의 포트 8000과 5432에 도달할 수 있어야 하고, 파드들이 서로 연결할 수 있어야 한다는 점을 꼭 확인해 주세요.
오퍼레이터를 위한 크로스-네임스페이스 네트워크 정책 (Cross-namespace network policy)
quickstart 가이드를 따르거나 helm 차트를 사용해 배포하면 오퍼레이터는 전용 네임스페이스(cnpg-system, 기본값)에 설치돼요.
클러스터는 별도의 네임스페이스에 만드는 것을 권장해요.
오퍼레이터는 클러스터 파드에 연결할 수 있어야 해요.
만약 크로스-네임스페이스 트래픽을 제한하는 NetworkPolicy가 있다면 이 연결이 차단될 수 있어요.
예를 들어, Kubernetes 네트워크 정책 가이드에는 기본적으로 모든 인그레스 트래픽을 거부하는 정책 예시가 들어 있어요.
로컬 Kubernetes 환경에 이런 제한적인 네트워크 정책이 있다면, 오퍼레이터 네임스페이스와 파드에서 클러스터 네임스페이스와 파드로의 연결을 명시적으로 허용하는 NetworkPolicy를 만들어야 해요. 이 리포지토리의 networkpolicy-example.yaml 파일에서 예시를 찾을 수 있어요.
클러스터 이름과 클러스터 네임스페이스는 여러분의 설정에 맞게, 그리고 오퍼레이터 네임스페이스가 기본 네임스페이스가 아니라면 그 이름도 반드시 조정해야 한다는 점을 기억해 주세요.
크로스-클러스터 네트워킹 (Cross-cluster networking)
다른 클러스터에서 부트스트래핑(bootstrapping)을 하거나 externalClusters 섹션을 사용할 때는 관련된 모든 클러스터, 객체 스토어, 네임스페이스 간의 연결이 보장되도록 해 주세요.
설정 방법은 역시 Kubernetes 문서를 참고하시기 바랍니다.