Update client-go methods to support context and and new create and delete options
This commit is contained in:
parent
f4b17d345f
commit
a46126a034
32 changed files with 167 additions and 132 deletions
|
@ -17,6 +17,7 @@ limitations under the License.
|
||||||
package main
|
package main
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"context"
|
||||||
"fmt"
|
"fmt"
|
||||||
"math/rand"
|
"math/rand"
|
||||||
"net/http"
|
"net/http"
|
||||||
|
@ -81,7 +82,7 @@ func main() {
|
||||||
klog.Fatal(err)
|
klog.Fatal(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
_, err = kubeClient.CoreV1().Services(defSvcNs).Get(defSvcName, metav1.GetOptions{})
|
_, err = kubeClient.CoreV1().Services(defSvcNs).Get(context.TODO(), defSvcName, metav1.GetOptions{})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
if errors.IsUnauthorized(err) || errors.IsForbidden(err) {
|
if errors.IsUnauthorized(err) || errors.IsForbidden(err) {
|
||||||
klog.Fatal("✖ The cluster seems to be running with a restrictive Authorization mode and the Ingress controller does not have the required permissions to operate normally.")
|
klog.Fatal("✖ The cluster seems to be running with a restrictive Authorization mode and the Ingress controller does not have the required permissions to operate normally.")
|
||||||
|
@ -92,7 +93,7 @@ func main() {
|
||||||
}
|
}
|
||||||
|
|
||||||
if conf.Namespace != "" {
|
if conf.Namespace != "" {
|
||||||
_, err = kubeClient.CoreV1().Namespaces().Get(conf.Namespace, metav1.GetOptions{})
|
_, err = kubeClient.CoreV1().Namespaces().Get(context.TODO(), conf.Namespace, metav1.GetOptions{})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
klog.Fatalf("No namespace with name %v found: %v", conf.Namespace, err)
|
klog.Fatalf("No namespace with name %v found: %v", conf.Namespace, err)
|
||||||
}
|
}
|
||||||
|
|
|
@ -17,6 +17,7 @@ limitations under the License.
|
||||||
package main
|
package main
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"context"
|
||||||
"fmt"
|
"fmt"
|
||||||
"os"
|
"os"
|
||||||
"path/filepath"
|
"path/filepath"
|
||||||
|
@ -66,7 +67,7 @@ func TestHandleSigterm(t *testing.T) {
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
_, err := clientSet.CoreV1().Pods(namespace).Create(&pod)
|
_, err := clientSet.CoreV1().Pods(namespace).Create(context.TODO(), &pod, metav1.CreateOptions{})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatalf("error creating pod %v: %v", pod, err)
|
t.Fatalf("error creating pod %v: %v", pod, err)
|
||||||
}
|
}
|
||||||
|
@ -118,7 +119,7 @@ func createConfigMap(clientSet kubernetes.Interface, ns string, t *testing.T) st
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
cm, err := clientSet.CoreV1().ConfigMaps(ns).Create(configMap)
|
cm, err := clientSet.CoreV1().ConfigMaps(ns).Create(context.TODO(), configMap, metav1.CreateOptions{})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Errorf("error creating the configuration map: %v", err)
|
t.Errorf("error creating the configuration map: %v", err)
|
||||||
}
|
}
|
||||||
|
|
|
@ -17,6 +17,7 @@ limitations under the License.
|
||||||
package request
|
package request
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"context"
|
||||||
"fmt"
|
"fmt"
|
||||||
|
|
||||||
appsv1 "k8s.io/api/apps/v1"
|
appsv1 "k8s.io/api/apps/v1"
|
||||||
|
@ -100,7 +101,7 @@ func GetDeployments(flags *genericclioptions.ConfigFlags, namespace string) ([]a
|
||||||
return make([]appsv1.Deployment, 0), err
|
return make([]appsv1.Deployment, 0), err
|
||||||
}
|
}
|
||||||
|
|
||||||
deployments, err := api.Deployments(namespace).List(metav1.ListOptions{})
|
deployments, err := api.Deployments(namespace).List(context.TODO(), metav1.ListOptions{})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return make([]appsv1.Deployment, 0), err
|
return make([]appsv1.Deployment, 0), err
|
||||||
}
|
}
|
||||||
|
@ -120,7 +121,7 @@ func GetIngressDefinitions(flags *genericclioptions.ConfigFlags, namespace strin
|
||||||
return make([]networking.Ingress, 0), err
|
return make([]networking.Ingress, 0), err
|
||||||
}
|
}
|
||||||
|
|
||||||
pods, err := api.Ingresses(namespace).List(metav1.ListOptions{})
|
pods, err := api.Ingresses(namespace).List(context.TODO(), metav1.ListOptions{})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return make([]networking.Ingress, 0), err
|
return make([]networking.Ingress, 0), err
|
||||||
}
|
}
|
||||||
|
@ -189,7 +190,7 @@ func getEndpoints(flags *genericclioptions.ConfigFlags, namespace string) ([]api
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
endpointsList, err := api.Endpoints(namespace).List(metav1.ListOptions{})
|
endpointsList, err := api.Endpoints(namespace).List(context.TODO(), metav1.ListOptions{})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
@ -256,7 +257,7 @@ func getPods(flags *genericclioptions.ConfigFlags) ([]apiv1.Pod, error) {
|
||||||
return make([]apiv1.Pod, 0), err
|
return make([]apiv1.Pod, 0), err
|
||||||
}
|
}
|
||||||
|
|
||||||
pods, err := api.Pods(namespace).List(metav1.ListOptions{})
|
pods, err := api.Pods(namespace).List(context.TODO(), metav1.ListOptions{})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return make([]apiv1.Pod, 0), err
|
return make([]apiv1.Pod, 0), err
|
||||||
}
|
}
|
||||||
|
@ -277,7 +278,7 @@ func getLabeledPods(flags *genericclioptions.ConfigFlags, label string) ([]apiv1
|
||||||
return make([]apiv1.Pod, 0), err
|
return make([]apiv1.Pod, 0), err
|
||||||
}
|
}
|
||||||
|
|
||||||
pods, err := api.Pods(namespace).List(metav1.ListOptions{
|
pods, err := api.Pods(namespace).List(context.TODO(), metav1.ListOptions{
|
||||||
LabelSelector: label,
|
LabelSelector: label,
|
||||||
})
|
})
|
||||||
|
|
||||||
|
@ -317,7 +318,7 @@ func getServices(flags *genericclioptions.ConfigFlags) ([]apiv1.Service, error)
|
||||||
return make([]apiv1.Service, 0), err
|
return make([]apiv1.Service, 0), err
|
||||||
}
|
}
|
||||||
|
|
||||||
services, err := api.Services(namespace).List(metav1.ListOptions{})
|
services, err := api.Services(namespace).List(context.TODO(), metav1.ListOptions{})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return make([]apiv1.Service, 0), err
|
return make([]apiv1.Service, 0), err
|
||||||
}
|
}
|
||||||
|
|
|
@ -17,6 +17,7 @@ limitations under the License.
|
||||||
package controller
|
package controller
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"context"
|
||||||
"crypto/x509"
|
"crypto/x509"
|
||||||
"crypto/x509/pkix"
|
"crypto/x509/pkix"
|
||||||
"encoding/asn1"
|
"encoding/asn1"
|
||||||
|
@ -1606,7 +1607,7 @@ func newNGINXController(t *testing.T) *NGINXController {
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
_, err := clientSet.CoreV1().ConfigMaps(ns).Create(configMap)
|
_, err := clientSet.CoreV1().ConfigMaps(ns).Create(context.TODO(), configMap, metav1.CreateOptions{})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatalf("error creating the configuration map: %v", err)
|
t.Fatalf("error creating the configuration map: %v", err)
|
||||||
}
|
}
|
||||||
|
@ -1662,7 +1663,7 @@ func newDynamicNginxController(t *testing.T, setConfigMap func(string) *v1.Confi
|
||||||
clientSet := fake.NewSimpleClientset()
|
clientSet := fake.NewSimpleClientset()
|
||||||
configMap := setConfigMap(ns)
|
configMap := setConfigMap(ns)
|
||||||
|
|
||||||
_, err := clientSet.CoreV1().ConfigMaps(ns).Create(configMap)
|
_, err := clientSet.CoreV1().ConfigMaps(ns).Create(context.TODO(), configMap, metav1.CreateOptions{})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatalf("error creating the configuration map: %v", err)
|
t.Fatalf("error creating the configuration map: %v", err)
|
||||||
}
|
}
|
||||||
|
|
|
@ -17,6 +17,7 @@ limitations under the License.
|
||||||
package store
|
package store
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"context"
|
||||||
"encoding/base64"
|
"encoding/base64"
|
||||||
"fmt"
|
"fmt"
|
||||||
"io/ioutil"
|
"io/ioutil"
|
||||||
|
@ -290,11 +291,11 @@ func New(
|
||||||
&cache.ListWatch{
|
&cache.ListWatch{
|
||||||
ListFunc: func(options metav1.ListOptions) (k8sruntime.Object, error) {
|
ListFunc: func(options metav1.ListOptions) (k8sruntime.Object, error) {
|
||||||
options.LabelSelector = labelSelector.String()
|
options.LabelSelector = labelSelector.String()
|
||||||
return client.CoreV1().Pods(store.pod.Namespace).List(options)
|
return client.CoreV1().Pods(store.pod.Namespace).List(context.TODO(), options)
|
||||||
},
|
},
|
||||||
WatchFunc: func(options metav1.ListOptions) (watch.Interface, error) {
|
WatchFunc: func(options metav1.ListOptions) (watch.Interface, error) {
|
||||||
options.LabelSelector = labelSelector.String()
|
options.LabelSelector = labelSelector.String()
|
||||||
return client.CoreV1().Pods(store.pod.Namespace).Watch(options)
|
return client.CoreV1().Pods(store.pod.Namespace).Watch(context.TODO(), options)
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
&corev1.Pod{},
|
&corev1.Pod{},
|
||||||
|
@ -623,7 +624,7 @@ func New(
|
||||||
|
|
||||||
// do not wait for informers to read the configmap configuration
|
// do not wait for informers to read the configmap configuration
|
||||||
ns, name, _ := k8s.ParseNameNS(configmap)
|
ns, name, _ := k8s.ParseNameNS(configmap)
|
||||||
cm, err := client.CoreV1().ConfigMaps(ns).Get(name, metav1.GetOptions{})
|
cm, err := client.CoreV1().ConfigMaps(ns).Get(context.TODO(), name, metav1.GetOptions{})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
klog.Warningf("Unexpected error reading configuration configmap: %v", err)
|
klog.Warningf("Unexpected error reading configuration configmap: %v", err)
|
||||||
}
|
}
|
||||||
|
|
|
@ -18,6 +18,7 @@ package store
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"bytes"
|
"bytes"
|
||||||
|
"context"
|
||||||
"encoding/base64"
|
"encoding/base64"
|
||||||
"fmt"
|
"fmt"
|
||||||
"io/ioutil"
|
"io/ioutil"
|
||||||
|
@ -252,7 +253,7 @@ func TestStore(t *testing.T) {
|
||||||
// Secret takes a bit to update
|
// Secret takes a bit to update
|
||||||
time.Sleep(3 * time.Second)
|
time.Sleep(3 * time.Second)
|
||||||
|
|
||||||
err = clientSet.NetworkingV1beta1().Ingresses(ni.Namespace).Delete(ni.Name, &metav1.DeleteOptions{})
|
err = clientSet.NetworkingV1beta1().Ingresses(ni.Namespace).Delete(context.TODO(), ni.Name, metav1.DeleteOptions{})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Errorf("error creating ingress: %v", err)
|
t.Errorf("error creating ingress: %v", err)
|
||||||
}
|
}
|
||||||
|
@ -451,7 +452,7 @@ func TestStore(t *testing.T) {
|
||||||
t.Errorf("expected 0 events of type Delete but %v occurred", del)
|
t.Errorf("expected 0 events of type Delete but %v occurred", del)
|
||||||
}
|
}
|
||||||
|
|
||||||
err = clientSet.CoreV1().Secrets(ns).Delete(secretName, &metav1.DeleteOptions{})
|
err = clientSet.CoreV1().Secrets(ns).Delete(context.TODO(), secretName, metav1.DeleteOptions{})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Errorf("error deleting secret: %v", err)
|
t.Errorf("error deleting secret: %v", err)
|
||||||
}
|
}
|
||||||
|
@ -565,7 +566,7 @@ func TestStore(t *testing.T) {
|
||||||
t.Errorf("expected 1 events of type Update but %v occurred", upd)
|
t.Errorf("expected 1 events of type Update but %v occurred", upd)
|
||||||
}
|
}
|
||||||
|
|
||||||
err = clientSet.CoreV1().Secrets(ns).Delete(secretName, &metav1.DeleteOptions{})
|
err = clientSet.CoreV1().Secrets(ns).Delete(context.TODO(), secretName, metav1.DeleteOptions{})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Errorf("error deleting secret: %v", err)
|
t.Errorf("error deleting secret: %v", err)
|
||||||
}
|
}
|
||||||
|
@ -707,7 +708,7 @@ func createNamespace(clientSet kubernetes.Interface, t *testing.T) string {
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
ns, err := clientSet.CoreV1().Namespaces().Create(namespace)
|
ns, err := clientSet.CoreV1().Namespaces().Create(context.TODO(), namespace, metav1.CreateOptions{})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Errorf("error creating the namespace: %v", err)
|
t.Errorf("error creating the namespace: %v", err)
|
||||||
}
|
}
|
||||||
|
@ -718,7 +719,7 @@ func createNamespace(clientSet kubernetes.Interface, t *testing.T) string {
|
||||||
func deleteNamespace(ns string, clientSet kubernetes.Interface, t *testing.T) {
|
func deleteNamespace(ns string, clientSet kubernetes.Interface, t *testing.T) {
|
||||||
t.Helper()
|
t.Helper()
|
||||||
|
|
||||||
err := clientSet.CoreV1().Namespaces().Delete(ns, &metav1.DeleteOptions{})
|
err := clientSet.CoreV1().Namespaces().Delete(context.TODO(), ns, metav1.DeleteOptions{})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Errorf("error deleting the namespace: %v", err)
|
t.Errorf("error deleting the namespace: %v", err)
|
||||||
}
|
}
|
||||||
|
@ -733,7 +734,7 @@ func createConfigMap(clientSet kubernetes.Interface, ns string, t *testing.T) st
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
cm, err := clientSet.CoreV1().ConfigMaps(ns).Create(configMap)
|
cm, err := clientSet.CoreV1().ConfigMaps(ns).Create(context.TODO(), configMap, metav1.CreateOptions{})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Errorf("error creating the configuration map: %v", err)
|
t.Errorf("error creating the configuration map: %v", err)
|
||||||
}
|
}
|
||||||
|
@ -743,13 +744,13 @@ func createConfigMap(clientSet kubernetes.Interface, ns string, t *testing.T) st
|
||||||
|
|
||||||
func ensureIngress(ingress *networking.Ingress, clientSet kubernetes.Interface, t *testing.T) *networking.Ingress {
|
func ensureIngress(ingress *networking.Ingress, clientSet kubernetes.Interface, t *testing.T) *networking.Ingress {
|
||||||
t.Helper()
|
t.Helper()
|
||||||
ing, err := clientSet.NetworkingV1beta1().Ingresses(ingress.Namespace).Update(ingress)
|
ing, err := clientSet.NetworkingV1beta1().Ingresses(ingress.Namespace).Update(context.TODO(), ingress, metav1.UpdateOptions{})
|
||||||
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
if k8sErrors.IsNotFound(err) {
|
if k8sErrors.IsNotFound(err) {
|
||||||
t.Logf("Ingress %v not found, creating", ingress)
|
t.Logf("Ingress %v not found, creating", ingress)
|
||||||
|
|
||||||
ing, err = clientSet.NetworkingV1beta1().Ingresses(ingress.Namespace).Create(ingress)
|
ing, err = clientSet.NetworkingV1beta1().Ingresses(ingress.Namespace).Create(context.TODO(), ingress, metav1.CreateOptions{})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatalf("error creating ingress %+v: %v", ingress, err)
|
t.Fatalf("error creating ingress %+v: %v", ingress, err)
|
||||||
}
|
}
|
||||||
|
@ -766,7 +767,7 @@ func ensureIngress(ingress *networking.Ingress, clientSet kubernetes.Interface,
|
||||||
|
|
||||||
func deleteIngress(ingress *networking.Ingress, clientSet kubernetes.Interface, t *testing.T) {
|
func deleteIngress(ingress *networking.Ingress, clientSet kubernetes.Interface, t *testing.T) {
|
||||||
t.Helper()
|
t.Helper()
|
||||||
err := clientSet.NetworkingV1beta1().Ingresses(ingress.Namespace).Delete(ingress.Name, &metav1.DeleteOptions{})
|
err := clientSet.NetworkingV1beta1().Ingresses(ingress.Namespace).Delete(context.TODO(), ingress.Name, metav1.DeleteOptions{})
|
||||||
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Errorf("failed to delete ingress %+v: %v", ingress, err)
|
t.Errorf("failed to delete ingress %+v: %v", ingress, err)
|
||||||
|
|
|
@ -17,6 +17,7 @@ limitations under the License.
|
||||||
package status
|
package status
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"context"
|
||||||
"fmt"
|
"fmt"
|
||||||
"net"
|
"net"
|
||||||
"sort"
|
"sort"
|
||||||
|
@ -180,7 +181,7 @@ func (s *statusSync) runningAddresses() ([]string, error) {
|
||||||
}
|
}
|
||||||
|
|
||||||
// get information about all the pods running the ingress controller
|
// get information about all the pods running the ingress controller
|
||||||
pods, err := s.Client.CoreV1().Pods(s.pod.Namespace).List(metav1.ListOptions{
|
pods, err := s.Client.CoreV1().Pods(s.pod.Namespace).List(context.TODO(), metav1.ListOptions{
|
||||||
LabelSelector: labels.SelectorFromSet(s.pod.Labels).String(),
|
LabelSelector: labels.SelectorFromSet(s.pod.Labels).String(),
|
||||||
})
|
})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -204,7 +205,7 @@ func (s *statusSync) runningAddresses() ([]string, error) {
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *statusSync) isRunningMultiplePods() bool {
|
func (s *statusSync) isRunningMultiplePods() bool {
|
||||||
pods, err := s.Client.CoreV1().Pods(s.pod.Namespace).List(metav1.ListOptions{
|
pods, err := s.Client.CoreV1().Pods(s.pod.Namespace).List(context.TODO(), metav1.ListOptions{
|
||||||
LabelSelector: labels.SelectorFromSet(s.pod.Labels).String(),
|
LabelSelector: labels.SelectorFromSet(s.pod.Labels).String(),
|
||||||
})
|
})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -266,27 +267,27 @@ func runUpdate(ing *ingress.Ingress, status []apiv1.LoadBalancerIngress,
|
||||||
|
|
||||||
if k8s.IsNetworkingIngressAvailable {
|
if k8s.IsNetworkingIngressAvailable {
|
||||||
ingClient := client.NetworkingV1beta1().Ingresses(ing.Namespace)
|
ingClient := client.NetworkingV1beta1().Ingresses(ing.Namespace)
|
||||||
currIng, err := ingClient.Get(ing.Name, metav1.GetOptions{})
|
currIng, err := ingClient.Get(context.TODO(), ing.Name, metav1.GetOptions{})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, errors.Wrap(err, fmt.Sprintf("unexpected error searching Ingress %v/%v", ing.Namespace, ing.Name))
|
return nil, errors.Wrap(err, fmt.Sprintf("unexpected error searching Ingress %v/%v", ing.Namespace, ing.Name))
|
||||||
}
|
}
|
||||||
|
|
||||||
klog.Infof("updating Ingress %v/%v status from %v to %v", currIng.Namespace, currIng.Name, currIng.Status.LoadBalancer.Ingress, status)
|
klog.Infof("updating Ingress %v/%v status from %v to %v", currIng.Namespace, currIng.Name, currIng.Status.LoadBalancer.Ingress, status)
|
||||||
currIng.Status.LoadBalancer.Ingress = status
|
currIng.Status.LoadBalancer.Ingress = status
|
||||||
_, err = ingClient.UpdateStatus(currIng)
|
_, err = ingClient.UpdateStatus(context.TODO(), currIng, metav1.UpdateOptions{})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
klog.Warningf("error updating ingress rule: %v", err)
|
klog.Warningf("error updating ingress rule: %v", err)
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
ingClient := client.ExtensionsV1beta1().Ingresses(ing.Namespace)
|
ingClient := client.ExtensionsV1beta1().Ingresses(ing.Namespace)
|
||||||
currIng, err := ingClient.Get(ing.Name, metav1.GetOptions{})
|
currIng, err := ingClient.Get(context.TODO(), ing.Name, metav1.GetOptions{})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, errors.Wrap(err, fmt.Sprintf("unexpected error searching Ingress %v/%v", ing.Namespace, ing.Name))
|
return nil, errors.Wrap(err, fmt.Sprintf("unexpected error searching Ingress %v/%v", ing.Namespace, ing.Name))
|
||||||
}
|
}
|
||||||
|
|
||||||
klog.Infof("updating Ingress %v/%v status from %v to %v", currIng.Namespace, currIng.Name, currIng.Status.LoadBalancer.Ingress, status)
|
klog.Infof("updating Ingress %v/%v status from %v to %v", currIng.Namespace, currIng.Name, currIng.Status.LoadBalancer.Ingress, status)
|
||||||
currIng.Status.LoadBalancer.Ingress = status
|
currIng.Status.LoadBalancer.Ingress = status
|
||||||
_, err = ingClient.UpdateStatus(currIng)
|
_, err = ingClient.UpdateStatus(context.TODO(), currIng, metav1.UpdateOptions{})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
klog.Warningf("error updating ingress rule: %v", err)
|
klog.Warningf("error updating ingress rule: %v", err)
|
||||||
}
|
}
|
||||||
|
@ -327,7 +328,7 @@ func ingressSliceEqual(lhs, rhs []apiv1.LoadBalancerIngress) bool {
|
||||||
|
|
||||||
func statusAddressFromService(service string, kubeClient clientset.Interface) ([]string, error) {
|
func statusAddressFromService(service string, kubeClient clientset.Interface) ([]string, error) {
|
||||||
ns, name, _ := k8s.ParseNameNS(service)
|
ns, name, _ := k8s.ParseNameNS(service)
|
||||||
svc, err := kubeClient.CoreV1().Services(ns).Get(name, metav1.GetOptions{})
|
svc, err := kubeClient.CoreV1().Services(ns).Get(context.TODO(), name, metav1.GetOptions{})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
|
@ -17,6 +17,7 @@ limitations under the License.
|
||||||
package status
|
package status
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"context"
|
||||||
"os"
|
"os"
|
||||||
"reflect"
|
"reflect"
|
||||||
"testing"
|
"testing"
|
||||||
|
@ -322,7 +323,7 @@ func TestStatusActions(t *testing.T) {
|
||||||
newIPs := []apiv1.LoadBalancerIngress{{
|
newIPs := []apiv1.LoadBalancerIngress{{
|
||||||
IP: "11.0.0.2",
|
IP: "11.0.0.2",
|
||||||
}}
|
}}
|
||||||
fooIngress1, err1 := fk.Client.NetworkingV1beta1().Ingresses(apiv1.NamespaceDefault).Get("foo_ingress_1", metav1.GetOptions{})
|
fooIngress1, err1 := fk.Client.NetworkingV1beta1().Ingresses(apiv1.NamespaceDefault).Get(context.TODO(), "foo_ingress_1", metav1.GetOptions{})
|
||||||
if err1 != nil {
|
if err1 != nil {
|
||||||
t.Fatalf("unexpected error")
|
t.Fatalf("unexpected error")
|
||||||
}
|
}
|
||||||
|
@ -337,7 +338,7 @@ func TestStatusActions(t *testing.T) {
|
||||||
fk.Shutdown()
|
fk.Shutdown()
|
||||||
// ingress should be empty
|
// ingress should be empty
|
||||||
newIPs2 := []apiv1.LoadBalancerIngress{}
|
newIPs2 := []apiv1.LoadBalancerIngress{}
|
||||||
fooIngress2, err2 := fk.Client.NetworkingV1beta1().Ingresses(apiv1.NamespaceDefault).Get("foo_ingress_1", metav1.GetOptions{})
|
fooIngress2, err2 := fk.Client.NetworkingV1beta1().Ingresses(apiv1.NamespaceDefault).Get(context.TODO(), "foo_ingress_1", metav1.GetOptions{})
|
||||||
if err2 != nil {
|
if err2 != nil {
|
||||||
t.Fatalf("unexpected error")
|
t.Fatalf("unexpected error")
|
||||||
}
|
}
|
||||||
|
@ -346,7 +347,7 @@ func TestStatusActions(t *testing.T) {
|
||||||
t.Fatalf("returned %v but expected %v", fooIngress2CurIPs, newIPs2)
|
t.Fatalf("returned %v but expected %v", fooIngress2CurIPs, newIPs2)
|
||||||
}
|
}
|
||||||
|
|
||||||
oic, err := fk.Client.NetworkingV1beta1().Ingresses(metav1.NamespaceDefault).Get("foo_ingress_different_class", metav1.GetOptions{})
|
oic, err := fk.Client.NetworkingV1beta1().Ingresses(metav1.NamespaceDefault).Get(context.TODO(), "foo_ingress_different_class", metav1.GetOptions{})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatalf("unexpected error")
|
t.Fatalf("unexpected error")
|
||||||
}
|
}
|
||||||
|
|
|
@ -17,6 +17,7 @@ limitations under the License.
|
||||||
package k8s
|
package k8s
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"context"
|
||||||
"fmt"
|
"fmt"
|
||||||
"os"
|
"os"
|
||||||
"strings"
|
"strings"
|
||||||
|
@ -42,7 +43,7 @@ func ParseNameNS(input string) (string, string, error) {
|
||||||
|
|
||||||
// GetNodeIPOrName returns the IP address or the name of a node in the cluster
|
// GetNodeIPOrName returns the IP address or the name of a node in the cluster
|
||||||
func GetNodeIPOrName(kubeClient clientset.Interface, name string, useInternalIP bool) string {
|
func GetNodeIPOrName(kubeClient clientset.Interface, name string, useInternalIP bool) string {
|
||||||
node, err := kubeClient.CoreV1().Nodes().Get(name, metav1.GetOptions{})
|
node, err := kubeClient.CoreV1().Nodes().Get(context.TODO(), name, metav1.GetOptions{})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
klog.Errorf("Error getting node %v: %v", name, err)
|
klog.Errorf("Error getting node %v: %v", name, err)
|
||||||
return ""
|
return ""
|
||||||
|
@ -92,7 +93,7 @@ func GetPodDetails(kubeClient clientset.Interface) (*PodInfo, error) {
|
||||||
return nil, fmt.Errorf("unable to get POD information (missing POD_NAME or POD_NAMESPACE environment variable")
|
return nil, fmt.Errorf("unable to get POD information (missing POD_NAME or POD_NAMESPACE environment variable")
|
||||||
}
|
}
|
||||||
|
|
||||||
pod, _ := kubeClient.CoreV1().Pods(podNs).Get(podName, metav1.GetOptions{})
|
pod, _ := kubeClient.CoreV1().Pods(podNs).Get(context.TODO(), podName, metav1.GetOptions{})
|
||||||
if pod == nil {
|
if pod == nil {
|
||||||
return nil, fmt.Errorf("unable to get POD information")
|
return nil, fmt.Errorf("unable to get POD information")
|
||||||
}
|
}
|
||||||
|
|
|
@ -17,6 +17,7 @@ limitations under the License.
|
||||||
package annotations
|
package annotations
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"context"
|
||||||
"fmt"
|
"fmt"
|
||||||
"net/http"
|
"net/http"
|
||||||
"strings"
|
"strings"
|
||||||
|
@ -83,7 +84,7 @@ var _ = framework.DescribeAnnotation("affinity session-cookie-name", func() {
|
||||||
|
|
||||||
ing.ObjectMeta.Annotations["nginx.ingress.kubernetes.io/session-cookie-name"] = "OTHERCOOKIENAME"
|
ing.ObjectMeta.Annotations["nginx.ingress.kubernetes.io/session-cookie-name"] = "OTHERCOOKIENAME"
|
||||||
|
|
||||||
_, err := f.KubeClientSet.NetworkingV1beta1().Ingresses(f.Namespace).Update(ing)
|
_, err := f.KubeClientSet.NetworkingV1beta1().Ingresses(f.Namespace).Update(context.TODO(), ing, metav1.UpdateOptions{})
|
||||||
assert.Nil(ginkgo.GinkgoT(), err, "updating ingress")
|
assert.Nil(ginkgo.GinkgoT(), err, "updating ingress")
|
||||||
time.Sleep(5 * time.Second)
|
time.Sleep(5 * time.Second)
|
||||||
|
|
||||||
|
|
|
@ -17,6 +17,7 @@ limitations under the License.
|
||||||
package annotations
|
package annotations
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"context"
|
||||||
"fmt"
|
"fmt"
|
||||||
"net/http"
|
"net/http"
|
||||||
"net/url"
|
"net/url"
|
||||||
|
@ -323,7 +324,7 @@ var _ = framework.DescribeAnnotation("auth-*", func() {
|
||||||
err := framework.WaitForEndpoints(f.KubeClientSet, framework.DefaultTimeout, framework.HTTPBinService, f.Namespace, 1)
|
err := framework.WaitForEndpoints(f.KubeClientSet, framework.DefaultTimeout, framework.HTTPBinService, f.Namespace, 1)
|
||||||
assert.Nil(ginkgo.GinkgoT(), err)
|
assert.Nil(ginkgo.GinkgoT(), err)
|
||||||
|
|
||||||
e, err := f.KubeClientSet.CoreV1().Endpoints(f.Namespace).Get(framework.HTTPBinService, metav1.GetOptions{})
|
e, err := f.KubeClientSet.CoreV1().Endpoints(f.Namespace).Get(context.TODO(), framework.HTTPBinService, metav1.GetOptions{})
|
||||||
assert.Nil(ginkgo.GinkgoT(), err)
|
assert.Nil(ginkgo.GinkgoT(), err)
|
||||||
|
|
||||||
httpbinIP = e.Subsets[0].Addresses[0].IP
|
httpbinIP = e.Subsets[0].Addresses[0].IP
|
||||||
|
@ -361,7 +362,7 @@ var _ = framework.DescribeAnnotation("auth-*", func() {
|
||||||
err := framework.WaitForEndpoints(f.KubeClientSet, framework.DefaultTimeout, framework.HTTPBinService, f.Namespace, 1)
|
err := framework.WaitForEndpoints(f.KubeClientSet, framework.DefaultTimeout, framework.HTTPBinService, f.Namespace, 1)
|
||||||
assert.Nil(ginkgo.GinkgoT(), err)
|
assert.Nil(ginkgo.GinkgoT(), err)
|
||||||
|
|
||||||
e, err := f.KubeClientSet.CoreV1().Endpoints(f.Namespace).Get(framework.HTTPBinService, metav1.GetOptions{})
|
e, err := f.KubeClientSet.CoreV1().Endpoints(f.Namespace).Get(context.TODO(), framework.HTTPBinService, metav1.GetOptions{})
|
||||||
assert.Nil(ginkgo.GinkgoT(), err)
|
assert.Nil(ginkgo.GinkgoT(), err)
|
||||||
|
|
||||||
httpbinIP = e.Subsets[0].Addresses[0].IP
|
httpbinIP = e.Subsets[0].Addresses[0].IP
|
||||||
|
@ -415,7 +416,7 @@ var _ = framework.DescribeAnnotation("auth-*", func() {
|
||||||
err := framework.WaitForEndpoints(f.KubeClientSet, framework.DefaultTimeout, framework.HTTPBinService, f.Namespace, 1)
|
err := framework.WaitForEndpoints(f.KubeClientSet, framework.DefaultTimeout, framework.HTTPBinService, f.Namespace, 1)
|
||||||
assert.Nil(ginkgo.GinkgoT(), err)
|
assert.Nil(ginkgo.GinkgoT(), err)
|
||||||
|
|
||||||
e, err := f.KubeClientSet.CoreV1().Endpoints(f.Namespace).Get(framework.HTTPBinService, metav1.GetOptions{})
|
e, err := f.KubeClientSet.CoreV1().Endpoints(f.Namespace).Get(context.TODO(), framework.HTTPBinService, metav1.GetOptions{})
|
||||||
assert.Nil(ginkgo.GinkgoT(), err)
|
assert.Nil(ginkgo.GinkgoT(), err)
|
||||||
|
|
||||||
httpbinIP = e.Subsets[0].Addresses[0].IP
|
httpbinIP = e.Subsets[0].Addresses[0].IP
|
||||||
|
|
|
@ -18,6 +18,7 @@ package annotations
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"bytes"
|
"bytes"
|
||||||
|
"context"
|
||||||
"fmt"
|
"fmt"
|
||||||
"net/http"
|
"net/http"
|
||||||
"os/exec"
|
"os/exec"
|
||||||
|
@ -130,7 +131,7 @@ func createInfluxDBIngress(f *framework.Framework, host, service string, port in
|
||||||
}
|
}
|
||||||
|
|
||||||
func extractInfluxDBMeasurements(f *framework.Framework) (string, error) {
|
func extractInfluxDBMeasurements(f *framework.Framework) (string, error) {
|
||||||
l, err := f.KubeClientSet.CoreV1().Pods(f.Namespace).List(metav1.ListOptions{
|
l, err := f.KubeClientSet.CoreV1().Pods(f.Namespace).List(context.TODO(), metav1.ListOptions{
|
||||||
LabelSelector: "app=influxdb",
|
LabelSelector: "app=influxdb",
|
||||||
})
|
})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|
|
@ -17,6 +17,7 @@ limitations under the License.
|
||||||
package annotations
|
package annotations
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"context"
|
||||||
"fmt"
|
"fmt"
|
||||||
"net/http"
|
"net/http"
|
||||||
"net/url"
|
"net/url"
|
||||||
|
@ -89,7 +90,7 @@ var _ = framework.DescribeAnnotation("satisfy", func() {
|
||||||
err := framework.WaitForEndpoints(f.KubeClientSet, framework.DefaultTimeout, framework.HTTPBinService, f.Namespace, 1)
|
err := framework.WaitForEndpoints(f.KubeClientSet, framework.DefaultTimeout, framework.HTTPBinService, f.Namespace, 1)
|
||||||
assert.Nil(ginkgo.GinkgoT(), err)
|
assert.Nil(ginkgo.GinkgoT(), err)
|
||||||
|
|
||||||
e, err := f.KubeClientSet.CoreV1().Endpoints(f.Namespace).Get(framework.HTTPBinService, metav1.GetOptions{})
|
e, err := f.KubeClientSet.CoreV1().Endpoints(f.Namespace).Get(context.TODO(), framework.HTTPBinService, metav1.GetOptions{})
|
||||||
assert.Nil(ginkgo.GinkgoT(), err)
|
assert.Nil(ginkgo.GinkgoT(), err)
|
||||||
|
|
||||||
httpbinIP := e.Subsets[0].Addresses[0].IP
|
httpbinIP := e.Subsets[0].Addresses[0].IP
|
||||||
|
|
|
@ -17,6 +17,7 @@ limitations under the License.
|
||||||
package defaultbackend
|
package defaultbackend
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"context"
|
||||||
"fmt"
|
"fmt"
|
||||||
"net/http"
|
"net/http"
|
||||||
"strings"
|
"strings"
|
||||||
|
@ -25,6 +26,7 @@ import (
|
||||||
"github.com/onsi/ginkgo"
|
"github.com/onsi/ginkgo"
|
||||||
"github.com/stretchr/testify/assert"
|
"github.com/stretchr/testify/assert"
|
||||||
appsv1 "k8s.io/api/apps/v1"
|
appsv1 "k8s.io/api/apps/v1"
|
||||||
|
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||||
|
|
||||||
"k8s.io/ingress-nginx/test/e2e/framework"
|
"k8s.io/ingress-nginx/test/e2e/framework"
|
||||||
)
|
)
|
||||||
|
@ -40,7 +42,7 @@ var _ = framework.IngressNginxDescribe("[Default Backend] custom service", func(
|
||||||
args := deployment.Spec.Template.Spec.Containers[0].Args
|
args := deployment.Spec.Template.Spec.Containers[0].Args
|
||||||
args = append(args, fmt.Sprintf("--default-backend-service=%v/%v", f.Namespace, framework.EchoService))
|
args = append(args, fmt.Sprintf("--default-backend-service=%v/%v", f.Namespace, framework.EchoService))
|
||||||
deployment.Spec.Template.Spec.Containers[0].Args = args
|
deployment.Spec.Template.Spec.Containers[0].Args = args
|
||||||
_, err := f.KubeClientSet.AppsV1().Deployments(f.Namespace).Update(deployment)
|
_, err := f.KubeClientSet.AppsV1().Deployments(f.Namespace).Update(context.TODO(), deployment, metav1.UpdateOptions{})
|
||||||
time.Sleep(5 * time.Second)
|
time.Sleep(5 * time.Second)
|
||||||
return err
|
return err
|
||||||
})
|
})
|
||||||
|
|
|
@ -17,6 +17,7 @@ limitations under the License.
|
||||||
package framework
|
package framework
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"context"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/onsi/ginkgo"
|
"github.com/onsi/ginkgo"
|
||||||
|
@ -110,13 +111,13 @@ server {
|
||||||
|
|
||||||
`
|
`
|
||||||
|
|
||||||
_, err := f.KubeClientSet.CoreV1().ConfigMaps(f.Namespace).Create(&corev1.ConfigMap{
|
_, err := f.KubeClientSet.CoreV1().ConfigMaps(f.Namespace).Create(context.TODO(), &corev1.ConfigMap{
|
||||||
ObjectMeta: metav1.ObjectMeta{
|
ObjectMeta: metav1.ObjectMeta{
|
||||||
Name: SlowEchoService,
|
Name: SlowEchoService,
|
||||||
Namespace: f.Namespace,
|
Namespace: f.Namespace,
|
||||||
},
|
},
|
||||||
Data: data,
|
Data: data,
|
||||||
})
|
}, metav1.CreateOptions{})
|
||||||
assert.Nil(ginkgo.GinkgoT(), err, "creating configmap")
|
assert.Nil(ginkgo.GinkgoT(), err, "creating configmap")
|
||||||
|
|
||||||
deployment := newDeployment(SlowEchoService, f.Namespace, "openresty/openresty:1.15.8.2-alpine", 80, 1,
|
deployment := newDeployment(SlowEchoService, f.Namespace, "openresty/openresty:1.15.8.2-alpine", 80, 1,
|
||||||
|
@ -366,11 +367,11 @@ func (f *Framework) NewDeployment(name, image string, port int32, replicas int32
|
||||||
|
|
||||||
// DeleteDeployment deletes a deployment with a particular name and waits for the pods to be deleted
|
// DeleteDeployment deletes a deployment with a particular name and waits for the pods to be deleted
|
||||||
func (f *Framework) DeleteDeployment(name string) error {
|
func (f *Framework) DeleteDeployment(name string) error {
|
||||||
d, err := f.KubeClientSet.AppsV1().Deployments(f.Namespace).Get(name, metav1.GetOptions{})
|
d, err := f.KubeClientSet.AppsV1().Deployments(f.Namespace).Get(context.TODO(), name, metav1.GetOptions{})
|
||||||
assert.Nil(ginkgo.GinkgoT(), err, "getting deployment")
|
assert.Nil(ginkgo.GinkgoT(), err, "getting deployment")
|
||||||
|
|
||||||
grace := int64(0)
|
grace := int64(0)
|
||||||
err = f.KubeClientSet.AppsV1().Deployments(f.Namespace).Delete(name, &metav1.DeleteOptions{
|
err = f.KubeClientSet.AppsV1().Deployments(f.Namespace).Delete(context.TODO(), name, metav1.DeleteOptions{
|
||||||
GracePeriodSeconds: &grace,
|
GracePeriodSeconds: &grace,
|
||||||
})
|
})
|
||||||
assert.Nil(ginkgo.GinkgoT(), err, "deleting deployment")
|
assert.Nil(ginkgo.GinkgoT(), err, "deleting deployment")
|
||||||
|
@ -382,13 +383,13 @@ func (f *Framework) DeleteDeployment(name string) error {
|
||||||
|
|
||||||
// ScaleDeploymentToZero scales a deployment with a particular name and waits for the pods to be deleted
|
// ScaleDeploymentToZero scales a deployment with a particular name and waits for the pods to be deleted
|
||||||
func (f *Framework) ScaleDeploymentToZero(name string) {
|
func (f *Framework) ScaleDeploymentToZero(name string) {
|
||||||
d, err := f.KubeClientSet.AppsV1().Deployments(f.Namespace).Get(name, metav1.GetOptions{})
|
d, err := f.KubeClientSet.AppsV1().Deployments(f.Namespace).Get(context.TODO(), name, metav1.GetOptions{})
|
||||||
assert.Nil(ginkgo.GinkgoT(), err, "getting deployment")
|
assert.Nil(ginkgo.GinkgoT(), err, "getting deployment")
|
||||||
assert.NotNil(ginkgo.GinkgoT(), d, "expected a deployment but none returned")
|
assert.NotNil(ginkgo.GinkgoT(), d, "expected a deployment but none returned")
|
||||||
|
|
||||||
d.Spec.Replicas = NewInt32(0)
|
d.Spec.Replicas = NewInt32(0)
|
||||||
|
|
||||||
d, err = f.KubeClientSet.AppsV1().Deployments(f.Namespace).Update(d)
|
d, err = f.KubeClientSet.AppsV1().Deployments(f.Namespace).Update(context.TODO(), d, metav1.UpdateOptions{})
|
||||||
assert.Nil(ginkgo.GinkgoT(), err, "getting deployment")
|
assert.Nil(ginkgo.GinkgoT(), err, "getting deployment")
|
||||||
assert.NotNil(ginkgo.GinkgoT(), d, "expected a deployment but none returned")
|
assert.NotNil(ginkgo.GinkgoT(), d, "expected a deployment but none returned")
|
||||||
|
|
||||||
|
|
|
@ -14,6 +14,7 @@ limitations under the License.
|
||||||
package framework
|
package framework
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"context"
|
||||||
"crypto/tls"
|
"crypto/tls"
|
||||||
"fmt"
|
"fmt"
|
||||||
"net/http"
|
"net/http"
|
||||||
|
@ -172,7 +173,7 @@ func (f *Framework) GetNginxIP() string {
|
||||||
s, err := f.KubeClientSet.
|
s, err := f.KubeClientSet.
|
||||||
CoreV1().
|
CoreV1().
|
||||||
Services(f.Namespace).
|
Services(f.Namespace).
|
||||||
Get("nginx-ingress-controller", metav1.GetOptions{})
|
Get(context.TODO(), "nginx-ingress-controller", metav1.GetOptions{})
|
||||||
assert.Nil(ginkgo.GinkgoT(), err, "obtaining NGINX IP address")
|
assert.Nil(ginkgo.GinkgoT(), err, "obtaining NGINX IP address")
|
||||||
return s.Spec.ClusterIP
|
return s.Spec.ClusterIP
|
||||||
}
|
}
|
||||||
|
@ -182,7 +183,7 @@ func (f *Framework) GetNginxPodIP() []string {
|
||||||
e, err := f.KubeClientSet.
|
e, err := f.KubeClientSet.
|
||||||
CoreV1().
|
CoreV1().
|
||||||
Endpoints(f.Namespace).
|
Endpoints(f.Namespace).
|
||||||
Get("nginx-ingress-controller", metav1.GetOptions{})
|
Get(context.TODO(), "nginx-ingress-controller", metav1.GetOptions{})
|
||||||
assert.Nil(ginkgo.GinkgoT(), err, "obtaining NGINX IP address")
|
assert.Nil(ginkgo.GinkgoT(), err, "obtaining NGINX IP address")
|
||||||
eips := make([]string, 0)
|
eips := make([]string, 0)
|
||||||
for _, s := range e.Subsets {
|
for _, s := range e.Subsets {
|
||||||
|
@ -275,7 +276,7 @@ func (f *Framework) getConfigMap(name string) (*v1.ConfigMap, error) {
|
||||||
config, err := f.KubeClientSet.
|
config, err := f.KubeClientSet.
|
||||||
CoreV1().
|
CoreV1().
|
||||||
ConfigMaps(f.Namespace).
|
ConfigMaps(f.Namespace).
|
||||||
Get(name, metav1.GetOptions{})
|
Get(context.TODO(), name, metav1.GetOptions{})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
@ -294,7 +295,7 @@ func (f *Framework) SetNginxConfigMapData(cmData map[string]string) {
|
||||||
_, err = f.KubeClientSet.
|
_, err = f.KubeClientSet.
|
||||||
CoreV1().
|
CoreV1().
|
||||||
ConfigMaps(f.Namespace).
|
ConfigMaps(f.Namespace).
|
||||||
Update(cfgMap)
|
Update(context.TODO(), cfgMap, metav1.UpdateOptions{})
|
||||||
assert.Nil(ginkgo.GinkgoT(), err, "updating configuration configmap")
|
assert.Nil(ginkgo.GinkgoT(), err, "updating configuration configmap")
|
||||||
|
|
||||||
time.Sleep(5 * time.Second)
|
time.Sleep(5 * time.Second)
|
||||||
|
@ -302,13 +303,13 @@ func (f *Framework) SetNginxConfigMapData(cmData map[string]string) {
|
||||||
|
|
||||||
// CreateConfigMap creates a new configmap in the current namespace
|
// CreateConfigMap creates a new configmap in the current namespace
|
||||||
func (f *Framework) CreateConfigMap(name string, data map[string]string) {
|
func (f *Framework) CreateConfigMap(name string, data map[string]string) {
|
||||||
_, err := f.KubeClientSet.CoreV1().ConfigMaps(f.Namespace).Create(&v1.ConfigMap{
|
_, err := f.KubeClientSet.CoreV1().ConfigMaps(f.Namespace).Create(context.TODO(), &v1.ConfigMap{
|
||||||
ObjectMeta: metav1.ObjectMeta{
|
ObjectMeta: metav1.ObjectMeta{
|
||||||
Name: name,
|
Name: name,
|
||||||
Namespace: f.Namespace,
|
Namespace: f.Namespace,
|
||||||
},
|
},
|
||||||
Data: data,
|
Data: data,
|
||||||
})
|
}, metav1.CreateOptions{})
|
||||||
assert.Nil(ginkgo.GinkgoT(), err, "creating configMap")
|
assert.Nil(ginkgo.GinkgoT(), err, "creating configMap")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -323,7 +324,7 @@ func (f *Framework) UpdateNginxConfigMapData(key string, value string) {
|
||||||
_, err = f.KubeClientSet.
|
_, err = f.KubeClientSet.
|
||||||
CoreV1().
|
CoreV1().
|
||||||
ConfigMaps(f.Namespace).
|
ConfigMaps(f.Namespace).
|
||||||
Update(config)
|
Update(context.TODO(), config, metav1.UpdateOptions{})
|
||||||
assert.Nil(ginkgo.GinkgoT(), err, "updating configuration configmap")
|
assert.Nil(ginkgo.GinkgoT(), err, "updating configuration configmap")
|
||||||
|
|
||||||
time.Sleep(5 * time.Second)
|
time.Sleep(5 * time.Second)
|
||||||
|
@ -336,7 +337,7 @@ func (f *Framework) DeleteNGINXPod(grace int64) {
|
||||||
pod, err := getIngressNGINXPod(ns, f.KubeClientSet)
|
pod, err := getIngressNGINXPod(ns, f.KubeClientSet)
|
||||||
assert.Nil(ginkgo.GinkgoT(), err, "expected ingress nginx pod to be running")
|
assert.Nil(ginkgo.GinkgoT(), err, "expected ingress nginx pod to be running")
|
||||||
|
|
||||||
err = f.KubeClientSet.CoreV1().Pods(ns).Delete(pod.GetName(), metav1.NewDeleteOptions(grace))
|
err = f.KubeClientSet.CoreV1().Pods(ns).Delete(context.TODO(), pod.GetName(), *metav1.NewDeleteOptions(grace))
|
||||||
assert.Nil(ginkgo.GinkgoT(), err, "deleting ingress nginx pod")
|
assert.Nil(ginkgo.GinkgoT(), err, "deleting ingress nginx pod")
|
||||||
|
|
||||||
err = wait.Poll(Poll, DefaultTimeout, func() (bool, error) {
|
err = wait.Poll(Poll, DefaultTimeout, func() (bool, error) {
|
||||||
|
@ -389,7 +390,7 @@ func (f *Framework) newTestClient(config *tls.Config) *httpexpect.Expect {
|
||||||
|
|
||||||
// UpdateDeployment runs the given updateFunc on the deployment and waits for it to be updated
|
// UpdateDeployment runs the given updateFunc on the deployment and waits for it to be updated
|
||||||
func UpdateDeployment(kubeClientSet kubernetes.Interface, namespace string, name string, replicas int, updateFunc func(d *appsv1.Deployment) error) error {
|
func UpdateDeployment(kubeClientSet kubernetes.Interface, namespace string, name string, replicas int, updateFunc func(d *appsv1.Deployment) error) error {
|
||||||
deployment, err := kubeClientSet.AppsV1().Deployments(namespace).Get(name, metav1.GetOptions{})
|
deployment, err := kubeClientSet.AppsV1().Deployments(namespace).Get(context.TODO(), name, metav1.GetOptions{})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
@ -402,7 +403,7 @@ func UpdateDeployment(kubeClientSet kubernetes.Interface, namespace string, name
|
||||||
|
|
||||||
if *deployment.Spec.Replicas != int32(replicas) {
|
if *deployment.Spec.Replicas != int32(replicas) {
|
||||||
deployment.Spec.Replicas = NewInt32(int32(replicas))
|
deployment.Spec.Replicas = NewInt32(int32(replicas))
|
||||||
_, err = kubeClientSet.AppsV1().Deployments(namespace).Update(deployment)
|
_, err = kubeClientSet.AppsV1().Deployments(namespace).Update(context.TODO(), deployment, metav1.UpdateOptions{})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return errors.Wrapf(err, "scaling the number of replicas to %v", replicas)
|
return errors.Wrapf(err, "scaling the number of replicas to %v", replicas)
|
||||||
}
|
}
|
||||||
|
@ -420,7 +421,7 @@ func UpdateDeployment(kubeClientSet kubernetes.Interface, namespace string, name
|
||||||
|
|
||||||
// UpdateIngress runs the given updateFunc on the ingress
|
// UpdateIngress runs the given updateFunc on the ingress
|
||||||
func UpdateIngress(kubeClientSet kubernetes.Interface, namespace string, name string, updateFunc func(d *networking.Ingress) error) error {
|
func UpdateIngress(kubeClientSet kubernetes.Interface, namespace string, name string, updateFunc func(d *networking.Ingress) error) error {
|
||||||
ingress, err := kubeClientSet.NetworkingV1beta1().Ingresses(namespace).Get(name, metav1.GetOptions{})
|
ingress, err := kubeClientSet.NetworkingV1beta1().Ingresses(namespace).Get(context.TODO(), name, metav1.GetOptions{})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
@ -437,7 +438,7 @@ func UpdateIngress(kubeClientSet kubernetes.Interface, namespace string, name st
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
_, err = kubeClientSet.NetworkingV1beta1().Ingresses(namespace).Update(ingress)
|
_, err = kubeClientSet.NetworkingV1beta1().Ingresses(namespace).Update(context.TODO(), ingress, metav1.UpdateOptions{})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
|
@ -17,6 +17,7 @@ limitations under the License.
|
||||||
package framework
|
package framework
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"context"
|
||||||
"fmt"
|
"fmt"
|
||||||
"strings"
|
"strings"
|
||||||
"time"
|
"time"
|
||||||
|
@ -41,7 +42,7 @@ func (f *Framework) EnsureSecret(secret *api.Secret) *api.Secret {
|
||||||
err := createSecretWithRetries(f.KubeClientSet, f.Namespace, secret)
|
err := createSecretWithRetries(f.KubeClientSet, f.Namespace, secret)
|
||||||
assert.Nil(ginkgo.GinkgoT(), err, "creating secret")
|
assert.Nil(ginkgo.GinkgoT(), err, "creating secret")
|
||||||
|
|
||||||
s, err := f.KubeClientSet.CoreV1().Secrets(secret.Namespace).Get(secret.Name, metav1.GetOptions{})
|
s, err := f.KubeClientSet.CoreV1().Secrets(secret.Namespace).Get(context.TODO(), secret.Name, metav1.GetOptions{})
|
||||||
assert.Nil(ginkgo.GinkgoT(), err, "getting secret")
|
assert.Nil(ginkgo.GinkgoT(), err, "getting secret")
|
||||||
assert.NotNil(ginkgo.GinkgoT(), s, "getting secret")
|
assert.NotNil(ginkgo.GinkgoT(), s, "getting secret")
|
||||||
|
|
||||||
|
@ -50,10 +51,10 @@ func (f *Framework) EnsureSecret(secret *api.Secret) *api.Secret {
|
||||||
|
|
||||||
// EnsureConfigMap creates a ConfigMap object or returns it if it already exists.
|
// EnsureConfigMap creates a ConfigMap object or returns it if it already exists.
|
||||||
func (f *Framework) EnsureConfigMap(configMap *api.ConfigMap) (*api.ConfigMap, error) {
|
func (f *Framework) EnsureConfigMap(configMap *api.ConfigMap) (*api.ConfigMap, error) {
|
||||||
cm, err := f.KubeClientSet.CoreV1().ConfigMaps(f.Namespace).Create(configMap)
|
cm, err := f.KubeClientSet.CoreV1().ConfigMaps(f.Namespace).Create(context.TODO(), configMap, metav1.CreateOptions{})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
if k8sErrors.IsAlreadyExists(err) {
|
if k8sErrors.IsAlreadyExists(err) {
|
||||||
return f.KubeClientSet.CoreV1().ConfigMaps(f.Namespace).Update(configMap)
|
return f.KubeClientSet.CoreV1().ConfigMaps(f.Namespace).Update(context.TODO(), configMap, metav1.UpdateOptions{})
|
||||||
}
|
}
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
@ -63,7 +64,7 @@ func (f *Framework) EnsureConfigMap(configMap *api.ConfigMap) (*api.ConfigMap, e
|
||||||
|
|
||||||
// GetIngress gets an Ingress object from the given namespace, name and retunrs it, throws error if it does not exists.
|
// GetIngress gets an Ingress object from the given namespace, name and retunrs it, throws error if it does not exists.
|
||||||
func (f *Framework) GetIngress(namespace string, name string) *networking.Ingress {
|
func (f *Framework) GetIngress(namespace string, name string) *networking.Ingress {
|
||||||
ing, err := f.KubeClientSet.NetworkingV1beta1().Ingresses(namespace).Get(name, metav1.GetOptions{})
|
ing, err := f.KubeClientSet.NetworkingV1beta1().Ingresses(namespace).Get(context.TODO(), name, metav1.GetOptions{})
|
||||||
assert.Nil(ginkgo.GinkgoT(), err, "getting ingress")
|
assert.Nil(ginkgo.GinkgoT(), err, "getting ingress")
|
||||||
assert.NotNil(ginkgo.GinkgoT(), ing, "expected an ingress but none returned")
|
assert.NotNil(ginkgo.GinkgoT(), ing, "expected an ingress but none returned")
|
||||||
return ing
|
return ing
|
||||||
|
@ -108,7 +109,7 @@ func (f *Framework) EnsureService(service *core.Service) *core.Service {
|
||||||
err := createServiceWithRetries(f.KubeClientSet, f.Namespace, service)
|
err := createServiceWithRetries(f.KubeClientSet, f.Namespace, service)
|
||||||
assert.Nil(ginkgo.GinkgoT(), err, "creating service")
|
assert.Nil(ginkgo.GinkgoT(), err, "creating service")
|
||||||
|
|
||||||
s, err := f.KubeClientSet.CoreV1().Services(f.Namespace).Get(service.Name, metav1.GetOptions{})
|
s, err := f.KubeClientSet.CoreV1().Services(f.Namespace).Get(context.TODO(), service.Name, metav1.GetOptions{})
|
||||||
assert.Nil(ginkgo.GinkgoT(), err, "getting service")
|
assert.Nil(ginkgo.GinkgoT(), err, "getting service")
|
||||||
assert.NotNil(ginkgo.GinkgoT(), s, "expected a service but none returned")
|
assert.NotNil(ginkgo.GinkgoT(), s, "expected a service but none returned")
|
||||||
|
|
||||||
|
@ -120,7 +121,7 @@ func (f *Framework) EnsureDeployment(deployment *appsv1.Deployment) *appsv1.Depl
|
||||||
err := createDeploymentWithRetries(f.KubeClientSet, f.Namespace, deployment)
|
err := createDeploymentWithRetries(f.KubeClientSet, f.Namespace, deployment)
|
||||||
assert.Nil(ginkgo.GinkgoT(), err, "creating deployment")
|
assert.Nil(ginkgo.GinkgoT(), err, "creating deployment")
|
||||||
|
|
||||||
d, err := f.KubeClientSet.AppsV1().Deployments(deployment.Namespace).Get(deployment.Name, metav1.GetOptions{})
|
d, err := f.KubeClientSet.AppsV1().Deployments(deployment.Namespace).Get(context.TODO(), deployment.Name, metav1.GetOptions{})
|
||||||
assert.Nil(ginkgo.GinkgoT(), err, "getting deployment")
|
assert.Nil(ginkgo.GinkgoT(), err, "getting deployment")
|
||||||
assert.NotNil(ginkgo.GinkgoT(), d, "expected a deployment but none returned")
|
assert.NotNil(ginkgo.GinkgoT(), d, "expected a deployment but none returned")
|
||||||
|
|
||||||
|
@ -130,7 +131,7 @@ func (f *Framework) EnsureDeployment(deployment *appsv1.Deployment) *appsv1.Depl
|
||||||
// WaitForPodsReady waits for a given amount of time until a group of Pods is running in the given namespace.
|
// WaitForPodsReady waits for a given amount of time until a group of Pods is running in the given namespace.
|
||||||
func WaitForPodsReady(kubeClientSet kubernetes.Interface, timeout time.Duration, expectedReplicas int, namespace string, opts metav1.ListOptions) error {
|
func WaitForPodsReady(kubeClientSet kubernetes.Interface, timeout time.Duration, expectedReplicas int, namespace string, opts metav1.ListOptions) error {
|
||||||
return wait.Poll(Poll, timeout, func() (bool, error) {
|
return wait.Poll(Poll, timeout, func() (bool, error) {
|
||||||
pl, err := kubeClientSet.CoreV1().Pods(namespace).List(opts)
|
pl, err := kubeClientSet.CoreV1().Pods(namespace).List(context.TODO(), opts)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return false, nil
|
return false, nil
|
||||||
}
|
}
|
||||||
|
@ -153,7 +154,7 @@ func WaitForPodsReady(kubeClientSet kubernetes.Interface, timeout time.Duration,
|
||||||
// WaitForPodsDeleted waits for a given amount of time until a group of Pods are deleted in the given namespace.
|
// WaitForPodsDeleted waits for a given amount of time until a group of Pods are deleted in the given namespace.
|
||||||
func WaitForPodsDeleted(kubeClientSet kubernetes.Interface, timeout time.Duration, namespace string, opts metav1.ListOptions) error {
|
func WaitForPodsDeleted(kubeClientSet kubernetes.Interface, timeout time.Duration, namespace string, opts metav1.ListOptions) error {
|
||||||
return wait.Poll(Poll, timeout, func() (bool, error) {
|
return wait.Poll(Poll, timeout, func() (bool, error) {
|
||||||
pl, err := kubeClientSet.CoreV1().Pods(namespace).List(opts)
|
pl, err := kubeClientSet.CoreV1().Pods(namespace).List(context.TODO(), opts)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return false, nil
|
return false, nil
|
||||||
}
|
}
|
||||||
|
@ -172,7 +173,7 @@ func WaitForEndpoints(kubeClientSet kubernetes.Interface, timeout time.Duration,
|
||||||
}
|
}
|
||||||
|
|
||||||
return wait.Poll(Poll, timeout, func() (bool, error) {
|
return wait.Poll(Poll, timeout, func() (bool, error) {
|
||||||
endpoint, err := kubeClientSet.CoreV1().Endpoints(ns).Get(name, metav1.GetOptions{})
|
endpoint, err := kubeClientSet.CoreV1().Endpoints(ns).Get(context.TODO(), name, metav1.GetOptions{})
|
||||||
if k8sErrors.IsNotFound(err) {
|
if k8sErrors.IsNotFound(err) {
|
||||||
return false, nil
|
return false, nil
|
||||||
}
|
}
|
||||||
|
@ -213,7 +214,7 @@ func podRunningReady(p *core.Pod) (bool, error) {
|
||||||
}
|
}
|
||||||
|
|
||||||
func getIngressNGINXPod(ns string, kubeClientSet kubernetes.Interface) (*core.Pod, error) {
|
func getIngressNGINXPod(ns string, kubeClientSet kubernetes.Interface) (*core.Pod, error) {
|
||||||
l, err := kubeClientSet.CoreV1().Pods(ns).List(metav1.ListOptions{
|
l, err := kubeClientSet.CoreV1().Pods(ns).List(context.TODO(), metav1.ListOptions{
|
||||||
LabelSelector: "app.kubernetes.io/name=ingress-nginx",
|
LabelSelector: "app.kubernetes.io/name=ingress-nginx",
|
||||||
})
|
})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -247,7 +248,7 @@ func createDeploymentWithRetries(c kubernetes.Interface, namespace string, obj *
|
||||||
return fmt.Errorf("Object provided to create is empty")
|
return fmt.Errorf("Object provided to create is empty")
|
||||||
}
|
}
|
||||||
createFunc := func() (bool, error) {
|
createFunc := func() (bool, error) {
|
||||||
_, err := c.AppsV1().Deployments(namespace).Create(obj)
|
_, err := c.AppsV1().Deployments(namespace).Create(context.TODO(), obj, metav1.CreateOptions{})
|
||||||
if err == nil {
|
if err == nil {
|
||||||
return true, nil
|
return true, nil
|
||||||
}
|
}
|
||||||
|
@ -268,7 +269,7 @@ func createSecretWithRetries(c kubernetes.Interface, namespace string, obj *v1.S
|
||||||
return fmt.Errorf("Object provided to create is empty")
|
return fmt.Errorf("Object provided to create is empty")
|
||||||
}
|
}
|
||||||
createFunc := func() (bool, error) {
|
createFunc := func() (bool, error) {
|
||||||
_, err := c.CoreV1().Secrets(namespace).Create(obj)
|
_, err := c.CoreV1().Secrets(namespace).Create(context.TODO(), obj, metav1.CreateOptions{})
|
||||||
if err == nil {
|
if err == nil {
|
||||||
return true, nil
|
return true, nil
|
||||||
}
|
}
|
||||||
|
@ -288,7 +289,7 @@ func createServiceWithRetries(c kubernetes.Interface, namespace string, obj *v1.
|
||||||
return fmt.Errorf("Object provided to create is empty")
|
return fmt.Errorf("Object provided to create is empty")
|
||||||
}
|
}
|
||||||
createFunc := func() (bool, error) {
|
createFunc := func() (bool, error) {
|
||||||
_, err := c.CoreV1().Services(namespace).Create(obj)
|
_, err := c.CoreV1().Services(namespace).Create(context.TODO(), obj, metav1.CreateOptions{})
|
||||||
if err == nil {
|
if err == nil {
|
||||||
return true, nil
|
return true, nil
|
||||||
}
|
}
|
||||||
|
@ -309,7 +310,7 @@ func createIngressWithRetries(c kubernetes.Interface, namespace string, obj *net
|
||||||
return fmt.Errorf("Object provided to create is empty")
|
return fmt.Errorf("Object provided to create is empty")
|
||||||
}
|
}
|
||||||
createFunc := func() (bool, error) {
|
createFunc := func() (bool, error) {
|
||||||
_, err := c.NetworkingV1beta1().Ingresses(namespace).Create(obj)
|
_, err := c.NetworkingV1beta1().Ingresses(namespace).Create(context.TODO(), obj, metav1.CreateOptions{})
|
||||||
if err == nil {
|
if err == nil {
|
||||||
return true, nil
|
return true, nil
|
||||||
}
|
}
|
||||||
|
@ -330,7 +331,7 @@ func updateIngressWithRetries(c kubernetes.Interface, namespace string, obj *net
|
||||||
return fmt.Errorf("Object provided to create is empty")
|
return fmt.Errorf("Object provided to create is empty")
|
||||||
}
|
}
|
||||||
updateFunc := func() (bool, error) {
|
updateFunc := func() (bool, error) {
|
||||||
_, err := c.NetworkingV1beta1().Ingresses(namespace).Update(obj)
|
_, err := c.NetworkingV1beta1().Ingresses(namespace).Update(context.TODO(), obj, metav1.UpdateOptions{})
|
||||||
if err == nil {
|
if err == nil {
|
||||||
return true, nil
|
return true, nil
|
||||||
}
|
}
|
||||||
|
|
|
@ -18,6 +18,7 @@ package framework
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"bytes"
|
"bytes"
|
||||||
|
"context"
|
||||||
"crypto/rand"
|
"crypto/rand"
|
||||||
"crypto/rsa"
|
"crypto/rsa"
|
||||||
"crypto/tls"
|
"crypto/tls"
|
||||||
|
@ -74,12 +75,12 @@ func CreateIngressTLSSecret(client kubernetes.Interface, hosts []string, secretN
|
||||||
}
|
}
|
||||||
|
|
||||||
var apierr error
|
var apierr error
|
||||||
curSecret, err := client.CoreV1().Secrets(namespace).Get(secretName, metav1.GetOptions{})
|
curSecret, err := client.CoreV1().Secrets(namespace).Get(context.TODO(), secretName, metav1.GetOptions{})
|
||||||
if err == nil && curSecret != nil {
|
if err == nil && curSecret != nil {
|
||||||
curSecret.Data = newSecret.Data
|
curSecret.Data = newSecret.Data
|
||||||
_, apierr = client.CoreV1().Secrets(namespace).Update(curSecret)
|
_, apierr = client.CoreV1().Secrets(namespace).Update(context.TODO(), curSecret, metav1.UpdateOptions{})
|
||||||
} else {
|
} else {
|
||||||
_, apierr = client.CoreV1().Secrets(namespace).Create(newSecret)
|
_, apierr = client.CoreV1().Secrets(namespace).Create(context.TODO(), newSecret, metav1.CreateOptions{})
|
||||||
}
|
}
|
||||||
if apierr != nil {
|
if apierr != nil {
|
||||||
return nil, apierr
|
return nil, apierr
|
||||||
|
@ -118,12 +119,12 @@ func CreateIngressMASecret(client kubernetes.Interface, host string, secretName,
|
||||||
}
|
}
|
||||||
|
|
||||||
var apierr error
|
var apierr error
|
||||||
curSecret, err := client.CoreV1().Secrets(namespace).Get(secretName, metav1.GetOptions{})
|
curSecret, err := client.CoreV1().Secrets(namespace).Get(context.TODO(), secretName, metav1.GetOptions{})
|
||||||
if err == nil && curSecret != nil {
|
if err == nil && curSecret != nil {
|
||||||
curSecret.Data = newSecret.Data
|
curSecret.Data = newSecret.Data
|
||||||
_, apierr = client.CoreV1().Secrets(namespace).Update(curSecret)
|
_, apierr = client.CoreV1().Secrets(namespace).Update(context.TODO(), curSecret, metav1.UpdateOptions{})
|
||||||
} else {
|
} else {
|
||||||
_, apierr = client.CoreV1().Secrets(namespace).Create(newSecret)
|
_, apierr = client.CoreV1().Secrets(namespace).Create(context.TODO(), newSecret, metav1.CreateOptions{})
|
||||||
}
|
}
|
||||||
if apierr != nil {
|
if apierr != nil {
|
||||||
return nil, apierr
|
return nil, apierr
|
||||||
|
|
|
@ -17,6 +17,7 @@ limitations under the License.
|
||||||
package framework
|
package framework
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
context2 "context"
|
||||||
"fmt"
|
"fmt"
|
||||||
"os"
|
"os"
|
||||||
"time"
|
"time"
|
||||||
|
@ -100,7 +101,7 @@ func CreateKubeNamespace(baseName string, c kubernetes.Interface) (string, error
|
||||||
var err error
|
var err error
|
||||||
|
|
||||||
err = wait.PollImmediate(Poll, DefaultTimeout, func() (bool, error) {
|
err = wait.PollImmediate(Poll, DefaultTimeout, func() (bool, error) {
|
||||||
got, err = c.CoreV1().Namespaces().Create(ns)
|
got, err = c.CoreV1().Namespaces().Create(context2.TODO(), ns, metav1.CreateOptions{})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
Logf("Unexpected error while creating namespace: %v", err)
|
Logf("Unexpected error while creating namespace: %v", err)
|
||||||
return false, nil
|
return false, nil
|
||||||
|
@ -117,7 +118,7 @@ func CreateKubeNamespace(baseName string, c kubernetes.Interface) (string, error
|
||||||
func DeleteKubeNamespace(c kubernetes.Interface, namespace string) error {
|
func DeleteKubeNamespace(c kubernetes.Interface, namespace string) error {
|
||||||
grace := int64(0)
|
grace := int64(0)
|
||||||
pb := metav1.DeletePropagationBackground
|
pb := metav1.DeletePropagationBackground
|
||||||
return c.CoreV1().Namespaces().Delete(namespace, &metav1.DeleteOptions{
|
return c.CoreV1().Namespaces().Delete(context2.TODO(), namespace, metav1.DeleteOptions{
|
||||||
GracePeriodSeconds: &grace,
|
GracePeriodSeconds: &grace,
|
||||||
PropagationPolicy: &pb,
|
PropagationPolicy: &pb,
|
||||||
})
|
})
|
||||||
|
@ -130,7 +131,7 @@ func WaitForKubeNamespaceNotExist(c kubernetes.Interface, namespace string) erro
|
||||||
|
|
||||||
func namespaceNotExist(c kubernetes.Interface, namespace string) wait.ConditionFunc {
|
func namespaceNotExist(c kubernetes.Interface, namespace string) wait.ConditionFunc {
|
||||||
return func() (bool, error) {
|
return func() (bool, error) {
|
||||||
_, err := c.CoreV1().Namespaces().Get(namespace, metav1.GetOptions{})
|
_, err := c.CoreV1().Namespaces().Get(context2.TODO(), namespace, metav1.GetOptions{})
|
||||||
if apierrors.IsNotFound(err) {
|
if apierrors.IsNotFound(err) {
|
||||||
return true, nil
|
return true, nil
|
||||||
}
|
}
|
||||||
|
@ -148,7 +149,7 @@ func WaitForNoPodsInNamespace(c kubernetes.Interface, namespace string) error {
|
||||||
|
|
||||||
func noPodsInNamespace(c kubernetes.Interface, namespace string) wait.ConditionFunc {
|
func noPodsInNamespace(c kubernetes.Interface, namespace string) wait.ConditionFunc {
|
||||||
return func() (bool, error) {
|
return func() (bool, error) {
|
||||||
items, err := c.CoreV1().Pods(namespace).List(metav1.ListOptions{})
|
items, err := c.CoreV1().Pods(namespace).List(context2.TODO(), metav1.ListOptions{})
|
||||||
if apierrors.IsNotFound(err) {
|
if apierrors.IsNotFound(err) {
|
||||||
return true, nil
|
return true, nil
|
||||||
}
|
}
|
||||||
|
@ -183,7 +184,7 @@ func WaitForSecretInNamespace(c kubernetes.Interface, namespace, name string) er
|
||||||
|
|
||||||
func secretInNamespace(c kubernetes.Interface, namespace, name string) wait.ConditionFunc {
|
func secretInNamespace(c kubernetes.Interface, namespace, name string) wait.ConditionFunc {
|
||||||
return func() (bool, error) {
|
return func() (bool, error) {
|
||||||
s, err := c.CoreV1().Secrets(namespace).Get(name, metav1.GetOptions{})
|
s, err := c.CoreV1().Secrets(namespace).Get(context2.TODO(), name, metav1.GetOptions{})
|
||||||
if apierrors.IsNotFound(err) {
|
if apierrors.IsNotFound(err) {
|
||||||
return false, nil
|
return false, nil
|
||||||
}
|
}
|
||||||
|
@ -229,7 +230,7 @@ func WaitForNoIngressInNamespace(c kubernetes.Interface, namespace, name string)
|
||||||
|
|
||||||
func noIngressInNamespace(c kubernetes.Interface, namespace, name string) wait.ConditionFunc {
|
func noIngressInNamespace(c kubernetes.Interface, namespace, name string) wait.ConditionFunc {
|
||||||
return func() (bool, error) {
|
return func() (bool, error) {
|
||||||
ing, err := c.NetworkingV1beta1().Ingresses(namespace).Get(name, metav1.GetOptions{})
|
ing, err := c.NetworkingV1beta1().Ingresses(namespace).Get(context2.TODO(), name, metav1.GetOptions{})
|
||||||
if apierrors.IsNotFound(err) {
|
if apierrors.IsNotFound(err) {
|
||||||
return true, nil
|
return true, nil
|
||||||
}
|
}
|
||||||
|
@ -251,7 +252,7 @@ func WaitForIngressInNamespace(c kubernetes.Interface, namespace, name string) e
|
||||||
|
|
||||||
func ingressInNamespace(c kubernetes.Interface, namespace, name string) wait.ConditionFunc {
|
func ingressInNamespace(c kubernetes.Interface, namespace, name string) wait.ConditionFunc {
|
||||||
return func() (bool, error) {
|
return func() (bool, error) {
|
||||||
ing, err := c.NetworkingV1beta1().Ingresses(namespace).Get(name, metav1.GetOptions{})
|
ing, err := c.NetworkingV1beta1().Ingresses(namespace).Get(context2.TODO(), name, metav1.GetOptions{})
|
||||||
if apierrors.IsNotFound(err) {
|
if apierrors.IsNotFound(err) {
|
||||||
return false, nil
|
return false, nil
|
||||||
}
|
}
|
||||||
|
@ -268,7 +269,7 @@ func ingressInNamespace(c kubernetes.Interface, namespace, name string) wait.Con
|
||||||
|
|
||||||
func podRunning(c kubernetes.Interface, podName, namespace string) wait.ConditionFunc {
|
func podRunning(c kubernetes.Interface, podName, namespace string) wait.ConditionFunc {
|
||||||
return func() (bool, error) {
|
return func() (bool, error) {
|
||||||
pod, err := c.CoreV1().Pods(namespace).Get(podName, metav1.GetOptions{})
|
pod, err := c.CoreV1().Pods(namespace).Get(context2.TODO(), podName, metav1.GetOptions{})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return false, nil
|
return false, nil
|
||||||
}
|
}
|
||||||
|
|
6
test/e2e/gracefulshutdown/shutdown.go
Executable file → Normal file
6
test/e2e/gracefulshutdown/shutdown.go
Executable file → Normal file
|
@ -17,6 +17,7 @@ limitations under the License.
|
||||||
package gracefulshutdown
|
package gracefulshutdown
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"context"
|
||||||
"net/http"
|
"net/http"
|
||||||
"strings"
|
"strings"
|
||||||
"time"
|
"time"
|
||||||
|
@ -24,6 +25,7 @@ import (
|
||||||
"github.com/onsi/ginkgo"
|
"github.com/onsi/ginkgo"
|
||||||
"github.com/stretchr/testify/assert"
|
"github.com/stretchr/testify/assert"
|
||||||
appsv1 "k8s.io/api/apps/v1"
|
appsv1 "k8s.io/api/apps/v1"
|
||||||
|
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||||
|
|
||||||
"k8s.io/ingress-nginx/test/e2e/framework"
|
"k8s.io/ingress-nginx/test/e2e/framework"
|
||||||
)
|
)
|
||||||
|
@ -73,7 +75,7 @@ var _ = framework.IngressNginxDescribe("[Shutdown] ingress controller", func() {
|
||||||
func(deployment *appsv1.Deployment) error {
|
func(deployment *appsv1.Deployment) error {
|
||||||
grace := int64(3600)
|
grace := int64(3600)
|
||||||
deployment.Spec.Template.Spec.TerminationGracePeriodSeconds = &grace
|
deployment.Spec.Template.Spec.TerminationGracePeriodSeconds = &grace
|
||||||
_, err := f.KubeClientSet.AppsV1().Deployments(f.Namespace).Update(deployment)
|
_, err := f.KubeClientSet.AppsV1().Deployments(f.Namespace).Update(context.TODO(), deployment, metav1.UpdateOptions{})
|
||||||
return err
|
return err
|
||||||
})
|
})
|
||||||
|
|
||||||
|
@ -135,7 +137,7 @@ var _ = framework.IngressNginxDescribe("[Shutdown] ingress controller", func() {
|
||||||
func(deployment *appsv1.Deployment) error {
|
func(deployment *appsv1.Deployment) error {
|
||||||
grace := int64(3600)
|
grace := int64(3600)
|
||||||
deployment.Spec.Template.Spec.TerminationGracePeriodSeconds = &grace
|
deployment.Spec.Template.Spec.TerminationGracePeriodSeconds = &grace
|
||||||
_, err := f.KubeClientSet.AppsV1().Deployments(f.Namespace).Update(deployment)
|
_, err := f.KubeClientSet.AppsV1().Deployments(f.Namespace).Update(context.TODO(), deployment, metav1.UpdateOptions{})
|
||||||
return err
|
return err
|
||||||
})
|
})
|
||||||
assert.Nil(ginkgo.GinkgoT(), err)
|
assert.Nil(ginkgo.GinkgoT(), err)
|
||||||
|
|
|
@ -17,6 +17,7 @@ limitations under the License.
|
||||||
package leaks
|
package leaks
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"context"
|
||||||
"crypto/tls"
|
"crypto/tls"
|
||||||
"fmt"
|
"fmt"
|
||||||
"net/http"
|
"net/http"
|
||||||
|
@ -102,7 +103,7 @@ func checkIngress(hostname string, f *framework.Framework) {
|
||||||
}
|
}
|
||||||
|
|
||||||
func deleteIngress(hostname string, f *framework.Framework) {
|
func deleteIngress(hostname string, f *framework.Framework) {
|
||||||
err := f.KubeClientSet.NetworkingV1beta1().Ingresses(f.Namespace).Delete(hostname, &metav1.DeleteOptions{})
|
err := f.KubeClientSet.NetworkingV1beta1().Ingresses(f.Namespace).Delete(context.TODO(), hostname, metav1.DeleteOptions{})
|
||||||
assert.Nil(ginkgo.GinkgoT(), err, "unexpected error deleting ingress")
|
assert.Nil(ginkgo.GinkgoT(), err, "unexpected error deleting ingress")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -17,6 +17,7 @@ limitations under the License.
|
||||||
package lua
|
package lua
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"context"
|
||||||
"fmt"
|
"fmt"
|
||||||
"net/http"
|
"net/http"
|
||||||
"strings"
|
"strings"
|
||||||
|
@ -44,7 +45,7 @@ var _ = framework.IngressNginxDescribe("[Lua] dynamic certificates", func() {
|
||||||
ginkgo.It("picks up the certificate when we add TLS spec to existing ingress", func() {
|
ginkgo.It("picks up the certificate when we add TLS spec to existing ingress", func() {
|
||||||
ensureIngress(f, host, framework.EchoService)
|
ensureIngress(f, host, framework.EchoService)
|
||||||
|
|
||||||
ing, err := f.KubeClientSet.NetworkingV1beta1().Ingresses(f.Namespace).Get(host, metav1.GetOptions{})
|
ing, err := f.KubeClientSet.NetworkingV1beta1().Ingresses(f.Namespace).Get(context.TODO(), host, metav1.GetOptions{})
|
||||||
assert.Nil(ginkgo.GinkgoT(), err)
|
assert.Nil(ginkgo.GinkgoT(), err)
|
||||||
ing.Spec.TLS = []networking.IngressTLS{
|
ing.Spec.TLS = []networking.IngressTLS{
|
||||||
{
|
{
|
||||||
|
@ -58,7 +59,7 @@ var _ = framework.IngressNginxDescribe("[Lua] dynamic certificates", func() {
|
||||||
ing.Namespace)
|
ing.Namespace)
|
||||||
assert.Nil(ginkgo.GinkgoT(), err)
|
assert.Nil(ginkgo.GinkgoT(), err)
|
||||||
|
|
||||||
_, err = f.KubeClientSet.NetworkingV1beta1().Ingresses(f.Namespace).Update(ing)
|
_, err = f.KubeClientSet.NetworkingV1beta1().Ingresses(f.Namespace).Update(context.TODO(), ing, metav1.UpdateOptions{})
|
||||||
assert.Nil(ginkgo.GinkgoT(), err)
|
assert.Nil(ginkgo.GinkgoT(), err)
|
||||||
|
|
||||||
time.Sleep(waitForLuaSync)
|
time.Sleep(waitForLuaSync)
|
||||||
|
@ -146,7 +147,7 @@ var _ = framework.IngressNginxDescribe("[Lua] dynamic certificates", func() {
|
||||||
})
|
})
|
||||||
|
|
||||||
ginkgo.It("picks up the updated certificate without reloading", func() {
|
ginkgo.It("picks up the updated certificate without reloading", func() {
|
||||||
ing, err := f.KubeClientSet.NetworkingV1beta1().Ingresses(f.Namespace).Get(host, metav1.GetOptions{})
|
ing, err := f.KubeClientSet.NetworkingV1beta1().Ingresses(f.Namespace).Get(context.TODO(), host, metav1.GetOptions{})
|
||||||
assert.Nil(ginkgo.GinkgoT(), err)
|
assert.Nil(ginkgo.GinkgoT(), err)
|
||||||
|
|
||||||
ensureHTTPSRequest(f, fmt.Sprintf("%s?id=dummy_log_splitter_foo_bar", f.GetURL(framework.HTTPS)), host, host)
|
ensureHTTPSRequest(f, fmt.Sprintf("%s?id=dummy_log_splitter_foo_bar", f.GetURL(framework.HTTPS)), host, host)
|
||||||
|
@ -182,7 +183,7 @@ var _ = framework.IngressNginxDescribe("[Lua] dynamic certificates", func() {
|
||||||
})
|
})
|
||||||
|
|
||||||
ginkgo.It("falls back to using default certificate when secret gets deleted without reloading", func() {
|
ginkgo.It("falls back to using default certificate when secret gets deleted without reloading", func() {
|
||||||
ing, err := f.KubeClientSet.NetworkingV1beta1().Ingresses(f.Namespace).Get(host, metav1.GetOptions{})
|
ing, err := f.KubeClientSet.NetworkingV1beta1().Ingresses(f.Namespace).Get(context.TODO(), host, metav1.GetOptions{})
|
||||||
assert.Nil(ginkgo.GinkgoT(), err)
|
assert.Nil(ginkgo.GinkgoT(), err)
|
||||||
|
|
||||||
ensureHTTPSRequest(f, fmt.Sprintf("%s?id=dummy_log_splitter_foo_bar", f.GetURL(framework.HTTPS)), host, host)
|
ensureHTTPSRequest(f, fmt.Sprintf("%s?id=dummy_log_splitter_foo_bar", f.GetURL(framework.HTTPS)), host, host)
|
||||||
|
@ -195,7 +196,7 @@ var _ = framework.IngressNginxDescribe("[Lua] dynamic certificates", func() {
|
||||||
rc0, err := extractReloadCount(mf)
|
rc0, err := extractReloadCount(mf)
|
||||||
assert.Nil(ginkgo.GinkgoT(), err)
|
assert.Nil(ginkgo.GinkgoT(), err)
|
||||||
|
|
||||||
err = f.KubeClientSet.CoreV1().Secrets(ing.Namespace).Delete(ing.Spec.TLS[0].SecretName, nil)
|
err = f.KubeClientSet.CoreV1().Secrets(ing.Namespace).Delete(context.TODO(), ing.Spec.TLS[0].SecretName, metav1.DeleteOptions{})
|
||||||
assert.Nil(ginkgo.GinkgoT(), err)
|
assert.Nil(ginkgo.GinkgoT(), err)
|
||||||
|
|
||||||
time.Sleep(waitForLuaSync)
|
time.Sleep(waitForLuaSync)
|
||||||
|
@ -216,11 +217,11 @@ var _ = framework.IngressNginxDescribe("[Lua] dynamic certificates", func() {
|
||||||
|
|
||||||
ginkgo.It("picks up a non-certificate only change", func() {
|
ginkgo.It("picks up a non-certificate only change", func() {
|
||||||
newHost := "foo2.com"
|
newHost := "foo2.com"
|
||||||
ing, err := f.KubeClientSet.NetworkingV1beta1().Ingresses(f.Namespace).Get(host, metav1.GetOptions{})
|
ing, err := f.KubeClientSet.NetworkingV1beta1().Ingresses(f.Namespace).Get(context.TODO(), host, metav1.GetOptions{})
|
||||||
assert.Nil(ginkgo.GinkgoT(), err)
|
assert.Nil(ginkgo.GinkgoT(), err)
|
||||||
|
|
||||||
ing.Spec.Rules[0].Host = newHost
|
ing.Spec.Rules[0].Host = newHost
|
||||||
_, err = f.KubeClientSet.NetworkingV1beta1().Ingresses(f.Namespace).Update(ing)
|
_, err = f.KubeClientSet.NetworkingV1beta1().Ingresses(f.Namespace).Update(context.TODO(), ing, metav1.UpdateOptions{})
|
||||||
assert.Nil(ginkgo.GinkgoT(), err)
|
assert.Nil(ginkgo.GinkgoT(), err)
|
||||||
|
|
||||||
time.Sleep(waitForLuaSync)
|
time.Sleep(waitForLuaSync)
|
||||||
|
@ -230,11 +231,11 @@ var _ = framework.IngressNginxDescribe("[Lua] dynamic certificates", func() {
|
||||||
})
|
})
|
||||||
|
|
||||||
ginkgo.It("removes HTTPS configuration when we delete TLS spec", func() {
|
ginkgo.It("removes HTTPS configuration when we delete TLS spec", func() {
|
||||||
ing, err := f.KubeClientSet.NetworkingV1beta1().Ingresses(f.Namespace).Get(host, metav1.GetOptions{})
|
ing, err := f.KubeClientSet.NetworkingV1beta1().Ingresses(f.Namespace).Get(context.TODO(), host, metav1.GetOptions{})
|
||||||
assert.Nil(ginkgo.GinkgoT(), err)
|
assert.Nil(ginkgo.GinkgoT(), err)
|
||||||
|
|
||||||
ing.Spec.TLS = []networking.IngressTLS{}
|
ing.Spec.TLS = []networking.IngressTLS{}
|
||||||
_, err = f.KubeClientSet.NetworkingV1beta1().Ingresses(f.Namespace).Update(ing)
|
_, err = f.KubeClientSet.NetworkingV1beta1().Ingresses(f.Namespace).Update(context.TODO(), ing, metav1.UpdateOptions{})
|
||||||
assert.Nil(ginkgo.GinkgoT(), err)
|
assert.Nil(ginkgo.GinkgoT(), err)
|
||||||
|
|
||||||
time.Sleep(waitForLuaSync)
|
time.Sleep(waitForLuaSync)
|
||||||
|
|
|
@ -17,6 +17,7 @@ limitations under the License.
|
||||||
package lua
|
package lua
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"context"
|
||||||
"crypto/tls"
|
"crypto/tls"
|
||||||
"fmt"
|
"fmt"
|
||||||
"net/http"
|
"net/http"
|
||||||
|
@ -175,11 +176,11 @@ var _ = framework.IngressNginxDescribe("[Lua] dynamic configuration", func() {
|
||||||
return true
|
return true
|
||||||
})
|
})
|
||||||
|
|
||||||
ingress, err := f.KubeClientSet.NetworkingV1beta1().Ingresses(f.Namespace).Get("foo.com", metav1.GetOptions{})
|
ingress, err := f.KubeClientSet.NetworkingV1beta1().Ingresses(f.Namespace).Get(context.TODO(), "foo.com", metav1.GetOptions{})
|
||||||
assert.Nil(ginkgo.GinkgoT(), err)
|
assert.Nil(ginkgo.GinkgoT(), err)
|
||||||
|
|
||||||
ingress.ObjectMeta.Annotations["nginx.ingress.kubernetes.io/load-balance"] = "round_robin"
|
ingress.ObjectMeta.Annotations["nginx.ingress.kubernetes.io/load-balance"] = "round_robin"
|
||||||
_, err = f.KubeClientSet.NetworkingV1beta1().Ingresses(f.Namespace).Update(ingress)
|
_, err = f.KubeClientSet.NetworkingV1beta1().Ingresses(f.Namespace).Update(context.TODO(), ingress, metav1.UpdateOptions{})
|
||||||
assert.Nil(ginkgo.GinkgoT(), err)
|
assert.Nil(ginkgo.GinkgoT(), err)
|
||||||
|
|
||||||
f.HTTPTestClient().
|
f.HTTPTestClient().
|
||||||
|
|
|
@ -17,6 +17,7 @@ limitations under the License.
|
||||||
package settings
|
package settings
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"context"
|
||||||
"crypto/tls"
|
"crypto/tls"
|
||||||
"fmt"
|
"fmt"
|
||||||
"strings"
|
"strings"
|
||||||
|
@ -24,6 +25,7 @@ import (
|
||||||
"github.com/onsi/ginkgo"
|
"github.com/onsi/ginkgo"
|
||||||
"github.com/stretchr/testify/assert"
|
"github.com/stretchr/testify/assert"
|
||||||
appsv1 "k8s.io/api/apps/v1"
|
appsv1 "k8s.io/api/apps/v1"
|
||||||
|
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||||
|
|
||||||
"k8s.io/ingress-nginx/test/e2e/framework"
|
"k8s.io/ingress-nginx/test/e2e/framework"
|
||||||
)
|
)
|
||||||
|
@ -50,7 +52,7 @@ var _ = framework.IngressNginxDescribe("[SSL] [Flag] default-ssl-certificate", f
|
||||||
args := deployment.Spec.Template.Spec.Containers[0].Args
|
args := deployment.Spec.Template.Spec.Containers[0].Args
|
||||||
args = append(args, "--default-ssl-certificate=$(POD_NAMESPACE)/"+secretName)
|
args = append(args, "--default-ssl-certificate=$(POD_NAMESPACE)/"+secretName)
|
||||||
deployment.Spec.Template.Spec.Containers[0].Args = args
|
deployment.Spec.Template.Spec.Containers[0].Args = args
|
||||||
_, err := f.KubeClientSet.AppsV1().Deployments(f.Namespace).Update(deployment)
|
_, err := f.KubeClientSet.AppsV1().Deployments(f.Namespace).Update(context.TODO(), deployment, metav1.UpdateOptions{})
|
||||||
|
|
||||||
return err
|
return err
|
||||||
})
|
})
|
||||||
|
|
|
@ -17,6 +17,7 @@ limitations under the License.
|
||||||
package settings
|
package settings
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"context"
|
||||||
"net/http"
|
"net/http"
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
|
@ -24,6 +25,7 @@ import (
|
||||||
"github.com/stretchr/testify/assert"
|
"github.com/stretchr/testify/assert"
|
||||||
appsv1 "k8s.io/api/apps/v1"
|
appsv1 "k8s.io/api/apps/v1"
|
||||||
networking "k8s.io/api/networking/v1beta1"
|
networking "k8s.io/api/networking/v1beta1"
|
||||||
|
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||||
"k8s.io/apimachinery/pkg/util/intstr"
|
"k8s.io/apimachinery/pkg/util/intstr"
|
||||||
|
|
||||||
"k8s.io/ingress-nginx/test/e2e/framework"
|
"k8s.io/ingress-nginx/test/e2e/framework"
|
||||||
|
@ -40,7 +42,7 @@ var _ = framework.IngressNginxDescribe("[Flag] disable-catch-all", func() {
|
||||||
args := deployment.Spec.Template.Spec.Containers[0].Args
|
args := deployment.Spec.Template.Spec.Containers[0].Args
|
||||||
args = append(args, "--disable-catch-all=true")
|
args = append(args, "--disable-catch-all=true")
|
||||||
deployment.Spec.Template.Spec.Containers[0].Args = args
|
deployment.Spec.Template.Spec.Containers[0].Args = args
|
||||||
_, err := f.KubeClientSet.AppsV1().Deployments(f.Namespace).Update(deployment)
|
_, err := f.KubeClientSet.AppsV1().Deployments(f.Namespace).Update(context.TODO(), deployment, metav1.UpdateOptions{})
|
||||||
|
|
||||||
return err
|
return err
|
||||||
})
|
})
|
||||||
|
|
|
@ -17,6 +17,7 @@ limitations under the License.
|
||||||
package settings
|
package settings
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"context"
|
||||||
"net/http"
|
"net/http"
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
|
@ -76,7 +77,7 @@ var _ = framework.IngressNginxDescribe("[Flag] ingress-class", func() {
|
||||||
args := deployment.Spec.Template.Spec.Containers[0].Args
|
args := deployment.Spec.Template.Spec.Containers[0].Args
|
||||||
args = append(args, "--ingress-class=testclass")
|
args = append(args, "--ingress-class=testclass")
|
||||||
deployment.Spec.Template.Spec.Containers[0].Args = args
|
deployment.Spec.Template.Spec.Containers[0].Args = args
|
||||||
_, err := f.KubeClientSet.AppsV1().Deployments(f.Namespace).Update(deployment)
|
_, err := f.KubeClientSet.AppsV1().Deployments(f.Namespace).Update(context.TODO(), deployment, metav1.UpdateOptions{})
|
||||||
|
|
||||||
return err
|
return err
|
||||||
})
|
})
|
||||||
|
@ -135,11 +136,11 @@ var _ = framework.IngressNginxDescribe("[Flag] ingress-class", func() {
|
||||||
Expect().
|
Expect().
|
||||||
Status(http.StatusOK)
|
Status(http.StatusOK)
|
||||||
|
|
||||||
ing, err := f.KubeClientSet.NetworkingV1beta1().Ingresses(f.Namespace).Get(host, metav1.GetOptions{})
|
ing, err := f.KubeClientSet.NetworkingV1beta1().Ingresses(f.Namespace).Get(context.TODO(), host, metav1.GetOptions{})
|
||||||
assert.Nil(ginkgo.GinkgoT(), err)
|
assert.Nil(ginkgo.GinkgoT(), err)
|
||||||
|
|
||||||
delete(ing.Annotations, class.IngressKey)
|
delete(ing.Annotations, class.IngressKey)
|
||||||
_, err = f.KubeClientSet.NetworkingV1beta1().Ingresses(ing.Namespace).Update(ing)
|
_, err = f.KubeClientSet.NetworkingV1beta1().Ingresses(ing.Namespace).Update(context.TODO(), ing, metav1.UpdateOptions{})
|
||||||
assert.Nil(ginkgo.GinkgoT(), err)
|
assert.Nil(ginkgo.GinkgoT(), err)
|
||||||
|
|
||||||
f.WaitForNginxConfiguration(func(cfg string) bool {
|
f.WaitForNginxConfiguration(func(cfg string) bool {
|
||||||
|
|
|
@ -17,6 +17,7 @@ limitations under the License.
|
||||||
package settings
|
package settings
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"context"
|
||||||
"fmt"
|
"fmt"
|
||||||
"net/http"
|
"net/http"
|
||||||
"strings"
|
"strings"
|
||||||
|
@ -105,7 +106,7 @@ var _ = framework.IngressNginxDescribe("[Flag] custom HTTP and HTTPS ports", fun
|
||||||
err := framework.WaitForEndpoints(f.KubeClientSet, framework.DefaultTimeout, framework.HTTPBinService, f.Namespace, 1)
|
err := framework.WaitForEndpoints(f.KubeClientSet, framework.DefaultTimeout, framework.HTTPBinService, f.Namespace, 1)
|
||||||
assert.Nil(ginkgo.GinkgoT(), err)
|
assert.Nil(ginkgo.GinkgoT(), err)
|
||||||
|
|
||||||
e, err := f.KubeClientSet.CoreV1().Endpoints(f.Namespace).Get(framework.HTTPBinService, metav1.GetOptions{})
|
e, err := f.KubeClientSet.CoreV1().Endpoints(f.Namespace).Get(context.TODO(), framework.HTTPBinService, metav1.GetOptions{})
|
||||||
assert.Nil(ginkgo.GinkgoT(), err)
|
assert.Nil(ginkgo.GinkgoT(), err)
|
||||||
|
|
||||||
httpbinIP = e.Subsets[0].Addresses[0].IP
|
httpbinIP = e.Subsets[0].Addresses[0].IP
|
||||||
|
|
|
@ -17,6 +17,7 @@ limitations under the License.
|
||||||
package settings
|
package settings
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"context"
|
||||||
"net/http"
|
"net/http"
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
|
@ -41,12 +42,12 @@ var _ = framework.IngressNginxDescribe("[Security] Pod Security Policies", func(
|
||||||
|
|
||||||
ginkgo.BeforeEach(func() {
|
ginkgo.BeforeEach(func() {
|
||||||
psp := createPodSecurityPolicy()
|
psp := createPodSecurityPolicy()
|
||||||
_, err := f.KubeClientSet.PolicyV1beta1().PodSecurityPolicies().Create(psp)
|
_, err := f.KubeClientSet.PolicyV1beta1().PodSecurityPolicies().Create(context.TODO(), psp, metav1.CreateOptions{})
|
||||||
if !k8sErrors.IsAlreadyExists(err) {
|
if !k8sErrors.IsAlreadyExists(err) {
|
||||||
assert.Nil(ginkgo.GinkgoT(), err, "creating Pod Security Policy")
|
assert.Nil(ginkgo.GinkgoT(), err, "creating Pod Security Policy")
|
||||||
}
|
}
|
||||||
|
|
||||||
role, err := f.KubeClientSet.RbacV1().Roles(f.Namespace).Get("nginx-ingress", metav1.GetOptions{})
|
role, err := f.KubeClientSet.RbacV1().Roles(f.Namespace).Get(context.TODO(), "nginx-ingress", metav1.GetOptions{})
|
||||||
assert.Nil(ginkgo.GinkgoT(), err, "getting ingress controller cluster role")
|
assert.Nil(ginkgo.GinkgoT(), err, "getting ingress controller cluster role")
|
||||||
assert.NotNil(ginkgo.GinkgoT(), role)
|
assert.NotNil(ginkgo.GinkgoT(), role)
|
||||||
|
|
||||||
|
@ -57,7 +58,7 @@ var _ = framework.IngressNginxDescribe("[Security] Pod Security Policies", func(
|
||||||
Verbs: []string{"use"},
|
Verbs: []string{"use"},
|
||||||
})
|
})
|
||||||
|
|
||||||
_, err = f.KubeClientSet.RbacV1().Roles(f.Namespace).Update(role)
|
_, err = f.KubeClientSet.RbacV1().Roles(f.Namespace).Update(context.TODO(), role, metav1.UpdateOptions{})
|
||||||
assert.Nil(ginkgo.GinkgoT(), err, "updating ingress controller cluster role to use a pod security policy")
|
assert.Nil(ginkgo.GinkgoT(), err, "updating ingress controller cluster role to use a pod security policy")
|
||||||
|
|
||||||
// update the deployment just to trigger a rolling update and the use of the security policy
|
// update the deployment just to trigger a rolling update and the use of the security policy
|
||||||
|
@ -66,7 +67,7 @@ var _ = framework.IngressNginxDescribe("[Security] Pod Security Policies", func(
|
||||||
args := deployment.Spec.Template.Spec.Containers[0].Args
|
args := deployment.Spec.Template.Spec.Containers[0].Args
|
||||||
args = append(args, "--v=2")
|
args = append(args, "--v=2")
|
||||||
deployment.Spec.Template.Spec.Containers[0].Args = args
|
deployment.Spec.Template.Spec.Containers[0].Args = args
|
||||||
_, err := f.KubeClientSet.AppsV1().Deployments(f.Namespace).Update(deployment)
|
_, err := f.KubeClientSet.AppsV1().Deployments(f.Namespace).Update(context.TODO(), deployment, metav1.UpdateOptions{})
|
||||||
|
|
||||||
return err
|
return err
|
||||||
})
|
})
|
||||||
|
|
|
@ -17,6 +17,7 @@ limitations under the License.
|
||||||
package settings
|
package settings
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"context"
|
||||||
"net/http"
|
"net/http"
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
|
@ -37,12 +38,12 @@ var _ = framework.IngressNginxDescribe("[Security] Pod Security Policies with vo
|
||||||
|
|
||||||
ginkgo.It("should be running with a Pod Security Policy", func() {
|
ginkgo.It("should be running with a Pod Security Policy", func() {
|
||||||
psp := createPodSecurityPolicy()
|
psp := createPodSecurityPolicy()
|
||||||
_, err := f.KubeClientSet.PolicyV1beta1().PodSecurityPolicies().Create(psp)
|
_, err := f.KubeClientSet.PolicyV1beta1().PodSecurityPolicies().Create(context.TODO(), psp, metav1.CreateOptions{})
|
||||||
if !k8sErrors.IsAlreadyExists(err) {
|
if !k8sErrors.IsAlreadyExists(err) {
|
||||||
assert.Nil(ginkgo.GinkgoT(), err, "creating Pod Security Policy")
|
assert.Nil(ginkgo.GinkgoT(), err, "creating Pod Security Policy")
|
||||||
}
|
}
|
||||||
|
|
||||||
role, err := f.KubeClientSet.RbacV1().Roles(f.Namespace).Get("nginx-ingress", metav1.GetOptions{})
|
role, err := f.KubeClientSet.RbacV1().Roles(f.Namespace).Get(context.TODO(), "nginx-ingress", metav1.GetOptions{})
|
||||||
assert.Nil(ginkgo.GinkgoT(), err, "getting ingress controller cluster role")
|
assert.Nil(ginkgo.GinkgoT(), err, "getting ingress controller cluster role")
|
||||||
assert.NotNil(ginkgo.GinkgoT(), role)
|
assert.NotNil(ginkgo.GinkgoT(), role)
|
||||||
|
|
||||||
|
@ -53,7 +54,7 @@ var _ = framework.IngressNginxDescribe("[Security] Pod Security Policies with vo
|
||||||
Verbs: []string{"use"},
|
Verbs: []string{"use"},
|
||||||
})
|
})
|
||||||
|
|
||||||
_, err = f.KubeClientSet.RbacV1().Roles(f.Namespace).Update(role)
|
_, err = f.KubeClientSet.RbacV1().Roles(f.Namespace).Update(context.TODO(), role, metav1.UpdateOptions{})
|
||||||
assert.Nil(ginkgo.GinkgoT(), err, "updating ingress controller cluster role to use a pod security policy")
|
assert.Nil(ginkgo.GinkgoT(), err, "updating ingress controller cluster role to use a pod security policy")
|
||||||
|
|
||||||
err = framework.UpdateDeployment(f.KubeClientSet, f.Namespace, "nginx-ingress-controller", 1,
|
err = framework.UpdateDeployment(f.KubeClientSet, f.Namespace, "nginx-ingress-controller", 1,
|
||||||
|
@ -89,7 +90,7 @@ var _ = framework.IngressNginxDescribe("[Security] Pod Security Policies with vo
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
_, err := f.KubeClientSet.AppsV1().Deployments(f.Namespace).Update(deployment)
|
_, err := f.KubeClientSet.AppsV1().Deployments(f.Namespace).Update(context.TODO(), deployment, metav1.UpdateOptions{})
|
||||||
|
|
||||||
return err
|
return err
|
||||||
})
|
})
|
||||||
|
|
|
@ -17,6 +17,7 @@ limitations under the License.
|
||||||
package ssl
|
package ssl
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"context"
|
||||||
"crypto/tls"
|
"crypto/tls"
|
||||||
"fmt"
|
"fmt"
|
||||||
"net/http"
|
"net/http"
|
||||||
|
@ -73,7 +74,7 @@ var _ = framework.IngressNginxDescribe("[SSL] secret update", func() {
|
||||||
|
|
||||||
dummySecret.Data["some-key"] = []byte("some value")
|
dummySecret.Data["some-key"] = []byte("some value")
|
||||||
|
|
||||||
f.KubeClientSet.CoreV1().Secrets(f.Namespace).Update(dummySecret)
|
f.KubeClientSet.CoreV1().Secrets(f.Namespace).Update(context.TODO(), dummySecret, metav1.UpdateOptions{})
|
||||||
|
|
||||||
assert.NotContains(ginkgo.GinkgoT(), log, fmt.Sprintf("starting syncing of secret %v/dummy", f.Namespace))
|
assert.NotContains(ginkgo.GinkgoT(), log, fmt.Sprintf("starting syncing of secret %v/dummy", f.Namespace))
|
||||||
assert.NotContains(ginkgo.GinkgoT(), log, fmt.Sprintf("error obtaining PEM from secret %v/dummy", f.Namespace))
|
assert.NotContains(ginkgo.GinkgoT(), log, fmt.Sprintf("error obtaining PEM from secret %v/dummy", f.Namespace))
|
||||||
|
|
|
@ -17,6 +17,7 @@ limitations under the License.
|
||||||
package settings
|
package settings
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"context"
|
||||||
"fmt"
|
"fmt"
|
||||||
"log"
|
"log"
|
||||||
"net"
|
"net"
|
||||||
|
@ -64,7 +65,7 @@ var _ = framework.IngressNginxDescribe("[Status] status update", func() {
|
||||||
args = append(args, "--publish-status-address=1.1.0.0")
|
args = append(args, "--publish-status-address=1.1.0.0")
|
||||||
|
|
||||||
deployment.Spec.Template.Spec.Containers[0].Args = args
|
deployment.Spec.Template.Spec.Containers[0].Args = args
|
||||||
_, err := f.KubeClientSet.AppsV1().Deployments(f.Namespace).Update(deployment)
|
_, err := f.KubeClientSet.AppsV1().Deployments(f.Namespace).Update(context.TODO(), deployment, metav1.UpdateOptions{})
|
||||||
return err
|
return err
|
||||||
})
|
})
|
||||||
assert.Nil(ginkgo.GinkgoT(), err, "unexpected error updating ingress controller deployment flags")
|
assert.Nil(ginkgo.GinkgoT(), err, "unexpected error updating ingress controller deployment flags")
|
||||||
|
@ -84,17 +85,17 @@ var _ = framework.IngressNginxDescribe("[Status] status update", func() {
|
||||||
err = cmd.Process.Kill()
|
err = cmd.Process.Kill()
|
||||||
assert.Nil(ginkgo.GinkgoT(), err, "unexpected error terminating kubectl proxy")
|
assert.Nil(ginkgo.GinkgoT(), err, "unexpected error terminating kubectl proxy")
|
||||||
|
|
||||||
ing, err = f.KubeClientSet.NetworkingV1beta1().Ingresses(f.Namespace).Get(host, metav1.GetOptions{})
|
ing, err = f.KubeClientSet.NetworkingV1beta1().Ingresses(f.Namespace).Get(context.TODO(), host, metav1.GetOptions{})
|
||||||
assert.Nil(ginkgo.GinkgoT(), err, "unexpected error getting %s/%v Ingress", f.Namespace, host)
|
assert.Nil(ginkgo.GinkgoT(), err, "unexpected error getting %s/%v Ingress", f.Namespace, host)
|
||||||
|
|
||||||
ing.Status.LoadBalancer.Ingress = []apiv1.LoadBalancerIngress{}
|
ing.Status.LoadBalancer.Ingress = []apiv1.LoadBalancerIngress{}
|
||||||
_, err = f.KubeClientSet.NetworkingV1beta1().Ingresses(f.Namespace).UpdateStatus(ing)
|
_, err = f.KubeClientSet.NetworkingV1beta1().Ingresses(f.Namespace).UpdateStatus(context.TODO(), ing, metav1.UpdateOptions{})
|
||||||
assert.Nil(ginkgo.GinkgoT(), err, "unexpected error cleaning Ingress status")
|
assert.Nil(ginkgo.GinkgoT(), err, "unexpected error cleaning Ingress status")
|
||||||
time.Sleep(10 * time.Second)
|
time.Sleep(10 * time.Second)
|
||||||
|
|
||||||
err = f.KubeClientSet.CoreV1().
|
err = f.KubeClientSet.CoreV1().
|
||||||
ConfigMaps(f.Namespace).
|
ConfigMaps(f.Namespace).
|
||||||
Delete("ingress-controller-leader-nginx", &metav1.DeleteOptions{})
|
Delete(context.TODO(), "ingress-controller-leader-nginx", metav1.DeleteOptions{})
|
||||||
assert.Nil(ginkgo.GinkgoT(), err, "unexpected error deleting leader election configmap")
|
assert.Nil(ginkgo.GinkgoT(), err, "unexpected error deleting leader election configmap")
|
||||||
|
|
||||||
_, cmd, err = f.KubectlProxy(port)
|
_, cmd, err = f.KubectlProxy(port)
|
||||||
|
@ -107,7 +108,7 @@ var _ = framework.IngressNginxDescribe("[Status] status update", func() {
|
||||||
}()
|
}()
|
||||||
|
|
||||||
err = wait.Poll(5*time.Second, 4*time.Minute, func() (done bool, err error) {
|
err = wait.Poll(5*time.Second, 4*time.Minute, func() (done bool, err error) {
|
||||||
ing, err = f.KubeClientSet.NetworkingV1beta1().Ingresses(f.Namespace).Get(host, metav1.GetOptions{})
|
ing, err = f.KubeClientSet.NetworkingV1beta1().Ingresses(f.Namespace).Get(context.TODO(), host, metav1.GetOptions{})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return false, nil
|
return false, nil
|
||||||
}
|
}
|
||||||
|
|
|
@ -43,7 +43,7 @@ var _ = framework.IngressNginxDescribe("[TCP] tcp-services", func() {
|
||||||
config, err := f.KubeClientSet.
|
config, err := f.KubeClientSet.
|
||||||
CoreV1().
|
CoreV1().
|
||||||
ConfigMaps(f.Namespace).
|
ConfigMaps(f.Namespace).
|
||||||
Get("tcp-services", metav1.GetOptions{})
|
Get(context.TODO(), "tcp-services", metav1.GetOptions{})
|
||||||
assert.Nil(ginkgo.GinkgoT(), err, "unexpected error obtaining tcp-services configmap")
|
assert.Nil(ginkgo.GinkgoT(), err, "unexpected error obtaining tcp-services configmap")
|
||||||
assert.NotNil(ginkgo.GinkgoT(), config, "expected a configmap but none returned")
|
assert.NotNil(ginkgo.GinkgoT(), config, "expected a configmap but none returned")
|
||||||
|
|
||||||
|
@ -56,13 +56,13 @@ var _ = framework.IngressNginxDescribe("[TCP] tcp-services", func() {
|
||||||
_, err = f.KubeClientSet.
|
_, err = f.KubeClientSet.
|
||||||
CoreV1().
|
CoreV1().
|
||||||
ConfigMaps(f.Namespace).
|
ConfigMaps(f.Namespace).
|
||||||
Update(config)
|
Update(context.TODO(), config, metav1.UpdateOptions{})
|
||||||
assert.Nil(ginkgo.GinkgoT(), err, "unexpected error updating configmap")
|
assert.Nil(ginkgo.GinkgoT(), err, "unexpected error updating configmap")
|
||||||
|
|
||||||
svc, err := f.KubeClientSet.
|
svc, err := f.KubeClientSet.
|
||||||
CoreV1().
|
CoreV1().
|
||||||
Services(f.Namespace).
|
Services(f.Namespace).
|
||||||
Get("nginx-ingress-controller", metav1.GetOptions{})
|
Get(context.TODO(), "nginx-ingress-controller", metav1.GetOptions{})
|
||||||
assert.Nil(ginkgo.GinkgoT(), err, "unexpected error obtaining ingress-nginx service")
|
assert.Nil(ginkgo.GinkgoT(), err, "unexpected error obtaining ingress-nginx service")
|
||||||
assert.NotNil(ginkgo.GinkgoT(), svc, "expected a service but none returned")
|
assert.NotNil(ginkgo.GinkgoT(), svc, "expected a service but none returned")
|
||||||
|
|
||||||
|
@ -74,7 +74,7 @@ var _ = framework.IngressNginxDescribe("[TCP] tcp-services", func() {
|
||||||
_, err = f.KubeClientSet.
|
_, err = f.KubeClientSet.
|
||||||
CoreV1().
|
CoreV1().
|
||||||
Services(f.Namespace).
|
Services(f.Namespace).
|
||||||
Update(svc)
|
Update(context.TODO(), svc, metav1.UpdateOptions{})
|
||||||
assert.Nil(ginkgo.GinkgoT(), err, "unexpected error updating service")
|
assert.Nil(ginkgo.GinkgoT(), err, "unexpected error updating service")
|
||||||
|
|
||||||
// wait for update and nginx reload and new endpoint is available
|
// wait for update and nginx reload and new endpoint is available
|
||||||
|
@ -126,7 +126,7 @@ var _ = framework.IngressNginxDescribe("[TCP] tcp-services", func() {
|
||||||
svc, err := f.KubeClientSet.
|
svc, err := f.KubeClientSet.
|
||||||
CoreV1().
|
CoreV1().
|
||||||
Services(f.Namespace).
|
Services(f.Namespace).
|
||||||
Get("nginx-ingress-controller", metav1.GetOptions{})
|
Get(context.TODO(), "nginx-ingress-controller", metav1.GetOptions{})
|
||||||
assert.Nil(ginkgo.GinkgoT(), err, "unexpected error obtaining ingress-nginx service")
|
assert.Nil(ginkgo.GinkgoT(), err, "unexpected error obtaining ingress-nginx service")
|
||||||
assert.NotNil(ginkgo.GinkgoT(), svc, "expected a service but none returned")
|
assert.NotNil(ginkgo.GinkgoT(), svc, "expected a service but none returned")
|
||||||
|
|
||||||
|
@ -138,14 +138,14 @@ var _ = framework.IngressNginxDescribe("[TCP] tcp-services", func() {
|
||||||
_, err = f.KubeClientSet.
|
_, err = f.KubeClientSet.
|
||||||
CoreV1().
|
CoreV1().
|
||||||
Services(f.Namespace).
|
Services(f.Namespace).
|
||||||
Update(svc)
|
Update(context.TODO(), svc, metav1.UpdateOptions{})
|
||||||
assert.Nil(ginkgo.GinkgoT(), err, "unexpected error updating service")
|
assert.Nil(ginkgo.GinkgoT(), err, "unexpected error updating service")
|
||||||
|
|
||||||
// Update the TCP configmap to link port 5353 to the DNS external name service
|
// Update the TCP configmap to link port 5353 to the DNS external name service
|
||||||
config, err := f.KubeClientSet.
|
config, err := f.KubeClientSet.
|
||||||
CoreV1().
|
CoreV1().
|
||||||
ConfigMaps(f.Namespace).
|
ConfigMaps(f.Namespace).
|
||||||
Get("tcp-services", metav1.GetOptions{})
|
Get(context.TODO(), "tcp-services", metav1.GetOptions{})
|
||||||
assert.Nil(ginkgo.GinkgoT(), err, "unexpected error obtaining tcp-services configmap")
|
assert.Nil(ginkgo.GinkgoT(), err, "unexpected error obtaining tcp-services configmap")
|
||||||
assert.NotNil(ginkgo.GinkgoT(), config, "expected a configmap but none returned")
|
assert.NotNil(ginkgo.GinkgoT(), config, "expected a configmap but none returned")
|
||||||
|
|
||||||
|
@ -158,7 +158,7 @@ var _ = framework.IngressNginxDescribe("[TCP] tcp-services", func() {
|
||||||
_, err = f.KubeClientSet.
|
_, err = f.KubeClientSet.
|
||||||
CoreV1().
|
CoreV1().
|
||||||
ConfigMaps(f.Namespace).
|
ConfigMaps(f.Namespace).
|
||||||
Update(config)
|
Update(context.TODO(), config, metav1.UpdateOptions{})
|
||||||
assert.Nil(ginkgo.GinkgoT(), err, "unexpected error updating configmap")
|
assert.Nil(ginkgo.GinkgoT(), err, "unexpected error updating configmap")
|
||||||
|
|
||||||
// Validate that the generated nginx config contains the expected `proxy_upstream_name` value
|
// Validate that the generated nginx config contains the expected `proxy_upstream_name` value
|
||||||
|
|
Loading…
Reference in a new issue