From 6a49bf1fb15918ef417768369b2c64639f166c87 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=8A=92=E6=83=85=E7=86=8A?= <2669184984@qq.com> Date: Fri, 6 Sep 2024 11:03:13 +0800 Subject: [PATCH 1/3] add service port --- .../internal/controller/devbox_controller.go | 40 ++++++++++++++++--- 1 file changed, 34 insertions(+), 6 deletions(-) diff --git a/controllers/devbox/internal/controller/devbox_controller.go b/controllers/devbox/internal/controller/devbox_controller.go index fd1badd4e30..6cd623bb676 100644 --- a/controllers/devbox/internal/controller/devbox_controller.go +++ b/controllers/devbox/internal/controller/devbox_controller.go @@ -480,19 +480,47 @@ func (r *DevboxReconciler) generateDevboxPod(devbox *devboxv1alpha1.Devbox, runt } func (r *DevboxReconciler) syncService(ctx context.Context, devbox *devboxv1alpha1.Devbox, recLabels map[string]string) error { - expectServiceSpec := corev1.ServiceSpec{ - Selector: recLabels, - Type: corev1.ServiceTypeNodePort, - Ports: []corev1.ServicePort{ + + var runtimeNamespace string + if devbox.Spec.RuntimeRef.Namespace != "" { + runtimeNamespace = devbox.Spec.RuntimeRef.Namespace + } else { + runtimeNamespace = devbox.Namespace + } + + runtimecr := &devboxv1alpha1.Runtime{} + if err := r.Get(ctx, client.ObjectKey{Namespace: runtimeNamespace, Name: devbox.Spec.RuntimeRef.Name}, runtimecr); err != nil { + return err + } + var servicePorts []corev1.ServicePort + for _, port := range runtimecr.Spec.Config.Ports { + if port.Name == "devbox-ssh-port" { + servicePorts = []corev1.ServicePort{ + { + Name: "tty", + Port: port.ContainerPort, + TargetPort: intstr.FromInt32(port.ContainerPort), + Protocol: port.Protocol, + }, + } + } + } + if len(servicePorts) == 0 { + //use the default value + servicePorts = []corev1.ServicePort{ { Name: "tty", Port: 22, TargetPort: intstr.FromInt32(22), Protocol: corev1.ProtocolTCP, }, - }, + } + } + expectServiceSpec := corev1.ServiceSpec{ + Selector: recLabels, + Type: corev1.ServiceTypeNodePort, + Ports: servicePorts, } - service := &corev1.Service{ ObjectMeta: metav1.ObjectMeta{ Name: devbox.Name + "-svc", From 8e5710b47a74d53f969ef2d34615937e8ebe81ac Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=8A=92=E6=83=85=E7=86=8A?= <2669184984@qq.com> Date: Fri, 6 Sep 2024 14:19:19 +0800 Subject: [PATCH 2/3] fix bug --- controllers/devbox/internal/controller/devbox_controller.go | 1 - 1 file changed, 1 deletion(-) diff --git a/controllers/devbox/internal/controller/devbox_controller.go b/controllers/devbox/internal/controller/devbox_controller.go index 6cd623bb676..a8a3bf741bb 100644 --- a/controllers/devbox/internal/controller/devbox_controller.go +++ b/controllers/devbox/internal/controller/devbox_controller.go @@ -480,7 +480,6 @@ func (r *DevboxReconciler) generateDevboxPod(devbox *devboxv1alpha1.Devbox, runt } func (r *DevboxReconciler) syncService(ctx context.Context, devbox *devboxv1alpha1.Devbox, recLabels map[string]string) error { - var runtimeNamespace string if devbox.Spec.RuntimeRef.Namespace != "" { runtimeNamespace = devbox.Spec.RuntimeRef.Namespace From a16b92347e9ed34b35449113fb8004315bb60dae Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=8A=92=E6=83=85=E7=86=8A?= <2669184984@qq.com> Date: Fri, 6 Sep 2024 14:31:10 +0800 Subject: [PATCH 3/3] fix bug --- .../internal/controller/devbox_controller.go | 16 ++++++---------- 1 file changed, 6 insertions(+), 10 deletions(-) diff --git a/controllers/devbox/internal/controller/devbox_controller.go b/controllers/devbox/internal/controller/devbox_controller.go index a8a3bf741bb..6e16c825249 100644 --- a/controllers/devbox/internal/controller/devbox_controller.go +++ b/controllers/devbox/internal/controller/devbox_controller.go @@ -493,16 +493,12 @@ func (r *DevboxReconciler) syncService(ctx context.Context, devbox *devboxv1alph } var servicePorts []corev1.ServicePort for _, port := range runtimecr.Spec.Config.Ports { - if port.Name == "devbox-ssh-port" { - servicePorts = []corev1.ServicePort{ - { - Name: "tty", - Port: port.ContainerPort, - TargetPort: intstr.FromInt32(port.ContainerPort), - Protocol: port.Protocol, - }, - } - } + servicePorts = append(servicePorts, corev1.ServicePort{ + Name: port.Name, + Port: port.ContainerPort, + TargetPort: intstr.FromInt32(port.ContainerPort), + Protocol: port.Protocol, + }) } if len(servicePorts) == 0 { //use the default value