You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何配置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.yaml
    
    values.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,实现:

  1. 不为每次构建创建新仓库
  2. 使用预定义的自定义镜像名称或格式,例如camel-k/helloworld:tag
  3. 在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.12 22:33:13