본문 바로가기
IT 기술/k8s

[cka] Secrets

by Geunny 2024. 7. 5.
반응형

1. How many Secrets exist on the system?
In the current(default) namespace.

controlplane ~ ➜  k get secrets 
NAME              TYPE                                  DATA   AGE
dashboard-token   kubernetes.io/service-account-token   3      2m14s

 

answer : 1

 

2. How many secrets are defined in the dashboard-token secret?

controlplane ~ ➜  k describe secrets dashboard-token
Name:         dashboard-token
Namespace:    default
Labels:       <none>
Annotations:  kubernetes.io/service-account.name: dashboard-sa
              kubernetes.io/service-account.uid: 5ad21e73-6a06-4ff9-bb6b-35e6c04d6095

Type:  kubernetes.io/service-account-token

Data
====
ca.crt:     570 bytes
namespace:  7 bytes
token:      eyJhbGciOiJSUzI1NiIsImtpZCI6IlVHTF9fVDJpSW12LVQ4LUR5S3ZGS3p3LUtObGVrRGtHazdrQ2pfMklERW8ifQ.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJkZWZhdWx0Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9zZWNyZXQubmFtZSI6ImRhc2hib2FyZC10b2tlbiIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VydmljZS1hY2NvdW50Lm5hbWUiOiJkYXNoYm9hcmQtc2EiLCJrdWJlcm5ldGVzLmlvL3NlcnZpY2VhY2NvdW50L3NlcnZpY2UtYWNjb3VudC51aWQiOiI1YWQyMWU3My02YTA2LTRmZjktYmI2Yi0zNWU2YzA0ZDYwOTUiLCJzdWIiOiJzeXN0ZW06c2VydmljZWFjY291bnQ6ZGVmYXVsdDpkYXNoYm9hcmQtc2EifQ.eYrqzAL8MiQipVkO8nF1kiaQlgJfd8w7fPdYch-8d-ePEUixNe80yqYikbvEUA2deHVU3bCCE3PTWDWi6MUOeHftxkchvdLSKYJFIDhD29lOkHVx8N7ioLoPM02Xef8NsBjUQKYlYHS1Fw7ERzzHpH7ghwxQeQu1Lgj_dyBTOKaQ0pVczmMvD_chfatWwbgKvS_nwQy4yWgHgbm9WRz6NPu1Fl_hOEKapJHaPvapYwYhVhZRjBKLS2Ww3OAjUG8HXVzimUrab3bHH09D5Y-UM2ye3GNxKD_lgKK5SBZ0j12wlykfZKdD49jr2Dfae_Pesfo-jGWPvdbLBPGzUfE2ug

 

answer : 3

 

3. What is the type of the dashboard-token secret?

 

answer : kubernetes.io/service-account-token

 

4. Which of the following is not a secret data defined in dashboard-token secret?

 

answer : type

 

5. We are going to deploy an application with the below architecture
We have already deployed the required pods and services. Check out the pods and services created. Check out the web application using the Webapp MySQL link above your terminal, next to the Quiz Portal Link.

 

 

 

6. The reason the application is failed is because we have not created the secrets yet. Create a new secret named db-secret with the data given below.
You may follow any one of the methods discussed in lecture to create the secret.

controlplane ~ ➜  k create secret --help
Create a secret with specified type.

 A docker-registry type secret is for accessing a container registry.

 A generic type secret indicate an Opaque secret type.

 A tls type secret holds TLS certificate and its associated key.

Available Commands:
  docker-registry   Create a secret for use with a Docker registry
  generic           Create a secret from a local file, directory, or literal
value
  tls               Create a TLS secret

Usage:
  kubectl create secret (docker-registry | generic | tls) [options]

Use "kubectl create secret <command> --help" for more information about a given
command.
Use "kubectl options" for a list of global command-line options (applies to all
commands).

 

controlplane ~ ✖ k create secret generic db-secret --from-literal=DB_Host=sql01 -
-from-literal=DB_User=root --from-literal=DB_Password=password123
secret/db-secret created

 

generic : 

Kubernetes에서 kubectl create secret generic 명령어는 Opaque 타입의 시크릿을 생성하는 데 사용됩니다. 이는 기본 시크릿 타입으로, 임의의 키-값 쌍을 저장하는 데 사용됩니다. generic 서브커맨드는 리터럴 값, 파일 또는 디렉토리로부터 데이터를 사용하여 이러한 시크릿을 생성할 수 있게 해줍니다.

 

7. Configure webapp-pod to load environment variables from the newly created secret.
Delete and recreate the pod if required.

apiVersion: v1 
kind: Pod 
metadata:
  labels:
    name: webapp-pod
  name: webapp-pod
  namespace: default 
spec:
  containers:
  - image: kodekloud/simple-webapp-mysql
    imagePullPolicy: Always
    name: webapp
    envFrom:
    - secretRef:
        name: db-secret

 

Kubernetes의 imagePullPolicy는 Pod가 컨테이너 이미지를 어떻게 가져올지를 제어하는 설정입니다. 이 설정은 Always, IfNotPresent, Never 세 가지 값 중 하나로 설정할 수 있습니다. 각 값의 역할과 사용 방법에 대해 설명하겠습니다.

 

imagePullPolicy의 값과 역할

 

1. Always

역할: Kubernetes는 항상 Docker 레지스트리에서 이미지를 가져옵니다.

사용 사례: 이미지 태그가 latest이거나 이미지를 자주 업데이트하는 경우 사용합니다.

 

2. IfNotPresent

역할: 이미지가 로컬 캐시에 없는 경우에만 Docker 레지스트리에서 이미지를 가져옵니다.

사용 사례: 이미지가 자주 변경되지 않거나 네트워크 대역폭을 절약하고자 할 때 사용합니다.

 

3. Never

역할: Kubernetes는 절대로 Docker 레지스트리에서 이미지를 가져오지 않고, 오직 로컬 캐시된 이미지만 사용합니다.

사용 사례: 로컬에 미리 이미지를 준비해두고 네트워크를 통한 이미지 풀링을 피하고자 할 때 사용합니다.

 

8. View the web application to verify it can successfully connect to the database

'IT 기술 > k8s' 카테고리의 다른 글

[cka] Init Containers  (0) 2024.07.06
[cka] Multi Container PODs  (0) 2024.07.05
[cka] Env Variables  (0) 2024.07.05
[cka] Rolling Updates and Rollbacks  (0) 2024.07.02
[cka] Managing Application Logs  (0) 2024.06.24

댓글