Installation
TOC
Introduction
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, Docker Registry, 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).
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
Ready on ACP Operator Hub
Install Connectors Operator
First, install the Connectors Operator which manages the lifecycle of all other components.
-
Create a namespace for the operator:
kubectl create namespace connectors-operator
-
Apply the operator subscription YAML:
cat <<EOF | kubectl apply -f -
apiVersion: operators.coreos.com/v1alpha1
kind: Subscription
metadata:
annotations:
cpaas.io/target-namespaces: ""
labels:
catalog: platform
name: connectors-operator
namespace: connectors-operator
spec:
channel: alpha
installPlanApproval: Manual
name: connectors-operator
source: platform
sourceNamespace: cpaas-system
EOF
kubectl wait --for=condition=InstallPlanPending subscription.operators.coreos.com/connectors-operator -n connectors-operator
installplanname=$(kubectl get subscription.operators.coreos.com -n connectors-operator connectors-operator -ojsonpath='{.status.installPlanRef.name}')
kubectl patch installplan -n connectors-operator ${installplanname} --type='merge' -p='{"spec":{"approved":true}}'
-
Verify the operator is running:
kubectl get pods -n connectors-operator
You should see the connectors-operator pod running:
NAME READY STATUS RESTARTS AGE
connectors-operator-controller-manager-xxxxxx-xxxxx 2/2 Running 0 1m
-
Verify that the Custom Resource Definitions (CRDs) have been created:
kubectl get crds | grep connectors
You should see CRDs including:
connectorscore.operator.connectors.alauda.io
connectorsgit.operator.connectors.alauda.io
connectorsoci.operator.connectors.alauda.io
Install ConnectorsCore
After the operator is running, install the required ConnectorsCore component:
-
Create a namespace for connector components (if not already created):
kubectl create namespace connectors-system
-
Create the ConnectorsCore custom resource:
cat <<EOF | kubectl apply -f -
apiVersion: operator.connectors.alauda.io/v1alpha1
kind: ConnectorsCore
metadata:
name: connectors-core
namespace: connectors-system
spec: {}
EOF
-
Monitor the deployment progress:
kubectl get connectorscore -n connectors-system
-
Wait until the status shows that ConnectorsCore is ready:
kubectl wait --for=condition=Ready connectorscore/connectors-core -n connectors-system --timeout=300s
-
Verify that the core pods are running:
kubectl get pods -n connectors-system
You should see core components including:
NAME READY STATUS RESTARTS AGE
connectors-api-xxxxxx 1/1 Running 0 2m
connectors-controller-manager-xxxxxx 1/1 Running 0 2m
connectors-proxy-xxxxxx 1/1 Running 0 2m
-
Verify that the CRDs required for connector functionality are installed:
kubectl get crds | grep connectors.alauda.io
You should see:
connectorclasses.connectors.alauda.io
connectors.connectors.alauda.io
Install ConnectorsGit (Optional)
To add support for Git services like GitHub, GitLab, etc., install the ConnectorsGit component:
-
Create the ConnectorsGit custom resource:
cat <<EOF | kubectl apply -f -
apiVersion: operator.connectors.alauda.io/v1alpha1
kind: ConnectorsGit
metadata:
name: connectors-git
namespace: connectors-system
spec: {}
EOF
-
Monitor the deployment progress:
kubectl get connectorsgit -n connectors-system
-
Wait until the status shows that ConnectorsGit is ready:
kubectl wait --for=condition=Ready connectorsgit/connectors-git -n connectors-system --timeout=300s
-
Verify that the Git plugin is running:
kubectl get pods -n connectors-system | grep git
You should see:
NAME READY STATUS RESTARTS AGE
connectors-git-plugin-xxxxxx 1/1 Running 0 1m
-
Verify that the Git ConnectorClass has been created:
kubectl get connectorclass git
You should see:
NAME READY AGE
git True 1m
Install ConnectorsGitLab (Optional)
To add support for GitLab-specific features (GitLab CLI, enhanced authentication), install the ConnectorsGitLab component:
-
Create the ConnectorsGitLab custom resource:
cat <<EOF | kubectl apply -f -
apiVersion: operator.connectors.alauda.io/v1alpha1
kind: ConnectorsGitLab
metadata:
name: connectors-gitlab
namespace: connectors-system
spec: {}
EOF
-
Monitor the deployment progress:
kubectl get connectorsgitlab -n connectors-system
-
Wait until the status shows that ConnectorsGitLab is ready:
kubectl wait --for=condition=Ready connectorsgitlab/connectors-gitlab -n connectors-system --timeout=300s
-
Verify that the GitLab ConnectorClass has been created:
kubectl get connectorclass gitlab
You should see:
NAME READY AGE
gitlab True 1m
Install ConnectorsOCI (Optional)
To add support for container registries, like Harbor, Docker Registry, etc., install the ConnectorsOCI component:
-
Create the ConnectorsOCI custom resource:
ClusterIP Expose:
cat <<EOF | kubectl apply -f -
apiVersion: operator.connectors.alauda.io/v1alpha1
kind: ConnectorsOCI
metadata:
name: connectors-oci
namespace: connectors-system
spec: {}
EOF
NodePort Expose:
cat <<EOF | kubectl apply -f -
apiVersion: operator.connectors.alauda.io/v1alpha1
kind: ConnectorsOCI
metadata:
name: connectors-oci
namespace: connectors-system
spec:
expose:
type: NodePort
domain: 192.168.1.123
nodePort:
port: 30000
EOF
Ingress Expose:
cat <<EOF | kubectl apply -f -
apiVersion: operator.connectors.alauda.io/v1alpha1
kind: ConnectorsOCI
metadata:
name: connectors-oci
namespace: connectors-system
spec:
expose:
type: Ingress
domain: connectors.proxy.com
-
Monitor the deployment progress:
kubectl get connectorsoci -n connectors-system
-
Wait until the status shows that ConnectorsOCI is ready:
kubectl wait --for=condition=Ready connectorsoci/connectors-oci -n connectors-system --timeout=300s
-
Verify that the OCI plugin is running:
kubectl get pods -n connectors-system | grep oci
-
Verify that the OCI ConnectorClass has been created:
kubectl get connectorclass oci
Install ConnectorsK8S (Optional)
To add support for integration with Kubernetes clusters, install the ConnectorsK8S component:
-
Create the ConnectorsK8S custom resource:
cat <<EOF | kubectl apply -f -
apiVersion: operator.connectors.alauda.io/v1alpha1
kind: ConnectorsK8S
metadata:
name: connectors-k8s
namespace: connectors-system
spec: {}
EOF
-
Monitor the deployment progress:
kubectl get connectorsk8s -n connectors-system
-
Wait until the status shows that ConnectorsOCI is ready:
kubectl wait --for=condition=Ready connectorsk8s/connectors-k8s -n connectors-system --timeout=300s
-
Verify that the Kubernetes ConnectorClass is ready:
kubectl get connectorclass k8s
Install ConnectorsMaven (Optional)
To add support for integration with Maven registries, install the ConnectorsMaven component:
-
Create the ConnectorsMaven custom resource:
cat <<EOF | kubectl apply -f -
apiVersion: operator.connectors.alauda.io/v1alpha1
kind: ConnectorsMaven
metadata:
name: connectors-maven
namespace: connectors-system
spec: {}
EOF
-
Monitor the deployment progress:
kubectl get connectorsmaven -n connectors-system
-
Wait until the status shows that ConnectorsMaven is ready:
kubectl wait --for=condition=Ready connectorsmaven/connectors-maven -n connectors-system --timeout=300s
-
Verify that the Kubernetes ConnectorClass is ready:
kubectl get connectorclass maven
Install ConnectorsPyPI (Optional)
To add support for integration with PyPI registries, install the ConnectorsPyPI component:
-
Create the ConnectorsPyPI custom resource:
cat <<EOF | kubectl apply -f -
apiVersion: operator.connectors.alauda.io/v1alpha1
kind: ConnectorsPyPI
metadata:
name: connectors-pypi
namespace: connectors-system
spec: {}
EOF
-
Monitor the deployment progress:
kubectl get connectorspypi -n connectors-system
-
Verify that the Kubernetes ConnectorClass is ready:
kubectl get connectorclass pypi
Install ConnectorsNPM (Optional)
To add support for integration with NPM registries, install the ConnectorsNPM component:
-
Create the ConnectorsNPM custom resource:
cat <<EOF | kubectl apply -f -
apiVersion: operator.connectors.alauda.io/v1alpha1
kind: ConnectorsNPM
metadata:
name: connectors-npm
namespace: connectors-system
spec: {}
EOF
-
Monitor the deployment progress:
kubectl get connectorsnpm -n connectors-system
-
Verify that the Kubernetes ConnectorClass is ready:
kubectl get connectorclass npm
Uninstall Connectors
To uninstall the Connectors system, remove components in the reverse order of installation.
-
Delete the optional components first (if installed):
# Delete ConnectorsOCI
kubectl delete connectorsoci --all -n connectors-system
# Delete ConnectorsGit
kubectl delete connectorsgit --all -n connectors-system
# Delete ConnectorsGitLab
kubectl delete connectorsgitlab --all -n connectors-system
# Delete ConnectorsK8S
kubectl delete connectorsk8s --all -n connectors-system
# Delete ConnectorsMaven
kubectl delete connectorsmaven --all -n connectors-system
# Delete ConnectorsPyPI
kubectl delete connectorspypi --all -n connectors-system
# Delete ConnectorsNPM
kubectl delete connectorsnpm --all -n connectors-system
-
Delete the core component:
kubectl delete connectorscore --all -n connectors-system
-
Delete the operator:
kubectl delete -n connectors-operator subscription.operators.coreos.com/connectors-operator
-
Delete the namespaces:
kubectl delete namespace connectors-system
kubectl delete namespace connectors-operator
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:
apiVersion: operator.connectors.alauda.io/v1alpha1
kind: ConnectorsCore
metadata:
name: connectors-core
namespace: connectors-system
spec:
# Configure specific workloads
workloads:
- name: connectors-api
replicas: 2
template:
spec:
containers:
- name: api
imagePullPolicy: Always
resources:
limits:
cpu: 500m
memory: 512Mi
requests:
cpu: 200m
memory: 256Mi
securityContext:
readOnlyRootFilesystem: true
nodeSelector:
kubernetes.io/os: linux
- name: connectors-controller-manager
replicas: 1
template:
spec:
containers:
- name: manager
resources:
limits:
cpu: 300m
memory: 512Mi
- name: connectors-proxy
replicas: 2
template:
spec:
containers:
- name: proxy
resources:
limits:
cpu: 200m
memory: 256Mi
ConnectorsGit Configuration
Custom configuration for the Git plugin:
apiVersion: operator.connectors.alauda.io/v1alpha1
kind: ConnectorsGit
metadata:
name: connectors-git
namespace: connectors-system
spec:
# Configure workloads
workloads:
- name: connectors-git-plugin
replicas: 2
template:
spec:
containers:
- name: plugin
resources:
limits:
cpu: 300m
memory: 256Mi
requests:
cpu: 100m
memory: 128Mi
ConnectorsOCI Configuration
Custom configuration for the OCI plugin:
apiVersion: operator.connectors.alauda.io/v1alpha1
kind: ConnectorsOCI
metadata:
name: connectors-oci
namespace: connectors-system
spec:
# Configure workloads
workloads:
- name: connectors-oci-plugin
replicas: 2
template:
spec:
containers:
- name: plugin
resources:
limits:
cpu: 300m
memory: 256Mi
requests:
cpu: 100m
memory: 128Mi
Additional Configurations
For advanced deployments, you can also specify:
apiVersion: operator.connectors.alauda.io/v1alpha1
kind: ConnectorsCore
metadata:
name: connectors-core
namespace: connectors-system
spec:
# Specify additional manifests to install
additionalManifests: "<additional manifests>"
# Other configurations as needed