fix: 将 k3s-ansible 作为普通目录添加

This commit is contained in:
fei
2026-02-04 23:43:40 +08:00
commit 7f6c8b9b92
40 changed files with 10909 additions and 0 deletions

135
scripts/push-demo-app.sh Executable file
View File

@@ -0,0 +1,135 @@
#!/bin/bash
set -e
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
PROJECT_DIR="$(dirname "$SCRIPT_DIR")"
CONFIG_FILE="$PROJECT_DIR/config/cluster-vars.yml"
echo "=== 推送示例应用到Gitea ==="
# 读取配置
GITEA_USER=$(yq eval '.gitea_user_name' "$CONFIG_FILE")
GITEA_PASSWORD=$(yq eval '.gitea_user_password' "$CONFIG_FILE")
GITEA_ORG=$(yq eval '.gitea_org_name' "$CONFIG_FILE")
GITEA_REPO=$(yq eval '.gitea_repo_name' "$CONFIG_FILE")
# 获取Gitea NodePort
GITEA_NODEPORT=$(kubectl get svc gitea-http -n gitea -o jsonpath='{.spec.ports[0].nodePort}')
NODE_IP=$(kubectl get nodes -o jsonpath='{.items[0].status.addresses[?(@.type=="ExternalIP")].address}')
if [ -z "$NODE_IP" ]; then
NODE_IP=$(kubectl get nodes -o jsonpath='{.items[0].status.addresses[?(@.type=="InternalIP")].address}')
fi
GITEA_URL="http://$NODE_IP:$GITEA_NODEPORT"
REPO_URL="$GITEA_URL/$GITEA_ORG/$GITEA_REPO.git"
# 创建临时目录
TEMP_DIR=$(mktemp -d)
cd "$TEMP_DIR"
echo "📝 创建示例应用清单..."
# 创建manifests目录
mkdir -p manifests
# 创建示例Deployment
cat > manifests/deployment.yaml <<EOF
apiVersion: apps/v1
kind: Deployment
metadata:
name: demo-nginx
namespace: default
spec:
replicas: 2
selector:
matchLabels:
app: demo-nginx
template:
metadata:
labels:
app: demo-nginx
spec:
containers:
- name: nginx
image: nginx:1.25-alpine
ports:
- containerPort: 80
resources:
requests:
memory: "64Mi"
cpu: "100m"
limits:
memory: "128Mi"
cpu: "200m"
EOF
# 创建示例Service
cat > manifests/service.yaml <<EOF
apiVersion: v1
kind: Service
metadata:
name: demo-nginx
namespace: default
spec:
type: NodePort
selector:
app: demo-nginx
ports:
- port: 80
targetPort: 80
nodePort: 30080
EOF
# 创建README
cat > README.md <<EOF
# Demo Application
这是一个由ArgoCD管理的示例应用。
## 应用信息
- **应用名称**: demo-nginx
- **镜像**: nginx:1.25-alpine
- **副本数**: 2
- **访问端口**: NodePort 30080
## 更新应用
修改 \`manifests/\` 目录下的文件并提交到GitArgoCD会自动同步部署。
## 测试访问
\`\`\`bash
curl http://<NODE_IP>:30080
\`\`\`
EOF
# 初始化Git仓库
echo "🔧 初始化Git仓库..."
git init -b main
git config user.name "$GITEA_USER"
git config user.email "$GITEA_USER@example.com"
git add .
git commit -m "Initial commit: Add demo nginx application
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>"
# 推送到Gitea
echo "📤 推送到Gitea..."
git remote add origin "$REPO_URL"
# 使用用户名密码推送(临时方案)
# URL encode the password to handle special characters
ENCODED_PASSWORD=$(python3 -c "import urllib.parse; print(urllib.parse.quote('$GITEA_PASSWORD'))")
git push -u origin main || {
echo "⚠️ 首次推送失败,尝试使用凭证..."
git remote set-url origin "http://$GITEA_USER:$ENCODED_PASSWORD@$NODE_IP:$GITEA_NODEPORT/$GITEA_ORG/$GITEA_REPO.git"
git push -u origin main
}
# 清理
cd "$PROJECT_DIR"
rm -rf "$TEMP_DIR"
echo "✅ 示例应用推送成功!"
echo "📊 仓库地址: $REPO_URL"
echo "🌐 访问Gitea查看: $GITEA_URL/$GITEA_ORG/$GITEA_REPO"
echo "⏳ 等待ArgoCD同步约3分钟..."
echo "📊 查看同步状态: kubectl get application -n argocd"