OpenShift Ingress 인증서 갱신 방법
OpenShift 클러스터 운영의 핵심인 Ingress 인증서, 만료되기 전에 안전하게 갱신하는 방법을 알아보세요.
Ingress 인증서의 역할과 중요성
OpenShift의 Ingress 인증서는 클러스터 외부에서 들어오는 HTTPS 트래픽을 암호화하고 인증하는 핵심적인 역할을 수행합니다. 이 인증서는 Router Pod를 통해 관리되며, 클라이언트와 서버 간의 안전한 통신 채널을 보장합니다.
Ingress Controller는 기본적으로 자체 서명된 인증서를 생성하여 사용하지만, Red Hat에서는 프로덕션 환경에서는 이러한 기본 인증서를 사용하지 말 것을 강력히 권고하고 있습니다. 사용자 정의 인증서를 적용할 경우, 인증서는 *.apps.example.com
형태의 와일드카드 도메인을 포함해야 하며, 이를 통해 클러스터 내의 모든 애플리케이션이 동일한 인증서를 사용할 수 있습니다.
인증서는 openshift-ingress
네임스페이스의 router-certs-default
Secret에 저장되며, Ingress Controller 설정을 통해 관리됩니다. 이 인증서는 웹 콘솔 접근, API 서버 통신, 그리고 모든 Route 기반 애플리케이션 접근에 사용되므로 클러스터 운영에 있어 매우 중요한 구성요소입니다.
인증서 만료 시 발생하는 문제점들
Ingress 인증서가 만료되면 OpenShift 클러스터에 심각한 영향을 미칩니다. 가장 즉시적인 문제는 웹 콘솔에 접근할 수 없게 되는 것입니다. 브라우저에서 NET::ERR_CERT_DATE_INVALID
오류가 발생하며, 사용자들은 보안 경고를 우회해야만 접근할 수 있게 됩니다.
명령행 도구인 oc
CLI를 통한 클러스터 접근도 불가능해집니다. x509: certificate has expired
오류가 발생하며, 이는 클러스터 관리 작업을 완전히 차단시킵니다. 더 심각한 것은 Authentication Operator가 Degraded 상태로 전환되면서 OAuthServerRouteEndpointAccessibleController_EndpointUnavailable 및 RouterCertsDegraded
오류를 발생시킨다는 점입니다.
이러한 상황에서는 OAuth 서버 엔드포인트에 접근할 수 없게 되어 사용자 인증이 불가능해지며, 결과적으로 클러스터의 모든 외부 접근이 차단됩니다. 특히 통계청과 같은 공공기관에서는 이러한 인증서 만료로 인한 장애가 실제로 발생한 사례가 있어, 정기적인 인증서 모니터링의 중요성이 더욱 강조됩니다.
인증서 만료 전 갱신 방법
인증서를 갱신하기 전에 만료날짜를 먼저 확인 해야합니다.
1. 사용자 정의 인증서로 갱신하는 방법
- 새로운 와일드카드 인증서를 준비한 후, 기존 인증서를 백업합니다.
oc get secret router-certs-default -n openshift-ingress -o yaml > ingress-cert-backup.yaml
- 새 인증서로 Secret을 생성합니다.
oc create secret tls custom-ingress-cert \ --cert=new-ingress.crt \ --key=new-ingress.key \ -n openshift-ingress
- Ingress Controller에 새 인증서를 적용합니다.
oc patch ingresscontroller default \ -n openshift-ingress-operator \ --type=merge \ -p '{"spec":{"defaultCertificate": {"name": "custom-ingress-cert"}}}'
2. 기본 인증서 재생성 방법
- 만료된 기본 인증서를 제거하고 재생성하는 방법도 있습니다. 먼저 기존 인증서 Secret을 삭제합니다.
oc delete secret router-certs-default -n openshift-ingress
- 그 다음 Router Pod를 재시작하여 새 인증서를 자동 생성합니다.
oc delete pod --all -n openshift-ingress
- 서비스 중단을 최소화하려면 rolling restart를 사용하는 것이 좋습니다.
oc rollout restart deployment/router-default -n openshift-ingress
효과적인 Ingress 인증서 관리 방법
체계적인 인증서 관리를 위해서는 정기적인 모니터링과 자동화된 갱신 프로세스가 필요합니다.
인증서 만료일 확인 방법
- 현재 사용 중인 인증서의 만료일을 확인하는 명령어는 다음과 같습니다.
oc extract secret/router-certs-default \ --keys=tls.crt \ --to=- \ -n openshift-ingress | openssl x509 -noout -enddate
- 모든 클러스터 인증서의 만료일을 한 번에 확인하려면
echo -e "NAMESPACE\tNAME\tEXPIRY" && \ oc get secrets -A -o go-template='range .itemsif eq .type "kubernetes.io/tls".metadata.namespace" ".metadata.name" "index .data "tls.crt""\n"endend' | \ while read namespace name cert; do echo -en "$namespace\t$name\t" echo $cert | base64 -d | openssl x509 -noout -enddate done | column -t
자동화된 인증서 관리
- cert-manager Operator를 활용하면 Let’s Encrypt와 연동하여 인증서를 자동으로 갱신할 수 있습니다. 이를 위해서는 먼저 cert-manager Operator를 설치해야 합니다.
oc create namespace cert-manager oc apply -f https://github.com/cert-manager/cert-manager/releases/download/v1.13.0/cert-manager.yaml
- ClusterIssuer를 생성하여 Let’s Encrypt와 연동합니다.
apiVersion: cert-manager.io/v1 kind: ClusterIssuer metadata: name: letsencrypt-production spec: acme: server: https://acme-v02.api.letsencrypt.org/directory email: admin@example.com privateKeySecretRef: name: letsencrypt-production solvers: - http01: ingress: class: openshift-default
모니터링 및 알림 설정
- 인증서 만료를 미리 감지하기 위해서는 모니터링 시스템을 구축해야 합니다. OpenShift의 기본 모니터링 스택을 활용하여 PrometheusRule을 생성할 수 있습니다.
apiVersion: monitoring.coreos.com/v1 kind: PrometheusRule metadata: name: certificate-expiry-alert namespace: openshift-monitoring spec: groups: - name: certificate-expiry rules: - alert: CertificateExpiryWarning expr: (cert_exporter_not_after - time()) / 86400 < 30 for: 1h labels: severity: warning annotations: summary: "Certificate expiring soon" description: "Certificate will expire in less than 30 days"
정기적인 인증서 점검을 위한 스크립트를 작성하여 cron job으로 실행하는 것도 효과적입니다. 매주 화요일마다 인증서 상태를 점검하고 만료 예정 인증서에 대한 보고서를 생성하는 자동화된 프로세스를 구축할 수 있습니다.
맺음말(마무리)
OpenShift Ingress 인증서 관리는 클러스터 운영의 핵심 요소입니다. 인증서 만료로 인한 서비스 중단을 방지하기 위해서는 정기적인 모니터링, 적절한 갱신 프로세스, 그리고 자동화된 관리 시스템이 필요합니다. 특히 공공기관이나 기업 환경에서는 인증서 만료로 인한 장애가 큰 영향을 미칠 수 있으므로, 사전 예방적 관리 체계를 구축하는 것이 매우 중요합니다.
cert-manager와 같은 도구를 활용한 자동화된 인증서 관리와 정기적인 모니터링을 통해 안정적이고 안전한 OpenShift 환경을 유지할 수 있습니다. 무엇보다 인증서 관리는 단순한 기술적 작업이 아닌, 서비스 연속성을 보장하는 핵심적인 운영 활동임을 인식하고 체계적으로 접근해야 합니다.
Cloud Native Korea Community Day 2024 – 생생했던 현장을 공개합니다!
/카테고리: Kubernetes, Seminar/작성자: OM marketingCloud Native Korea Community Day 2024 – 오픈마루 부스에서 이벤트 참여하세요!
/카테고리: Kubernetes, Seminar/작성자: OM marketingCloud Native Korea Community Day 2024 – 오픈마루가 여러분을 초대합니다!!
/카테고리: Kubernetes, Seminar/작성자: OM marketing