Use self-signed SSL certificates (Kubernetes Deployments)
Follow this process only after running the devops.automations script during your initial deployment and each additional time you run the script (such as updating your Cinchy platform), as it wipes out all custom configurations you set up to use a self-signed certificate.
- Execute the following commands in any folder to generate the self-signed certificate:
openssl genrsa -des3 -out rootCA.key 4096
openssl req -x509 -new -nodes -key rootCA.key -sha256 -days 1024 -out rootCA.crt
openssl genrsa -out mydomain.com.key 2048
openssl req -new -sha256 -key mydomain.com.key -subj "/C=US/ST=CA/O=MyOrg, Inc./CN=mydomain.com " -out mydomain.com.csr
-
Create a YAML file located at cinchy.kubernetes/platform_components/base/self-signed-ssl-root-ca.yaml.
-
Add the following to the YAML file:
apiVersion: v1
kind: ConfigMap
metadata:
name: self-signed-ca-pemstore
data:
rootCA.crt: |
<rootCA.crt>
-
Add the self signed root CA cert file to the cinchy.kubernetes/environment_kustomizations/cinchy_nonprod/base folder.
-
Add the yaml code snippet to the cinchy.kubernetes/environment_kustomizations/cinchy_nonprod/base/kustomization.yaml file, changing the below files key value as per your root ca cert file name:
configMapGenerator:
- name: self-signed-ca-pemstore
behavior: replace
files:
- rootCA.crt
- Add the following line to the cinchy.kubernetes/platform_components/base/kustomization.yaml file
- self-signed-ssl-root-ca.yaml
- Add the below Deployment patchesJson6902 to each of your cinchy.kubernetes/environment_kustomizations/cinchy_nonprod/ENV_NAME/PLATFORM_COMPONENT_NAME/kustomization.yaml files, except
base
.
- Ensure that the rootCA.crt file name is matched with ConfigMap data, configMapGenerator files, and the patch subpath.
- op: add
path: /spec/template/spec/volumes/-
value:
configMap:
name: self-signed-ca-pemstore
name: self-signed-ca-pemstore
- op: add
path: /spec/template/spec/containers/0/volumeMounts/-
value:
mountPath: /etc/ssl/certs/rootCA.crt
name: self-signed-ca-pemstore
subPath: rootCA.crt
- Once the changes are deployed, verify the root CA cert is available on the pod under /etc/ssl/certs with below command. Make sure to input your own
POD_NAME
andNAMESPACE
:
kubectl exec -it POD_NAME -n NAMESPACE -- openssl x509 -in /etc/ssl/certs/rootCA.crt -text
For further reference material, see the linked article on self-signed certificates in Kubernetes.