k8s 클러스터 직접 구성해보기_2

duckiee·2022년 11월 17일
0

k8s 클러스터 구성

목록 보기
2/11
post-thumbnail

쿠버네티스 클러스터 내에서 CFSSL 인증서를 사용하며 용도는 아래와 같습니다.

  • 상호인증 : 서버, 클라이언트간 서로 정보를 확인(CA인증서 이용)
    *HTTPS의 경우 맞는 서버인지 대한 확인만 진행
  • 주로 k8s 컴포넌트에 사용하지만, 사용자 인증에도 사용 가능

이번 작업에 사용되는 명령어는 아래 깃허브에서 확인 가능합니다.

해당 사이트에서 명령어를 참고하여 아래와 같이 작업 합니다.

  1. Certificate Authority
    인증기관 인증서, CFSSL 도구로 인증서를 생성할때 사용하는 관리용 인증서
  • 결과
  1. The Admin Client Certificate
    어드민 클라이언트 인증서, kubectl 실행을 위한 사용자 인증용 인증서
  • 결과
  1. The Kubelet Client Certificates
    kublet 클라이언트 인증서, worker 노드에서 사용하는 인증서
  • 결과
  1. The Controller Manager Client Certificate
    Master 노드에서 사용하는 컨트롤러 매니저 클라이언트 인증서
    -결과
  1. The Kube Proxy Client Certificate
    worker 노드에서 사용하는 프록시 클라이언트 인증서
  • 결과
  1. The Scheduler Client Certificate
    Master 노드에서 사용하는 스캐줄러 클라이언트 인증서
  • 결과
  1. The Kubernetes API Server Certificate
    Master 노드에서 사용하는 API 서버 인증서
  • 결과
  1. The Service Account Key Pair
    Master 노드에서 사용할 "service-account" 키페어를 생성
  1. 워커 노드에 필요한 인증서 배포 작업
for instance in worker-0 worker-1 worker-2; do
  external_ip=$(aws ec2 describe-instances --filters \
    "Name=tag:Name,Values=${instance}" \
    "Name=instance-state-name,Values=running" \
    --output text --query 'Reservations[].Instances[].PublicIpAddress')

  scp -i kubernetes.id_rsa ca.pem ${instance}-key.pem ${instance}.pem ubuntu@${external_ip}:~/
done
  1. 마스터 노드에 필요한 인증서 배포 작업
for instance in controller-0 controller-1 controller-2; do
  external_ip=$(aws ec2 describe-instances --filters \
    "Name=tag:Name,Values=${instance}" \
    "Name=instance-state-name,Values=running" \
    --output text --query 'Reservations[].Instances[].PublicIpAddress')

  scp -i kubernetes.id_rsa \
    ca.pem ca-key.pem kubernetes-key.pem kubernetes.pem \
    service-account-key.pem service-account.pem ubuntu@${external_ip}:~/
done
profile
DevOps로 진화하기

0개의 댓글