prole/tmp/fix_storage.sh

77 lines
2.6 KiB
Bash

#!/usr/bin/env bash
set -euo pipefail
KUBECONFIG=/Users/chrisfu/dev/knoe/knoe-k3s.kubeconfig
export KUBECONFIG
KB="kubectl"
echo "==> Uninstalling stuck Redis release..."
helm -n knoe-system uninstall redis 2>/dev/null || true
$KB -n knoe-system delete pvc redis-data-redis-master-0 --ignore-not-found
echo "==> Redeploying Redis without persistence..."
cd /Users/chrisfu/dev/knoe
bash etc/init_redis.sh -c conf/service/knoe.cfg start
echo "==> Redis deployed. Checking gitaly/minio PVC sizes..."
$KB -n gitlab get pvc repo-data-gitlab-gitaly-0 gitlab-minio -o custom-columns='NAME:.metadata.name,SIZE:.spec.resources.requests.storage,SC:.spec.storageClassName' 2>&1 || true
echo "==> Preparing synology dirs for gitaly and minio on gandalf..."
$KB -n knoe-system run gitlab-dirprep --image=alpine --restart=Never \
--overrides='{"spec":{"nodeName":"gandalf.knoe.org"}}' \
--command -- sh -c "mkdir -p /synology/d005/gitlab/gitaly /synology/d005/gitlab/minio && chmod 777 /synology/d005/gitlab/gitaly /synology/d005/gitlab/minio && echo done" \
--attach --rm 2>&1 || true
echo "==> Creating static PVs for gitaly and minio..."
GITALY_SIZE=$($KB -n gitlab get pvc repo-data-gitlab-gitaly-0 -o jsonpath='{.spec.resources.requests.storage}' 2>/dev/null || echo "50Gi")
MINIO_SIZE=$($KB -n gitlab get pvc gitlab-minio -o jsonpath='{.spec.resources.requests.storage}' 2>/dev/null || echo "10Gi")
echo "Gitaly PVC size: $GITALY_SIZE | Minio PVC size: $MINIO_SIZE"
$KB apply -f - <<PVYAML
apiVersion: v1
kind: PersistentVolume
metadata:
name: gitlab-gitaly-synology
spec:
capacity:
storage: ${GITALY_SIZE}
accessModes: [ReadWriteOnce]
persistentVolumeReclaimPolicy: Retain
storageClassName: synology-iscsi
local:
path: /synology/d005/gitlab/gitaly
nodeAffinity:
required:
nodeSelectorTerms:
- matchExpressions:
- key: kubernetes.io/hostname
operator: In
values: [gandalf.knoe.org]
---
apiVersion: v1
kind: PersistentVolume
metadata:
name: gitlab-minio-synology
spec:
capacity:
storage: ${MINIO_SIZE}
accessModes: [ReadWriteOnce]
persistentVolumeReclaimPolicy: Retain
storageClassName: synology-iscsi
local:
path: /synology/d005/gitlab/minio
nodeAffinity:
required:
nodeSelectorTerms:
- matchExpressions:
- key: kubernetes.io/hostname
operator: In
values: [gandalf.knoe.org]
PVYAML
echo "==> Deleting stuck PVCs so they rebind to new PVs..."
$KB -n gitlab delete pvc repo-data-gitlab-gitaly-0 gitlab-minio --ignore-not-found
echo "==> Done. Waiting 20s for PVCs to rebind..."
sleep 20
$KB -n gitlab get pvc,pods 2>&1