דלגו לתוכן

מ-Compose ל-Kubernetes ו-Helm

ב-Composeב-Kubernetesאיפה זה נוחת ב-values (TRIDENT)
env_file: ./config/app.envConfigMap + envFromconfigMaps.my-config.data ו-containers[].envConfigmaps: [...]
environment: / x-identity (anchor)ConfigMap של identityconfigMaps.trident-identity.data (TRIDENT_ENV ב-<ENV>.yaml, TRIDENT_VERSION: "{{ .Values.defaultImageTag }}")
secrets:Secret כ-volume (קובץ)extraVolumes: [{name, secret: {secretName}}] + volumeMounts ; ב-postgres: extraSecrets: [{name, mountPath}]
קובץ config ב-mount (sensors.json)ConfigMap כ-volumeconfigMaps.trident-sensors.data."sensors.json" + extraVolumes (configMap) + volumeMounts עם readOnly: true
redis.conf / initdb ב-mountkey ב-values של ה-chartredisConfig: | ; customScripts: {"01-schema.sql": |}
named volume (postgres_data)PVCpostgres storage: {className: course-local-path, requestedSize: ...}
tmpfsemptyDirredis storage: {}
healthcheckprobesstartupProbe + livenessProbe על /live, readinessProbe על /ready
depends_onאין מקבילreadiness + retries; סדר עלייה אינו readiness
networksNetworkPolicy (SHOULD)networkPolicies.my-policy; דורש CNI שאוכף (Canal)
ports:Service + Ingressservices.<SERVICE>; ingresses.<SERVICE> (רק השירות החיצוני)
mem_limitresources.limits.memoryבכל container
image: x:${VERSION}image + tagimage: "{{ .Values.generic.imageRepository }}/<SERVICE>", imageTag: "{{ .Values.defaultImageTag }}"
command:commandcontainers[].command
restart: unless-stoppedברירת המחדל של Deployment-

כלל ה-config לפי audience (least knowledge)

Section titled “כלל ה-config לפי audience (least knowledge)”

כל שירות קורא רק את ה-ConfigMaps שחוזה (CONTRACT.md) מגדיר לו. שירות שרק מקבל לא צריך את ה-config של השולח.

שירותenvConfigmaps
simulatorapp, ingest, telemetry, identity
ingest-api (מקבל)app, queue, telemetry, identity
signal-processorapp, queue, database, telemetry, identity

קובץ מוגן בהרשאות; משתנה סביבה דולף ל-child processes, ל-kubectl describe ולוגים. שרת ה-postgres קורא POSTGRES_PASSWORD_FILE. extraSecrets מותקן עם כל המפתחות כקבצים, אז mountPath: /run/secrets/<APP_DIR> (TRIDENT: /run/secrets/trident) + מפתח postgres_password נותן /run/secrets/trident/postgres_password. לא /run/secrets ישירות: זה מתנגש ב-mount של ה-service account token וה-Pod נופל עם read-only file system (helm/values).

runs on: VM
helm template <RELEASE> <CHART_DIR> -n <NS> -f <FILE> -f <FILE> | grep -n 'envFrom\|configMapRef\|secretName'

איך מוודאים: לכל container מופיעים בדיוק ה-ConfigMaps מהטבלה; ה-Secret מופיע ב-volume ולא ב-env. הצורה המלאה של helm template: helm/overview.