Kubernetes-비밀

암호는 사용자 이름 및 암호와 같은 민감한 데이터를 암호화하는 데 사용되는 Kubernetes 객체로 정의 할 수 있습니다.

Kubernetes에서 비밀을 만드는 방법에는 여러 가지가 있습니다.

  • txt 파일에서 생성.
  • yaml 파일에서 생성.

텍스트 파일에서 생성

사용자 이름 및 암호와 같은 텍스트 파일에서 비밀을 생성하려면 먼저 txt 파일에 저장하고 다음 명령을 사용해야합니다.

$ kubectl create secret generic tomcat-passwd –-from-file = ./username.txt –fromfile = ./.
password.txt

Yaml 파일에서 만들기

apiVersion: v1
kind: Secret
metadata:
name: tomcat-pass
type: Opaque
data:
   password: <User Password>
   username: <User Name>

비밀 만들기

$ kubectl create –f Secret.yaml
secrets/tomcat-pass

비밀 사용

비밀을 만든 후에는 포드 또는 복제 컨트롤러에서 다음과 같이 사용할 수 있습니다.

  • 환경 변수
  • Volume

환경 변수로

비밀을 환경 변수로 사용하기 위해 우리는 env pod yaml 파일의 사양 섹션 아래에 있습니다.

env:
- name: SECRET_USERNAME
   valueFrom:
      secretKeyRef:
         name: mysecret
         key: tomcat-pass

볼륨으로

spec:
   volumes:
      - name: "secretstest"
         secret:
            secretName: tomcat-pass
   containers:
      - image: tomcat:7.0
         name: awebserver
         volumeMounts:
            - mountPath: "/tmp/mysec"
            name: "secretstest"

환경 변수로 비밀 구성

apiVersion: v1
kind: ReplicationController
metadata:
   name: appname
spec:
replicas: replica_count
template:
   metadata:
      name: appname
   spec:
      nodeSelector:
         resource-group:
      containers:
         - name: appname
            image:
            imagePullPolicy: Always
            ports:
            - containerPort: 3000
            env: -----------------------------> 1
               - name: ENV
                  valueFrom:
                     configMapKeyRef:
                        name: appname
                        key: tomcat-secrets

위의 코드에서 env 정의, 우리는 복제 컨트롤러에서 환경 변수로 비밀을 사용하고 있습니다.

볼륨 마운트로서의 비밀

apiVersion: v1
kind: pod
metadata:
   name: appname
spec:
   metadata:
      name: appname
   spec:
   volumes:
      - name: "secretstest"
         secret:
            secretName: tomcat-pass
   containers:
      - image: tomcat: 8.0
         name: awebserver
         volumeMounts:
            - mountPath: "/tmp/mysec"
            name: "secretstest"