본문으로 건너뛰기
  1. Ocp/

Openshift Network를 위한 몇가지 설정

·
Network VMware Openshift CentOS
목차

Overview
#

(2020.09.21)

위 사진과 같은 Openshift 클러스터 구성을 위한 네트워크 설정에 대해서 서술하겠습니다.

  1. VMware사용
  2. Openshift 클러스터는 Private Network 구성
  3. 각 클러스터의 Public 통신은 Bastion을 통해 이뤄짐

1. VMware에서 2개의 NIC 셋업
#

vmware에서 vm들을 생성할때에는 필요한 네트워크 어댑터들을 수동으로 생성해서 부여해줘야합니다.

이 챕터에서는 Public NIC와 Private NIC를 가지고 네트워크 어댑터를 만든 다음,
bastion노드에 두개의 어댑터를 추가해주겠습니다.

물리적 NIC 확인
#

제가 사용한 vmware에는 4개의 물리적NIC가 있다는 점과 현재는 두개의 NIC만 VLAN과 연결되어있다는 것을 확인할 수 있습니다.

image

첫 번째는 Private VLAN과 연결된 인터페이스이고
두 번째는 Public VLAN과 연결된 인터페이스 입니다.

이부분은 GUI상으로 어떻게 연결되어있는지 확인하는 방법을 몰라서, 실제로 네트워크인터페이스를 연결해보고 ping을 날려봐서 확인했습니다.
더 좋은 방법을 찾으면 업데이트하겠습니다…

가상 스위치 생성
#

활성화된 NIC들을 각각의 가상스위치를 생성해 연결해줍니다.

image

포트그룹 생성
#

그 다음, vm에서 사용할 포트그룹을 생성해줍니다. (VM PrivateNetwork, VM PublicNetwork)

image

bastion에 어댑터 추가
#

Bastion vm을 만들 때 생성한 두 개의 네트워크 어댑터를 추가해줍니다.

bastion 네트워크 설정
#

  • CentOS기준 위치
    /etc/sysconfig/network-script

자동으로 생성된 네트워크 인터페이스인 (ex)ens192와 ens224를 수정

Public Network
#

image

BOOTPROTO : static으로 변경
ONBOOT : network시작할때 변경점이 적용되게 yes로 변경
IPADDR : 해당 vm에 부여할 ip (연결해줬던 vlan의 subnet범위를 확인)
GATEWAY : 연결한 vlan의 gateway를 확인
NETMASK : "
DNS1 : dns1이 자기 자신인 이유는 ocp클러스터의 dns서버가 bastion이기 때문. 만약 dns서버가 다른곳이라면 해당 ip를 적을 것

Private Network
#

image

public과 마찬가지로 BOOTPROTO, ONBOOT, IPADDR, NETMASK 설정을 해줍니다.

GATEWAY를 적지 않는 이유는 bastion에서는 public쪽 게이트웨이만 사용할 예정이고 지정된 subnet밖으로 나가지 않을것이기 때문입니다.

네트워크 재시작:

$ systemctl restart network

그리고 bastion의 네트워크를 다시 살펴보면 두개의 네트워크 인터페이스를 포함하고 있다는 것을 확인할 수 있습니다.

$ ip a

image

라우터 정보도 보면 default gateway로 public gateway가 설정되어 공인통신을 하는데 문제없습니다.

$ ip r

image

private gateway가 설정되어있지 않아서 할당된 private vlan밖으로 나갈 순 없지만 openshift클러스터는 할당된 vlan의 subnet 내에서 사용할 것이기 때문에 문제 없습니다.

2. bastion의 gateway설정 (iptables)
#

ocp 클러스터의 게이트웨이가 되어줄 bastion의 네트워크 설정은 마쳤습니다.
이제 각 노드에서 나올 네트워크 패킷들을 bastion에서 포워딩해주는 설정을 해주도록 하겠습니다.

iptables 규칙 설정
#

1. ens로 나가는 패킷 포워딩을 허가

$ iptables -A FORWARD -o ens192 -j ACCEPT
$ iptables -A FORWARD -o ens224 -j ACCEPT

2. ip forward설정

$ sysctl -w net.ipv4.ip_forward=1
$ sysctl -a | grep ip_forward

image

3. MASQUERADE
위 단계까지 거치고 나면 LAN상의 시스템들끼리 통신할 수 있습니다.
그러나 인터넷과 같은 외부 시스템과의 통신은 허용되지 않습니다.
LAN 상의 시스템이 가상 IP 주소를 가지고 외부 public 네트워크와 통신할 수 있도록 허용하려면, LAN 시스템에서 외부로 향하는 요청이 방화벽 외부 장치(이 예시에서는 ens192)의 IP 주소로 나가도록 방화벽에 IP masquerading 기능을 설정해야합니다.

$ iptables -t nat -A POSTROUTING -o ens192 -j MASQUERADE

테스트용 노드 생성
#

아래와 같이 사설망에 vm을 생성해줍니다.

네트워크 설정은 위와 비슷하게 설정해줍니다.

image

GATEWAY정보는 패킷포워딩을 bastion노드로 보낼 것이므로 bastion노드의 private ip를 기입해줍니다.

네트워크를 재시작하고나면 다음과 같이 private ip가 할당된 것을 확인할 수 있습니다.

image

default gateway도 bastion으로 잘 설정되었습니다.

image

원래대로라면 10.x대역의 ip는 공인 ip가 아니기때문에 인터넷 연결이 되지 않아야 하지만, 위의 포워딩 설정을 통해서 bastion을 지나 공인통신이 되는 것을 확인할 수 있습니다.

image

bastion이 게이트웨이역할을 잘 수행한다는 것을 확인하였으니, 이제 openshift cluster를 구성하시면 됩니다.

주의하셔야 할 점은, CoreOS를 설치할때 ip파라미터 정도 입니다.
static ip: 할당할 private ip
gateway : bastion private ip
netmask : private subnet의 netmask

끝!


관련 글

Openshift Deployment & DeploymentConfig
Kubernetes Openshift
Overview # Openshift는 pod을 배포할 때, 크게 Deployment와 DeploymentConfig 두가지 방식으로 배포합니다.
Openshift ResourceQuota & LimitRange
Kubernetes Openshift
Overview # Openshift의 리소스를 제한시키는 기능인 ResourceQuota에 대해서 알아보겠습니다.
Openshift ServiceAccount & S2I basic
Kubernetes Openshift
Overview # 프로젝트의 서비스어카운트와 S2I빌드에 대해 간략하게 기술하겠습니다.