Install the JFrog Crossplane Providers
Install Crossplane, create the registry pull Secret, and deploy the JFrog Crossplane providers.
Install Crossplane and the JFrog Crossplane providers on your Kubernetes cluster. At the end of this procedure, each provider you install reports INSTALLED=True and HEALTHY=True.
Prerequisites
Make sure you have the following before you start.
| Requirement | Details |
|---|---|
| Kubernetes | You need permission to install CustomResourceDefinitions (CRDs) and cluster role-based access control (RBAC). |
| Helm | Helm 3. |
| Crossplane | Version 2.0 or later. Validated with the Crossplane Helm chart 2.4.2. |
| JFrog Platform | SaaS or self-managed. The JFrog Platform must be reachable from the provider pods. |
| JFrog access token | The token needs permissions for the resources you manage. Use an admin token for platform-wide configuration. API keys and passwords aren't supported. You use the token when you configure credentials. |
| Registry credentials | Credentials for releases-authenticated-docker.jfrog.io. The registry is authenticated. Step 1: Create the Registry Pull Secret shows how to store these credentials in a Secret. |
Install Crossplane
Install Crossplane with Helm in the crossplane-system namespace:
helm repo add crossplane-stable https://charts.crossplane.io/stable && helm repo update
helm upgrade --install crossplane crossplane-stable/crossplane \
--namespace crossplane-system --create-namespace --version 2.4.2 --wait
kubectl -n crossplane-system get pods # crossplane and crossplane-rbac-manager RunningExpected result: The crossplane and crossplane-rbac-manager pods are Running.
Step 1: Create the Registry Pull Secret
All provider packages and images come from the authenticated registry releases-authenticated-docker.jfrog.io.
-
Create a pull Secret with the registry credentials issued to you by JFrog:
kubectl -n crossplane-system create secret docker-registry jfrog-registry \ --docker-server=releases-authenticated-docker.jfrog.io \ --docker-username="<your-registry-username>" \ --docker-password="<your-registry-password-or-token>"Replace the following:
<your-registry-username>: The registry username issued to you by JFrog.<your-registry-password-or-token>: The registry password or token issued to you by JFrog.
Step 2: Deploy the DeploymentRuntimeConfig and Providers
-
Apply the following DeploymentRuntimeConfig and Provider manifest:
apiVersion: pkg.crossplane.io/v1beta1 kind: DeploymentRuntimeConfig metadata: name: jfrog-providers spec: deploymentTemplate: spec: selector: {} # required template: spec: imagePullSecrets: - name: jfrog-registry containers: - name: package-runtime # must be exactly this name args: ["--poll=10m"] # optional flags, see "Provider flags" resources: requests: {cpu: 100m, memory: 256Mi} limits: {memory: 1Gi} --- apiVersion: pkg.crossplane.io/v1 kind: Provider metadata: name: provider-artifactory spec: package: releases-authenticated-docker.jfrog.io/jfrog/crossplane-provider-artifactory:v0.0.1 packagePullSecrets: [{name: jfrog-registry}] runtimeConfigRef: {name: jfrog-providers}The
argsfield takes optional provider flags. For the flags used to tune the providers, see Provider Flags in Tune the Providers. -
Repeat the Provider definition for provider-xray, provider-project, and provider-platform. Change the name and the image path for each provider:
releases-authenticated-docker.jfrog.io/jfrog/crossplane-provider-<xray|project|platform>:v0.0.1
Follow these guidelines when you deploy providers:
- Install only the providers you need. The providers operate independently.
- Always pin a specific version tag.
- Allocate more memory to provider-artifactory when you manage many objects. It includes over 430 CRDs.
Step 3: Check Provider Health
Run the following commands to check the providers:
kubectl get providers # INSTALLED=True, HEALTHY=True
kubectl -n crossplane-system get pods
kubectl wait --for=condition=Healthy provider --all --timeout=10mExpected result: Each provider reports INSTALLED=True and HEALTHY=True.
If a provider doesn't become healthy, see Troubleshoot the JFrog Crossplane Providers.
Next Steps
- To connect the providers to your JFrog Platform, see Configure Credentials for the JFrog Crossplane Providers.
Updated about 1 hour ago
