[英]Persistent Volume for Jenkins on Kubernetes
I'm trying to deploy a Jenkins image on a local Kubernetes cluster.我正在尝试在本地 Kubernetes 集群上部署 Jenkins 映像。 The deployment is succesfull but I can't get the persistence data working.部署成功,但我无法使持久性数据正常工作。 No errors are being thrown and new pods start up succesfully, the only problem is that it's not persistent.没有抛出任何错误并且新的 pod 成功启动,唯一的问题是它不是持久的。
Jenkins Dockerfile: Jenkins Dockerfile:
FROM jenkins/jenkins:lts
ENV JENKINS_USER admin
ENV JENKINS_PASS admin
# Skip initial setup
ENV JAVA_OPTS -Djenkins.install.runSetupWizard=false
COPY plugins.txt /usr/share/jenkins/plugins.txt
RUN /usr/local/bin/install-plugins.sh < /usr/share/jenkins/plugins.txt
USER root
RUN apt-get update \
&& apt-get install -qqy apt-transport-https ca-certificates curl gnupg2 software-properties-common
RUN curl -fsSL https://download.docker.com/linux/debian/gpg | apt-key add -
RUN add-apt-repository \
"deb [arch=amd64] https://download.docker.com/linux/debian \
$(lsb_release -cs) \
stable"
RUN apt-get update -qq \
&& apt-get install docker-ce -y
RUN usermod -aG docker jenkins
RUN apt-get clean
RUN curl -L "https://github.com/docker/compose/releases/download/1.24.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose && chmod +x /usr/local/bin/docker-compose
USER jenkins
Kubernetes Deployment file: Kubernetes 部署文件:
apiVersion: apps/v1
kind: Deployment
metadata:
name: jenkins
spec:
replicas: 1
selector:
matchLabels:
app: jenkins
template:
metadata:
labels:
app: jenkins
spec:
containers:
- name: jenkins
image: mikemanders/my-jenkins-image:1.1
env:
- name: JAVA_OPTS
value: -Djenkins.install.runSetupWizard=false
ports:
- name: http-port
containerPort: 8080
- name: jnlp-port
containerPort: 50000
volumeMounts:
- name: jenkins-home
mountPath: /var/lib/jenkins
subPath: jenkins
volumes:
- name: jenkins-home
persistentVolumeClaim:
claimName: jenkins-pv-claim
Kubernetes persistent volume: Kubernetes 持久卷:
apiVersion: v1
kind: PersistentVolume
metadata:
name: jenkins-pv
labels:
type: local
spec:
storageClassName: manual
capacity:
storage: 6Gi
accessModes:
- ReadWriteOnce
hostPath:
path: "/var/lib"
Persistent Volume Claim持久卷声明
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: jenkins-pv-claim
spec:
storageClassName: manual
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 2Gi
I'm using Minikube for local development.我正在使用 Minikube 进行本地开发。 And of course Kubectl.当然还有 Kubectl。
Don't see what i'm doing wrong.不要看到我做错了什么。 All help is appreciated.感谢所有帮助。
The regular dockerhub jenkins image uses the path /var/jenkins_home
, not /var/lib/jenkins
for persistent data.常规 dockerhub jenkins 映像使用路径/var/jenkins_home
,而不是/var/lib/jenkins
用于持久数据。 Therefore you should use that path to mount your persistent volume.因此,您应该使用该路径来安装您的持久卷。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.