Kubernetes - Geheimnisse
Geheimnisse können als Kubernetes-Objekte definiert werden, mit denen vertrauliche Daten wie Benutzername und Kennwörter verschlüsselt gespeichert werden.
Es gibt mehrere Möglichkeiten, Geheimnisse in Kubernetes zu erstellen.
- Erstellen aus txt-Dateien.
- Erstellen aus Yaml-Datei.
Erstellen aus Textdatei
Um Geheimnisse aus einer Textdatei wie Benutzername und Passwort zu erstellen, müssen wir sie zuerst in einer txt-Datei speichern und den folgenden Befehl verwenden.
$ kubectl create secret generic tomcat-passwd –-from-file = ./username.txt –fromfile = ./.
password.txt
Erstellen aus Yaml-Datei
apiVersion: v1
kind: Secret
metadata:
name: tomcat-pass
type: Opaque
data:
password: <User Password>
username: <User Name>
Das Geheimnis schaffen
$ kubectl create –f Secret.yaml
secrets/tomcat-pass
Geheimnisse benutzen
Sobald wir die Geheimnisse erstellt haben, können sie in einem Pod oder im Replikationscontroller als - verwendet werden.
- Umgebungsvariable
- Volume
Als Umgebungsvariable
Um das Geheimnis als Umgebungsvariable zu verwenden, werden wir verwenden env unter dem Spezifikationsabschnitt der pod yaml-Datei.
env:
- name: SECRET_USERNAME
valueFrom:
secretKeyRef:
name: mysecret
key: tomcat-pass
Als Lautstärke
spec:
volumes:
- name: "secretstest"
secret:
secretName: tomcat-pass
containers:
- image: tomcat:7.0
name: awebserver
volumeMounts:
- mountPath: "/tmp/mysec"
name: "secretstest"
Geheime Konfiguration als Umgebungsvariable
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
Im obigen Code unter dem env Definition verwenden wir Geheimnisse als Umgebungsvariable im Replikationscontroller.
Geheimnisse als 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"