Skip to content

Commit 102b7fe

Browse files
Added annotation 'sidecar.aws.signing-proxy/scheme' (#50)
* Added annotation 'sidecar.aws.signing-proxy/scheme' * setting default scheme to HTTPS * changing scheme to upstream-url-scheme * Changing --scheme to --upstream-url-scheme * changing variable name to upstreamUrlScheme * updated tests
1 parent fcfe49f commit 102b7fe

File tree

2 files changed

+99
-81
lines changed

2 files changed

+99
-81
lines changed

controller/webhook.go

Lines changed: 36 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -20,32 +20,35 @@ import (
2020
"encoding/json"
2121
"fmt"
2222
"io/ioutil"
23+
"log"
24+
"net/http"
25+
"os"
26+
"strconv"
27+
"strings"
28+
2329
"k8s.io/api/admission/v1beta1"
2430
corev1 "k8s.io/api/core/v1"
2531
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
2632
"k8s.io/apimachinery/pkg/labels"
2733
"k8s.io/client-go/kubernetes"
2834
corev1Types "k8s.io/client-go/kubernetes/typed/core/v1"
29-
"log"
30-
"net/http"
31-
"os"
32-
"strings"
33-
"strconv"
3435
)
3536

3637
const (
37-
signingProxyWebhookAnnotationHostKey = "sidecar.aws.signing-proxy/host"
38-
signingProxyWebhookAnnotationInjectKey = "sidecar.aws.signing-proxy/inject"
39-
signingProxyWebhookAnnotationNameKey = "sidecar.aws.signing-proxy/name"
40-
signingProxyWebhookAnnotationRegionKey = "sidecar.aws.signing-proxy/region"
41-
signingProxyWebhookAnnotationRoleArnKey = "sidecar.aws.signing-proxy/role-arn"
42-
signingProxyWebhookAnnotationStatusKey = "sidecar.aws.signing-proxy/status"
38+
signingProxyWebhookAnnotationSchemeKey = "sidecar.aws.signing-proxy/upstream-url-scheme"
39+
signingProxyWebhookAnnotationHostKey = "sidecar.aws.signing-proxy/host"
40+
signingProxyWebhookAnnotationInjectKey = "sidecar.aws.signing-proxy/inject"
41+
signingProxyWebhookAnnotationNameKey = "sidecar.aws.signing-proxy/name"
42+
signingProxyWebhookAnnotationRegionKey = "sidecar.aws.signing-proxy/region"
43+
signingProxyWebhookAnnotationRoleArnKey = "sidecar.aws.signing-proxy/role-arn"
44+
signingProxyWebhookAnnotationStatusKey = "sidecar.aws.signing-proxy/status"
4345
signingProxyWebhookAnnotationUnsignedPayloadKey = "sidecar.aws.signing-proxy/unsigned-payload"
44-
signingProxyWebhookLabelHostKey = "sidecar-host"
45-
signingProxyWebhookLabelNameKey = "sidecar-name"
46-
signingProxyWebhookLabelRegionKey = "sidecar-region"
47-
signingProxyWebhookLabelRoleArnKey = "sidecar-role-arn"
48-
signingProxyWebhookLabelUnsignedPayloadKey = "sidecar-unsigned-payload"
46+
signingProxyWebhookLabelSchemeKey = "sidecar-upstream-url-scheme"
47+
signingProxyWebhookLabelHostKey = "sidecar-host"
48+
signingProxyWebhookLabelNameKey = "sidecar-name"
49+
signingProxyWebhookLabelRegionKey = "sidecar-region"
50+
signingProxyWebhookLabelRoleArnKey = "sidecar-role-arn"
51+
signingProxyWebhookLabelUnsignedPayloadKey = "sidecar-unsigned-payload"
4952
)
5053

5154
var (
@@ -157,13 +160,13 @@ func (whsvr *WebhookServer) mutate(ctx context.Context, admissionReview *v1beta1
157160

158161
var patchOperations []PatchOperation
159162

160-
host, name, region, unsignedPayload := whsvr.getUpstreamEndpointParameters(nsLabels, &pod.ObjectMeta)
163+
host, name, region, unsignedPayload, scheme := whsvr.getUpstreamEndpointParameters(nsLabels, &pod.ObjectMeta)
161164

162-
sidecarArgs := []string{"--name", name, "--region", region, "--host", host, "--port", ":8005"}
165+
sidecarArgs := []string{"--name", name, "--region", region, "--host", host, "--port", ":8005", "--upstream-url-scheme", scheme}
163166
s, _ := strconv.ParseBool(unsignedPayload)
164-
165-
if (s) {
166-
sidecarArgs = []string{"--name", name, "--region", region, "--host", host, "--port", ":8005", "--unsigned-payload"}
167+
168+
if s {
169+
sidecarArgs = []string{"--name", name, "--region", region, "--host", host, "--port", ":8005", "--unsigned-payload", "--upstream-url-scheme", scheme}
167170
}
168171

169172
roleArn := whsvr.getRoleArn(nsLabels, &pod.ObjectMeta)
@@ -268,7 +271,7 @@ func (whsvr *WebhookServer) shouldMutate(nsLabels map[string]string, podMetadata
268271
return annotationInject
269272
}
270273

271-
func (whsvr *WebhookServer) getUpstreamEndpointParameters(nsLabels map[string]string, podMetadata *metav1.ObjectMeta) (string, string, string, string) {
274+
func (whsvr *WebhookServer) getUpstreamEndpointParameters(nsLabels map[string]string, podMetadata *metav1.ObjectMeta) (string, string, string, string, string) {
272275
annotations := podMetadata.GetAnnotations()
273276

274277
if annotations == nil {
@@ -285,13 +288,14 @@ func (whsvr *WebhookServer) getUpstreamEndpointParameters(nsLabels map[string]st
285288
}
286289

287290
if labelInject {
288-
return extractParameters(host, nsLabels[signingProxyWebhookLabelNameKey], nsLabels[signingProxyWebhookLabelRegionKey], nsLabels[signingProxyWebhookLabelUnsignedPayloadKey])
291+
return extractParameters(host, nsLabels[signingProxyWebhookLabelNameKey], nsLabels[signingProxyWebhookLabelRegionKey], nsLabels[signingProxyWebhookLabelUnsignedPayloadKey], nsLabels[signingProxyWebhookLabelSchemeKey])
289292
}
290293

291-
return extractParameters(host, annotations[signingProxyWebhookAnnotationNameKey], annotations[signingProxyWebhookAnnotationRegionKey], annotations[signingProxyWebhookAnnotationUnsignedPayloadKey])
294+
return extractParameters(host, annotations[signingProxyWebhookAnnotationNameKey], annotations[signingProxyWebhookAnnotationRegionKey], annotations[signingProxyWebhookAnnotationUnsignedPayloadKey], annotations[signingProxyWebhookAnnotationSchemeKey])
292295
}
293296

294-
func extractParameters(host string, name string, region string, unsignedPayload string) (string, string, string, string) {
297+
func extractParameters(host string, name string, region string, unsignedPayload string, upstreamUrlScheme string) (string, string, string, string, string) {
298+
295299
if strings.TrimSpace(name) == "" {
296300
name = host[:strings.IndexByte(host, '.')]
297301
}
@@ -302,7 +306,13 @@ func extractParameters(host string, name string, region string, unsignedPayload
302306
region = hostModified[:strings.IndexByte(hostModified, '.')]
303307
}
304308

305-
return host, name, region, unsignedPayload
309+
upstreamUrlScheme = strings.ToLower(upstreamUrlScheme)
310+
311+
if upstreamUrlScheme == "" || (upstreamUrlScheme != "http" && upstreamUrlScheme != "https") {
312+
upstreamUrlScheme = "https"
313+
}
314+
315+
return host, name, region, unsignedPayload, upstreamUrlScheme
306316
}
307317

308318
func (whsvr *WebhookServer) getRoleArn(nsLabels map[string]string, podMetadata *metav1.ObjectMeta) string {

0 commit comments

Comments
 (0)