Signed-off-by: Andrei Kvapil <kvapss@gmail.com> <!-- Thank you for making a contribution! Here are some tips for you: - Start the PR title with the [label] of Cozystack component: - For system components: [platform], [system], [linstor], [cilium], [kube-ovn], [dashboard], [cluster-api], etc. - For managed apps: [apps], [tenant], [kubernetes], [postgres], [virtual-machine] etc. - For development and maintenance: [tests], [ci], [docs], [maintenance]. - If it's a work in progress, consider creating this PR as a draft. - Don't hesistate to ask for opinion and review in the community chats, even if it's still a draft. - Add the label `backport` if it's a bugfix that needs to be backported to a previous version. --> ## What this PR does ### Release note <!-- Write a release note: - Explain what has changed internally and for users. - Start with the same [label] as in the PR title - Follow the guidelines at https://github.com/kubernetes/community/blob/master/contributors/guide/release-notes.md. --> ```release-note [] ``` <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit * **Chores** * Added a timeout-based step that repeatedly attempts server-side dry-run creation of a Kubernetes Service (headless) between controller upgrade and subsequent waits. * Inserts this validation step without altering existing flow or other behaviors. <!-- end of auto-generated comment: release notes by coderabbit.ai -->
48 lines
2.3 KiB
Bash
Executable file
48 lines
2.3 KiB
Bash
Executable file
#!/bin/sh
|
|
# Migration 20 --> 21
|
|
|
|
set -euo pipefail
|
|
|
|
kubectl -n cozy-system delete helmrelease cozystack-api \
|
|
|| kubectl -n cozy-system delete deployment cozystack-api --ignore-not-found # fallback to help migration progress if it failed first time
|
|
while [ $( kubectl -n cozy-system get po -l app=cozystack-api --no-headers | wc -l ) != 0 ] ;
|
|
do
|
|
echo "Waiting for Cozystack API pods to be deleted";
|
|
sleep 1
|
|
done
|
|
|
|
kubectl -n cozy-system delete helmrelease cozystack-controller \
|
|
|| kubectl -n cozy-system delete deployment cozystack-controller --ignore-not-found # same fallback
|
|
kubectl delete customresourcedefinitions.apiextensions.k8s.io cozystackresourcedefinitions.cozystack.io --ignore-not-found
|
|
while [ $( kubectl -n cozy-system get po -l app=cozystack-controller --no-headers | wc -l ) != 0 ] ;
|
|
do
|
|
echo "Waiting for Cozystack controller pods to be deleted";
|
|
sleep 1
|
|
done
|
|
|
|
kubectl delete helmrelease -n cozy-dashboard dashboard --ignore-not-found
|
|
sleep 5
|
|
cozypkg -n cozy-system -C packages/system/cozystack-resource-definition-crd apply cozystack-resource-definition-crd --plain
|
|
cozypkg -n cozy-system -C packages/system/cozystack-resource-definitions apply cozystack-resource-definitions --plain
|
|
cozypkg -n cozy-system -C packages/system/cozystack-api apply cozystack-api --plain
|
|
helm upgrade --install -n cozy-system cozystack-controller ./packages/system/cozystack-controller/ --take-ownership
|
|
|
|
sleep 5
|
|
timeout 60 sh -c 'until kubectl create service clusterip lineage-webhook-test --clusterip="None" --dry-run=server; do sleep 1; done'
|
|
|
|
kubectl wait deployment/cozystack-api -n cozy-system --timeout=4m --for=condition=available || exit 1
|
|
kubectl wait deployment/cozystack-controller -n cozy-system --timeout=4m --for=condition=available || exit 1
|
|
|
|
timestamp=$(date --rfc-3339=ns || date)
|
|
kubectl get namespace -o custom-columns=NAME:.metadata.name --no-headers |
|
|
grep '^tenant-' |
|
|
while read namespace ; do
|
|
(set -x; \
|
|
kubectl annotate \
|
|
pods,services,pvc,secrets,ingresses.networking.k8s.io,workloadmonitors.cozystack.io \
|
|
-n "$namespace" --all \
|
|
migration.cozystack.io="$timestamp" --overwrite || true)
|
|
done
|
|
# Stamp version
|
|
kubectl create configmap -n cozy-system cozystack-version \
|
|
--from-literal=version=21 --dry-run=client -o yaml | kubectl apply -f-
|