[Home-K8S] #22 FluxCD 계층과 분리 / 다중 클러스터 리소스 공유와 설정 분리
FluxCD - yaml 앞서 fluxcd 를 이용해서 helm chart 를 구성했습니다. 그 외에 일반적인 yaml
Oracle Cloud 에서 wireguard server 를 구성해서 네트워크를 연결했습니다.
Oracle 에 Bucket 을 Private 로 만들고 통신하기 위해서는 Oracle Cloud 에 대한 요청이 VPN 을 통해 나갈 수 있게 해야 합니다.
기본적으로 라우팅은 IP 를 기반으로 합니다. 도메인의 IP 를 알아내는 DNS 쿼리를 진행한 후에 해당 IP 로 요청을 보내는 것이기에, 보통 도메인 기반 라우팅은 DNS 쿼리가 된 IP 를 계속 최신화해서 작동합니다.
하여 특정 VPN 으로 도메인 기반 라우팅을 진행하는 것은 새로운 네트워크 모듈이 없는 한 힘듭니다.
하지만 K8S 와 Cillium 을 사용하고 있으므로, Egress Gateway 를 이용할 수 있습니다. Egress Gateway 는 특정 도메인에 대해서 특정 Node 에서 외부로 나갈 수 있게 할 수 있습니다.
계획으로는 Oracle Cloud 에 Worker Node 를 하나 만들어서 Oracle Cloud Domain 에 대한 Egress Gateway 를 해당 Node 에 구성하려고 했으나, ARM 기반 Node 가 생길 생각을 안해서 다른 방법으로 진행했습니다.
Bucket 의 Private Endpoint 같이 VCN 내부에 구성된 서비스의 IP 주소를 가져오기 위해서 DNS Resolver 를 구성해 줍니다. Oracle Cloud 에서 Private resolvers 를 하나 생성해서 vcn 에 Private endpoint 로 연결해 주기만 하면 됩니다.
이제 해당 private endpoint 로 DNS 쿼리를 하면 내부 값을 줍니다.
k8s 에서 dns 쿼리는 CoreDNS 에서 답변합니다. coredns 는 Oracle Cloud 에 대해서는 잘 모르기 때문에 해당 도메인에 대해서는 따로 설정이 필요합니다.
기본 규칙에 값을 아래 값을 추가해 줍니다.
oraclecloud.com:53 { # 해당 도메인:53
errors
cache 30
forward . 192.168.1.82 # DNS Resolver 주소
}
kubectl edit cm -n kube-system coredns
data:
Corefile: |
.:53 {
errors
health {
...
reload
loadbalance
}
oraclecloud.com:53 {
errors
cache 30
forward . 192.168.1.82
}
customer-oci.com:53 {
errors
cache 30
forward . 192.168.1.82
}내부 네트워크 (vcn network) 대역대를 vpn 을 사용하게 설정하면 DNS 에서 내부 IP 를 제공하므로 자연스럽게 통신할 수 있습니다.
이제 oracle cloud 외부 IP (내부 DNS 쿼리를 해도 public ip 가 나오는 것) 를 사용하는 서비스에 대해서 조치가 필요합니다.
저는 oci-onm 을 사용하여 k8s 모니터링을 구성하였는데, 해당 Agent 가 사용하는 도메인들이 전부 Public 으로 사용하고 있었습니다.
telemetry-ingestion.us-phoenix-1.oraclecloud.com
objectstorage.us-phoenix-1.oraclecloud.com
telemetry.us-phoenix-1.oraclecloud.com해당 도메인에 대한 IP 가 계속 바뀌지만, Egress Gateway 를 사용할 수 없으므로 계속해서 라우팅을 업데이트 해야 합니다.
Comments