Loading .devcontainer/devcontainer.json 0 → 100644 +13 −0 Original line number Diff line number Diff line { "name": "Go", "image": "mcr.microsoft.com/devcontainers/go:1.25-bookworm", "customizations": { "vscode": { "extensions": [ "golang.go" ] } }, "postCreateCommand": "go version", "remoteUser": "vscode" } No newline at end of file .gitattributes 0 → 100644 +1 −0 Original line number Diff line number Diff line * text=auto eol=lf No newline at end of file .golangci.yml +7 −27 Original line number Diff line number Diff line version: "2" formatters: enable: - goimports linters: disable-all: true enable: - deadcode # - depguard # - dupl - errcheck # - gochecknoglobals # - gochecknoinits # - goconst # - gocritic # - gocyclo # - gofmt - goimports # - golint # - gosec - gosimple - govet - ineffassign # - interfacer # - lll # - maligned # - misspell # - nakedret # - prealloc # - scopelint - staticcheck - structcheck # - stylecheck - typecheck # - unconvert # - unparam - unused No newline at end of file - varcheck No newline at end of file Tiltfile 0 → 100644 +288 −0 Original line number Diff line number Diff line # ============================================ # MEC Sandbox Tiltfile # ============================================ # Automates the build > dockerize > deploy cycle for meepctl. # # Usage: # tilt up # Start watching (platform must already be deployed) # tilt down # Stop watching # # Tilt UI: http://localhost:10350 # # What this does: # - Watches go-apps/<app>/ for Go code changes > build + dockerize + restart pods # - Watches charts/<sandbox-app>/ for chart changes > re-dockerize meep-virt-engine + redeploy # - Watches charts/<core-app>/ for chart changes > redeploy core app # - Provides manual buttons for dep management # ============================================ # ---- Configuration ---- # Core apps: Go source + chart changes trigger build/dockerize/deploy CORE_APPS = [ 'meep-auth-svc', 'meep-mon-engine', 'meep-platform-ctrl', 'meep-sandbox-api', 'meep-virt-engine', 'meep-webhook', ] # Sandbox MEC API apps: Go source changes trigger build/dockerize/restart # Chart changes trigger meep-virt-engine re-dockerize + redeploy SANDBOX_APPS = [ 'meep-ams', # MEC021 'meep-app-enablement', # MEC011 'meep-dai', # MEC016 'meep-federation', # MEC040 'meep-gis-engine', 'meep-iot', # MEC033 'meep-loc-serv', # MEC013 'meep-metrics-engine', 'meep-rnis', # MEC012 'meep-sandbox-ctrl', 'meep-sss', # MEC046 'meep-tm', # MEC015 'meep-vis', # MEC030 'meep-wais', # MEC028 ] # Dependency apps: manual buttons only (these rarely change) DEP_APPS = [ 'meep-cert-manager', 'meep-couchdb', 'meep-docker-registry', 'meep-grafana', 'meep-influxdb', 'meep-ingress', 'meep-kube-state-metrics', 'meep-open-map-tiles', 'meep-postgis', 'meep-prometheus', 'meep-redis', 'meep-thanos', 'meep-thanos-archive', ] # ============================================ # Helper: restart all K8s deployments using a given image name # ============================================ # Sandbox deployments have unpredictable names (e.g. mep1-mec033-1 uses meep-iot image). # This finds ALL deployments across ALL namespaces using the given image and restarts them. def restart_deploys_by_image_cmd(app): col_spec = 'NS:.metadata.namespace,NAME:.metadata.name,IMAGE:.spec.template.spec.containers' + '[0]' + '.image' cmd = 'echo "Restarting deployments using image: ' + app + '..." && ' cmd = cmd + 'kubectl get deploy -A -o custom-columns=' + col_spec + ' --no-headers ' cmd = cmd + '| grep ' + app + ' ' cmd = cmd + '| while read NS NAME IMAGE; do ' cmd = cmd + 'echo " Restarting $NS/$NAME"; ' cmd = cmd + 'kubectl rollout restart deploy "$NAME" -n "$NS"; ' cmd = cmd + 'done; ' cmd = cmd + 'echo "Done."' return cmd # ============================================ # CORE APPS - Go code changes # ============================================ # When Go source code changes: # build > dockerize > force redeploy via meepctl # ============================================ for app in CORE_APPS: # Skip meep-virt-engine here; it gets special handling below if app == 'meep-virt-engine': continue local_resource( app + ':code', cmd='echo "=== [' + app + '] Go code changed ===" && meepctl build ' + app + ' --nolint && meepctl dockerize ' + app + ' && meepctl deploy core ' + app + ' --force', deps=['go-apps/' + app + '/'], ignore=[ 'go-apps/' + app + '/vendor/', ], auto_init=False, trigger_mode=TRIGGER_MODE_AUTO, labels=['core'], ) # ============================================ # CORE APPS - Chart changes # ============================================ # When a core app's Helm chart changes: # force redeploy only (no build/dockerize needed) # ============================================ for app in CORE_APPS: if app == 'meep-virt-engine': continue local_resource( app + ':chart', cmd='echo "=== [' + app + '] Helm chart changed ===" && meepctl deploy core ' + app + ' --force', deps=['charts/' + app + '/'], auto_init=False, trigger_mode=TRIGGER_MODE_AUTO, labels=['core'], ) # ============================================ # SANDBOX APPS - Go code changes # ============================================ # When sandbox app Go source changes: # build > dockerize > restart all K8s deployments using that image # (sandbox deployments have dynamic names, so we find them by image) # ============================================ for app in SANDBOX_APPS: local_resource( app + ':code', cmd='echo "=== [' + app + '] Go code changed ===" && meepctl build ' + app + ' --nolint && meepctl dockerize ' + app + ' && ' + restart_deploys_by_image_cmd(app), deps=['go-apps/' + app + '/'], ignore=[ 'go-apps/' + app + '/vendor/', ], auto_init=False, trigger_mode=TRIGGER_MODE_MANUAL, labels=['sandbox'], ) # ============================================ # MEEP-VIRT-ENGINE - Special handling # ============================================ # meep-virt-engine bundles ALL sandbox Helm charts as docker-data. # Triggers: # 1. Own Go code changes > build + dockerize + deploy -f # 2. ANY sandbox chart changes > dockerize + deploy -f # (because charts are packaged into virt-engine's Docker image) # ============================================ # 1. meep-virt-engine own Go code changes local_resource( 'meep-virt-engine:code', cmd='echo "=== [meep-virt-engine] Go code changed ===" && meepctl build meep-virt-engine --nolint && meepctl dockerize meep-virt-engine && meepctl deploy core meep-virt-engine --force', deps=['go-apps/meep-virt-engine/'], ignore=[ 'go-apps/meep-virt-engine/vendor/', ], auto_init=False, trigger_mode=TRIGGER_MODE_AUTO, labels=['core'], ) # 2. meep-virt-engine chart change (its own chart) local_resource( 'meep-virt-engine:chart', cmd='echo "=== [meep-virt-engine] Helm chart changed ===" && meepctl deploy core meep-virt-engine --force', deps=['charts/meep-virt-engine/'], auto_init=False, trigger_mode=TRIGGER_MODE_AUTO, labels=['core'], ) # 3. ANY sandbox app chart changes > re-dockerize + redeploy meep-virt-engine # (because sandbox charts are packaged inside virt-engine's Docker image) sandbox_chart_deps = ['charts/' + app + '/' for app in SANDBOX_APPS] local_resource( 'meep-virt-engine:sandbox-charts', cmd='echo "=== [meep-virt-engine] Sandbox chart changed ===" && echo "Re-dockerizing meep-virt-engine to bundle updated charts..." && meepctl dockerize meep-virt-engine && meepctl deploy core meep-virt-engine --force', deps=sandbox_chart_deps, auto_init=False, trigger_mode=TRIGGER_MODE_AUTO, labels=['core'], ) # ============================================ # DEPENDENCY APPS - Manual buttons # ============================================ # Dependencies are deployed once and rarely change. # These are manual-trigger buttons in the Tilt UI. # ============================================ local_resource( 'dep:deploy-all', cmd='meepctl deploy dep', auto_init=False, trigger_mode=TRIGGER_MODE_MANUAL, labels=['dep'], ) local_resource( 'dep:delete-all', cmd='meepctl delete dep', auto_init=False, trigger_mode=TRIGGER_MODE_MANUAL, labels=['dep'], ) for app in DEP_APPS: local_resource( 'dep:' + app, cmd='meepctl deploy dep ' + app + ' --force', auto_init=False, trigger_mode=TRIGGER_MODE_MANUAL, labels=['dep'], ) # ============================================ # UTILITY - Manual buttons # ============================================ local_resource( 'util:deploy-core-all', cmd='meepctl deploy core', auto_init=False, trigger_mode=TRIGGER_MODE_MANUAL, labels=['util'], ) local_resource( 'util:delete-core-all', cmd='meepctl delete core', auto_init=False, trigger_mode=TRIGGER_MODE_MANUAL, labels=['util'], ) local_resource( 'util:build-all', cmd='meepctl build all', auto_init=False, trigger_mode=TRIGGER_MODE_MANUAL, labels=['util'], ) local_resource( 'util:dockerize-all', cmd='meepctl dockerize all', auto_init=False, trigger_mode=TRIGGER_MODE_MANUAL, labels=['util'], ) local_resource( 'util:docker-prune', cmd='docker image prune -f', auto_init=False, trigger_mode=TRIGGER_MODE_MANUAL, labels=['util'], ) local_resource( 'util:pod-status', cmd='kubectl get pods -A | grep meep-', auto_init=False, trigger_mode=TRIGGER_MODE_MANUAL, labels=['util'], ) # ============================================ # meep-ingress-certs - chart-only core app (no Go code) # ============================================ local_resource( 'meep-ingress-certs:chart', cmd='echo "=== [meep-ingress-certs] Chart changed ===" && meepctl deploy core meep-ingress-certs --force', deps=['charts/meep-ingress-certs/'], auto_init=False, trigger_mode=TRIGGER_MODE_AUTO, labels=['core'], ) charts/kube-state-metrics/values.yaml +9 −8 Original line number Diff line number Diff line Loading @@ -2,7 +2,7 @@ meepOrigin: core prometheusScrape: true image: repository: quay.io/coreos/kube-state-metrics repository: rancher/mirrored-coreos-kube-state-metrics tag: v1.9.7 pullPolicy: IfNotPresent Loading Loading @@ -124,23 +124,23 @@ podDisruptionBudget: {} # Available collectors for kube-state-metrics. By default all available # collectors are enabled. collectors: certificatesigningrequests: true certificatesigningrequests: false configmaps: true cronjobs: true cronjobs: false daemonsets: true deployments: true endpoints: true horizontalpodautoscalers: true ingresses: true horizontalpodautoscalers: false ingresses: false jobs: true limitranges: true mutatingwebhookconfigurations: true mutatingwebhookconfigurations: false namespaces: true networkpolicies: true nodes: true persistentvolumeclaims: true persistentvolumes: true poddisruptionbudgets: true poddisruptionbudgets: false pods: true replicasets: true replicationcontrollers: true Loading @@ -149,10 +149,11 @@ collectors: services: true statefulsets: true storageclasses: true validatingwebhookconfigurations: true validatingwebhookconfigurations: false verticalpodautoscalers: false volumeattachments: true # Enabling kubeconfig will pass the --kubeconfig argument to the container kubeconfig: enabled: false Loading Loading
.devcontainer/devcontainer.json 0 → 100644 +13 −0 Original line number Diff line number Diff line { "name": "Go", "image": "mcr.microsoft.com/devcontainers/go:1.25-bookworm", "customizations": { "vscode": { "extensions": [ "golang.go" ] } }, "postCreateCommand": "go version", "remoteUser": "vscode" } No newline at end of file
.gitattributes 0 → 100644 +1 −0 Original line number Diff line number Diff line * text=auto eol=lf No newline at end of file
.golangci.yml +7 −27 Original line number Diff line number Diff line version: "2" formatters: enable: - goimports linters: disable-all: true enable: - deadcode # - depguard # - dupl - errcheck # - gochecknoglobals # - gochecknoinits # - goconst # - gocritic # - gocyclo # - gofmt - goimports # - golint # - gosec - gosimple - govet - ineffassign # - interfacer # - lll # - maligned # - misspell # - nakedret # - prealloc # - scopelint - staticcheck - structcheck # - stylecheck - typecheck # - unconvert # - unparam - unused No newline at end of file - varcheck No newline at end of file
Tiltfile 0 → 100644 +288 −0 Original line number Diff line number Diff line # ============================================ # MEC Sandbox Tiltfile # ============================================ # Automates the build > dockerize > deploy cycle for meepctl. # # Usage: # tilt up # Start watching (platform must already be deployed) # tilt down # Stop watching # # Tilt UI: http://localhost:10350 # # What this does: # - Watches go-apps/<app>/ for Go code changes > build + dockerize + restart pods # - Watches charts/<sandbox-app>/ for chart changes > re-dockerize meep-virt-engine + redeploy # - Watches charts/<core-app>/ for chart changes > redeploy core app # - Provides manual buttons for dep management # ============================================ # ---- Configuration ---- # Core apps: Go source + chart changes trigger build/dockerize/deploy CORE_APPS = [ 'meep-auth-svc', 'meep-mon-engine', 'meep-platform-ctrl', 'meep-sandbox-api', 'meep-virt-engine', 'meep-webhook', ] # Sandbox MEC API apps: Go source changes trigger build/dockerize/restart # Chart changes trigger meep-virt-engine re-dockerize + redeploy SANDBOX_APPS = [ 'meep-ams', # MEC021 'meep-app-enablement', # MEC011 'meep-dai', # MEC016 'meep-federation', # MEC040 'meep-gis-engine', 'meep-iot', # MEC033 'meep-loc-serv', # MEC013 'meep-metrics-engine', 'meep-rnis', # MEC012 'meep-sandbox-ctrl', 'meep-sss', # MEC046 'meep-tm', # MEC015 'meep-vis', # MEC030 'meep-wais', # MEC028 ] # Dependency apps: manual buttons only (these rarely change) DEP_APPS = [ 'meep-cert-manager', 'meep-couchdb', 'meep-docker-registry', 'meep-grafana', 'meep-influxdb', 'meep-ingress', 'meep-kube-state-metrics', 'meep-open-map-tiles', 'meep-postgis', 'meep-prometheus', 'meep-redis', 'meep-thanos', 'meep-thanos-archive', ] # ============================================ # Helper: restart all K8s deployments using a given image name # ============================================ # Sandbox deployments have unpredictable names (e.g. mep1-mec033-1 uses meep-iot image). # This finds ALL deployments across ALL namespaces using the given image and restarts them. def restart_deploys_by_image_cmd(app): col_spec = 'NS:.metadata.namespace,NAME:.metadata.name,IMAGE:.spec.template.spec.containers' + '[0]' + '.image' cmd = 'echo "Restarting deployments using image: ' + app + '..." && ' cmd = cmd + 'kubectl get deploy -A -o custom-columns=' + col_spec + ' --no-headers ' cmd = cmd + '| grep ' + app + ' ' cmd = cmd + '| while read NS NAME IMAGE; do ' cmd = cmd + 'echo " Restarting $NS/$NAME"; ' cmd = cmd + 'kubectl rollout restart deploy "$NAME" -n "$NS"; ' cmd = cmd + 'done; ' cmd = cmd + 'echo "Done."' return cmd # ============================================ # CORE APPS - Go code changes # ============================================ # When Go source code changes: # build > dockerize > force redeploy via meepctl # ============================================ for app in CORE_APPS: # Skip meep-virt-engine here; it gets special handling below if app == 'meep-virt-engine': continue local_resource( app + ':code', cmd='echo "=== [' + app + '] Go code changed ===" && meepctl build ' + app + ' --nolint && meepctl dockerize ' + app + ' && meepctl deploy core ' + app + ' --force', deps=['go-apps/' + app + '/'], ignore=[ 'go-apps/' + app + '/vendor/', ], auto_init=False, trigger_mode=TRIGGER_MODE_AUTO, labels=['core'], ) # ============================================ # CORE APPS - Chart changes # ============================================ # When a core app's Helm chart changes: # force redeploy only (no build/dockerize needed) # ============================================ for app in CORE_APPS: if app == 'meep-virt-engine': continue local_resource( app + ':chart', cmd='echo "=== [' + app + '] Helm chart changed ===" && meepctl deploy core ' + app + ' --force', deps=['charts/' + app + '/'], auto_init=False, trigger_mode=TRIGGER_MODE_AUTO, labels=['core'], ) # ============================================ # SANDBOX APPS - Go code changes # ============================================ # When sandbox app Go source changes: # build > dockerize > restart all K8s deployments using that image # (sandbox deployments have dynamic names, so we find them by image) # ============================================ for app in SANDBOX_APPS: local_resource( app + ':code', cmd='echo "=== [' + app + '] Go code changed ===" && meepctl build ' + app + ' --nolint && meepctl dockerize ' + app + ' && ' + restart_deploys_by_image_cmd(app), deps=['go-apps/' + app + '/'], ignore=[ 'go-apps/' + app + '/vendor/', ], auto_init=False, trigger_mode=TRIGGER_MODE_MANUAL, labels=['sandbox'], ) # ============================================ # MEEP-VIRT-ENGINE - Special handling # ============================================ # meep-virt-engine bundles ALL sandbox Helm charts as docker-data. # Triggers: # 1. Own Go code changes > build + dockerize + deploy -f # 2. ANY sandbox chart changes > dockerize + deploy -f # (because charts are packaged into virt-engine's Docker image) # ============================================ # 1. meep-virt-engine own Go code changes local_resource( 'meep-virt-engine:code', cmd='echo "=== [meep-virt-engine] Go code changed ===" && meepctl build meep-virt-engine --nolint && meepctl dockerize meep-virt-engine && meepctl deploy core meep-virt-engine --force', deps=['go-apps/meep-virt-engine/'], ignore=[ 'go-apps/meep-virt-engine/vendor/', ], auto_init=False, trigger_mode=TRIGGER_MODE_AUTO, labels=['core'], ) # 2. meep-virt-engine chart change (its own chart) local_resource( 'meep-virt-engine:chart', cmd='echo "=== [meep-virt-engine] Helm chart changed ===" && meepctl deploy core meep-virt-engine --force', deps=['charts/meep-virt-engine/'], auto_init=False, trigger_mode=TRIGGER_MODE_AUTO, labels=['core'], ) # 3. ANY sandbox app chart changes > re-dockerize + redeploy meep-virt-engine # (because sandbox charts are packaged inside virt-engine's Docker image) sandbox_chart_deps = ['charts/' + app + '/' for app in SANDBOX_APPS] local_resource( 'meep-virt-engine:sandbox-charts', cmd='echo "=== [meep-virt-engine] Sandbox chart changed ===" && echo "Re-dockerizing meep-virt-engine to bundle updated charts..." && meepctl dockerize meep-virt-engine && meepctl deploy core meep-virt-engine --force', deps=sandbox_chart_deps, auto_init=False, trigger_mode=TRIGGER_MODE_AUTO, labels=['core'], ) # ============================================ # DEPENDENCY APPS - Manual buttons # ============================================ # Dependencies are deployed once and rarely change. # These are manual-trigger buttons in the Tilt UI. # ============================================ local_resource( 'dep:deploy-all', cmd='meepctl deploy dep', auto_init=False, trigger_mode=TRIGGER_MODE_MANUAL, labels=['dep'], ) local_resource( 'dep:delete-all', cmd='meepctl delete dep', auto_init=False, trigger_mode=TRIGGER_MODE_MANUAL, labels=['dep'], ) for app in DEP_APPS: local_resource( 'dep:' + app, cmd='meepctl deploy dep ' + app + ' --force', auto_init=False, trigger_mode=TRIGGER_MODE_MANUAL, labels=['dep'], ) # ============================================ # UTILITY - Manual buttons # ============================================ local_resource( 'util:deploy-core-all', cmd='meepctl deploy core', auto_init=False, trigger_mode=TRIGGER_MODE_MANUAL, labels=['util'], ) local_resource( 'util:delete-core-all', cmd='meepctl delete core', auto_init=False, trigger_mode=TRIGGER_MODE_MANUAL, labels=['util'], ) local_resource( 'util:build-all', cmd='meepctl build all', auto_init=False, trigger_mode=TRIGGER_MODE_MANUAL, labels=['util'], ) local_resource( 'util:dockerize-all', cmd='meepctl dockerize all', auto_init=False, trigger_mode=TRIGGER_MODE_MANUAL, labels=['util'], ) local_resource( 'util:docker-prune', cmd='docker image prune -f', auto_init=False, trigger_mode=TRIGGER_MODE_MANUAL, labels=['util'], ) local_resource( 'util:pod-status', cmd='kubectl get pods -A | grep meep-', auto_init=False, trigger_mode=TRIGGER_MODE_MANUAL, labels=['util'], ) # ============================================ # meep-ingress-certs - chart-only core app (no Go code) # ============================================ local_resource( 'meep-ingress-certs:chart', cmd='echo "=== [meep-ingress-certs] Chart changed ===" && meepctl deploy core meep-ingress-certs --force', deps=['charts/meep-ingress-certs/'], auto_init=False, trigger_mode=TRIGGER_MODE_AUTO, labels=['core'], )
charts/kube-state-metrics/values.yaml +9 −8 Original line number Diff line number Diff line Loading @@ -2,7 +2,7 @@ meepOrigin: core prometheusScrape: true image: repository: quay.io/coreos/kube-state-metrics repository: rancher/mirrored-coreos-kube-state-metrics tag: v1.9.7 pullPolicy: IfNotPresent Loading Loading @@ -124,23 +124,23 @@ podDisruptionBudget: {} # Available collectors for kube-state-metrics. By default all available # collectors are enabled. collectors: certificatesigningrequests: true certificatesigningrequests: false configmaps: true cronjobs: true cronjobs: false daemonsets: true deployments: true endpoints: true horizontalpodautoscalers: true ingresses: true horizontalpodautoscalers: false ingresses: false jobs: true limitranges: true mutatingwebhookconfigurations: true mutatingwebhookconfigurations: false namespaces: true networkpolicies: true nodes: true persistentvolumeclaims: true persistentvolumes: true poddisruptionbudgets: true poddisruptionbudgets: false pods: true replicasets: true replicationcontrollers: true Loading @@ -149,10 +149,11 @@ collectors: services: true statefulsets: true storageclasses: true validatingwebhookconfigurations: true validatingwebhookconfigurations: false verticalpodautoscalers: false volumeattachments: true # Enabling kubeconfig will pass the --kubeconfig argument to the container kubeconfig: enabled: false Loading