ImageBuilder
TensorStack 平台提供 CRD ImageBuilder,方便用户在集群中构建容器镜像。
创建 ImageBuilder
下面是一个基本的 ImageBuilder 定义示例:
# image-builder-example.yaml
apiVersion: tensorstack.dev/v1beta1
kind: ImageBuilder
metadata:
  name: imagebuilder-example
spec:
  dockerConfig:
    secret: docker-config
  tag: t9kpublic/kaniko-executor:v1.19.2
  workspace:
    pvc:
      name: kaniko
      dockerfilePath: ./Dockerfile
      contextPath: "."
  builder:
    kaniko: {}
在该例中:
spec.dockerConfig.secret字段指定使用 Secretdocker-config中记录的 docker 配置,以上传镜像。spec.tag字段指定目标镜像的名称和标签为t9kpublic/kaniko-executor:v1.19.2。spec.workspace字段指定构建镜像使用 PVCkaniko作为工作空间,其中:- 在 PVC 相对路径 
./Dockerfile中存放构建镜像所需的 Dockerfile。 - 在 PVC 相对路径 
.中存放构建镜像所需要的上下文。 
- 在 PVC 相对路径 
 spec.builder字段指定使用kaniko来构建镜像。
构建工具
目前 ImageBuilder 支持使用 kaniko 工具来构建镜像。
kaniko
用户可以通过 spec.builder.kaniko 字段来设置 kaniko 的参数。
在下面示例中,ImageBuilder 使用 t9kpublic/kaniko-executor:v1.19.2 启动 kaniko,并在该容器中构建用户镜像;ImageBuilder 不额外设置 kaniko 参数。
spec:
  builder:
    kaniko:
      image: t9kpublic/kaniko-executor:v1.19.2
      args: []
spec.builder.kaniko 的参数介绍:
image:如忽略,ImageBuilder 控制器会指定一个默认镜像,所以一般来说可以不设置该字段。args:如忽略,ImageBuilder 构建镜像时执行kaniko --destination=[image-tag] --context=[context-path] --dockerfile=[dockerfile-path]命令。如果用户需要使用其他参数,可以在该字段中指定。参考 kaniko additional flags。
参考
更加详细的 ImageBuilder API 可直接在集群中查询:
kubectl explain imagebuilder
下一步
- 使用控制台:构建镜像
 - Github 上的 ImagerBuilder 示例
 - kaniko 的详细参考