ConnectorClass
TOC
OverviewAddress InformationParametersAuthentication InformationAuthentication TypeAuthentication ParametersOptional AuthenticationLiveness ProbeProbe using HTTP RequestsProbe using ConnectorClass APIAuthentication ProbeProbe using HTTP RequestsProbe using ConnectorClass APICustom Authentication Validation ParametersAuthentication Validation ExpressionsRego-based Authentication Logic ConfigurationExample Rego PoliciesAdvanced Rego TechniquesConnectorClass APIConfiguration CapabilitiesMetadata Information for Readability DisplayConnectorClass ProxyResolver TypeStatus InformationCompatibilityMore ExamplesMoreOverview
ConnectorClass is a cluster-level resource that defines the access modes and behavior specifications for specific types of tools.
The following example defines a hello-git type connector that supports basic authentication:
In the ConnectorClass, the access modes and behavior specifications for connecting tools to the platform are defined by describing the following information:
- The format of the tool's access address
- Supported authentication methods
- How to check the tool's accessibility
- How to verify the validity of authentication
- How the tool provides API capabilities
- What configuration capabilities the tool offers
- Metadata for readability display
This document also provides examples to help readers better understand how to customize ConnectorClass. Examples
Address Information
Address information defines the format for accessing the tool. Currently, string-type address configurations are supported. This address information restricts the field type constraints that the current type of tool must meet.
At this point, it indicates that the address information for connecting the tool to the platform must be of string type.
Parameters
Parameters are used to defines additional parameters when creating a connector.
You can define required parameters for connector creation using the connectorclass spec.params field.
spec.params[].name- Parameter name.spec.params[].type- Parameter type. Currently only supportsstringtype.spec.params[].default- Default parameter value (optional). When a default value is provided, users can omit this parameter when creating a connector.spec.params[].description- Parameter description (optional).
For example, the following definition allows users to provide an sslVerify parameter when creating a git-type connector, with a default value of true.
For parameter configuration when creating Connectors, refer to the Connector documentation.
Combined with connectors-csi-driver capabilities, this enables more flexible configuration. This is particularly useful when you need to provide parameterized configurations. For example, when creating a git-type connector, users can provide the sslVerify parameter to control SSL certificate verification. For more details, refer to the ConnectorClass Configuration documentation.
Authentication Information
Authentication Type
The authentication type defines the type of credentials used for tool authentication. A tool can support multiple authentication types, allowing users to choose one when using the tool.
Users can uniquely name the current authentication type via
spec.auth.types[].name, which must be unique and cannot be repeated.spec.auth.types[].secretType, which specifies the type ofSecretneeded for authentication, corresponding to a Kubernetes Secret Type.
Example:
In the built-in K8S Secret Type, all types except Opaque have field constraints. When providing a Secret, the user must ensure that the Secret's fields match the type constraints.
When using the Opaque type, you must declare authentication parameters.
Like k8s, you can also use your own Secret Type. At this point, you must declare authentication parameters.
Authentication Parameters
Parameters required for credentials during authentication are defined by spec.auth.types[].params.
For standard Kubernetes secret types with clearly defined data fields, parameters can be omitted. For example:
kubernetes.io/basic-auth: username and password authenticationkubernetes.io/ssh-auth: SSH key authentication
For custom authentication types, you can define the required authentication parameters, at this point secretType is marked as Opaque or a custom name.
For example, for GitLab's Personal Access Token (PAT) authentication:
This definition requires that the credentials used in the tool connector include the fields specified in params.
Optional Authentication
Some tools support access without authentication, marked by the optional field indicating whether authentication is optional:
For example, the following indicates that credentials for basicAuth are optional while sshAuth credentials are mandatory.
At this point, when connecting this type of tool to the platform, the basicAuth type of authentication can be omitted.
Liveness Probe
Accessibility checks are used to verify if the tool can be accessed normally. The configuration of how this type is conducted is done through the livenessProbe field.
A liveness check can be performed using either HTTP requests or the ConnectorClass API.
Probe using HTTP Requests
you can configure spec.livenessProbe.http to perform a liveness check using HTTP requests.
Example
the following snippet indicates that detection is performed using HTTP requests.
When the tool returns a 200 status, it is considered accessible.
For more details, refer to Probe using HTTP Requests in Authentication Probe. The configuration is identical, except for the field paths.
Probe using ConnectorClass API
you can configure spec.livenessProbe.api to perform a liveness check using the ConnectorClass API.
Example
the following snippet indicates that detection is performed using the ConnectorClass API.
For more details, refer to Probe using ConnectorClass API in Authentication Probe. The configuration is identical, except for the field paths.
Authentication Probe
Authentication validation is used to verify the validity of authentication credentials for tools of this type. If authentication validation is not required, the authProbes field can be omitted.
spec.authProbes[].authNamespecifies the authentication type being validated and must match one of the names defined inspec.auth.types[].name.
Authentication validation can be performed using either HTTP requests or the ConnectorClass API.
Probe using HTTP Requests
You can configure spec.authProbes[].probe.http to perform authentication validation using HTTP requests.
spec.authProbes[].probe.http.hostspecifies the target host for authentication validation. Defaults to the host from the connector address.spec.authProbes[].probe.http.pathspecifies the request path for authentication validation. This is an absolute path that will be appended to the host URI resolved from the connector'sspec.addresswhen executing the probe. Ifspec.addresscontains a path prefix, the path prefix will be ignored during authentication validation. To include the path prefix, useAuthentication Check Expressionsto dynamically retrieve it.spec.authProbes[].probe.http.methodspecifies the HTTP method for authentication validation, supporting GET and POST. Defaults to GET.spec.authProbes[].probe.http.disableRedirectspecifies whether to disable HTTP redirects during authentication validation. Defaults to false (automatic redirection is allowed).spec.authProbes[].probe.http.httpHeadersspecifies the HTTP headers to include in authentication validation requests.spec.authProbes[].probe.http.schemespecifies the URI scheme for authentication validation. Defaults to the scheme from the connector address.
Example
The following YAML configuration demonstrates that during authentication validation, the system will send a GET https://example.com/ HTTP/1.1 request to the connector address with an Authorization: abc header.
Probe using ConnectorClass API
You can configure spec.authProbes[].probe.api to perform authentication validation using the ConnectorClass API. You must first configure spec.api in the ConnectorClass specification. A 200 response indicates successful authentication, while a 401 or 403 response indicates authentication failure. More about ConnectorClass API.
spec.authProbes[].probe.api.pathspecifies the API endpoint path for authentication validation. This is a relative path that will be appended to the API address resolved from the ConnectorClass'sspec.apiconfiguration. Ifspec.apicontains a path prefix, the path prefix will be included when performing authentication validation.
Example
The following YAML configuration demonstrates that during authentication validation, the system will send a GET https://example-api.default.svc.cluster.local/api/auth/check HTTP/1.1 request to the ConnectorClass API.
Custom Authentication Validation Parameters
Some authentication validation scenarios may require additional parameters, such as specifying the repository name when validating access to a Git repository. These parameters can be defined using spec.authProbes[].params.
Authentication Validation Expressions
When configuring authProbes, expressions can be used to dynamically retrieve credential information or Connector metadata.
For example:
- Expressions can be used in the
probe.http.httpHeaders,probe.http.path, andprobe.api.pathfields. - The expression format follows Go template syntax.
- Supported top-level fields include:
.Connector: Contains information about the Connector resource itself.Secret: Contains the Secret data used for Connector authentication
- Available methods within expressions are documented in the sprig library:
- For example:
b64encfor Base64 encoding strings,trimPrefixfor removing string prefixes
- For example:
Example
Basic Authentication validation:
The connector will perform authentication validation based on the configuration defined in the ConnectorClass.
The above YAML demonstrates basic authentication validation:
path: Uses therepositoryvalue from the Connector'sauth.params, constructing the path as/<repository>/info/refs?service=git-upload-packAuthorization: When the Connector is configured with a Secret, theusernameandpasswordfields are Base64-encoded and included in the Basic authentication header.
Rego-based Authentication Logic Configuration
When tool connectors require more complex authentication logic, you can use Rego-based authentication logic configuration.
Rego is a declarative policy language that allows you to define authentication logic. In ConnectorClass, Rego policies are specified in the auth.types[].generator.rego field:
The Rego policy must follow these rules:
- Define rules under the proxy package
- Produce an auth object with the following structure:
- position: Where to inject authentication, such as "header", "query", or "body"
- contentType: Content type for body injection (optional, used with "body" position)
- auth: Map of authentication key-value pairs
Example Rego Policies
Basic Authentication
API Key Authentication
JSON Body Authentication
Advanced Rego Techniques
You can use Rego's conditional logic for different authentication methods:
Conditional Authentication
Time-based Authentication
For more Rego language details, refer to:
ConnectorClass API
Provides a RESTful API for the current ConnectorClass, allowing clients to easily access resources within the tools when using Connectors.
If there is no need to provide API capabilities for the tool, spec.api can be left undefined.
The ConnectorClass API needs to be configured in the spec.api field, for example:
You can specify the API's Service information through spec.api.ref. If the API address of the ConnectorClass has a fixed prefix, it can be specified using spec.api.uri. For example:
Additionally, you can use spec.api.uri to specify the absolute path of the API. For example:
Regardless of the form, the final resolved API address will be stored in status.api.address.url. For example:
Specifying the connectorclass API through service:
Specifying the connectorclass API through uri:
Specifying the connectorclass API through svc while using spec.api.uri to specify the API path:
For more information, refer to:
Configuration Capabilities
Configuration capabilities are used to define the configuration information for this type of tool. This configuration information can be mounted into Pods in conjunction with connectors-csi-driver.
If the client does not need to rely on configuration information when accessing the tool, spec.configurations can be left undefined.
Configuration information is specified through spec.configurations. For example:
Typically, we can specify a certain type of configuration information for a class of tools to facilitate configuration during use. For example:
- For
gittype tools, provide configuration for.gitconfig - For
oci registrytype tools, provide configuration forconfig.json
The configuration content supports the use of variables, which can be dynamically rendered during mounting.
More examples of using the configuration, refer to the connectors csi driver documentation.
Metadata Information for Readability Display
ConnectorClass is a standard k8s resource that can be tagged with custom information using labels and annotations.
For example:
For example:
ConnectorClass Proxy
The ConnectorClass Proxy is used to configure the proxy address for the ConnectorClass.
The ConnectorClass Proxy is configured through spec.proxy. For example:
The Connector will use the proxy address to proxy the request to the ConnectorClass. More information
Resolver Type
The proxy address of the ConnectorClass will be resolved according to the specified resolver type.
The resolver type is configured through annotations connectors.cpaas.io/proxy-resolver. For example:
This field is a convention between ConnectorClass-Proxy and Connector. Optional.
Supported values: host, path. Default is host.
hostformat:http://{.ConnectorClass.Status.ProxyAddress.URL}pathformat:http://{.ConnectorClass.Status.ProxyAddress.URL}/namespaces/{namespace}/connectors/{connector-name}
Status Information
Once you have defined the ConnectorClass resource, the status information of the resource will be stored in status.
The status.conditions type includes:
APIReady: Status information of the API capabilityProxyReady: Status information of the Proxy capabilityReady: Marks the overall status of the current ConnectorClass
Ready Condition
The Ready Condition is used to mark the status of the current ConnectorClass. It aggregates the status of other conditions.
- When other Conditions are True, the current Condition is True.
- When any other Condition is False, the current Condition is False.
- When any other Condition is Unknown, the current Condition is Unknown.
APIReady Condition
Indicates the status information of the API service configured for the ConnectorClass. The API service is configured through ConnectorClass's spec.api.
Note:
- The API detection will only attempt to request the link and will not make any HTTP return value judgments. The health check of the API service should rely on the health check mechanism of the API service itself.
- Since the API service may change at any time, the status information of the API cannot reflect real-time information. It is recommended that clients use this status information as a hint rather than relying on it to block client behavior.
ProxyReady Condition
Indicates the status information of the Proxy service configured for the ConnectorClass. The Proxy service is configured through ConnectorClass's spec.proxy.
Compatibility
Updates to the ConnectorClass may affect existing Connectors. If there are incompatible changes to the ConnectorClass, it may cause previously created Connectors to become invalid. Here are some possible changes that may lead to incompatibility:
-
Changes in authentication information: If the ConnectorClass modifies the supported authentication types or methods, it may cause Connectors using the old authentication method to malfunction.
-
Changes in configuration information: If the configuration information of the ConnectorClass changes, such as removing an existing configuration, it may cause Kubernetes workloads that depend on the old configuration to malfunction.
It is recommended to confirm the scope of impact when updating the ConnectorClass, or if necessary, create a new ConnectorClass.
More Examples
-
ConnectorClass supporting
basic-authauthentication type -
Custom authentication type ConnectorClass
-
ConnectorClass configured with
liveness probe -
ConnectorClass configured with
auth probe -
Complete Git connector configuration example: