17.2. 외부 데이터베이스의 서비스 정의
가장 일반적인 외부 서비스 유형 중 하나는 외부 데이터베이스입니다. 외부 데이터베이스를 지원하려면 애플리케이션이 필요합니다.
- 통신할 끝점입니다.
다음을 포함하여 일련의 자격 증명 및 좌표는 다음과 같습니다.
- 사용자 이름
- 암호
- 데이터베이스 이름
외부 데이터베이스와 통합하기 위한 솔루션은 다음과 같습니다.
-
SaaS 공급자를 OpenShift Container Platform 서비스로 나타내는
Service
오브젝트입니다. -
서비스에 대한
끝점
하나 이상입니다. - 자격 증명을 포함하는 적절한 포드의 환경 변수입니다.
다음 단계에서는 외부 MySQL 데이터베이스와 통합하기 위한 시나리오를 간략하게 설명합니다.
17.2.1. 1 단계: 서비스 정의
IP 주소와 엔드포인트를 제공하거나 FQDN(정규화된 도메인 이름)을 제공하여 서비스를 정의할 수 있습니다.
17.2.1.1. IP 주소 사용
외부 데이터베이스를 나타내는 OpenShift Container Platform 서비스를 생성합니다. 이는 내부 서비스를 생성하는 것과 유사합니다. 차이점은 서비스의
Selector
필드에 있습니다.내부 OpenShift Container Platform 서비스는
Selector
필드를 사용하여 라벨 을 사용하여 포드를 서비스와 연결합니다.EndpointsController
시스템 구성 요소는 선택기와 일치하는 Pod와 선택기를 지정하는 서비스의 끝점을 동기화합니다. 서비스 프록시 및 OpenShift Container Platform 라우터 는 서비스 끝점 간에 서비스에 대한 요청을 로드 밸런싱합니다.외부 리소스를 나타내는 서비스에는 연결된 Pod가 필요하지 않습니다. 대신
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
다음으로 서비스에 필요한 엔드포인트를 만듭니다. 이렇게 하면 서비스 프록시와 라우터에서 서비스로 전송되는 트래픽을 전송합니다.
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"
17.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
- 비워둘
선택기
필드입니다.
외부 도메인 이름 서비스를 사용하면 externalName
필드의 DNS 이름(이전 예제의example.domain.name
)이 서비스를 백업하는 리소스의 위치임을 시스템에 알립니다. Kubernetes DNS 서버에 대한 DNS 요청이 생성되면 CNAME 레코드에서 externalName
을 반환하여 반환된 이름을 조회하여 IP 주소를 가져옵니다.