mirror of
https://github.com/kairos-io/entangle.git
synced 2025-11-27 10:41:53 +00:00
Compare commits
2 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
2250450b88 | ||
|
|
b4a78705dd |
@@ -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())
|
||||
|
||||
Reference in New Issue
Block a user