mirror of
https://github.com/labring/sealos.git
synced 2026-08-30 17:58:09 +08:00
feat(resources): refactor deployment config to use ConfigMap for all environment variables (#6689)
- Create new ConfigMap template to replace Secret for non-sensitive configuration - Migrate MinIO AK/SK from Secret to ConfigMap for unified config management - Simplify Deployment env injection from 70+ lines to 3 lines using envFrom - Add all required environment variables identified in code (14 config items) - Remove secret.yaml template file as all config now uses ConfigMap - Enhance entrypoint.sh to auto-fetch MinIO credentials from objectstorage-config - Support environment variable overrides for all configuration parameters ConfigMap includes: - Database URIs (MongoDB, Traffic MongoDB) - MinIO configuration (endpoint, AK/SK, metrics) - Prometheus URL - Object storage instance - Resource quota and monitoring settings 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-authored-by: Claude <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,23 @@
|
||||
apiVersion: v1
|
||||
kind: ConfigMap
|
||||
metadata:
|
||||
name: {{ .Values.configmap.name }}
|
||||
namespace: {{ .Release.Namespace }}
|
||||
labels:
|
||||
control-plane: controller-manager
|
||||
{{- include "resources.labels" . | nindent 4 }}
|
||||
data:
|
||||
MONGO_URI: {{ .Values.configmap.mongoURI | quote }}
|
||||
TRAFFIC_MONGO_URI: {{ .Values.configmap.trafficMongoURI | quote }}
|
||||
TRAFFICS_SERVICE_CONNECT_ADDRESS: {{ .Values.configmap.trafficsServiceConnectAddress | quote }}
|
||||
MINIO_ENDPOINT: {{ .Values.configmap.minioEndpoint | quote }}
|
||||
MINIO_AK: {{ .Values.configmap.minioAK | quote }}
|
||||
MINIO_SK: {{ .Values.configmap.minioSK | quote }}
|
||||
MINIO_METRICS_ADDR: {{ .Values.configmap.minioMetricsAddr | quote }}
|
||||
MINIO_METRICS_SECURE: {{ .Values.configmap.minioMetricsSecure | quote }}
|
||||
PROM_URL: {{ .Values.configmap.promURL | quote }}
|
||||
OBJECT_STORAGE_INSTANCE: {{ .Values.configmap.objectStorageInstance | quote }}
|
||||
ENABLE_AUTO_RESOURCE_QUOTA: {{ .Values.configmap.enableAutoResourceQuota | quote }}
|
||||
CONCURRENT_LIMIT: {{ .Values.configmap.concurrentLimit | quote }}
|
||||
EPHEMERAL_STORAGE_CHARGE_THRESHOLD: {{ .Values.configmap.ephemeralStorageChargeThreshold | quote }}
|
||||
LIMIT_QUOTA_EXPANSION_CYCLE: {{ .Values.configmap.limitQuotaExpansionCycle | quote }}
|
||||
@@ -15,7 +15,7 @@ spec:
|
||||
metadata:
|
||||
annotations:
|
||||
kubectl.kubernetes.io/default-container: manager
|
||||
checksum/resources-mongo-secret: {{ include (print $.Template.BasePath "/secret.yaml") . | sha256sum }}
|
||||
checksum/resources-config: {{ include (print $.Template.BasePath "/configmap.yaml") . | sha256sum }}
|
||||
{{- with .Values.podAnnotations }}
|
||||
{{- toYaml . | nindent 8 }}
|
||||
{{- end }}
|
||||
@@ -46,17 +46,9 @@ spec:
|
||||
{{- else }}
|
||||
- --metrics-bind-address=127.0.0.1:8080
|
||||
{{- end }}
|
||||
env:
|
||||
- name: MONGO_URI
|
||||
valueFrom:
|
||||
secretKeyRef:
|
||||
name: {{ .Values.secret.name }}
|
||||
key: MONGO_URI
|
||||
- name: TRAFFIC_MONGO_URI
|
||||
valueFrom:
|
||||
secretKeyRef:
|
||||
name: {{ .Values.secret.name }}
|
||||
key: TRAFFIC_MONGO_URI
|
||||
envFrom:
|
||||
- configMapRef:
|
||||
name: {{ .Values.configmap.name }}
|
||||
{{- with .Values.extraEnv }}
|
||||
{{- toYaml . | nindent 12 }}
|
||||
{{- end }}
|
||||
|
||||
@@ -1,12 +0,0 @@
|
||||
apiVersion: v1
|
||||
kind: Secret
|
||||
metadata:
|
||||
name: {{ .Values.secret.name }}
|
||||
namespace: {{ .Release.Namespace }}
|
||||
labels:
|
||||
control-plane: controller-manager
|
||||
{{- include "resources.labels" . | nindent 4 }}
|
||||
type: Opaque
|
||||
stringData:
|
||||
MONGO_URI: {{ .Values.secret.mongoURI | quote }}
|
||||
TRAFFIC_MONGO_URI: {{ .Values.secret.trafficMongoURI | quote }}
|
||||
@@ -37,11 +37,22 @@ resources:
|
||||
cpu: 10m
|
||||
memory: 64Mi
|
||||
|
||||
secret:
|
||||
name: "mongo-secret"
|
||||
configmap:
|
||||
name: "resources-config"
|
||||
mongoURI: "mongodb://mongo:27017/resources"
|
||||
trafficMongoURI: "mongodb://mongo:27017/traffic"
|
||||
trafficsServiceConnectAddress: ""
|
||||
minioEndpoint: "object-storage.objectstorage-system.svc:80"
|
||||
minioAK: ""
|
||||
minioSK: ""
|
||||
minioMetricsAddr: "object-storage.objectstorage-system.svc:80"
|
||||
minioMetricsSecure: "false"
|
||||
promURL: "http://vmselect-vm-stack-victoria-metrics-k8s-stack.vm.svc:8481/select/0/prometheus/"
|
||||
objectStorageInstance: "object-storage.objectstorage-system.svc:80"
|
||||
enableAutoResourceQuota: "false"
|
||||
concurrentLimit: "1000"
|
||||
ephemeralStorageChargeThreshold: "10Gi"
|
||||
limitQuotaExpansionCycle: "24h"
|
||||
|
||||
extraEnv: []
|
||||
|
||||
|
||||
@@ -10,6 +10,25 @@ RESOURCES_BACKUP_ENABLED=${RESOURCES_BACKUP_ENABLED:-"true"}
|
||||
RESOURCES_BACKUP_DIR=${RESOURCES_BACKUP_DIR:-"/tmp/sealos-backup/resources-controller"}
|
||||
DEPLOYMENT_NAME=${DEPLOYMENT_NAME:-"${RELEASE_NAME}-controller-manager"}
|
||||
|
||||
timestamp() {
|
||||
date +"%Y-%m-%d %T"
|
||||
}
|
||||
|
||||
print() {
|
||||
flag=$(timestamp)
|
||||
echo -e "\033[1;32m\033[1m INFO [$flag] >> $* \033[0m"
|
||||
}
|
||||
|
||||
warn() {
|
||||
flag=$(timestamp)
|
||||
echo -e "\033[33m WARN [$flag] >> $* \033[0m"
|
||||
}
|
||||
|
||||
info() {
|
||||
flag=$(timestamp)
|
||||
echo -e "\033[36m INFO [$flag] >> $* \033[0m"
|
||||
}
|
||||
|
||||
adopt_namespaced_resource() {
|
||||
local kind="$1"
|
||||
local name="$2"
|
||||
@@ -50,6 +69,18 @@ backup_ns_resource() {
|
||||
fi
|
||||
}
|
||||
|
||||
get_sealos_config() {
|
||||
local key="$1"
|
||||
kubectl get configmap sealos-config -n sealos-system -o "jsonpath={.data.${key}}" 2>/dev/null || true
|
||||
}
|
||||
|
||||
get_config_value() {
|
||||
local namespace="$1"
|
||||
local name="$2"
|
||||
local key="$3"
|
||||
kubectl get configmap "${name}" -n "${namespace}" -o "jsonpath={.data.${key}}" 2>/dev/null || true
|
||||
}
|
||||
|
||||
backup_cluster_resource() {
|
||||
local kind="$1"
|
||||
local name="$2"
|
||||
@@ -59,6 +90,64 @@ backup_cluster_resource() {
|
||||
fi
|
||||
}
|
||||
|
||||
setup_configmap_params() {
|
||||
info "start collecting resource configuration parameters..."
|
||||
|
||||
varDatabaseMongodbURI=$(get_sealos_config "databaseMongodbURI")
|
||||
varDatabaseGlobalCockroachdbURI=$(get_sealos_config "databaseGlobalCockroachdbURI")
|
||||
varDatabaseLocalCockroachdbURI=$(get_sealos_config "databaseLocalCockroachdbURI")
|
||||
|
||||
if [ -z "${RESOURCES_MONGO_URI}" ] && [ -n "${MONGO_URI}" ]; then
|
||||
RESOURCES_MONGO_URI="${MONGO_URI}"
|
||||
fi
|
||||
RESOURCES_MONGO_URI=${RESOURCES_MONGO_URI:-"${varDatabaseMongodbURI}"}
|
||||
|
||||
trafficMONGO=$(get_config_value sealos-system nm-agent-config MONGO_URI)
|
||||
if [ -z "${trafficMONGO}" ]; then
|
||||
trafficMONGO="${varDatabaseMongodbURI}"
|
||||
fi
|
||||
|
||||
if [ -z "${RESOURCES_TRAFFIC_MONGO_URI}" ] && [ -n "${TRAFFIC_MONGO_URI}" ]; then
|
||||
RESOURCES_TRAFFIC_MONGO_URI="${TRAFFIC_MONGO_URI}"
|
||||
fi
|
||||
RESOURCES_TRAFFIC_MONGO_URI=${RESOURCES_TRAFFIC_MONGO_URI:-"${trafficMONGO}"}
|
||||
|
||||
minioUser=$(get_config_value sealos-system objectstorage-config MINIO_ROOT_USER)
|
||||
minioPassword=$(get_config_value sealos-system objectstorage-config MINIO_ROOT_PASSWORD)
|
||||
RESOURCES_MINIO_ENDPOINT=${RESOURCES_MINIO_ENDPOINT:-"object-storage.objectstorage-system.svc:80"}
|
||||
RESOURCES_MINIO_METRICS_ADDR=${RESOURCES_MINIO_METRICS_ADDR:-"object-storage.objectstorage-system.svc:80"}
|
||||
RESOURCES_MINIO_METRICS_SECURE=${RESOURCES_MINIO_METRICS_SECURE:-"false"}
|
||||
|
||||
RESOURCES_PROM_URL=${RESOURCES_PROM_URL:-"http://vmselect-vm-stack-victoria-metrics-k8s-stack.vm.svc:8481/select/0/prometheus/"}
|
||||
|
||||
RESOURCES_OBJECT_STORAGE_INSTANCE=${RESOURCES_OBJECT_STORAGE_INSTANCE:-"object-storage.objectstorage-system.svc:80"}
|
||||
|
||||
RESOURCES_ENABLE_AUTO_RESOURCE_QUOTA=${RESOURCES_ENABLE_AUTO_RESOURCE_QUOTA:-"false"}
|
||||
RESOURCES_CONCURRENT_LIMIT=${RESOURCES_CONCURRENT_LIMIT:-"1000"}
|
||||
RESOURCES_EPHEMERAL_STORAGE_CHARGE_THRESHOLD=${RESOURCES_EPHEMERAL_STORAGE_CHARGE_THRESHOLD:-"10Gi"}
|
||||
RESOURCES_LIMIT_QUOTA_EXPANSION_CYCLE=${RESOURCES_LIMIT_QUOTA_EXPANSION_CYCLE:-"24h"}
|
||||
|
||||
add_set_string "configmap.mongoURI" "${RESOURCES_MONGO_URI}"
|
||||
add_set_string "configmap.trafficMongoURI" "${RESOURCES_TRAFFIC_MONGO_URI}"
|
||||
add_set_string "configmap.minioEndpoint" "${RESOURCES_MINIO_ENDPOINT}"
|
||||
add_set_string "configmap.minioAK" "${minioUser}"
|
||||
add_set_string "configmap.minioSK" "${minioPassword}"
|
||||
add_set_string "configmap.minioMetricsAddr" "${RESOURCES_MINIO_METRICS_ADDR}"
|
||||
add_set_string "configmap.minioMetricsSecure" "${RESOURCES_MINIO_METRICS_SECURE}"
|
||||
add_set_string "configmap.promURL" "${RESOURCES_PROM_URL}"
|
||||
add_set_string "configmap.objectStorageInstance" "${RESOURCES_OBJECT_STORAGE_INSTANCE}"
|
||||
add_set_string "configmap.enableAutoResourceQuota" "${RESOURCES_ENABLE_AUTO_RESOURCE_QUOTA}"
|
||||
add_set_string "configmap.concurrentLimit" "${RESOURCES_CONCURRENT_LIMIT}"
|
||||
add_set_string "configmap.ephemeralStorageChargeThreshold" "${RESOURCES_EPHEMERAL_STORAGE_CHARGE_THRESHOLD}"
|
||||
add_set_string "configmap.limitQuotaExpansionCycle" "${RESOURCES_LIMIT_QUOTA_EXPANSION_CYCLE}"
|
||||
|
||||
if [ -n "${RESOURCES_TRAFFICS_SERVICE_CONNECT_ADDRESS}" ]; then
|
||||
add_set_string "configmap.trafficsServiceConnectAddress" "${RESOURCES_TRAFFICS_SERVICE_CONNECT_ADDRESS}"
|
||||
fi
|
||||
|
||||
info "The collection of resource configuration parameters has been completed"
|
||||
}
|
||||
|
||||
backup_resources() {
|
||||
if [ "${RESOURCES_BACKUP_ENABLED}" != "true" ]; then
|
||||
return
|
||||
@@ -80,6 +169,7 @@ backup_resources() {
|
||||
printf "\n---\n" >> "${RESOURCES_BACKUP_FILE}"
|
||||
fi
|
||||
backup_ns_resource configmap resources-manager-config
|
||||
backup_ns_resource configmap resources-config
|
||||
backup_ns_resource secret mongo-secret
|
||||
backup_ns_resource service resources-controller-manager-metrics-service
|
||||
backup_ns_resource deployment resources-controller-manager
|
||||
@@ -107,26 +197,7 @@ cleanup_deployment_env
|
||||
HELM_SET_ARGS=()
|
||||
|
||||
if [ "${RESOURCES_ENV_AUTO_CONFIG_ENABLED}" = "true" ]; then
|
||||
varDatabaseMongodbURI=${varDatabaseMongodbURI:-"$(get_cm_value sealos-system sealos-config databaseMongodbURI)"}
|
||||
trafficMONGO=$(get_cm_value sealos-system nm-agent-config MONGO_URI)
|
||||
if [ -z "${trafficMONGO}" ]; then
|
||||
trafficMONGO="${varDatabaseMongodbURI}"
|
||||
fi
|
||||
|
||||
if [ -z "${RESOURCES_MONGO_URI}" ] && [ -n "${MONGO_URI}" ]; then
|
||||
RESOURCES_MONGO_URI="${MONGO_URI}"
|
||||
fi
|
||||
if [ -z "${RESOURCES_TRAFFIC_MONGO_URI}" ] && [ -n "${TRAFFIC_MONGO_URI}" ]; then
|
||||
RESOURCES_TRAFFIC_MONGO_URI="${TRAFFIC_MONGO_URI}"
|
||||
fi
|
||||
RESOURCES_MONGO_URI=${RESOURCES_MONGO_URI:-"${varDatabaseMongodbURI}"}
|
||||
RESOURCES_TRAFFIC_MONGO_URI=${RESOURCES_TRAFFIC_MONGO_URI:-"${trafficMONGO}"}
|
||||
|
||||
add_set_string secret.mongoURI "${RESOURCES_MONGO_URI}"
|
||||
add_set_string secret.trafficMongoURI "${RESOURCES_TRAFFIC_MONGO_URI}"
|
||||
if [ -n "${RESOURCES_TRAFFICS_SERVICE_CONNECT_ADDRESS}" ]; then
|
||||
add_set_string secret.trafficsServiceConnectAddress "${RESOURCES_TRAFFICS_SERVICE_CONNECT_ADDRESS}"
|
||||
fi
|
||||
setup_configmap_params
|
||||
fi
|
||||
|
||||
if ! helm status "${RELEASE_NAME}" -n "${RELEASE_NAMESPACE}" >/dev/null 2>&1; then
|
||||
@@ -136,6 +207,7 @@ if ! helm status "${RELEASE_NAME}" -n "${RELEASE_NAMESPACE}" >/dev/null 2>&1; th
|
||||
fi
|
||||
|
||||
adopt_namespaced_resource configmap resources-manager-config
|
||||
adopt_namespaced_resource configmap resources-config
|
||||
adopt_namespaced_resource secret mongo-secret
|
||||
adopt_namespaced_resource service resources-controller-manager-metrics-service
|
||||
adopt_namespaced_resource deployment resources-controller-manager
|
||||
|
||||
Reference in New Issue
Block a user