본문 바로가기
MLOps/Doker & Kubernetes

Udemy CKA 강의 정리 146: View Certificate Details

by 공부하는 무니 2023. 1. 17.
반응형

해당 내용은 Udemy의 Certified Kubernetes Administrator (CKA) with Practice Tests 강의를 공부한 내용입니다. 내용을 그대로 번역하기보다는, 제가 이해하기 쉬운 대로 수정한 부분들이 있습니다.

⚠️ 영어 독해가 많이 부족합니다. 틀린 내용이 있으면 알려주시면 감사하겠습니다.


이번 강의에서는 기존 클러스터에서 인증서를 보는 방법을 알아보겠습니다.

View Certs

당신은 새로운 팀에 합류하여 Kubernetes 환경을 관리해야 합니다. 당신은 이 팀의 새로운 관리자입니다. 환경의 인증서와 관련된 여러 문제가 있다는 말을 들었습니다. 전체 클러스터에 있는 모든 인증서의 상태 확인을 수행하라는 메시지가 표시됩니다. 당신은 무엇을 해야 할까요?

먼저 클러스터가 어떻게 설정되었는지 아는 것이 중요합니다. Kubernetes 클러스터를 배포하는 데 사용할 수 있는 다양한 솔루션이 있으며, 서로 다른 방법을 사용하여 인증서를 생성하고 관리합니다. Kubernetes 클러스터를 처음부터 배포하려는 경우 이전 강의에서 했던 것처럼 모든 인증서를 직접 생성해야 합니다. 또는 kubeadm과 같은 자동 프로비저닝 tool에 의존하는 경우 자동으로 클러스터를 생성하고 구성합니다.

어려운 방식으로 한다면 모든 컴포넌트를 노드에 native 서비스로 배포해야 하지만, kubeadm tool은 이를 파드로 배포합니다. 따라서 올바른 정보를 보려면 어디를 봐야 하는지 아는 것이 중요합니다.

이번 강의에서는 kubeadm에 의한 클러스터 프로비저닝을 예로 들어 보겠습니다. 상태 확인을 수행하려면 시스템에서 사용되는 모든 인증서를 식별하는 것부터 시작하세요.

샘플 Excel 스프레드시트를 만들었습니다. 이 강의 끝에 링크된 리소스를 확인하여 접속하시면 됩니다. 따라서 아이디어는 사용된 인증서 파일 목록을 만드는 것입니다. 파일은 path, name, alternate names, certificate account가 속한 조직, 인증서 발급 및 인증서 만료 날짜로 구성되어 있습니다.

이러한 것들은 어떻게 확인할까요? 사용된 인증서 파일을 확인하는 것으로 시작하세요. 이를 위해 kubeadm에서 설정한 환경에서 /etsy/kubernetes/manifests 폴더 아래에서 Cube API 서버 definition 파일을 찾습니다. API 서버를 시작하는 데 사용되는 커맨드에는 사용하는 모든 인증서에 대한 정보가 있습니다. 각 용도에 사용되는 인증서 파일을 식별하고 기록해 둡니다.

다음으로, 각 인증서를 가져와 내부를 살펴보고 해당 인증서에 대한 자세한 내용을 찾습니다. 예를 들어 API 서버 인증서 파일부터 시작하겠습니다. openssl x509 커맨드를 실행하고 인증서 파일을 입력으로 제공하여 인증서를 디코딩하고 세부 정보를 봅니다.

$ openssl x509 -in /etc/kubernetes/pki/apiserver.crt -text -noout

subject 섹션 아래 인증서의 이름으로 시작합니다. 이 경우 kube-apiserver입니다. 그런 다음 kube-apiserver에는 대체 이름이 많으므로 모두 있는지 확인해야 합니다. 그런 다음 인증서의 validity 섹션을 확인하여 만료 날짜를 확인한 다음 인증서 발급자를 확인하세요. 인증서를 발급한 CA여야 합니다. kubeadm은 Kubernetes CA의 이름을 Kubernetes 자체로 지정합니다. 다른 모든 인증서에 대한 정보를 식별하려면 동일한 절차를 따르십시오.

확인 사항: 올바른 이름과 올바른 alternate names이 있는지 확인하고 인증서가 올바른 조직의 일부인지 확인하세요. 가장 중요한 것은 인증서가 올바른 발급자에 의해 발급되었고 인증서가 만료되지 않았는지 확인합니다. 인증서 요구 사항은 Kubernetes 설명서 페이지에 자세히 나열되어 있습니다. reference 섹션에서 링크를 확인할 수 있습니다.

Inspect Server Logs - Hardware setup

문제가 발생하면 로그를 살펴보고 싶을 것입니다. 클러스터를 처음부터 설정하고 서비스가 OS에서 "네이티브 서비스"로 구성된 경우 운영 체제 로깅 기능을 사용하여 서비스 로그를 살펴보고 싶을 것입니다.

$ journalctl -u etcd.service -l

Inspect Server Logs - kubeadm setup

kubeadm으로 클러스터를 설정하는 경우 다양한 컴포넌트가 파드로 배포됩니다. 따라서 kubectl logs 커맨드 다음에 파드 이름을 사용하여 로그를 볼 수 있습니다.

$ kubectl logs etcd-master

때때로 Kubernetes API 서버 또는 ETCD 서버와 같은 코어 컴포넌트가 다운되면 kubectl 커맨드가 작동하지 않습니다. 이 경우 로그를 가져오려면 Docker까지 한 수준 아래로 이동해야 합니다.

docker ps -a 커맨드를 사용하여 모든 컨테이너를 조회한 다음, docker logs 커맨드 다음에 container-id를 사용하여 로그를 확인할 수 있습니다. 

$ docker ps -a
$ docker logs <container-id>

반응형

댓글