fix: use strategic merge for K8s deploy instead of json patch [deploy]
This commit is contained in:
1 parent
fe18e608dc
commit
54d37eff03
1 file changed
+36
-20
+36
-20
@@ -195,16 +195,30 @@ jobs:
|
||||
export DEPLOYMENT="${REPO_NAME}-deploy"
|
||||
|
||||
echo "Deploying ${IMAGE_REF} to ${NAMESPACE}/${DEPLOYMENT}"
|
||||
kubectl patch "deployment/${DEPLOYMENT}" -n "${NAMESPACE}" --type='json' -p='[
|
||||
{"op":"replace","path":"/spec/strategy/rollingUpdate/maxSurge","value":"100%"},
|
||||
{"op":"replace","path":"/spec/strategy/rollingUpdate/maxUnavailable","value":0},
|
||||
{"op":"replace","path":"/spec/template/spec/containers/0/image","value":"'"${IMAGE_REF}"'"},
|
||||
{"op":"replace","path":"/spec/template/spec/containers/0/imagePullPolicy","value":"IfNotPresent"},
|
||||
{"op":"replace","path":"/spec/template/spec/containers/0/readinessProbe/httpGet/path","value":"/api/health"},
|
||||
{"op":"replace","path":"/spec/template/spec/containers/0/readinessProbe/timeoutSeconds","value":5},
|
||||
{"op":"replace","path":"/spec/template/spec/containers/0/livenessProbe/httpGet/path","value":"/api/health"},
|
||||
{"op":"replace","path":"/spec/template/spec/containers/0/livenessProbe/timeoutSeconds","value":5}
|
||||
]'
|
||||
CONTAINER="$(kubectl get "deployment/${DEPLOYMENT}" -n "${NAMESPACE}" -o jsonpath='{.spec.template.spec.containers[0].name}')"
|
||||
echo "Container: ${CONTAINER}"
|
||||
kubectl set image "deployment/${DEPLOYMENT}" "${CONTAINER}=${IMAGE_REF}" -n "${NAMESPACE}"
|
||||
kubectl patch "deployment/${DEPLOYMENT}" -n "${NAMESPACE}" --type strategic -p "
|
||||
spec:
|
||||
template:
|
||||
spec:
|
||||
containers:
|
||||
- name: ${CONTAINER}
|
||||
imagePullPolicy: IfNotPresent
|
||||
env:
|
||||
- name: A_UPSTREAM
|
||||
value: http://project57-deploy.ns-project57.svc.cluster.local:3000
|
||||
readinessProbe:
|
||||
httpGet:
|
||||
path: /api/health
|
||||
port: 3000
|
||||
timeoutSeconds: 5
|
||||
livenessProbe:
|
||||
httpGet:
|
||||
path: /api/health
|
||||
port: 3000
|
||||
timeoutSeconds: 5
|
||||
"
|
||||
kubectl rollout status "deployment/${DEPLOYMENT}" -n "${NAMESPACE}" --timeout=180s
|
||||
echo "✅ Deployment completed successfully"
|
||||
|
||||
@@ -234,15 +248,17 @@ jobs:
|
||||
export DEPLOYMENT="${REPO_NAME}-deploy"
|
||||
|
||||
echo "Deploying existing image ${IMAGE_LATEST} to ${NAMESPACE}/${DEPLOYMENT}"
|
||||
kubectl patch "deployment/${DEPLOYMENT}" -n "${NAMESPACE}" --type='json' -p='[
|
||||
{"op":"replace","path":"/spec/strategy/rollingUpdate/maxSurge","value":"100%"},
|
||||
{"op":"replace","path":"/spec/strategy/rollingUpdate/maxUnavailable","value":0},
|
||||
{"op":"replace","path":"/spec/template/spec/containers/0/image","value":"'"${IMAGE_LATEST}"'"},
|
||||
{"op":"replace","path":"/spec/template/spec/containers/0/imagePullPolicy","value":"Always"},
|
||||
{"op":"replace","path":"/spec/template/spec/containers/0/readinessProbe/httpGet/path","value":"/api/health"},
|
||||
{"op":"replace","path":"/spec/template/spec/containers/0/readinessProbe/timeoutSeconds","value":5},
|
||||
{"op":"replace","path":"/spec/template/spec/containers/0/livenessProbe/httpGet/path","value":"/api/health"},
|
||||
{"op":"replace","path":"/spec/template/spec/containers/0/livenessProbe/timeoutSeconds","value":5}
|
||||
]'
|
||||
CONTAINER="$(kubectl get "deployment/${DEPLOYMENT}" -n "${NAMESPACE}" -o jsonpath='{.spec.template.spec.containers[0].name}')"
|
||||
echo "Container: ${CONTAINER}"
|
||||
kubectl set image "deployment/${DEPLOYMENT}" "${CONTAINER}=${IMAGE_LATEST}" -n "${NAMESPACE}"
|
||||
kubectl patch "deployment/${DEPLOYMENT}" -n "${NAMESPACE}" --type strategic -p "
|
||||
spec:
|
||||
template:
|
||||
spec:
|
||||
containers:
|
||||
- name: ${CONTAINER}
|
||||
imagePullPolicy: Always
|
||||
"
|
||||
kubectl rollout restart "deployment/${DEPLOYMENT}" -n "${NAMESPACE}"
|
||||
kubectl rollout status "deployment/${DEPLOYMENT}" -n "${NAMESPACE}" --timeout=180s
|
||||
echo "✅ Deployment completed (using existing image)"
|
||||
Reference in new issue
Block a user