Venafi Control Plane integrationsPreview
TLS Protect for Kubernetes offers a number of components and resources for a Venafi TLS Protect user:
-
venafi-enhanced-issuer to issue certificates using TLS Protect
-
approver-policy-enterprise to approve certificates using TLS Protect
These components and resources can be installed using a single TLS Protect for Kubernetes Operator Installation resource
Configure access to the enterprise registry
đ Follow the instructions in Access to enterprise components to enable access to the artifacts required for this component. Use jetstack-secure as the namespace.
For the example below, we assume you created the following Kubernetes Secret: namespace: jetstack-secure name: jse-gcr-creds
Configure a VenafiConnection using an Installation resource
Read venafi-connection documentation to learn more about how to configure this VenafiConnection. Fill in the required details in the Installation spec below
apiVersion: operator.jetstack.io/v1alpha1kind: Installationmetadata:name: venafi-setupspec:certManager: {}approverPolicyEnterprise: {}venafiEnhancedIssuer: {}images:secret: jse-gcr-creds # see https://platform.jetstack.io/documentation/configuration/js-operator/quickstartvenafiConnections:- name: tpp-connection<VenafiConnection spec https://platform.jetstack.io/documentation/reference/venafi-connection/kubernetes-api#venaficonnectionspec>...
Create an example Installation with a Venafi issuer and a Venafi policy
Read venafi-enhanced-issuer documentation to learn more about how to configure this issuer. Read approver-policy-enterprise documentation to learn more about how to configure this policy. Fill in the required details in the below Installation spec and apply
apiVersion: operator.jetstack.io/v1alpha1kind: Installationmetadata:name: venafi-installationspec:certManager: {}approverPolicyEnterprise: {}venafiEnhancedIssuer: {}images:secret: jse-gcr-creds # reference to the existing secret created in the previous step. This will be applied as image pull secret for all component images.venafiConnections:- name: venafi-connection<VenafiConnection spec https://platform.jetstack.io/documentation/reference/venafi-connection/kubernetes-api#venaficonnectionspec>issuers:- name: web-issuerclusterScope: truevenafiEnhancedIssuer:venafiConnectionName: venafi-connectionzone: "application-1\\web"policy:subjects:certManager: trueallowed:commonName:value: "*"dnsNames:values: [ "*" ]plugins:venafi:venafiConnectionName: venafi-connectionzone: "application-1\\web"
For this Installation TLS Protect for Kubernetes Operator will create:
-
cert-manager installation in jetstack-secure Namespace with the default approver disabled
-
approver-policy-enterprise installation in jetstack-secure Namespace
-
venafi-enhanced-issuer installation in jetstack-secure Namespace
-
A VenafiClusterIssuer web-issuer
-
a default, 'all allowed' CertificateRequestPolicy for the issuer
-
RBAC that allows cert-manager ServiceAccount to use the created CertificateRequestPolicy
-
Depending on web-issuer configuration, if additional RBAC is required for venafi-enhanced-issuer to read secrets or use token request API, the operator will create this RBAC. See venafi-enhanced-issuer docs for more detail.
âšī¸ You can mount one or more extra CA certificates into the approver-policy-enterprise Pod by storing the PEM encoded ca.crt file in a ConfigMap in the jetstack-secure namespace, and supplying the name of the ConfigMap via the Installation.spec.approverPolicyEnterprise.caSources field.
You will need to do this if your TPP server uses a serving certificate signed by an internal certificate authority (CA). For example:
approverPolicyEnterprise:caSources:- name: ca-cert-tppkind: ConfigMap
đ Read more about Configuring Custom CA Certificates for approver-policy-enterprise.
Wait for the Installation to become ready:
kubectl wait --for=condition=Ready installation/venafi-installation
This should not take more than a few minutes.
Observe information about the created components and resources on Installation spec:
kubectl get installation venafi-installation -ojsonpath='{range .status.conditions[*]}{"type:"}{.type}{" status:"}{.status}{" reason:"}{.reason}{" message:"}{.message}{"\n"}{end}'
Observe created VenafiClusterIssuer and CertificateRequestPolicy:
kubectl get venaficlusterissuer,certificaterequestpolicy -oyaml
Create some Certificate resources:
kubectl apply -f - <<EOFapiVersion: cert-manager.io/v1kind: Certificatemetadata:name: venafi-certificatespec:secretName: venafi-certificatecommonName: example.comissuerRef:name: web-issuerkind: VenafiClusterIssuergroup: jetstack.ioEOF
Wait for the certificate to get issued:
kubectl wait --for condition=Ready=True certificate/venafi-certificate