laf/build/start.sh

100 lines
3.8 KiB
Bash

echo "DOMAIN: $DOMAIN"
# check $DOMAIN is available
if ! host $DOMAIN; then
echo "Domain $DOMAIN is not available"
exit 1
fi
# *************** Environment Variables ************** #
## envs - global
EXTERNAL_HTTP_SCHEMA=${EXTERNAL_HTTP_SCHEMA:-https}
INTERNAL_HTTP_SCHEMA=${INTERNAL_HTTP_SCHEMA:-http}
NAMESPACE=${NAMESPACE:-laf-system}
PASSWD_OR_SECRET=$(tr -cd 'a-z0-9' </dev/urandom | head -c32)
ENABLE_MONITOR=${ENABLE_MONITOR:-true}
# *************** Deployments **************** #
## 0. create namespace
kubectl create namespace ${NAMESPACE} || true
## 1. install mongodb
set -e
set -x
DATABASE_URL="mongodb://${DB_USERNAME:-admin}:${PASSWD_OR_SECRET}@mongodb-0.mongo.${NAMESPACE}.svc.cluster.local:27017/sys_db?authSource=admin&replicaSet=rs0&w=majority"
helm install mongodb -n ${NAMESPACE} \
--set db.username=${DB_USERNAME:-admin} \
--set db.password=${PASSWD_OR_SECRET} \
--set storage.size=${DB_PV_SIZE:-5Gi} \
./charts/mongodb
## 3. install prometheus
PROMETHEUS_URL=http://prometheus-operated.${NAMESPACE}.svc.cluster.local:9090
if [ "$ENABLE_MONITOR" = "true" ]; then
sed -e "s/\$NAMESPACE/$NAMESPACE/g" \
-e "s/\$PROMETHEUS_PV_SIZE/${PROMETHEUS_PV_SIZE:-20Gi}/g" \
prometheus-helm.yaml >prometheus-helm-with-values.yaml
helm install prometheus --version 48.3.3 -n ${NAMESPACE} \
-f ./prometheus-helm-with-values.yaml \
./charts/kube-prometheus-stack
helm install prometheus-mongodb-exporter --version 3.2.0 -n ${NAMESPACE} \
--set mongodb.uri=${DATABASE_URL} \
--set serviceMonitor.enabled=true \
--set serviceMonitor.additionalLabels.release=prometheus \
--set serviceMonitor.additionalLabels.namespace=${NAMESPACE} \
./charts/prometheus-mongodb-exporter
fi
## 4. install minio
MINIO_ROOT_ACCESS_KEY=minio-root-user
MINIO_ROOT_SECRET_KEY=$PASSWD_OR_SECRET
MINIO_DOMAIN=oss.${DOMAIN}
MINIO_EXTERNAL_ENDPOINT="${EXTERNAL_HTTP_SCHEMA}://${MINIO_DOMAIN}"
MINIO_INTERNAL_ENDPOINT="${INTERNAL_HTTP_SCHEMA}://minio.${NAMESPACE}.svc.cluster.local:9000"
helm install minio -n ${NAMESPACE} \
--set rootUser=${MINIO_ROOT_ACCESS_KEY} \
--set rootPassword=${MINIO_ROOT_SECRET_KEY} \
--set persistence.size=${OSS_PV_SIZE:-3Gi} \
--set domain=${MINIO_DOMAIN} \
--set consoleHost=minio.${DOMAIN} \
--set metrics.serviceMonitor.enabled=${ENABLE_MONITOR} \
--set metrics.serviceMonitor.additionalLabels.release=prometheus \
--set metrics.serviceMonitor.additionalLabels.namespace=${NAMESPACE} \
./charts/minio
## 5. install laf-server
SERVER_JWT_SECRET=$PASSWD_OR_SECRET
RUNTIME_EXPORTER_SECRET=$PASSWD_OR_SECRET
helm install server -n ${NAMESPACE} \
--set databaseUrl=${DATABASE_URL} \
--set jwt.secret=${SERVER_JWT_SECRET} \
--set apiServerHost=api.${DOMAIN} \
--set apiServerUrl=${EXTERNAL_HTTP_SCHEMA}://api.${DOMAIN} \
--set siteName=${DOMAIN} \
--set default_region.fixed_namespace=${NAMESPACE} \
--set default_region.database_url=${DATABASE_URL} \
--set default_region.minio_domain=${MINIO_DOMAIN} \
--set default_region.minio_external_endpoint=${MINIO_EXTERNAL_ENDPOINT} \
--set default_region.minio_internal_endpoint=${MINIO_INTERNAL_ENDPOINT} \
--set default_region.minio_root_access_key=${MINIO_ROOT_ACCESS_KEY} \
--set default_region.minio_root_secret_key=${MINIO_ROOT_SECRET_KEY} \
--set default_region.runtime_domain=${DOMAIN} \
--set default_region.website_domain=${DOMAIN} \
--set default_region.tls.enabled=false \
--set default_region.runtime_exporter_secret=${RUNTIME_EXPORTER_SECRET} \
$([ "$ENABLE_MONITOR" = "true" ] && echo "--set default_region.prometheus_url=${PROMETHEUS_URL}") \
./charts/laf-server
## 6. install laf-web
helm install web -n ${NAMESPACE} \
--set domain=${DOMAIN} \
./charts/laf-web