DevOps 1 – Jenkins @ K8S 安装笔记

安装 jenkins

1 创建一个新的 namespace。此处不需要 sidecar 自动注入。

apiVersion: v1
kind: Namespace
metadata:
  name: cicd
spec:
  finalizers:
    - kubernetes

2 创建 Deployment 部署 jenkins 应用。下面的脚本没有绑定 volume,实际使用的时候可能需要较大空间,建议绑定额外的存储磁盘 -v jenkins_home:/var/jenkins_home。参考官方容器说明:https://github.com/jenkinsci/docker/blob/master/README.md

apiVersion: apps/v1
kind: Deployment
metadata:
  name: jenkins
  namespace: cicd
  labels:
    app: jenkins
    version: v2.60.3
spec:
  replicas: 1 
  selector:
    matchLabels:
      app: jenkins
      version: v2.60.3
  template:
    metadata:
      labels:
        app: jenkins
        version: v2.60.3
    spec:
      containers:
        - name: jenkins
          image: jenkins:2.60.3-alpine
          ports:
          - containerPort: 8080
            protocol: TCP
          - containerPort: 50000
            protocol: TCP  

3 创建 Service,记得要放开 8080 和 50000 的访问端口。其中 50000 端口是内部代理端口,安装插件等操作都要使用此端口。

apiVersion: v1
kind: Service
metadata:
  name: jenkins
  namespace: cicd
  labels:
    app: jenkins
spec:
  ports:
  - port: 8080
    name: http
  - port: 50000
    name: agent
  selector:
    app: jenkins

4 创建 ingress-gateway 开放外网访问,由于我的集群已经开通了 istio,所以直接使用了 istio 的ingress gateway

apiVersion: networking.istio.io/v1alpha3
kind: Gateway
metadata:
  name: jenkins-gateway
  namespace: cicd
spec:
  selector:
    istio: ingressgateway 
  servers:
  - port:
      number: 8080
      name: http
      protocol: HTTP
    hosts:
    - "*"
---
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
  name: jenkins-gateway
  namespace: cicd
spec:
  hosts:
  - "*"
  gateways:
  - jenkins-gateway
  http:
  - match:
    - uri:
        prefix: /
    route:
    - destination:
        host: jenkins
        port:
          number: 8080

Jenkins 初始化

现在访问 http://ip:8080,发现 Jenkins 启动了。

1 进入 pod 中,查看初始密码。

kubectl exec jenkins-769cdbbdfb-4fk9s -n cicd -- cat /var/jenkins_home/secrets/initialAdminPassword

2 输入密码,选择安装插件进入下一步,我选择了推荐插件。等待若干分钟/小时,等他安装。

3 创建管理员用户。

正文完