전공공부
Secret 본문
Secret을 만든 후 Pod 주입을 통해서 암호화된 값을 넣을 수 있다.
kubectl create secret generic
<secret-name> --from-literal=<key>=<value>
form literal 사용법
kubectl create secret generic
app-secret --from-literal=DB_HOST=mysql
form file 사용법
kubectl create secret generic
app-secret --from-file=<path-to-file>
옵션이 너무 많을때는 파일을 통해 연결
secret.yml 파일 지정
secret-data.yml
apiVersion: v1
kind: Secret
metadata:
name: app-secret
data:
DB_HOST: <encording-base64>
base64로 인코딩 하는 법
echo -n 'mysql' | base64
echo -n 'root' | base64
echo -n 'passwd' | base64
k8s로 만든 secret 확인
kubectl get secret
kubectl describe secrets <secret-name>
kubectl get secret <secret-name> -o yaml # encording된 시크릿 값 확인 가능
base64 decord
echo -n 'bXlzcWw=' | base64 --decode #mysql
how to create pod with secret
pod-definition.yml
apiVersion: v1
kind: Pod
metadata:
name: simple-webapp-color
labels:
name: simple-webapp-color
spec:
containers:
- name: simple-webapp-color
image: simple-webapp-color
ports:
- containersPort: 8080
envFrom:
- secretRef:
name: app-secret
secret-data.yaml
apiVersion: v1
kind: Secret
metadata:
name: app-secret
data:
DB_Host: bXlzcWw=
secret-data의 name과 pod의 envFrom의 이름이 같다.
Secret은 Encrypted 되어지지 않기 때문에 아무나 접근해서 decode 할 수 있다.
Secret을 비밀 객체로 만들어서 사용하는 방법
kubectl create secret generic my-secret --from-literal=key1=supersecret // 키=값
kubectl get secret my-secret -o yaml // 확인 시 디코딩한 vase64 값으로 볼 수 있다.
echo "값" | base64 --decode // 이렇게 하면 해석이 된다.
ETCD 서버에 시크릿을 위한 비밀번호를 저장하기
apt-get install etcd-client //etcd 설치하기
etcdctl //설치 확인
kubectl get pods -n kube-system // etcd 서버의 확인
ETCDCTL_API=3 etcdctl \
--cacert=/etc/kubernetes/pki/etcd/ca.crt \
--cert=/etc/kubernetes/pki/etcd/server.crt \
--key=/etc/kubernetes/pki/etcd/server.key \
get /registry/secrets/default/my-secret | hexdump -C
//암호화 진행후 get 명령어로 hex로 해석된 값을 볼 수 있다.
'Study > K8S' 카테고리의 다른 글
Service Account (2) | 2023.03.19 |
---|---|
Docker Security (0) | 2023.03.19 |
configMaps (0) | 2023.03.03 |
2. Replica & ReplicaSet 제작 (0) | 2023.01.29 |
1. K8S Pod 설치 (1) | 2023.01.29 |