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"