fix: 将 k3s-ansible 作为普通目录添加
This commit is contained in:
135
scripts/push-demo-app.sh
Executable file
135
scripts/push-demo-app.sh
Executable 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/\` 目录下的文件并提交到Git,ArgoCD会自动同步部署。
|
||||
|
||||
## 测试访问
|
||||
\`\`\`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"
|
||||
Reference in New Issue
Block a user