Merge current v2.4 into v2.5
This commit is contained in:
commit
a5b169c563
3 changed files with 23 additions and 41 deletions
|
@ -46,7 +46,7 @@ type Client interface {
|
||||||
GetSecret(namespace, name string) (*corev1.Secret, bool, error)
|
GetSecret(namespace, name string) (*corev1.Secret, bool, error)
|
||||||
GetEndpoints(namespace, name string) (*corev1.Endpoints, bool, error)
|
GetEndpoints(namespace, name string) (*corev1.Endpoints, bool, error)
|
||||||
UpdateIngressStatus(ing *networkingv1.Ingress, ingStatus []corev1.LoadBalancerIngress) error
|
UpdateIngressStatus(ing *networkingv1.Ingress, ingStatus []corev1.LoadBalancerIngress) error
|
||||||
GetServerVersion() (*version.Version, error)
|
GetServerVersion() *version.Version
|
||||||
}
|
}
|
||||||
|
|
||||||
type clientWrapper struct {
|
type clientWrapper struct {
|
||||||
|
@ -58,6 +58,7 @@ type clientWrapper struct {
|
||||||
ingressLabelSelector string
|
ingressLabelSelector string
|
||||||
isNamespaceAll bool
|
isNamespaceAll bool
|
||||||
watchedNamespaces []string
|
watchedNamespaces []string
|
||||||
|
serverVersion *version.Version
|
||||||
}
|
}
|
||||||
|
|
||||||
// newInClusterClient returns a new Provider client that is expected to run
|
// newInClusterClient returns a new Provider client that is expected to run
|
||||||
|
@ -135,6 +136,19 @@ func newClientImpl(clientset kubernetes.Interface) *clientWrapper {
|
||||||
|
|
||||||
// WatchAll starts namespace-specific controllers for all relevant kinds.
|
// WatchAll starts namespace-specific controllers for all relevant kinds.
|
||||||
func (c *clientWrapper) WatchAll(namespaces []string, stopCh <-chan struct{}) (<-chan interface{}, error) {
|
func (c *clientWrapper) WatchAll(namespaces []string, stopCh <-chan struct{}) (<-chan interface{}, error) {
|
||||||
|
// Get and store the serverVersion for future use.
|
||||||
|
serverVersionInfo, err := c.clientset.Discovery().ServerVersion()
|
||||||
|
if err != nil {
|
||||||
|
return nil, fmt.Errorf("could not retrieve server version: %w", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
serverVersion, err := version.NewVersion(serverVersionInfo.GitVersion)
|
||||||
|
if err != nil {
|
||||||
|
return nil, fmt.Errorf("could not parse server version: %w", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
c.serverVersion = serverVersion
|
||||||
|
|
||||||
eventCh := make(chan interface{}, 1)
|
eventCh := make(chan interface{}, 1)
|
||||||
eventHandler := &k8s.ResourceEventHandler{Ev: eventCh}
|
eventHandler := &k8s.ResourceEventHandler{Ev: eventCh}
|
||||||
|
|
||||||
|
@ -153,11 +167,6 @@ func (c *clientWrapper) WatchAll(namespaces []string, stopCh <-chan struct{}) (<
|
||||||
opts.LabelSelector = c.ingressLabelSelector
|
opts.LabelSelector = c.ingressLabelSelector
|
||||||
}
|
}
|
||||||
|
|
||||||
serverVersion, err := c.GetServerVersion()
|
|
||||||
if err != nil {
|
|
||||||
return nil, fmt.Errorf("failed to get server version: %w", err)
|
|
||||||
}
|
|
||||||
|
|
||||||
for _, ns := range namespaces {
|
for _, ns := range namespaces {
|
||||||
factoryIngress := informers.NewSharedInformerFactoryWithOptions(c.clientset, resyncPeriod, informers.WithNamespace(ns), informers.WithTweakListOptions(matchesLabelSelector))
|
factoryIngress := informers.NewSharedInformerFactoryWithOptions(c.clientset, resyncPeriod, informers.WithNamespace(ns), informers.WithTweakListOptions(matchesLabelSelector))
|
||||||
|
|
||||||
|
@ -230,13 +239,7 @@ func (c *clientWrapper) WatchAll(namespaces []string, stopCh <-chan struct{}) (<
|
||||||
func (c *clientWrapper) GetIngresses() []*networkingv1.Ingress {
|
func (c *clientWrapper) GetIngresses() []*networkingv1.Ingress {
|
||||||
var results []*networkingv1.Ingress
|
var results []*networkingv1.Ingress
|
||||||
|
|
||||||
serverVersion, err := c.GetServerVersion()
|
isNetworkingV1Supported := supportsNetworkingV1Ingress(c.serverVersion)
|
||||||
if err != nil {
|
|
||||||
log.Errorf("Failed to get server version: %v", err)
|
|
||||||
return results
|
|
||||||
}
|
|
||||||
|
|
||||||
isNetworkingV1Supported := supportsNetworkingV1Ingress(serverVersion)
|
|
||||||
|
|
||||||
for ns, factory := range c.factoriesIngress {
|
for ns, factory := range c.factoriesIngress {
|
||||||
if isNetworkingV1Supported {
|
if isNetworkingV1Supported {
|
||||||
|
@ -354,13 +357,7 @@ func (c *clientWrapper) UpdateIngressStatus(src *networkingv1.Ingress, ingStatus
|
||||||
return fmt.Errorf("failed to get ingress %s/%s: namespace is not within watched namespaces", src.Namespace, src.Name)
|
return fmt.Errorf("failed to get ingress %s/%s: namespace is not within watched namespaces", src.Namespace, src.Name)
|
||||||
}
|
}
|
||||||
|
|
||||||
serverVersion, err := c.GetServerVersion()
|
if !supportsNetworkingV1Ingress(c.serverVersion) {
|
||||||
if err != nil {
|
|
||||||
log.WithoutContext().Errorf("Failed to get server version: %v", err)
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
|
|
||||||
if !supportsNetworkingV1Ingress(serverVersion) {
|
|
||||||
return c.updateIngressStatusOld(src, ingStatus)
|
return c.updateIngressStatusOld(src, ingStatus)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -472,18 +469,12 @@ func (c *clientWrapper) GetSecret(namespace, name string) (*corev1.Secret, bool,
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *clientWrapper) GetIngressClasses() ([]*networkingv1.IngressClass, error) {
|
func (c *clientWrapper) GetIngressClasses() ([]*networkingv1.IngressClass, error) {
|
||||||
serverVersion, err := c.GetServerVersion()
|
|
||||||
if err != nil {
|
|
||||||
log.WithoutContext().Errorf("Failed to get server version: %v", err)
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
|
|
||||||
if c.clusterFactory == nil {
|
if c.clusterFactory == nil {
|
||||||
return nil, errors.New("cluster factory not loaded")
|
return nil, errors.New("cluster factory not loaded")
|
||||||
}
|
}
|
||||||
|
|
||||||
var ics []*networkingv1.IngressClass
|
var ics []*networkingv1.IngressClass
|
||||||
if !supportsNetworkingV1Ingress(serverVersion) {
|
if !supportsNetworkingV1Ingress(c.serverVersion) {
|
||||||
ingressClasses, err := c.clusterFactory.Networking().V1beta1().IngressClasses().Lister().List(labels.Everything())
|
ingressClasses, err := c.clusterFactory.Networking().V1beta1().IngressClasses().Lister().List(labels.Everything())
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
|
@ -531,13 +522,8 @@ func (c *clientWrapper) lookupNamespace(ns string) string {
|
||||||
}
|
}
|
||||||
|
|
||||||
// GetServerVersion returns the cluster server version, or an error.
|
// GetServerVersion returns the cluster server version, or an error.
|
||||||
func (c *clientWrapper) GetServerVersion() (*version.Version, error) {
|
func (c *clientWrapper) GetServerVersion() *version.Version {
|
||||||
serverVersion, err := c.clientset.Discovery().ServerVersion()
|
return c.serverVersion
|
||||||
if err != nil {
|
|
||||||
return nil, fmt.Errorf("could not retrieve server version: %w", err)
|
|
||||||
}
|
|
||||||
|
|
||||||
return version.NewVersion(serverVersion.GitVersion)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// translateNotFoundError will translate a "not found" error to a boolean return
|
// translateNotFoundError will translate a "not found" error to a boolean return
|
||||||
|
|
|
@ -80,8 +80,8 @@ func (c clientMock) GetIngresses() []*networkingv1.Ingress {
|
||||||
return c.ingresses
|
return c.ingresses
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c clientMock) GetServerVersion() (*version.Version, error) {
|
func (c clientMock) GetServerVersion() *version.Version {
|
||||||
return c.serverVersion, nil
|
return c.serverVersion
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c clientMock) GetService(namespace, name string) (*corev1.Service, bool, error) {
|
func (c clientMock) GetService(namespace, name string) (*corev1.Service, bool, error) {
|
||||||
|
|
|
@ -189,11 +189,7 @@ func (p *Provider) loadConfigurationFromIngresses(ctx context.Context, client Cl
|
||||||
TCP: &dynamic.TCPConfiguration{},
|
TCP: &dynamic.TCPConfiguration{},
|
||||||
}
|
}
|
||||||
|
|
||||||
serverVersion, err := client.GetServerVersion()
|
serverVersion := client.GetServerVersion()
|
||||||
if err != nil {
|
|
||||||
log.FromContext(ctx).Errorf("Failed to get server version: %v", err)
|
|
||||||
return conf
|
|
||||||
}
|
|
||||||
|
|
||||||
var ingressClasses []*networkingv1.IngressClass
|
var ingressClasses []*networkingv1.IngressClass
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue