2.4. API 서버를 프라이빗으로 제한

AWS (Amazon Web Services) 또는 Microsoft Azure에 클러스터를 배포한 후 프라이빗 영역만 사용하도록 API 서버를 재구성할 수 있습니다.

전제 조건

  • OpenShift CLI (oc)를 설치합니다.
  • admin 권한이 있는 사용자로 웹 콘솔에 액세스합니다.

프로세스

  1. 클라우드 공급자의 웹 포털 또는 콘솔에서 다음 작업을 수행합니다.

    1. 적절한 로드 밸런서 구성 요소를 찾아 삭제합니다.

      • AWS의 경우 외부 로드 밸런서를 삭제합니다. 프라이빗 영역의 API DNS 항목은 동일한 설정을 사용하는 내부 로드 밸런서를 가리키므로 내부 로드 밸런서를 변경할 필요가 없습니다.
      • Azure의 경우 로드 밸런서의 api-internal 규칙을 삭제합니다.
    2. 퍼블릭 영역의 api.$clustername.$yourdomain DNS 항목을 삭제합니다.
  2. 외부 로드 밸런서를 제거합니다.

    중요

    설치 관리자 프로비저닝 인프라(IPI) 클러스터에 대해서만 다음 단계를 실행할 수 있습니다. UPI(사용자 프로비저닝 인프라) 클러스터의 경우 외부 로드 밸런서를 수동으로 제거하거나 비활성화해야 합니다.

    • 클러스터에서 컨트롤 플레인 머신 세트를 사용하는 경우 컨트롤 플레인 머신 세트 사용자 정의 리소스에서 다음 행을 삭제합니다.

      providerSpec:
        value:
          loadBalancers:
          - name: lk4pj-ext 1
            type: network 2
          - name: lk4pj-int
            type: network
      1 2
      이 행을 삭제합니다.
    • 클러스터가 컨트롤 플레인 머신 세트를 사용하지 않는 경우 각 컨트롤 플레인 시스템에서 외부 로드 밸런서를 삭제해야 합니다.

      1. 터미널에서 다음 명령을 실행하여 클러스터 시스템을 나열합니다.

        $ oc get machine -n openshift-machine-api

        출력 예

        NAME                            STATE     TYPE        REGION      ZONE         AGE
        lk4pj-master-0                  running   m4.xlarge   us-east-1   us-east-1a   17m
        lk4pj-master-1                  running   m4.xlarge   us-east-1   us-east-1b   17m
        lk4pj-master-2                  running   m4.xlarge   us-east-1   us-east-1a   17m
        lk4pj-worker-us-east-1a-5fzfj   running   m4.xlarge   us-east-1   us-east-1a   15m
        lk4pj-worker-us-east-1a-vbghs   running   m4.xlarge   us-east-1   us-east-1a   15m
        lk4pj-worker-us-east-1b-zgpzg   running   m4.xlarge   us-east-1   us-east-1b   15m

        컨트롤 플레인 시스템에는 이름에 master 가 포함되어 있습니다.

      2. 각 컨트롤 플레인 시스템에서 외부 로드 밸런서를 제거합니다.

        1. 다음 명령을 실행하여 컨트롤 플레인 머신 오브젝트를 다음과 같이 편집합니다.

          $ oc edit machines -n openshift-machine-api <control_plane_name> 1
          1
          수정할 컨트롤 플레인 머신 오브젝트의 이름을 지정합니다.
        2. 다음 예에 표시된 외부 로드 밸런서를 설명하는 행을 제거합니다.

          providerSpec:
            value:
              loadBalancers:
              - name: lk4pj-ext 1
                type: network 2
              - name: lk4pj-int
                type: network
          1 2
          이 행을 삭제합니다.
        3. 변경 사항을 저장하고 오브젝트 사양을 종료합니다.
        4. 각 컨트롤 플레인 시스템에 대해 이 프로세스를 반복합니다.

2.4.1. Ingress 컨트롤러 끝점 게시 범위를 Internal로 구성

클러스터 관리자가 클러스터가 비공개임을 지정하지 않고 새 클러스터를 설치하면 기본 Ingress 컨트롤러가 외부로 설정된 범위를 사용하여 생성됩니다. 클러스터 관리자는 외부 범위가 지정된 Ingress 컨트롤러를 Internal 로 변경할 수 있습니다.

전제 조건

  • oc CLI를 설치했습니다.

프로세스

  • 외부 범위가 지정된 Ingress 컨트롤러를 Internal 로 변경하려면 다음 명령을 입력합니다.

    $ oc -n openshift-ingress-operator patch ingresscontrollers/default --type=merge --patch='{"spec":{"endpointPublishingStrategy":{"type":"LoadBalancerService","loadBalancer":{"scope":"Internal"}}}}'
  • Ingress 컨트롤러의 상태를 확인하려면 다음 명령을 입력합니다.

    $ oc -n openshift-ingress-operator get ingresscontrollers/default -o yaml
    • 진행 상태 조건은 추가 조치를 취해야 하는지 여부를 나타냅니다. 예를 들어 상태 조건은 다음 명령을 입력하여 서비스를 삭제해야 함을 나타낼 수 있습니다.

      $ oc -n openshift-ingress delete services/router-default

      서비스를 삭제하면 Ingress Operator가 서비스를 Internal 로 다시 생성합니다.