Skip to content
Merged
Show file tree
Hide file tree
Changes from 4 commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,6 @@ require (
github.com/go-logfmt/logfmt v0.6.0
github.com/go-logr/logr v1.4.2
github.com/go-logr/zapr v1.3.0
github.com/go-openapi/jsonpointer v0.21.1
github.com/go-openapi/spec v0.21.0
github.com/go-openapi/strfmt v0.23.0
github.com/go-openapi/validate v0.24.0
Expand Down Expand Up @@ -62,6 +61,7 @@ require (
go.uber.org/zap v1.27.0
golang.org/x/exp v0.0.0-20250106191152-7588d65b2ba8
golang.org/x/net v0.39.0
gomodules.xyz/jsonpatch/v2 v2.4.0
google.golang.org/genproto/googleapis/api v0.0.0-20250218202821-56aae31c358a
google.golang.org/grpc v1.72.0
google.golang.org/grpc/security/advancedtls v1.0.0
Expand Down Expand Up @@ -221,6 +221,7 @@ require (
github.com/go-ole/go-ole v1.3.0 // indirect
github.com/go-openapi/analysis v0.23.0 // indirect
github.com/go-openapi/errors v0.22.0 // indirect
github.com/go-openapi/jsonpointer v0.21.1 // indirect
github.com/go-openapi/jsonreference v0.21.0 // indirect
github.com/go-openapi/loads v0.22.0 // indirect
github.com/go-openapi/swag v0.23.1 // indirect
Expand Down Expand Up @@ -489,7 +490,6 @@ require (
golang.org/x/time v0.10.0 // indirect
golang.org/x/tools v0.31.0 // indirect
golang.org/x/xerrors v0.0.0-20231012003039-104605ab7028 // indirect
gomodules.xyz/jsonpatch/v2 v2.4.0 // indirect
google.golang.org/genproto/googleapis/rpc v0.0.0-20250219182151-9fdb1cabc7b2 // indirect
google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.5.1 // indirect
gopkg.in/alecthomas/kingpin.v2 v2.2.6 // indirect
Expand Down
17 changes: 13 additions & 4 deletions internal/cmd/certgen.go
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,8 @@ import (

"github.com/spf13/cobra"
admissionregistrationv1 "k8s.io/api/admissionregistration/v1"
corev1 "k8s.io/api/core/v1"
"k8s.io/apimachinery/pkg/types"
"sigs.k8s.io/controller-runtime/pkg/client"
clicfg "sigs.k8s.io/controller-runtime/pkg/client/config"

Expand Down Expand Up @@ -80,7 +82,7 @@ func certGen(ctx context.Context, logOut io.Writer, local bool) error {
if err = outputCertsForKubernetes(ctx, cli, cfg, overwriteControlPlaneCerts, certs); err != nil {
return fmt.Errorf("failed to output certificates: %w", err)
}
if err = patchTopologyInjectorWebhook(ctx, cli, cfg, certs.CACertificate); err != nil {
if err = patchTopologyInjectorWebhook(ctx, cli, cfg); err != nil {
return fmt.Errorf("failed to patch webhook: %w", err)
}
} else {
Expand Down Expand Up @@ -116,7 +118,7 @@ func outputCertsForKubernetes(ctx context.Context, cli client.Client, cfg *confi
return nil
}

func patchTopologyInjectorWebhook(ctx context.Context, cli client.Client, cfg *config.Server, caBundle []byte) error {
func patchTopologyInjectorWebhook(ctx context.Context, cli client.Client, cfg *config.Server) error {
if disableTopologyInjector {
return nil
}
Expand All @@ -127,10 +129,17 @@ func patchTopologyInjectorWebhook(ctx context.Context, cli client.Client, cfg *c
return fmt.Errorf("failed to get mutating webhook configuration: %w", err)
}

secretName := types.NamespacedName{Name: "envoy-gateway", Namespace: cfg.ControllerNamespace}
current := &corev1.Secret{}
if err := cli.Get(ctx, secretName, current); err != nil {
return fmt.Errorf("failed to get secret %s/%s: %w", current.Namespace, current.Name, err)
}

var updated bool
desiredBundle := current.Data["ca.crt"]
for i, webhook := range webhookCfg.Webhooks {
if !bytes.Equal(caBundle, webhook.ClientConfig.CABundle) {
webhookCfg.Webhooks[i].ClientConfig.CABundle = caBundle
if !bytes.Equal(desiredBundle, webhook.ClientConfig.CABundle) {
webhookCfg.Webhooks[i].ClientConfig.CABundle = desiredBundle
updated = true
}
}
Expand Down
19 changes: 13 additions & 6 deletions internal/cmd/certgen_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ import (
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
admissionregistrationv1 "k8s.io/api/admissionregistration/v1"
corev1 "k8s.io/api/core/v1"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"sigs.k8s.io/controller-runtime/pkg/client"
"sigs.k8s.io/controller-runtime/pkg/client/fake"
Expand Down Expand Up @@ -57,7 +58,7 @@ func TestPatchTopologyWebhook(t *testing.T) {
cases := []struct {
caseName string
webhook *admissionregistrationv1.MutatingWebhookConfiguration
caBundle []byte
secret *corev1.Secret
wantErr error
wantPatch bool
}{
Expand All @@ -69,7 +70,10 @@ func TestPatchTopologyWebhook(t *testing.T) {
},
Webhooks: []admissionregistrationv1.MutatingWebhook{{ClientConfig: admissionregistrationv1.WebhookClientConfig{}}},
},
caBundle: []byte("foo"),
secret: &corev1.Secret{
ObjectMeta: metav1.ObjectMeta{Name: "envoy-gateway", Namespace: cfg.ControllerNamespace},
Data: map[string][]byte{"ca.crt": []byte("foo")},
},
wantErr: nil,
wantPatch: true,
},
Expand All @@ -81,25 +85,28 @@ func TestPatchTopologyWebhook(t *testing.T) {
},
Webhooks: []admissionregistrationv1.MutatingWebhook{{ClientConfig: admissionregistrationv1.WebhookClientConfig{CABundle: []byte("foo")}}},
},
caBundle: []byte("foo"),
secret: &corev1.Secret{
ObjectMeta: metav1.ObjectMeta{Name: "envoy-gateway", Namespace: cfg.ControllerNamespace},
Data: map[string][]byte{"ca.crt": []byte("foo")},
},
wantPatch: false,
},
}
for _, tc := range cases {
t.Run(tc.caseName, func(t *testing.T) {
fakeClient := fake.NewClientBuilder().
WithRuntimeObjects(tc.webhook).
WithRuntimeObjects(tc.webhook, tc.secret).
Build()
beforeWebhook := &admissionregistrationv1.MutatingWebhookConfiguration{}
require.NoError(t, fakeClient.Get(context.Background(), client.ObjectKey{Name: tc.webhook.Name}, beforeWebhook))
err = patchTopologyInjectorWebhook(context.Background(), fakeClient, cfg, tc.caBundle)

err = patchTopologyInjectorWebhook(context.Background(), fakeClient, cfg)
require.NoError(t, err)

afterWebhook := &admissionregistrationv1.MutatingWebhookConfiguration{}
require.NoError(t, fakeClient.Get(context.Background(), client.ObjectKey{Name: tc.webhook.Name}, afterWebhook))

require.Equal(t, afterWebhook.Webhooks[0].ClientConfig.CABundle, tc.caBundle)
require.Equal(t, afterWebhook.Webhooks[0].ClientConfig.CABundle, tc.secret.Data["ca.crt"])
assert.Equal(t, tc.wantPatch, beforeWebhook.GetResourceVersion() != afterWebhook.GetResourceVersion())
})
}
Expand Down
2 changes: 1 addition & 1 deletion internal/infrastructure/kubernetes/proxy/resource.go
Original file line number Diff line number Diff line change
Expand Up @@ -402,7 +402,7 @@ func expectedContainerEnv(containerSpec *egv1a1.KubernetesContainerSpec, gateway
ValueFrom: &corev1.EnvVarSource{
FieldRef: &corev1.ObjectFieldSelector{
APIVersion: "v1",
FieldPath: fmt.Sprintf("metadata.labels['%s']", corev1.LabelTopologyZone),
FieldPath: fmt.Sprintf("metadata.annotations['%s']", corev1.LabelTopologyZone),
Comment thread
arkodg marked this conversation as resolved.
},
},
},
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,7 @@ spec:
valueFrom:
fieldRef:
apiVersion: v1
fieldPath: metadata.labels['topology.kubernetes.io/zone']
fieldPath: metadata.annotations['topology.kubernetes.io/zone']
- name: ENVOY_POD_NAME
valueFrom:
fieldRef:
Expand Down Expand Up @@ -142,7 +142,7 @@ spec:
valueFrom:
fieldRef:
apiVersion: v1
fieldPath: metadata.labels['topology.kubernetes.io/zone']
fieldPath: metadata.annotations['topology.kubernetes.io/zone']
- name: ENVOY_POD_NAME
valueFrom:
fieldRef:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -258,7 +258,7 @@ spec:
valueFrom:
fieldRef:
apiVersion: v1
fieldPath: metadata.labels['topology.kubernetes.io/zone']
fieldPath: metadata.annotations['topology.kubernetes.io/zone']
- name: ENVOY_POD_NAME
valueFrom:
fieldRef:
Expand Down Expand Up @@ -339,7 +339,7 @@ spec:
valueFrom:
fieldRef:
apiVersion: v1
fieldPath: metadata.labels['topology.kubernetes.io/zone']
fieldPath: metadata.annotations['topology.kubernetes.io/zone']
- name: ENVOY_POD_NAME
valueFrom:
fieldRef:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -257,7 +257,7 @@ spec:
valueFrom:
fieldRef:
apiVersion: v1
fieldPath: metadata.labels['topology.kubernetes.io/zone']
fieldPath: metadata.annotations['topology.kubernetes.io/zone']
- name: ENVOY_POD_NAME
valueFrom:
fieldRef:
Expand Down Expand Up @@ -338,7 +338,7 @@ spec:
valueFrom:
fieldRef:
apiVersion: v1
fieldPath: metadata.labels['topology.kubernetes.io/zone']
fieldPath: metadata.annotations['topology.kubernetes.io/zone']
- name: ENVOY_POD_NAME
valueFrom:
fieldRef:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -242,7 +242,7 @@ spec:
valueFrom:
fieldRef:
apiVersion: v1
fieldPath: metadata.labels['topology.kubernetes.io/zone']
fieldPath: metadata.annotations['topology.kubernetes.io/zone']
- name: ENVOY_POD_NAME
valueFrom:
fieldRef:
Expand Down Expand Up @@ -329,7 +329,7 @@ spec:
valueFrom:
fieldRef:
apiVersion: v1
fieldPath: metadata.labels['topology.kubernetes.io/zone']
fieldPath: metadata.annotations['topology.kubernetes.io/zone']
- name: ENVOY_POD_NAME
valueFrom:
fieldRef:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -191,7 +191,7 @@ spec:
valueFrom:
fieldRef:
apiVersion: v1
fieldPath: metadata.labels['topology.kubernetes.io/zone']
fieldPath: metadata.annotations['topology.kubernetes.io/zone']
- name: ENVOY_POD_NAME
valueFrom:
fieldRef:
Expand Down Expand Up @@ -275,7 +275,7 @@ spec:
valueFrom:
fieldRef:
apiVersion: v1
fieldPath: metadata.labels['topology.kubernetes.io/zone']
fieldPath: metadata.annotations['topology.kubernetes.io/zone']
- name: ENVOY_POD_NAME
valueFrom:
fieldRef:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -257,7 +257,7 @@ spec:
valueFrom:
fieldRef:
apiVersion: v1
fieldPath: metadata.labels['topology.kubernetes.io/zone']
fieldPath: metadata.annotations['topology.kubernetes.io/zone']
- name: ENVOY_POD_NAME
valueFrom:
fieldRef:
Expand Down Expand Up @@ -342,7 +342,7 @@ spec:
valueFrom:
fieldRef:
apiVersion: v1
fieldPath: metadata.labels['topology.kubernetes.io/zone']
fieldPath: metadata.annotations['topology.kubernetes.io/zone']
- name: ENVOY_POD_NAME
valueFrom:
fieldRef:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -251,7 +251,7 @@ spec:
valueFrom:
fieldRef:
apiVersion: v1
fieldPath: metadata.labels['topology.kubernetes.io/zone']
fieldPath: metadata.annotations['topology.kubernetes.io/zone']
- name: ENVOY_POD_NAME
valueFrom:
fieldRef:
Expand Down Expand Up @@ -338,7 +338,7 @@ spec:
valueFrom:
fieldRef:
apiVersion: v1
fieldPath: metadata.labels['topology.kubernetes.io/zone']
fieldPath: metadata.annotations['topology.kubernetes.io/zone']
- name: ENVOY_POD_NAME
valueFrom:
fieldRef:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -242,7 +242,7 @@ spec:
valueFrom:
fieldRef:
apiVersion: v1
fieldPath: metadata.labels['topology.kubernetes.io/zone']
fieldPath: metadata.annotations['topology.kubernetes.io/zone']
- name: ENVOY_POD_NAME
valueFrom:
fieldRef:
Expand Down Expand Up @@ -329,7 +329,7 @@ spec:
valueFrom:
fieldRef:
apiVersion: v1
fieldPath: metadata.labels['topology.kubernetes.io/zone']
fieldPath: metadata.annotations['topology.kubernetes.io/zone']
- name: ENVOY_POD_NAME
valueFrom:
fieldRef:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -242,7 +242,7 @@ spec:
valueFrom:
fieldRef:
apiVersion: v1
fieldPath: metadata.labels['topology.kubernetes.io/zone']
fieldPath: metadata.annotations['topology.kubernetes.io/zone']
- name: ENVOY_POD_NAME
valueFrom:
fieldRef:
Expand Down Expand Up @@ -334,7 +334,7 @@ spec:
valueFrom:
fieldRef:
apiVersion: v1
fieldPath: metadata.labels['topology.kubernetes.io/zone']
fieldPath: metadata.annotations['topology.kubernetes.io/zone']
- name: ENVOY_POD_NAME
valueFrom:
fieldRef:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -257,7 +257,7 @@ spec:
valueFrom:
fieldRef:
apiVersion: v1
fieldPath: metadata.labels['topology.kubernetes.io/zone']
fieldPath: metadata.annotations['topology.kubernetes.io/zone']
- name: ENVOY_POD_NAME
valueFrom:
fieldRef:
Expand Down Expand Up @@ -342,7 +342,7 @@ spec:
valueFrom:
fieldRef:
apiVersion: v1
fieldPath: metadata.labels['topology.kubernetes.io/zone']
fieldPath: metadata.annotations['topology.kubernetes.io/zone']
- name: ENVOY_POD_NAME
valueFrom:
fieldRef:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -247,7 +247,7 @@ spec:
valueFrom:
fieldRef:
apiVersion: v1
fieldPath: metadata.labels['topology.kubernetes.io/zone']
fieldPath: metadata.annotations['topology.kubernetes.io/zone']
- name: ENVOY_POD_NAME
valueFrom:
fieldRef:
Expand Down Expand Up @@ -334,7 +334,7 @@ spec:
valueFrom:
fieldRef:
apiVersion: v1
fieldPath: metadata.labels['topology.kubernetes.io/zone']
fieldPath: metadata.annotations['topology.kubernetes.io/zone']
- name: ENVOY_POD_NAME
valueFrom:
fieldRef:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,7 @@ spec:
valueFrom:
fieldRef:
apiVersion: v1
fieldPath: metadata.labels['topology.kubernetes.io/zone']
fieldPath: metadata.annotations['topology.kubernetes.io/zone']
- name: ENVOY_POD_NAME
valueFrom:
fieldRef:
Expand Down Expand Up @@ -142,7 +142,7 @@ spec:
valueFrom:
fieldRef:
apiVersion: v1
fieldPath: metadata.labels['topology.kubernetes.io/zone']
fieldPath: metadata.annotations['topology.kubernetes.io/zone']
- name: ENVOY_POD_NAME
valueFrom:
fieldRef:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -244,7 +244,7 @@ spec:
valueFrom:
fieldRef:
apiVersion: v1
fieldPath: metadata.labels['topology.kubernetes.io/zone']
fieldPath: metadata.annotations['topology.kubernetes.io/zone']
- name: ENVOY_POD_NAME
valueFrom:
fieldRef:
Expand Down Expand Up @@ -331,7 +331,7 @@ spec:
valueFrom:
fieldRef:
apiVersion: v1
fieldPath: metadata.labels['topology.kubernetes.io/zone']
fieldPath: metadata.annotations['topology.kubernetes.io/zone']
- name: ENVOY_POD_NAME
valueFrom:
fieldRef:
Expand Down
Loading