4.2. 베어 메탈에 호스팅된 제어 평면 배포
클러스터를 관리 클러스터로 구성하여 호스팅된 제어 평면을 배포할 수 있습니다. 관리 클러스터는 제어 평면이 호스팅되는 OpenShift Container Platform 클러스터입니다. 일부 맥락에서는 관리 클러스터를 호스팅 클러스터라고도 합니다.
관리 클러스터는 관리되는 클러스터와 다릅니다. 관리형 클러스터는 허브 클러스터가 관리하는 클러스터입니다.
호스트된 컨트롤 플레인 기능은 기본적으로 활성화되어 있습니다.
멀티클러스터 엔진 Operator는 관리되는 허브 클러스터인 기본 local-cluster
와 관리 클러스터인 허브 클러스터만 지원합니다. Red Hat Advanced Cluster Management가 설치되어 있으면 로컬 클러스터
라고도 하는 관리형 허브 클러스터를 관리 클러스터로 사용할 수 있습니다.
호스팅 클러스터 는 관리 클러스터에 호스팅된 API 엔드포인트와 제어 평면을 갖춘 OpenShift Container Platform 클러스터입니다. 호스트된 클러스터에는 컨트롤 플레인과 해당 데이터 플레인이 포함됩니다. 멀티클러스터 엔진 운영자 콘솔이나 호스팅 제어 평면 명령줄 인터페이스( hcp
)를 사용하여 호스팅 클러스터를 생성할 수 있습니다.
호스팅된 클러스터는 자동으로 관리형 클러스터로 가져옵니다. 이 자동 가져오기 기능을 비활성화하려면 "호스팅된 클러스터를 멀티클러스터 엔진 Operator로 자동 가져오기 비활성화"를 참조하세요.
4.2.1. 베어 메탈에 호스팅된 제어 평면을 배포할 준비 중 링크 복사링크가 클립보드에 복사되었습니다!
베어 메탈에 호스팅된 제어 평면을 배포할 준비를 할 때 다음 정보를 고려하세요.
- 호스팅된 제어 평면에 대해 동일한 플랫폼에서 관리 클러스터와 작업자를 실행합니다.
-
모든 베어 메탈 호스트는 중앙 인프라 관리에서 제공하는 Discovery Image ISO를 사용하여 수동으로 시작해야 합니다.
Cluster-Baremetal-Operator를
사용하여 수동으로 또는 자동화를 통해 호스트를 시작할 수 있습니다. 각 호스트가 시작된 후에는 에이전트 프로세스를 실행하여 호스트 세부 정보를 검색하고 설치를 완료합니다.에이전트
사용자 정의 리소스는 각 호스트를 나타냅니다. - 호스팅된 제어 평면에 대한 스토리지를 구성할 때 권장되는 etcd 사례를 고려하세요. 지연 시간 요구 사항을 충족하려면 각 제어 평면 노드에서 실행되는 모든 호스팅된 제어 평면 etcd 인스턴스에 빠른 스토리지 장치를 전용으로 지정하세요. LVM 스토리지를 사용하여 호스팅된 etcd 포드에 대한 로컬 스토리지 클래스를 구성할 수 있습니다. 자세한 내용은 "권장되는 etcd 사례" 및 "논리적 볼륨 관리자 스토리지를 사용한 영구 스토리지"를 참조하세요.
4.2.1.1. 관리 클러스터를 구성하기 위한 전제 조건 링크 복사링크가 클립보드에 복사되었습니다!
- OpenShift Container Platform 클러스터에 Kubernetes Operator 2.2 이상용 멀티클러스터 엔진을 설치해야 합니다. OpenShift Container Platform OperatorHub에서 Operator로 멀티클러스터 엔진 Operator를 설치할 수 있습니다.
멀티클러스터 엔진 운영자는 최소한 하나의 관리되는 OpenShift Container Platform 클러스터를 가져야 합니다.
로컬 클러스터
는 멀티클러스터 엔진 Operator 2.2 이상에 자동으로 가져옵니다.local-cluster
에 대한 자세한 내용은 Red Hat Advanced Cluster Management 문서의 고급 구성을 참조하세요. 다음 명령을 실행하여 허브 클러스터의 상태를 확인할 수 있습니다.oc get managedclusters local-cluster
$ oc get managedclusters local-cluster
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
관리 클러스터의 베어 메탈 호스트에
topology.kubernetes.io/zone
레이블을 추가해야 합니다. 각 호스트에topology.kubernetes.io/zone
에 대한 고유한 값이 있는지 확인하세요. 그렇지 않으면 호스팅된 모든 제어 평면 포드가 단일 노드에 예약되어 단일 장애 지점이 발생합니다. - 베어 메탈에서 호스팅된 제어 평면을 프로비저닝하려면 Agent 플랫폼을 사용할 수 있습니다. Agent 플랫폼은 중앙 인프라 관리 서비스를 사용하여 호스팅된 클러스터에 워커 노드를 추가합니다. 자세한 내용은 중앙 인프라 관리 서비스 활성화를 참조하세요.
- 호스팅된 제어 평면 명령줄 인터페이스를 설치해야 합니다.
4.2.1.2. 베어메탈 방화벽, 포트 및 서비스 요구 사항 링크 복사링크가 클립보드에 복사되었습니다!
관리 클러스터, 제어 평면 및 호스팅 클러스터 간에 포트가 통신할 수 있도록 방화벽, 포트 및 서비스 요구 사항을 충족해야 합니다.
서비스는 기본 포트에서 실행됩니다. 하지만 NodePort
게시 전략을 사용하면 서비스는 NodePort
서비스에서 할당한 포트에서 실행됩니다.
방화벽 규칙, 보안 그룹 또는 기타 액세스 제어를 사용하여 필요한 소스에만 액세스를 제한합니다. 필요하지 않은 이상 포트를 공개적으로 노출하지 마십시오. 실제 운영 환경에 배포하는 경우, 로드 밸런서를 사용하여 단일 IP 주소를 통해 액세스를 간소화합니다.
허브 클러스터에 프록시 구성이 있는 경우 모든 호스팅 클러스터 API 엔드포인트를 Proxy
개체의 noProxy
필드에 추가하여 호스팅 클러스터 API 엔드포인트에 도달할 수 있는지 확인하세요. 자세한 내용은 "클러스터 전체 프록시 구성"을 참조하세요.
호스팅된 제어 평면은 베어 메탈에서 다음 서비스를 제공합니다.
APIServer
-
APIServer
서비스는 기본적으로 포트 6443에서 실행되며 제어 평면 구성 요소 간 통신을 위해 인그레스 액세스가 필요합니다. - MetalLB 부하 분산을 사용하는 경우 부하 분산 장치 IP 주소에 사용되는 IP 범위에 대한 수신 액세스를 허용합니다.
-
OAuthServer
-
라우트와 인그레스를 사용하여 서비스를 노출하는 경우
OAuthServer
서비스는 기본적으로 포트 443에서 실행됩니다. -
NodePort
게시 전략을 사용하는 경우OAuthServer
서비스에 대한 방화벽 규칙을 사용하세요.
-
라우트와 인그레스를 사용하여 서비스를 노출하는 경우
연결성
-
경로와 인그레스를 사용하여 서비스를 노출하는 경우
Konnectivity
서비스는 기본적으로 포트 443에서 실행됩니다. -
Konnectivity
에이전트는 제어 평면이 호스팅된 클러스터의 네트워크에 액세스할 수 있도록 역방향 터널을 설정합니다. 에이전트는 출구를 통해Konnectivity
서버에 연결합니다. 서버는 포트 443의 경로나 수동으로 할당된NodePort를
사용하여 노출됩니다. - 클러스터 API 서버 주소가 내부 IP 주소인 경우 포트 6443의 IP 주소로 워크로드 서브넷에서 액세스를 허용합니다.
- 해당 주소가 외부 IP 주소인 경우 노드에서 해당 외부 IP 주소로 포트 6443을 통해 유출을 허용합니다.
-
경로와 인그레스를 사용하여 서비스를 노출하는 경우
Ignition
-
라우트와 인그레스를 사용하여 서비스를 노출하는 경우
Ignition
서비스는 기본적으로 포트 443에서 실행됩니다. -
NodePort
게시 전략을 사용하는 경우Ignition
서비스에 대한 방화벽 규칙을 사용하세요.
-
라우트와 인그레스를 사용하여 서비스를 노출하는 경우
베어 메탈에서는 다음 서비스가 필요하지 않습니다.
-
OVNSbDb
-
OIDC
4.2.1.3. 베어 메탈 인프라 요구 사항 링크 복사링크가 클립보드에 복사되었습니다!
Agent 플랫폼은 어떠한 인프라도 생성하지 않지만 인프라에 대한 다음과 같은 요구 사항을 갖추고 있습니다.
- 에이전트: 에이전트는 검색 이미지로 부팅되고 OpenShift Container Platform 노드로 프로비저닝될 준비가 된 호스트를 나타냅니다.
- DNS: API 및 수신 엔드포인트는 라우팅 가능해야 합니다.
4.2.2. 베어 메탈의 DNS 구성 링크 복사링크가 클립보드에 복사되었습니다!
호스팅된 클러스터의 API 서버는 NodePort
서비스로 노출됩니다. API 서버에 도달할 수 있는 대상을 가리키는 api.<hosted_cluster_name>.<base_domain>
에 대한 DNS 항목이 있어야 합니다.
DNS 항목은 호스팅된 제어 평면을 실행하는 관리 클러스터의 노드 중 하나를 가리키는 레코드만큼 간단할 수 있습니다. 또한, 진입점은 유입 트래픽을 인그레스 포드로 리디렉션하기 위해 배포된 로드 밸런서를 가리킬 수도 있습니다.
DNS 구성 예
이전 예에서, *.apps.example.krnl.es. 192.168.122.23에서
호스팅된 클러스터의 노드이거나 로드 밸런서가 구성된 경우 로드 밸런서입니다.
IPv6 네트워크에서 연결이 끊긴 환경에 대한 DNS를 구성하는 경우 구성은 다음 예와 같습니다.
IPv6 네트워크에 대한 DNS 구성 예
듀얼 스택 네트워크에서 연결이 끊긴 환경에 대한 DNS를 구성하는 경우 IPv4와 IPv6에 대한 DNS 항목을 모두 포함해야 합니다.
듀얼 스택 네트워크를 위한 DNS 구성 예
4.2.2.1. 사용자 정의 DNS 이름 정의 링크 복사링크가 클립보드에 복사되었습니다!
클러스터 관리자는 노드 부트스트랩 및 제어 평면 통신에 사용되는 내부 엔드포인트와 다른 외부 API DNS 이름을 사용하여 호스팅된 클러스터를 만들 수 있습니다. 다음과 같은 이유로 다른 DNS 이름을 정의할 수 있습니다.
- 내부 루트 CA에 바인딩되는 제어 평면 기능을 손상시키지 않고 사용자 대상 TLS 인증서를 공개 CA의 인증서로 교체합니다.
- 분할 수평 DNS 및 NAT 시나리오를 지원합니다.
-
올바른
kubeconfig
및 DNS 구성을 사용하면Show Login Command
기능과 같은 기능을 사용할 수 있는 독립 실행형 제어 평면과 유사한 환경을 보장할 수 있습니다.
HostedCluster
개체의 kubeAPIServerDNSName
매개변수에 도메인 이름을 입력하여 초기 설정 중이나 설치 후 작업 중에 DNS 이름을 정의할 수 있습니다.
사전 요구 사항
-
kubeAPIServerDNSName
매개변수에 설정한 DNS 이름을 포함하는 유효한 TLS 인증서가 있습니다. - 올바른 주소에 도달하고 이를 가리킬 수 있는 확인 가능한 DNS 이름 URI가 있습니다.
프로세스
HostedCluster
개체에 대한 사양에서kubeAPIServerDNSName
매개변수와 도메인 주소를 추가하고 다음 예와 같이 사용할 인증서를 지정합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
kubeAPIServerDNSName
매개변수의 값은 유효하고 주소 지정이 가능한 도메인이어야 합니다.
kubeAPIServerDNSName
매개변수를 정의하고 인증서를 지정하면 Control Plane Operator 컨트롤러가 custom-admin-kubeconfig
라는 kubeconfig
파일을 생성하고, 이 파일은 HostedControlPlane
네임스페이스에 저장됩니다. 인증서 생성은 루트 CA에서 이루어지며, HostedControlPlane
네임스페이스는 인증서의 만료 및 갱신을 관리합니다.
Control Plane Operator는 HostedControlPlane
네임스페이스에 CustomKubeconfig
라는 새로운 kubeconfig
파일을 보고합니다. 해당 파일은 kubeAPIServerDNSName
매개변수에 정의된 새 서버를 사용합니다.
사용자 정의 kubeconfig
파일에 대한 참조는 HostedCluster
개체의 CustomKubeconfig
라는 상태
매개변수에 있습니다. CustomKubeConfig
매개변수는 선택 사항이며, kubeAPIServerDNSName
매개변수가 비어 있지 않은 경우에만 매개변수를 추가할 수 있습니다. CustomKubeConfig
매개변수를 설정하면 해당 매개변수는 HostedCluster
네임스페이스에 <hosted_cluster_name>-custom-admin-kubeconfig
라는 이름의 비밀을 생성합니다. 이 비밀을 사용하여 HostedCluster
API 서버에 액세스할 수 있습니다. 설치 후 작업 중에 CustomKubeConfig
매개변수를 제거하면 관련된 모든 비밀과 상태 참조가 삭제됩니다.
사용자 지정 DNS 이름을 정의해도 데이터 플레인에 직접적인 영향을 미치지 않으므로 예상 롤아웃이 발생하지 않습니다. HostedControlPlane
네임스페이스는 HyperShift Operator로부터 변경 사항을 수신하고 해당 매개변수를 삭제합니다.
HostedCluster
개체의 사양에서 kubeAPIServerDNSName
매개변수를 제거하면 새로 생성된 모든 비밀과 CustomKubeconfig
참조가 클러스터와 status
매개변수에서 제거됩니다.
4.2.3. InfraEnv 리소스 생성 링크 복사링크가 클립보드에 복사되었습니다!
베어 메탈에서 호스팅 클러스터를 생성하려면 InfraEnv
리소스가 필요합니다.
4.2.3.1. InfraEnv 리소스 생성 및 노드 추가 링크 복사링크가 클립보드에 복사되었습니다!
호스팅된 제어 평면에서 제어 평면 구성 요소는 관리 클러스터의 포드로 실행되는 반면, 데이터 평면은 전용 노드에서 실행됩니다. 지원 서비스를 사용하면 하드웨어를 하드웨어 인벤토리에 추가하는 검색 ISO로 하드웨어를 부팅할 수 있습니다. 나중에 호스팅 클러스터를 생성하면 인벤토리의 하드웨어가 데이터 플레인 노드를 프로비저닝하는 데 사용됩니다. 검색 ISO를 가져오는 데 사용되는 객체는 InfraEnv
리소스입니다. 검색 ISO에서 베어 메탈 노드를 부팅하도록 클러스터를 구성하는 BareMetalHost
객체를 만들어야 합니다.
프로세스
다음 명령을 입력하여 하드웨어 인벤토리를 저장할 네임스페이스를 만듭니다.
oc --kubeconfig ~/<directory_example>/mgmt-kubeconfig create \ namespace <namespace_example>
$ oc --kubeconfig ~/<directory_example>/mgmt-kubeconfig create \ namespace <namespace_example>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음과 같습니다.
- <directory_example>
-
관리 클러스터의
kubeconfig
파일이 저장되는 디렉토리의 이름입니다. - <namespace_example>
생성하려는 네임스페이스의 이름입니다(예:
hardware-inventory )
.출력 예
namespace/hardware-inventory created
namespace/hardware-inventory created
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
다음 명령을 입력하여 관리 클러스터의 풀 시크릿을 복사합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음과 같습니다.
- <directory_example>
-
관리 클러스터의
kubeconfig
파일이 저장되는 디렉토리의 이름입니다. - <namespace_example>
생성하려는 네임스페이스의 이름입니다(예:
hardware-inventory )
.출력 예
secret/pull-secret created
secret/pull-secret created
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
다음 내용을 YAML 파일에 추가하여
InfraEnv
리소스를 만듭니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 입력하여 YAML 파일에 변경 사항을 적용합니다.
oc apply -f <infraenv_config>.yaml
$ oc apply -f <infraenv_config>.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow <infraenv_config>를
파일 이름으로 바꾸세요.다음 명령을 입력하여
InfraEnv
리소스가 생성되었는지 확인하세요.oc --kubeconfig ~/<directory_example>/mgmt-kubeconfig \ -n <namespace_example> get infraenv hosted
$ oc --kubeconfig ~/<directory_example>/mgmt-kubeconfig \ -n <namespace_example> get infraenv hosted
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 두 가지 방법 중 하나를 따라 베어 메탈 호스트를 추가합니다.
Metal3 Operator를 사용하지 않는 경우
InfraEnv
리소스에서 검색 ISO를 얻고 다음 단계를 완료하여 호스트를 수동으로 부팅하세요.다음 명령을 입력하여 라이브 ISO를 다운로드하세요.
oc get infraenv -A
$ oc get infraenv -A
Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc get infraenv <namespace_example> -o jsonpath='{.status.isoDownloadURL}' -n <namespace_example> <iso_url>
$ oc get infraenv <namespace_example> -o jsonpath='{.status.isoDownloadURL}' -n <namespace_example> <iso_url>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
ISO를 부팅합니다. 노드는 지원 서비스와 통신하고
InfraEnv
리소스와 동일한 네임스페이스에 에이전트로 등록됩니다. 각 에이전트에 대해 설치 디스크 ID와 호스트 이름을 설정하고, 이를 승인하여 에이전트가 사용 준비가 되었음을 나타냅니다. 다음 명령을 입력하세요:
oc -n <hosted_control_plane_namespace> get agents
$ oc -n <hosted_control_plane_namespace> get agents
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
NAME CLUSTER APPROVED ROLE STAGE 86f7ac75-4fc4-4b36-8130-40fa12602218 auto-assign e57a637f-745b-496e-971d-1abbf03341ba auto-assign
NAME CLUSTER APPROVED ROLE STAGE 86f7ac75-4fc4-4b36-8130-40fa12602218 auto-assign e57a637f-745b-496e-971d-1abbf03341ba auto-assign
Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc -n <hosted_control_plane_namespace> \ patch agent 86f7ac75-4fc4-4b36-8130-40fa12602218 \ -p '{"spec":{"installation_disk_id":"/dev/sda","approved":true,"hostname":"worker-0.example.krnl.es"}}' \ --type merge
$ oc -n <hosted_control_plane_namespace> \ patch agent 86f7ac75-4fc4-4b36-8130-40fa12602218 \ -p '{"spec":{"installation_disk_id":"/dev/sda","approved":true,"hostname":"worker-0.example.krnl.es"}}' \ --type merge
Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc -n <hosted_control_plane_namespace> \ patch agent 23d0c614-2caa-43f5-b7d3-0b3564688baa -p \ '{"spec":{"installation_disk_id":"/dev/sda","approved":true,"hostname":"worker-1.example.krnl.es"}}' \ --type merge
$ oc -n <hosted_control_plane_namespace> \ patch agent 23d0c614-2caa-43f5-b7d3-0b3564688baa -p \ '{"spec":{"installation_disk_id":"/dev/sda","approved":true,"hostname":"worker-1.example.krnl.es"}}' \ --type merge
Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc -n <hosted_control_plane_namespace> get agents
$ oc -n <hosted_control_plane_namespace> get agents
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
NAME CLUSTER APPROVED ROLE STAGE 86f7ac75-4fc4-4b36-8130-40fa12602218 true auto-assign e57a637f-745b-496e-971d-1abbf03341ba true auto-assign
NAME CLUSTER APPROVED ROLE STAGE 86f7ac75-4fc4-4b36-8130-40fa12602218 true auto-assign e57a637f-745b-496e-971d-1abbf03341ba true auto-assign
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
Metal3 Operator를 사용하면 다음 객체를 생성하여 베어 메탈 호스트 등록을 자동화할 수 있습니다.
YAML 파일을 만들고 다음 내용을 추가하세요.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음과 같습니다.
- <namespace_example>
- 귀하의 네임스페이스입니다.
- <password>
- 비밀의 비밀번호입니다.
- <username>
- 비밀번호에 대한 사용자 이름입니다.
- <bmc_address>
BareMetalHost
개체의 BMC 주소입니다.참고이 YAML 파일을 적용하면 다음 개체가 생성됩니다.
- Baseboard Management Controller(BMC)에 대한 자격 증명이 포함된 비밀
-
BareMetalHost
객체 - HyperShift Operator가 에이전트를 관리할 수 있는 역할
BareMetalHost
개체에서infraenvs.agent-install.openshift.io:hosted
사용자 지정 레이블을 사용하여InfraEnv
리소스가 참조되는 방식에 주목하세요. 이렇게 하면 노드가 생성된 ISO로 부팅됩니다.
다음 명령을 입력하여 YAML 파일에 변경 사항을 적용합니다.
oc apply -f <bare_metal_host_config>.yaml
$ oc apply -f <bare_metal_host_config>.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow <bare_metal_host_config>를
파일 이름으로 바꾸세요.
다음 명령을 입력한 후
BareMetalHost
개체가프로비저닝
상태로 전환될 때까지 몇 분간 기다립니다.oc --kubeconfig ~/<directory_example>/mgmt-kubeconfig -n <namespace_example> get bmh
$ oc --kubeconfig ~/<directory_example>/mgmt-kubeconfig -n <namespace_example> get bmh
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
NAME STATE CONSUMER ONLINE ERROR AGE hosted-worker0 provisioning true 106s hosted-worker1 provisioning true 106s hosted-worker2 provisioning true 106s
NAME STATE CONSUMER ONLINE ERROR AGE hosted-worker0 provisioning true 106s hosted-worker1 provisioning true 106s hosted-worker2 provisioning true 106s
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 입력하여 노드가 부팅되고 에이전트로 표시되는지 확인하세요. 이 과정은 몇 분 정도 걸릴 수 있으며, 명령을 두 번 이상 입력해야 할 수도 있습니다.
oc --kubeconfig ~/<directory_example>/mgmt-kubeconfig -n <namespace_example> get agent
$ oc --kubeconfig ~/<directory_example>/mgmt-kubeconfig -n <namespace_example> get agent
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
NAME CLUSTER APPROVED ROLE STAGE aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaa0201 true auto-assign aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaa0202 true auto-assign aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaa0203 true auto-assign
NAME CLUSTER APPROVED ROLE STAGE aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaa0201 true auto-assign aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaa0202 true auto-assign aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaa0203 true auto-assign
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
4.2.3.2. 콘솔을 사용하여 InfraEnv 리소스 만들기 링크 복사링크가 클립보드에 복사되었습니다!
콘솔을 사용하여 InfraEnv
리소스를 생성하려면 다음 단계를 완료하세요.
프로세스
- OpenShift Container Platform 웹 콘솔을 열고 관리자 자격 증명을 입력하여 로그인합니다. 콘솔을 여는 방법에 대한 지침은 "웹 콘솔에 액세스하기"를 참조하세요.
- 콘솔 헤더에서 모든 클러스터가 선택되어 있는지 확인하세요.
-
인프라
호스트 인벤토리 인프라 환경 생성을 클릭합니다. -
InfraEnv
리소스를 만든 후 InfraEnv 보기에서 호스트 추가 를 클릭하고 사용 가능한 옵션 중에서 선택하여 베어 메탈 호스트를 추가합니다.
4.2.4. 베어 메탈에 호스팅된 클러스터 생성 링크 복사링크가 클립보드에 복사되었습니다!
명령줄 인터페이스(CLI), 콘솔 또는 미러 레지스트리를 사용하여 베어 메탈에서 호스팅 클러스터를 만들 수 있습니다.
4.2.4.1. CLI를 사용하여 호스팅 클러스터 만들기 링크 복사링크가 클립보드에 복사되었습니다!
베어메탈 인프라에서는 호스팅된 클러스터를 만들거나 가져올 수 있습니다. 멀티클러스터 엔진 Operator에 대한 추가 기능으로 Assisted Installer를 활성화하고 Agent 플랫폼으로 호스팅된 클러스터를 생성하면 HyperShift Operator가 호스팅된 제어 평면 네임스페이스에 Agent Cluster API 공급자를 설치합니다. 에이전트 클러스터 API 공급자는 제어 평면을 호스팅하는 관리 클러스터와 컴퓨팅 노드만으로 구성된 호스팅 클러스터를 연결합니다.
사전 요구 사항
- 호스팅된 각 클러스터에는 클러스터 전체에서 고유한 이름이 있어야 합니다. 호스팅된 클러스터 이름은 기존 관리형 클러스터와 동일할 수 없습니다. 그렇지 않으면 멀티클러스터 엔진 운영자는 호스팅된 클러스터를 관리할 수 없습니다.
-
호스팅된 클러스터 이름으로
'클러스터'라는
단어를 사용하지 마세요. - 멀티클러스터 엔진 운영자가 관리하는 클러스터의 네임스페이스에 호스팅된 클러스터를 만들 수 없습니다.
- 최상의 보안 및 관리 관행을 위해 다른 호스팅 클러스터와 별도로 호스팅 클러스터를 만드세요.
- 클러스터에 기본 스토리지 클래스가 구성되어 있는지 확인하세요. 그렇지 않으면 보류 중인 영구 볼륨 클레임(PVC)이 표시될 수 있습니다.
-
기본적으로
hcp create cluster agent
명령을 사용하면 명령은 구성된 노드 포트를 사용하여 호스팅된 클러스터를 생성합니다. 베어 메탈에서 호스팅되는 클러스터의 기본 게시 전략은 로드 밸런서를 통해 서비스를 노출하는 것입니다. 웹 콘솔이나 Red Hat Advanced Cluster Management를 사용하여 호스팅 클러스터를 생성하는 경우 Kubernetes API 서버 외에 서비스에 대한 게시 전략을 설정하려면HostedCluster
사용자 정의 리소스에서servicePublishingStrategy
정보를 수동으로 지정해야 합니다. 인프라, 방화벽, 포트 및 서비스와 관련된 요구 사항을 포함하여 "베어 메탈에서 호스팅되는 제어 평면에 대한 요구 사항"에 설명된 요구 사항을 충족하는지 확인하세요. 예를 들어, 해당 요구 사항은 다음 예제 명령에서 볼 수 있듯이 관리 클러스터의 베어 메탈 호스트에 적절한 영역 레이블을 추가하는 방법을 설명합니다.
oc label node [compute-node-1] topology.kubernetes.io/zone=zone1
$ oc label node [compute-node-1] topology.kubernetes.io/zone=zone1
Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc label node [compute-node-2] topology.kubernetes.io/zone=zone2
$ oc label node [compute-node-2] topology.kubernetes.io/zone=zone2
Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc label node [compute-node-3] topology.kubernetes.io/zone=zone3
$ oc label node [compute-node-3] topology.kubernetes.io/zone=zone3
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 하드웨어 인벤토리에 베어 메탈 노드를 추가했는지 확인하세요.
프로세스
다음 명령을 입력하여 네임스페이스를 만듭니다.
oc create ns <hosted_cluster_namespace>
$ oc create ns <hosted_cluster_namespace>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow <hosted_cluster_namespace>를
호스팅된 클러스터 네임스페이스의 식별자로 바꾸세요. HyperShift 연산자는 네임스페이스를 생성합니다. 베어 메탈 인프라에서 호스팅된 클러스터를 생성하는 동안 생성된 클러스터 API 공급자 역할에는 네임스페이스가 이미 존재해야 합니다.다음 명령을 입력하여 호스팅된 클러스터에 대한 구성 파일을 만듭니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 호스팅된 클러스터의 이름을 지정합니다(
예
: ). - 2
/user/name/pullsecret
과 같이 풀 시크릿의 경로를 지정합니다.- 3
clusters-example
과 같이 호스팅된 제어 평면 네임스페이스를 지정합니다.oc get agent -n <hosted_control_plane_namespace>
명령을 사용하여 이 네임스페이스에서 에이전트를 사용할 수 있는지 확인합니다.- 4
krnl.es
와 같이 기본 도메인을 지정하세요.- 5
--api-server-address
플래그는 호스팅된 클러스터에서 Kubernetes API 통신에 사용되는 IP 주소를 정의합니다.--api-server-address
플래그를 설정하지 않으면 관리 클러스터에 연결하려면 로그인해야 합니다.- 6
lvm-storageclass
와 같이 etcd 스토리지 클래스 이름을 지정합니다.- 7
- SSH 공개 키의 경로를 지정합니다. 기본 파일 경로는
~/.ssh/id_rsa.pub
입니다. - 8
- 호스팅된 클러스터 네임스페이스를 지정합니다.
- 9
- 호스팅된 제어 평면 구성 요소에 대한 가용성 정책을 지정합니다. 지원되는 옵션은
SingleReplica
및HighlyAvailable
입니다. 기본값은HighlyAvailable
입니다. - 10
- 사용하려는 지원되는 OpenShift Container Platform 버전(예:
4.19.0-multi )
을 지정합니다. 연결이 끊긴 환경을 사용하는 경우<ocp_release_image>를
다이제스트 이미지로 바꾸세요. OpenShift Container Platform 릴리스 이미지 다이제스트를 추출하려면 OpenShift Container Platform 릴리스 이미지 다이제스트 추출을 참조하세요. - 11
- 노드 풀 복제본 수를 지정합니다(예:
3
). 동일한 수의 복제본을 생성하려면 복제본 수를0
이상으로 지정해야 합니다. 그렇지 않으면 노드 풀을 생성하지 않습니다. - 12
--ssh-key
플래그 뒤에user/.ssh/id_rsa
와 같이 SSH 키의 경로를 지정합니다.
서비스 게시 전략을 구성합니다. 기본적으로 호스팅 클러스터는
NodePort
서비스 게시 전략을 사용합니다. 이는 노드 포트가 추가 인프라 없이도 항상 사용 가능하기 때문입니다. 하지만 로드 밸런서를 사용하도록 서비스 게시 전략을 구성할 수 있습니다.-
기본
NodePort
전략을 사용하는 경우 관리 클러스터 노드가 아닌 호스팅된 클러스터 컴퓨팅 노드를 가리키도록 DNS를 구성합니다. 자세한 내용은 "베어 메탈의 DNS 구성"을 참조하세요. 프로덕션 환경에서는
LoadBalancer
전략을 사용하세요. 이 전략은 인증서 처리와 자동 DNS 확인을 제공합니다. 다음 예제에서는 호스팅된 클러스터 구성 파일에서 서비스 게시LoadBalancer
전략을 변경하는 방법을 보여줍니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- API 서버 유형으로
LoadBalancer를
지정합니다. 다른 모든 서비스의 경우 유형으로경로를
지정합니다.
-
기본
다음 명령을 입력하여 호스팅된 클러스터 구성 파일에 변경 사항을 적용합니다.
oc apply -f hosted_cluster_config.yaml
$ oc apply -f hosted_cluster_config.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 입력하여 호스팅된 클러스터, 노드 풀 및 포드가 생성되었는지 확인하세요.
oc get hostedcluster \ <hosted_cluster_namespace> -n \ <hosted_cluster_namespace> -o \ jsonpath='{.status.conditions[?(@.status=="False")]}' | jq .
$ oc get hostedcluster \ <hosted_cluster_namespace> -n \ <hosted_cluster_namespace> -o \ jsonpath='{.status.conditions[?(@.status=="False")]}' | jq .
Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc get nodepool \ <hosted_cluster_namespace> -n \ <hosted_cluster_namespace> -o \ jsonpath='{.status.conditions[?(@.status=="False")]}' | jq .
$ oc get nodepool \ <hosted_cluster_namespace> -n \ <hosted_cluster_namespace> -o \ jsonpath='{.status.conditions[?(@.status=="False")]}' | jq .
Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc get pods -n <hosted_cluster_namespace>
$ oc get pods -n <hosted_cluster_namespace>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
호스팅된 클러스터가 준비되었는지 확인하세요.
사용 가능: True
상태는 클러스터의 준비 상태를 나타내고 노드 풀 상태는AllMachinesReady: True를
나타냅니다. 이러한 상태는 모든 클러스터 운영자의 상태를 나타냅니다. 호스팅된 클러스터에 MetalLB를 설치하세요:
호스팅된 클러스터에서
kubeconfig
파일을 추출하고 다음 명령을 입력하여 호스팅된 클러스터 액세스를 위한 환경 변수를 설정합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow export KUBECONFIG="/path/to/kubeconfig-<hosted_cluster_namespace>.yaml"
$ export KUBECONFIG="/path/to/kubeconfig-<hosted_cluster_namespace>.yaml"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow install-metallb-operator.yaml
파일을 만들어 MetalLB Operator를 설치합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 입력하여 파일을 적용합니다.
oc apply -f install-metallb-operator.yaml
$ oc apply -f install-metallb-operator.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow deploy-metallb-ipaddresspool.yaml
파일을 만들어 MetalLB IP 주소 풀을 구성합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 입력하여 구성을 적용합니다.
oc apply -f deploy-metallb-ipaddresspool.yaml
$ oc apply -f deploy-metallb-ipaddresspool.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 입력하여 운영자 상태, IP 주소 풀,
L2Advertisement
리소스를 확인하여 MetalLB가 설치되었는지 확인하세요.oc get pods -n metallb-system
$ oc get pods -n metallb-system
Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc get ipaddresspool -n metallb-system
$ oc get ipaddresspool -n metallb-system
Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc get l2advertisement -n metallb-system
$ oc get l2advertisement -n metallb-system
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
수신을 위해 로드 밸런서를 구성합니다.
ingress-loadbalancer.yaml
파일을 만듭니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 입력하여 구성을 적용합니다.
oc apply -f ingress-loadbalancer.yaml
$ oc apply -f ingress-loadbalancer.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 입력하여 로드 밸런서 서비스가 예상대로 작동하는지 확인하세요.
oc get svc metallb-ingress -n openshift-ingress
$ oc get svc metallb-ingress -n openshift-ingress
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE metallb-ingress LoadBalancer 172.31.127.129 10.11.176.71 80:30961/TCP,443:32090/TCP 16h
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE metallb-ingress LoadBalancer 172.31.127.129 10.11.176.71 80:30961/TCP,443:32090/TCP 16h
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
로드 밸런서와 함께 작동하도록 DNS를 구성합니다.
-
*.apps.<hosted_cluster_namespace>.<base_domain>
와일드카드 DNS 레코드를 로드 밸런서 IP 주소로 가리켜앱
도메인에 대한 DNS를 구성합니다. 다음 명령을 입력하여 DNS 확인을 확인하세요.
nslookup console-openshift-console.apps.<hosted_cluster_namespace>.<base_domain> <load_balancer_ip_address>
$ nslookup console-openshift-console.apps.<hosted_cluster_namespace>.<base_domain> <load_balancer_ip_address>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
Server: 10.11.176.1 Address: 10.11.176.1#53 Name: console-openshift-console.apps.my-hosted-cluster.sample-base-domain.com Address: 10.11.176.71
Server: 10.11.176.1 Address: 10.11.176.1#53 Name: console-openshift-console.apps.my-hosted-cluster.sample-base-domain.com Address: 10.11.176.71
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
-
검증
다음 명령을 입력하여 클러스터 운영자를 확인하세요.
oc get clusteroperators
$ oc get clusteroperators
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 모든 연산자가
AVAILABLE: True
,PROGRESSING: False
,DEGRADED: False로
표시되는지 확인하세요.다음 명령을 입력하여 노드를 확인하세요.
oc get nodes
$ oc get nodes
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 각 노드가
READY
상태인지 확인하세요.웹 브라우저에 다음 URL을 입력하여 콘솔에 대한 액세스를 테스트하세요.
https://console-openshift-console.apps.<hosted_cluster_namespace>.<base_domain>
https://console-openshift-console.apps.<hosted_cluster_namespace>.<base_domain>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
4.2.4.2. 콘솔을 사용하여 베어 메탈에 호스팅된 클러스터 만들기 링크 복사링크가 클립보드에 복사되었습니다!
콘솔을 사용하여 호스팅 클러스터를 만들려면 다음 단계를 완료하세요.
프로세스
- OpenShift Container Platform 웹 콘솔을 열고 관리자 자격 증명을 입력하여 로그인합니다. 콘솔을 여는 방법에 대한 지침은 "웹 콘솔에 액세스하기"를 참조하세요.
- 콘솔 헤더에서 모든 클러스터가 선택되어 있는지 확인하세요.
-
인프라
클러스터를 클릭합니다. 클러스터 만들기
호스트 인벤토리 호스팅된 제어 평면을 클릭합니다. 클러스터 만들기 페이지가 표시됩니다.
클러스터 만들기 페이지에서 프롬프트에 따라 클러스터, 노드 풀, 네트워킹 및 자동화에 대한 세부 정보를 입력합니다.
참고클러스터에 대한 세부 정보를 입력할 때 다음 팁이 유용할 수 있습니다.
- 미리 정의된 값을 사용하여 콘솔의 필드를 자동으로 채우려면 호스트 인벤토리 자격 증명을 만들 수 있습니다. 자세한 내용은 "온-프레미스 환경에 대한 자격 증명 만들기"를 참조하세요.
- 클러스터 세부 정보 페이지에서 풀 시크릿은 OpenShift Container Platform 리소스에 액세스하는 데 사용하는 OpenShift Container Platform 풀 시크릿입니다. 호스트 인벤토리 자격 증명을 선택한 경우 풀 비밀이 자동으로 채워집니다.
- 노드 풀 페이지에서 네임스페이스에는 노드 풀의 호스트가 포함되어 있습니다. 콘솔을 사용하여 호스트 인벤토리를 만든 경우 콘솔은 전용 네임스페이스를 만듭니다.
-
네트워킹 페이지에서 API 서버 게시 전략을 선택합니다. 호스팅된 클러스터의 API 서버는 기존 로드 밸런서를 사용하거나
NodePort
유형의 서비스로 노출될 수 있습니다. API 서버에 도달할 수 있는 대상을 가리키는api.<hosted_cluster_name>.<base_domain>
설정에 대한 DNS 항목이 있어야 합니다. 이 항목은 관리 클러스터의 노드 중 하나를 가리키는 레코드이거나, 수신 트래픽을 Ingress 포드로 리디렉션하는 로드 밸런서를 가리키는 레코드일 수 있습니다.
입력 내용을 검토하고 '만들기'를 클릭하세요.
호스팅된 클러스터 뷰가 표시됩니다.
- 호스팅된 클러스터 보기에서 호스팅된 클러스터의 배포를 모니터링합니다.
- 호스팅된 클러스터에 대한 정보가 보이지 않으면 모든 클러스터가 선택되어 있는지 확인한 다음 클러스터 이름을 클릭하세요.
- 컨트롤 플레인 구성 요소가 준비될 때까지 기다립니다. 이 과정은 몇 분 정도 걸릴 수 있습니다.
- 노드 풀 상태를 보려면 NodePool 섹션으로 스크롤하세요. 노드를 설치하는 데 걸리는 시간은 약 10분입니다. 노드를 클릭하여 노드가 호스팅된 클러스터에 참여하고 있는지 확인할 수도 있습니다.
다음 단계
- 웹 콘솔에 액세스하려면 웹 콘솔 액세스를 참조하세요.
4.2.4.3. 미러 레지스트리를 사용하여 베어 메탈에 호스팅된 클러스터 만들기 링크 복사링크가 클립보드에 복사되었습니다!
hcp create cluster
명령에서 --image-content-sources
플래그를 지정하여 미러 레지스트리를 사용하여 베어 메탈에 호스팅된 클러스터를 만들 수 있습니다.
프로세스
ICSP(이미지 콘텐츠 소스 정책)를 정의하기 위해 YAML 파일을 만듭니다. 다음 예제를 참조하십시오.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
파일을
icsp.yaml
로 저장합니다. 이 파일에는 미러 레지스트리가 포함되어 있습니다. 미러 레지스트리를 사용하여 호스팅 클러스터를 만들려면 다음 명령을 실행하세요.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 호스팅된 클러스터의 이름을 지정합니다(예:
)
. - 2
- 예를 들어
/user/name/pullsecret 과
같이 풀 시크릿의 경로를 지정합니다. - 3
- 호스팅된 제어 평면 네임스페이스를 지정합니다(예:
clusters-example)
.oc get agent -n <hosted-control-plane-namespace>
명령을 사용하여 이 네임스페이스에서 에이전트를 사용할 수 있는지 확인합니다. - 4
- 기본 도메인을 지정하세요(예:
krnl.es
). - 5
--api-server-address
플래그는 호스팅된 클러스터에서 Kubernetes API 통신에 사용되는 IP 주소를 정의합니다.--api-server-address
플래그를 설정하지 않으면 관리 클러스터에 연결하려면 로그인해야 합니다.- 6
- ICSP와 미러 레지스트리를 정의하는
icsp.yaml
파일을 지정합니다. - 7
- SSH 공개 키의 경로를 지정합니다. 기본 파일 경로는
~/.ssh/id_rsa.pub
입니다. - 8
- 호스팅된 클러스터 네임스페이스를 지정합니다.
- 9
- 사용하려는 지원되는 OpenShift Container Platform 버전을 지정합니다(예:
4.19.0-multi
). 연결이 끊긴 환경을 사용하는 경우<ocp_release_image>를
다이제스트 이미지로 바꾸세요. OpenShift 컨테이너 플랫폼 릴리스 이미지 다이제스트를 추출하려면 "OpenShift 컨테이너 플랫폼 릴리스 이미지 다이제스트 추출"을 참조하세요.
다음 단계
- 콘솔을 사용하여 호스팅된 클러스터를 생성할 때 재사용할 수 있는 자격 증명을 만들려면 온-프레미스 환경에 대한 자격 증명 만들기를 참조하세요.
- 호스팅된 클러스터에 액세스하려면 호스팅된 클러스터 액세스를 참조하세요.
- Discovery Image를 사용하여 호스트 인벤토리에 호스트를 추가하려면 Discovery Image를 사용하여 호스트 인벤토리에 호스트 추가를 참조하세요.
- OpenShift 컨테이너 플랫폼 릴리스 이미지 다이제스트를 추출하려면 OpenShift 컨테이너 플랫폼 릴리스 이미지 다이제스트 추출을 참조하세요.
4.2.5. 호스팅된 클러스터 생성 확인 링크 복사링크가 클립보드에 복사되었습니다!
배포 프로세스가 완료되면 호스팅된 클러스터가 성공적으로 생성되었는지 확인할 수 있습니다. 호스팅 클러스터를 만든 후 몇 분 후에 다음 단계를 따르세요.
프로세스
extract 명령을 입력하여 새로 호스팅된 클러스터에 대한 kubeconfig를 가져옵니다.
oc extract -n <hosted-control-plane-namespace> secret/admin-kubeconfig \ --to=- > kubeconfig-<hosted-cluster-name>
$ oc extract -n <hosted-control-plane-namespace> secret/admin-kubeconfig \ --to=- > kubeconfig-<hosted-cluster-name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow kubeconfig를 사용하여 호스팅된 클러스터의 클러스터 운영자를 확인합니다. 다음 명령을 실행합니다.
oc get co --kubeconfig=kubeconfig-<hosted-cluster-name>
$ oc get co --kubeconfig=kubeconfig-<hosted-cluster-name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
NAME VERSION AVAILABLE PROGRESSING DEGRADED SINCE MESSAGE console 4.10.26 True False False 2m38s dns 4.10.26 True False False 2m52s image-registry 4.10.26 True False False 2m8s ingress 4.10.26 True False False 22m
NAME VERSION AVAILABLE PROGRESSING DEGRADED SINCE MESSAGE console 4.10.26 True False False 2m38s dns 4.10.26 True False False 2m52s image-registry 4.10.26 True False False 2m8s ingress 4.10.26 True False False 22m
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 입력하여 호스팅 클러스터에서 실행 중인 Pod를 볼 수도 있습니다.
oc get pods -A --kubeconfig=kubeconfig-<hosted-cluster-name>
$ oc get pods -A --kubeconfig=kubeconfig-<hosted-cluster-name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
4.2.6. 호스팅된 클러스터에서 사용자 정의 API 서버 인증서 구성 링크 복사링크가 클립보드에 복사되었습니다!
API 서버에 대한 사용자 정의 인증서를 구성하려면 HostedCluster
구성의 spec.configuration.apiServer
섹션에서 인증서 세부 정보를 지정하세요.
1일차 또는 2일차 작업 중에 사용자 정의 인증서를 구성할 수 있습니다. 그러나 서비스 게시 전략은 호스팅 클러스터를 생성하는 동안 설정한 후에는 변경할 수 없으므로 구성하려는 Kubernetes API 서버의 호스트 이름을 알아야 합니다.
사전 요구 사항
관리 클러스터에 사용자 정의 인증서가 포함된 Kubernetes 비밀을 생성했습니다. 비밀에는 다음과 같은 키가 포함되어 있습니다.
-
tls.crt
: 인증서 -
tls.key
: 개인 키
-
-
HostedCluster
구성에 부하 분산 장치를 사용하는 서비스 게시 전략이 포함된 경우 인증서의 SAN(주체 대체 이름)이 내부 API 엔드포인트(api-int
)와 충돌하지 않는지 확인하세요. 내부 API 엔드포인트는 플랫폼에서 자동으로 생성되고 관리됩니다. 사용자 정의 인증서와 내부 API 엔드포인트 모두에서 동일한 호스트 이름을 사용하면 라우팅 충돌이 발생할 수 있습니다. 이 규칙의 유일한 예외는 AWS를Private
또는PublicAndPrivate
구성으로 공급자로 사용하는 경우입니다. 이런 경우 SAN 충돌은 플랫폼에 의해 관리됩니다. - 인증서는 외부 API 엔드포인트에 대해 유효해야 합니다.
- 인증서의 유효 기간은 클러스터의 예상 수명 주기와 일치합니다.
프로세스
다음 명령을 입력하여 사용자 지정 인증서로 비밀을 만듭니다.
oc create secret tls sample-hosted-kas-custom-cert \ --cert=path/to/cert.crt \ --key=path/to/key.key \ -n <hosted_cluster_namespace>
$ oc create secret tls sample-hosted-kas-custom-cert \ --cert=path/to/cert.crt \ --key=path/to/key.key \ -n <hosted_cluster_namespace>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 예와 같이 사용자 지정 인증서 세부 정보로
HostedCluster
구성을 업데이트합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 입력하여
HostedCluster
구성에 변경 사항을 적용합니다.oc apply -f <hosted_cluster_config>.yaml
$ oc apply -f <hosted_cluster_config>.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
검증
- API 서버 포드를 확인하여 새 인증서가 마운트되었는지 확인하세요.
- 사용자 지정 도메인 이름을 사용하여 API 서버에 대한 연결을 테스트합니다.
-
브라우저나
openssl
과 같은 도구를 사용하여 인증서 세부 정보를 확인하세요.