open:k8s-secret

K8s 시크릿

  • 시크릿은 패스워드, 토큰, 처럼 보안이 필요한 테이터를 저장하는 데 사용한다. 보안 데이터의 노출 리스크를 줄이기 위해 사용된다. 사이즈는 1MB 미만이어야 한다.
  • 서비스 어카운트를 만들면 서비스 어카운트의 토큰을 담은 시크릿이 네임스페이스에 자동으로 생성된다. 해당 토큰은 RBAC 기반의 접근 제어에 사용된다.
  • 사용자가 시크릿을 등록하면 파드의 환경 변수나 마운트된 볼륨의 파일을 통해 접근할 수 있다.
  • 시크릿은 네임스페이스에 속하며 다른 네임스페이스에서는 읽을 수 없다.
  • 시크릿 자체는 암호화와는 직접적인 관계가 없으며 벤더가 제공하는 추가적인 암호화 기능을 사용할 수도 있다
  • 파드가 시크릿을 사용하도록 설정했으면 기동하기 전에 시크릿이 존재해야 한다.

$ echo -n 'my_id' | base64
bXlfaWQ=
$ echo -n 'my_password' | base64
bXlfcGFzc3dvcmQ=

apiVersion: v1
kind: Secret
metadata:
  name: db-credentials
type: Opaque
data:
  username: bXlfaWQ=
  password: bXlfcGFzc3dvcmQ=

$ kubectl apply -f db_credentals.yml

$ kubectl get secret

NAME                  TYPE                                  DATA   AGE
db-credentials        Opaque                                2      17s
default-token-mwh6r   kubernetes.io/service-account-token   3      4d5h
tls-certificate       kubernetes.io/tls                     2      46h

apiVersion: v1
kind: Pod
metadata:
  name: web-apl
spec:
  containers:
  - name: nginx
    image: nginx
    env:
      - name: DB_USERNAME ## 환경 변수
        valueFrom:
          secretKeyRef:
            name: db-credentials ## 시크릿명
            key: username ## 시크릿 키
      - name: DB_PASSWORD ## 환경 변수
        valueFrom:
          secretKeyRef:
            name: db-credentials
            key: password

$ kubectl apply -f reg_secret_env.yml
pod/web-apl created

$ kubectl get po
NAME                       READY   STATUS    RESTARTS   AGE
bustbox                    0/1     Error     0          3h58m
web-apl                    1/1     Running   0          11s
web-php-7b7566bd54-nvm7n   1/1     Running   0          4h6m

$ kubectl exec -it web-apl -- bash -c 'echo $DB_USERNAME, $DB_PASSWORD'
my_id, my_password

apiVersion: v1
kind: Pod
metadata:
  name: web
spec:
  containers:
  - name: nginx
    image: nginx
    ports:
    - protocol: TCP
      containerPort: 443
    volumeMounts: ## 마운트 정의
    - name: cert-vol ## 시크릿의 볼륨 이름
      mountPath: /etc/cert ## 컨테이너상의 마운트 경로
  volumes: ## 볼륨 정의
  - name: cert-vol ## 시크릿의 볼륨 이름
    secret:
      secretName: www-cert ## 시크릿의 이름


  • open/k8s-secret.txt
  • 마지막으로 수정됨: 2021/10/07 06:24
  • 저자 127.0.0.1