...
빌트인 타입 | 사용처 |
---|---|
| 임의의 사용자 정의 데이터 |
| 서비스 어카운트 토큰 |
| 직렬화 된(serialized) |
| 직렬화 된 |
| 기본 인증을 위한 자격 증명(credential) |
| SSH를 위한 자격 증명 |
| TLS 클라이언트나 서버를 위한 데이터 |
| 부트스트랩 토큰 데이터 |
4.1 불투명(Opaque) 시크릿 사용
(1) 명령어로 시크릿 생성
코드 블럭 |
---|
root@k8s-master01:~/kb# cat prod-user.txt prod-user root@k8s-master01:~/kb# cat prod-pass.txt prod-pass root@k8s-master01:~/kb# kubectl create secret generic prod-user --from-file=./prod-user.txt --from-file=./prod-pass.txt secret/prod-user-secret created root@k8s-master01:~/kb# kubectl get secrets NAME TYPE DATA AGE prod-user-secret Opaque 2 4s root@k8s-master01:~/kb# kubectl get secrets prod-user-secret -o yaml apiVersion: v1 data: prod-pass.txt: cHJvZC1wYXNzCg== prod-user.txt: cHJvZC11c2VyCg== kind: Secret metadata: creationTimestamp: "2023-03-13T02:35:54Z" name: prod-user-secret namespace: default resourceVersion: "1226226" uid: 41a2cb2d-97f2-41bc-824f-c0c2783ec678 type: Opaque *원래 값 확인방 root@k8s-master01:~/kb# echo cHJvZC11c2VyCg== | base64 --decode prod-user |
(2) yaml 파일로 시크릿 생성
yaml 파일로 생성시 필요 값들을 base64로 인코딩된 값을 넣어야 합니다.
...
코드 블럭 |
---|
root@k8s-master01:~/kb# kubectl apply -f prod-user-secret.yaml root@k8s-master01:~/kb# kubectl get secrets NAME TYPE DATA AGE prod-user Opaque 2 5s root@k8s-master01:~/kb# kubectl get secrets prod-user -o yaml apiVersion: v1 data: password: cHJvZC1wYXNz username: cHJvZC11c2Vy kind: Secret metadata: annotations: kubectl.kubernetes.io/last-applied-configuration: | {"apiVersion":"v1","data":{"password":"cHJvZC1wYXNz","username":"cHJvZC11c2Vy"},"kind":"Secret","metadata":{"annotations":{},"name":"prod-user","namespace":"default"},"type":"Opaque"} creationTimestamp: "2023-03-13T02:49:45Z" name: prod-user namespace: default resourceVersion: "1228228" uid: a5eff12c-2329-4697-92f7-f252a4f724ba type: Opaque |
(3) 시크릿 사용
코드 블럭 |
---|
apiVersion: apps/v1 kind: Deployment metadata: name: secretapp labels: app: secretapp spec: replicas: 1 selector: matchLabels: app: secretapp template: metadata: labels: app: secretapp spec: containers: - name: testapp image: nginx:1.19 ports: - containerPort: 8080 env: - name: SECRET_USERNAME valueFrom: secretKeyRef: name: prod-user key: username - name: SECRET_PASSWORD valueFrom: secretKeyRef: name: prod-user key: password |
...