Red Hat Camel K is deprecated
Red Hat Camel K is deprecated and the End of Life date for this product is June 30, 2025. For help migrating to the current go-to solution, Red Hat build of Apache Camel, see the Migration Guide.3.10. 跨环境提升
当一个集成在集群中运行后,您可以将该集成移到更高的环境中。也就是说,您可以 在开发环境中 测试集成,并在获得结果后进行测试,您可以将其移到 生产环境中。
Camel K 使用 kamel promote
命令实现此目标。通过此命令,您可以将集成从一个命名空间移到另一个命名空间。
先决条件
- 设置 Camel K 开发环境
- 您必须已经有一个使用 Java 或 YAML DSL 编写的 Camel 集成。
-
确保源 Operator 和目标 Operator 使用相同的容器 registry,默认 registry (如果通过 OperatorHub 安装 Camel K operator)是
registry.redhat.io
- 另外,确保目标命名空间提供集成所需的 Configmaps、Secret 或 Kamelets。
要使用相同的容器 registry,您可以在安装过程中使用-- registry
选项或更改 IntegrationPlatform 以反应它们。
代码示例
以下是一个简单的集成,它使用 Configmap 在 HTTP 端点上公开一些消息。您可以在名为
development
的命名空间中创建这样的集成测试和测试。
Copy to clipboardCopiedkubectl create configmap my-cm --from-literal=greeting="hello, I am development!" -n development
PromoteServer.java
Copy to clipboardCopiedimport org.apache.camel.builder.RouteBuilder; public class PromoteServer extends RouteBuilder { @Override public void configure() throws Exception { from("platform-http:/hello?httpMethodRestrict=GET").setBody(simple("resource:classpath:greeting")); } }
现在运行它。
Copy to clipboardCopiedkamel run --dev -n development PromoteServer.java --config configmap:my-cm [-t service.node-port=true]
您必须调整服务特征,具体取决于 Kubernetes 平台和您要提供的暴露级别。之后,您可以对其进行测试。
Copy to clipboardCopiedcurl http://192.168.49.2:32116/hello hello, I am development!
测试集成后,您可以将其移到生产环境中。您必须具有目标环境(Open Openshift 命名空间)与操作器(共享相同的 operator 源容器 registry)和任何配置(如此处使用的 configmap)就绪。对于该范围,请在目标命名空间中创建一个。
Copy to clipboardCopiedkubectl create configmap my-cm --from-literal=greeting="hello, I am production!" -n production
注意为了安全起见,需要检查来确保目的地上存在预期的资源,如 Configmaps、Secret 和 Kamelets。如果缺少这些资源,则集成不会移动。
现在,您可以推广您的集成。
Copy to clipboardCopiedkamel promote promote-server -n development --to production kamel logs promote-server -n production
测试升级的集成。
Copy to clipboardCopiedcurl http://192.168.49.2:30764/hello hello, I am production!
由于集成正在重复使用同一容器镜像,因此新的应用会立即执行。另外,集成的不可变性也保证,因为所使用的容器与开发中测试的容器完全相同(更改只是配置)。
注意测试中运行的集成不会以任何方式更改,并在停止之前继续运行。