..
使用 kaniko 在 k8s 集群中构建镜像
在 k8s 集群中构建镜像并不是一个负责的问题,主要是要将构建好的镜像推送到 private docker register 会有点麻烦,因为权限认证的问题,在 docker pull 的时候,我们使用 imagePullSecrets 设置来解决这个问题。
谷歌开发一个 kaniko 工具,用于解决在 k8s 中构建镜像相关的问题,这个工具允许你给他配置 docker auth 信息,命令如下:
- 基于已有的 credentials 创建 k8s secret
kubectl create secret generic regcred \
--from-file=.dockerconfigjson=$HOME/.docker/config.json \
--type=kubernetes.io/dockerconfigjson
- 配置中使用这个 secret
pipeline {
agent {
kubernetes {
//cloud 'kubernetes'
yaml """
kind: Pod
metadata:
name: kaniko
spec:
containers:
- name: kaniko
image: gcr.io/kaniko-project/executor:debug-539ddefcae3fd6b411a95982a830d987f4214251
imagePullPolicy: Always
command:
- /busybox/cat
tty: true
volumeMounts:
- name: jenkins-docker-cfg
mountPath: /root
volumes:
- name: jenkins-docker-cfg
projected:
sources:
- secret:
name: regcred
items:
- key: .dockerconfigjson
path: .docker/config.json
"""
}
}
stages {
stage('Build with Kaniko') {
environment {
PATH = "/busybox:/kaniko:$PATH"
}
steps {
git 'https://github.com/jenkinsci/docker-jnlp-slave.git'
container(name: 'kaniko', shell: '/busybox/sh') {
sh '''#!/busybox/sh
/kaniko/executor -f `pwd`/Dockerfile -c `pwd` --insecure --skip-tls-verify --cache=true --destination=mydockerregistry:5000/myorg/myimage
'''
}
}
}
}
}
参考链接: