Skip to content

Instantly share code, notes, and snippets.

@timoyuen
Forked from trusch/k8s-gen-certs.sh
Created February 22, 2020 04:07
Show Gist options
  • Save timoyuen/e3c548cfcfbf2079b16f54ee94f450cc to your computer and use it in GitHub Desktop.
Save timoyuen/e3c548cfcfbf2079b16f54ee94f450cc to your computer and use it in GitHub Desktop.
#!/bin/bash
NAMESPACE=usecaseapp
SERVICE=usecaseapp
cat <<EOF | cfssl genkey - | cfssljson -bare server
{
"hosts": [
"${SERVICE}.${NAMESPACE}.svc.cluster.local"
],
"CN": "${SERVICE}.${NAMESPACE}.svc.cluster.local",
"key": {
"algo": "ecdsa",
"size": 256
}
}
EOF
cat <<EOF | kubectl -n ${NAMESPACE} create -f -
apiVersion: certificates.k8s.io/v1beta1
kind: CertificateSigningRequest
metadata:
name: ${SERVICE}.${NAMESPACE}
spec:
groups:
- system:authenticated
request: $(cat server.csr | base64 | tr -d '\n')
usages:
- digital signature
- key encipherment
- server auth
EOF
kubectl -n ${NAMESPACE} certificate approve ${SERVICE}.${NAMESPACE}
kubectl -n ${NAMESPACE} get csr ${SERVICE}.${NAMESPACE} -o jsonpath='{.status.certificate}' \
| base64 --decode > server.crt
kubectl -n ${NAMESPACE} create secret generic ${SERVICE}-keys --from-file=cert.pem=server.crt --from-file=key.pem=server-key.pem
exit $?
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment