[Openshift] Pod (Container) 에 도메인 및 SSL 인증서 추가하기

리눅스/OpenShift|2023. 5. 10. 11:28
반응형

컨테이너에 외부 접근을 가능하게 하려면  라우트 (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

 

반응형

댓글()