Camunda 8.2.0 connectors

Camunda 8.2.0 has enabled the “connectors” service.

Problem:

Our application enables the operate service through values.yaml. The connectors pod does not start. It crashes with a message:

2023-04-14T03:19:03.448Z  INFO 1 --- [           main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat initialized with port(s): 8080 (http)
2023-04-14T03:19:03.458Z  INFO 1 --- [           main] o.apache.catalina.core.StandardService   : Starting service [Tomcat]
2023-04-14T03:19:03.458Z  INFO 1 --- [           main] o.apache.catalina.core.StandardEngine    : Starting Servlet engine: [Apache Tomcat/10.1.7]
2023-04-14T03:19:03.527Z  INFO 1 --- [           main] o.a.c.c.C.[Tomcat].[localhost].[/]       : Initializing Spring embedded WebApplicationContext
2023-04-14T03:19:03.528Z  INFO 1 --- [           main] w.s.c.ServletWebServerApplicationContext : Root WebApplicationContext: initialization completed in 2099 ms
2023-04-14T03:19:03.612Z  INFO 1 --- [           main] org.camunda.feel.FeelEngine              : Engine created. [value-mapper: CompositeValueMapper(List(org.camunda.feel.impl.JavaValueMapper@76d0ecd7)), function-provider: io.camunda.connector.runtime.util.feel.FeelConnectorFunctionProvider@57c69937, clock: SystemClock, configuration: Configuration(false)]
2023-04-14T03:19:03.620Z  WARN 1 --- [           main] ConfigServletWebServerApplicationContext : Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'processDefinitionImporter' defined in URL [jar:file:/opt/app/connector-runtime-bundle-0.18.0-with-dependencies.jar!/io/camunda/connector/runtime/inbound/importer/ProcessDefinitionImporter.class]: Unsatisfied dependency expressed through constructor parameter 0: No qualifying bean of type 'io.camunda.operate.CamundaOperateClient' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {}
2023-04-14T03:19:03.623Z  INFO 1 --- [           main] o.apache.catalina.core.StandardService   : Stopping service [Tomcat]
2023-04-14T03:19:03.639Z  INFO 1 --- [           main] .s.b.a.l.ConditionEvaluationReportLogger : 

Error starting ApplicationContext. To display the condition evaluation report re-run your application with 'debug' enabled.
2023-04-14T03:19:03.652Z ERROR 1 --- [           main] o.s.b.d.LoggingFailureAnalysisReporter   : 

***************************
APPLICATION FAILED TO START
***************************

Description:

Parameter 0 of constructor in io.camunda.connector.runtime.inbound.importer.ProcessDefinitionImporter required a bean of type 'io.camunda.operate.CamundaOperateClient' that could not be found.


Action:

Consider defining a bean of type 'io.camunda.operate.CamundaOperateClient' in your configuration.


Expected behavior:

connectors service should ignore configuration to existing services if not explicitly specified.
Document the steps needed to specify the expected property. Can this be specified through values.yaml?

Workaround:

Disable connectors services through values.yaml

connectors:
    enabled: false

Hi @camundaenthu,

Sorry for the late response. You need to pass OPERATE_CLIENT_ENABLED=false property as well.

Hope this helps!

@igpetrov We have enabled the operate client on our deployment. We need to use operate.

operate:
    enabled: true

Where should this property OPERATE_CLIENT_ENABLED=false be passed?

Is it on the connectors in values.yaml?

It is environment variable for a connectors instance or pod. The error you pasted indicates that your Connectors cannot connect to the Operate instance. This is required if you would like to support inbound capabilities, like webhooks.


Thus, you have two options - (1) disabling connectivity to Operate. In that case you have to pass OPERATE_CLIENT_ENABLED=false environment variable - more here, or
(2) enable Operate connectivity with OPERATE_CLIENT_ENABLED=true but you need also specify Operate URL and credentials depending on your setup.

Also, take a look at k8s deployment implementation for different modes - when Operate connectivity is disabled, using credentials without keykloak, or with keycloak (oauth).

Hope this helps!