[Openshift] Pod (Container) 에 도메인 및 SSL 인증서 추가하기
컨테이너에 외부 접근을 가능하게 하려면 라우트 (route) 를 생성하면 됩니다.
하지만 기본 라우트 도메인은 Pod 이름과 클러스터명을 기반으로 생성됩니다.
형식) <route명>-<프로젝트명>.apps.<클러스터명>
결과) python-sample-project412.apps.az1.sysdocu.kr
1. Ingress 생성
별도의 도메인을 추가하여 접근 가능하도록 하는 방법은 Ingress 를 생성하는 방법입니다.
Ingress 생성시 Route 경로가 추가 생성됩니다. 마찬가지로 Ingress 삭제시 함께 생성되었던 Route 도 같이 삭제 됩니다.
예제는 도메인 두개를 더 추가하는 방법으로 진행했으며, 아래 내용으로 Ingress yaml 파일을 작성하였습니다.
서비스 이름과 포트는 oc get service 명령으로 확인해서 입력해줘야 합니다.
# vi ingress.yaml
apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: python-sample namespace: project412 spec: rules: - host: sysdocu.kr http: paths: - path: / pathType: Prefix backend: service: name: python-sample port: number: 8080 - host: www.sysdocu.kr http: paths: - path: / pathType: Prefix backend: service: name: python-sample port: number: 8080 |
작성한 파일을 적용합니다.
# oc apply -f ingress.yaml
ingress.networking.k8s.io/python-sample created
Ingress 생성을 확인합니다.
# oc get ingress
NAME CLASS HOSTS ADDRESS PORTS AGE
python-sample sysdocu.kr,www.sysdocu.kr router-default.apps.az1.sysdocu.kr 80 20s
추가된 Route 를 확인합니다.
# oc get route
NAME HOST/PORT PATH SERVICES PORT TERMINATION WILDCARD
python-sample python-sample-project412.apps.az1.sysdocu.kr python-sample 8080 None
python-sample-2ktlf sysdocu.kr / python-sample python-sample None
python-sample-rg89r www.sysdocu.kr / python-sample python-sample None
이제 추가된 도메인으로 컨테이너 접근이 가능하지만
외부 DNS 에 해당 서버 IP 로 연결이 되어 있는지 확인해 봐야 합니다.
2. SSL 인증서 추가
인증서를 사용하는 프로토콜로 연결하기 위해서는 SSL 인증서를 발급받은 후에 OCP 서버에서 secret 을 생성해야 합니다.
무료 SSL 인증서 발급은 별도의 포스팅을 확인해주세요.
- https://sysdocu.tistory.com/1546
- https://sysdocu.tistory.com/1730
- https://sysdocu.tistory.com/1781
secret 생성시 인증서 경로를 지정합니다.
# oc create secret tls sysdocussl --cert=/root/ssl/cert1.pem --key=/root/ssl/privkey1.pem
secret/sysdocussl created
위에서 테스트 했던 Ingress 삭제 후 아래 내용으로 yaml 파일을 다시 작성하였습니다.
작성할때 서비스 이름과 포트는 oc get service 명령으로 확인해서 입력해줘야 합니다.
# oc delete ingress python-sample
# vi ingress.yaml
apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: python-sample namespace: project412 spec: tls: - hosts: - www.sysdocu.kr secretName: sysdocussl rules: - host: www.sysdocu.kr http: paths: - path: / pathType: Prefix backend: service: name: python-sample port: number: 8080 |
작성된 yaml 파일을 적용합니다.
# oc apply -f ingress.yaml
ingress.networking.k8s.io/python-sample created
Ingress 생성을 확인합니다.
# oc get ingress
NAME CLASS HOSTS ADDRESS PORTS AGE
python-sample <none> www.sysdocu.kr router-default.apps.az1.sysdocu.kr 80, 443 87s
추가된 Route 를 확인합니다.
# oc get route
NAME HOST/PORT PATH SERVICES PORT TERMINATION WILDCARD
python-sample python-sample-project412.apps.az1.sysdocu.kr python-sample 8080 None
python-sample-cq6w6 www.sysdocu.kr / python-sample python-sample edge/Redirect None
이제 웹브라우저에서 추가된 도메인으로 접속하면 SSL 인증서 확인이 가능합니다.
https://www.sysdocu.kr
'리눅스 > OpenShift' 카테고리의 다른 글
[참고] Openshift 에서 PV 에 연결된 PVC 정보 확인 및 PV 삭제하기 (0) | 2023.05.11 |
---|---|
Openshift 4.12.0 PV, PVC (NFS) 를 이용한 Volume 추가 (0) | 2023.05.10 |
[참고] Openshift 의 Service 와 Route 차이점 / Ingress 와 Route 차이점 (0) | 2023.05.10 |
[참고] Openshift 의 oc new-project 와 oc create ns 의 차이점 (0) | 2023.05.10 |
[Openshift] 미터링 도구 Prometheus + AlertManager 알람 (webhook + telegram) (0) | 2023.04.24 |