Gloo: Add support for listener.metadataStatic

This commit is contained in:
Megum1n 2023-03-14 17:16:25 +01:00
parent dd61d0f5d8
commit 041ca372c8
2 changed files with 51 additions and 2 deletions

View File

@ -64,20 +64,35 @@ type proxySpecHTTPListener struct {
} }
type proxyVirtualHost struct { type proxyVirtualHost struct {
Domains []string `json:"domains,omitempty"` Domains []string `json:"domains,omitempty"`
Metadata proxyVirtualHostMetadata `json:"metadata,omitempty"` Metadata proxyVirtualHostMetadata `json:"metadata,omitempty"`
MetadataStatic proxyVirtualHostMetadataStatic `json:"metadataStatic,omitempty"`
} }
type proxyVirtualHostMetadata struct { type proxyVirtualHostMetadata struct {
Source []proxyVirtualHostMetadataSource `json:"sources,omitempty"` Source []proxyVirtualHostMetadataSource `json:"sources,omitempty"`
} }
type proxyVirtualHostMetadataStatic struct {
Source []proxyVirtualHostMetadataStaticSource `json:"sources,omitempty"`
}
type proxyVirtualHostMetadataSource struct { type proxyVirtualHostMetadataSource struct {
Kind string `json:"kind,omitempty"` Kind string `json:"kind,omitempty"`
Name string `json:"name,omitempty"` Name string `json:"name,omitempty"`
Namespace string `json:"namespace,omitempty"` Namespace string `json:"namespace,omitempty"`
} }
type proxyVirtualHostMetadataStaticSource struct {
ResourceKind string `json:"resourceKind,omitempty"`
ResourceRef proxyVirtualHostMetadataSourceResourceRef `json:"resourceRef,omitempty"`
}
type proxyVirtualHostMetadataSourceResourceRef struct {
Name string `json:"name,omitempty"`
Namespace string `json:"namespace,omitempty"`
}
type glooSource struct { type glooSource struct {
dynamicKubeClient dynamic.Interface dynamicKubeClient dynamic.Interface
kubeClient kubernetes.Interface kubeClient kubernetes.Interface
@ -165,6 +180,18 @@ func (gs *glooSource) annotationsFromProxySource(ctx context.Context, virtualHos
} }
} }
} }
for _, src := range virtualHost.MetadataStatic.Source {
kind := sourceKind(src.ResourceKind)
if kind != nil {
source, err := gs.dynamicKubeClient.Resource(*kind).Namespace(src.ResourceRef.Namespace).Get(ctx, src.ResourceRef.Name, metav1.GetOptions{})
if err != nil {
return nil, err
}
for key, value := range source.GetAnnotations() {
annotations[key] = value
}
}
}
return annotations, nil return annotations, nil
} }

View File

@ -63,6 +63,17 @@ var internalProxy = proxy{
}, },
}, },
}, },
MetadataStatic: proxyVirtualHostMetadataStatic{
Source: []proxyVirtualHostMetadataStaticSource{
{
ResourceKind: "*v1.Unknown",
ResourceRef: proxyVirtualHostMetadataSourceResourceRef{
Name: "my-unknown-svc",
Namespace: "unknown",
},
},
},
},
}, },
{ {
Domains: []string{"c.test"}, Domains: []string{"c.test"},
@ -75,6 +86,17 @@ var internalProxy = proxy{
}, },
}, },
}, },
MetadataStatic: proxyVirtualHostMetadataStatic{
Source: []proxyVirtualHostMetadataStaticSource{
{
ResourceKind: "*v1.VirtualService",
ResourceRef: proxyVirtualHostMetadataSourceResourceRef{
Name: "my-internal-svc",
Namespace: "internal",
},
},
},
},
}, },
}, },
}, },