반응형
해당 내용은 Udemy의 Certified Kubernetes Administrator (CKA) with Practice Tests 강의를 공부한 내용입니다. 내용을 그대로 번역하기보다는, 제가 이해하기 쉬운 대로 수정한 부분들이 있습니다.
⚠️ 영어 독해가 많이 부족합니다. 틀린 내용이 있으면 알려주시면 감사하겠습니다.
(보충 필요)
이번 강의에서는 쿠버네티스의 secrets 에 대해 살펴보겠습니다.
Web-Mysql Application
한 가지 방법은 app properties/envs을 configmap으로 이동하는 것입니다. 그러나 configmap은 데이터를 일반 텍스트 형식으로 저장합니다. 확실히 암호를 저장하기에 적합한 장소가 아닙니다.
-
apiVersion: v1 kind: ConfigMap metadata: name: app-config data: DB_Host: mysql DB_User: root DB_Password: paswrd
Secrets은 민감한 정보를 저장하는 데 사용됩니다. configmap과 유사하지만 암호화된 형식 또는 해시 형식으로 저장됩니다.
There are 2 steps involved with secrets
- First, Create a secret
- Second, Inject the secret into a pod.
There are 2 ways of creating a secret
- The Imperative way
-
$ kubectl create secret generic app-secret --from-literal=DB_Host=mysql --from-literal=DB_User=root --from-literal=DB_Password=paswrd $ kubectl create secret generic app-secret --from-file=app_secret.properties
- Declarative way로는, secret definition file을 만들고 kubectl create 커맨드를 실행하여 배포합니다.
$ kubectl create -f secret-data.yaml
-
apiVersion: v1 kind: Secret metadata: name: app-secret data: DB_Host: bX1zcWw= DB_User: cm9vdA== DB_Password: cGFzd3Jk
-
Generate a hash value of the password and pass it to secret-data.yaml definition value as a value to DB_Password variable. $ echo -n "mysql" | base64 $ echo -n "root" | base64 $ echo -n "paswrd"| base64
Encode Secrets
View Secrets
- To view secrets
-
$ kubectl get secrets
- To describe secret
-
$ kubectl describe secret
- To view the values of the secret
-
$ kubectl get secret app-secret -o yaml
Decode Secrets
- To decode secrets
$ echo -n "bX1zcWw=" | base64 --decode $ echo -n "cm9vdA==" | base64 --decode $ echo -n "cGFzd3Jk" | base64 --decode
Configuring secret with a pod
- To inject a secret to a pod add a new property envFrom followed by secretRef name and then create the pod-definition
apiVersion: v1 kind: Pod metadata: name: simple-webapp-color spec: containers: - name: simple-webapp-color image: simple-webapp-color ports: - containerPort: 8080 envFrom: - secretRef: name: app-secret
$ kubectl create -f pod-definition.yaml
-
apiVersion: v1 kind: Secret metadata: name: app-secret data: DB_Host: bX1zcWw= DB_User: cm9vdA== DB_Password: cGFzd3Jk
There are other ways to inject secrets into pods.
- You can inject as Single ENV variable
- You can inject as whole secret as files in a Volume
Secrets in pods as volume
- Each attribute in the secret is created as a file with the value of the secret as its content.
반응형
'MLOps > Doker & Kubernetes' 카테고리의 다른 글
Udemy CKA 강의 정리 102: Solution - Environment Variables (optional) (0) | 2023.01.12 |
---|---|
Udemy CKA 강의 정리 101: Practice Test - Environment Variables (0) | 2023.01.12 |
Udemy CKA 강의 정리 100: Configuring ConfigMaps in Applications (0) | 2023.01.12 |
Udemy CKA 강의 정리 99: Configure Environment Variables in Applications (1) | 2023.01.12 |
Udemy CKA 강의 정리 98: Solution - Commands and Arguments (optional) (0) | 2023.01.12 |
댓글