การใช้งาน Kubeseal เข้ารหัสข้อมูล Secrets File ด้วย Sealed Secrets ในกรณีที่ต้องการใช้ Secrets File ห้ามนำ File ขึ้น Git หรือ ส่งให้โดยไม่ได้ทำการป้องกันและเข้ารหัส a title ตัวอย่าง Secret ด้วย Base64 (ไม่ปลอดภัย) # secret-database.yaml
apiVersion : v1
data :
password : MTIzNA==
kind : Secret
metadata :
name : secret-database
namespace : production
Decode password ด้วย Base64 echo MTIzNA== | base64 -d
# result: 1234
ตัวอย่าง SealedSecret (ปลอดภัย) # seal-secret-database.yaml
apiVersion : bitnami.com/v1alpha1
kind : SealedSecret
metadata :
creationTimestamp : null
name : secret-database
namespace : production
spec :
encryptedData :
password : AgClC2kb/y5G3CrKHuVNAz7k7eH0u1sLxJlkf4jWrN9OoL8SNP4nqxT9xRafHGHURX3E/ux+qBySSLPdtazZm8EWoMUoUbDCM9+cGHcapUrc0VL7KGsGZxUyS3/foH7049TdLjW9+5oNUr9kNviGl9vhsHZHj/6BrANGUYCZS45SCwopQ3V87Y4O8KEnWYGruGKj1gHw92+9VrWwrI8AsA5K6jlu6fo1ZiOQPbY9C4DISZyt1G5vZbD7CUGtFIOQt9bXSDchdSKSphct5MBBuMlJYOLbyO3ujdWZAsTIEoVwV1hO386pN/qxAxS1XA1kgdqEEg1B8k9UYc3Sfj9R0AHApMHYXm+Xnr1uebWfewn0S+/lWbMwp3dvYsoTALTjgDtvD/iZ9Ct+az/TsVg8aEvbJ1gm/he0V/s+2NdVkD0D6SXCXEigYfb+yTenmlUW9NT8LaNdrTd7fwfnDueBQIpydhdbhpIP33xEtHzqkhaizHoXiqPOhXdTlx3z6UbG+xUHICR2FkS1haMXUOhHC5Y7OV+o86w0M2S3H031ipeA4hZGz0WoT0dFJGc5ISarfUKHpQhPz6H2fu8J3dvVIs33zZkkmiMKfQ5hNdV1vYhlCPd5NREcjsW/4Zfd3zxi6KVp1npRrCyHNO007/YCDef5i7MbM0MNDPfsVg6rvnAJcsYzIWgQsD8O+YAfNJ1DoD35k5/d
template :
metadata :
creationTimestamp : null
name : secret-database
namespace : production
คำสั่งการทำงานเพื่อสร้าง Sealed Secrets kubeseal -o yaml < secret-database.yaml > seal-secret-database.yaml
ขั้นตอนการติดตั้งและใช้งาน # Install
kubectl krew install neat
ติดตั้ง Kubeseal Client # Homebrew
brew install kubeseal
# Linux
# Fetch the latest sealed-secrets version using GitHub API
KUBESEAL_VERSION= $( curl -s https://api.github.com/repos/bitnami-labs/sealed-secrets/tags | jq -r '.[0].name' | cut -c 2-)
# Check if the version was fetched successfully
if [ -z " $KUBESEAL_VERSION" ] ; then
echo "Failed to fetch the latest KUBESEAL_VERSION"
exit 1
fi
curl -OL "https://github.com/bitnami-labs/sealed-secrets/releases/download/v ${ KUBESEAL_VERSION} /kubeseal- ${ KUBESEAL_VERSION} -linux-amd64.tar.gz"
tar -xvzf kubeseal-${ KUBESEAL_VERSION} -linux-amd64.tar.gz kubeseal
sudo install -m 755 kubeseal /usr/local/bin/kubeseal
การดึง public หรือ cert เพื่อเข้ารหัสข้อมูล kubeseal --fetch-cert > mycert.pem
kubeseal \
--controller-name= sealed-secrets-controller \
--controller-namespace= kube-system \
--fetch-cert > mycert.pem
การเข้ารหัสข้อมูลด้วย cert kubectl create secret generic secret-database \
--dry-run= client \
--from-literal= password= 1234 \
-o yaml
# หรือกำหนด namespace ด้วย
kubectl create secret generic secret-database \
-n production \
--dry-run= client \
--from-literal= password= 1234 \
-o yaml
# secret-database.yaml
apiVersion : v1
data :
password : MTIzNA==
kind : Secret
metadata :
name : secret-database
namespace : production
เข้ารหัสไฟล์ secret ด้วย Sealed Secrets kubeseal --cert mycert.pem \
-o yaml < secret-database.yaml > seal-secret-database.yaml
กรณีไม่กำหนด namespace ให้ใช้คำสั่ง –scope cluster-wide kubeseal --cert mycert.pem \
--scope cluster-wide \
-o yaml < secret-database.yaml > seal-secret-database.yaml