Camel 有没有办法通过.yaml使用XML创建一个集成,而不使用kamel-client?

drkbr07n  于 2022-11-07  发布在  Apache
关注(0)|答案(2)|浏览(159)

我有一个Kubernets环境,安装了Camel-k操作符,并且工作正常,如果我使用Kamel客户端,它就可以工作(“kamel run Routes.xml”),但是我需要在不使用Kamel客户端的情况下运行一个XML路由。
我发现我可以创建一个.yaml(https://operatorhub.io/operator/camel-k)并使用“kubectl apply -f integrationJava.yaml”,这对我来说很有效,这是XML之前的第一步,但我得到了一个错误。

apiVersion: camel.apache.org/v1
kind: Integration
metadata:
  name: example
spec:
  sources:
  - content: |
      import org.apache.camel.builder.RouteBuilder;

      public class Example extends RouteBuilder {
          @Override
          public void configure() throws Exception {
              from("timer:tick")
                  .setBody(constant("Hello World!"))
              .to("log:info?skipBodyLineSeparator=false");
          }
      }
  name: Example.java

****错误发生在Camel-Operator pod

12/03/2021 09:57:53 {"level":"error","ts":1615553873.387946,"logger":"controller","msg":"Reconciler error","controller":"integration-controller","name":"javaintegration","namespace":"operator","error":"error executing post actions: error during replace resource: could not create or replace resource javaintegration: Deployment.apps \"javaintegration\" is invalid: [spec.template.spec.volumes[0].configMap.items[0].path: Required value, spec.template.spec.containers[0].volumeMounts[0].name: Not found: \"i-source-000\"]","errorVerbose":"Deployment.apps \"javaintegration\" is invalid: [spec.template.spec.volumes[0].configMap.items[0].path: Required value, spec.template.spec.containers[0].volumeMounts[0].name: Not found: \"i-source-000\"]

它说了一些关于volumes/volumeMounts的内容,但是我已经在crd-integration.yml中查找了这些参数,它没有类似的内容。
或者这是 Camel 符本身的一些参数?

bhmjp9jg

bhmjp9jg1#

缩进似乎是错误的,语言和内容需要位于名称的同一级别,因为它们是同一数组元素的一部分

qij5mzcb

qij5mzcb2#

您可以使用kamel cli创建xml示例

kamel init foo.xml

然后运行该集成

kamel run foo.xml

然后,您可以进入k8s,找到集成CRD并将其转储,您可以在其中看到嵌入的XML路由代码。
然后,您可以获取此CRD转储(yaml输出等),并将其用作您自己的xml路由的模板。

相关问题