21.2. 서비스의 ExternalIP 구성


클러스터 관리자는 클러스터의 서비스로 트래픽을 보낼 수 있는 클러스터 외부의 IP 주소 블록을 지정할 수 있습니다.

이 기능은 일반적으로 베어 메탈 하드웨어에 설치된 클러스터에 가장 유용합니다.

21.2.1. 사전 요구 사항

  • 네트워크 인프라는 외부 IP 주소에 대한 트래픽을 클러스터로 라우팅해야 합니다.

21.2.2. ExternalIP 정보

클라우드 환경이 아닌 경우 OpenShift Container Platform은 ExternalIP 기능을 사용하여 Service 오브젝트의 spec.externalIPs[] 매개변수에 외부 IP 주소를 지정할 수 있습니다. ExternalIP로 구성된 서비스는 type=NodePort 인 서비스와 유사하게 작동합니다. 여기서 트래픽이 로드 밸런싱을 위해 로컬 노드로 전달합니다.

중요

클라우드 환경의 경우 클라우드 로드 밸런서 자동 배포를 위해 로드 밸런서 서비스를 사용하여 서비스 끝점을 대상으로 합니다.

매개변수 값을 지정하면 OpenShift Container Platform에서 추가 가상 IP 주소를 서비스에 할당합니다. IP 주소는 클러스터에 대해 정의한 서비스 네트워크 외부에 있을 수 있습니다.

주의

ExternalIP는 기본적으로 비활성화되어 있으므로 ExternalIP 기능을 활성화하면 외부 IP 주소에 대한 클러스터 내 트래픽이 해당 서비스로 전달되므로 서비스에 보안 위험이 발생할 수 있습니다. 이 구성을 사용하면 클러스터 사용자가 외부 리소스로 향하는 민감한 트래픽을 가로챌 수 있습니다.

MetalLB 구현 또는 IP 페일오버 배포를 사용하여 다음과 같은 방법으로 ExternalIP 리소스를 서비스에 연결할 수 있습니다.

외부 IP 자동 할당
OpenShift Container Platform에서는 spec.type=LoadBalancer가 설정된Service 오브젝트를 생성할 때 autoAssignCIDRs CIDR 블록의 IP 주소를 spec.externalIPs[] 배열에 자동으로 할당합니다. 이 구성을 위해 OpenShift Container Platform은 로드 밸런서 서비스 유형의 클라우드 버전을 구현하고 서비스에 IP 주소를 할당합니다. 자동 할당은 기본적으로 비활성화되어 있으며 " ExternalIP용 구성" 섹션에 설명된 대로 클러스터 관리자가 구성해야 합니다.
외부 IP 수동 할당
OpenShift Container Platform에서는 Service 오브젝트를 생성할 때 spec.externalIPs[] 배열에 할당된 IP 주소를 사용합니다. 다른 서비스에서 이미 사용 중인 IP 주소는 지정할 수 없습니다.

MetalLB 구현 또는 IP 페일오버 배포를 사용하여 외부 IP 주소 블록을 호스팅한 후 외부 IP 주소 블록이 클러스터로 라우팅되도록 네트워킹 인프라를 구성해야 합니다. 이 구성은 IP 주소가 노드의 네트워크 인터페이스에 구성되지 않았음을 의미합니다. 트래픽을 처리하려면 ARM(Static Address Resolution Protocol) 항목과 같은 방법을 사용하여 라우팅 및 외부 IP에 대한 액세스를 구성해야 합니다.

OpenShift Container Platform은 다음 기능을 추가하여 Kubernetes의 ExternalIP 기능을 확장합니다.

  • 구성 가능한 정책을 통해 사용자가 외부 IP 주소 사용 제한
  • 요청 시 서비스에 자동으로 외부 IP 주소 할당

21.2.3. 추가 리소스

21.2.4. ExternalIP 구성

OpenShift Container Platform에서 외부 IP 주소 사용은 cluster 라는 이름의 Network.config.openshift.io CR(사용자 정의 리소스)의 다음 매개변수에 의해 관리됩니다.

  • spec.externalIP.autoAssignCIDRs는 서비스에 대한 외부 IP 주소를 선택할 때 로드 밸런서에서 사용하는 IP 주소 블록을 정의합니다. OpenShift Container Platform에서는 자동 할당에 대해 하나의 IP 주소 블록만 지원합니다. 이 구성에는 서비스에 ExternalIP를 수동으로 할당하는 것보다 적은 단계가 필요하므로 제한된 수의 공유 IP 주소의 포트 공간을 관리해야 합니다. 자동 할당을 활성화하면 spec.type=LoadBalancerService 오브젝트에 외부 IP 주소가 할당됩니다.
  • spec.externalIP.policy는 IP 주소를 수동으로 지정할 때 허용되는 IP 주소 블록을 정의합니다. OpenShift Container Platform은 spec.externalIP.autoAssignCIDRs 매개변수에 정의된 IP 주소 블록에 정책 규칙을 적용하지 않습니다.

올바르게 라우팅되면 구성된 외부 IP 주소 블록의 외부 트래픽이 서비스에서 노출하는 TCP 또는 UDP 포트를 통해 서비스 끝점에 도달할 수 있습니다.

중요

클러스터 관리자는 externalIP로 라우팅을 구성해야 합니다. 또한 할당하는 IP 주소 블록이 클러스터의 하나 이상의 노드에서 종료되는지 확인해야 합니다. 자세한 내용은 Kubernetes 외부 IP를 참조하십시오.

OpenShift Container Platform에서는 각 주소가 최대 하나의 서비스에 할당되도록 하는 IP 주소 자동 및 수동 할당을 모두 지원합니다. 이 구성을 사용하면 각 서비스가 다른 서비스에서 노출하는 포트에 관계없이 선택한 포트를 노출할 수 있습니다.

참고

OpenShift Container Platform에서 autoAssignCIDR로 정의된 IP 주소 블록을 사용하려면 호스트 네트워크에 필요한 IP 주소 할당 및 라우팅을 구성해야 합니다.

다음 YAML에서는 외부 IP 주소가 구성된 서비스를 설명합니다.

spec.externalIPs[]가 설정된 Service 오브젝트의 예

apiVersion: v1
kind: Service
metadata:
  name: http-service
spec:
  clusterIP: 172.30.163.110
  externalIPs:
  - 192.168.132.253
  externalTrafficPolicy: Cluster
  ports:
  - name: highport
    nodePort: 31903
    port: 30102
    protocol: TCP
    targetPort: 30102
  selector:
    app: web
  sessionAffinity: None
  type: LoadBalancer
status:
  loadBalancer:
    ingress:
    - ip: 192.168.132.253
# ...

21.2.5. 외부 IP 주소 할당 제한 사항

클러스터 관리자는 IP 주소 블록을 지정하여 서비스의 IP 주소를 허용할 수 있습니다. 제한 사항은 cluster-admin 권한이 없는 사용자에게만 적용됩니다. 클러스터 관리자는 서비스 spec.externalIPs[] 필드를 IP 주소로 항상 설정할 수 있습니다.

정책 오브젝트에서 spec.ExternalIP.policy 매개변수에 대해 CIDR(Classless Inter-Domain Routing) 주소 블록을 지정하여 IP 주소 정책을 구성합니다.

정책 오브젝트의 JSON 형식 및 CIDR 매개변수의 예

{
  "policy": {
    "allowedCIDRs": [],
    "rejectedCIDRs": []
  }
}

정책 제한을 구성할 때는 다음 규칙이 적용됩니다.

  • policy{} 로 설정된 경우 spec.ExternalIPs[] 를 사용하여 Service 를 생성하면 실패한 서비스가 생성됩니다. 이 설정은 OpenShift Container Platform의 기본값입니다. 정책에도 동일한 동작이 있습니다. null.
  • policy가 설정되고 policy.allowedCIDRs[] 또는 policy.rejectedCIDRs[]가 설정된 경우 다음 규칙이 적용됩니다.

    • allowedCIDRs[]rejectedCIDRs[] 가 둘 다 설정된 경우 rejectedCIDRs[]allowedCIDRs[] 보다 우선합니다.
    • allowedCIDRs[] 가 설정된 경우 지정된 IP 주소가 허용되는 경우에만 spec.ExternalIPs[] 를 사용하여 Service 오브젝트를 생성합니다.
    • rejectedCIDRs[] 가 설정된 경우 지정된 IP 주소가 거부되지 않는 경우에만 spec.ExternalIPs[] 를 사용하여 Service 오브젝트를 생성할 수 있습니다.

21.2.6. 정책 오브젝트의 예

이 섹션의 예제에서는 다른 spec.externalIP.policy 구성을 보여줍니다.

  • 다음 예에서 정책은 OpenShift Container Platform에서 지정된 외부 IP 주소로 서비스를 생성하지 못하도록 합니다.

    Service 오브젝트 spec.externalIPs[]에 지정된 값을 거부하는 정책의 예

    apiVersion: config.openshift.io/v1
    kind: Network
    metadata:
      name: cluster
    spec:
      externalIP:
        policy: {}
    # ...

  • 다음 예에서는 allowedCIDRsrejectedCIDRs 필드가 모두 설정되어 있습니다.

    허용되거나 거부된 CIDR 블록을 모두 포함하는 정책의 예

    apiVersion: config.openshift.io/v1
    kind: Network
    metadata:
      name: cluster
    spec:
      externalIP:
        policy:
          allowedCIDRs:
          - 172.16.66.10/23
          rejectedCIDRs:
          - 172.16.66.10/24
    # ...

  • 다음 예에서 policy{} 로 설정됩니다. 이 구성으로 oc get networks.config.openshift.io -o yaml 명령을 사용하여 configuration means policy 매개변수가 명령 출력에 표시되지 않습니다. 정책에도 동일한 동작이 있습니다. null.

    Service 오브젝트 spec.externalIPs[]에 지정된 값을 허용하는 정책의 예

    apiVersion: config.openshift.io/v1
    kind: Network
    metadata:
      name: cluster
    spec:
      clusterNetwork:
      - cidr: 10.128.0.0/14
        hostPrefix: 23
      externalIP:
        policy: {}
    # ...

21.2.7. ExternalIP 주소 블록 구성

ExternalIP 주소 블록에 대한 구성은 cluster라는 네트워크 CR(사용자 정의 리소스)에 의해 정의됩니다. 네트워크 CR은 config.openshift.io API 그룹의 일부입니다.

중요

CVO(Cluster Version Operator)는 클러스터를 설치하는 동안 cluster라는 네트워크 CR을 자동으로 생성합니다. 이 유형의 다른 CR 오브젝트는 생성할 수 없습니다.

다음 YAML에서는 ExternalIP 구성을 설명합니다.

cluster라는 Network.config.openshift.io CR

apiVersion: config.openshift.io/v1
kind: Network
metadata:
  name: cluster
spec:
  externalIP:
    autoAssignCIDRs: [] 1
    policy: 2
      ...

1
서비스에 대한 외부 IP 주소 자동 할당에 사용할 수 있는 CIDR 형식으로 IP 주소 블록을 정의합니다. 단일 IP 주소 범위만 허용됩니다.
2
서비스에 대한 IP 주소 수동 할당에 대한 제한을 정의합니다. 제한이 정의되지 않은 경우 Service에서 spec.externalIP 필드를 지정할 수 없습니다. 기본적으로는 제한이 정의되어 있지 않습니다.

다음 YAML에서는 policy 스탠자의 필드를 설명합니다.

Network.config.openshift.io policy 스탠자

policy:
  allowedCIDRs: [] 1
  rejectedCIDRs: [] 2

1
CIDR 형식의 허용된 IP 주소 범위 목록입니다.
2
CIDR 형식의 거부된 IP 주소 범위 목록입니다.
외부 IP 구성의 예

외부 IP 주소 풀에 사용 가능한 몇 가지 구성이 다음 예에 표시되어 있습니다.

  • 다음 YAML에서는 자동으로 할당된 외부 IP 주소를 사용하는 구성을 설명합니다.

    spec.externalIP.autoAssignCIDRs가 설정된 구성의 예

    apiVersion: config.openshift.io/v1
    kind: Network
    metadata:
      name: cluster
    spec:
      ...
      externalIP:
        autoAssignCIDRs:
        - 192.168.132.254/29

  • 다음 YAML에서는 허용되거나 거부된 CIDR 범위에 대한 정책 규칙을 구성합니다.

    spec.externalIP.policy가 설정된 구성의 예

    apiVersion: config.openshift.io/v1
    kind: Network
    metadata:
      name: cluster
    spec:
      ...
      externalIP:
        policy:
          allowedCIDRs:
          - 192.168.132.0/29
          - 192.168.132.8/29
          rejectedCIDRs:
          - 192.168.132.7/32

21.2.8. 클러스터에 대한 외부 IP 주소 블록 구성

클러스터 관리자는 다음 ExternalIP 설정을 구성할 수 있습니다.

  • Service 오브젝트의 spec.clusterIP 필드를 자동으로 채우도록 OpenShift Container Platform에서 사용하는 ExternalIP 주소 블록입니다.
  • Service 오브젝트의 spec.clusterIP 배열에 수동으로 할당할 수 있는 IP 주소를 제한하는 정책 오브젝트입니다.

사전 요구 사항

  • OpenShift CLI(oc)를 설치합니다.
  • cluster-admin 역할의 사용자로 클러스터에 액세스할 수 있어야 합니다.

프로세스

  1. 선택 사항: 현재 외부 IP 구성을 표시하려면 다음 명령을 입력합니다.

    $ oc describe networks.config cluster
  2. 구성을 편집하려면 다음 명령을 입력합니다.

    $ oc edit networks.config cluster
  3. 다음 예와 같이 ExternalIP 구성을 수정합니다.

    apiVersion: config.openshift.io/v1
    kind: Network
    metadata:
      name: cluster
    spec:
      ...
      externalIP: 1
      ...
    1
    externalIP 스탠자에 대한 구성을 지정합니다.
  4. 업데이트된 ExternalIP 구성을 확인하려면 다음 명령을 입력합니다.

    $ oc get networks.config cluster -o go-template='{{.spec.externalIP}}{{"\n"}}'

21.2.9. 다음 단계

Red Hat logoGithubRedditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

© 2024 Red Hat, Inc.