kubectl create secret docker-registry regcred --docker-server=registry.cn-hangzhou.aliyuncs.com --docker-username=wangzy-p@1711111111233333 --docker-password=dasdadsa --dry-run=client -n wangzy-p -o yaml > docker-secret.yaml
注意 :登录阿里云的RAM账号[email protected]
,账号中去除.onaliyun.com
生成docker-secret.yaml
文件如下:
apiVersion: v1
data:
.dockerconfigjson: eyJhdXRocyI6eyJQ2Q1QyZWdpc3RyeS5jbi1oYW5nemhvdS5hbGl5dW5jcy5jb20iOnsidXNlcm5hbWUiOiJ3YW5nenktcEAxNzA4OTYwOTU5OTdadadaATTBBHPKKKX7HGGGGkxMDAyIiwicGFzc3dvcmQiOiJ3YW5nenktcDEyADADMzQ1NiIsImF1dGgiOiJkMkZ1WjNwNUxYQkFNVGN3T0RrMk1EazFPVGs1TVRBd01qcDNZVzVuZW5rdGNERXDADADlNelExTmc9PSJ9fX0=
kind: Secret
metadata:
creationTimestamp: null
name: regcred
namespace: wangzy-p
type: kubernetes.io/dockerconfigjson
应用文件: kubectl apply -f docker-secret.yaml
apiVersion: v1
kind: Pod
metadata:
name: kaniko
namespace: wangzy-p #用户的命名空间,这里要和创建的secret命名空间要对应
annotations:
sidecar.istio.io/inject: "false" #如果有istio,取消sidebar注入
spec:
containers:
- name: kaniko
image: registry.cn-hangzhou.aliyuncs.com/rory602/kubeflow2:gcr.io_kaniko-projec_executor_latest
args: ["--dockerfile=/workspace/operator/example/sdm/Dockerfile", #打包镜像的dockerfile
"--context=dir://operator", #dir://协议, 这是相对路径写法,如果是绝对路径再加/, 如:dir:///workspace/operator
"--destination=registry.cn-hangzhou.aliyuncs.com/rory602/k8s_kubeflow1:kaniko-test"] #推送的镜像
volumeMounts:
- name: kaniko-secret
mountPath: /kaniko/.docker
- name: dockerfile-storage
mountPath: /workspace #挂载到kaniko pod的workspace目录,注意,这里不是构建镜像挂载路径,可以理解为中转路径
restartPolicy: Never
volumes:
- name: kaniko-secret
secret:
secretName: regcred #创建docker-secret名称
items:
- key: .dockerconfigjson
path: config.json
- name: dockerfile-storage
persistentVolumeClaim:
claimName: wangzy-p1-datavol-1 #指定存储数据的pvc
应用pod文件:kubectl apply -f pod.yaml
注意:pod内部需要赋予serviceaccount的在该命名空间下创建Pod的权限
其中,wangzy-p1-datavol-1
对应的打包工程目录结构如下:
└── operator
├── config
│ ├── dssm
│ ├── mind
│ ├── sdm
│ └── youtubednn
├── data
│ ├── dssm
│ ├── mind
│ ├── sdm
│ └── youtubednn
├── example
│ ├── dssm
│ ├── mind
│ ├── sdm
│ └── youtubednn
Dockerfile
定义打包镜像指令
·
参考资料
GoogleContainerTools/kaniko: Build Container Images In Kubernetes (github.com)