Red Hat Training
A Red Hat training course is available for OpenShift Container Platform
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 주소를 가져옵니다.