Files
taiji-AI-PAD/k8s/create-secrets.sh
T
2025-12-28 08:33:23 +00:00

111 lines
2.9 KiB
Bash
Executable File

#!/bin/bash
# 创建 Kubernetes Secrets 的交互式脚本
# 使用方法: ./create-secrets.sh
set -e
# 颜色输出
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
NC='\033[0m'
echo -e "${GREEN}创建 Kubernetes Secrets${NC}"
echo ""
# 检查 kubectl
if ! command -v kubectl &> /dev/null; then
echo -e "${RED}错误: kubectl 未安装${NC}"
exit 1
fi
# 检查命名空间
NAMESPACE="taiji-ai"
if ! kubectl get namespace $NAMESPACE &> /dev/null; then
echo -e "${YELLOW}创建命名空间 $NAMESPACE...${NC}"
kubectl create namespace $NAMESPACE
fi
# 提示输入各个 Secret 值
echo -e "${YELLOW}请输入以下配置信息(按 Enter 跳过可选项):${NC}"
echo ""
read -p "数据库 URL (DATABASE_URL): " DATABASE_URL
read -p "异步数据库 URL (ASYNC_DATABASE_URL): " ASYNC_DATABASE_URL
read -p "Redis URL (REDIS_URL): " REDIS_URL
read -p "JWT Secret: " JWT_SECRET
read -p "加密密钥 (ENCRYPTION_KEY): " ENCRYPTION_KEY
read -p "LiteLLM Master Key: " LITELLM_MASTER_KEY
read -p "OpenRouter API Key: " OPENROUTER_API_KEY
read -p "RapidAPI Key (可选): " RAPIDAPI_KEY
read -p "Azure Storage Connection String (可选): " AZURE_STORAGE_CONNECTION
# 构建 kubectl 命令
SECRET_ARGS=()
if [ -n "$DATABASE_URL" ]; then
SECRET_ARGS+=("--from-literal=database-url=$DATABASE_URL")
fi
if [ -n "$ASYNC_DATABASE_URL" ]; then
SECRET_ARGS+=("--from-literal=async-database-url=$ASYNC_DATABASE_URL")
fi
if [ -n "$REDIS_URL" ]; then
SECRET_ARGS+=("--from-literal=redis-url=$REDIS_URL")
fi
if [ -n "$JWT_SECRET" ]; then
SECRET_ARGS+=("--from-literal=jwt-secret=$JWT_SECRET")
fi
if [ -n "$ENCRYPTION_KEY" ]; then
SECRET_ARGS+=("--from-literal=encryption-key=$ENCRYPTION_KEY")
fi
if [ -n "$LITELLM_MASTER_KEY" ]; then
SECRET_ARGS+=("--from-literal=litellm-master-key=$LITELLM_MASTER_KEY")
SECRET_ARGS+=("--from-literal=litellm-api-key=$LITELLM_MASTER_KEY")
fi
if [ -n "$OPENROUTER_API_KEY" ]; then
SECRET_ARGS+=("--from-literal=openrouter-api-key=$OPENROUTER_API_KEY")
fi
if [ -n "$RAPIDAPI_KEY" ]; then
SECRET_ARGS+=("--from-literal=rapidapi-key=$RAPIDAPI_KEY")
fi
if [ -n "$AZURE_STORAGE_CONNECTION" ]; then
SECRET_ARGS+=("--from-literal=azure-storage-connection-string=$AZURE_STORAGE_CONNECTION")
fi
# 删除现有 Secret(如果存在)
if kubectl get secret taiji-secrets -n $NAMESPACE &> /dev/null; then
echo -e "${YELLOW}删除现有 Secret...${NC}"
kubectl delete secret taiji-secrets -n $NAMESPACE
fi
# 创建 Secret
if [ ${#SECRET_ARGS[@]} -gt 0 ]; then
echo -e "${YELLOW}创建 Secret...${NC}"
kubectl create secret generic taiji-secrets \
"${SECRET_ARGS[@]}" \
--namespace=$NAMESPACE
echo -e "${GREEN}Secret 创建成功!${NC}"
else
echo -e "${RED}错误: 没有提供任何 Secret 值${NC}"
exit 1
fi
# 验证 Secret
echo ""
echo -e "${YELLOW}验证 Secret:${NC}"
kubectl get secret taiji-secrets -n $NAMESPACE
echo ""
echo -e "${GREEN}完成!${NC}"