Kubernetes 学习笔记(四):在 Minikube 中搭建 Jenkins Server

有一段时间没写了,这个坑一直在这怪难受的决定把它填了。

大体的搭建流程和先前写到的 Git Server 大同小异,但细节部分不尽相同,有兴趣的同僚亦可移步至 这里

关于 Kubernetes 的配置请移步至 这里


作为我近日工作的 Microservices framework 中的重要一环,Jenkins 的搭建自然成为了重中之重。

二话不说先上我的 Dockerfile:

FROM jenkins:alpine

MAINTAINER Ralph Wang

# 因为在公司工作的关系内部网络经常会阻碍 Container 与外部的连结,遂加下文以设置代理。

ENV http_proxy ${proxy_address}:${proxy_port}

ENV https_proxy ${proxy_address}:${proxy_port}

USER root

# Download and config kubectl(-s:Silent or quiet mode;-O:Download;-S:Show error)

RUN curl -L -O https://storage.googleapis.com/kubernetes-release/release/$(curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt)/bin/linux/amd64/kubectl; chmod +x ./kubectl; mv ./kubectl /usr/local/bin/kubectl

# Download and config docker

RUN curl -sSL -O https://get.docker.com/builds/Linux/x86_64/docker-latest.tgz && tar -xvzf docker-latest.tgz; mv docker/* /usr/bin/ && rm docker-latest.tgz

上述两个 curl command 分别 download / config 了 kubectl 和 docker 两个命令,docker 是用来在 Jenkins 的任务过程中创建 Image,kubectl 是用来在 Jenkins 的任务中实现 Deployment 和 Service 的创建。


完成 Dockerfile 之后,我们需要建立此 Image,我将其命名为 jenkinserver。

再来我们需要用一个 config 文件来实现创建 Kubernetes Deployment,下面就是我所编写的 jenkins-deployment.yaml(切记 .yaml 文件不能使用 Tab):

apiVersion: apps/v1

kind: Deployment

metadata:

  name: jenkins

  labels:

    app: jenkins

spec:

  replicas: 1 # 我目前只需要一个 Instance 所以就设置为1。

  selector:

    matchLabels:

      app: jenkins

  template: # This is the pod template。

    metadata:

      labels:

        app: jenkins

    spec:

      containers:

      - name: jenkins

        image: jenkinserver # Image 的名字。

        imagePullPolicy: Never # 迫使 Kubernetes 使用本地镜像。

        ports:

        - containerPort: 8080 # 8080 作为 Web Console 的 Port。

          name: web

          protocol: TCP

        - containerPort: 50000

          name: agent

          protocol: TCP

        volumeMounts:

        - mountPath: /var/run/docker.sock # 首先挂载了本地 docker 的接口,以便在 Jenkins Container 中访问 docker。

          name: docker-sock-volume

        - mountPath: /var/jenkins_home # 其次挂载了 jenkins_home 以便在 Container 被摧毁是不丢失 Jenkins Server 中的内容。

          name: jenkins-volume

        - mountPath: /var/.kube/config # 最后挂载了外部 Kubernetes 的配置文件,以确保可以在 Jenkins Container 内部对外部的 Kubernetes 进行修改。

          name: kube-config

      volumes:

      - name: docker-sock-volume # Docker sock 卷。

        hostPath:

          path: /var/run/docker.sock

      - name: jenkins-volume # Jenkins 卷。

        hostPath:

          path: /c/Users/ralph.wang/.jenkins

      - name: kube-config # Kubernetes config 卷。

        hostPath:

          path: /c/Users/ralph.wang/.kube/config

By running:

kubectl create -f jenkins-deployment.yaml

便可以实现创建 Deployment,随后可以通过

kubectl get deployment jenkins

进行确认。


建立完 Deployment 之后,需要搭载 Service 来确保可以在外部进行连结,下面是我创建的 jenkins-service.yaml:

apiVersion: v1

kind: Service

metadata:

  labels:

    app: jenkins

  name: jenkins

spec:

  type: NodePort # 和笔记之三的 GitServer 一样采用 NodePort 的形式直接曝露 Service。

  ports:

  - port: 8080

    targetPort: 8080

    nodePort: 32200

    name: web

  selector:

    app: jenkins

随后我们可以使用

kubectl create -f jenkins-service.yaml

进行服务的创建,并且使用

kubectl get service jenkins

进行服务的再确认。


初始 Jenkins 的时候会需要在 console 里输入初始密码,这个密码可以在 /var/jenkins_home/secrets/initialAdminPassword 中找到(当然因为我们在上文中使用了 Volume,所以自然可以在本地中浏览该文件,即范例中的 /c/Users/ralph.wang/.jenkins/secrets/initialAdminPassword)。

配置完成之后即可开始使用啦!

希望能对大家有所帮助。文章的不足之处也请留言告知,感谢!

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,293评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,604评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,958评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,729评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,719评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,630评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,000评论 3 397
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,665评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,909评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,646评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,726评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,400评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,986评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,959评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,197评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,996评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,481评论 2 342

推荐阅读更多精彩内容