fix:统一使用k8s的namespace
All checks were successful
Build NGINX on Ubuntu / build-and-deploy (push) Successful in 58s
All checks were successful
Build NGINX on Ubuntu / build-and-deploy (push) Successful in 58s
This commit is contained in:
parent
73b55440f8
commit
de93ff12a9
@ -254,7 +254,7 @@ jobs:
|
|||||||
export HARBOR_USERNAME="${{ secrets.HARBOR_USERNAME }}"
|
export HARBOR_USERNAME="${{ secrets.HARBOR_USERNAME }}"
|
||||||
export HARBOR_PASSWORD="${{ secrets.HARBOR_PASSWORD }}"
|
export HARBOR_PASSWORD="${{ secrets.HARBOR_PASSWORD }}"
|
||||||
export NGINX_IMAGE_TAG="${{ github.sha }}"
|
export NGINX_IMAGE_TAG="${{ github.sha }}"
|
||||||
export NAMESPACE="${{ vars.K8S_NAMESPACE || 'app-nginx' }}"
|
export K8S_NAMESPACE="${{ vars.K8S_NAMESPACE || 'app-nginx' }}" # 修改变量名
|
||||||
|
|
||||||
# 进入 k8s 目录
|
# 进入 k8s 目录
|
||||||
cd k8s
|
cd k8s
|
||||||
|
@ -126,9 +126,10 @@ update_deployment_image() {
|
|||||||
# 备份原文件
|
# 备份原文件
|
||||||
cp "$deployment_file" "${deployment_file}.bak"
|
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|\$HARBOR_REGISTRY|${HARBOR_REGISTRY}|g" "$deployment_file"
|
||||||
sed -i.tmp "s|\$NGINX_IMAGE_TAG|${image_tag}|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 命令
|
||||||
# 例如:sed -i.tmp "s|\$NAMESPACE|${NAMESPACE}|g" "$deployment_file"
|
# 例如:sed -i.tmp "s|\$NAMESPACE|${NAMESPACE}|g" "$deployment_file"
|
||||||
@ -161,12 +162,32 @@ wait_for_deployment() {
|
|||||||
|
|
||||||
print_info "等待部署就绪..."
|
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" \
|
if kubectl wait --for=condition=available deployment/"$deployment_name" \
|
||||||
--namespace="$namespace" --timeout="${timeout}s"; then
|
--namespace="$namespace" --timeout="${timeout}s"; then
|
||||||
print_success "部署已就绪"
|
print_success "部署已就绪"
|
||||||
else
|
else
|
||||||
print_error "部署超时,请检查部署状态"
|
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"
|
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
|
exit 1
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
@ -234,8 +255,14 @@ get_access_info() {
|
|||||||
main() {
|
main() {
|
||||||
print_info "开始 NGINX Kubernetes 自动部署..."
|
print_info "开始 NGINX Kubernetes 自动部署..."
|
||||||
|
|
||||||
# 设置默认值
|
# 修改命名空间处理逻辑,优先使用 CI 变量
|
||||||
local namespace=${NAMESPACE:-default}
|
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 deployment_file=${DEPLOYMENT_FILE:-./nginx-deployment.yaml}
|
||||||
local image_tag=${NGINX_IMAGE_TAG:-latest}
|
local image_tag=${NGINX_IMAGE_TAG:-latest}
|
||||||
|
|
||||||
@ -245,6 +272,8 @@ main() {
|
|||||||
create_namespace "$namespace"
|
create_namespace "$namespace"
|
||||||
create_harbor_secret "$namespace"
|
create_harbor_secret "$namespace"
|
||||||
|
|
||||||
|
# 添加命名空间环境变量替换
|
||||||
|
export DEPLOY_NAMESPACE="$namespace"
|
||||||
update_deployment_image "$deployment_file" "$image_tag"
|
update_deployment_image "$deployment_file" "$image_tag"
|
||||||
apply_k8s_config "$deployment_file"
|
apply_k8s_config "$deployment_file"
|
||||||
wait_for_deployment "$namespace"
|
wait_for_deployment "$namespace"
|
||||||
|
@ -17,7 +17,7 @@ apiVersion: v1
|
|||||||
kind: ConfigMap
|
kind: ConfigMap
|
||||||
metadata:
|
metadata:
|
||||||
name: nginx-config
|
name: nginx-config
|
||||||
namespace: default
|
namespace: $NAMESPACE # 使用变量
|
||||||
data:
|
data:
|
||||||
nginx.conf: |
|
nginx.conf: |
|
||||||
# 由于以非root用户运行,user指令会被忽略,可以移除
|
# 由于以非root用户运行,user指令会被忽略,可以移除
|
||||||
@ -182,7 +182,7 @@ apiVersion: apps/v1
|
|||||||
kind: Deployment
|
kind: Deployment
|
||||||
metadata:
|
metadata:
|
||||||
name: nginx-deployment
|
name: nginx-deployment
|
||||||
namespace: default
|
namespace: $NAMESPACE # 使用变量
|
||||||
labels:
|
labels:
|
||||||
app: nginx
|
app: nginx
|
||||||
version: v1
|
version: v1
|
||||||
@ -330,7 +330,7 @@ apiVersion: v1
|
|||||||
kind: Service
|
kind: Service
|
||||||
metadata:
|
metadata:
|
||||||
name: nginx-service
|
name: nginx-service
|
||||||
namespace: default
|
namespace: $NAMESPACE # 使用变量
|
||||||
labels:
|
labels:
|
||||||
app: nginx
|
app: nginx
|
||||||
spec:
|
spec:
|
||||||
@ -350,7 +350,7 @@ apiVersion: autoscaling/v2
|
|||||||
kind: HorizontalPodAutoscaler
|
kind: HorizontalPodAutoscaler
|
||||||
metadata:
|
metadata:
|
||||||
name: nginx-hpa
|
name: nginx-hpa
|
||||||
namespace: default
|
namespace: $NAMESPACE # 使用变量
|
||||||
spec:
|
spec:
|
||||||
scaleTargetRef:
|
scaleTargetRef:
|
||||||
apiVersion: apps/v1
|
apiVersion: apps/v1
|
||||||
@ -391,7 +391,7 @@ apiVersion: policy/v1
|
|||||||
kind: PodDisruptionBudget
|
kind: PodDisruptionBudget
|
||||||
metadata:
|
metadata:
|
||||||
name: nginx-pdb
|
name: nginx-pdb
|
||||||
namespace: default
|
namespace: $NAMESPACE # 使用变量
|
||||||
spec:
|
spec:
|
||||||
minAvailable: 1
|
minAvailable: 1
|
||||||
selector:
|
selector:
|
||||||
|
Loading…
x
Reference in New Issue
Block a user