2 Commits

Author SHA1 Message Date
Dimitris Karakasilis
2250450b88 Don't mutate original Pod's labels
because we don't want to, plus annotations may not fit in labels
because they have different character limit.

Fix for error about 63 character limit

Signed-off-by: Dimitris Karakasilis <jimmykarily@gmail.com>
2022-12-06 12:41:42 +00:00
Ettore Di Giacinto
b4a78705dd Inject nethost by default in entangled pods 2022-12-05 16:09:07 +01:00

View File

@@ -35,6 +35,7 @@ var (
EntanglementNameLabel = "entanglement.kairos.io/name"
EntanglementServiceLabel = "entanglement.kairos.io/service"
EntanglementDirectionLabel = "entanglement.kairos.io/direction"
EntanglementNetHost = "entanglement.kairos.io/nethost"
EntanglementPortLabel = "entanglement.kairos.io/target_port"
EntanglementHostLabel = "entanglement.kairos.io/host"
EnvPrefix = "entanglement.kairos.io/env."
@@ -54,17 +55,21 @@ func (w *Webhook) SetupWebhookWithManager(mgr manager.Manager) error {
}
func (w *Webhook) Mutate(ctx context.Context, request admission.Request, object runtime.Object) admission.Response {
_ = log.FromContext(ctx)
pod := object.(*corev1.Pod)
// Let user use both label and annotations
info := pod.Labels
info := make(map[string]string)
// Annotations take precedence
for ann, v := range pod.Annotations {
info[ann] = v
for k, v := range pod.Labels {
info[k] = v
}
// Annotations take precedence
for k, v := range pod.Annotations {
info[k] = v
}
entanglementName, exists := info[EntanglementNameLabel]
@@ -115,6 +120,15 @@ func (w *Webhook) Mutate(ctx context.Context, request admission.Request, object
}
podCopy := pod.DeepCopy()
hostNetwork, exists := info[EntanglementNetHost]
// By default it injects hostnetwork, however if set to false it does enforces it to false
if exists && hostNetwork == "false" {
podCopy.Spec.HostNetwork = false
} else {
podCopy.Spec.HostNetwork = true
}
secret, err := w.clientSet.CoreV1().Secrets(request.Namespace).Get(context.Background(), entanglementName, v1.GetOptions{})
if err != nil || secret == nil {
return admission.Denied("entanglement secret not found: " + entanglementName + err.Error())