In this article, I wanna share about Helmfile postsync Hook. The problem is when I use Helmfile
with Kustomization
, the result of deployment always throws success. I don’t know the exact rollout status for the new deployment. So, to handle this case, a Hook can be applied to the helmfile.yaml
.
... releases: - name: example-release chart: ./backend jsonPatches: - ./backend/deployment.yaml.gotmpl hooks: - events: ["postsync"] showlogs: true command: "sh" args: ["-c", "./script.sh {{`{{`}} .Release.Name {{`}}`}} {{`{{`}} .Release.Namespace {{`}}`}}"]
script.sh
#!/bin/sh RELEASE_NAME=$1 NAMESPACE=$2 DEPLOYMENT_NAME=$(kubectl get deployment -n $NAMESPACE -l "app=$RELEASE_NAME" -o jsonpath='{.items[0].metadata.name}') kubectl rollout status deployment/$DEPLOYMENT_NAME -n $NAMESPACE --timeout=60s if [ $? -ne 0 ]; then echo "Deployment $DEPLOYMENT_NAME failed." exit 1 else echo "Deployment succeeded." fi
Admin LUKMANLAB, DevOps Engineer, Site Reliability Engineer, System Administrator.