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

duckiee·2022년 11월 17일
0

k8s 클러스터 구성

목록 보기
4/11
post-thumbnail

이번 포스트는 쿠버네티스 데이터 암호화 설정 작업입니다.

이전 시리즈와 같이 쿠버네티스 구성작업 단계이며, 작업에 사용되는 명령어는 아래 깃허브에서 확인 가능합니다.

URL : https://github.com/go4real/kubernetes-the-hard-way-aws/blob/master/docs/06-data-encryption-keys.md

쿠버네티스의 기밀 데이터 관리 기능의 특징은 아래와 같습니다.

  • 암호, 토큰, 키 등 작은 크기의 중요한 데이터를 Secret 오브젝트에 저장
    ex: 데이터베이스 인증정보, 외부 API 연동키(3rd 파티 서비스, 클라우드) 등

  • 기밀 데이터를 코드에 넣는 것은 지양 (Public GitHub에 기밀 코드 유출 주의)
    Pod과 독립적인 자원으로 생성 가능

  • 기본 설정은 평문 형태로 데이터를 저장
    etcd 접근 권한을 가진 사용자가 평문 형태의 기밀 정보를 읽을 수 있음

  • etcd에 저장할 데이터를 암호화 하기 위한 설정 필요
    EncryptionConfiguration 리소스를 이용해 설정

  1. Generate an encryption key: encryption-config.yaml 설정 파일에 적용할 암호화 키 생성
$ ENCRYPTION_KEY=$(head -c 32 /dev/urandom | base64)
  1. encryption-config.yaml 파일 배포 : 마스터 노드에 해당 파일 배포
$ 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 encryption-config.yaml ubuntu@${external_ip}:~/
done
profile
DevOps로 진화하기

0개의 댓글