How do I get the K8s `ca.crt` and `ca.key` running K8s on a service provider(GKE)

1/10/2020

Note: I am not running locally on Minikube or something, but GKE - but could be any provider.

I want to be able to create users/contexts in K8s with openssl:

openssl x509 -req -in juan.csr -CA CA_LOCATION/ca.crt -CAKey CA_LOCATION/ca.key -CAcreateserial -out juan.crt -days 500

How do I get the K8s ca.crt and ca.key? - I found this for ca.crt, but is this the way and still missing the ca.key?

kubectl get secret -o jsonpath="{.items[?(@.type==\"kubernetes.io/service-account-token\")].data['ca\.crt']}" | base64 --decode

And, other way than logging into master node /etc/kubernetes/pki/.

-- Chris G.
google-kubernetes-engine
kubernetes

1 Answer

1/10/2020

I would suggest viewing the following documentation on how to generate a ca.key and ca.crt for your kubernetes cluster. Please keep in mind this is not an official google document, however this may help you achieve what you are looking for.

Here are the commands found in the document.

Generate ca.key: openssl genrsa -out ca.key 2048

Generate ca.cert: openssl req -x509 -new -nodes -key ca.key -subj "/CN=${MASTER_IP}" -days 10000 -out ca.crt

EDIT

I found 2 unsupported documents [1] [2] on generating a certificate and key with openssl, it should be applicable with kubernetes.

-- Gustavo
Source: StackOverflow