Skip to content

Commit 594b66c

Browse files
committed
[public-api] Add kube-rbac proxy container to deployment
1 parent c31498e commit 594b66c

File tree

5 files changed

+89
-7
lines changed

5 files changed

+89
-7
lines changed

install/installer/pkg/common/common.go

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -280,17 +280,21 @@ func MessageBusWaiterContainer(ctx *RenderContext) *corev1.Container {
280280
}
281281

282282
func KubeRBACProxyContainer(ctx *RenderContext) *corev1.Container {
283+
return KubeRBACProxyContainerWithConfig(ctx, 9500, "http://127.0.0.1:9500/")
284+
}
285+
286+
func KubeRBACProxyContainerWithConfig(ctx *RenderContext, listenPort int32, upstream string) *corev1.Container {
283287
return &corev1.Container{
284288
Name: "kube-rbac-proxy",
285289
Image: ctx.ImageName(ThirdPartyContainerRepo(ctx.Config.Repository, KubeRBACProxyRepo), KubeRBACProxyImage, KubeRBACProxyTag),
286290
Args: []string{
287291
"--v=5",
288292
"--logtostderr",
289-
"--insecure-listen-address=[$(IP)]:9500",
290-
"--upstream=http://127.0.0.1:9500/",
293+
fmt.Sprintf("--insecure-listen-address=[$(IP)]:%d", listenPort),
294+
fmt.Sprintf("--upstream=%s", upstream),
291295
},
292296
Ports: []corev1.ContainerPort{
293-
{Name: "metrics", ContainerPort: 9500},
297+
{Name: "metrics", ContainerPort: listenPort},
294298
},
295299
Env: []corev1.EnvVar{
296300
{
Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
// Copyright (c) 2022 Gitpod GmbH. All rights reserved.
2+
// Licensed under the MIT License. See License-MIT.txt in the project root for license information.
3+
4+
package common_test
5+
6+
import (
7+
"fmt"
8+
"github.com/gitpod-io/gitpod/installer/pkg/common"
9+
"github.com/gitpod-io/gitpod/installer/pkg/config/v1"
10+
"github.com/gitpod-io/gitpod/installer/pkg/config/versions"
11+
"github.com/stretchr/testify/require"
12+
corev1 "k8s.io/api/core/v1"
13+
"testing"
14+
)
15+
16+
func TestKubeRBACProxyContainer_DefaultPorts(t *testing.T) {
17+
ctx, err := common.NewRenderContext(config.Config{}, versions.Manifest{}, "test_namespace")
18+
require.NoError(t, err)
19+
20+
container := common.KubeRBACProxyContainer(ctx)
21+
require.Equal(t, []string{
22+
"--v=5",
23+
"--logtostderr",
24+
"--insecure-listen-address=[$(IP)]:9500",
25+
"--upstream=http://127.0.0.1:9500/",
26+
}, container.Args)
27+
require.Equal(t, []corev1.ContainerPort{
28+
{Name: "metrics", ContainerPort: 9500},
29+
}, container.Ports)
30+
}
31+
32+
func TestKubeRBACProxyContainerWithConfig(t *testing.T) {
33+
ctx, err := common.NewRenderContext(config.Config{}, versions.Manifest{}, "test_namespace")
34+
require.NoError(t, err)
35+
36+
listenPort := int32(9000)
37+
container := common.KubeRBACProxyContainerWithConfig(ctx, listenPort, "http://127.0.0.1:9500/metrics")
38+
require.Equal(t, []string{
39+
"--v=5",
40+
"--logtostderr",
41+
fmt.Sprintf("--insecure-listen-address=[$(IP)]:%d", listenPort),
42+
"--upstream=http://127.0.0.1:9500/metrics",
43+
}, container.Args)
44+
require.Equal(t, []corev1.ContainerPort{
45+
{Name: "metrics", ContainerPort: listenPort},
46+
}, container.Ports)
47+
}

install/installer/pkg/components/public-api-server/deployment.go

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
package public_api_server
55

66
import (
7+
"fmt"
78
"github.com/gitpod-io/gitpod/installer/pkg/cluster"
89
"github.com/gitpod-io/gitpod/installer/pkg/common"
910
appsv1 "k8s.io/api/apps/v1"
@@ -92,7 +93,9 @@ func deployment(ctx *common.RenderContext) ([]runtime.Object, error) {
9293
SuccessThreshold: 1,
9394
TimeoutSeconds: 1,
9495
},
95-
}},
96+
},
97+
*common.KubeRBACProxyContainerWithConfig(ctx, 9500, fmt.Sprintf("http://127.0.0.1:%d/", HTTPContainerPort)),
98+
},
9699
},
97100
},
98101
},
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
// Copyright (c) 2022 Gitpod GmbH. All rights reserved.
2+
// Licensed under the MIT License. See License-MIT.txt in the project root for license information.
3+
4+
package public_api_server
5+
6+
import (
7+
"github.com/stretchr/testify/require"
8+
appsv1 "k8s.io/api/apps/v1"
9+
"testing"
10+
)
11+
12+
func TestDeployment(t *testing.T) {
13+
ctx := renderContextWithPublicAPIEnabled(t)
14+
15+
objects, err := deployment(ctx)
16+
require.NoError(t, err)
17+
18+
require.Len(t, objects, 1, "must render only one object")
19+
20+
dpl := objects[0].(*appsv1.Deployment)
21+
require.Len(t, dpl.Spec.Template.Spec.Containers, 2, "must render 2 containers")
22+
}

install/installer/pkg/components/public-api-server/objects_test.go

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,14 @@ func TestObjects_NotRenderedDefault(t *testing.T) {
2222
}
2323

2424
func TestObjects_RenderedWhenExperimentalConfigSet(t *testing.T) {
25+
ctx := renderContextWithPublicAPIEnabled(t)
26+
27+
objects, err := Objects(ctx)
28+
require.NoError(t, err)
29+
require.NotEmpty(t, objects, "must render objects because experimental config is specified")
30+
}
31+
32+
func renderContextWithPublicAPIEnabled(t *testing.T) *common.RenderContext {
2533
ctx, err := common.NewRenderContext(config.Config{
2634
Experimental: &experimental.Config{
2735
WebApp: &experimental.WebAppConfig{
@@ -37,7 +45,5 @@ func TestObjects_RenderedWhenExperimentalConfigSet(t *testing.T) {
3745
}, "test-namespace")
3846
require.NoError(t, err)
3947

40-
objects, err := Objects(ctx)
41-
require.NoError(t, err)
42-
require.NotEmpty(t, objects, "must render objects because experimental config is specified")
48+
return ctx
4349
}

0 commit comments

Comments
 (0)