네트워크 설정 구성
OpenShift Container Platform의 일반 네트워킹 구성 프로세스
초록
1장. 튜닝 플러그인을 사용하여 시스템 제어 및 인터페이스 속성 구성 링크 복사링크가 클립보드에 복사되었습니다!
Linux에서 sysctl을 사용하면 관리자가 런타임 시 커널 매개변수를 수정할 수 있습니다. CNI(Container Network Interface) 메타 플러그인을 사용하여 인터페이스 수준 네트워크 sysctl을 수정할 수 있습니다. 튜닝 CNI 메타 플러그인은 설명된 대로 기본 CNI 플러그인을 사용하여 체인에서 작동합니다.
기본 CNI 플러그인은 인터페이스를 할당하고 런타임 시 튜닝 CNI 메타 플러그인에 이 인터페이스를 전달합니다. 조정 CNI 메타 플러그인을 사용하여 네트워크 네임스페이스에서 불규칙 모드, all-multicast 모드, MTU 및 MAC 주소와 같은 일부 sysctl 및 여러 인터페이스 속성을 변경할 수 있습니다.
1.1. 튜닝 CNI를 사용하여 시스템 제어 구성 링크 복사링크가 클립보드에 복사되었습니다!
다음 절차에서는 인터페이스 수준 네트워크 net.ipv4.conf.IFNAME.accept_redirects sysctl을 변경하도록 튜닝 CNI를 구성합니다. 이 예에서는 ICMP 리디렉션 패킷을 수락하고 전송할 수 있습니다. 조정 CNI 메타 플러그인 구성에서 인터페이스 이름은 IFNAME 토큰으로 표시되고 런타임 시 인터페이스의 실제 이름으로 교체됩니다.
프로세스
다음 콘텐츠를 사용하여
tuning-example.yaml과 같은 네트워크 연결 정의를 생성합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow YAML 파일의 예는 다음과 같습니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 실행하여 YAML을 적용합니다.
oc apply -f tuning-example.yaml
$ oc apply -f tuning-example.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
networkattachmentdefinition.k8.cni.cncf.io/tuningnad created
networkattachmentdefinition.k8.cni.cncf.io/tuningnad createdCopy to Clipboard Copied! Toggle word wrap Toggle overflow 다음과 유사한 네트워크 연결 정의를 사용하여
examplepod.yaml과 같은 Pod를 생성합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 구성된
NetworkAttachmentDefinition의 이름을 지정합니다. - 2
runAsUser는 컨테이너가 실행되는 사용자 ID를 제어합니다.- 3
runAsGroup은 컨테이너가 실행되는 기본 그룹 ID를 제어합니다.- 4
allowPrivilegeEscalation은 Pod에서 권한 에스컬레이션을 허용하도록 요청할 수 있는지 여부를 결정합니다. 지정되지 않은 경우 기본값은 true입니다. 이 부울은no_new_privs플래그가 컨테이너 프로세스에 설정되는지 여부를 직접 제어합니다.- 5
기능을사용하면 전체 root 액세스 권한을 부여하지 않고 권한 있는 작업을 수행할 수 있습니다. 이 정책은 모든 기능이 Pod에서 삭제되도록 합니다.- 6
runAsNonRoot: true를 사용하려면 컨테이너가 0 이외의 UID가 있는 사용자로 실행해야 합니다.- 7
RuntimeDefault는 Pod 또는 컨테이너 워크로드에 대한 기본 seccomp 프로필을 활성화합니다.
다음 명령을 실행하여 yaml을 적용합니다.
oc apply -f examplepod.yaml
$ oc apply -f examplepod.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 실행하여 Pod가 생성되었는지 확인합니다.
oc get pod
$ oc get podCopy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
NAME READY STATUS RESTARTS AGE tunepod 1/1 Running 0 47s
NAME READY STATUS RESTARTS AGE tunepod 1/1 Running 0 47sCopy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 실행하여 Pod에 로그인합니다.
oc rsh tunepod
$ oc rsh tunepodCopy to Clipboard Copied! Toggle word wrap Toggle overflow 구성된 sysctl 플래그의 값을 확인합니다. 예를 들어 다음 명령을 실행하여
net.ipv4.conf.net1.accept_redirects값을 찾습니다.sysctl net.ipv4.conf.net1.accept_redirects
sh-4.4# sysctl net.ipv4.conf.net1.accept_redirectsCopy to Clipboard Copied! Toggle word wrap Toggle overflow 예상 출력
net.ipv4.conf.net1.accept_redirects = 1
net.ipv4.conf.net1.accept_redirects = 1Copy to Clipboard Copied! Toggle word wrap Toggle overflow
1.2. 튜닝 CNI를 사용하여 모든 멀티 캐스트 모드 활성화 링크 복사링크가 클립보드에 복사되었습니다!
CNI(Container Network Interface) 메타 플러그인을 사용하여 all-multicast 모드를 활성화할 수 있습니다.
다음 절차에서는 all-multicast 모드를 활성화하도록 튜닝 CNI를 구성하는 방법을 설명합니다.
프로세스
다음 콘텐츠를 사용하여
tuning-example.yaml과 같은 네트워크 연결 정의를 생성합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow YAML 파일의 예는 다음과 같습니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 실행하여 YAML 파일에 지정된 설정을 적용합니다.
oc apply -f tuning-allmulti.yaml
$ oc apply -f tuning-allmulti.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
networkattachmentdefinition.k8s.cni.cncf.io/setallmulti created
networkattachmentdefinition.k8s.cni.cncf.io/setallmulti createdCopy to Clipboard Copied! Toggle word wrap Toggle overflow 다음
examplepod.yaml샘플 파일에 지정된 것과 유사한 네트워크 연결 정의를 사용하여 Pod를 생성합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 구성된
NetworkAttachmentDefinition의 이름을 지정합니다. - 2
- 컨테이너가 실행되는 사용자 ID를 지정합니다.
- 3
- 컨테이너가 실행되는 기본 그룹 ID를 지정합니다.
- 4
- Pod에서 권한 에스컬레이션을 요청할 수 있는지 여부를 지정합니다. 지정되지 않은 경우 기본값은
true입니다. 이 부울은no_new_privs플래그가 컨테이너 프로세스에 설정되는지 여부를 직접 제어합니다. - 5
- 컨테이너 기능을 지정합니다.
drop: ["ALL"]설명은 모든 Linux 기능이 Pod에서 삭제되어 보다 제한적인 보안 프로필을 제공합니다. - 6
- 컨테이너가 0 이외의 UID가 있는 사용자로 실행되도록 지정합니다.
- 7
- 컨테이너의 seccomp 프로필을 지정합니다. 이 경우 유형은
RuntimeDefault로 설정됩니다. seccomp는 프로세스에서 사용할 수 있는 시스템 호출을 제한하여 공격 면적을 최소화하여 보안을 강화하는 Linux 커널 기능입니다.
다음 명령을 실행하여 YAML 파일에 지정된 설정을 적용합니다.
oc apply -f examplepod.yaml
$ oc apply -f examplepod.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 실행하여 Pod가 생성되었는지 확인합니다.
oc get pod
$ oc get podCopy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
NAME READY STATUS RESTARTS AGE allmultipod 1/1 Running 0 23s
NAME READY STATUS RESTARTS AGE allmultipod 1/1 Running 0 23sCopy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 실행하여 Pod에 로그인합니다.
oc rsh allmultipod
$ oc rsh allmultipodCopy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 실행하여 Pod와 관련된 모든 인터페이스를 나열합니다.
ip link
sh-4.4# ip linkCopy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
2장. 노드 포트 서비스 범위 구성 링크 복사링크가 클립보드에 복사되었습니다!
클러스터 설치 중에 클러스터의 요구 사항을 충족하도록 노드 포트 범위를 구성할 수 있습니다. 클러스터를 설치한 후 클러스터 관리자만 설치 후 작업으로 범위를 확장할 수 있습니다. 클러스터에서 많은 수의 노드 포트를 사용하는 경우 클러스터의 요구 사항에 따라 사용 가능한 포트 범위를 늘리는 것이 좋습니다.
클러스터 설치 중에 노드 포트 범위를 설정하지 않으면 기본 범위 30000-32768 이 클러스터에 적용됩니다. 이 경우 양쪽에서 범위를 확장할 수 있지만 새 포트 범위 내에 30000-32768 을 유지해야 합니다.
Red Hat은 기본 포트 범위인 30000-32768 외부에서 테스트를 수행하지 않았습니다. 기본 포트 범위 외부의 범위의 경우 확장 노드 포트 범위가 클러스터에 영향을 미치지 않는지 테스트해야 합니다. 특히 다음 사항이 있는지 확인합니다.
- 호스트 프로세스에서 이미 사용 중인 포트와 겹치지 않음
- 호스트 네트워킹으로 구성된 Pod에서 이미 사용 중인 포트와 겹치지 않음
범위와 포트 할당 문제가 발생하면 새 클러스터를 생성하고 필요한 범위를 설정합니다.
OpenShift Container Platform API 서버와 포트가 충돌하여 노드 포트 범위를 확장하고 OpenShift CLI(oc)가 작동하지 않는 경우 새 클러스터를 생성해야 합니다.
2.1. 노드 포트 범위 확장 링크 복사링크가 클립보드에 복사되었습니다!
클러스터의 노드 포트 범위를 확장할 수 있습니다. OpenShift Container Platform 클러스터를 설치한 후에는 현재 구성된 범위의 양쪽에서 노드 포트 범위를 축소할 수 없습니다.
Red Hat은 기본 포트 범위인 30000-32768 외부에서 테스트를 수행하지 않았습니다. 기본 포트 범위 외부의 범위의 경우 노드 포트 범위를 확장하는 것이 클러스터에 영향을 미치지 않는지 테스트해야 합니다. 범위와 포트 할당 문제가 발생하면 새 클러스터를 생성하고 필요한 범위를 설정합니다.
사전 요구 사항
-
OpenShift CLI(
oc)가 설치되어 있어야 합니다. -
cluster-admin권한이 있는 사용자로 클러스터에 로그인합니다. -
클러스터 인프라가 확장된 범위에 있는 포트에 액세스할 수 있도록 했습니다. 예를 들어 노드 포트 범위를
30000-32900으로 확장하는 경우 방화벽 또는 패킷 필터링 구성에서30000-32900의 포함 포트 범위를 허용해야 합니다.
프로세스
클러스터가 Pod의 트래픽을 관리하는 데 사용하는
network.config.openshift.io오브젝트에서serviceNodePortRange매개변수의 범위를 확장하려면 다음 명령을 입력합니다.oc patch network.config.openshift.io cluster --type=merge -p \ '{$ oc patch network.config.openshift.io cluster --type=merge -p \ '{ "spec": { "serviceNodePortRange": "<port_range>" } }'Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음과 같습니다.
<port_range>-
30000-32900과 같은 확장된 범위를 지정합니다.
작은 정보다음 YAML을 적용하여 노드 포트 범위를 업데이트할 수도 있습니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
network.config.openshift.io/cluster patched
network.config.openshift.io/cluster patchedCopy to Clipboard Copied! Toggle word wrap Toggle overflow
검증
업데이트된 구성이 활성화되어 있는지 확인하려면 다음 명령을 입력합니다. 업데이트를 적용하는 데 몇 분이 걸릴 수 있습니다.
oc get configmaps -n openshift-kube-apiserver config \ -o jsonpath="{.data['config\.yaml']}" | \ grep -Eo '"service-node-port-range":["[[:digit:]]+-[[:digit:]]+"]'$ oc get configmaps -n openshift-kube-apiserver config \ -o jsonpath="{.data['config\.yaml']}" | \ grep -Eo '"service-node-port-range":["[[:digit:]]+-[[:digit:]]+"]'Copy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
"service-node-port-range":["30000-32900"]
"service-node-port-range":["30000-32900"]Copy to Clipboard Copied! Toggle word wrap Toggle overflow
3장. 클러스터 네트워크 범위 구성 링크 복사링크가 클립보드에 복사되었습니다!
클러스터 관리자는 클러스터 설치 후 클러스터 네트워크 범위를 확장할 수 있습니다. 추가 노드에 더 많은 IP 주소가 필요한 경우 클러스터 네트워크 범위를 확장해야 할 수 있습니다.
예를 들어 클러스터를 배포하고 10.128.0.0/19 를 클러스터 네트워크 범위로 지정하고 호스트 접두사가 23 개인 경우 16개의 노드로 제한됩니다. 클러스터의 CIDR 마스크를 /14 로 변경하여 510 노드로 확장할 수 있습니다.
클러스터 네트워크 주소 범위를 확장할 때 클러스터에서 OVN-Kubernetes 네트워크 플러그인 을 사용해야 합니다. 다른 네트워크 플러그인은 지원되지 않습니다.
클러스터 네트워크 IP 주소 범위를 수정할 때 다음과 같은 제한 사항이 적용됩니다.
- 설치된 클러스터에 노드를 추가하여 IP 공간만 늘릴 수 있으므로 지정된 CIDR 마스크 크기는 항상 현재 구성된 CIDR 마스크 크기보다 작아야 합니다.
- 호스트 접두사는 수정할 수 없습니다
- 재정의된 기본 게이트웨이로 구성된 Pod는 클러스터 네트워크가 확장된 후 다시 생성해야 합니다.
3.1. 클러스터 네트워크 IP 주소 범위 확장 링크 복사링크가 클립보드에 복사되었습니다!
클러스터 네트워크의 IP 주소 범위를 확장할 수 있습니다. 이러한 변경으로 인해 클러스터 전체에서 새 Operator 구성을 롤아웃해야 하므로 적용하는 데 최대 30분이 걸릴 수 있습니다.
사전 요구 사항
-
OpenShift CLI(
oc)를 설치합니다. -
cluster-admin권한이 있는 사용자로 클러스터에 로그인합니다. - 클러스터가 OVN-Kubernetes 네트워크 플러그인을 사용하는지 확인합니다.
프로세스
클러스터의 클러스터 네트워크 범위 및 호스트 접두사를 가져오려면 다음 명령을 입력합니다.
oc get network.operator.openshift.io \ -o jsonpath="{.items[0].spec.clusterNetwork}"$ oc get network.operator.openshift.io \ -o jsonpath="{.items[0].spec.clusterNetwork}"Copy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
[{"cidr":"10.217.0.0/22","hostPrefix":23}][{"cidr":"10.217.0.0/22","hostPrefix":23}]Copy to Clipboard Copied! Toggle word wrap Toggle overflow 클러스터 네트워크 IP 주소 범위를 확장하려면 다음 명령을 입력합니다. 이전 명령의 출력에서 반환된 CIDR IP 주소 범위와 호스트 접두사를 사용합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음과 같습니다.
<network>-
이전 단계에서 얻은
cidr필드의 네트워크 부분을 지정합니다. 이 값은 변경할 수 없습니다. <cidr>-
네트워크 접두사 길이를 지정합니다. 예를 들면
14입니다. 클러스터 네트워크 범위를 확장하려면 이 값을 이전 단계의 출력 값보다 적은 수로 변경합니다. <prefix>-
클러스터의 현재 호스트 접두사를 지정합니다. 이 값은 이전 단계에서 얻은
hostPrefix필드의 값과 동일해야 합니다.
명령 예
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
network.config.openshift.io/cluster patched
network.config.openshift.io/cluster patchedCopy to Clipboard Copied! Toggle word wrap Toggle overflow 구성이 활성 상태인지 확인하려면 다음 명령을 입력합니다. 이 변경 사항을 적용하는 데 최대 30분이 걸릴 수 있습니다.
oc get network.operator.openshift.io \ -o jsonpath="{.items[0].spec.clusterNetwork}"$ oc get network.operator.openshift.io \ -o jsonpath="{.items[0].spec.clusterNetwork}"Copy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
[{"cidr":"10.217.0.0/14","hostPrefix":23}][{"cidr":"10.217.0.0/14","hostPrefix":23}]Copy to Clipboard Copied! Toggle word wrap Toggle overflow
4장. IP 페일오버 구성 링크 복사링크가 클립보드에 복사되었습니다!
다음에서는 OpenShift Container Platform 클러스터의 Pod 및 서비스에 대한 IP 페일오버 구성에 대해 설명합니다.
IP 페일오버는 Keepalived 를 사용하여 호스트 집합에서 외부 액세스가 가능한 가상 IP(VIP) 주소 집합을 호스팅합니다. 각 VIP 주소는 한 번에 단일 호스트에서만 서비스를 제공합니다. keepalived는 VRRP(Virtual Router Redundancy Protocol: 가상 라우터 중복 프로토콜)를 사용하여 호스트 집합에서 VIP를 대상으로 서비스를 결정합니다. 호스트를 사용할 수 없게 되거나 Keepalived 서비스가 응답하지 않는 경우 VIP가 세트의 다른 호스트로 전환됩니다. 즉, 호스트를 사용할 수 있는 한 VIP는 항상 서비스됩니다.
세트의 모든 VIP는 세트에서 선택한 노드에서 서비스를 제공합니다. 단일 노드를 사용할 수 있는 경우 VIP가 제공됩니다. 노드에 VIP를 명시적으로 배포할 방법은 없으므로 VIP가 없는 노드와 많은 VIP가 많은 다른 노드가 있을 수 있습니다 노드가 하나만 있는 경우 모든 VIP가 노드에 있습니다.
관리자는 모든 VIP 주소가 다음 요구 사항을 충족하는지 확인해야 합니다.
- 클러스터 외부에서 구성된 호스트에서 액세스할 수 있습니다.
- 클러스터 내의 다른 용도로는 사용되지 않습니다.
각 노드의 keepalive는 필요한 서비스가 실행 중인지 여부를 결정합니다. 이 경우 VIP가 지원되고 Keepalived가 협상에 참여하여 VIP를 제공하는 노드를 결정합니다. 노드가 참여하려면 VIP의 감시 포트에서 서비스를 수신 대기하거나 검사를 비활성화해야 합니다.
세트의 각 VIP는 다른 노드에서 제공할 수 있습니다.
IP 페일오버는 각 VIP의 포트를 모니터링하여 노드에서 포트에 연결할 수 있는지 확인합니다. 포트에 연결할 수 없는 경우 VIP가 노드에 할당되지 않습니다. 포트를 0으로 설정하면 이 검사가 비활성화됩니다. 검사 스크립트는 필요한 테스트를 수행합니다.
Keepalived를 실행하는 노드가 확인 스크립트를 통과하면 해당 노드의 VIP가 우선 순위와 현재 master의 우선 순위 및 선점 전략에 따라 마스터 상태를 입력할 수 있습니다.
클러스터 관리자는 OPENSHIFT_HA_NOTIFY_SCRIPT 변수를 통해 스크립트를 제공할 수 있으며 이 스크립트는 노드의 VIP 상태가 변경될 때마다 호출됩니다. keepalived는 VIP를 서비스하는 경우 master 상태를 사용하고, 다른 노드가 VIP를 서비스할 때 backup 상태를 사용하거나 검사 스크립트가 실패할 때 fault 상태를 사용합니다. 알림 스크립트는 상태가 변경될 때마다 새 상태로 호출됩니다.
OpenShift Container Platform에서 IP 장애 조치 배포 구성을 생성할 수 있습니다. IP 장애 조치 배포 구성은 VIP 주소 집합과 서비스할 노드 집합을 지정합니다. 클러스터에는 고유한 VIP 주소 집합을 관리할 때마다 여러 IP 페일오버 배포 구성이 있을 수 있습니다. IP 장애 조치 구성의 각 노드는 IP 장애 조치 Pod를 실행하며 이 Pod는 Keepalived를 실행합니다.
VIP를 사용하여 호스트 네트워킹이 있는 pod에 액세스하는 경우 애플리케이션 pod는 IP 페일오버 pod를 실행하는 모든 노드에서 실행됩니다. 이를 통해 모든 IP 페일오버 노드가 마스터가 되고 필요한 경우 VIP에 서비스를 제공할 수 있습니다. IP 페일오버가 있는 모든 노드에서 애플리케이션 pod가 실행되지 않는 경우 일부 IP 페일오버 노드가 VIP를 서비스하지 않거나 일부 애플리케이션 pod는 트래픽을 수신하지 않습니다. 이러한 불일치를 방지하려면 IP 페일오버 및 애플리케이션 pod 모두에 동일한 선택기 및 복제 수를 사용합니다.
VIP를 사용하여 서비스에 액세스하는 동안 애플리케이션 pod가 실행 중인 위치와 상관없이 모든 노드에서 서비스에 연결할 수 있으므로 모든 노드가 IP 페일오버 노드 세트에 있을 수 있습니다. 언제든지 IP 페일오버 노드가 마스터가 될 수 있습니다. 서비스는 외부 IP와 서비스 포트를 사용하거나 NodePort를 사용할 수 있습니다. NodePort 설정은 권한 있는 작업입니다.
서비스 정의에서 외부 IP를 사용하는 경우 VIP가 외부 IP로 설정되고 IP 페일오버 모니터링 포트가 서비스 포트로 설정됩니다. 노드 포트를 사용하면 포트는 클러스터의 모든 노드에서 열려 있으며, 서비스는 현재 VIP를 서비스하는 모든 노드에서 트래픽을 로드 밸런싱합니다. 이 경우 서비스 정의에서 IP 페일오버 모니터링 포트가 NodePort로 설정됩니다.
VIP 서비스의 가용성이 높더라도 성능은 여전히 영향을 받을 수 있습니다. keepalived는 각 VIP가 구성의 일부 노드에서 서비스되도록 하고, 다른 노드에 아무것도 없는 경우에도 여러 VIP가 동일한 노드에 배치될 수 있도록 합니다. IP 페일오버가 동일한 노드에 여러 VIP를 배치하면 일련의 VIP에 걸쳐 외부적으로 로드 밸런싱을 수행하는 전략이 좌절될 수 있습니다.
ExternalIP 를 사용하면 ExternalIP 범위와 동일한 VIP 범위를 갖도록 IP 페일오버를 설정할 수 있습니다. 모니터링 포트를 비활성화할 수도 있습니다. 이 경우 모든 VIP가 클러스터의 동일한 노드에 표시됩니다. 모든 사용자는 ExternalIP 를 사용하여 서비스를 설정하고 고가용성으로 설정할 수 있습니다.
클러스터에는 최대 254개의 VIP가 있습니다.
4.1. IP 페일오버 환경 변수 링크 복사링크가 클립보드에 복사되었습니다!
다음 표에는 IP 페일오버를 구성하는 데 사용되는 변수가 표시되어 있습니다.
| 변수 이름 | Default | 설명 |
|---|---|---|
|
|
|
IP 페일오버 pod는 각 가상 IP(VIP)에서 이 포트에 대한 TCP 연결을 엽니다. 연결이 설정되면 서비스가 실행 중인 것으로 간주됩니다. 이 포트가 |
|
|
IP 페일오버가 VRRP(Virtual Router Redundancy Protocol) 트래픽을 보내는 데 사용하는 인터페이스 이름입니다. 기본값은
클러스터에서 OVN-Kubernetes 네트워크 플러그인을 사용하는 경우 패킷 손실을 방지하기 위해 이 값을 | |
|
|
|
생성할 복제본 수입니다. 이는 IP 페일오버 배포 구성의 |
|
|
복제할 IP 주소 범위 목록입니다. 이 정보를 제공해야 합니다. 예: | |
|
|
|
가상 라우터 ID를 설정하는 데 사용되는 오프셋 값입니다. 다른 오프셋 값을 사용하면 동일한 클러스터 내에 여러 IP 페일오버 구성이 존재할 수 있습니다. 기본 오프셋은 |
|
|
VRRP에 대해 생성할 그룹 수입니다. 설정하지 않으면 | |
|
| INPUT |
VRRP 트래픽을 허용하는 iptables 규칙을 자동으로 추가하는 |
|
| 애플리케이션이 작동하는지 확인하기 위해 정기적으로 실행되는 스크립트의 Pod 파일 시스템에 있는 전체 경로 이름입니다. | |
|
|
| 확인 스크립트가 실행되는 기간(초)입니다. |
|
| 상태가 변경될 때마다 실행되는 스크립트의 Pod 파일 시스템의 전체 경로 이름입니다. | |
|
|
|
더 높은 우선 순위의 호스트를 처리하는 전략입니다. |
4.2. 클러스터에서 IP 페일오버 구성 링크 복사링크가 클립보드에 복사되었습니다!
클러스터 관리자는 레이블 선택기에 정의된 대로 전체 클러스터 또는 노드의 하위 집합에서 IP 페일오버를 구성할 수 있습니다. 클러스터에서 여러 IP 페일오버 배포를 구성할 수도 있습니다. 여기서 각 배포는 서로 독립적입니다.
IP 페일오버 배포를 사용하면 제약 조건 또는 사용된 라벨과 일치하는 각 노드에서 페일오버 Pod가 실행됩니다.
이 Pod는 Keepalived를 실행하여 엔드포인트를 모니터링하고 VRRP(Virtual Router Redundancy Protocol)를 사용하여 첫 번째 노드가 서비스 또는 엔드포인트에 연결할 수 없는 경우 한 노드에서 다른 노드로의 가상 IP(VIP)를 페일오버할 수 있습니다.
프로덕션 용도의 경우 두 개 이상의 노드를 선택하는 selector를 설정하고 선택한 노드 수와 동일한 replicas를 설정합니다.
사전 요구 사항
-
cluster-admin권한이 있는 사용자로 클러스터에 로그인합니다. - 풀 시크릿을 생성했습니다.
RHOSP(Red Hat OpenStack Platform)만 해당:
- 대상 환경에 RHCOS(RHOSP 클라이언트) 를 설치했습니다.
-
RHOSP
openrc.shrc 파일(RHCOS 문서) 도 다운로드했습니다.
프로세스
IP 페일오버 서비스 계정을 생성합니다.
oc create sa ipfailover
$ oc create sa ipfailoverCopy to Clipboard Copied! Toggle word wrap Toggle overflow hostNetwork의 SCC(보안 컨텍스트 제약 조건)를 업데이트합니다.oc adm policy add-scc-to-user privileged -z ipfailover
$ oc adm policy add-scc-to-user privileged -z ipfailoverCopy to Clipboard Copied! Toggle word wrap Toggle overflow oc adm policy add-scc-to-user hostnetwork -z ipfailover
$ oc adm policy add-scc-to-user hostnetwork -z ipfailoverCopy to Clipboard Copied! Toggle word wrap Toggle overflow RHOSP(Red Hat OpenStack Platform)만 해당: RHOSP 포트에서 장애 조치 VIP 주소에 연결할 수 있도록 다음 단계를 완료합니다.
RHOSP CLI를 사용하여 RHOSP 클러스터의
allowed_address_pairs매개변수에 기본 RHOSP API 및 VIP 주소를 표시합니다.openstack port show <cluster_name> -c allowed_address_pairs
$ openstack port show <cluster_name> -c allowed_address_pairsCopy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
*Field* *Value* allowed_address_pairs ip_address='192.168.0.5', mac_address='fa:16:3e:31:f9:cb' ip_address='192.168.0.7', mac_address='fa:16:3e:31:f9:cb'*Field* *Value* allowed_address_pairs ip_address='192.168.0.5', mac_address='fa:16:3e:31:f9:cb' ip_address='192.168.0.7', mac_address='fa:16:3e:31:f9:cb'Copy to Clipboard Copied! Toggle word wrap Toggle overflow IP 페일오버 배포의 다른 VIP 주소를 설정하고 RHOSP CLI에 다음 명령을 입력하여 RHOSP 포트에서 주소에 연결할 수 있도록 합니다. 기본 RHOSP API 및 VIP 주소를 IP 페일오버 배포의 페일오버 VIP 주소로 설정하지 마십시오.
1.1.1.1페일오버 IP 주소를 RHOSP 포트에서 허용된 주소로 추가하는 예.openstack port set <cluster_name> --allowed-address ip-address=1.1.1.1,mac-address=fa:fa:16:3e:31:f9:cb
$ openstack port set <cluster_name> --allowed-address ip-address=1.1.1.1,mac-address=fa:fa:16:3e:31:f9:cbCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 배포 YAML 파일을 생성하여 배포에 대한 IP 페일오버를 구성합니다. 이후 단계에서 "IP 페일오버 구성용 배포 YAML 예"를 참조하십시오.
장애 조치(failover) VIP 주소를
OPENSHIFT_HA_VIRTUAL_IPS환경 변수에 전달하도록 IP 페일오버 배포에서 다음 사양을 지정합니다.OPENSHIFT_HA_VIRTUAL_IPS에1.1.1.1VIP 주소를 추가하는 예Copy to Clipboard Copied! Toggle word wrap Toggle overflow
배포 YAML 파일을 생성하여 IP 페일오버를 구성합니다.
참고RHOSP(Red Hat OpenStack Platform)의 경우 배포 YAML 파일을 다시 생성할 필요가 없습니다. 이전 명령의 일부로 이 파일을 이미 생성하셨습니다.
IP 페일오버 구성을 위한 배포 YAML의 예
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- IP 페일오버 배포의 이름입니다.
- 2
- 복제할 IP 주소 범위 목록입니다. 이 정보를 제공해야 합니다. 예:
1.2.3.4-6,1.2.3.9. - 3
- VRRP에 대해 생성할 그룹 수입니다. 설정하지 않으면
OPENSHIFT_HA_VIP_GROUPS변수로 지정된 각 가상 IP 범위에 대해 그룹이 생성됩니다. - 4
- IP 페일오버가 VRRP 트래픽을 보내는 데 사용하는 인터페이스 이름입니다. 기본적으로
eth0이 사용됩니다. - 5
- IP 페일오버 pod는 각 VIP에서 이 포트에 대한 TCP 연결을 열려고 합니다. 연결이 설정되면 서비스가 실행 중인 것으로 간주됩니다. 이 포트가
0으로 설정되면 테스트가 항상 통과합니다. 기본값은80입니다. - 6
- 가상 라우터 ID를 설정하는 데 사용되는 오프셋 값입니다. 다른 오프셋 값을 사용하면 동일한 클러스터 내에 여러 IP 페일오버 구성이 존재할 수 있습니다. 기본 오프셋은
0이며 허용되는 범위는0에서255사이입니다. - 7
- 생성할 복제본 수입니다. 이는 IP 페일오버 배포 구성의
spec.replicas값과 일치해야 합니다. 기본값은2입니다. - 8
- VRRP 트래픽을 허용하는
iptables규칙을 자동으로 추가하는iptables체인의 이름입니다. 값을 설정하지 않으면iptables규칙이 추가되지 않습니다. 체인이 존재하지 않으면 이 체인이 생성되지 않으며 Keepalived는 유니캐스트 모드로 작동합니다. 기본값은INPUT입니다. - 9
- 상태가 변경될 때마다 실행되는 스크립트의 Pod 파일 시스템의 전체 경로 이름입니다.
- 10
- 애플리케이션이 작동하는지 확인하기 위해 정기적으로 실행되는 스크립트의 Pod 파일 시스템에 있는 전체 경로 이름입니다.
- 11
- 더 높은 우선 순위의 호스트를 처리하는 전략입니다. 기본값은
preempt_delay 300으로, 우선순위가 낮은 마스터가 VIP를 보유하는 경우 Keepalived 인스턴스가 5분 후에 VIP를 넘겨받습니다. - 12
- 확인 스크립트가 실행되는 기간(초)입니다. 기본값은
2입니다. - 13
- 배포를 만들기 전에 풀 시크릿을 생성합니다. 그렇지 않으면 배포를 생성할 때 오류가 발생합니다.
4.3. 검사 구성 및 스크립트 알림 링크 복사링크가 클립보드에 복사되었습니다!
keepalived는 사용자 제공 검사 스크립트를 주기적으로 실행하여 애플리케이션의 상태를 모니터링합니다. 예를 들어 스크립트는 요청을 발행하고 응답을 확인하여 웹 서버를 테스트할 수 있습니다. 클러스터 관리자는 상태가 변경될 때마다 호출되는 선택적 알림 스크립트를 제공할 수 있습니다.
검사 및 알림 스크립트가 IP 페일오버 Pod에서 실행되고 호스트 파일 시스템이 아닌 Pod 파일 시스템을 사용합니다. 그러나 IP 페일오버 Pod를 사용하면 /hosts 마운트 경로에서 호스트 파일 시스템을 사용할 수 있습니다. 검사 또는 알림 스크립트를 구성할 때 스크립트의 전체 경로를 제공해야 합니다. 스크립트를 제공하는 데 권장되는 접근 방식은 ConfigMap 오브젝트를 사용하는 것입니다.
Keepalived가 시작될 때마다 로드되는 검사 및 알림 스크립트의 전체 경로 이름이 Keepalived 구성 파일인 _/etc/keepalived/keepalived.conf에 추가됩니다. 스크립트는 다음 방법에 설명된 대로 ConfigMap 오브젝트를 사용하여 Pod에 추가할 수 있습니다.
스크립트 확인
검사 스크립트를 제공하지 않으면 TCP 연결을 테스트하는 간단한 기본 스크립트가 실행됩니다. 이 기본 테스트는 모니터 포트가 0이면 비활성화됩니다.
각 IP 페일오버 Pod는 Pod가 실행 중인 노드에서 하나 이상의 가상 IP(VIP) 주소를 관리하는 Keepalived 데몬을 관리합니다. Keepalived 데몬은 해당 노드의 각 VIP 상태를 유지합니다. 특정 노드의 특정 VIP는 master,backup 또는 fault 상태가 될 수 있습니다.
검사 스크립트가 0이 아닌 값을 반환하면 노드가 백업 상태가 되고 보유한 VIP가 다시 할당됩니다.
스크립트 알림
keepalived는 다음 세 가지 매개변수를 알림 스크립트에 전달합니다.
-
$1-group또는instance -
$2-group또는instance이름 -
$3- 새 상태:master,backup또는fault
사전 요구 사항
-
OpenShift CLI(
oc)를 설치합니다. -
cluster-admin권한이 있는 사용자로 클러스터에 로그인합니다.
프로세스
원하는 스크립트를 생성하고 저장할
ConfigMap오브젝트를 생성합니다. 스크립트에는 입력 인수가 없으며OK의 경우0을fail의 경우1을 반환해야 합니다.검사 스크립트,
mycheckscript.sh:#!/bin/bash # Whatever tests are needed # E.g., send request and verify response exit 0#!/bin/bash # Whatever tests are needed # E.g., send request and verify response exit 0Copy to Clipboard Copied! Toggle word wrap Toggle overflow ConfigMap오브젝트를 생성합니다.oc create configmap mycustomcheck --from-file=mycheckscript.sh
$ oc create configmap mycustomcheck --from-file=mycheckscript.shCopy to Clipboard Copied! Toggle word wrap Toggle overflow pod에 스크립트를 추가합니다. 마운트된
ConfigMap오브젝트 파일의defaultMode는oc명령을 사용하거나 배포 구성을 편집하여 실행할 수 있어야 합니다.0755,49310진수 값이 일반적입니다.oc set env deploy/ipfailover-keepalived \ OPENSHIFT_HA_CHECK_SCRIPT=/etc/keepalive/mycheckscript.sh$ oc set env deploy/ipfailover-keepalived \ OPENSHIFT_HA_CHECK_SCRIPT=/etc/keepalive/mycheckscript.shCopy to Clipboard Copied! Toggle word wrap Toggle overflow oc set volume deploy/ipfailover-keepalived --add --overwrite \ --name=config-volume \ --mount-path=/etc/keepalive \ --source='{"configMap": { "name": "mycustomcheck", "defaultMode": 493}}'$ oc set volume deploy/ipfailover-keepalived --add --overwrite \ --name=config-volume \ --mount-path=/etc/keepalive \ --source='{"configMap": { "name": "mycustomcheck", "defaultMode": 493}}'Copy to Clipboard Copied! Toggle word wrap Toggle overflow 참고oc set env명령은 공백 문자를 구분합니다.=기호 양쪽에 공백이 없어야 합니다.작은 정보또는
ipfailover-keepalived배포 구성을 편집할 수 있습니다.oc edit deploy ipfailover-keepalived
$ oc edit deploy ipfailover-keepalivedCopy to Clipboard Copied! Toggle word wrap Toggle overflow Copy to Clipboard Copied! Toggle word wrap Toggle overflow 변경 사항을 저장하고 편집기를 종료합니다. 이렇게 하면
ipfailover-keepalived가 다시 시작됩니다.
4.4. VRRP 선점 구성 링크 복사링크가 클립보드에 복사되었습니다!
노드의 가상 IP(VIP)가 검사 스크립트를 전달하여 fault 상태를 벗어나면 노드의 VIP가 현재 master 상태에 있는 노드의 VIP보다 우선 순위가 낮은 경우 backup 상태가 됩니다. nopreempt 전략에서는 호스트의 우선 순위가 낮은 VIP에서 호스트의 우선 순위가 높은 VIP로 master를 이동하지 않습니다. preempt_delay 300을 사용하면 기본값인 Keepalived가 지정된 300초 동안 기다린 후 fault를 호스트의 우선 순위 VIP로 이동합니다.
프로세스
선점 기능을 지정하려면
oc edit deploy ipfailover-keepalived를 입력하여 라우터 배포 구성을 편집합니다.oc edit deploy ipfailover-keepalived
$ oc edit deploy ipfailover-keepalivedCopy to Clipboard Copied! Toggle word wrap Toggle overflow Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
OPENSHIFT_HA_PREEMPTION값을 설정합니다.-
preempt_delay 300: Keepalived는 지정된 300초 동안 기다린 후 호스트의 우선 순위가 높은 VIP로master를 이동합니다. 이는 기본값입니다. -
nopreempt: 더 낮은 우선 순위 호스트에서 더 높은 우선 순위 호스트로master를 이동하지 않습니다.
-
4.5. 여러 IP 페일오버 인스턴스 배포 링크 복사링크가 클립보드에 복사되었습니다!
IP 페일오버 배포 구성에서 관리하는 각 IP 페일오버 pod는 노드 또는 복제본당 1개의 Pod를 실행하고 Keepalived 데몬을 실행합니다. 더 많은 IP 페일오버 배포 구성이 설정되면 더 많은 Pod가 생성되고 더 많은 데몬이 일반 VRRP(Virtual Router Redundancy Protocol) 협상에 연결됩니다. 이 협상은 모든 Keepalived 데몬에서 수행되며 어떤 노드가 어떤 VIP(가상 IP)를 서비스할 지 결정합니다.
내부적으로 Keepalived는 각 VIP에 고유한 vrrp-id를 할당합니다. 협상은 이 vrrp-id 세트를 사용하며, 결정이 내려지면 vrrp-id에 해당하는 VIP가 노드에 제공됩니다.
따라서 IP 페일오버 배포 구성에 정의된 모든 VIP에 대해 IP 페일오버 Pod에서 해당 vrrp-id를 할당해야 합니다. 이 작업은 OPENSHIFT_HA_VRRP_ID_OFFSET에서 시작하고 vrrp-ids를 VIP 목록에 순차적으로 할당하여 수행됩니다. vrrp-ids는 1..255 범위의 값이 있을 수 있습니다.
IP 페일오버 배포 구성이 여러 개인 경우 배포 구성의 VIP 수를 늘리고 vrrp-id 범위가 겹치지 않도록 OPENSHIFT_HA_VRRP_ID_OFFSET을 지정해야 합니다.
4.6. 254개 이상의 주소에 대한 IP 페일오버 구성 링크 복사링크가 클립보드에 복사되었습니다!
IP 페일오버 관리는 254개의 가상 IP(VIP) 주소 그룹으로 제한됩니다. 기본적으로 OpenShift Container Platform은 각 그룹에 하나의 IP 주소를 할당합니다. OPENSHIFT_HA_VIP_GROUPS 변수를 사용하여 이를 변경하여 여러 IP 주소가 각 그룹에 속하도록 하고 IP 페일오버를 구성할 때 각 VRRP(Virtual Router Redundancy Protocol) 인스턴스에 사용 가능한 VIP 그룹 수를 정의할 수 있습니다.
VIP 그룹화는 VRRP 페일오버 이벤트의 경우 VRRP당 VIP의 할당 범위가 넓어지며 클러스터의 모든 호스트가 로컬에서 서비스에 액세스할 수 있는 경우에 유용합니다. 예를 들어 서비스가 ExternalIP를 사용하여 노출되는 경우입니다.
페일오버에 대한 규칙으로 라우터와 같은 서비스를 하나의 특정 호스트로 제한하지 마십시오. 대신 IP 페일오버의 경우 새 호스트에서 서비스를 다시 생성할 필요가 없도록 각 호스트에 서비스를 복제해야 합니다.
OpenShift Container Platform 상태 확인을 사용하는 경우 IP 페일오버 및 그룹의 특성으로 인해 그룹의 모든 인스턴스가 확인되지 않습니다. 따라서 서비스가 활성화되어 있는지 확인하려면 Kubernetes 상태 점검을 사용해야 합니다.
사전 요구 사항
-
cluster-admin권한이 있는 사용자로 클러스터에 로그인합니다.
프로세스
각 그룹에 할당된 IP 주소 수를 변경하려면
OPENSHIFT_HA_VIP_GROUPS변수의 값을 변경합니다. 예를 들면 다음과 같습니다.IP 페일오버 구성을 위한
DeploymentYAML의 예Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 7개의 VIP가 있는 환경에서
OPENSHIFT_HA_VIP_GROUPS가3으로 설정된 경우 3개의 그룹을 생성하여 3개의 VIP를 첫 번째 그룹에 할당하고 2개의 VIP를 나머지 2개의 그룹에 할당합니다.
OPENSHIFT_HA_VIP_GROUPS로 설정된 그룹 수가 페일오버로 설정된 IP 주소 수보다 적으면 그룹에는 두 개 이상의 IP 주소가 포함되어 있으며 모든 주소가 하나의 단위로 이동합니다.
4.7. ExternalIP의 고가용성 링크 복사링크가 클립보드에 복사되었습니다!
클라우드 이외의 클러스터에서 서비스에 대한 IP 페일오버 및 ExternalIP 를 결합할 수 있습니다. 그 결과 ExternalIP 를 사용하여 서비스를 생성하는 사용자를 위한 고가용성 서비스가 생성됩니다.
접근 방식은 클러스터 네트워크 구성의 spec.ExternalIP.autoAssignCIDRs 범위를 지정한 다음 IP 페일오버 구성을 생성할 때 동일한 범위를 사용하는 것입니다.
IP 페일오버는 전체 클러스터에 대해 최대 255개의 VIP를 지원할 수 있으므로 spec.ExternalIP.autoAssignCIDRs 는 /24 또는 작아야 합니다.
4.8. IP 페일오버 제거 링크 복사링크가 클립보드에 복사되었습니다!
IP 페일오버가 처음 구성되면 클러스터의 작업자 노드는 Keepalived에 대해 224.0.0.18의 멀티 캐스트 패킷을 명시적으로 허용하는 iptables 규칙을 사용하여 수정됩니다. 노드를 변경하여 IP 페일오버를 제거하려면 iptables 규칙을 제거하고 Keepalived에서 사용하는 가상 IP 주소를 제거하는 작업을 실행해야 합니다.
프로세스
선택 사항: 구성 맵으로 저장된 점검 및 알림 스크립트를 식별하고 삭제합니다.
IP 페일오버에 대한 Pod가 구성 맵을 볼륨으로 사용하는지 여부를 확인합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
Namespace: default Pod: keepalived-worker-59df45db9c-2x9mn Volumes that use config maps: volume: config-volume configMap: mycustomcheck
Namespace: default Pod: keepalived-worker-59df45db9c-2x9mn Volumes that use config maps: volume: config-volume configMap: mycustomcheckCopy to Clipboard Copied! Toggle word wrap Toggle overflow 이전 단계에서 볼륨으로 사용되는 구성 맵의 이름을 제공한 경우 구성 맵을 삭제합니다.
oc delete configmap <configmap_name>
$ oc delete configmap <configmap_name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow
IP 페일오버를 위한 기존 배포를 식별합니다.
oc get deployment -l ipfailover
$ oc get deployment -l ipfailoverCopy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
NAMESPACE NAME READY UP-TO-DATE AVAILABLE AGE default ipfailover 2/2 2 2 105d
NAMESPACE NAME READY UP-TO-DATE AVAILABLE AGE default ipfailover 2/2 2 2 105dCopy to Clipboard Copied! Toggle word wrap Toggle overflow 배포를 삭제합니다.
oc delete deployment <ipfailover_deployment_name>
$ oc delete deployment <ipfailover_deployment_name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipfailover서비스 계정을 제거합니다.oc delete sa ipfailover
$ oc delete sa ipfailoverCopy to Clipboard Copied! Toggle word wrap Toggle overflow IP 페일오버를 처음 구성할 때 추가된 IP 테이블 규칙을 제거하는 작업을 실행합니다.
다음 예와 유사한 콘텐츠를 사용하여
remove-ipfailover-job.yaml과 같은 파일을 생성합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow 작업을 실행합니다.
oc create -f remove-ipfailover-job.yaml
$ oc create -f remove-ipfailover-job.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
job.batch/remove-ipfailover-2h8dm created
job.batch/remove-ipfailover-2h8dm createdCopy to Clipboard Copied! Toggle word wrap Toggle overflow
검증
작업이 IP 페일오버의 초기 구성을 제거했는지 확인합니다.
oc logs job/remove-ipfailover-2h8dm
$ oc logs job/remove-ipfailover-2h8dmCopy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
remove-failover.sh: OpenShift IP Failover service terminating. - Removing ip_vs module ... - Cleaning up ... - Releasing VIPs (interface eth0) ...
remove-failover.sh: OpenShift IP Failover service terminating. - Removing ip_vs module ... - Cleaning up ... - Releasing VIPs (interface eth0) ...Copy to Clipboard Copied! Toggle word wrap Toggle overflow
5장. 클러스터 전체 프록시 구성 링크 복사링크가 클립보드에 복사되었습니다!
프로덕션 환경에서는 인터넷에 대한 직접 액세스를 거부하고 대신 HTTP 또는 HTTPS 프록시를 사용할 수 있습니다. 기존 클러스터의 프록시 오브젝트를 수정하거나 새 클러스터의 install-config.yaml 파일에서 프록시 설정을 구성하여 프록시를 사용하도록 OpenShift Container Platform을 구성할 수 있습니다.
지원되는 플랫폼에서 클러스터에 대한 클러스터 전체 송신 프록시를 활성화하면 RHCOS(Red Hat Enterprise Linux CoreOS)는 지원되는 플랫폼에 존재하는 install-config.yaml 파일의 networking.machineNetwork[].cidr,networking.clusterNetwork[].cidr, networking.serviceNetwork[] 필드의 값으로 status.noProxy 매개변수를 채웁니다.
설치 후 작업에서는 networking.clusterNetwork[].cidr 값을 변경할 수 있지만 networking.machineNetwork[].cidr 및 networking.serviceNetwork[] 값은 변경할 수 없습니다. 자세한 내용은 "클러스터 네트워크 범위 구성"을 참조하십시오.
AWS(Amazon Web Services), GCP(Google Cloud Platform), Microsoft Azure 및 RHOSP(Red Hat OpenStack Platform)에 설치하는 경우 status.noProxy 매개변수도 인스턴스 메타데이터 끝점인 169.254.169.254 로 채워집니다.
RHCOS에서 프록시 오브젝트의 status: segment에 추가된 값의 예
설치 유형에 networking.machineNetwork[].cidr 필드 설정이 포함되지 않은 경우 노드 간 트래픽이 프록시를 바이패스할 수 있도록 .status.noProxy 필드에 머신 IP 주소를 수동으로 포함해야 합니다.
5.1. 사전 요구 사항 링크 복사링크가 클립보드에 복사되었습니다!
클러스터에서 액세스해야 하는 사이트를 검토하고 프록시를 바이패스해야 하는지 확인합니다. 클러스터를 호스팅하는 클라우드의 클라우드 공급자 API에 대한 호출을 포함하여 기본적으로 모든 클러스터 시스템 송신 트래픽이 프록시됩니다. 시스템 전체 프록시는 사용자 워크로드가 아닌 시스템 구성 요소에만 영향을 미칩니다. 필요한 경우 프록시를 바이패스하려면 프록시 오브젝트의 spec.no 매개변수에 사이트를 추가합니다.
Proxy
5.2. 클러스터 전체 프록시 사용 링크 복사링크가 클립보드에 복사되었습니다!
프록시 오브젝트는 클러스터 전체 송신 프록시를 관리하는 데 사용됩니다. 프록시를 구성하지 않고 클러스터를 설치하거나 업그레이드하면 프록시 오브젝트 가 계속 생성되지만 사양 은 nil입니다. 예를 들면 다음과 같습니다.
cluster라는 Proxy 오브젝트만 지원되며 추가 프록시는 생성할 수 없습니다.
클러스터 관리자는 cluster Proxy 오브젝트를 수정하여 OpenShift Container Platform의 프록시를 구성할 수 있습니다.
클러스터에 대한 클러스터 전체 프록시 기능을 활성화하고 프록시 오브젝트 파일을 저장하면 MCO(Machine Config Operator)가 클러스터 외부에 존재하는 연결에 액세스할 수 있도록 클러스터의 모든 노드를 재부팅합니다. 이러한 노드를 수동으로 재부팅할 필요가 없습니다.
사전 요구 사항
- 클러스터 관리자 권한이 있어야 합니다.
-
OpenShift Container Platform
ocCLI 툴이 설치되어 있어야 합니다.
프로세스
HTTPS 연결을 프록시하는 데 필요한 추가 CA 인증서가 포함된 구성 맵을 생성합니다.
참고프록시의 ID 인증서가 RHCOS(Red Hat Enterprise Linux CoreOS) 신뢰 번들의 기관에서 서명한 경우 이 단계를 건너뛸 수 있습니다.
user-ca-bundle.yaml이라는 파일을 생성하고 PEM 인코딩 인증서 값을 제공합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 입력하여
user-ca-bundle.yaml파일에서 구성 맵을 생성합니다.oc create -f user-ca-bundle.yaml
$ oc create -f user-ca-bundle.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
oc edit명령을 사용하여프록시오브젝트를 수정합니다.oc edit proxy/cluster
$ oc edit proxy/clusterCopy to Clipboard Copied! Toggle word wrap Toggle overflow 프록시에 필요한 필드를 구성합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 클러스터 외부에서 HTTP 연결을 구축하는 데 사용할 프록시 URL입니다. URL 스키마는
http여야 합니다. - 2
- 클러스터 외부에서 HTTPS 연결을 구축하는 데 사용할 프록시 URL입니다. URL 스키마는
http또는https여야 합니다. URL 스키마를 지원하는 프록시의 URL을 지정합니다. 예를 들어 대부분의 프록시는https를 사용하도록 구성된 경우 오류를 보고하지만http만 지원합니다. 이 실패 메시지는 로그에 전파되지 않을 수 있으며 대신 네트워크 연결 실패로 표시될 수 있습니다. 클러스터에서https연결을 수신하는 프록시를 사용하는 경우 프록시에서 사용하는 CA 및 인증서를 수락하도록 클러스터를 구성해야 할 수 있습니다. - 3
- 대상 도메인 이름, 도메인, IP 주소(또는 기타 네트워크 CIDR) 및 프록시를 제외할 포트 번호의 쉼표로 구분된 목록입니다.참고
포트 번호는 IPv6 주소를 구성할 때만 지원됩니다. IPv4 주소를 구성할 때 포트 번호는 지원되지 않습니다.
하위 도메인과 일치하려면 도메인 앞에
.을 입력합니다. 예를 들어,.y.com은x.y.com과 일치하지만y.com은 일치하지 않습니다.*를 사용하여 모든 대상에 대해 프록시를 바이패스합니다.noproxy필드에 도메인 주소를 포함해야 하는 경우noproxy필드에 해당 FQDN 또는 접두사 일치 하위 도메인을 명시적으로 지정해야 합니다. 도메인을 캡슐화하는 IP 주소 또는 CIDR 범위는 사용할 수 없습니다. 이는 클러스터가 DNS가 경로 연결을 할당하기 전에 IP 주소를 반환하고 생성되는 요청에 대해 명시적으로 확인하기 위해 기다리지 않기 때문입니다. 예를 들어noproxy필드에 대해10.0.0.0/24와 같은 CIDR 블록 값이 있고 필드가https://10.0.0.11에 액세스하려고 하면 주소가 성공적으로 일치합니다. 그러나 A 레코드 항목이10.0.0.11인https://exampleserver.externaldomain.com에 액세스하려고 하면 실패합니다.noproxy필드의 경우.externaldomain.com의 추가 값이 필요합니다.networking.machineNetwork[].cidr필드에 의해 정의된 네트워크에 포함되지 않은 컴퓨팅 노드를 설치 구성에서 확장하려면 연결 문제가 발생하지 않도록 이 목록에 추가해야 합니다.httpProxy와httpsProxy필드가 모두 설정되지 않은 경우 이 필드는 무시됩니다. - 4
httpProxy및httpsProxy값을 상태에 쓰기 전에 준비 검사를 수행하는 데 사용할 하나 이상의 클러스터 외부 URL입니다.- 5
- HTTPS 연결을 프록시하는 데 필요한 추가 CA 인증서가 포함된
openshift-config네임스페이스의 구성 맵에 대한 참조입니다. 여기에서 구성 맵을 참조하기 전에 구성 맵이 이미 있어야 합니다. 프록시의 ID 인증서를 RHCOS 트러스트 번들에 있는 기관에서 서명하지 않은 경우 이 필드가 있어야 합니다.
- 파일을 저장하여 변경 사항을 적용합니다.
5.3. 클러스터 전체 프록시 제거 링크 복사링크가 클립보드에 복사되었습니다!
cluster 프록시 오브젝트는 삭제할 수 없습니다. 클러스터에서 이 프록시를 제거하려면 프록시 오브젝트에서 모든 spec 필드를 제거해야 합니다.
사전 요구 사항
- 클러스터 관리자 권한
-
OpenShift Container Platform
ocCLI 도구 설치
프로세스
프록시를 수정하려면
oc edit명령을 사용합니다.oc edit proxy/cluster
$ oc edit proxy/clusterCopy to Clipboard Copied! Toggle word wrap Toggle overflow 프록시 오브젝트에서 모든
spec필드를 제거합니다. 예를 들면 다음과 같습니다.apiVersion: config.openshift.io/v1 kind: Proxy metadata: name: cluster spec: {}apiVersion: config.openshift.io/v1 kind: Proxy metadata: name: cluster spec: {}Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 파일을 저장하여 변경 사항을 적용합니다.
5.4. 클러스터 전체 프록시 구성 확인 링크 복사링크가 클립보드에 복사되었습니다!
클러스터 전체 프록시 구성이 배포된 후 예상대로 작동하는지 확인할 수 있습니다. 다음 단계에 따라 로그를 확인하고 구현을 검증합니다.
사전 요구 사항
- 클러스터 관리자 권한이 있어야 합니다.
-
OpenShift Container Platform
ocCLI 툴이 설치되어 있어야 합니다.
프로세스
oc명령을 사용하여 프록시 구성 상태를 확인합니다.oc get proxy/cluster -o yaml
$ oc get proxy/cluster -o yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow -
출력의 프록시 필드를 확인하여 구성과 일치하는지 확인합니다. 특히
spec.httpProxy,spec.httpsProxy,spec.noProxy,spec.trustedCA필드를 확인합니다. 프록시오브젝트의 상태를 검사합니다.oc get proxy/cluster -o jsonpath='{.status}'$ oc get proxy/cluster -o jsonpath='{.status}'Copy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
Copy to Clipboard Copied! Toggle word wrap Toggle overflow MCO(Machine Config Operator)의 로그를 확인하여 구성 변경 사항이 성공적으로 적용되었는지 확인합니다.
oc logs -n openshift-machine-config-operator $(oc get pods -n openshift-machine-config-operator -l k8s-app=machine-config-operator -o name)
$ oc logs -n openshift-machine-config-operator $(oc get pods -n openshift-machine-config-operator -l k8s-app=machine-config-operator -o name)Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 프록시 설정이 적용되고 필요한 경우 노드가 재부팅되었음을 나타내는 메시지를 찾습니다.
CVO(Cluster Version Operator)와 같은 외부 요청을 수행하는 구성 요소의 로그를 확인하여 시스템 구성 요소가 프록시를 사용하고 있는지 확인합니다.
oc logs -n openshift-cluster-version $(oc get pods -n openshift-cluster-version -l k8s-app=machine-config-operator -o name)
$ oc logs -n openshift-cluster-version $(oc get pods -n openshift-cluster-version -l k8s-app=machine-config-operator -o name)Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 외부 요청이 프록시를 통해 라우팅되었음을 보여주는 로그 항목을 찾습니다.
6장. 사용자 정의 PKI 구성 링크 복사링크가 클립보드에 복사되었습니다!
웹 콘솔과 같은 일부 플랫폼 구성 요소에서는 통신에 경로를 사용하고, 다른 구성 요소와의 상호 작용을 위해 해당 구성 요소의 인증서를 신뢰해야 합니다. 사용자 정의 PKI(공개 키 인프라)를 사용하는 경우 개인 서명 CA 인증서가 클러스터에서 인식되도록 PKI를 구성해야 합니다.
프록시 API를 활용하면 클러스터 전체에서 신뢰하는 CA 인증서를 추가할 수 있습니다. 이 작업은 설치 중 또는 런타임에 수행해야 합니다.
설치 중 클러스터 전체 프록시를 구성합니다.
install-config.yaml파일의additionalTrustBundle설정에 개인 서명 CA 인증서를 정의해야 합니다.설치 프로그램에서 사용자가 정의한 추가 CA 인증서가 포함된
user-ca-bundle이라는 ConfigMap을 생성합니다. 그러면 CNO(Cluster Network Operator)에서 이러한 CA 인증서를 RHCOS(Red Hat Enterprise Linux CoreOS) 신뢰 번들과 병합하는trusted-ca-bundleConfigMap을 생성합니다. 이 ConfigMap은 프록시 오브젝트의trustedCA필드에서 참조됩니다.-
런타임에 개인 서명 CA 인증서를 포함하도록 기본 프록시 오브젝트를 수정합니다(클러스터의 프록시 사용 워크플로우의 일부). 이를 위해서는 클러스터에서 신뢰해야 하는 개인 서명 CA 인증서가 포함된 ConfigMap을 생성한 다음 개인 서명 인증서의 ConfigMap을 참조하는
trustedCA를 사용하여 프록시 리소스를 수정해야 합니다.
설치 관리자 구성의 additionalTrustBundle 필드와 프록시 리소스의 trustedCA 필드는 클러스터 전체의 트러스트 번들을 관리하는 데 사용됩니다. additionalTrustBundle은 설치 시 사용되며, 프록시의 trustedCA는 런타임에 사용됩니다.
trustedCA 필드는 클러스터 구성 요소에서 사용하는 사용자 정의 인증서와 키 쌍이 포함된 ConfigMap에 대한 참조입니다.
6.1. 설치 중 클러스터 단위 프록시 구성 링크 복사링크가 클립보드에 복사되었습니다!
프로덕션 환경에서는 인터넷에 대한 직접 액세스를 거부하고 대신 HTTP 또는 HTTPS 프록시를 사용할 수 있습니다. install-config.yaml 파일에서 프록시 설정을 구성하여 프록시가 사용되도록 새 OpenShift Container Platform 클러스터를 구성할 수 있습니다.
사전 요구 사항
-
기존
install-config.yaml파일이 있습니다. 클러스터에서 액세스해야 하는 사이트를 검토하고 프록시를 바이패스해야 하는지 확인했습니다. 기본적으로 호스팅 클라우드 공급자 API에 대한 호출을 포함하여 모든 클러스터 발신(Egress) 트래픽이 프록시됩니다. 필요한 경우 프록시를 바이패스하기 위해
Proxy오브젝트의spec.noProxy필드에 사이트를 추가했습니다.참고Proxy오브젝트의status.noProxy필드는 설치 구성에 있는networking.machineNetwork[].cidr,networking.clusterNetwork[].cidr,networking.serviceNetwork[]필드의 값으로 채워집니다.Amazon Web Services (AWS), Google Cloud Platform (GCP), Microsoft Azure 및 Red Hat OpenStack Platform (RHOSP)에 설치하는 경우
Proxy오브젝트status.noProxy필드도 인스턴스 메타데이터 끝점(169.254.169.254)로 채워집니다.
프로세스
install-config.yaml파일을 편집하고 프록시 설정을 추가합니다. 예를 들면 다음과 같습니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 클러스터 외부에서 HTTP 연결을 구축하는 데 사용할 프록시 URL입니다. URL 스키마는
http여야 합니다. - 2
- 클러스터 외부에서 HTTPS 연결을 구축하는 데 사용할 프록시 URL입니다.
- 3
- 대상 도메인 이름, IP 주소 또는 프록시에서 제외할 기타 네트워크 CIDR로 이루어진 쉼표로 구분된 목록입니다. 하위 도메인과 일치하려면 도메인 앞에
.을 입력합니다. 예를 들어,.y.com은x.y.com과 일치하지만y.com은 일치하지 않습니다.*를 사용하여 모든 대상에 대해 프록시를 바이패스합니다. - 4
- 이 값을 제공하면 설치 프로그램에서 HTTPS 연결을 프록시하는 데 필요한 추가 CA 인증서가 하나 이상 포함된
openshift-config네임스페이스에user-ca-bundle이라는 이름으로 구성 맵을 생성합니다. 그러면 CNO(Cluster Network Operator)에서 이러한 콘텐츠를 RHCOS(Red Hat Enterprise Linux CoreOS) 신뢰 번들과 병합하는trusted-ca-bundle구성 맵을 생성합니다. 이 구성 맵은Proxy오브젝트의trustedCA필드에서 참조됩니다. 프록시의 ID 인증서를 RHCOS 트러스트 번들에 있는 기관에서 서명하지 않은 경우additionalTrustBundle필드가 있어야 합니다. - 5
- 선택 사항:
trustedCA필드에서user-ca-bundle구성 맵을 참조할프록시오브젝트의 구성을 결정하는 정책입니다. 허용되는 값은Proxyonly및Always입니다.http/https프록시가 구성된 경우에만user-ca-bundle구성 맵을 참조하려면Proxyonly를 사용합니다.Always를 사용하여user-ca-bundle구성 맵을 항상 참조합니다. 기본값은Proxyonly입니다.
참고설치 프로그램에서 프록시
adinessEndpoints필드를 지원하지 않습니다.참고설치 프로그램이 시간 초과되면 설치 프로그램의
wait-for명령을 사용하여 배포를 다시 시작한 다음 완료합니다. 예를 들면 다음과 같습니다../openshift-install wait-for install-complete --log-level debug
$ ./openshift-install wait-for install-complete --log-level debugCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 파일을 저장해 놓고 OpenShift Container Platform을 설치할 때 참조하십시오.
제공되는 install-config.yaml 파일의 프록시 설정을 사용하는 cluster라는 이름의 클러스터 전체 프록시가 설치 프로그램에 의해 생성됩니다. 프록시 설정을 제공하지 않아도 cluster Proxy 오브젝트는 계속 생성되지만 spec은 nil이 됩니다.
cluster라는 Proxy 오브젝트만 지원되며 추가 프록시는 생성할 수 없습니다.
6.2. 클러스터 전체 프록시 사용 링크 복사링크가 클립보드에 복사되었습니다!
프록시 오브젝트는 클러스터 전체 송신 프록시를 관리하는 데 사용됩니다. 프록시를 구성하지 않고 클러스터를 설치하거나 업그레이드하면 프록시 오브젝트 가 계속 생성되지만 사양 은 nil입니다. 예를 들면 다음과 같습니다.
cluster라는 Proxy 오브젝트만 지원되며 추가 프록시는 생성할 수 없습니다.
클러스터 관리자는 cluster Proxy 오브젝트를 수정하여 OpenShift Container Platform의 프록시를 구성할 수 있습니다.
클러스터에 대한 클러스터 전체 프록시 기능을 활성화하고 프록시 오브젝트 파일을 저장하면 MCO(Machine Config Operator)가 클러스터 외부에 존재하는 연결에 액세스할 수 있도록 클러스터의 모든 노드를 재부팅합니다. 이러한 노드를 수동으로 재부팅할 필요가 없습니다.
사전 요구 사항
- 클러스터 관리자 권한이 있어야 합니다.
-
OpenShift Container Platform
ocCLI 툴이 설치되어 있어야 합니다.
프로세스
HTTPS 연결을 프록시하는 데 필요한 추가 CA 인증서가 포함된 구성 맵을 생성합니다.
참고프록시의 ID 인증서가 RHCOS(Red Hat Enterprise Linux CoreOS) 신뢰 번들의 기관에서 서명한 경우 이 단계를 건너뛸 수 있습니다.
user-ca-bundle.yaml이라는 파일을 생성하고 PEM 인코딩 인증서 값을 제공합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 입력하여
user-ca-bundle.yaml파일에서 구성 맵을 생성합니다.oc create -f user-ca-bundle.yaml
$ oc create -f user-ca-bundle.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
oc edit명령을 사용하여프록시오브젝트를 수정합니다.oc edit proxy/cluster
$ oc edit proxy/clusterCopy to Clipboard Copied! Toggle word wrap Toggle overflow 프록시에 필요한 필드를 구성합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 클러스터 외부에서 HTTP 연결을 구축하는 데 사용할 프록시 URL입니다. URL 스키마는
http여야 합니다. - 2
- 클러스터 외부에서 HTTPS 연결을 구축하는 데 사용할 프록시 URL입니다. URL 스키마는
http또는https여야 합니다. URL 스키마를 지원하는 프록시의 URL을 지정합니다. 예를 들어 대부분의 프록시는https를 사용하도록 구성된 경우 오류를 보고하지만http만 지원합니다. 이 실패 메시지는 로그에 전파되지 않을 수 있으며 대신 네트워크 연결 실패로 표시될 수 있습니다. 클러스터에서https연결을 수신하는 프록시를 사용하는 경우 프록시에서 사용하는 CA 및 인증서를 수락하도록 클러스터를 구성해야 할 수 있습니다. - 3
- 대상 도메인 이름, 도메인, IP 주소(또는 기타 네트워크 CIDR) 및 프록시를 제외할 포트 번호의 쉼표로 구분된 목록입니다.참고
포트 번호는 IPv6 주소를 구성할 때만 지원됩니다. IPv4 주소를 구성할 때 포트 번호는 지원되지 않습니다.
하위 도메인과 일치하려면 도메인 앞에
.을 입력합니다. 예를 들어,.y.com은x.y.com과 일치하지만y.com은 일치하지 않습니다.*를 사용하여 모든 대상에 대해 프록시를 바이패스합니다.noproxy필드에 도메인 주소를 포함해야 하는 경우noproxy필드에 해당 FQDN 또는 접두사 일치 하위 도메인을 명시적으로 지정해야 합니다. 도메인을 캡슐화하는 IP 주소 또는 CIDR 범위는 사용할 수 없습니다. 이는 클러스터가 DNS가 경로 연결을 할당하기 전에 IP 주소를 반환하고 생성되는 요청에 대해 명시적으로 확인하기 위해 기다리지 않기 때문입니다. 예를 들어noproxy필드에 대해10.0.0.0/24와 같은 CIDR 블록 값이 있고 필드가https://10.0.0.11에 액세스하려고 하면 주소가 성공적으로 일치합니다. 그러나 A 레코드 항목이10.0.0.11인https://exampleserver.externaldomain.com에 액세스하려고 하면 실패합니다.noproxy필드의 경우.externaldomain.com의 추가 값이 필요합니다.networking.machineNetwork[].cidr필드에 의해 정의된 네트워크에 포함되지 않은 컴퓨팅 노드를 설치 구성에서 확장하려면 연결 문제가 발생하지 않도록 이 목록에 추가해야 합니다.httpProxy와httpsProxy필드가 모두 설정되지 않은 경우 이 필드는 무시됩니다. - 4
httpProxy및httpsProxy값을 상태에 쓰기 전에 준비 검사를 수행하는 데 사용할 하나 이상의 클러스터 외부 URL입니다.- 5
- HTTPS 연결을 프록시하는 데 필요한 추가 CA 인증서가 포함된
openshift-config네임스페이스의 구성 맵에 대한 참조입니다. 여기에서 구성 맵을 참조하기 전에 구성 맵이 이미 있어야 합니다. 프록시의 ID 인증서를 RHCOS 트러스트 번들에 있는 기관에서 서명하지 않은 경우 이 필드가 있어야 합니다.
- 파일을 저장하여 변경 사항을 적용합니다.
6.3. Operator를 사용한 인증서 주입 링크 복사링크가 클립보드에 복사되었습니다!
ConfigMap을 통해 사용자 정의 CA 인증서가 클러스터에 추가되면 CNO(Cluster Network Operator)에서 사용자 제공 및 시스템 CA 인증서를 단일 번들로 병합한 후 병합한 번들을 신뢰 번들 주입을 요청하는 Operator에 주입합니다.
config.openshift.io/inject-trusted-cabundle="true" 레이블을 구성 맵에 추가하면 기존 데이터가 삭제됩니다. CNO(Cluster Network Operator)는 구성 맵의 소유권을 가지며 ca-bundle 만 데이터로만 허용합니다. service.beta.openshift.io/inject-cabundle=true 주석 또는 유사한 구성을 사용하여 별도의 구성 맵을 사용하여 service-ca.crt 를 저장해야 합니다. 동일한 구성 맵에 config.openshift.io/inject-trusted-cabundle="true" 레이블 및 service.beta.openshift.io/inject-cabundle=true 주석을 추가하면 문제가 발생할 수 있습니다.
Operator는 다음 라벨이 있는 빈 ConfigMap을 생성하여 이러한 주입을 요청합니다.
config.openshift.io/inject-trusted-cabundle="true"
config.openshift.io/inject-trusted-cabundle="true"
빈 ConfigMap의 예:
- 1
- 빈 ConfigMap 이름을 지정합니다.
Operator는 이 ConfigMap을 컨테이너의 로컬 신뢰 저장소에 마운트합니다.
신뢰할 수 있는 CA 인증서를 추가하는 작업은 인증서가 RHCOS(Red Hat Enterprise Linux CoreOS) 신뢰 번들에 포함되지 않은 경우에만 필요합니다.
Operator는 제한 없이 인증서를 주입할 수 있습니다. config.openshift.io/inject-trusted-cabundle=true 라벨을 사용하여 비어있는 ConfigMap이 생성되면 CNO(Cluster Network Operator)에서 모든 네임스페이스에 인증서를 주입합니다.
ConfigMap은 모든 네임스페이스에 상주할 수 있지만 사용자 정의 CA가 필요한 Pod 내의 각 컨테이너에 볼륨으로 마운트해야 합니다. 예를 들면 다음과 같습니다.
Legal Notice
링크 복사링크가 클립보드에 복사되었습니다!
Copyright © 2025 Red Hat
OpenShift documentation is licensed under the Apache License 2.0 (https://www.apache.org/licenses/LICENSE-2.0).
Modified versions must remove all Red Hat trademarks.
Portions adapted from https://github.com/kubernetes-incubator/service-catalog/ with modifications by Red Hat.
Red Hat, Red Hat Enterprise Linux, the Red Hat logo, the Shadowman logo, JBoss, OpenShift, Fedora, the Infinity logo, and RHCE are trademarks of Red Hat, Inc., registered in the United States and other countries.
Linux® is the registered trademark of Linus Torvalds in the United States and other countries.
Java® is a registered trademark of Oracle and/or its affiliates.
XFS® is a trademark of Silicon Graphics International Corp. or its subsidiaries in the United States and/or other countries.
MySQL® is a registered trademark of MySQL AB in the United States, the European Union and other countries.
Node.js® is an official trademark of Joyent. Red Hat Software Collections is not formally related to or endorsed by the official Joyent Node.js open source or commercial project.
The OpenStack® Word Mark and OpenStack logo are either registered trademarks/service marks or trademarks/service marks of the OpenStack Foundation, in the United States and other countries and are used with the OpenStack Foundation’s permission. We are not affiliated with, endorsed or sponsored by the OpenStack Foundation, or the OpenStack community.
All other trademarks are the property of their respective owners.