首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >有没有办法更新在Kubernetes运行的Jenkins?

有没有办法更新在Kubernetes运行的Jenkins?
EN

Stack Overflow用户
提问于 2020-04-28 15:59:04
回答 1查看 1.7K关注 0票数 1

我试着在库伯内特斯管理詹金斯,但是詹金斯的版本已经过时了。它说我至少需要2.138.4版本的Kubernetes插件。

我正在使用来自Docker的 jenkins映像("jenkins/jenkins:lts")。但是当我尝试在Kubernetes中运行这个程序时,它说版本是2.60.3。我以前使用过Jenkins的一个非常旧的版本(2.60.3),但是我更新了Dockerfile以使用最新的映像。在那之后,我再次建立了形象,并把它扔给库伯内特斯。在再次部署之前,我甚至删除了我的Kubernetes部署和服务。我目前正在使用Minikube的开发环境中工作。

Dockerfile:

代码语言:javascript
复制
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的部署:

代码语言:javascript
复制
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.0
          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/jenkins_home
      volumes:
        - name: jenkins-home
          emptyDir: {}

库伯奈特斯服务队:

代码语言:javascript
复制
apiVersion: v1
kind: Service
metadata:
  name: jenkins
spec:
  type: NodePort
  selector:
    app: jenkins
  ports:
    - port: 8080
      targetPort: 8080

我认为我的Kubernetes配置很好,所以我猜它和Docker有关吧?

我在这里错过了什么/做错了什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-04-28 16:47:37

TL;DR

要使用更新部署,您需要基于新的Jenkins发行版的新Jenkins映像:

代码语言:javascript
复制
docker build -t mikemanders/my-jenkins-image:1.1 .
docker push mikemanders/my-jenkins-image
kubectl set image deployment/jenkins mikemanders/my-jenkins-image=1.1 --record

Kubernetes部署images而不是dockerfiles

根据形象人

您可以创建您的Docker映像并将其推送到注册表中,然后在Kubernetes吊舱中引用它。 容器的image属性支持与docker命令相同的语法,包括私有注册表和标记。

所以,您需要一个映像来部署。

更新你的形象

若要更新注册表中的图像,请使用docker build -tdocker push

代码语言:javascript
复制
docker build -t mikemanders/my-jenkins-image:1.1
docker push mikemanders/my-jenkins-image

它将使用更新的jenkins/jeinkis:lts重建图像。然后,图像将上传到集装箱登记处

问题是,在更新集群之前,您正在更新映像版本(例如,1.0->1.1)。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61484545

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档