安装 jenkins
1 创建一个新的 namespace。此处不需要 sidecar 自动注入。
代码语言:txt复制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 端口是内部代理端口,安装插件等操作都要使用此端口。
代码语言:txt复制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
代码语言:txt复制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 中,查看初始密码。
代码语言:txt复制kubectl exec jenkins-769cdbbdfb-4fk9s -n cicd -- cat /var/jenkins_home/secrets/initialAdminPassword
2 输入密码,选择安装插件进入下一步,我选择了推荐插件。等待若干分钟/小时,等他安装。
3 创建管理员用户。