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)。

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

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

    原文作者:咕噜拔拔爱苹果
    原文地址: https://www.jianshu.com/p/dbfe2eee3c07
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞