3.8. 在环境间提升
当集成在集群中运行后,您可以将该集成移到更高的环境中。也就是说,您可以 在开发环境中 测试集成,在获取结果后,您可以将其移到 生产环境中。
Camel K 通过使用 kamel promote
命令实现此目标。通过这个命令,您可以将集成从一个命名空间移到另一个命名空间中。
先决条件
- 设置 Camel K 开发环境
- 您必须已有一个使用 Java 或 YAML DSL 编写的 Camel 集成。
-
确保源 operator 和目标 Operator 都使用相同的容器 registry,默认 registry (如果通过 OperatorHub 安装 Camel K operator)为
registry.redhat.io
- 另外,请确保目标命名空间提供集成所需的 Configmap、Secret 或 Kamelets。
要使用同一容器 registry,您可以在安装阶段使用 --registry
选项,或更改 IntegrationPlatform 来相应地反映。
代码示例
以下是使用 Configmap 在 HTTP 端点上公开一些消息的简单集成。您可以开始在名为
development
的命名空间中创建此类集成和测试。kubectl create configmap my-cm --from-literal=greeting="hello, I am development!" -n development
PromoteServer.java
import 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")); } }
现在运行它。
kamel run --dev -n development PromoteServer.java --config configmap:my-cm [-t service.node-port=true]
您必须根据 Kubernetes 平台和您要提供的风险级别调整服务特征。之后,您可以对其进行测试。
curl http://192.168.49.2:32116/hello hello, I am development!
测试集成后,您可以将其移至生产环境。您必须有目的地环境( Openshift 命名空间)可以与一个 operator (共享同一操作器容器 registry)以及任何配置(如此处使用的 configmap)就绪。为此,请在目标命名空间中创建一个。
kubectl create configmap my-cm --from-literal=greeting="hello, I am production!" -n production
注意为安全起见,需要检查确保目标中存在预期的资源,如 Configmap、Secret 和 Kamelets。如果缺少其中任何这些资源,则集成不会移动。
现在,您可以促进集成。
kamel promote promote-server -n development --to production kamel logs promote-server -n production
测试提升的集成。
curl http://192.168.49.2:30764/hello hello, I am production!
由于集成被重新使用同一容器镜像,新的应用将立即执行。另外,集成的不可变性也保证,使用的容器与开发中测试的容器完全相同(更改只是配置)。
注意在测试中运行的集成不会以任何方式更改,并在停止前保持运行。