Docker 作为 Jenkins Slave 的容器
Docker Containers as Jenkins Slave
我想知道是否可能出现以下情况,请帮帮我:-
场景一:-
我将本地系统作为 Jenkins Master,每次我需要 运行 我的自动化测试脚本的从属系统时,一个 docker 容器作为 Jenkins 从属系统启动并执行我的脚本在从机上,执行完成后容器被销毁。
这可能吗。我想将我的本地系统保留为 Jenkins master。
场景二:-
我可以启动多个容器作为本地系统的 Jenkins slave 作为 Jenkins master。
谢谢
场景 1 至少包含在 JENKINS/Kubernetes Plugin: see its README
Based on the Scaling Docker with Kubernetes article, automates the scaling of Jenkins agents running in Kubernetes.
但这需要 Kubernetes 设置,这意味着,在您的情况下(如果您只有一台机器),minikube。
我已经在这个 link:
写了关于场景 1(使用 Kubernetes)的消息
这里是post.
我建议您通过创建 serviceAccount 在 kubernetes 中使用凭证,而不是使用证书:
---
apiVersion: v1
kind: ServiceAccount
metadata:
name: jenkins
---
kind: Role
apiVersion: rbac.authorization.k8s.io/v1beta1
metadata:
name: jenkins
rules:
- apiGroups: [""]
resources: ["pods"]
verbs: ["create","delete","get","list","patch","update","watch"]
- apiGroups: [""]
resources: ["pods/exec"]
verbs: ["create","delete","get","list","patch","update","watch"]
- apiGroups: [""]
resources: ["pods/log"]
verbs: ["get","list","watch"]
- apiGroups: [""]
resources: ["secrets"]
verbs: ["get"]
---
apiVersion: rbac.authorization.k8s.io/v1beta1
kind: RoleBinding
metadata:
name: jenkins
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: Role
name: jenkins
subjects:
- kind: ServiceAccount
name: jenkins
并使用该 serviceAccount 部署 jenkins:
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
labels:
app: jenkins
name: jenkins
spec:
replicas: 1
selector:
matchLabels:
app: jenkins
template:
metadata:
labels:
app: jenkins
spec:
serviceAccountName: jenkins
....
我给你看我的 Kubernetes 插件截图(注意 JNLP 端口的 Jenkins 隧道,'jenkins' 是我的 kubernetes 服务的名称):
凭据:
然后填写文件(ID 将自动生成,描述将显示在凭据列表框中),但请务必按照我之前所说的在 kubernetes 中创建 serviceAccount:
我的说明是给 kubernetes 里面的 Jenkins master 的。如果你想要它在集群之外(但在集群内部)我认为你必须使用简单的 login/password 凭据。
希望对你有所帮助
我想知道是否可能出现以下情况,请帮帮我:-
场景一:-
我将本地系统作为 Jenkins Master,每次我需要 运行 我的自动化测试脚本的从属系统时,一个 docker 容器作为 Jenkins 从属系统启动并执行我的脚本在从机上,执行完成后容器被销毁。
这可能吗。我想将我的本地系统保留为 Jenkins master。
场景二:-
我可以启动多个容器作为本地系统的 Jenkins slave 作为 Jenkins master。
谢谢
场景 1 至少包含在 JENKINS/Kubernetes Plugin: see its README
Based on the Scaling Docker with Kubernetes article, automates the scaling of Jenkins agents running in Kubernetes.
但这需要 Kubernetes 设置,这意味着,在您的情况下(如果您只有一台机器),minikube。
我已经在这个 link:
写了关于场景 1(使用 Kubernetes)的消息这里是post.
我建议您通过创建 serviceAccount 在 kubernetes 中使用凭证,而不是使用证书:
---
apiVersion: v1
kind: ServiceAccount
metadata:
name: jenkins
---
kind: Role
apiVersion: rbac.authorization.k8s.io/v1beta1
metadata:
name: jenkins
rules:
- apiGroups: [""]
resources: ["pods"]
verbs: ["create","delete","get","list","patch","update","watch"]
- apiGroups: [""]
resources: ["pods/exec"]
verbs: ["create","delete","get","list","patch","update","watch"]
- apiGroups: [""]
resources: ["pods/log"]
verbs: ["get","list","watch"]
- apiGroups: [""]
resources: ["secrets"]
verbs: ["get"]
---
apiVersion: rbac.authorization.k8s.io/v1beta1
kind: RoleBinding
metadata:
name: jenkins
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: Role
name: jenkins
subjects:
- kind: ServiceAccount
name: jenkins
并使用该 serviceAccount 部署 jenkins:
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
labels:
app: jenkins
name: jenkins
spec:
replicas: 1
selector:
matchLabels:
app: jenkins
template:
metadata:
labels:
app: jenkins
spec:
serviceAccountName: jenkins
....
我给你看我的 Kubernetes 插件截图(注意 JNLP 端口的 Jenkins 隧道,'jenkins' 是我的 kubernetes 服务的名称):
凭据:
然后填写文件(ID 将自动生成,描述将显示在凭据列表框中),但请务必按照我之前所说的在 kubernetes 中创建 serviceAccount:
我的说明是给 kubernetes 里面的 Jenkins master 的。如果你想要它在集群之外(但在集群内部)我认为你必须使用简单的 login/password 凭据。
希望对你有所帮助