kubernetes: k8s.io/kubernetes/test/e2e/framework/ingress Index | Files

package ingress

import "k8s.io/kubernetes/test/e2e/framework/ingress"

Index

Package Files

ingress_utils.go

Constants

const (

    // IngressClassKey is ingress class annotation defined in ingress repository.
    // TODO: All these annotations should be reused from
    // ingress-gce/pkg/annotations instead of duplicating them here.
    IngressClassKey = "kubernetes.io/ingress.class"

    // MulticlusterIngressClassValue is ingress class annotation value for multi cluster ingress.
    MulticlusterIngressClassValue = "gce-multi-cluster"

    // IngressStaticIPKey is static IP annotation defined in ingress repository.
    IngressStaticIPKey = "kubernetes.io/ingress.global-static-ip-name"

    // IngressAllowHTTPKey is Allow HTTP annotation defined in ingress repository.
    IngressAllowHTTPKey = "kubernetes.io/ingress.allow-http"

    // IngressPreSharedCertKey is Pre-shared-cert annotation defined in ingress repository.
    IngressPreSharedCertKey = "ingress.gcp.kubernetes.io/pre-shared-cert"

    // ServiceApplicationProtocolKey annotation defined in ingress repository.
    ServiceApplicationProtocolKey = "service.alpha.kubernetes.io/app-protocols"

    // IngressManifestPath is the parent path to yaml test manifests.
    IngressManifestPath = "test/e2e/testing-manifests/ingress"

    // GCEIngressManifestPath is the parent path to GCE-specific yaml test manifests.
    GCEIngressManifestPath = IngressManifestPath + "/gce"

    // IngressReqTimeout is the timeout on a single http request.
    IngressReqTimeout = 10 * time.Second

    // NEGAnnotation is NEG annotation.
    NEGAnnotation = "cloud.google.com/neg"

    // NEGStatusAnnotation is NEG status annotation.
    NEGStatusAnnotation = "cloud.google.com/neg-status"

    // StatusPrefix is prefix for annotation keys used by the ingress controller to specify the
    // names of GCP resources such as forwarding rules, url maps, target proxies, etc
    // that it created for the corresponding ingress.
    StatusPrefix = "ingress.kubernetes.io"
)

func BuildInsecureClient Uses

func BuildInsecureClient(timeout time.Duration) *http.Client

BuildInsecureClient returns an insecure http client. Can be used for "curl -k".

func GenerateRSACerts Uses

func GenerateRSACerts(host string, isCA bool) ([]byte, []byte, error)

GenerateRSACerts generates a basic self signed certificate using a key length of rsaBits, valid for validFor time.

func PollURL Uses

func PollURL(route, host string, timeout time.Duration, interval time.Duration, httpClient *http.Client, expectUnreachable bool) error

PollURL polls till the url responds with a healthy http code. If expectUnreachable is true, it breaks on first non-healthy http code instead.

func SimpleGET Uses

func SimpleGET(c *http.Client, url, host string) (string, error)

SimpleGET executes a get on the given url, returns error if non-200 returned.

type ConformanceTests Uses

type ConformanceTests struct {
    EntryLog string
    Execute  func()
    ExitLog  string
}

ConformanceTests contains a closure with an entry and exit log line.

func CreateIngressComformanceTests Uses

func CreateIngressComformanceTests(jig *TestJig, ns string, annotations map[string]string) []ConformanceTests

CreateIngressComformanceTests generates an slice of sequential test cases: a simple http ingress, ingress with HTTPS, ingress HTTPS with a modified hostname, ingress https with a modified URLMap

type E2ELogger Uses

type E2ELogger struct{}

E2ELogger is test logger.

func (*E2ELogger) Errorf Uses

func (l *E2ELogger) Errorf(format string, args ...interface{})

Errorf outputs log.

func (*E2ELogger) Infof Uses

func (l *E2ELogger) Infof(format string, args ...interface{})

Infof outputs log.

type GLogger Uses

type GLogger struct{}

GLogger is test logger.

func (*GLogger) Errorf Uses

func (l *GLogger) Errorf(format string, args ...interface{})

Errorf outputs log with error level.

func (*GLogger) Infof Uses

func (l *GLogger) Infof(format string, args ...interface{})

Infof outputs log with info level.

type NegStatus Uses

type NegStatus struct {
    // NetworkEndpointGroups returns the mapping between service port and NEG
    // resource. key is service port, value is the name of the NEG resource.
    NetworkEndpointGroups map[int32]string `json:"network_endpoint_groups,omitempty"`
    Zones                 []string         `json:"zones,omitempty"`
}

NegStatus contains name and zone of the Network Endpoint Group resources associated with this service. Needs to be consistent with the NEG internal structs in ingress-gce.

type NginxIngressController Uses

type NginxIngressController struct {
    Ns  string

    Client clientset.Interface
    // contains filtered or unexported fields
}

NginxIngressController manages implementation details of Ingress on Nginx.

func (*NginxIngressController) Init Uses

func (cont *NginxIngressController) Init()

Init initializes the NginxIngressController

func (*NginxIngressController) TearDown Uses

func (cont *NginxIngressController) TearDown()

TearDown cleans up the NginxIngressController.

type TestJig Uses

type TestJig struct {
    Client clientset.Interface
    Logger TestLogger

    RootCAs map[string][]byte
    Address string
    Ingress *networkingv1beta1.Ingress
    // class is the value of the annotation keyed under
    // `kubernetes.io/ingress.class`. It's added to all ingresses created by
    // this jig.
    Class string

    // The interval used to poll urls
    PollInterval time.Duration
}

TestJig holds the relevant state and parameters of the ingress test.

func NewIngressTestJig Uses

func NewIngressTestJig(c clientset.Interface) *TestJig

NewIngressTestJig instantiates struct with client

func (*TestJig) AddHTTPS Uses

func (j *TestJig) AddHTTPS(secretName string, hosts ...string)

AddHTTPS updates the ingress to add this secret for these hosts.

func (*TestJig) ConstructFirewallForIngress Uses

func (j *TestJig) ConstructFirewallForIngress(firewallRuleName string, nodeTags []string) *compute.Firewall

ConstructFirewallForIngress returns the expected GCE firewall rule for the ingress resource

func (*TestJig) CreateIngress Uses

func (j *TestJig) CreateIngress(manifestPath, ns string, ingAnnotations map[string]string, svcAnnotations map[string]string)

CreateIngress creates the Ingress and associated service/rc. Required: ing.yaml, rc.yaml, svc.yaml must exist in manifestPath Optional: secret.yaml, ingAnnotations If ingAnnotations is specified it will overwrite any annotations in ing.yaml If svcAnnotations is specified it will overwrite any annotations in svc.yaml

func (*TestJig) DeleteTestResource Uses

func (j *TestJig) DeleteTestResource(cs clientset.Interface, deploy *appsv1.Deployment, svc *v1.Service, ing *networkingv1beta1.Ingress) []error

DeleteTestResource deletes given deployment, service and ingress.

func (*TestJig) GetDistinctResponseFromIngress Uses

func (j *TestJig) GetDistinctResponseFromIngress() (sets.String, error)

GetDistinctResponseFromIngress tries GET call to the ingress VIP and return all distinct responses.

func (*TestJig) GetIngressNodePorts Uses

func (j *TestJig) GetIngressNodePorts(includeDefaultBackend bool) []string

GetIngressNodePorts returns related backend services' nodePorts. Current GCE ingress controller allows traffic to the default HTTP backend by default, so retrieve its nodePort if includeDefaultBackend is true.

func (*TestJig) GetRootCA Uses

func (j *TestJig) GetRootCA(secretName string) (rootCA []byte)

GetRootCA returns a rootCA from the ingress test jig.

func (*TestJig) GetServicePorts Uses

func (j *TestJig) GetServicePorts(includeDefaultBackend bool) map[string]v1.ServicePort

GetServicePorts returns related backend services' svcPorts. Current GCE ingress controller allows traffic to the default HTTP backend by default, so retrieve its nodePort if includeDefaultBackend is true.

func (*TestJig) PrepareTLSSecret Uses

func (j *TestJig) PrepareTLSSecret(namespace, secretName string, hosts ...string) error

PrepareTLSSecret creates a TLS secret and caches the cert.

func (*TestJig) RemoveHTTPS Uses

func (j *TestJig) RemoveHTTPS(secretName string)

RemoveHTTPS updates the ingress to not use this secret for TLS. Note: Does not delete the secret.

func (*TestJig) SetHTTPS Uses

func (j *TestJig) SetHTTPS(secretName string, hosts ...string)

SetHTTPS updates the ingress to use only this secret for these hosts.

func (*TestJig) SetUpBacksideHTTPSIngress Uses

func (j *TestJig) SetUpBacksideHTTPSIngress(cs clientset.Interface, namespace string, staticIPName string) (*appsv1.Deployment, *v1.Service, *networkingv1beta1.Ingress, error)

SetUpBacksideHTTPSIngress sets up deployment, service and ingress with backside HTTPS configured.

func (*TestJig) TryDeleteIngress Uses

func (j *TestJig) TryDeleteIngress()

TryDeleteIngress attempts to delete the ingress resource and logs errors if they occur.

func (*TestJig) Update Uses

func (j *TestJig) Update(update func(ing *networkingv1beta1.Ingress))

Update retrieves the ingress, performs the passed function, and then updates it.

func (*TestJig) VerifyURL Uses

func (j *TestJig) VerifyURL(route, host string, iterations int, interval time.Duration, httpClient *http.Client) error

VerifyURL polls for the given iterations, in intervals, and fails if the given url returns a non-healthy http code even once.

func (*TestJig) WaitForGivenIngressWithTimeout Uses

func (j *TestJig) WaitForGivenIngressWithTimeout(ing *networkingv1beta1.Ingress, waitForNodePort bool, timeout time.Duration) error

WaitForGivenIngressWithTimeout waits till the ingress acquires an IP, then waits for its hosts/urls to respond to a protocol check (either http or https). If waitForNodePort is true, the NodePort of the Service is verified before verifying the Ingress. NodePort is currently a requirement for cloudprovider Ingress.

func (*TestJig) WaitForIngress Uses

func (j *TestJig) WaitForIngress(waitForNodePort bool)

WaitForIngress waits for the Ingress to get an address. WaitForIngress returns when it gets the first 200 response

func (*TestJig) WaitForIngressAddress Uses

func (j *TestJig) WaitForIngressAddress(c clientset.Interface, ns, ingName string, timeout time.Duration) (string, error)

WaitForIngressAddress waits for the Ingress to acquire an address.

func (*TestJig) WaitForIngressToStable Uses

func (j *TestJig) WaitForIngressToStable()

WaitForIngressToStable waits for the LB return 100 consecutive 200 responses.

func (*TestJig) WaitForIngressWithCert Uses

func (j *TestJig) WaitForIngressWithCert(waitForNodePort bool, knownHosts []string, cert []byte) error

WaitForIngressWithCert waits till the ingress acquires an IP, then waits for its hosts/urls to respond to a protocol check (either http or https). If waitForNodePort is true, the NodePort of the Service is verified before verifying the Ingress. NodePort is currently a requirement for cloudprovider Ingress. Hostnames and certificate need to be explicitly passed in.

type TestLogger Uses

type TestLogger interface {
    Infof(format string, args ...interface{})
    Errorf(format string, args ...interface{})
}

TestLogger is an interface for log.

Package ingress imports 38 packages (graph) and is imported by 65 packages. Updated 2019-11-07. Refresh now. Tools for package owners.