110 lines
4.3 KiB
YAML
110 lines
4.3 KiB
YAML
apiVersion: argoproj.io/v1alpha1
|
|
kind: Sensor
|
|
metadata:
|
|
name: webhook-deploy
|
|
namespace: argo-events
|
|
spec:
|
|
template:
|
|
serviceAccountName: operate-workflow-sa
|
|
dependencies:
|
|
- name: gitea-push
|
|
eventSourceName: webhook
|
|
eventName: user-microservice-deploy
|
|
triggers:
|
|
- template:
|
|
name: deploy-user-microservice
|
|
k8s:
|
|
operation: create
|
|
source:
|
|
resource:
|
|
apiVersion: argoproj.io/v1alpha1
|
|
kind: Workflow
|
|
metadata:
|
|
generateName: deploy-user-microservice-
|
|
spec:
|
|
entrypoint: main
|
|
serviceAccountName: operate-workflow-sa
|
|
volumeClaimTemplates:
|
|
- metadata:
|
|
name: workspace
|
|
spec:
|
|
accessModes: ["ReadWriteOnce"]
|
|
resources:
|
|
requests:
|
|
storage: 128Mi
|
|
templates:
|
|
- name: main
|
|
steps:
|
|
- - name: checkout
|
|
template: checkout
|
|
- - name: deploy
|
|
template: deploy
|
|
|
|
- name: checkout
|
|
container:
|
|
image: alpine/git
|
|
command: [sh, -c]
|
|
workingDir: /workspace
|
|
env:
|
|
- name: REPO_URL
|
|
value: https://gitea.marcin00.pl/pikram/user-microservice-deploy.git
|
|
- name: REPO_BRANCH
|
|
value: argo-deploy
|
|
args:
|
|
- |
|
|
git clone --depth 1 --branch "${REPO_BRANCH}" --single-branch "${REPO_URL}" repo
|
|
volumeMounts:
|
|
- name: workspace
|
|
mountPath: /workspace
|
|
|
|
- name: deploy
|
|
container:
|
|
image: marcin00.azurecr.io/azure-cli-kubectl:latest
|
|
command: [sh, -c]
|
|
workingDir: /workspace/repo
|
|
env:
|
|
- name: CLIENT_ID
|
|
value: "c302726f-fafb-4143-94c1-67a70975574a"
|
|
- name: CLUSTER_NAME
|
|
value: "build"
|
|
- name: RESOURCE_GROUP
|
|
value: "tst-aks-rg"
|
|
- name: DEPLOY_FILES
|
|
value: "namespace.yaml secret-store.yaml deploy.yaml ingress.yaml"
|
|
- name: DEPLOYMENT
|
|
value: "api"
|
|
- name: NAMESPACE
|
|
value: "user-microservice"
|
|
- name: HEALTHCHECK_URL
|
|
value: "https://user-microservice.marcin00.pl/health"
|
|
args:
|
|
- |
|
|
echo "===> Logging in to Azure"
|
|
az login --identity --client-id $CLIENT_ID
|
|
az aks get-credentials --resource-group $RESOURCE_GROUP --name $CLUSTER_NAME --overwrite-existing
|
|
kubelogin convert-kubeconfig -l azurecli
|
|
|
|
echo "===> Applying Kubernetes manifests"
|
|
for file in $DEPLOY_FILES; do
|
|
kubectl apply -f "$file"
|
|
done
|
|
|
|
echo "===> Waiting for deployment to complete"
|
|
kubectl rollout status deployment/$DEPLOYMENT -n $NAMESPACE --timeout=60s
|
|
|
|
echo "===> Running health check"
|
|
for i in $(seq 1 120); do
|
|
if curl -sf $HEALTHCHECK_URL; then
|
|
echo "Health check OK"
|
|
exit 0
|
|
else
|
|
echo "Health check failed. Retry $i..."
|
|
sleep 5
|
|
fi
|
|
done
|
|
echo "Health check failed"
|
|
exit 1
|
|
volumeMounts:
|
|
- name: workspace
|
|
mountPath: /workspace
|