如何配置Camel K将构建镜像推送到自定义Docker仓库路径而非自动生成?
Apache Camel K 镜像推送路径自定义配置问题
需求
使用Helm在本地Kubernetes集群部署Apache Camel K,要求所有构建生成的镜像推送到指定Docker Hub仓库,格式示例:
docker.io/kshitijtripathi/camel-k/<image-name:tag>
但当前Camel K推送的镜像格式为:
docker.io/kshitijtripathi/camel-k-kit-d11f2l3nb70c73e8el10:68565
已执行操作
- 创建
camel-k命名空间,添加Helm仓库:helm repo add camel-k https://apache.github.io/camel-k/charts - 编写
values.yaml并安装Camel K 2.6.0版本:helm install camel-k camel-k/camel-k --version 2.6.0 --namespace camel-k -f values.yamlvalues.yaml内容:platform: build: registry: address: docker.io organization: kshitijtripathi insecure: false secret: camel-secret publishStrategy: "Spectrum" traits: gc: configuration: enabled: true maxBuilds: 2 maxAge: 10m - 创建Docker Hub凭证密钥
camel-secret:kubectl create secret docker-registry camel-secret \ --docker-server=docker.io \ --docker-username=kshitijtripathi \ --docker-password='<MY_DOCKERHUB_TOKEN>' \ --docker-email='<EMAIL>' \ -n camel-k - Camel K已成功为测试集成构建并推送镜像
问题
Camel K仍将镜像推送到自动生成的独立仓库,格式如下:
docker.io/kshitijtripathi/camel-k-kit-<random>:<tag>
期望控制仓库路径为:
docker.io/kshitijtripathi/camel-k/<my-image-name>:<tag>
疑问
能否通过Helm、Operator或trait配置Camel K,实现:
- 不为每次构建创建新仓库
- 使用预定义的自定义镜像名称或格式,例如
camel-k/helloworld:tag - 在Docker Hub的单个仓库下统一组织构建镜像
解决方案
1. 全局统一配置(所有集成生效)
修改Helm的values.yaml,添加仓库路径和镜像名称模板配置,统一控制所有集成的镜像推送路径:
platform: build: registry: address: docker.io organization: kshitijtripathi repository: camel-k # 指定统一的基础仓库路径 insecure: false secret: camel-secret publishStrategy: "Spectrum" imageNameTemplate: "{{.IntegrationName}}:{{.BuildNumber}}" # 自定义镜像名称格式,支持变量:IntegrationName(集成名称)、BuildNumber(构建编号)等 traits: gc: configuration: enabled: true maxBuilds: 2 maxAge: 10m
更新Camel K部署:
helm upgrade camel-k camel-k/camel-k --version 2.6.0 --namespace camel-k -f values.yaml
配置完成后,所有集成构建的镜像格式会变为:
docker.io/kshitijtripathi/camel-k/<集成名称>:<构建编号>
2. 单个集成自定义路径
如果需要为特定集成单独指定镜像路径,在运行kamel run时直接通过--image参数指定完整镜像地址:
kamel run MyIntegration.java --image docker.io/kshitijtripathi/camel-k/helloworld:v1 --namespace camel-k
此方式会强制将该集成的构建镜像推送到指定路径,优先级高于全局配置。
3. 避免自动生成随机仓库名
通过上述两种配置方式,无论是全局固定repository路径,还是单个集成指定--image,都能替代Camel K默认生成的随机仓库名,实现将所有镜像统一组织在docker.io/kshitijtripathi/camel-k/路径下。
内容的提问来源于stack exchange,提问作者Kshitij
相关产品推荐
相关产品推荐

