18.2. 외부 데이터베이스의 서비스 정의


외부 서비스의 가장 일반적인 유형 중 하나는 외부 데이터베이스입니다. 외부 데이터베이스를 지원하려면 애플리케이션에 다음이 필요합니다.

  1. 통신할 끝점입니다.
  2. 다음을 포함한 인증 정보 및 좌표 세트:

    • 사용자 이름
    • 암호
    • 데이터베이스 이름

외부 데이터베이스와 통합하기 위한 솔루션에는 다음이 포함됩니다.

  • SaaS 공급자를 OpenShift Container Platform 서비스로 나타내는 Service 오브젝트입니다.
  • 서비스에 대한 하나 이상의 Endpoints.
  • 인증 정보가 포함된 적절한 pod의 환경 변수입니다.

다음 단계에서는 외부 MySQL 데이터베이스와 통합하는 시나리오를 간략하게 설명합니다.

18.2.1. 1단계: 서비스 정의

IP 주소와 끝점을 제공하거나 FQDN(정규화된 도메인 이름)을 제공하여 서비스를 정의할 수 있습니다.

18.2.1.1. IP 주소 사용

  1. 외부 데이터베이스를 나타내는 OpenShift Container Platform 서비스를 생성합니다. 이는 내부 서비스를 생성하는 것과 유사합니다. 서비스의 Selector 필드에 차이가 있습니다.

    내부 OpenShift Container Platform 서비스는 Selector 필드를 사용하여 레이블 을 사용하여 포드를 서비스와 연결합니다. EndpointsController 시스템 구성 요소는 선택기와 일치하는 Pod와 선택기를 지정하는 서비스의 끝점을 동기화합니다. 서비스 프록시 및 OpenShift Container Platform 라우터 는 서비스의 끝점 간에 서비스에 대한 요청을 부하 분산합니다.

    외부 리소스를 나타내는 서비스에는 연결된 포드가 필요하지 않습니다. 대신 Selector 필드를 설정되지 않은 상태로 두십시오. 이는 외부 서비스를 나타내며 EndpointsController 에서 서비스를 무시하고 끝점을 수동으로 지정할 수 있습니다.

      kind: "Service"
      apiVersion: "v1"
      metadata:
        name: "external-mysql-service"
      spec:
        ports:
          -
            name: "mysql"
            protocol: "TCP"
            port: 3306
            targetPort: 3306 1
            nodePort: 0
      selector: {} 2
    1
    선택 사항: 서비스가 연결을 전달하는 백업 Pod의 포트입니다.
    2
    비워 둘 selector 필드입니다.
  2. 다음으로 서비스에 필요한 끝점을 만듭니다. 그러면 서비스 프록시 및 라우터에서 서비스로 전송된 트래픽을 보낼 위치를 제공합니다.

      kind: "Endpoints"
      apiVersion: "v1"
      metadata:
        name: "external-mysql-service" 1
      subsets: 2
        -
          addresses:
            -
              ip: "10.0.0.0" 3
          ports:
            -
              port: 3306 4
              name: "mysql"
    1
    이전 단계에서 정의한 대로 Service 인스턴스의 이름입니다.
    2
    둘 이상의 제공된 경우 서비스에 대한 트래픽은 제공된 끝점 간에 부하 분산됩니다.
    3
    엔드포인트 IP는 루프백(127.0.0.0/8), 링크-로컬(169.254.0.0/16) 또는 링크-로컬 멀티캐스트(224.0.0.0/24)일 수 없습니다.
    4
    포트이름 정의는 이전 단계에서 정의한 서비스의 포트이름 값과 일치해야 합니다.

18.2.1.2. 외부 도메인 이름 사용

외부 도메인 이름을 사용하면 외부 서비스의 IP 주소 변경에 대해 걱정할 필요가 없기 때문에 외부 서비스 연결 기능을 보다 쉽게 관리할 수 있습니다.

ExternalName 서비스에는 선택기 또는 정의된 포트 또는 엔드포인트가 없으므로 ExternalName 서비스를 사용하여 트래픽을 외부 서비스로 보낼 수 있습니다.

kind: "Service"
apiVersion: "v1"
metadata:
  name: "external-mysql-service"
spec:
  type: ExternalName
  externalName: example.domain.name
selector: {} 1
1
비워 둘 selector 필드입니다.

외부 도메인 이름 서비스를 사용하면 시스템에서 externalName 필드의 DNS 이름(이전 예제의example.domain.name )이 서비스를 지원하는 리소스의 위치임을 알립니다. Kubernetes DNS 서버에 대해 DNS 요청이 생성되면 클라이언트가 반환된 이름을 조회하여 IP 주소를 가져오도록 CNAME 레코드에서 externalName 을 반환합니다.

Red Hat logoGithubRedditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

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

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

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

Red Hat 소개

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

© 2024 Red Hat, Inc.