Skip to content

Add required labels to kubernetes resources

Explain why selectorlabels are commented out

We tried to add them after the fact, but those are immutable, we'd require downtime if we need to apply them.

Maybe we'll still need to do that, but it does not need to be part of this change. See the docs for more info: https://kubernetes.io/docs/concepts/workloads/controllers/deployment/#label-selector-updates

Add a helper to runder dictionaries in yaml

This is stolen from the main gitlab-com repo, it will make it easier to sepcify labels as values.

Apply a type label to all services

This is mostly type: code_suggestions for the Triton & Model Gateway workloads.

Separating these into the values allows us to add anything we want to a specific workload.

All the service monitors get type: monitoring, this is not specified in values.

For: https://gitlab.com/gitlab-com/gl-infra/reliability/-/issues/23724

diff between rendering on main
diff --git a/home/bvl/tmp/helm-ai-assist-test-main.yaml b/home/bvl/tmp/helm-ai-assist-test.yaml
index 5eb93e5..f730926 100644
--- a/home/bvl/tmp/helm-ai-assist-test-main.yaml
+++ b/home/bvl/tmp/helm-ai-assist-test.yaml
@@ -11,10 +11,10 @@ metadata:
     
     app.kubernetes.io/version: "0.1.0"
     app.kubernetes.io/managed-by: Helm
-    shard: "default"
-    stage: "main"
-    tier: "sv"
-    type: "ai-assist"
+    shard: default
+    stage: main
+    tier: sv
+    type: code_suggestions
 provisioner: filestore.csi.storage.gke.io
 volumeBindingMode: Immediate # Filestore is cross-AZ, no need to wait for binding
 allowVolumeExpansion: true
@@ -32,10 +32,10 @@ metadata:
     
     app.kubernetes.io/version: "0.1.0"
     app.kubernetes.io/managed-by: Helm
-    shard: "default"
-    stage: "main"
-    tier: "sv"
-    type: "ai-assist"
+    shard: default
+    stage: main
+    tier: sv
+    type: code_suggestions
 spec:
   accessModes:
   - ReadWriteMany
@@ -55,10 +55,10 @@ metadata:
     
     app.kubernetes.io/version: "0.1.0"
     app.kubernetes.io/managed-by: Helm
-    shard: "default"
-    stage: "main"
-    tier: "sv"
-    type: "ai-assist"
+    shard: default
+    stage: main
+    tier: sv
+    type: code_suggestions
 spec:
   type: ClusterIP
   ports:
@@ -82,10 +82,10 @@ metadata:
     
     app.kubernetes.io/version: "0.1.0"
     app.kubernetes.io/managed-by: Helm
-    shard: "default"
-    stage: "main"
-    tier: "sv"
-    type: "ai-assist"
+    shard: default
+    stage: main
+    tier: sv
+    type: code_suggestions
 spec:
   type: ClusterIP
   selector:
@@ -111,10 +111,10 @@ metadata:
     
     app.kubernetes.io/version: "0.1.0"
     app.kubernetes.io/managed-by: Helm
-    shard: "default"
-    stage: "main"
-    tier: "sv"
-    type: "ai-assist"
+    shard: default
+    stage: main
+    tier: sv
+    type: code_suggestions
 spec:
   clusterIP: None
   ports:
@@ -135,10 +135,10 @@ metadata:
     
     app.kubernetes.io/version: "0.1.0"
     app.kubernetes.io/managed-by: Helm
-    shard: "default"
-    stage: "main"
-    tier: "sv"
-    type: "ai-assist"
+    shard: default
+    stage: main
+    tier: sv
+    type: code_suggestions
 spec:
   replicas: 12
   selector:
@@ -150,6 +150,14 @@ spec:
       labels:
         app: model-gateway
         
+        helm.sh/chart: ai-assist-0.1.0
+        
+        app.kubernetes.io/version: "0.1.0"
+        app.kubernetes.io/managed-by: Helm
+        shard: default
+        stage: main
+        tier: sv
+        type: code_suggestions
     spec:
       imagePullSecrets:
         - name: gitlab-registry
@@ -169,7 +177,7 @@ spec:
             - name: FASTAPI_API_PORT
               value: "5052"
             # Enable the Google Cloud Profiler
-            # See https://console.cloud.google.com/profiler?referrer=search&project=unreview-poc-390200e5 
+            # See https://console.cloud.google.com/profiler?referrer=search&project=unreview-poc-390200e5
             # for profile output
             - name: GOOGLE_CLOUD_PROFILER
               value: "1"
@@ -193,10 +201,10 @@ metadata:
     
     app.kubernetes.io/version: "0.1.0"
     app.kubernetes.io/managed-by: Helm
-    shard: "default"
-    stage: "main"
-    tier: "sv"
-    type: "ai-assist"
+    shard: default
+    stage: main
+    tier: sv
+    type: code_suggestions
 spec:
   replicas: 12
   strategy:
@@ -213,6 +221,14 @@ spec:
       labels:
         app: model-triton
         
+        helm.sh/chart: ai-assist-0.1.0
+        
+        app.kubernetes.io/version: "0.1.0"
+        app.kubernetes.io/managed-by: Helm
+        shard: default
+        stage: main
+        tier: sv
+        type: code_suggestions
     spec:
       imagePullSecrets:
         - name: gitlab-registry
@@ -231,7 +247,7 @@ spec:
           command: ["/bin/bash", "-x", "-c", "--"]
           # Metrics options are documented here:
           # https://github.com/triton-inference-server/server/blob/main/docs/user_guide/metrics.md
-          # TODO: add --allow-cpu-metrics true 
+          # TODO: add --allow-cpu-metrics true
           # TODO: add --metrics-config summary_latencies=true
           args:
             - |
@@ -249,7 +265,7 @@ spec:
             limits:
               nvidia.com/gpu: "1"
           readinessProbe:
-            httpGet: 
+            httpGet:
               path: /v2/health/ready
               port: 8000
             periodSeconds: 10
@@ -276,10 +292,10 @@ metadata:
     
     app.kubernetes.io/version: "0.1.0"
     app.kubernetes.io/managed-by: Helm
-    shard: "default"
-    stage: "main"
-    tier: "sv"
-    type: "ai-assist"
+    shard: default
+    stage: main
+    tier: sv
+    type: monitoring
 spec:
   endpoints:
     - interval: 30s
@@ -299,10 +315,10 @@ metadata:
     
     app.kubernetes.io/version: "0.1.0"
     app.kubernetes.io/managed-by: Helm
-    shard: "default"
-    stage: "main"
-    tier: "sv"
-    type: "ai-assist"
+    shard: default
+    stage: main
+    tier: sv
+    type: monitoring
 spec:
   endpoints:
     - interval: 30s
before after
before.yaml after.yaml
Edited by Bob Van Landuyt

Merge request reports