jenkins-pipeline - 无法使用 Jenkins 将 docker 映像部署到 GKE
问题描述
我在 Mac 上运行 Jenkins jenkinsci/blueocean docker 映像,并尝试使用 Jenkins 管道(GKE 插件 v0.8.3)构建映像并将其部署到 GCP 上的 Kubernetes 集群,但它失败了——映像已构建并且成功添加到容器注册表(DockerHub),但在下面的“部署到 K8s”阶段部署到 GKE 失败。Jenkins 没有显示任何错误消息。我究竟做错了什么?任何帮助深表感谢
我的 deployment.yaml 文件
apiVersion: apps/v1
kind: Deployment
metadata:
name: mywebtestApp-deployment
labels:
app: mywebtestApp
spec:
replicas: 3
selector:
matchLabels:
app: mywebtestApp
template:
metadata:
labels:
app: mywebtestApp
spec:
containers:
- name: mywebtestApp
image: <mydockerhub>/<myimagename>:latest
ports:
- containerPort: 80
和我的詹金斯文件
pipeline {
agent any
environment {
............
stage('Deploy to K8s') {
steps{
echo 'Deployment started ...'
step([$class: 'KubernetesEngineBuilder', projectId: env.PROJECT_ID, clusterName: env.CLUSTER_NAME, location: env.LOCATION, manifestPattern: 'deployment.yaml', credentialsId: env.CREDENTIALS_ID, verifyDeployments: true])
echo "Deployment Finished ..."
}
}
}
}
解决方案
如果你将它应用Deployment
到你的集群上,你会得到错误:
The Deployment "mywebtestApp-deployment" is invalid:
* metadata.name: Invalid value: "mywebtestApp-deployment": a DNS-1123 subdomain must consist of lower case alphanumeric characters, '-' or '.', and must start and end with an alphanumeric character (e.g. 'example.com', regex used for validation is '[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*')
* spec.template.spec.containers[0].name: Invalid value: "mywebtestApp": a DNS-1123 label must consist of lower case alphanumeric characters or '-', and must start and end with an alphanumeric character (e.g. 'my-name', or '123-abc', regex used for validation is '[a-z0-9]([-a-z0-9]*[a-z0-9])?')
不能使用大写字母。
您必须将标签从更改app: mywebtestApp
为 app: mywebtestapp 并将deployment
名称从name: mywebtestApp-deployment
更改为name: mywebtestApp-deployment
更改后,您将能够创建deployment
.
$ kubectl apply -f deployment.yaml
deployment.apps/mywebtestapp-deployment created