본문 바로가기
Web development/Infra

[EKS] 쿠버네티스에 AWS Credential 추가하기

by 자몬다 2020. 6. 10.
  • 서비스에서 AWS SQS에 메시지를 보내거나 하는 등 aws-sdk를 사용하기 위해 IAM User 인증이 필요한 경우
  1. 서비스에서 꼭 필요로 하는 권한만을 가진 IAM user를 만든다.
    필요하다면 그룹도 함께 만들어준다.
    생성된 유저의 액세스 키 ID와 시크릿 키를 잘 저장해둔다.

  2. 쿠버네티스 대시보드(kubectl proxy)로 가서, 서비스가 위치한 네임스페이스를 선택하고,
    좌측 메뉴 하단의 Secrets 메뉴로 가서 우상단의 +를 눌러 Secret을 추가한다.

아래와 같은 형식으로 추가하면 된다.

단 data에 들어가는 key들은 base64로 인코딩하여 넣어야 한다.

변환사이트 링크 : https://www.convertstring.com/ko/EncodeDecode/Base64Encode 

 

apiVersion: v1
kind: Secret
metadata:
  name: [시크릿의 이름]
type: Opaque
data:
  aws-access-key-id: [base64로 인코딩한 문자열]
  aws-secret-access-key: [base64로 인코딩한 문자열]

 

그후 deployment.yaml 파일의 container env 영역에 환경변수를 추가해준다.

spec:
  containers:
    - iamge: ...
      env:
	...
	- name: AWS_ACCESS_KEY_ID
	  valueFrom:
	    secretKeyRef:
	      name: [시크릿의 이름]
	      key: aws-access-key-id
	- name: AWS_SECRET_ACCESS_KEY
	  valueFrom:
	    secretKeyRef:
	      name: [시크릿의 이름]
	      key: aws-secret-access-key

 

deployment.yaml의 환경변수로 AWS_ACCESS_KEY_ID와 AWS_SECRET_ACCESS_KEY가 등록되고, 환경변수의 값은 쿠버네티스의 시크릿에 등록된 [시크릿의 이름]의 key값으로 찾아오게 된다.

 

컨테이너 환경변수에 AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY만 존재해도 알아서 sdk가 자격 증명을 사용하기 때문에 추가적인 액션은 필요없다. 추가적으로 명시하는 코드가 필요하지 않다는 의미다.


~끝~

 

 

댓글