V Kubernetes můžeme ukládat a spravovat citlivé informace, jako jsou hesla, tokeny OAuth a klíče ssh pomocí Kubernetes Secrets. V Kubernetes lze tajné klíče definovat jako objekty Kubernetes. Je bezpečnější ukládat přihlašovací údaje v Kubernetes Secrets než v Pods nebo v Docker Images.
V Kubernetes existuje několik způsobů generování tajných klíčů:
- Vytváření z textového souboru
- Vytváření ze souboru yml
Jakmile budou tajemství k dispozici, lze je použít následujícími způsoby:
- Proměnná prostředí
- Hlasitost
- Použití pole imagePullSecrets
Chcete-li se dozvědět více o Kubernetes Secrets, klikněte sem.
V tomto článku vytvoříme tajné klíče pomocí souboru .yml a zpřístupníme je v podu jako proměnné prostředí.
Předpoklady
- Cluster Kubernetes s alespoň 1 pracovním uzlem.
Pokud se chcete naučit vytvářet cluster Kubernetes, klikněte sem. Tato příručka vám pomůže vytvořit cluster Kubernetes s 1 hlavním a 2 uzly na instancích AWS Ubuntu 18l04 EC2.
Co uděláme
- Vytvořte tajemství
Vytvořit tajemství
Chcete-li vytvořit nová tajemství v Kubernetes, nejprve je zašifrujte, jak je uvedeno níže, pomocí metody kódování base64.
Zde
uživatelské jméno=rahul a heslo=howtoforge123.
echo -n "rahul" | base64
echo -n "howtoforge123" | base64
Na výše uvedeném snímku obrazovky je vidět, že přihlašovací údaje byly zašifrovány.
Vytvořte tajný definiční soubor následovně, tento soubor obsahuje hodnotu base64 přihlašovacích údajů vygenerovaných ve výše uvedeném kroku.
vim my-secret.yml
apiVersion: v1 kind: Secret metadata: name: mysecret type: Opaque data: username: cmFodWw= password: aG93dG9mb3JnZTEyMw==
Nyní vytvoříme modul, ve kterém budou tato tajemství a budou přístupná.
Vytvořte nový soubor, který bude obsahovat definici podu následovně.
vim my-pod.yaml
apiVersion: v1 kind: Pod metadata: name: secrets-in-pod spec: containers: - name: my-container image: redis env: - name: SECRET_USERNAME valueFrom: secretKeyRef: name: mysecret key: username - name: SECRET_PASSWORD valueFrom: secretKeyRef: name: mysecret key: password restartPolicy: Never
Vytvořme tajné klíče pomocí následujícího příkazu.
kubectl create -f my-secret.yml
kubectl získat tajemství | grep mysecret
Nyní vytvořte pod pomocí následující definice podu, abyste získali přístup k dříve vytvořeným tajemstvím.
kubectl create -f my-pod.yml
kubectl získat pods | grep secrets-in-pod
Přihlaste se do modulu pomocí následujícího příkazu.
kubectl získat lusky | grep secrets-in-pod
kubectl exec -it secrets-in-pod /bin/bash
Jakmile se přihlásíte do modulu, můžete k tajným informacím přistupovat jako proměnná prostředí pomocí následujícího příkazu.
echo $SECRET_USERNAME
echo $SECRET_PASSWORD
Na výše uvedeném snímku obrazovky je vidět, že tajná jsou dostupná jako proměnné prostředí.
Chcete-li zobrazit podrobnosti o tajném objektu, spusťte následující příkaz.
kubectl získat tajemství | grep mysecret
kubectl get secret mysecret -o yaml
Tyto sekrety lze také dekódovat z příkazového řádku pomocí následujících příkazů.
kubectl get secrets/mysecret --template={{.data.username}} | base64 -d
kubectl get secrets/mysecret --template={{.data.password}} | base64 -d
Na výše uvedeném snímku obrazovky je vidět, že přihlašovací údaje jsou extrahovány z Tajemství a dešifrovány na příkazovém řádku pomocí base64.
Závěr
V tomto článku jsme viděli kroky k vytvoření a uložení tajných klíčů v Kubernetes ze souboru .yml. Pokusili jsme se získat přístup k těmto tajemstvím v Pod jako proměnné prostředí. Také jsme viděli příkaz k dešifrování tajných klíčů na příkazovém řádku.