개요
Secret과 Configmap 차이점
Secret은 보안과 관련된 값을 저장하는 기능이다.
패스워드, Oauth토큰, ssh key, 등
Secret에 데이터를 저장할 때 Base64 인코딩해서 넣어야한다.
ConfigMap은 기밀 데이터가 아닌 일반 데이터 및 환경변수등을 저장하는 기능이다.
ConfigMap 설정
1. ConfigMap 생성
- config 파일과, credentials 파일 생성하는 ConfigMap
vi configmap.yaml
apiVersion: v1
data:
config: |
[default]
region=ap-southeast-1
output=text
credentials: |
[default]
aws_access_key_id = AKIxxxxxxxxx
aws_secret_access_key = VMxxxxxxxxxxx
kind: ConfigMap
metadata:
name: startstop-node
namespace: infra
2. Deployment에 ConfigMap 연결
- configmap volumes을 root/.aws 폴더 밑에 마운트
vi deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: start-node1
spec:
selector:
matchLabels:
run: start-node1
replicas: 1
template:
metadata:
labels:
run: start-node1
spec:
containers:
- name: start-node1
image: brentley/awscli
command:
- "aws"
- "eks"
- "describe-nodegroup"
- "--cluster-name"
- "comdev-eks"
- "--nodegroup-name"
- "comdev-eks-infra-node-group"
volumeMounts:
- name: aws
mountPath: root/.aws
readOnly: true
volumes:
- name: aws
configMap:
name: startstop-node
Secret 설정
1. base64 인코딩 작업
- Secret에 data의 내용은 base64으로 인코딩된 내용을 넣어야합니다.
- config 파일 내용을 base64 인코딩 작업
1. config 파일 생성
vi config
[default]
region=ap-southeast-1
output=text
2. config 파일 base64 인코딩
cat config |base64
123xxxxxxxxxxxxxxxxxxxxxxx
- credentials 파일 내용을 base64 인코딩 작업
1. credentials 파일 생성
vi credentials
[default]
aws_access_key_id = AKxxxxxxxxx
aws_secret_access_key = VM0oxxxxxx
2. credentials 파일 base64 인코딩
cat credentials |base64
456xxxxxxxxxxxxxxxxxxxxxxxxxxxx
2. Secret 생성
- base64 인코딩 된 내용을 data 필드에 값 넣기
vi secret.yaml
apiVersion: v1
data:
config: 123xxxxxxxxxxxxxxxxxxxxxxx
credentials: 456xxxxxxxxxxxxxxxxxxxxxxxxxxxx
kind: Secret
metadata:
name: startstop-node
namespace: infra
type: Opaque
3. deployment에 Secret 연결
- Secret volumes을 root/.aws 폴더 밑에 마운트