diff --git a/internal/templates/renderer_test.go b/internal/templates/renderer_test.go index bcfe4c6..2d9053c 100644 --- a/internal/templates/renderer_test.go +++ b/internal/templates/renderer_test.go @@ -26,6 +26,7 @@ func TestRenderTemplate(t *testing.T) { }, UID: 2000, Image: "ubuntu:22.04", + Namespace: "devenv-test", Packages: config.PackageConfig{ Python: []string{"numpy", "pandas"}, APT: []string{"vim", "curl"}, @@ -57,7 +58,7 @@ func TestRenderTemplate(t *testing.T) { }, } - templates := []string{"statefulset", "service", "env-vars", "startup-scripts"} + templates := []string{"statefulset", "service", "env-vars", "startup-scripts", "ingress"} for _, templateName := range templates { t.Run(templateName, func(t *testing.T) { @@ -109,6 +110,7 @@ func TestRenderAll(t *testing.T) { Name: "minimal", BaseConfig: config.BaseConfig{ SSHPublicKey: "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQC7... minimal@example.com", + Namespace: "devenv-test", }, SSHPort: 30002, } @@ -121,7 +123,7 @@ func TestRenderAll(t *testing.T) { require.NoError(t, err, "RenderAll should not return error") // Verify all expected files were created - expectedFiles := []string{"statefulset.yaml", "service.yaml", "env-vars.yaml", "startup-scripts.yaml"} + expectedFiles := []string{"statefulset.yaml", "service.yaml", "env-vars.yaml", "startup-scripts.yaml", "ingress.yaml"} for _, filename := range expectedFiles { filePath := filepath.Join(tempDir, filename) diff --git a/internal/templates/template_files/dev/manifests/env-vars.tmpl b/internal/templates/template_files/dev/manifests/env-vars.tmpl index 1597a53..cb79900 100644 --- a/internal/templates/template_files/dev/manifests/env-vars.tmpl +++ b/internal/templates/template_files/dev/manifests/env-vars.tmpl @@ -2,6 +2,7 @@ apiVersion: v1 kind: ConfigMap metadata: name: env-vars-{{.Name}} + namespace: {{.Namespace}} labels: app: devenv-{{.Name}} data: diff --git a/internal/templates/template_files/dev/manifests/ingress.tmpl b/internal/templates/template_files/dev/manifests/ingress.tmpl index 5f70fe1..951a580 100644 --- a/internal/templates/template_files/dev/manifests/ingress.tmpl +++ b/internal/templates/template_files/dev/manifests/ingress.tmpl @@ -2,6 +2,7 @@ apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: devenv-ingress-{{.Name}} + namespace: {{.Namespace}} annotations: nginx.ingress.kubernetes.io/force-ssl-redirect: "true" cert-manager.io/cluster-issuer: "letsencrypt" @@ -28,4 +29,4 @@ spec: tls: - hosts: - "*.{{.HostName}}" - secretName: http-{{.Name}}-tls \ No newline at end of file + secretName: http-{{.Name}}-tls diff --git a/internal/templates/template_files/dev/manifests/service.tmpl b/internal/templates/template_files/dev/manifests/service.tmpl index 9d5a10f..4073269 100644 --- a/internal/templates/template_files/dev/manifests/service.tmpl +++ b/internal/templates/template_files/dev/manifests/service.tmpl @@ -2,6 +2,7 @@ apiVersion: v1 kind: Service metadata: name: devenv-ssh-{{.Name}} + namespace: {{.Namespace}} labels: app: devenv-{{.Name}} service: ssh @@ -21,6 +22,7 @@ apiVersion: v1 kind: Service metadata: name: devenv-http-{{.Name}} + namespace: {{.Namespace}} labels: app: devenv-{{.Name}} service: http @@ -33,4 +35,4 @@ spec: port: {{.HTTPPort}} targetPort: {{.HTTPPort}} protocol: TCP -{{- end}} \ No newline at end of file +{{- end}} diff --git a/internal/templates/template_files/dev/manifests/startup-scripts.tmpl b/internal/templates/template_files/dev/manifests/startup-scripts.tmpl index 9f39413..5a33d03 100644 --- a/internal/templates/template_files/dev/manifests/startup-scripts.tmpl +++ b/internal/templates/template_files/dev/manifests/startup-scripts.tmpl @@ -2,6 +2,7 @@ apiVersion: v1 kind: ConfigMap metadata: name: startup-scripts-{{.Name}} + namespace: {{.Namespace}} labels: app: devenv-{{.Name}} data: @@ -19,4 +20,4 @@ data: # User setup script setup.sh: | - {{getTemplatedScript "user-setup.sh" . | indent 4}} \ No newline at end of file + {{getTemplatedScript "user-setup.sh" . | indent 4}} diff --git a/internal/templates/template_files/dev/manifests/statefulset.tmpl b/internal/templates/template_files/dev/manifests/statefulset.tmpl index 4183b71..6cae7cb 100644 --- a/internal/templates/template_files/dev/manifests/statefulset.tmpl +++ b/internal/templates/template_files/dev/manifests/statefulset.tmpl @@ -2,6 +2,7 @@ apiVersion: apps/v1 kind: StatefulSet metadata: name: devenv-{{.Name}} + namespace: {{.Namespace}} labels: app: devenv-{{.Name}} component: devenv @@ -127,4 +128,4 @@ spec: hostPath: path: {{.LocalPath}} type: DirectoryOrCreate - {{- end}} \ No newline at end of file + {{- end}} diff --git a/internal/templates/testdata/golden/env-vars.yaml b/internal/templates/testdata/golden/env-vars.yaml index 1d9015f..3764aa0 100644 --- a/internal/templates/testdata/golden/env-vars.yaml +++ b/internal/templates/testdata/golden/env-vars.yaml @@ -2,6 +2,7 @@ apiVersion: v1 kind: ConfigMap metadata: name: env-vars-testuser + namespace: devenv-test labels: app: devenv-testuser data: diff --git a/internal/templates/testdata/golden/ingress.yaml b/internal/templates/testdata/golden/ingress.yaml new file mode 100644 index 0000000..4d0c5ba --- /dev/null +++ b/internal/templates/testdata/golden/ingress.yaml @@ -0,0 +1,26 @@ +apiVersion: networking.k8s.io/v1 +kind: Ingress +metadata: + name: devenv-ingress-testuser + namespace: devenv-test + annotations: + nginx.ingress.kubernetes.io/force-ssl-redirect: "true" + cert-manager.io/cluster-issuer: "letsencrypt" + +spec: + ingressClassName: nginx + rules: + - host: testuser. + http: + paths: + - path: / + pathType: Prefix + backend: + service: + name: devenv-http-testuser + port: + name: http + tls: + - hosts: + - "*." + secretName: http-testuser-tls diff --git a/internal/templates/testdata/golden/service.yaml b/internal/templates/testdata/golden/service.yaml index 6453f86..9dd83e9 100644 --- a/internal/templates/testdata/golden/service.yaml +++ b/internal/templates/testdata/golden/service.yaml @@ -2,6 +2,7 @@ apiVersion: v1 kind: Service metadata: name: devenv-ssh-testuser + namespace: devenv-test labels: app: devenv-testuser service: ssh @@ -20,6 +21,7 @@ apiVersion: v1 kind: Service metadata: name: devenv-http-testuser + namespace: devenv-test labels: app: devenv-testuser service: http @@ -31,4 +33,4 @@ spec: - name: http port: 8080 targetPort: 8080 - protocol: TCP \ No newline at end of file + protocol: TCP diff --git a/internal/templates/testdata/golden/startup-scripts.yaml b/internal/templates/testdata/golden/startup-scripts.yaml index bdc2e09..250345c 100644 --- a/internal/templates/testdata/golden/startup-scripts.yaml +++ b/internal/templates/testdata/golden/startup-scripts.yaml @@ -2,6 +2,7 @@ apiVersion: v1 kind: ConfigMap metadata: name: startup-scripts-testuser + namespace: devenv-test labels: app: devenv-testuser data: @@ -355,4 +356,4 @@ data: git config --global user.name "${GIT_USER_NAME}" git config --global user.email "${GIT_USER_EMAIL}" - echo "User environment setup complete for testuser" \ No newline at end of file + echo "User environment setup complete for testuser" diff --git a/internal/templates/testdata/golden/statefulset.yaml b/internal/templates/testdata/golden/statefulset.yaml index e2ec0a7..33e7ae9 100644 --- a/internal/templates/testdata/golden/statefulset.yaml +++ b/internal/templates/testdata/golden/statefulset.yaml @@ -2,6 +2,7 @@ apiVersion: apps/v1 kind: StatefulSet metadata: name: devenv-testuser + namespace: devenv-test labels: app: devenv-testuser component: devenv @@ -106,4 +107,4 @@ spec: - name: config-volume hostPath: path: /mnt/config - type: DirectoryOrCreate \ No newline at end of file + type: DirectoryOrCreate