From 9e666b0c3bb745f8bc5d0b0e0075a3d65e15f124 Mon Sep 17 00:00:00 2001 From: yoshino-s Date: Sat, 22 Jul 2023 10:53:38 +0000 Subject: [PATCH] feat: modify --- cmd/server.go | 24 +++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/cmd/server.go b/cmd/server.go index 325ba6e..0dde461 100644 --- a/cmd/server.go +++ b/cmd/server.go @@ -85,9 +85,31 @@ var ( m := o.UnstructuredContent() + spec := m["spec"].(map[string]interface{}) + resources := spec["resources"].([]interface{}) + + for _, res := range resources { + res := res.(map[string]interface{}) + if res["@type"] == "type.googleapis.com/envoy.config.listener.v3.Listener" { + filterChains := res["filterChains"].(map[string]interface{}) + filters := filterChains["filters"].([]interface{}) + for _, filter := range filters { + filter := filter.(map[string]interface{}) + if filter["name"] == "envoy.filters.network.http_connection_manager" { + upgradeConfigs := filter["upgradeConfigs"].([]interface{}) + upgradeConfigs = append(upgradeConfigs, map[string]interface{}{ + "upgradeType": "websoctailscale-control-protocolket", + }) + filter["upgradeConfigs"] = upgradeConfigs + filter["useRemoteAddress"] = true + filter["xffNumTrustedHops"] = 1 + } + } + } + } + o.SetUnstructuredContent(m) - logger.Info("mutating webhook called", zap.Any("object", m)) return &kwhmutating.MutatorResult{MutatedObject: obj}, nil })