syndesisio / syndesis

This project is archived. A flexible, customizable, open source platform that provides core integration capabilities as a service.
https://syndesis.io/
Apache License 2.0
595 stars 203 forks source link

Installation on plain Kubernetes fails #9468

Closed kompetenzlandkarte closed 2 years ago

kompetenzlandkarte commented 3 years ago

This is a...


[ ] Feature request
[ ] Regression (a behavior that used to work and stopped working in a new release)
[x] Bug report  
[ ] Documentation issue or request

Description

Hey,

I am following the Syndesis on Minikube guide and after I have built the operator and executed ${SYNDESIS} kube secrets I was struggling with creating volumes due to running on vanilla kubernetes and not minikube (so I skipped this step).

On execution of

${SYNDESIS} install --dev \
  --custom-resource ~/.syndesis/share/custom-resources/${SYNDESIS_HOSTNAME}-cr.yml

I get this error: error: the server doesn't have a resource type "dc". Isn't it a resource definition for OpenShift? So it won't run on Kubernetes, right?

Am I missing something in the installation process? The operator deploys successfully onto the cluster.

Thank you.

zregvart commented 3 years ago

@kompetenzlandkarte we have a work in progress effort to support Kubernetes on the 2.x branch. This branch has no releases (only pre-releases), so in order to use that you'd need to specify --tag and quite possibly use the syndesis script attached to one of the 2.x pre-releases (if you're not already using that).

kompetenzlandkarte commented 3 years ago

Hey I cloned the latest tag 2.0.0-20210331 and executed:

~/syndesis/tools/bin/syndesis build -m operator --image --docker --registry "registry.private.tld"

it built and pushed the operator to my registry successfully.

then I executed:

~/syndesis/tools/bin/syndesis install --dev --custom-resource ~/.syndesis/share/custom-resources/hostname-cr.yml

I am still getting this error:

Deploying Syndesis operator
I0331 14:40:26.988441 2473098 request.go:621] Throttling request took 1.037156402s, request: GET:https://k8s:6443/apis/networking.k8s.io/v1?timeout=32s
Waiting for syndesis-operator to be scaled to 1
NAME                                 READY   STATUS        RESTARTS   AGE
syndesis-operator-569687ff9b-fvzbt   1/1     Terminating   0          7m57s
syndesis-operator-569687ff9b-fvzbt   1/1     Terminating   0          7m57s
error: the server doesn't have a resource type "dc"
Sleeping 10s ...
syndesis-operator-569687ff9b-fvzbt   0/1     Terminating   0          7m58s
syndesis-operator-569687ff9b-fvzbt   0/1     Terminating   0          7m59s
syndesis-operator-569687ff9b-fvzbt   0/1     Terminating   0          7m59s
syndesis-operator-79fffbd4c-9jfh5    0/1     Pending       0          0s
syndesis-operator-79fffbd4c-9jfh5    0/1     Pending       0          0s
syndesis-operator-79fffbd4c-9jfh5    0/1     Init:0/1      0          0s

Other questions:

so in order to use that you'd need to specify --tag

If I specify a --tag it does not uses my custom build image but rather the one from Docker Hub.

and quite possibly use the syndesis script attached to one of the 2.x pre-releases

you mean syndesis-cli.zip, right?

Do I have to specify the tag elsewhere?

claudio4j commented 3 years ago

The tools/bin/syndesis script is to make the process easier, but as you are using a vanilla k8s, then I suggest to work with the syndesis-operator binary directly.

For the mentioned error, edit the https://github.com/syndesisio/syndesis/blob/2.x/tools/bin/commands/util/client_funcs#L275 and remove the dc object, as it exists only for openshift. And for the 2.x branch, there are no DeploymentConfig objects anymore.

If you are building the syndesis-operator, you can use it directly to install onto k8s, with

# add the CRD and other cluster wide objects, requires admin privileges
syndesis-operator install cluster

# grant permissions/roles/etc to the k8s user
syndesis-operator grant -u kubeadmin

# install the syndesis-operator deploy and pods
# you can use --dev parameter to create imagestreams, so later you can push your own syndesis-* images to the registry
# then you can monitor with kubectl get pods -w
# if syndesis-operator fails, you can inspect with "kubectl describe <pod>" then look at the events section 
syndesis-operator install operator

# install syndesis CR
syndesis-operator install app --custom-resource <your custom resource file>
kompetenzlandkarte commented 3 years ago

Hey @claudio4j,

thank you for your summary. With these steps I can create the application successfully (maybe this should be added to the docs). However I can't publish integrations. I get this error if I press on publish:

2021-04-06 11:09:01.596  INFO 1 --- [on Controller-0] i.s.s.c.i.BaseIntegrationController      : Integration i-MXarFPhshQoIgMqBD6gz:2 : Desired status "Published" != current status "Unpublished" --> calling status change handler
2021-04-06 11:09:01.596  INFO 1 --- [on Controller-0] i.s.s.c.i.BaseIntegrationController      : IntegrationDeploymentId i-MXarFPhshQoIgMqBD6gz:2 Integration i-MXarFPhshQoIgMqBD6gz : Start processing integration: i-MXarFPhshQoIgMqBD6gz, version: 2 with handler: PublishHandler
2021-04-06 11:09:01.606 ERROR 1 --- [on Controller-0] i.s.s.c.i.BaseIntegrationController      : Error while processing integration status for integration i-MXarFPhshQoIgMqBD6gz:2
io.fabric8.kubernetes.client.KubernetesClientException: Failure executing: GET at: https://kubernetes.default.svc/apis/build.openshift.io/v1/namespaces/syndesis/builds?labelSelector=openshift.io%2Fbuild-config.name%3Di-pmx2sheet&fieldSelector=status%3DRunning. Message: 404 page not found
.
    at io.fabric8.kubernetes.client.dsl.base.OperationSupport.requestFailure(OperationSupport.java:568) ~[kubernetes-client-4.9.0.jar!/:na]
    at io.fabric8.kubernetes.client.dsl.base.OperationSupport.assertResponseCode(OperationSupport.java:507) ~[kubernetes-client-4.9.0.jar!/:na]
    at io.fabric8.kubernetes.client.dsl.base.OperationSupport.handleResponse(OperationSupport.java:471) ~[kubernetes-client-4.9.0.jar!/:na]
    at io.fabric8.kubernetes.client.dsl.base.OperationSupport.handleResponse(OperationSupport.java:430) ~[kubernetes-client-4.9.0.jar!/:na]
    at io.fabric8.kubernetes.client.dsl.base.OperationSupport.handleResponse(OperationSupport.java:412) ~[kubernetes-client-4.9.0.jar!/:na]
    at io.fabric8.kubernetes.client.dsl.base.BaseOperation.listRequestHelper(BaseOperation.java:151) ~[kubernetes-client-4.9.0.jar!/:na]
    at io.fabric8.kubernetes.client.dsl.base.BaseOperation.list(BaseOperation.java:621) ~[kubernetes-client-4.9.0.jar!/:na]
    at io.fabric8.kubernetes.client.dsl.base.BaseOperation.list(BaseOperation.java:70) ~[kubernetes-client-4.9.0.jar!/:na]
    at io.syndesis.server.openshift.OpenShiftServiceImpl.checkBuildStatus(OpenShiftServiceImpl.java:228) ~[server-openshift-2.0.0-20210406.jar!/:2.0.0-20210406]
    at io.syndesis.server.openshift.OpenShiftServiceImpl.isBuildStarted(OpenShiftServiceImpl.java:215) ~[server-openshift-2.0.0-20210406.jar!/:2.0.0-20210406]
    at io.syndesis.server.controller.integration.online.PublishHandler.isBuildStarted(PublishHandler.java:198) ~[server-controller-2.0.0-20210406.jar!/:2.0.0-20210406]
    at io.syndesis.server.controller.integration.online.PublishHandler.execute(PublishHandler.java:84) ~[server-controller-2.0.0-20210406.jar!/:2.0.0-20210406]
    at io.syndesis.server.controller.StateChangeHandler.execute(StateChangeHandler.java:33) ~[server-controller-2.0.0-20210406.jar!/:2.0.0-20210406]
    at io.syndesis.server.controller.integration.BaseIntegrationController.lambda$callStateChangeHandler$8(BaseIntegrationController.java:213) ~[server-controller-2.0.0-20210406.jar!/:2.0.0-20210406]
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) ~[na:1.8.0_201]
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) ~[na:1.8.0_201]
    at java.lang.Thread.run(Thread.java:748) ~[na:1.8.0_201]

Is there any way to run integrations on kubernetes? Maybe via the operator?

Thank you.

claudio4j commented 3 years ago

Unfortunately at this point, the 2.x branch has limited plain kubernetes support. Syndesis creates DeploymentConfig and ImageStreams objects (for integrations) which doesn´t exist in plain kubernetes. That said, syndesis 2.x is unable to create integrations on plain k8s.

kompetenzlandkarte commented 3 years ago

I am seeing forward to this feature 😄. Until then I'll have to switch back to OKD.

zregvart commented 3 years ago

@kompetenzlandkarte you can try the (rather old) version of Camel K runtime with Syndesis 2.x. There should be a CamelK key in Addons that can be Enabled: true in the Syndesis custom resource. With this some of integration types are not fully supported. AFAIK Integrations using API Provider and WebHook connectors.

You can also either ignore the error from OpenShiftServiceImpl or you can disable the service by setting openshift.enabled=true Java system property via Components.Server.JavaOptions on the Syndesis CR (or OPENSHIFT_ENABLED=false environment variable on the syndesis-server Pod).

kompetenzlandkarte commented 3 years ago

@zregvart I just tried this approach. But sadly I can't upload new extensions if Camel-K Addon is active. I want to access an Oracle DB via JDBC.

Thank you.

zregvart commented 3 years ago

@zregvart I just tried this approach. But sadly I can't upload new extensions if Camel-K Addon is active. I want to access an Oracle DB via JDBC.

Yes, extensions are not supported with Camel K, the architecture is vastly different.

stale[bot] commented 3 years ago

This issue has been automatically marked as stale because it has not had any activity since 90 days. It will be closed if no further activity occurs within 7 days. Thank you for your contributions!

michaelandrepearce commented 2 years ago

Im also interested in trying this out, but we're on managed cloud k8s, is there a timeline for plain k8s support at all?

claudio4j commented 2 years ago

@michaelandrepearce unfortunately there is no plan for syndesis to work on plain kubernetes.

stale[bot] commented 2 years ago

This issue has been automatically marked as stale because it has not had any activity since 90 days. It will be closed if no further activity occurs within 7 days. Thank you for your contributions!