Installation
TOC
IntroductionPrerequisitesPod Security Requirements for InstallationInstall Connectors OperatorInstall ConnectorsCoreInstall ConnectorsGit (Optional)Install ConnectorsGitLab (Optional)Install ConnectorsOCI (Optional)Install ConnectorsK8S (Optional)Install ConnectorsMaven (Optional)Install ConnectorsPyPI (Optional)Install ConnectorsNPM (Optional)Install ConnectorsHarbor (Optional)Install ConnectorsSonarQube (Optional)Uninstall ConnectorsCustom ConfigurationConnectorsCore ConfigurationConnectorsGit ConfigurationConnectorsOCI ConfigurationAdditional ConfigurationsHigh Availability DeploymentConfiguring ReplicasConnectorsCoreConnectorsGitConnectorsOCIConnectorsMavenConnectorsHarborComponents Without WorkloadsBuilt-in Pod Anti-AffinityCustomizing Affinity RulesTroubleshootingconnectors-csi is not readyIntroduction
The Connectors system has a modular architecture with the following components:
- Connectors Operator: The central management component that handles the deployment and lifecycle of other connector components
- ConnectorsCore: Required core component that provides the foundation for all connector types
- ConnectorsGit: Optional component that adds support for Git services (GitHub, GitLab, etc.)
- ConnectorsGitLab: Optional component that adds support for GitLab-specific features (GitLab CLI, enhanced authentication)
- ConnectorsOCI: Optional component that adds support for container registries (Harbor, Distribution, etc.)
- ConnectorsK8S: Optional component that adds support for Kubernetes clusters
- ConnectorsMaven: Optional component that adds support for Maven registries (e.g., Maven Central, or Maven repositories hosted on Sonatype Nexus).
- ConnectorsPyPI: Optional component that adds support for Python package registries (e.g., PyPI, or Python repositories hosted on Sonatype Nexus).
- ConnectorsNPM: Optional component that adds support for Node.js package registries (e.g., npm, or Node.js repositories hosted on Sonatype Nexus).
- ConnectorsHarbor: Optional component that adds support for Harbor container registries.
- ConnectorsSonarQube: Optional component that adds support for SonarQube and SonarCloud platforms for code quality analysis. This document provides instructions for installing and configuring the Connectors system.
Prerequisites
Before installing, ensure you have:
- A kubernetes cluster
- A kubectl cli configured to communicate with your cluster
- Admin permissions on the cluster
- Connectors Operator is
Readyon ACP Operator Hub
Pod Security Requirements for Installation
Kubernetes enforces Pod Security Standards (PSS) at the namespace level. The Connectors system consists of components with different privilege requirements:
Note: If the namespace is configured with an insufficient policy (e.g., restricted or baseline for CSI components), the CSI driver will fail to start due to blocked privileged operations. Conversely, applying privileged where not needed broadens the namespace's attack surface.
Install Connectors Operator
First, install the Connectors Operator which manages the lifecycle of all other components.
-
Create a namespace for the operator:
-
Apply the operator subscription YAML:
-
Verify the operator is running:
You should see the connectors-operator pod running:
-
Verify that the Custom Resource Definitions (CRDs) have been created:
You should see CRDs including:
Install ConnectorsCore
After the operator is running, install the required ConnectorsCore component:
-
Create a namespace for connector components (if not already created):
-
Create the ConnectorsCore custom resource:
-
Monitor the deployment progress:
-
Wait until the status shows that ConnectorsCore is ready:
-
Verify that the core pods are running:
You should see core components including:
-
Verify that the CRDs required for connector functionality are installed:
You should see:
Install ConnectorsGit (Optional)
To add support for Git services like GitHub, GitLab, etc., install the ConnectorsGit component:
-
Create the ConnectorsGit custom resource:
-
Monitor the deployment progress:
-
Wait until the status shows that ConnectorsGit is ready:
-
Verify that the Git plugin is running:
You should see:
-
Verify that the Git ConnectorClass has been created:
You should see:
Install ConnectorsGitLab (Optional)
To add support for GitLab-specific features (GitLab CLI, enhanced authentication), install the ConnectorsGitLab component:
-
Create the ConnectorsGitLab custom resource:
-
Monitor the deployment progress:
-
Wait until the status shows that ConnectorsGitLab is ready:
-
Verify that the GitLab ConnectorClass has been created:
You should see:
Install ConnectorsOCI (Optional)
To add support for container registries, like Harbor, Distribution, etc., install the ConnectorsOCI component:
-
Create the ConnectorsOCI custom resource:
ClusterIP Expose:
NodePort Expose:
Ingress Expose:
-
Monitor the deployment progress:
-
Wait until the status shows that ConnectorsOCI is ready:
-
Verify that the OCI plugin is running:
-
Verify that the OCI ConnectorClass has been created:
Install ConnectorsK8S (Optional)
To add support for integration with Kubernetes clusters, install the ConnectorsK8S component:
-
Create the ConnectorsK8S custom resource:
-
Monitor the deployment progress:
-
Wait until the status shows that ConnectorsOCI is ready:
-
Verify that the Kubernetes ConnectorClass is ready:
Install ConnectorsMaven (Optional)
To add support for integration with Maven registries, install the ConnectorsMaven component:
-
Create the ConnectorsMaven custom resource:
-
Monitor the deployment progress:
-
Wait until the status shows that ConnectorsMaven is ready:
-
Verify that the Kubernetes ConnectorClass is ready:
Install ConnectorsPyPI (Optional)
To add support for integration with PyPI registries, install the ConnectorsPyPI component:
-
Create the ConnectorsPyPI custom resource:
-
Monitor the deployment progress:
-
Verify that the Kubernetes ConnectorClass is ready:
Install ConnectorsNPM (Optional)
To add support for integration with NPM registries, install the ConnectorsNPM component:
-
Create the ConnectorsNPM custom resource:
-
Monitor the deployment progress:
-
Verify that the NPM ConnectorClass is ready:
Install ConnectorsHarbor (Optional)
To add support for integration with Harbor registries, install the ConnectorsHarbor component:
-
Create the ConnectorsHarbor custom resource:
-
Monitor the deployment progress:
-
Verify that the Harbor ConnectorClass is ready:
Install ConnectorsSonarQube (Optional)
To add support for integration with SonarQube and SonarCloud platforms, install the ConnectorsSonarQube component:
-
Create the ConnectorsSonarQube custom resource:
-
Monitor the deployment progress:
-
Verify that the SonarQube ConnectorClass is ready:
Uninstall Connectors
To uninstall the Connectors system, remove components in the reverse order of installation.
-
Delete the optional components first (if installed):
-
Delete the core component:
-
Delete the operator:
-
Delete the namespaces:
Custom Configuration
You can customize the deployment of connector components to better suit your environment. All connector components share a similar configuration structure.
ConnectorsCore Configuration
When creating the ConnectorsCore resource, you can specify custom configuration:
ConnectorsGit Configuration
Custom configuration for the Git plugin:
ConnectorsOCI Configuration
Custom configuration for the OCI plugin:
Additional Configurations
For advanced deployments, you can also specify:
High Availability Deployment
For production environments, it is recommended to deploy the Connectors system in a high availability (HA) configuration to ensure service continuity and fault tolerance.
Configuring Replicas
You can increase the number of replicas for each workload to achieve high availability. This is done through the workloads field in the component spec. For production environments, we recommend configuring at least 2 replicas for each workload to ensure service continuity during node failures or rolling updates.
Below are specific examples for each major connector component:
ConnectorsCore
ConnectorsCore includes three main workloads: API server, controller manager, and proxy. For high availability, configure all three with multiple replicas:
After a period of time, all pods of the connectors-core component have a replica count of 2, except for connectors-csi.
ConnectorsGit
ConnectorsGit runs a single plugin deployment for Git Server integration:
After a period of time, all pods of the connectors-git component have a replica count of 2.
ConnectorsOCI
ConnectorsOCI runs a single plugin deployment that handles OCI registry integration:
After a period of time, all pods of the connectors-oci component have a replica count of 2.
ConnectorsMaven
ConnectorsMaven runs a single plugin deployment for Maven registry integration:
After a period of time, all pods of the connectors-maven component have a replica count of 2.
ConnectorsHarbor
ConnectorsHarbor runs a single plugin deployment for Harbor-specific features:
After a period of time, all pods of the connectors-harbor component have a replica count of 2.
Components Without Workloads
The other connector components do not have Deployment workloads and therefore do not require replica configuration.
Built-in Pod Anti-Affinity
The system includes built-in pod anti-affinity rules to ensure that replicas are distributed across different nodes. By default, the system uses preferredDuringSchedulingIgnoredDuringExecution with a weight of 100, which means the scheduler will try to place pods on different nodes when possible, but will still schedule them on the same node if no other options are available.
This default configuration ensures:
- Pods are spread across different nodes when possible
- Deployment remains schedulable even if the cluster has limited nodes
- Automatic failover capability when a node becomes unavailable
Customizing Affinity Rules
If the default affinity rules do not meet your requirements, you can override them through the workloads configuration. The template.spec.affinity field allows you to specify custom affinity rules.
For multi-zone clusters, you can configure zone-aware scheduling to spread pods across availability zones. The following example uses requiredDuringSchedulingIgnoredDuringExecution to enforce zone-level distribution, combined with preferredDuringSchedulingIgnoredDuringExecution to prefer node-level distribution within each zone:
This configuration ensures:
- Pods are strictly distributed across different availability zones (hard requirement)
- Within the same zone, pods are preferably scheduled on different nodes (soft requirement)
- Provides resilience against both zone-level and node-level failures
Troubleshooting
connectors-csi is not ready
If daemonset/connectors-csi is not ready, check the events of the connectors-csi pod.
A common error looks like:
This means the namespace's Pod Security level is too restrictive for the CSI driver.
Fix
- Ensure the namespace is configured with the
privilegedPod Security level. - Update the namespace with the correct labels.
- Restart the
connectors-csiDaemonSet.
For details, see Pod Security Requirements for Installation.