Issue and approve certificates with Venafi Control Plane
Learn how to configure Venafi Control Plane, cert-manager, approver-policy-enterprise, and venafi-enhanced-issuer so that application teams can help themselves to SSL certificates which comply with enterprise PKI policy.
Prerequisites
Kubernetes Cluster: You will need a Kubernetes cluster >=1.21 and you will need credentials with administrative privileges. You can use minikube or kind to quickly start a Kubernetes cluster on your laptop.
Helm: Helm is a package manager for Kubernetes which you will use to install the TLS Protect for Kubernetes software. Install it on your laptop by following the Helm Installation documentation.
TLS Protect for Kubernetes subscription: You will need to be a subscriber of the "TLS Protect for Kubernetes Enterprise +" tier to access the Docker images and Helm charts.
Create a jetstack-secure Namespace
It is recommended to install all the TLS Protect for Kubernetes components in a single namespace called jetstack-secure:
kubectl create ns jetstack-secure
Configure access to the enterprise registry
If jsctl is not yet installed, the following script will install it for you. More info can be found on the releases page.
curl -fsSL https://raw.githubusercontent.com/jetstack/jsctl/main/install.sh | sh
Make sure that you are logged in to jsctl:
jsctl auth login
Then, select an organization (you can list the organizations with jsctl organizations list):
jsctl config set organization <name>
Finally, configure the Docker registry credentials:
kubectl -n jetstack-secure apply -f <(jsctl registry auth output --format=secret)
š Your organization must be subscribed to the tier "TLS Protect for Kubernetes Enterprise +" in order to access the Docker registry. A permission error message will be shown if that is not the case.
š To know more about about how the above Docker configuration works, you can read more at Access to enterprise components.
Install cert-manager
Install cert-manager using the TLS Protect for Kubernetes images and Helm chart and disabling the default approver.
global:imagePullSecrets:- name: jse-gcr-credsinstallCRDs: trueextraArgs:- "--controllers=*,-certificaterequests-approver" # ā Disable cert-manager's built-in approverimage:repository: eu.gcr.io/jetstack-secure-enterprise/cert-manager-controlleracmesolver:image:repository: eu.gcr.io/jetstack-secure-enterprise/cert-manager-acmesolverwebhook:image:repository: eu.gcr.io/jetstack-secure-enterprise/cert-manager-webhookcainjector:image:repository: eu.gcr.io/jetstack-secure-enterprise/cert-manager-cainjectorstartupapicheck:image:repository: eu.gcr.io/jetstack-secure-enterprise/cert-manager-ctl
helm upgrade cert-manager oci://eu.gcr.io/jetstack-secure-enterprise/charts/cert-manager \--registry-config <(jsctl registry auth output --format=dockerconfig) \--install \--wait \--namespace jetstack-secure \--create-namespace \--values cert-manager.values.yaml \--version v1.12.1
Install approver-policy-enterprise
š approver-policy-enterprise.values.yaml
cert-manager-approver-policy:imagePullSecrets:- name: jse-gcr-credsapp:# ā Allow `approver-policy` to also sign CertificateReqeusts for `venafi-enhanced-issuer`:approveSignerNames:- "issuers.cert-manager.io/*"- "clusterissuers.cert-manager.io/*"- "venaficlusterissuers.jetstack.io/*"- "venafiissuers.jetstack.io/*"venafiConnection:include: true
helm upgrade approver-policy-enterprise oci://eu.gcr.io/jetstack-secure-enterprise/charts/approver-policy-enterprise \--registry-config <(jsctl registry auth output --format=dockerconfig) \--install \--wait \--namespace jetstack-secure \--values approver-policy-enterprise.values.yaml \--version v0.11.0
š” In Installing approver-policy documentation more information can be found.
Install venafi-enhanced-issuer
š venafi-enhanced-issuer.values.yaml
global:imagePullSecrets:- name: jse-gcr-credsvenafiConnection:# We already installed the VenafiConnection CRDs & RBAC alled when 'approver-policy-enterprise' (see above)include: false
helm upgrade venafi-enhanced-issuer oci://eu.gcr.io/jetstack-secure-enterprise/charts/venafi-enhanced-issuer \--registry-config <(jsctl registry auth output --format=dockerconfig) \--install \--wait \--namespace jetstack-secure \--values venafi-enhanced-issuer.values.yaml \--version v0.8.0
š” In Installing venafi-enhanced-issuer documentation more information can be found.