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
เป็น Volume
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 นิยามเราใช้ความลับเป็นตัวแปรสภาพแวดล้อมในตัวควบคุมการจำลอง
ความลับเป็น Volume Mount
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"