AI 摘要
在 Kubernetes 集群中安装 kuboard V4,通过创建数据库、命名空间、secret、deployment、svc 和 ingress 资源清单完成部署;访问时遇到 ingress 重定向问题,最终定位为虚拟机暂停后时间未同步导致 cookie 异常。

一、引子

有时候需要一个可视化面板来管理 K8s,各种场景下都强制使用命令行是不合理的。

kuboard 有 V3、V4 版本,自己实验环境的集群版本较新,只能安装 V4 版本.

官方安装文档

二、安装

2.1 创建数据库

1
2
3
4
CREATE DATABASE kuboard DEFAULT CHARACTER SET = 'utf8mb4' DEFAULT COLLATE = 'utf8mb4_unicode_ci';
create user 'kuboard'@'192.168.10.%' identified by 'Kuboard123';
grant all privileges on kuboard.* to 'kuboard'@'192.168.10.%';
FLUSH PRIVILEGES;

2.2 创建资源清单

  1. 创建命名空间、
1
kubectl create namespace kuboard
  1. 创建 secret 来存数据库密码
1
2
kubectl create secret generic kuboard-db -n kuboard \
--from-literal=DB_PASSWORD='Kuboard123'
  1. deolpyment
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# deolpyment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: kuboard
namespace: kuboard
spec:
replicas: 1
selector:
matchLabels: { app: kuboard }
template:
metadata:
labels: { app: kuboard }
spec:
containers:
- name: kuboard
image: harbor.qx.lab/dockerhub/eipwork/kuboard:v4 # 等价于 eipwork/kuboard:v4
ports:
- containerPort: 80
env:
- { name: TZ, value: Asia/Shanghai }
- { name: DB_DRIVER, value: org.mariadb.jdbc.Driver }
- { name: DB_URL, value: "jdbc:mariadb://192.168.10.1:3306/kuboard?serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true" }
- { name: DB_USERNAME, value: kuboard }
- name: DB_PASSWORD
valueFrom:
secretKeyRef: { name: kuboard-db, key: DB_PASSWORD }
  1. svc
1
2
3
4
5
6
7
8
9
10
11
# service.yaml
apiVersion: v1
kind: Service
metadata:
name: kuboard
namespace: kuboard
spec:
selector: { app: kuboard }
ports:
- port: 80
targetPort: 80
  1. ingress
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
# ingress.yaml
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: kuboard
namespace: kuboard
annotations:
cert-manager.io/cluster-issuer: qx.lab-ca-issuer
spec:
ingressClassName: traefik
tls:
- hosts: [kuboard.qx.lab]
secretName: kuboard-tls
rules:
- host: kuboard.qx.lab
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: kuboard
port:
number: 80

三、访问

https://kuboard.qx.lab

用户名:admin

密码:Kuboard123

四、插曲

刚刚最后访问的时候,其实有点问题,开始怀疑是 ingress 反复重定向,后来发现是暂停虚拟机后,时间没有同步,导致 cookie 有些问题。

  1. 直接转发流量到svc,而不经过ingress
1
kubectl port-forward -n kuboard --address 0.0.0.0 deploy/kuboard 8080:80