fix:统一使用k8s的namespace
All checks were successful
Build NGINX on Ubuntu / build-and-deploy (push) Successful in 58s

This commit is contained in:
huangzhiqiang 2025-06-12 14:09:35 +08:00
parent 73b55440f8
commit de93ff12a9
3 changed files with 38 additions and 9 deletions

View File

@ -254,7 +254,7 @@ jobs:
export HARBOR_USERNAME="${{ secrets.HARBOR_USERNAME }}"
export HARBOR_PASSWORD="${{ secrets.HARBOR_PASSWORD }}"
export NGINX_IMAGE_TAG="${{ github.sha }}"
export NAMESPACE="${{ vars.K8S_NAMESPACE || 'app-nginx' }}"
export K8S_NAMESPACE="${{ vars.K8S_NAMESPACE || 'app-nginx' }}" # 修改变量名
# 进入 k8s 目录
cd k8s

View File

@ -126,9 +126,10 @@ update_deployment_image() {
# 备份原文件
cp "$deployment_file" "${deployment_file}.bak"
# 使用 sed 替换环境变量,替换 $HARBOR_REGISTRY 和 $NGINX_IMAGE_TAG
# 使用 sed 替换环境变量
sed -i.tmp "s|\$HARBOR_REGISTRY|${HARBOR_REGISTRY}|g" "$deployment_file"
sed -i.tmp "s|\$NGINX_IMAGE_TAG|${image_tag}|g" "$deployment_file"
sed -i.tmp "s|\$NAMESPACE|${DEPLOY_NAMESPACE}|g" "$deployment_file" # 添加命名空间替换
# 如果有其他环境变量需要替换,可以继续添加类似的 sed 命令
# 例如sed -i.tmp "s|\$NAMESPACE|${NAMESPACE}|g" "$deployment_file"
@ -161,12 +162,32 @@ wait_for_deployment() {
print_info "等待部署就绪..."
# 添加初始检查和调试信息
if ! kubectl get deployment "$deployment_name" -n "$namespace" &> /dev/null; then
print_error "找不到部署 $deployment_name"
print_info "检查部署状态..."
kubectl get deployments -n "$namespace" -o wide
print_info "检查Pod状态..."
kubectl get pods -n "$namespace" -o wide
print_info "检查最近事件..."
kubectl get events -n "$namespace" --sort-by='.lastTimestamp'
exit 1
fi
if kubectl wait --for=condition=available deployment/"$deployment_name" \
--namespace="$namespace" --timeout="${timeout}s"; then
print_success "部署已就绪"
else
print_error "部署超时,请检查部署状态"
# 添加更详细的错误信息
print_info "Pod状态:"
kubectl get pods -n "$namespace" -l app=nginx -o wide
print_info "描述deployment:"
kubectl describe deployment "$deployment_name" -n "$namespace"
print_info "最近的事件:"
kubectl get events -n "$namespace" --sort-by='.lastTimestamp' | tail -n 20
print_info "Pod日志:"
kubectl logs -n "$namespace" -l app=nginx --tail=50
exit 1
fi
}
@ -234,8 +255,14 @@ get_access_info() {
main() {
print_info "开始 NGINX Kubernetes 自动部署..."
# 设置默认值
local namespace=${NAMESPACE:-default}
# 修改命名空间处理逻辑,优先使用 CI 变量
local namespace="app-nginx" # 默认值
if [[ -n "${K8S_NAMESPACE}" ]]; then
namespace="${K8S_NAMESPACE}" # 使用 GitHub Actions 变量
fi
print_info "使用命名空间: $namespace"
local deployment_file=${DEPLOYMENT_FILE:-./nginx-deployment.yaml}
local image_tag=${NGINX_IMAGE_TAG:-latest}
@ -245,6 +272,8 @@ main() {
create_namespace "$namespace"
create_harbor_secret "$namespace"
# 添加命名空间环境变量替换
export DEPLOY_NAMESPACE="$namespace"
update_deployment_image "$deployment_file" "$image_tag"
apply_k8s_config "$deployment_file"
wait_for_deployment "$namespace"

View File

@ -17,7 +17,7 @@ apiVersion: v1
kind: ConfigMap
metadata:
name: nginx-config
namespace: default
namespace: $NAMESPACE # 使用变量
data:
nginx.conf: |
# 由于以非root用户运行user指令会被忽略可以移除
@ -182,7 +182,7 @@ apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
namespace: default
namespace: $NAMESPACE # 使用变量
labels:
app: nginx
version: v1
@ -330,7 +330,7 @@ apiVersion: v1
kind: Service
metadata:
name: nginx-service
namespace: default
namespace: $NAMESPACE # 使用变量
labels:
app: nginx
spec:
@ -350,7 +350,7 @@ apiVersion: autoscaling/v2
kind: HorizontalPodAutoscaler
metadata:
name: nginx-hpa
namespace: default
namespace: $NAMESPACE # 使用变量
spec:
scaleTargetRef:
apiVersion: apps/v1
@ -391,7 +391,7 @@ apiVersion: policy/v1
kind: PodDisruptionBudget
metadata:
name: nginx-pdb
namespace: default
namespace: $NAMESPACE # 使用变量
spec:
minAvailable: 1
selector: