쿠버네티스 OKD(OCP) 웹 콘솔(console) 로그인 불가 오류 해결

털난 개발자·2022년 7월 21일
0

OKD(redhat kubernetes)에서 웹 콘솔 로그인 실패 에러 해결 방법을 소개합니다.


증상

증상 1 : OKD를 사용하던 도중 웹 콘솔에 ID와 Password를 입력해도 로그인이 되지 않고 로그인 페이지로 계속 redirect

증상 1-1 : 웹 콘솔 자체가 연결 불가 - pods 상태가 비정상

증상 2 : cli로 "oc login [주소]" 로그인시 x509 인증서 만료로 로그인이 실패

error: x509: certificate has expired or is not yet valid

문제 진단

master 노드나 service 노드에서 cli로 "oc login"을 한 후에

1. master / worker node 확인

oc get nodes


master / worker node들이 정상적으로 작동중인지 확인.

2. 웹 콘솔 pods 확인

oc projects openshift-console 
oc get pods 

openshift-console 네임스페이스로 이동한 뒤, pods 상태를 확인

"console-xxx-xxx"이름으로 된 파드들이 web console 파드들인데 전부 정상적이지 않음

3. pod 로그 확인

oc logs [pod 이름]


"x509: certificate has expired or is not yey valid"로 x509인증서 만료 에러가 표시

4. 인그레스(ingress) 스크릿 확인

oc get secrets -n openshift-ingress

"Router-metrics-certs-default (Kubernetes.io/tls)"가 매일 갱신되어야 하지만, 1일이 넘게 갱신이 안된 경우. (3주 전쯤부터... 웹 콘솔 로그인이 불가능했습니다.)

원인

인증서가 2년(혹은 1년) 정도의 유효기간을 가지고 있고, 이를 주기적으로 갱신해줘야한다. 이를 갱신해 주지 않을시 인증서 만료로 openshift-ingress를 사용하는 서비스들의 인증 실패가 발생. openshift-console은 openshift-ingress를 사용하고 있었기 때문에, cli와 웹 로그인이 불가능했던 것.

해결 방법

1. ingress-operator / ingress 인증서 재발급

step. 1 router-ca 갱신

oc projcect openshift-ingress-operator
oc get secret
oc get secret router-ca -o yaml > [백업이름].yaml
oc delete secret router-ca
oc delete pod --all
oc get secret router-ca
oc get pods

step. 2 router-cets 갱신

oc project openshift-ingress
oc get secret router-certs-default -o yaml > [백업이름].yaml
oc delete secret router-certs-default         
oc delete pod --all
oc get secret router-certs-default                
oc get pods

ingress 네임스페이스에서 인증서를 재발급하는 과정이다. 시크릿을 삭제한 다음, 해당 네임스페이스에 파드를 삭제(자동 재실행, replica이기 때문)하면, 파드가 재 실행되면서 새 인증서를 생성하고 자동으로 시크릿에 등록됩니다.


tls 관련 인증서가 재발급 되었습니다.

2. console 파드 확인

oc get pods -n openshift-console


웹 콘솔 파드가 정상적으로 재배포 되었습니다. tls인증서가 업데이트되면서 자동으로 재실행되었고, 약 3~5분정도 기다리면, 웹 UI에서 접속이 가능합니다.

1개의 댓글

comment-user-thumbnail
2022년 9월 28일

동일한 현상이 발생해서 구글링을 했는데 완벽한 Diagnostic 절차와 해결방법을 작성해주셔서 덕분에 쉽게해결했네요. 감사합니다!

답글 달기