비공개 서비스 엔드포인트 허용 목록에서 컨텍스트 기반 제한(CBR)으로 마이그레이션하기

비공개 서비스 엔드포인트 허용 목록은 더 이상 지원되지 않으며 대신 컨텍스트 기반 제한(CBR)을 사용해야 합니다. 현재 클러스터에 마스터 프라이빗 서비스 엔드포인트 허용 목록이 활성화된 경우, 해당 허용 목록을 수정할 수 없으며 비활성화만 가능합니다. 다음 단계를 완료하여 컨텍스트 기반 제한 (CBR) 사용으로 마이그레이션하세요.

다음 지침은 CBR 규칙을 사용하여 클러스터의 비공개 서비스 엔드포인트를 보호하는 방법에 대해 설명합니다. 클러스터에 공용 서비스 엔드포인트와 비공개 서비스 엔드포인트(PSE)가 모두 있는 경우, CBR을 사용하여 클러스터의 공용 서비스 엔드포인트를 보호할 수도 있습니다.

CBR의 몇 가지 장점은 다음과 같습니다:

  • 계정의 여러 클러스터를 한 번에 타겟팅하고 각 클러스터에 대해 목록을 설정할 필요가 없습니다.
  • IP나 서브넷뿐만 아니라 특정 VPC의 액세스를 허용하세요.
  • PSE를 사용하면 최대 총 75개가 아닌 최대 200개의 비공개 IP와 500개의 공용 IP 또는 서브넷으로 더 높은 한도를 설정하세요.
  • 콘솔, API 또는 CLI에서 CBR 규칙을 생성하고 관리합니다.
  • CBR을 통한 공개 액세스를 제한합니다. 비공개 서비스 엔드포인트 허용 목록은 비공개 서비스 엔드포인트 트래픽만 제한합니다.

시작하기 전에

클러스터를 보호하기 위해 이미 CBR 규칙을 사용하고 있는 경우에는 이 지침이 사용 사례에 맞지 않을 수 있습니다. 대신 CBR 설명서를 참조하여 비공개 서비스 엔드포인트 허용 목록 서브넷을 포함하도록 기존 CBR 규칙을 수정하는 방법을 알아보세요. CBR에 대한 자세한 내용은 컨텍스트 기반 제한으로 클러스터 리소스 보호하기컨텍스트 기반 제한 시나리오 예시를 참조하세요.

CBR 영역 및 규칙 만들기를 시작하기 전에 비공개 서비스 엔드포인트 허용 목록이 예상대로 작동하는지 확인하세요. CBR을 설정한 후 이러한 테스트를 다시 실행하여 동일한 동작을 확인할 수 있습니다.

1 Red Hat OpenShift 클러스터에 액세스합니다. 허용 목록의 사용자 지정 서브넷 중 하나에 있는 비공개 IP를 사용하는 클라이언트 시스템에서 비공개 서비스 엔드포인트를 대상으로 합니다.

  1. 다음 명령을 실행하여 허용된 IP가 PSE에 연결할 수 있는지 확인합니다.

    oc get nodes
    

1 Red Hat OpenShift 클러스터에 액세스합니다. 연결이 가능한지 확인하기 위해 허용된 IP 주소에서 사설 서비스 엔드포인트를 대상으로 접속해 보십시오.

1 Red Hat OpenShift 클러스터에 액세스합니다. 허용 목록에서 허용되지 않는 비공개 IP를 사용하는 클라이언트 시스템의 비공개 서비스 엔드포인트를 대상으로 합니다.

  1. 이전 명령을 다시 실행하여 허용 목록에 없는 IP가 PSE에 연결할 수 없는지 확인합니다.

이제 허용 목록이 예상대로 작동하는지 확인했으므로 마이그레이션을 계속 진행할 수 있습니다.

1단계: 허용 목록의 세부 정보 검토하기

  1. PSE 허용 목록 세부 정보를 확인하세요.

    클러스터에서 PSE 허용 목록이 사용하도록 설정되어 있지 않으면 명령이 실패하고 이 기능이 비활성화되었다는 오류가 표시됩니다. 이 경우 클러스터에 추가 조치가 필요하지 않습니다.

    ibmcloud oc cluster master private-service-endpoint allowlist get -c CLUSTER
    

    출력 예

    Subnet             Type     Status
    10.138.53.64/26    System   Active
    10.30.50.0/24      Custom   Active
    10.249.94.103/32   Custom   Active
    OK
    laptop
    
  2. 결과물을 검토하고 사용자 지정 서브넷을 메모해 두세요. 이러한 서브넷은 나중에 사용됩니다.

    • 시스템 항목은 자동으로 마이그레이션되며 무시할 수 있습니다. 이 항목은 클러스터 워커가 클러스터 에이피저에 연결할 수 있도록 허용합니다.
    • 사용자 지정 항목은 이 클러스터의 비공개 서비스 엔드포인트에 연결할 수 있도록 추가한 서브넷입니다. 예시의 서브넷 ' 10.30.50.0/24 '과 ' 10.249.94.103/32 '는 다음 단계에서 CBR 네트워크 영역에 추가됩니다.

2단계: 네트워크 영역 만들기

기존 사용자 지정 비공개 서비스 엔드포인트 허용 목록과 동일한 서브넷이 포함된 CBR 네트워크 영역을 만듭니다.

콘솔에서 네트워크 영역 만들기

  1. CBR 콘솔로 이동합니다.

  2. 작성을 클릭하십시오.

  3. 네트워크 영역에 대한 세부 정보를 입력합니다.

    • 이름: 네트워크 영역의 이름을 지정합니다.
    • 허용된 IP 주소: 이전 단계에서 찾은 서브넷을 입력합니다.
  4. 다음을 클릭하여 네트워크 영역의 세부 정보를 검토합니다.

  5. 만들기를 클릭하여 네트워크 영역 만들기를 완료합니다.

CLI를 사용하여 네트워크 영역 생성하기

  1. 다음 예제 중 하나와 유사한 명령을 실행하여 CLI에서 네트워크 영역을 만듭니다.

    ' cbr zone-create ' 명령 구문입니다.

    ibmcloud cbr zone-create [--name NAME] [--description DESCRIPTION] [--addresses ADDRESSES] [--excluded EXCLUDED] [--vpc VPC] [--service-ref SERVICE-REF] [--file FILE]
    

    ' --addresses ' 매개변수는 위 단계에서 비공개 서비스 엔드포인트 허용 목록에서 찾은 쉼표로 구분된 서브넷 목록이어야 합니다.

    단일 클러스터에 대한 네트워크 영역을 만드는 명령 예제입니다.

    ibmcloud cbr zone-create --name private-subnets-for-cluster-XXXXXX --description "Private subnets that are allowed to access the apisever of cluster XXXXXX" --addresses 10.30.50.0/24,10.249.94.103/32
    
    CBR 영역 생성 예제 1
    매개변수 설명
    --name 네트워크 영역에 이름을 지정합니다.
    --description 해당 구역에 대한 설명을 선택적으로 입력할 수 있습니다.
    --addresses 이전 단계의 마스터 서비스 엔드포인트 허용 목록에서 찾은 서브넷을 입력합니다.

    계정의 모든 클러스터에 대한 네트워크 영역을 만드는 명령 예제입니다.

    ibmcloud cbr zone-create --name private-subnets-for-all-clusters --description "Private subnets that are allowed to access my clusters" --addresses 10.30.50.0/24,10.249.94.103/32
    
    CBR 영역 생성 예제 1
    매개변수 설명
    --name 네트워크 영역에 이름을 지정합니다.
    --description 해당 구역에 대한 설명을 선택적으로 입력할 수 있습니다.
    --addresses 이전 단계의 마스터 서비스 엔드포인트 허용 목록에서 찾은 서브넷을 입력합니다.
  2. CBR 규칙을 만들어 클러스터를 CBR로 보호하세요. 이 규칙은 클러스터 또는 이 계정의 모든 클러스터를 참조하며 사용자가 만든 네트워크 영역도 참조합니다.

3단계: CBR 규칙 만들기

생성한 네트워크 영역을 참조하는 CBR 규칙을 만듭니다. 콘솔, CLI 또는 API에서 CBR 규칙을 만들 수 있습니다.

콘솔에서 CBR 규칙 만들기

  1. CBR 콘솔에서 네트워크 영역으로 이동합니다.

  2. 작업 목록을 클릭하고 편집을 클릭합니다.

  3. 네트워크 영역에 서브넷, VPC 또는 서비스를 추가하거나 제거하여 하나 이상의 클러스터에 액세스할 수 있는 리소스를 제어할 수 있습니다.

CLI를 사용하여 CBR 규칙 생성하기

다음 지침에서는 CLI를 사용하여 네트워크 영역을 만드는 방법에 대해 설명합니다.

  1. 네트워크 영역을 나열하고 이전 단계에서 만든 네트워크 영역의 ID를 기록합니다.

    ibmcloud cbr zones
    
  2. CBR 규칙을 만듭니다. 단일 클러스터 또는 계정의 모든 클러스터를 보호하는 규칙을 만들 수 있습니다.

    ' cbr rule-create ' 명령 구문입니다.

    ibmcloud cbr rule-create [--description DESCRIPTION] [--context-attributes CONTEXT-ATTRIBUTES] [--resource-attributes RESOURCE-ATTRIBUTES] [--region REGION] [--resource RESOURCE] [--resource-group-id RESOURCE-GROUP-ID] [--resource-type RESOURCE-TYPE] [--service-instance SERVICE-INSTANCE-GUID] [--service-name SERVICE-NAME] [--zone-id ZONE-ID] [--tags TAGS] [--enforcement-mode ENFORCEMENT-MODE] [--file FILE]
    

    클러스터에 공용 서비스 엔드포인트가 있는 경우, 공용 서비스 엔드포인트로 트래픽이 허용되도록 ' --context-attributes endpointType=public ' 매개변수를 포함해야 합니다. 이 옵션을 포함하지 않으면 모든 공개 트래픽이 차단됩니다.

    클러스터의 ' CLUSTER-ID '과 이전 단계의 네트워크 영역의 ' NETWORK-ZONE-ID '를 사용하여 이 클러스터만 보호하는 CBR 규칙을 생성하는 명령 예제입니다.

    ibmcloud cbr rule-create --api-types crn:v1:bluemix:public:containers-kubernetes::::api-type:cluster --description "Protect private endpoint for cluster CLUSTER" --service-name containers-kubernetes --service-instance CLUSTER-ID --context-attributes endpointType=private,networkZoneId=NETWORK-ZONE-ID --context-attributes endpointType=public
    
    CBR 규칙 생성 예제 1
    매개변수 설명
    --api-types ' crn:v1:bluemix:public:containers-kubernetes::::api-type:cluster ' 값은 클러스터 컨트롤 플레인 마스터 API를 나타냅니다. Red Hat OpenShift on IBM Cloud API 유형에 대한 자세한 내용은 특정 API 보호하기를 참조하세요.
    --description 규칙에 대한 선택적 설명입니다.
    --service-name containers-kubernetes ' containers-kubernetes ' 값은 Red Hat OpenShift on IBM Cloud 규칙의 대상 서비스로 지정합니다.
    --service-instance CLUSTER-ID 보호하려는 클러스터의 ' CLUSTER-ID '을 지정합니다.
    --context-attributes endpointType=private,networkZoneId=NETWORK-ZONE-ID 이 옵션을 사용하면 ' NETWORK-ZONE-ID 영역에 있는 리소스만 클러스터의 비공개 엔드포인트에 액세스할 수 있습니다.
    --context-attributes endpointType=public 이 옵션을 사용하면 모든 리소스가 클러스터의 공용 엔드포인트에 액세스할 수 있습니다.
    networkZoneId 앞서 생성한 영역의 ' NETWORK-ZONE-ID '을 지정합니다.

    이전 단계의 네트워크 영역 ' NETWORK-ZONE-ID '을 사용하여 이 계정의 모든 클러스터를 보호하는 CBR 규칙을 만드는 명령 예제입니다.

    ibmcloud cbr rule-create --api-types crn:v1:bluemix:public:containers-kubernetes::::api-type:cluster --description "Protect private endpoint for all clusters" --service-name containers-kubernetes --context-attributes endpointType=private,networkZoneId=NETWORK-ZONE-ID --context-attributes endpointType=public
    
    CBR 규칙 생성 예제 2
    매개변수 설명
    --api-types ' crn:v1:bluemix:public:containers-kubernetes::::api-type:cluster ' 값은 클러스터 컨트롤 플레인 마스터 API를 나타냅니다. Red Hat OpenShift on IBM Cloud API 유형에 대한 자세한 내용은 특정 API 보호하기를 참조하세요.
    --description 규칙에 대한 선택적 설명입니다.
    --service-name ' containers-kubernetes ' 값은 Red Hat OpenShift on IBM Cloud 규칙의 대상 서비스로 지정합니다.
    --context-attributes endpointType=private,networkZoneId=NETWORK-ZONE-ID 이 옵션을 사용하면 ' NETWORK-ZONE-ID 영역에 있는 리소스만 클러스터의 비공개 엔드포인트에 액세스할 수 있습니다.
    --context-attributes endpointType=public 이 옵션을 사용하면 모든 리소스가 클러스터의 공용 엔드포인트에 액세스할 수 있습니다.
    networkZoneId 앞서 생성한 영역의 ' NETWORK-ZONE-ID '을 지정합니다.

규칙을 만들 때 ' A rule with the same resource attributes already exists'이라는 오류 메시지가 표시되면 이미 클러스터를 보호하는 CBR 규칙이 있는 것입니다. 이 경우 네트워크 영역을 추가하려면 기존 규칙을 업데이트해야 합니다. 자세한 내용은 CBR 규칙 업데이트 문서를 참조하세요.

4단계: 비공개 서비스 엔드포인트 허용 목록 비활성화하기

이제 클러스터의 비공개 서비스 엔드포인트가 CBR 규칙으로 보호되므로 비공개 서비스 엔드포인트 허용 목록을 비활성화할 수 있습니다.

다음 명령을 실행합니다.

ibmcloud oc cluster master private-service-endpoint allowlist disable -c CLUSTER

5단계: CBR 규칙 테스트

이제 CBR 규칙이 클러스터의 비공개 서비스 엔드포인트를 보호하고 있으므로 예상대로 작동하는지 확인합니다. 앞서 완료한 것과 동일한 테스트를 실행합니다.

  1. {target_[both}].

  2. 프라이빗 서비스 엔드포인트를 대상으로 하는 ' kubeconfig '을 사용하여 이 클러스터에 대해 다음 명령을 실행합니다.

    oc get nodes
    
  3. 생성한 네트워크 영역의 서브넷 중 하나에 있는 사설 IP를 사용하는 클라이언트 시스템에서 이 명령을 테스트한 다음(작동하는지 확인하기 위해), 네트워크 영역의 서브넷에 없는 사설 IP를 사용하는 클라이언트 시스템에서(실패하고 시간이 초과되는지 확인하기 위해) 이 명령을 테스트합니다.

동작이 예상과 다르다면 클러스터 액세스에도 영향을 미칠 수 있으므로 클러스터에 적용될 수 있는 ' containers-kubernetes 서비스에 대한 다른 CBR 규칙이 있는지 확인하세요.

6단계: 클러스터에 액세스할 수 있는 서브넷 추가 또는 제거하기

이제 CBR 규칙을 사용하여 클러스터를 보호하고 있으므로 네트워크 영역을 수정하여 클러스터에 액세스할 수 있는 서브넷을 지정할 수 있습니다.

콘솔에서 네트워크 영역 수정하기

  1. CBR 콘솔에서 네트워크 영역으로 이동합니다.

  2. 영역을 선택한 다음 작업 목록을 클릭하고 편집을 클릭합니다.

  3. 네트워크 영역에 서브넷, VPC 또는 서비스를 추가하거나 제거하여 선택한 클러스터에 액세스할 수 있는 리소스를 제어할 수 있습니다.

CLI에서 네트워크 영역 수정

클러스터에 액세스할 수 있는 서브넷을 추가하려면 ' cbr zone-update ' 명령을 사용하면 됩니다.

ibmcloud cbr zone-update <NETWORK-ZONE-ID> --name <NETWORK-ZONE-NAME> --addresses <EXISTING-SUBNETS>,<NEW-SUBNETS>

앞서 계정의 모든 클러스터에 대해 두 개의 서브넷 ' 10.30.50.0/24 ' 및 ' 10.249.94.103/32'를 사용하여 생성한 네트워크 영역의 예를 살펴보겠습니다. 세 번째 서브넷인 ' 10.10.10.0/24'을 추가하는 명령의 예는 다음과 같습니다.

ibmcloud cbr zone-update <NETWORK-ZONE-ID> --name private-subnets-for-all-clusters --description "Private subnets that are allowed to access my clusters" --addresses 10.30.50.0/24,10.249.94.103/32,10.10.10.0/24

추가하려는 항목뿐만 아니라 해당 네트워크 영역에 있는 모든 기존 항목을 포함해야 합니다. ' --addresses '에 지정한 값은 해당 네트워크 영역의 현재 주소 또는 서브넷 목록을 대체합니다.

영역에서 서브넷을 제거하려면 동일한 명령을 사용하되 ' --addresses 값에서 제거하려는 서브넷을 생략할 수 있습니다. 이 경우 클러스터에 계속 액세스할 수 있도록 허용하려는 서브넷만 포함하세요.

비공개 서비스 엔드포인트에서 컨텍스트 기반 제한 제거하기

콘솔에서 규칙 삭제하기

  1. CBR 콘솔에서 규칙으로 이동합니다.

  2. 규칙을 선택한 다음 작업 목록을 클릭하고 제거를 클릭합니다.

  3. 네트워크 영역에 서브넷, VPC 또는 서비스를 추가하거나 제거하여 선택한 클러스터에 액세스할 수 있는 리소스를 제어할 수 있습니다.

CLI에서 규칙 삭제하기

' ibmcloud cbr rule-delete <RULE-ID> ' 또는 ' ibmcloud cbr rule-update <RULE-ID> ' 명령으로 CBR 규칙을 삭제할 수 있습니다.

클러스터 또는 모든 클러스터에서 CBR 보호를 완전히 제거하려면 클러스터에 영향을 미치는 모든 CBR 규칙을 삭제하거나 비활성화해야 합니다.

' ibmcloud cbr rule-update 명령을 사용하여 기존 규칙을 비활성화하거나 활성화하는 경우 ' --enforcement-mode disabled ' 매개변수 외에 현재 규칙의 모든 속성을 지정해야 하며, 그렇지 않으면 생략한 속성이 규칙에서 제거됩니다.

다음 단계

CBR에 대한 자세한 내용은 다음 링크를 참조하십시오.