在k8s上部署Jenkins

在k8s上部署Jenkins

谷歌在k8s上部署Jenkins的方法,都写的很复杂,各种配置文件一堆,还都失败了!最终部署成功后发现只需要一句命令就可以了。

这个命令就是:

1
kubectl run jenkins --image=jenkinsci/blueocean --port 5000

命令解释

  1. --image=jenkinsci/blueocean用来指定镜像,jenkinsci/blueocean image(来自 the Docker Hub repository)。 该镜像包含当前的长期支持 (LTS) 的Jenkins版本 (可以投入使用) ,捆绑了所有Blue Ocean插件和功能。这意味着你不需要单独安装Blue Ocean插件。
  2. --port 端口号用于指定deployment的端口号,可以随便指定.

通过kubectl get deployments可以看到

1
2
NAME       READY   UP-TO-DATE   AVAILABLE   AGE
jenkins 1/1 1 1 10s

显示READY说明deployment创建成功。这是在本地集群已经可以访问,如果想要在外部访问,需要将deployment暴露未service:

1
kubectl expose deployment jenkins --type=NodePort --target-port=8080

命令解释:

  1. --type=NodePort是将service的类型设置为NodePort,这样才能被外部看到
  2. --target-port=8080是映射(例如“发布”)jenkinsci/blueocean 容器的端口8080到主机上的端口8080

这一步完成后执行kubectl get service查看:

1
2
NAME         TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)           AGE
jenkins NodePort 10.107.210.195 <none> 5000:30509/TCP 6m35s

可以看出service对外暴露的端口是30509,可以通过kubectl edit service jenkins命令将配置中的- nodePort修改为你想要暴露出去的端口即可。

浏览器访问得

image-20190626205811349

这里要求Administrator password,正常来说是通过/var/jenkins_home/secrets/initialAdminPassword来查看,但是因为运行在docker中,所以需要查看docker的log。我们这里更进一步又把docker放到了k8s中,所以要查看jenkins的docker对应的pod的log,方法如下:

  1. kubectl get pods,找到jenkins对应的pod的NAME,我的对应的名称为jenkins-747ddfbdb6-4msmw

  2. kubectl logs jenkins-747ddfbdb6-4msmw查看pod的log

  3. 在显示的log中就有我们需要的Administrator password,格式如下:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    jenkins.install.SetupWizard init
    INFO:

    *************************************************************
    *************************************************************
    *************************************************************

    Jenkins initial setup is required. An admin user has been created and a password generated.
    Please use the following password to proceed to installation:

    7f54c6c500e242e9bbc804c169c52a3c

    This may also be found at: /var/jenkins_home/secrets/initialAdminPassword

    *************************************************************
    *************************************************************
    *************************************************************

    输入上面的password就能进入注册界面:

    image-20190626210358399

参考文档

Jenkins官方文档:https://jenkins.io/zh/doc/book/installing/#setup-wizard