feat(k8s): align install.sh with latest opsx-loki version

- cloud auto-detection (ACK/TKE/EKS/CCE/GKE/AKS/K3s/self-hosted) via
  node providerID, used for deployment banner and failure diagnostics
- storage class resolution chain: explicit STORAGE_CLASS > default
  annotation > sole SC; self-hosted clusters without any SC now get a
  zero-dependency static local PV (hostPath DirectoryOrCreate +
  nodeAffinity pin + WaitForFirstConsumer + Retain), LOCAL_STORAGE
  auto/off/force tri-state
- PVC rendered with resolved storageClassName + PVC_SIZE; image
  rendered into deployment via IMAGE env
- rollout failure diagnostics per waiting-reason: ImagePullBackOff
  lists per-cloud registry suggestions, CreateContainerConfigError
  points to secret, PVC Pending suggests per-cloud SC
- colored info/ok/warn/die helpers, /dev/urandom key fallback,
  completion banner with pod/node/ip, port-forward and backup hints
- kubernetes/examples/: alibaba ALB + tencent qcloud (CLB health
  check annotations, NodePort backend) ingress templates, secret
  example moved here (opsx-loki layout)
- README updated with env-var table and local-storage notes
This commit is contained in:
Logan.Li committed 2026-10-26 22:09:33 +08:00
1 parent 0b16488029
commit 738498fea3
4 files changed
+367 -134

No files matched your search

+32
View File
@@ -0,0 +1,32 @@
# 腾讯云 TKE 专用 Ingress 模板
#
# 与通用 ingress.yaml 的区别:
# 通用用 nginx/alb class → TKE 不支持
# TKE 用 ingressClassName: qcloud,且后端 Service 必须是 NodePort 类型
#
# 使用前:
# 1) 先创建 NodePort Service:kubectl apply -f kubernetes/service-nodeport.yaml
# 2) 把下面 host 改成你要用的域名
# 3) kubectl apply -f kubernetes/examples/ingress-tke.yaml
# 4) 在腾讯云控制台/DNS 把该域名解析到 CLB 的公网 IP
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: opsxsql
namespace: opsxsql
annotations:
cloud.tencent.com/health-check-path: /health
cloud.tencent.com/health-check-interval: "10"
spec:
ingressClassName: qcloud
rules:
- host: opsxsql.example.com # ← 改成你的域名
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: opsxsql-nodeport
port:
number: 80
+23
View File
@@ -0,0 +1,23 @@
# 可选:阿里云 ACK 用 ALB IngressClass 的模板
# 其他云:腾讯 TKE 用 examples/ingress-tke.yaml;自建/nginx 用仓库根 kubernetes/ingress.yaml
# 若继续走外部 WAF 回源到 Service,则不需要本文件
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: opsxsql
namespace: opsxsql
annotations:
alb.ingress.kubernetes.io/healthcheck-path: /health
spec:
ingressClassName: alb
rules:
- host: opsxsql.example.com # ← 改成你的域名
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: opsxsql
port:
number: 80
+14
View File
@@ -0,0 +1,14 @@
# 只做模板:不要提交真实密钥。
# 推荐直接用命令创建(避免密钥落盘到 Git;install.sh 已自动处理):
# kubectl -n opsxsql create secret generic opsxsql-secrets \
# --from-literal=SECRET_KEY="$(openssl rand -hex 32)" \
# --from-literal=JWT_SECRET="$(openssl rand -hex 32)"
apiVersion: v1
kind: Secret
metadata:
name: opsxsql-secrets
namespace: opsxsql
type: Opaque
stringData:
SECRET_KEY: "REPLACE_WITH_32_BYTES_HEX"
JWT_SECRET: "REPLACE_WITH_32_BYTES_HEX"