{% hint style="info" %} The self-signed certificates generated in this section are intended for testing and development. In production environments, it is strongly recommended to use certificates issued by a trusted Certificate Authority (CA) for enhanced security. {% endhint %}
Begin by generating the necessary SSL certificates using OpenSSL:
openssl genrsa -des3 -passout pass:password -out ./client_tls.key
openssl rsa -in ./client_tls.key -passin pass:password -out ./client_tls.key
openssl req -new -key ./client_tls.key -out ./client_tls.csr -subj "/C=AU/ST=NSW/L=DY/O=MyOrg/OU=Dev/CN=postgres"
openssl x509 -req -in ./client_tls.csr -CA ./ca.crt -CAkey ./ca.key -out ./client_tls.crt -CAcreateserial
Next, create a Kubernetes secret that holds the SSL certificates:
kubectl create secret generic tls-secret \
--from-file=client_tls.crt \
--from-file=client_tls.key \
--from-file=ca.crt -n memphis
Create a values file named metadata_tls.yaml
with the following content:
metadata:
pgpool:
tls:
enabled: true
autoGenerated: false
preferServerCiphers: true
certificatesSecret: "tls-secret"
certFilename: "client_tls.crt"
certKeyFilename: "client_tls.key"
certCAFilename: "ca.crt"
Deploy Memphis with the newly created values file using Helm:
helm repo add memphis https://k8s.memphis.dev/charts/ --force-update
helm install -f metadata_tls.yaml memphis memphis/memphis --create-namespace --namespace memphis --wait