Files
project-infra/scripts/tasks/minio-operator-install.sh

60 lines
1.9 KiB
Bash
Executable File

#!/usr/bin/env bash
# Install (or upgrade) the MinIO Operator Helm release.
#
# MinIO Tenant CR (minio.min.io/v2) 는 이 Operator 가 CRD 를 먼저 등록해야
# apply 가능하다. bootstrap.sh 의 Phase 1 이전에 실행된다.
#
# Operator 는 자체 namespace (기본 minio-operator) 에 배포된다. 애플리케이션
# namespace (mnt) 와 분리되므로 Tenant CR 만 mnt 에 있어도 동작한다.
#
# Optional env:
# MINIO_OPERATOR_NAMESPACE — 기본 minio-operator
# MINIO_OPERATOR_RELEASE — 기본 minio-operator
# MINIO_OPERATOR_VERSION — 기본 7.0.0
set -Eeuo pipefail
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
# shellcheck source=../lib/common.sh
. "$SCRIPT_DIR/../lib/common.sh"
: "${MINIO_OPERATOR_NAMESPACE:=minio-operator}"
: "${MINIO_OPERATOR_RELEASE:=minio-operator}"
: "${MINIO_OPERATOR_VERSION:=7.0.0}"
helm_install() {
log "helm repo: minio-operator 등록 (idempotent)"
helm repo add minio-operator https://operator.min.io >/dev/null 2>&1 || true
helm repo update minio-operator >/dev/null
log "helm upgrade --install ${MINIO_OPERATOR_RELEASE} (v=${MINIO_OPERATOR_VERSION} ns=${MINIO_OPERATOR_NAMESPACE})"
helm upgrade --install "$MINIO_OPERATOR_RELEASE" minio-operator/operator \
--namespace "$MINIO_OPERATOR_NAMESPACE" \
--create-namespace \
--version "$MINIO_OPERATOR_VERSION" \
--wait \
--atomic \
--timeout 5m
}
wait_ready() {
log "MinIO Operator Pod Ready 확인"
kubectl -n "$MINIO_OPERATOR_NAMESPACE" wait --for=condition=Ready \
pod -l "app.kubernetes.io/name=operator" \
--timeout=120s
log "Tenant CRD 등록 확인"
kubectl get crd tenants.minio.min.io >/dev/null \
|| die "Tenant CRD 가 여전히 없음. Operator 설치 로그 확인."
}
main() {
require_cmd helm kubectl
helm_install
wait_ready
log "minio-operator-install 태스크 완료"
}
if [[ "${BASH_SOURCE[0]}" == "${0}" ]]; then
main "$@"
fi