mirror of https://github.com/k3s-io/k3s
ingress: migrate extensions.Ingress to networking.Ingress
This is a find/replace within my editor. I made the import networkingv1beta1 so that it will be easier to replace for the future v1 migration. Signed-off-by: Christopher M. Luciano <cmluciano@us.ibm.com>k3s-v1.15.3
parent
0207363445
commit
d9e4933da3
|
@ -2291,7 +2291,7 @@ type IngressDescriber struct {
|
||||||
}
|
}
|
||||||
|
|
||||||
func (i *IngressDescriber) Describe(namespace, name string, describerSettings describe.DescriberSettings) (string, error) {
|
func (i *IngressDescriber) Describe(namespace, name string, describerSettings describe.DescriberSettings) (string, error) {
|
||||||
c := i.ExtensionsV1beta1().Ingresses(namespace)
|
c := i.NetworkingV1beta1().Ingresses(namespace)
|
||||||
ing, err := c.Get(name, metav1.GetOptions{})
|
ing, err := c.Get(name, metav1.GetOptions{})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return "", err
|
return "", err
|
||||||
|
@ -2299,7 +2299,7 @@ func (i *IngressDescriber) Describe(namespace, name string, describerSettings de
|
||||||
return i.describeIngress(ing, describerSettings)
|
return i.describeIngress(ing, describerSettings)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (i *IngressDescriber) describeBackend(ns string, backend *extensionsv1beta1.IngressBackend) string {
|
func (i *IngressDescriber) describeBackend(ns string, backend *networkingv1beta1.IngressBackend) string {
|
||||||
endpoints, _ := i.CoreV1().Endpoints(ns).Get(backend.ServiceName, metav1.GetOptions{})
|
endpoints, _ := i.CoreV1().Endpoints(ns).Get(backend.ServiceName, metav1.GetOptions{})
|
||||||
service, _ := i.CoreV1().Services(ns).Get(backend.ServiceName, metav1.GetOptions{})
|
service, _ := i.CoreV1().Services(ns).Get(backend.ServiceName, metav1.GetOptions{})
|
||||||
spName := ""
|
spName := ""
|
||||||
|
@ -2319,7 +2319,7 @@ func (i *IngressDescriber) describeBackend(ns string, backend *extensionsv1beta1
|
||||||
return formatEndpoints(endpoints, sets.NewString(spName))
|
return formatEndpoints(endpoints, sets.NewString(spName))
|
||||||
}
|
}
|
||||||
|
|
||||||
func (i *IngressDescriber) describeIngress(ing *extensionsv1beta1.Ingress, describerSettings describe.DescriberSettings) (string, error) {
|
func (i *IngressDescriber) describeIngress(ing *networkingv1beta1.Ingress, describerSettings describe.DescriberSettings) (string, error) {
|
||||||
return tabbedString(func(out io.Writer) error {
|
return tabbedString(func(out io.Writer) error {
|
||||||
w := NewPrefixWriter(out)
|
w := NewPrefixWriter(out)
|
||||||
w.Write(LEVEL_0, "Name:\t%v\n", ing.Name)
|
w.Write(LEVEL_0, "Name:\t%v\n", ing.Name)
|
||||||
|
@ -2330,7 +2330,7 @@ func (i *IngressDescriber) describeIngress(ing *extensionsv1beta1.Ingress, descr
|
||||||
if def == nil {
|
if def == nil {
|
||||||
// Ingresses that don't specify a default backend inherit the
|
// Ingresses that don't specify a default backend inherit the
|
||||||
// default backend in the kube-system namespace.
|
// default backend in the kube-system namespace.
|
||||||
def = &extensionsv1beta1.IngressBackend{
|
def = &networkingv1beta1.IngressBackend{
|
||||||
ServiceName: "default-http-backend",
|
ServiceName: "default-http-backend",
|
||||||
ServicePort: intstr.IntOrString{Type: intstr.Int, IntVal: 80},
|
ServicePort: intstr.IntOrString{Type: intstr.Int, IntVal: 80},
|
||||||
}
|
}
|
||||||
|
@ -2372,7 +2372,7 @@ func (i *IngressDescriber) describeIngress(ing *extensionsv1beta1.Ingress, descr
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
func describeIngressTLS(w PrefixWriter, ingTLS []extensionsv1beta1.IngressTLS) {
|
func describeIngressTLS(w PrefixWriter, ingTLS []networkingv1beta1.IngressTLS) {
|
||||||
w.Write(LEVEL_0, "TLS:\n")
|
w.Write(LEVEL_0, "TLS:\n")
|
||||||
for _, t := range ingTLS {
|
for _, t := range ingTLS {
|
||||||
if t.SecretName == "" {
|
if t.SecretName == "" {
|
||||||
|
@ -4494,7 +4494,7 @@ func extractCSRStatus(csr *certificatesv1beta1.CertificateSigningRequest) (strin
|
||||||
}
|
}
|
||||||
|
|
||||||
// backendStringer behaves just like a string interface and converts the given backend to a string.
|
// backendStringer behaves just like a string interface and converts the given backend to a string.
|
||||||
func backendStringer(backend *extensionsv1beta1.IngressBackend) string {
|
func backendStringer(backend *networkingv1beta1.IngressBackend) string {
|
||||||
if backend == nil {
|
if backend == nil {
|
||||||
return ""
|
return ""
|
||||||
}
|
}
|
||||||
|
|
|
@ -8,7 +8,7 @@ go_library(
|
||||||
deps = [
|
deps = [
|
||||||
"//staging/src/k8s.io/api/apps/v1:go_default_library",
|
"//staging/src/k8s.io/api/apps/v1:go_default_library",
|
||||||
"//staging/src/k8s.io/api/core/v1:go_default_library",
|
"//staging/src/k8s.io/api/core/v1:go_default_library",
|
||||||
"//staging/src/k8s.io/api/extensions/v1beta1:go_default_library",
|
"//staging/src/k8s.io/api/networking/v1beta1:go_default_library",
|
||||||
"//staging/src/k8s.io/apimachinery/pkg/api/errors:go_default_library",
|
"//staging/src/k8s.io/apimachinery/pkg/api/errors:go_default_library",
|
||||||
"//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
|
"//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
|
||||||
"//staging/src/k8s.io/apimachinery/pkg/labels:go_default_library",
|
"//staging/src/k8s.io/apimachinery/pkg/labels:go_default_library",
|
||||||
|
|
|
@ -39,7 +39,7 @@ import (
|
||||||
|
|
||||||
apps "k8s.io/api/apps/v1"
|
apps "k8s.io/api/apps/v1"
|
||||||
v1 "k8s.io/api/core/v1"
|
v1 "k8s.io/api/core/v1"
|
||||||
extensions "k8s.io/api/extensions/v1beta1"
|
networkingv1beta1 "k8s.io/api/networking/v1beta1"
|
||||||
apierrs "k8s.io/apimachinery/pkg/api/errors"
|
apierrs "k8s.io/apimachinery/pkg/api/errors"
|
||||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||||
"k8s.io/apimachinery/pkg/labels"
|
"k8s.io/apimachinery/pkg/labels"
|
||||||
|
@ -186,8 +186,8 @@ func CreateIngressComformanceTests(jig *TestJig, ns string, annotations map[stri
|
||||||
fmt.Sprintf("should update url map for host %v to expose a single url: %v", updateURLMapHost, updateURLMapPath),
|
fmt.Sprintf("should update url map for host %v to expose a single url: %v", updateURLMapHost, updateURLMapPath),
|
||||||
func() {
|
func() {
|
||||||
var pathToFail string
|
var pathToFail string
|
||||||
jig.Update(func(ing *extensions.Ingress) {
|
jig.Update(func(ing *networkingv1beta1.Ingress) {
|
||||||
newRules := []extensions.IngressRule{}
|
newRules := []networkingv1beta1.IngressRule{}
|
||||||
for _, rule := range ing.Spec.Rules {
|
for _, rule := range ing.Spec.Rules {
|
||||||
if rule.Host != updateURLMapHost {
|
if rule.Host != updateURLMapHost {
|
||||||
newRules = append(newRules, rule)
|
newRules = append(newRules, rule)
|
||||||
|
@ -195,11 +195,11 @@ func CreateIngressComformanceTests(jig *TestJig, ns string, annotations map[stri
|
||||||
}
|
}
|
||||||
existingPath := rule.IngressRuleValue.HTTP.Paths[0]
|
existingPath := rule.IngressRuleValue.HTTP.Paths[0]
|
||||||
pathToFail = existingPath.Path
|
pathToFail = existingPath.Path
|
||||||
newRules = append(newRules, extensions.IngressRule{
|
newRules = append(newRules, networkingv1beta1.IngressRule{
|
||||||
Host: updateURLMapHost,
|
Host: updateURLMapHost,
|
||||||
IngressRuleValue: extensions.IngressRuleValue{
|
IngressRuleValue: networkingv1beta1.IngressRuleValue{
|
||||||
HTTP: &extensions.HTTPIngressRuleValue{
|
HTTP: &networkingv1beta1.HTTPIngressRuleValue{
|
||||||
Paths: []extensions.HTTPIngressPath{
|
Paths: []networkingv1beta1.HTTPIngressPath{
|
||||||
{
|
{
|
||||||
Path: updateURLMapPath,
|
Path: updateURLMapPath,
|
||||||
Backend: existingPath.Backend,
|
Backend: existingPath.Backend,
|
||||||
|
@ -223,14 +223,14 @@ func CreateIngressComformanceTests(jig *TestJig, ns string, annotations map[stri
|
||||||
tests = append(tests, ConformanceTests{
|
tests = append(tests, ConformanceTests{
|
||||||
fmt.Sprintf("should update SSL certificate with modified hostname %v", updatedTLSHost),
|
fmt.Sprintf("should update SSL certificate with modified hostname %v", updatedTLSHost),
|
||||||
func() {
|
func() {
|
||||||
jig.Update(func(ing *extensions.Ingress) {
|
jig.Update(func(ing *networkingv1beta1.Ingress) {
|
||||||
newRules := []extensions.IngressRule{}
|
newRules := []networkingv1beta1.IngressRule{}
|
||||||
for _, rule := range ing.Spec.Rules {
|
for _, rule := range ing.Spec.Rules {
|
||||||
if rule.Host != tlsHost {
|
if rule.Host != tlsHost {
|
||||||
newRules = append(newRules, rule)
|
newRules = append(newRules, rule)
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
newRules = append(newRules, extensions.IngressRule{
|
newRules = append(newRules, networkingv1beta1.IngressRule{
|
||||||
Host: updatedTLSHost,
|
Host: updatedTLSHost,
|
||||||
IngressRuleValue: rule.IngressRuleValue,
|
IngressRuleValue: rule.IngressRuleValue,
|
||||||
})
|
})
|
||||||
|
@ -368,7 +368,7 @@ type TestJig struct {
|
||||||
|
|
||||||
RootCAs map[string][]byte
|
RootCAs map[string][]byte
|
||||||
Address string
|
Address string
|
||||||
Ingress *extensions.Ingress
|
Ingress *networkingv1beta1.Ingress
|
||||||
// class is the value of the annotation keyed under
|
// class is the value of the annotation keyed under
|
||||||
// `kubernetes.io/ingress.class`. It's added to all ingresses created by
|
// `kubernetes.io/ingress.class`. It's added to all ingresses created by
|
||||||
// this jig.
|
// this jig.
|
||||||
|
@ -436,9 +436,9 @@ func (j *TestJig) CreateIngress(manifestPath, ns string, ingAnnotations map[stri
|
||||||
}
|
}
|
||||||
|
|
||||||
// runCreate runs the required command to create the given ingress.
|
// runCreate runs the required command to create the given ingress.
|
||||||
func (j *TestJig) runCreate(ing *extensions.Ingress) (*extensions.Ingress, error) {
|
func (j *TestJig) runCreate(ing *networkingv1beta1.Ingress) (*networkingv1beta1.Ingress, error) {
|
||||||
if j.Class != MulticlusterIngressClassValue {
|
if j.Class != MulticlusterIngressClassValue {
|
||||||
return j.Client.ExtensionsV1beta1().Ingresses(ing.Namespace).Create(ing)
|
return j.Client.NetworkingV1beta1().Ingresses(ing.Namespace).Create(ing)
|
||||||
}
|
}
|
||||||
// Use kubemci to create a multicluster ingress.
|
// Use kubemci to create a multicluster ingress.
|
||||||
filePath := framework.TestContext.OutputDir + "/mci.yaml"
|
filePath := framework.TestContext.OutputDir + "/mci.yaml"
|
||||||
|
@ -450,9 +450,9 @@ func (j *TestJig) runCreate(ing *extensions.Ingress) (*extensions.Ingress, error
|
||||||
}
|
}
|
||||||
|
|
||||||
// runUpdate runs the required command to update the given ingress.
|
// runUpdate runs the required command to update the given ingress.
|
||||||
func (j *TestJig) runUpdate(ing *extensions.Ingress) (*extensions.Ingress, error) {
|
func (j *TestJig) runUpdate(ing *networkingv1beta1.Ingress) (*networkingv1beta1.Ingress, error) {
|
||||||
if j.Class != MulticlusterIngressClassValue {
|
if j.Class != MulticlusterIngressClassValue {
|
||||||
return j.Client.ExtensionsV1beta1().Ingresses(ing.Namespace).Update(ing)
|
return j.Client.NetworkingV1beta1().Ingresses(ing.Namespace).Update(ing)
|
||||||
}
|
}
|
||||||
// Use kubemci to update a multicluster ingress.
|
// Use kubemci to update a multicluster ingress.
|
||||||
// kubemci does not have an update command. We use "create --force" to update an existing ingress.
|
// kubemci does not have an update command. We use "create --force" to update an existing ingress.
|
||||||
|
@ -465,11 +465,11 @@ func (j *TestJig) runUpdate(ing *extensions.Ingress) (*extensions.Ingress, error
|
||||||
}
|
}
|
||||||
|
|
||||||
// Update retrieves the ingress, performs the passed function, and then updates it.
|
// Update retrieves the ingress, performs the passed function, and then updates it.
|
||||||
func (j *TestJig) Update(update func(ing *extensions.Ingress)) {
|
func (j *TestJig) Update(update func(ing *networkingv1beta1.Ingress)) {
|
||||||
var err error
|
var err error
|
||||||
ns, name := j.Ingress.Namespace, j.Ingress.Name
|
ns, name := j.Ingress.Namespace, j.Ingress.Name
|
||||||
for i := 0; i < 3; i++ {
|
for i := 0; i < 3; i++ {
|
||||||
j.Ingress, err = j.Client.ExtensionsV1beta1().Ingresses(ns).Get(name, metav1.GetOptions{})
|
j.Ingress, err = j.Client.NetworkingV1beta1().Ingresses(ns).Get(name, metav1.GetOptions{})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
framework.Failf("failed to get ingress %s/%s: %v", ns, name, err)
|
framework.Failf("failed to get ingress %s/%s: %v", ns, name, err)
|
||||||
}
|
}
|
||||||
|
@ -493,8 +493,8 @@ func (j *TestJig) AddHTTPS(secretName string, hosts ...string) {
|
||||||
_, cert, _, err := createTLSSecret(j.Client, j.Ingress.Namespace, secretName, hosts...)
|
_, cert, _, err := createTLSSecret(j.Client, j.Ingress.Namespace, secretName, hosts...)
|
||||||
framework.ExpectNoError(err)
|
framework.ExpectNoError(err)
|
||||||
j.Logger.Infof("Updating ingress %v to also use secret %v for TLS termination", j.Ingress.Name, secretName)
|
j.Logger.Infof("Updating ingress %v to also use secret %v for TLS termination", j.Ingress.Name, secretName)
|
||||||
j.Update(func(ing *extensions.Ingress) {
|
j.Update(func(ing *networkingv1beta1.Ingress) {
|
||||||
ing.Spec.TLS = append(ing.Spec.TLS, extensions.IngressTLS{Hosts: hosts, SecretName: secretName})
|
ing.Spec.TLS = append(ing.Spec.TLS, networkingv1beta1.IngressTLS{Hosts: hosts, SecretName: secretName})
|
||||||
})
|
})
|
||||||
j.RootCAs[secretName] = cert
|
j.RootCAs[secretName] = cert
|
||||||
}
|
}
|
||||||
|
@ -504,8 +504,8 @@ func (j *TestJig) SetHTTPS(secretName string, hosts ...string) {
|
||||||
_, cert, _, err := createTLSSecret(j.Client, j.Ingress.Namespace, secretName, hosts...)
|
_, cert, _, err := createTLSSecret(j.Client, j.Ingress.Namespace, secretName, hosts...)
|
||||||
framework.ExpectNoError(err)
|
framework.ExpectNoError(err)
|
||||||
j.Logger.Infof("Updating ingress %v to only use secret %v for TLS termination", j.Ingress.Name, secretName)
|
j.Logger.Infof("Updating ingress %v to only use secret %v for TLS termination", j.Ingress.Name, secretName)
|
||||||
j.Update(func(ing *extensions.Ingress) {
|
j.Update(func(ing *networkingv1beta1.Ingress) {
|
||||||
ing.Spec.TLS = []extensions.IngressTLS{{Hosts: hosts, SecretName: secretName}}
|
ing.Spec.TLS = []networkingv1beta1.IngressTLS{{Hosts: hosts, SecretName: secretName}}
|
||||||
})
|
})
|
||||||
j.RootCAs = map[string][]byte{secretName: cert}
|
j.RootCAs = map[string][]byte{secretName: cert}
|
||||||
}
|
}
|
||||||
|
@ -513,14 +513,14 @@ func (j *TestJig) SetHTTPS(secretName string, hosts ...string) {
|
||||||
// RemoveHTTPS updates the ingress to not use this secret for TLS.
|
// RemoveHTTPS updates the ingress to not use this secret for TLS.
|
||||||
// Note: Does not delete the secret.
|
// Note: Does not delete the secret.
|
||||||
func (j *TestJig) RemoveHTTPS(secretName string) {
|
func (j *TestJig) RemoveHTTPS(secretName string) {
|
||||||
newTLS := []extensions.IngressTLS{}
|
newTLS := []networkingv1beta1.IngressTLS{}
|
||||||
for _, ingressTLS := range j.Ingress.Spec.TLS {
|
for _, ingressTLS := range j.Ingress.Spec.TLS {
|
||||||
if secretName != ingressTLS.SecretName {
|
if secretName != ingressTLS.SecretName {
|
||||||
newTLS = append(newTLS, ingressTLS)
|
newTLS = append(newTLS, ingressTLS)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
j.Logger.Infof("Updating ingress %v to not use secret %v for TLS termination", j.Ingress.Name, secretName)
|
j.Logger.Infof("Updating ingress %v to not use secret %v for TLS termination", j.Ingress.Name, secretName)
|
||||||
j.Update(func(ing *extensions.Ingress) {
|
j.Update(func(ing *networkingv1beta1.Ingress) {
|
||||||
ing.Spec.TLS = newTLS
|
ing.Spec.TLS = newTLS
|
||||||
})
|
})
|
||||||
delete(j.RootCAs, secretName)
|
delete(j.RootCAs, secretName)
|
||||||
|
@ -551,16 +551,16 @@ func (j *TestJig) TryDeleteIngress() {
|
||||||
j.tryDeleteGivenIngress(j.Ingress)
|
j.tryDeleteGivenIngress(j.Ingress)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (j *TestJig) tryDeleteGivenIngress(ing *extensions.Ingress) {
|
func (j *TestJig) tryDeleteGivenIngress(ing *networkingv1beta1.Ingress) {
|
||||||
if err := j.runDelete(ing); err != nil {
|
if err := j.runDelete(ing); err != nil {
|
||||||
j.Logger.Infof("Error while deleting the ingress %v/%v with class %s: %v", ing.Namespace, ing.Name, j.Class, err)
|
j.Logger.Infof("Error while deleting the ingress %v/%v with class %s: %v", ing.Namespace, ing.Name, j.Class, err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// runDelete runs the required command to delete the given ingress.
|
// runDelete runs the required command to delete the given ingress.
|
||||||
func (j *TestJig) runDelete(ing *extensions.Ingress) error {
|
func (j *TestJig) runDelete(ing *networkingv1beta1.Ingress) error {
|
||||||
if j.Class != MulticlusterIngressClassValue {
|
if j.Class != MulticlusterIngressClassValue {
|
||||||
return j.Client.ExtensionsV1beta1().Ingresses(ing.Namespace).Delete(ing.Name, nil)
|
return j.Client.NetworkingV1beta1().Ingresses(ing.Namespace).Delete(ing.Name, nil)
|
||||||
}
|
}
|
||||||
// Use kubemci to delete a multicluster ingress.
|
// Use kubemci to delete a multicluster ingress.
|
||||||
filePath := framework.TestContext.OutputDir + "/mci.yaml"
|
filePath := framework.TestContext.OutputDir + "/mci.yaml"
|
||||||
|
@ -600,7 +600,7 @@ func getIngressAddress(client clientset.Interface, ns, name, class string) ([]st
|
||||||
if class == MulticlusterIngressClassValue {
|
if class == MulticlusterIngressClassValue {
|
||||||
return getIngressAddressFromKubemci(name)
|
return getIngressAddressFromKubemci(name)
|
||||||
}
|
}
|
||||||
ing, err := client.ExtensionsV1beta1().Ingresses(ns).Get(name, metav1.GetOptions{})
|
ing, err := client.NetworkingV1beta1().Ingresses(ns).Get(name, metav1.GetOptions{})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
@ -635,7 +635,7 @@ func (j *TestJig) WaitForIngressAddress(c clientset.Interface, ns, ingName strin
|
||||||
return address, err
|
return address, err
|
||||||
}
|
}
|
||||||
|
|
||||||
func (j *TestJig) pollIngressWithCert(ing *extensions.Ingress, address string, knownHosts []string, cert []byte, waitForNodePort bool, timeout time.Duration) error {
|
func (j *TestJig) pollIngressWithCert(ing *networkingv1beta1.Ingress, address string, knownHosts []string, cert []byte, waitForNodePort bool, timeout time.Duration) error {
|
||||||
// Check that all rules respond to a simple GET.
|
// Check that all rules respond to a simple GET.
|
||||||
knownHostsSet := sets.NewString(knownHosts...)
|
knownHostsSet := sets.NewString(knownHosts...)
|
||||||
for _, rules := range ing.Spec.Rules {
|
for _, rules := range ing.Spec.Rules {
|
||||||
|
@ -695,7 +695,7 @@ func (j *TestJig) WaitForIngressToStable() {
|
||||||
// http or https). If waitForNodePort is true, the NodePort of the Service
|
// http or https). If waitForNodePort is true, the NodePort of the Service
|
||||||
// is verified before verifying the Ingress. NodePort is currently a
|
// is verified before verifying the Ingress. NodePort is currently a
|
||||||
// requirement for cloudprovider Ingress.
|
// requirement for cloudprovider Ingress.
|
||||||
func (j *TestJig) WaitForGivenIngressWithTimeout(ing *extensions.Ingress, waitForNodePort bool, timeout time.Duration) error {
|
func (j *TestJig) WaitForGivenIngressWithTimeout(ing *networkingv1beta1.Ingress, waitForNodePort bool, timeout time.Duration) error {
|
||||||
// Wait for the loadbalancer IP.
|
// Wait for the loadbalancer IP.
|
||||||
address, err := j.WaitForIngressAddress(j.Client, ing.Namespace, ing.Name, timeout)
|
address, err := j.WaitForIngressAddress(j.Client, ing.Namespace, ing.Name, timeout)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -864,15 +864,15 @@ func (cont *NginxIngressController) Init() {
|
||||||
framework.Logf("ingress controller running in pod %v on ip %v", cont.pod.Name, cont.externalIP)
|
framework.Logf("ingress controller running in pod %v on ip %v", cont.pod.Name, cont.externalIP)
|
||||||
}
|
}
|
||||||
|
|
||||||
func generateBacksideHTTPSIngressSpec(ns string) *extensions.Ingress {
|
func generateBacksideHTTPSIngressSpec(ns string) *networkingv1beta1.Ingress {
|
||||||
return &extensions.Ingress{
|
return &networkingv1beta1.Ingress{
|
||||||
ObjectMeta: metav1.ObjectMeta{
|
ObjectMeta: metav1.ObjectMeta{
|
||||||
Name: "echoheaders-https",
|
Name: "echoheaders-https",
|
||||||
Namespace: ns,
|
Namespace: ns,
|
||||||
},
|
},
|
||||||
Spec: extensions.IngressSpec{
|
Spec: networkingv1beta1.IngressSpec{
|
||||||
// Note kubemci requires a default backend.
|
// Note kubemci requires a default backend.
|
||||||
Backend: &extensions.IngressBackend{
|
Backend: &networkingv1beta1.IngressBackend{
|
||||||
ServiceName: "echoheaders-https",
|
ServiceName: "echoheaders-https",
|
||||||
ServicePort: intstr.IntOrString{
|
ServicePort: intstr.IntOrString{
|
||||||
Type: intstr.Int,
|
Type: intstr.Int,
|
||||||
|
@ -939,7 +939,7 @@ func generateBacksideHTTPSDeploymentSpec() *apps.Deployment {
|
||||||
}
|
}
|
||||||
|
|
||||||
// SetUpBacksideHTTPSIngress sets up deployment, service and ingress with backside HTTPS configured.
|
// SetUpBacksideHTTPSIngress sets up deployment, service and ingress with backside HTTPS configured.
|
||||||
func (j *TestJig) SetUpBacksideHTTPSIngress(cs clientset.Interface, namespace string, staticIPName string) (*apps.Deployment, *v1.Service, *extensions.Ingress, error) {
|
func (j *TestJig) SetUpBacksideHTTPSIngress(cs clientset.Interface, namespace string, staticIPName string) (*apps.Deployment, *v1.Service, *networkingv1beta1.Ingress, error) {
|
||||||
deployCreated, err := cs.AppsV1().Deployments(namespace).Create(generateBacksideHTTPSDeploymentSpec())
|
deployCreated, err := cs.AppsV1().Deployments(namespace).Create(generateBacksideHTTPSDeploymentSpec())
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, nil, nil, err
|
return nil, nil, nil, err
|
||||||
|
@ -963,7 +963,7 @@ func (j *TestJig) SetUpBacksideHTTPSIngress(cs clientset.Interface, namespace st
|
||||||
}
|
}
|
||||||
|
|
||||||
// DeleteTestResource deletes given deployment, service and ingress.
|
// DeleteTestResource deletes given deployment, service and ingress.
|
||||||
func (j *TestJig) DeleteTestResource(cs clientset.Interface, deploy *apps.Deployment, svc *v1.Service, ing *extensions.Ingress) []error {
|
func (j *TestJig) DeleteTestResource(cs clientset.Interface, deploy *apps.Deployment, svc *v1.Service, ing *networkingv1beta1.Ingress) []error {
|
||||||
var errs []error
|
var errs []error
|
||||||
if ing != nil {
|
if ing != nil {
|
||||||
if err := j.runDelete(ing); err != nil {
|
if err := j.runDelete(ing); err != nil {
|
||||||
|
|
|
@ -13,7 +13,7 @@ go_library(
|
||||||
deps = [
|
deps = [
|
||||||
"//staging/src/k8s.io/api/apps/v1:go_default_library",
|
"//staging/src/k8s.io/api/apps/v1:go_default_library",
|
||||||
"//staging/src/k8s.io/api/core/v1:go_default_library",
|
"//staging/src/k8s.io/api/core/v1:go_default_library",
|
||||||
"//staging/src/k8s.io/api/extensions/v1beta1:go_default_library",
|
"//staging/src/k8s.io/api/networking/v1beta1:go_default_library",
|
||||||
"//staging/src/k8s.io/api/rbac/v1:go_default_library",
|
"//staging/src/k8s.io/api/rbac/v1:go_default_library",
|
||||||
"//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
|
"//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
|
||||||
"//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library",
|
"//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library",
|
||||||
|
@ -41,5 +41,5 @@ go_test(
|
||||||
name = "go_default_test",
|
name = "go_default_test",
|
||||||
srcs = ["manifest_test.go"],
|
srcs = ["manifest_test.go"],
|
||||||
embed = [":go_default_library"],
|
embed = [":go_default_library"],
|
||||||
deps = ["//staging/src/k8s.io/api/extensions/v1beta1:go_default_library"],
|
deps = ["//staging/src/k8s.io/api/networking/v1beta1:go_default_library"],
|
||||||
)
|
)
|
||||||
|
|
|
@ -22,7 +22,7 @@ import (
|
||||||
|
|
||||||
apps "k8s.io/api/apps/v1"
|
apps "k8s.io/api/apps/v1"
|
||||||
"k8s.io/api/core/v1"
|
"k8s.io/api/core/v1"
|
||||||
extensions "k8s.io/api/extensions/v1beta1"
|
networkingv1beta1 "k8s.io/api/networking/v1beta1"
|
||||||
rbac "k8s.io/api/rbac/v1"
|
rbac "k8s.io/api/rbac/v1"
|
||||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||||
"k8s.io/apimachinery/pkg/runtime"
|
"k8s.io/apimachinery/pkg/runtime"
|
||||||
|
@ -87,8 +87,8 @@ func SvcFromManifest(fileName string) (*v1.Service, error) {
|
||||||
}
|
}
|
||||||
|
|
||||||
// IngressFromManifest reads a .json/yaml file and returns the ingress in it.
|
// IngressFromManifest reads a .json/yaml file and returns the ingress in it.
|
||||||
func IngressFromManifest(fileName string) (*extensions.Ingress, error) {
|
func IngressFromManifest(fileName string) (*networkingv1beta1.Ingress, error) {
|
||||||
var ing extensions.Ingress
|
var ing networkingv1beta1.Ingress
|
||||||
data, err := testfiles.Read(fileName)
|
data, err := testfiles.Read(fileName)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
|
@ -106,8 +106,8 @@ func IngressFromManifest(fileName string) (*extensions.Ingress, error) {
|
||||||
|
|
||||||
// IngressToManifest generates a yaml file in the given path with the given ingress.
|
// IngressToManifest generates a yaml file in the given path with the given ingress.
|
||||||
// Assumes that a directory exists at the given path.
|
// Assumes that a directory exists at the given path.
|
||||||
func IngressToManifest(ing *extensions.Ingress, path string) error {
|
func IngressToManifest(ing *networkingv1beta1.Ingress, path string) error {
|
||||||
serialized, err := marshalToYaml(ing, extensions.SchemeGroupVersion)
|
serialized, err := marshalToYaml(ing, networkingv1beta1.SchemeGroupVersion)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("failed to marshal ingress %v to YAML: %v", ing, err)
|
return fmt.Errorf("failed to marshal ingress %v to YAML: %v", ing, err)
|
||||||
}
|
}
|
||||||
|
|
|
@ -22,11 +22,11 @@ import (
|
||||||
"path/filepath"
|
"path/filepath"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
extensions "k8s.io/api/extensions/v1beta1"
|
networkingv1beta1 "k8s.io/api/networking/v1beta1"
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestIngressToManifest(t *testing.T) {
|
func TestIngressToManifest(t *testing.T) {
|
||||||
ing := &extensions.Ingress{}
|
ing := &networkingv1beta1.Ingress{}
|
||||||
// Create a temp dir.
|
// Create a temp dir.
|
||||||
tmpDir, err := ioutil.TempDir("", "kubemci")
|
tmpDir, err := ioutil.TempDir("", "kubemci")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|
|
@ -170,7 +170,7 @@ var _ = SIGDescribe("Loadbalancing: L7", func() {
|
||||||
|
|
||||||
By(fmt.Sprintf("waiting for Ingress %s to get instance group annotation", name))
|
By(fmt.Sprintf("waiting for Ingress %s to get instance group annotation", name))
|
||||||
pollErr := wait.Poll(2*time.Second, framework.LoadBalancerPollTimeout, func() (bool, error) {
|
pollErr := wait.Poll(2*time.Second, framework.LoadBalancerPollTimeout, func() (bool, error) {
|
||||||
ing, err := f.ClientSet.ExtensionsV1beta1().Ingresses(ns).Get(name, metav1.GetOptions{})
|
ing, err := f.ClientSet.NetworkingV1beta1().Ingresses(ns).Get(name, metav1.GetOptions{})
|
||||||
framework.ExpectNoError(err)
|
framework.ExpectNoError(err)
|
||||||
annotations := ing.Annotations
|
annotations := ing.Annotations
|
||||||
if annotations == nil || annotations[instanceGroupAnnotation] == "" {
|
if annotations == nil || annotations[instanceGroupAnnotation] == "" {
|
||||||
|
@ -193,7 +193,7 @@ var _ = SIGDescribe("Loadbalancing: L7", func() {
|
||||||
scKey := ingress.StatusPrefix + "/ssl-cert"
|
scKey := ingress.StatusPrefix + "/ssl-cert"
|
||||||
beKey := ingress.StatusPrefix + "/backends"
|
beKey := ingress.StatusPrefix + "/backends"
|
||||||
wait.Poll(2*time.Second, time.Minute, func() (bool, error) {
|
wait.Poll(2*time.Second, time.Minute, func() (bool, error) {
|
||||||
ing, err := f.ClientSet.ExtensionsV1beta1().Ingresses(ns).Get(name, metav1.GetOptions{})
|
ing, err := f.ClientSet.NetworkingV1beta1().Ingresses(ns).Get(name, metav1.GetOptions{})
|
||||||
framework.ExpectNoError(err)
|
framework.ExpectNoError(err)
|
||||||
annotations := ing.Annotations
|
annotations := ing.Annotations
|
||||||
if annotations != nil && (annotations[umKey] != "" || annotations[fwKey] != "" ||
|
if annotations != nil && (annotations[umKey] != "" || annotations[fwKey] != "" ||
|
||||||
|
|
|
@ -8,7 +8,7 @@ go_library(
|
||||||
deps = [
|
deps = [
|
||||||
"//staging/src/k8s.io/api/apps/v1:go_default_library",
|
"//staging/src/k8s.io/api/apps/v1:go_default_library",
|
||||||
"//staging/src/k8s.io/api/core/v1:go_default_library",
|
"//staging/src/k8s.io/api/core/v1:go_default_library",
|
||||||
"//staging/src/k8s.io/api/extensions/v1beta1:go_default_library",
|
"//staging/src/k8s.io/api/networking/v1beta1:go_default_library",
|
||||||
"//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
|
"//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
|
||||||
"//staging/src/k8s.io/apimachinery/pkg/util/intstr:go_default_library",
|
"//staging/src/k8s.io/apimachinery/pkg/util/intstr:go_default_library",
|
||||||
"//staging/src/k8s.io/client-go/kubernetes:go_default_library",
|
"//staging/src/k8s.io/client-go/kubernetes:go_default_library",
|
||||||
|
|
|
@ -24,7 +24,7 @@ import (
|
||||||
|
|
||||||
apps "k8s.io/api/apps/v1"
|
apps "k8s.io/api/apps/v1"
|
||||||
"k8s.io/api/core/v1"
|
"k8s.io/api/core/v1"
|
||||||
extensions "k8s.io/api/extensions/v1beta1"
|
networkingv1beta1 "k8s.io/api/networking/v1beta1"
|
||||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||||
"k8s.io/apimachinery/pkg/util/intstr"
|
"k8s.io/apimachinery/pkg/util/intstr"
|
||||||
clientset "k8s.io/client-go/kubernetes"
|
clientset "k8s.io/client-go/kubernetes"
|
||||||
|
@ -74,7 +74,7 @@ type IngressScaleFramework struct {
|
||||||
|
|
||||||
ScaleTestDeploy *apps.Deployment
|
ScaleTestDeploy *apps.Deployment
|
||||||
ScaleTestSvcs []*v1.Service
|
ScaleTestSvcs []*v1.Service
|
||||||
ScaleTestIngs []*extensions.Ingress
|
ScaleTestIngs []*networkingv1beta1.Ingress
|
||||||
|
|
||||||
// BatchCreateLatencies stores all ingress creation latencies, in different
|
// BatchCreateLatencies stores all ingress creation latencies, in different
|
||||||
// batches.
|
// batches.
|
||||||
|
@ -121,7 +121,7 @@ func (f *IngressScaleFramework) PrepareScaleTest() error {
|
||||||
}
|
}
|
||||||
|
|
||||||
f.ScaleTestSvcs = []*v1.Service{}
|
f.ScaleTestSvcs = []*v1.Service{}
|
||||||
f.ScaleTestIngs = []*extensions.Ingress{}
|
f.ScaleTestIngs = []*networkingv1beta1.Ingress{}
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
@ -133,7 +133,7 @@ func (f *IngressScaleFramework) CleanupScaleTest() []error {
|
||||||
f.Logger.Infof("Cleaning up ingresses...")
|
f.Logger.Infof("Cleaning up ingresses...")
|
||||||
for _, ing := range f.ScaleTestIngs {
|
for _, ing := range f.ScaleTestIngs {
|
||||||
if ing != nil {
|
if ing != nil {
|
||||||
if err := f.Clientset.ExtensionsV1beta1().Ingresses(ing.Namespace).Delete(ing.Name, nil); err != nil {
|
if err := f.Clientset.NetworkingV1beta1().Ingresses(ing.Namespace).Delete(ing.Name, nil); err != nil {
|
||||||
errs = append(errs, fmt.Errorf("Error while deleting ingress %s/%s: %v", ing.Namespace, ing.Name, err))
|
errs = append(errs, fmt.Errorf("Error while deleting ingress %s/%s: %v", ing.Namespace, ing.Name, err))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -190,7 +190,7 @@ func (f *IngressScaleFramework) RunScaleTest() []error {
|
||||||
numIngsToCreate := numIngsNeeded - numIngsCreated
|
numIngsToCreate := numIngsNeeded - numIngsCreated
|
||||||
ingWg.Add(numIngsToCreate)
|
ingWg.Add(numIngsToCreate)
|
||||||
svcQueue := make(chan *v1.Service, numIngsToCreate)
|
svcQueue := make(chan *v1.Service, numIngsToCreate)
|
||||||
ingQueue := make(chan *extensions.Ingress, numIngsToCreate)
|
ingQueue := make(chan *networkingv1beta1.Ingress, numIngsToCreate)
|
||||||
errQueue := make(chan error, numIngsToCreate)
|
errQueue := make(chan error, numIngsToCreate)
|
||||||
latencyQueue := make(chan time.Duration, numIngsToCreate)
|
latencyQueue := make(chan time.Duration, numIngsToCreate)
|
||||||
start := time.Now()
|
start := time.Now()
|
||||||
|
@ -270,14 +270,14 @@ func (f *IngressScaleFramework) RunScaleTest() []error {
|
||||||
f.StepCreateLatencies = append(f.StepCreateLatencies, elapsed)
|
f.StepCreateLatencies = append(f.StepCreateLatencies, elapsed)
|
||||||
|
|
||||||
f.Logger.Infof("Updating ingress and wait for change to take effect")
|
f.Logger.Infof("Updating ingress and wait for change to take effect")
|
||||||
ingToUpdate, err := f.Clientset.ExtensionsV1beta1().Ingresses(f.Namespace).Get(ingCreated.Name, metav1.GetOptions{})
|
ingToUpdate, err := f.Clientset.NetworkingV1beta1().Ingresses(f.Namespace).Get(ingCreated.Name, metav1.GetOptions{})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
errs = append(errs, err)
|
errs = append(errs, err)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
addTestPathToIngress(ingToUpdate)
|
addTestPathToIngress(ingToUpdate)
|
||||||
start = time.Now()
|
start = time.Now()
|
||||||
ingToUpdate, err = f.Clientset.ExtensionsV1beta1().Ingresses(f.Namespace).Update(ingToUpdate)
|
ingToUpdate, err = f.Clientset.NetworkingV1beta1().Ingresses(f.Namespace).Update(ingToUpdate)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
errs = append(errs, err)
|
errs = append(errs, err)
|
||||||
return
|
return
|
||||||
|
@ -357,45 +357,45 @@ func (f *IngressScaleFramework) GetFormattedLatencies() string {
|
||||||
return res
|
return res
|
||||||
}
|
}
|
||||||
|
|
||||||
func addTestPathToIngress(ing *extensions.Ingress) {
|
func addTestPathToIngress(ing *networkingv1beta1.Ingress) {
|
||||||
ing.Spec.Rules[0].IngressRuleValue.HTTP.Paths = append(
|
ing.Spec.Rules[0].IngressRuleValue.HTTP.Paths = append(
|
||||||
ing.Spec.Rules[0].IngressRuleValue.HTTP.Paths,
|
ing.Spec.Rules[0].IngressRuleValue.HTTP.Paths,
|
||||||
extensions.HTTPIngressPath{
|
networkingv1beta1.HTTPIngressPath{
|
||||||
Path: "/test",
|
Path: "/test",
|
||||||
Backend: ing.Spec.Rules[0].IngressRuleValue.HTTP.Paths[0].Backend,
|
Backend: ing.Spec.Rules[0].IngressRuleValue.HTTP.Paths[0].Backend,
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
func (f *IngressScaleFramework) createScaleTestServiceIngress(suffix string, enableTLS bool) (*v1.Service, *extensions.Ingress, error) {
|
func (f *IngressScaleFramework) createScaleTestServiceIngress(suffix string, enableTLS bool) (*v1.Service, *networkingv1beta1.Ingress, error) {
|
||||||
svcCreated, err := f.Clientset.CoreV1().Services(f.Namespace).Create(generateScaleTestServiceSpec(suffix))
|
svcCreated, err := f.Clientset.CoreV1().Services(f.Namespace).Create(generateScaleTestServiceSpec(suffix))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, nil, err
|
return nil, nil, err
|
||||||
}
|
}
|
||||||
ingCreated, err := f.Clientset.ExtensionsV1beta1().Ingresses(f.Namespace).Create(generateScaleTestIngressSpec(suffix, enableTLS))
|
ingCreated, err := f.Clientset.NetworkingV1beta1().Ingresses(f.Namespace).Create(generateScaleTestIngressSpec(suffix, enableTLS))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, nil, err
|
return nil, nil, err
|
||||||
}
|
}
|
||||||
return svcCreated, ingCreated, nil
|
return svcCreated, ingCreated, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func generateScaleTestIngressSpec(suffix string, enableTLS bool) *extensions.Ingress {
|
func generateScaleTestIngressSpec(suffix string, enableTLS bool) *networkingv1beta1.Ingress {
|
||||||
ing := &extensions.Ingress{
|
ing := &networkingv1beta1.Ingress{
|
||||||
ObjectMeta: metav1.ObjectMeta{
|
ObjectMeta: metav1.ObjectMeta{
|
||||||
Name: fmt.Sprintf("%s-%s", scaleTestIngressNamePrefix, suffix),
|
Name: fmt.Sprintf("%s-%s", scaleTestIngressNamePrefix, suffix),
|
||||||
},
|
},
|
||||||
Spec: extensions.IngressSpec{
|
Spec: networkingv1beta1.IngressSpec{
|
||||||
TLS: []extensions.IngressTLS{
|
TLS: []networkingv1beta1.IngressTLS{
|
||||||
{SecretName: scaleTestSecretName},
|
{SecretName: scaleTestSecretName},
|
||||||
},
|
},
|
||||||
Rules: []extensions.IngressRule{
|
Rules: []networkingv1beta1.IngressRule{
|
||||||
{
|
{
|
||||||
Host: scaleTestHostname,
|
Host: scaleTestHostname,
|
||||||
IngressRuleValue: extensions.IngressRuleValue{
|
IngressRuleValue: networkingv1beta1.IngressRuleValue{
|
||||||
HTTP: &extensions.HTTPIngressRuleValue{
|
HTTP: &networkingv1beta1.HTTPIngressRuleValue{
|
||||||
Paths: []extensions.HTTPIngressPath{
|
Paths: []networkingv1beta1.HTTPIngressPath{
|
||||||
{
|
{
|
||||||
Path: "/scale",
|
Path: "/scale",
|
||||||
Backend: extensions.IngressBackend{
|
Backend: networkingv1beta1.IngressBackend{
|
||||||
ServiceName: fmt.Sprintf("%s-%s", scaleTestBackendName, suffix),
|
ServiceName: fmt.Sprintf("%s-%s", scaleTestBackendName, suffix),
|
||||||
ServicePort: intstr.IntOrString{
|
ServicePort: intstr.IntOrString{
|
||||||
Type: intstr.Int,
|
Type: intstr.Int,
|
||||||
|
@ -411,7 +411,7 @@ func generateScaleTestIngressSpec(suffix string, enableTLS bool) *extensions.Ing
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
if enableTLS {
|
if enableTLS {
|
||||||
ing.Spec.TLS = []extensions.IngressTLS{
|
ing.Spec.TLS = []networkingv1beta1.IngressTLS{
|
||||||
{SecretName: scaleTestSecretName},
|
{SecretName: scaleTestSecretName},
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue