View Certificate Details

Yu Sang Min·2025년 6월 16일

CKA

목록 보기
49/110

📌 기존 클러스터에서 인증서 확인하기

  • 클러스터 전체 인증서 상태 확인 요청을 받았다고 가정
  • 클러스터가 어떻게 설정됐는지 확인
    • kubeadm (자동 프로비저닝 툴)
$ cat /etc/kubernetes/manifests/kube-apiserver.yaml
  • “The Hard Way”
$ cat /etc/systemd/system/kube-apiserver.service
  • 서비스 배포시 kubeadm 툴은 pod로 배포함
  • 어디를 보고 올바른 정보를 봐야하는지 아는게 중요

🌐 kubeadm 에 의한 클러스터 프로비저닝에서의 인증

  • 사용되는 모든 인증서를 확인해보자.
# API 서버 정의 파일을 다음 경로에서 확인
$ cat /etc/kubernetes/manifests/kube-apiserver.yaml
<중략>
- command:
  - kube-apiserver
  <중략>
  - --client-ca-file=/etc/kubernetes/pki.ca.crt
  <중략>
  - --etcd-cafile=/etc/kubenetes/pki/etcd/ca.crt
  - --etcd-certfile=/etc/kubernetes/pki/apiserver-etcd-client.crt
  - --etcd-keyfile=/etc/kubernetes/pki/apiserver-etcd-client.key
  <중략>
  - --kubelet-client-certificate=/etc/kubernetes/pki/apiserver-kubelet-client.crt
  - --kubelet-client-key=/etc/kubernetes/pki/apiserver-kubelet-client.key
  <중략>
  - --tls-cert-file=/etc/kubernetes/pki/apiserver.crt
  - --tls-private-key-file=/etc/kubernetes/pki/apiserver.key
  • API 서버 정의파일은 모든 인증서 파일의 경로를 가지고 있다.
  • 각 용도로 사용되는 인증서 파일을 확인가능
  • 다음 각각 인증서 내부를 살펴 해당 인증서에 관해 상세히 확인 할 수있음
$ openssl x509 -in /etc/kubernetes/pki/apiserver.crt -text -noout
  • 위 명령어로 디코딩 후 세부 사항 확인
Certificate:
  Data:
   <중략>
        issuer: CN=kubernetes  // 발급자 확인 (증명서를 발급한 CA 이다)
   <중략>
          Not After : Feb 11 05:39:20 2020 GMT  // 유효기간 만료일
        Subject: CN-kube-apiserver
   <중략>
         X509v3 Subject Alternative Name:
              DNS:master, DNS:kubernetes, DNS:kubernetes.default, …

  • API 서버의 DNS 이름이 많아 전부 다 있는지 확인 해야함
  • kubeadm은 발급자를 kubernetes CA 라고 부름

✔️ 인증서 확인해야할 사항

  1. 올바른 이름과 올바른 대체 이름을 갖고 있는지 (DNS)
  2. 올바른 조직의 일부인지 (CA) - 신뢰할 수있는 발행인에 의해 발행되고 인증서가 만료되지 않았는지
  • 인증서 요구사항은 K8S 문서페이지에 상세히 나와있다

🔎 Inspect Service Logs (서비스 로그 검사)

  • 문제가 생긴 경우 로그를 봐야함
    • 처음부터 혼자 클러스터를 구성하고 os 상에 native 서비스로 동작 시 운영체제 로깅 기능을 이용한 서비스 로그를 봐야함
$ journalctl -u etcd.service -l

  • kubeadm으로 클러스터를 설정하면 다양한 구성요소가 pod로 배포됨
$ kubectl logs etcd-master

🔫 트러블 슈팅

  • apiserver 나 etcd 서버같은 핵심 구성요소가 다운되면 kubectl 명령어가 작동하지 않음
  • 이런 경우 Docker로 내려가 로그를 가져와야함
$ docker ps -a // 컨테이너 ID 확인
$ docker logs <컨테이너 ID>
profile
React, Node.js, AWS, Git, Github, Github Action, Docker, K8S

0개의 댓글