Deploying Workload Identity Manager on Kubernetes with Helm using OIDC¶
In this tutorial, you'll use Helm to deploy Workload Identity Manager on Kubernetes and connect it to Certificate Manager - SaaS, from which it will bootstrap its security settings.
You'll authenticate using Workload Identity Federation (OIDC). Certificate Manager - SaaS validates Kubernetes service account tokens with the cluster's public key—the private key never leaves the Kubernetes control plane.
Prerequisites¶
To deploy Workload Identity Manager, you'll need to complete Certificate Manager - SaaS setup, get the deployment details from your platform administrator, and prepare your own environment.
Complete Certificate Manager - SaaS setup¶
Before deploying Workload Identity Manager, your platform administrator must complete Step 1 through Step 6 in the Getting started guide.
This includes creating a CA account and subordinate CA, then adding a Certificate Manager - SaaS policy, team, and configuration. Finally, it requires creating a service account with Workload Identity Federation authentication.
Get deployment information¶
From your platform administrator, get the following:
- Regional API URL: The Certificate Manager - SaaS REST API URL for your region, for example
https://api.venafi.cloud. - Tenant ID: The
tenantIDfor the Certificate Manager - SaaS tenant, located in Settings > License. - Naming pattern: The name of the instance; embedded in the subordinate CA certificate's common name. This pattern distinguishes multiple Workload Identity Manager instances.
Prepare your environment¶
To install Workload Identity Manager, you must have:
- Kubernetes cluster: A cluster with an exposed endpoint for OIDC discovery, for use by unauthenticated clients.
- Network configuration: A firewall configuration allowing egress to the Certificate Manager - SaaS REST API, as described in network requirements.
- Required tools:
helm,kubectl, andcmctlon your local machine. - cert-manager: cert-manager installed in your cluster, since Workload Identity Manager operates as a cert-manager issuer and interacts with its custom resources.
Step 1: Deploy Workload Identity Manager with a Helm chart¶
-
Review and agree to the CyberArk End User License Agreement.
-
Create a Kubernetes namespace called
venafi.kubectl create ns venafi -
Check if the Connection for CyberArk Certificate Manager CRD is deployed. Workload Identity Manager uses this custom resource to authenticate with Certificate Manager - SaaS via OIDC. Other Venafi components like Enterprise Issuer for CyberArk Certificate Manager or Discovery Agent may have already installed it.
kubectl get crd venaficonnections.jetstack.ioIf the CRD is deployed, details appear. If not deployed, an error indicates the CRD doesn't exist.
-
If the CRD is not deployed, install it:
helm install venafi-connection oci://registry.venafi.cloud/charts/venafi-connection \ --namespace venafi \ --version v0.6.0 -
Create a
firefly.values.yamlfile.This example includes the minimum configuration. For more options see Local configuration reference.
firefly.values.yamlacceptTerms: true deployment: config: bootstrap: vaas: csr: instanceNaming: Instance1 Location1 # (1)! url: https://api.venafi.cloud # (2)! connection: create: true # (3)! name: connection-1 serviceAccountToken: # (4)! enabled: true tenantID: your-tenant-id # (5)! controller: enabled: true # (6)! certManager: caRootChainPopulation: false # (7)! checkApproval: true # (8)!- Naming pattern for the Workload Identity Manager instances.
- The Certificate Manager - SaaS regional API URL.
- If set to true, a Connection resource is created with the specified name and authentication method.
- OIDC authentication type.
- Get the
tenantIDfrom your platform administrator. - Set to
falseif you don't want Workload Identity Manager to act as a Kubernetes controller and process cert-manager certificate resources. - Set to
trueto automatically populate thestatus.cafield with the CA information. - Set to
falseif you want Workload Identity Manager to process CertificateRequest resources without waiting for approval.
-
Install the Helm chart using Standard (STS), Long-term support (LTS), or FIPS. The
--versionflag is required.About the release name
prodis the Helm release name. Change it to match your environment, for examplestagingordev.helm upgrade prod oci://private-registry.venafi.cloud/charts/firefly \ --install \ --create-namespace \ --namespace venafi \ --values firefly.values.yaml \ --version v1.11.0 \ --set deployment.image=private-registry.venafi.cloud/firefly/firefly:v1.11.0helm upgrade prod oci://private-registry.venafi.cloud/charts/firefly \ --install \ --create-namespace \ --namespace venafi \ --values firefly.values.yaml \ --version v1.11.0 \ --set deployment.image=private-registry.venafi.cloud/firefly-ent/firefly:v1.11.0 \ --set deployment.imageDigest=sha256:79e4e0d5fd68cc2f255fdc71c35de7ad0a7145444477d32571edd2942a5a6ef3helm upgrade prod oci://private-registry.venafi.cloud/charts/firefly \ --install \ --create-namespace \ --namespace venafi \ --values firefly.values.yaml \ --version v1.11.0 \ --set deployment.image=private-registry.venafi.cloud/firefly-ent/firefly-fips:v1.11.0 \ --set deployment.imageDigest=sha256:6187d6025e87536724cc519ed871f33ae83467b0119aa5d2bb94850b915b0d7f
Step 2: Verify the installation¶
Verify the installation using cmctl.
-
Create
certificate.yamlcontaining a test certificate:certificate.yamlkind: Certificate apiVersion: cert-manager.io/v1 metadata: annotations: firefly.venafi.com/policy-name: Policy # (1)! spec: commonName: example.com # (2)! issuerRef: name: firefly kind: Issuer group: firefly.venafi.com- Must match the policy name defined in the security configuration.
- Must comply with the
subject.commonName.allowedValuesof the policy.
-
Use
cmctlto create a cert-manager CertificateRequest and wait for the signed certificate:cmctl create certificaterequest my-cr \ --from-certificate-file certificate.yaml \ --fetch-certificateIf successful,
cmctlprints the names of a.keyand a.crtfile. -
Confirm the signed X.509 certificate with OpenSSL:
openssl x509 -in my-cr.crt -noout -text
What's next?¶
Workload Identity Manager is now installed and configured to issue and manage certificates in your cluster using Certificate Manager - SaaS policies. Your organization's root CAs sign and trust all certificates.
Review certificates on the Issuer Certificates dashboard.