Skip to content

快速开始

部署模式

目前仅支持 Kubernetes 部署,并且提供两种部署模式 OperatorYaml 清单 。如果想 Docker Compose 或者二进制部署可自行修改。

必备清单

mysql,redis,minio,Jaeger . 如果本地已经有了,可以使用自己的,如果没有可以查看 基本环境部署章节,使用脚本统一初始化。

基本环境部署

提示

如果已经有 mysql,redis,s3,jaeger 推荐使用内部的,此部署方式仅用于演示。

并且需要提前准备好 NFS 或者集群内有可用的 SC。

仓库地址:

克隆仓库

bash
git clone https://github.com/ikubeops/kube-nova.git

# 修改关键配置
vim scripts/basic-deploy.sh
# 存储模式:storageClass 或 nfs
STORAGE_MODE="storageClass" # 需要集群哪已经配置了 storageClass
 
 
# 如果选择 nfs 模式,`需要先配置 NFS 服务器`
# 需要手动修改文件: manifests/basic/pvc-nfs.yaml

NFS 存储修改示例

bash
# 修改关键配置
vim scripts/basic-deploy.sh
# 存储模式:storageClass 或 nfs
STORAGE_MODE="nfs" # 需要集群哪已经配置了 storageClass

# 修改pvc
vim manifests/basic/pvc-nfs.yaml
# 修改 NFS 服务器地址和路径
apiVersion: v1
kind: PersistentVolume
metadata:
  name: mysql-pv
spec:
  capacity:
    storage: 20Gi
  accessModes:
    - ReadWriteOnce
  nfs:
    server: 192.168.1.100  # 修改为您的 NFS 服务器 IP
    path: /nfs/kube-nova/mysql  # 修改为实际路径

执行部署

bash
bash scripts/basic-deploy.sh

# 部分日志如下:
==========================================
 Kube-Nova 基础环境部署完成
==========================================

 MySQL 连接信息:
  集群内访问: mysql.kube-nova.svc.cluster.local:3306
  用户名: root
  密码: 8VlZ2lvIsKBCYSE3
  数据库: kube_nova
  端口转发: kubectl port-forward -n kube-nova svc/mysql 3306:3306

 Redis 连接信息:
  集群内访问: redis.kube-nova.svc.cluster.local:6379
  密码: 2VOSiz0vhGtxaBJb
  端口转发: kubectl port-forward -n kube-nova svc/redis 6379:6379
  连接测试: redis-cli -h localhost -p 6379 -a 2VOSiz0vhGtxaBJb ping

 MinIO 对象存储:
  集群内 API: minio-service.kube-nova.svc.cluster.local:9000
  集群内控制台: minio-service.kube-nova.svc.cluster.local:9001
  访问密钥: kube-nova-admin
  密钥: KubeNova@2024SecretKey!
  桶名: kube-nova (公开访问)
  已上传图片: public/kube-nova.png
  端口转发:
    API:      kubectl port-forward -n kube-nova svc/minio-service 9000:9000
    控制台:    kubectl port-forward -n kube-nova svc/minio-service 9001:9001
  访问控制台: http://localhost:9001

 Jaeger 链路追踪:
  集群内 Collector: jaeger-collector.kube-nova.svc.cluster.local
  HTTP Collector: http://jaeger-collector:14268/api/traces
  gRPC Collector: jaeger-collector:14250
  OTLP gRPC: jaeger-collector:4317
  OTLP HTTP: http://jaeger-collector:4318
  UI NodePort: 30286
  访问 UI: http://<NodeIP>:30286
  端口转发: kubectl port-forward -n kube-nova svc/jaeger-ui 16686:16686
  访问 UI: http://localhost:16686

存储配置:
  存储模式: storageClass
  说明: 使用 Kubernetes StorageClass 动态供应

常用命令:
  查看所有资源:
    kubectl get all -n kube-nova
  查看 PVC 状态:
    kubectl get pvc -n kube-nova
  查看 Pod 日志:
    kubectl logs -n kube-nova <pod-name>
  进入 Pod:
    kubectl exec -it -n kube-nova <pod-name> -- sh
  删除所有资源:
    kubectl delete namespace kube-nova

==========================================


[✓]  部署完成!所有服务已成功启动!

脚本将自动完成以下步骤:

  • 环境检查 - 检查 kubectl、集群连接、存储配置
  • 创建命名空间 - 创建 kube-nova 命名空间
  • 部署 PVC - 根据选择的存储模式创建持久化存储
  • 等待 PVC 绑定 - 等待所有 PVC 成功绑定
  • 部署基础服务 - 依次部署 MySQL、Redis、MinIO、Jaeger
  • 等待服务就绪 - 等待所有 Pod 进入 Running 状态
  • 初始化 MinIO - 创建存储桶并上传默认图片
  • 导入数据库 - 初始化 MySQL 数据库表结构和基础数据
  • 显示访问信息 - 输出所有服务的访问地址和凭证

已有环境操作如下

Mysql: 请手动导入代码仓库中 sql/db.sql 到数据库中。

Minio: 上传 images/kube-nova.png 到 存储桶 public/kube-nova.png

Operator 部署

克隆地址

根据网络环境可以自行选择克隆仓库。

bash
git clone https://gitee.com/ikubeops/kube-nova-operator.git

部署控制器

bash
cd kube-nova-operator/
kubectl apply -f dist/install.yaml

部署 kube-nova

目前提供了三个 yaml 文件可根据需求自行选择

bash
deploy/
├── deploy-ingress.yaml
├── ingress+htts.yaml
└── nodeport.yaml

配置文件

介绍 operator 配置文件参数。

访问

默认用户名:

  • super_admin
  • Admin@123456
bash
root@k8s-181:~/kube-nova/kube-nova-operator# kubectl  get kn -n kube-nova -w
NAME              阶段    WEB   访问地址                        运行时长
kubenova-sample   就绪    就绪    http://172.16.1.183:30088   79s

平台登陆

Manifests 部署

平台同时提供了 YAML 清单方式,可自行根据需求进行修改。

清单在 kube-nova 仓库中,如下

bash
cd /kube-nova/manifests/base
tree
.
├── 00-secret.yaml    # 主要修改此文件
├── 01-rbac.yaml
├── 99-kube-nova-web.yaml
├── console-api-configmap.yaml
├── console-api-deployment.yaml
├── console-api-service.yaml
├── console-rpc-configmap.yaml
├── console-rpc-deployment.yaml
├── console-rpc-service.yaml
├── manager-api-configmap.yaml
├── manager-api-deployment.yaml
├── manager-api-service.yaml
├── manager-rpc-configmap.yaml
├── manager-rpc-deployment.yaml
├── manager-rpc-service.yaml
├── portal-api-configmap.yaml
├── portal-api-deployment.yaml
├── portal-api-service.yaml
├── portal-rpc-configmap.yaml
├── portal-rpc-deployment.yaml
├── portal-rpc-service.yaml
├── workload-api-configmap.yaml
├── workload-api-deployment.yaml
└── workload-api-service.yaml

Secret 文件

主要修改 secret 文件即可,所有服务的配置会通过环境变量注入。

yaml
---
apiVersion: v1
kind: Secret
metadata:
  name: kube-nova-secret
  namespace: kube-nova
type: Opaque
stringData:
  # 全局超时
  DEFAULT_TIMEOUT: "30000"

  # MySQL 基础参数
  MYSQL_HOST: "mysql"
  MYSQL_PORT: "3306"
  MYSQL_DATABASE: "kube_nova"
  MYSQL_USER: "root"
  MYSQL_PASSWORD: "8VlZ2lvIsKBCYSE3"
  MYSQL_MAX_OPEN_CONNS: "100"
  MYSQL_MAX_IDLE_CONNS: "50"
  MYSQL_CONN_MAX_LIFETIME: "30m"

  # Redis 基础参数
  REDIS_HOST: "redis"
  REDIS_PORT: "6379"
  REDIS_PASSWORD: "2VOSiz0vhGtxaBJb"
  REDIS_TYPE: "node"
  REDIS_TLS: "false"
  REDIS_NONBLOCK: "true"
  REDIS_PING_TIMEOUT: "3s"

  # MinIO 配置
  MINIO_ENDPOINT: "minio-service:9000"
  MINIO_ACCESS_KEY: "kube-nova-admin"
  MINIO_SECRET_KEY: "KubeNova@2024SecretKey!"
  MINIO_BUCKET: "kube-nova"
  MINIO_USE_TLS: "false"

  # JWT
  JWT_ACCESS_SECRET: "zk5Lp8m+0g7lvvLcnbUHPzQFEsRAmvNIn9tXdx0o80U="
  JWT_ACCESS_EXPIRE: "86400"
  JWT_REFRESH_SECRET: "zk5Lp8m+0g7lvvLcnbUHPzQFEsRAmvNIn9tXdx0o80U="
  JWT_REFRESH_EXPIRE: "604800"
  JWT_REFRESH_AFTER: "604800"

  # Webhook
  ALERTMANAGER_WEBHOOK_TOKEN: "mRwErqZaQVrxfyhiDQrdiQohAsONwSTtwhcmFXpCcaGavcINqorVoWINnSFFAijb"

  # Jaeger
  JAEGER_ENDPOINT: "http://jaeger-collector:14268/api/traces"
  TELEMETRY_SAMPLER: "1.0"
  TELEMETRY_BATCHER: "jaeger"

  # Portal
  PORTAL_NAME: "Kube-Nova 云原生平台"
  PORTAL_URL: "http://www.yanshicheng.com:8888"
  DEMO_MODE: "true"

  # 其他
  INJECT_IMAGE: "harbor.ikubeops.local/public/network-multitool:latest"