Documentation ¶
Index ¶
- Constants
- func BuildInsecureClient(timeout time.Duration) *http.Client
- func GenerateRSACerts(host string, isCA bool) ([]byte, []byte, error)
- type ConformanceTests
- type E2ELogger
- type GLogger
- type NegStatus
- type NginxIngressController
- type TestJig
- func (j *TestJig) AddHTTPS(secretName string, hosts ...string)
- func (j *TestJig) ConstructFirewallForIngress(firewallRuleName string, nodeTags []string) *compute.Firewall
- func (j *TestJig) CreateIngress(manifestPath, ns string, ingAnnotations map[string]string, ...)
- func (j *TestJig) DeleteTestResource(cs clientset.Interface, deploy *apps.Deployment, svc *v1.Service, ...) []error
- func (j *TestJig) GetDistinctResponseFromIngress() (sets.String, error)
- func (j *TestJig) GetIngressNodePorts(includeDefaultBackend bool) []string
- func (j *TestJig) GetRootCA(secretName string) (rootCA []byte)
- func (j *TestJig) GetServicePorts(includeDefaultBackend bool) map[string]v1.ServicePort
- func (j *TestJig) PrepareTLSSecret(namespace, secretName string, hosts ...string) error
- func (j *TestJig) RemoveHTTPS(secretName string)
- func (j *TestJig) SetHTTPS(secretName string, hosts ...string)
- func (j *TestJig) SetUpBacksideHTTPSIngress(cs clientset.Interface, namespace string, staticIPName string) (*apps.Deployment, *v1.Service, *extensions.Ingress, error)
- func (j *TestJig) TryDeleteIngress()
- func (j *TestJig) Update(update func(ing *extensions.Ingress))
- func (j *TestJig) VerifyURL(route, host string, iterations int, interval time.Duration, ...) error
- func (j *TestJig) WaitForGivenIngressWithTimeout(ing *extensions.Ingress, waitForNodePort bool, timeout time.Duration) error
- func (j *TestJig) WaitForIngress(waitForNodePort bool)
- func (j *TestJig) WaitForIngressAddress(c clientset.Interface, ns, ingName string, timeout time.Duration) (string, error)
- func (j *TestJig) WaitForIngressToStable()
- func (j *TestJig) WaitForIngressWithCert(waitForNodePort bool, knownHosts []string, cert []byte) error
- type TestLogger
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 = "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" )
Variables ¶
This section is empty.
Functions ¶
func BuildInsecureClient ¶
BuildInsecureClient returns an insecure http client. Can be used for "curl -k".
Types ¶
type ConformanceTests ¶ added in v1.14.0
ConformanceTests contains a closure with an entry and exit log line.
func CreateIngressComformanceTests ¶
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 ¶
type E2ELogger struct{}
E2ELogger is test logger.
type GLogger ¶
type GLogger struct{}
GLogger is test logger.
type NegStatus ¶
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 ¶
type NginxIngressController struct { Ns string Client clientset.Interface // contains filtered or unexported fields }
NginxIngressController manages implementation details of Ingress on Nginx.
func (*NginxIngressController) Init ¶
func (cont *NginxIngressController) Init()
Init initializes the NginxIngressController
type TestJig ¶ added in v1.14.0
type TestJig struct { Client clientset.Interface Logger TestLogger RootCAs map[string][]byte Address string Ingress *extensions.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 ¶
NewIngressTestJig instantiates struct with client
func (*TestJig) AddHTTPS ¶ added in v1.14.0
AddHTTPS updates the ingress to add this secret for these hosts.
func (*TestJig) ConstructFirewallForIngress ¶ added in v1.14.0
func (j *TestJig) ConstructFirewallForIngress(firewallRuleName string, nodeTags []string) *compute.Firewall
ConstructFirewallForIngress returns the expected GCE firewall rule for the ingress resource
func (*TestJig) CreateIngress ¶ added in v1.14.0
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 ¶ added in v1.14.0
func (j *TestJig) DeleteTestResource(cs clientset.Interface, deploy *apps.Deployment, svc *v1.Service, ing *extensions.Ingress) []error
DeleteTestResource deletes given deployment, service and ingress.
func (*TestJig) GetDistinctResponseFromIngress ¶ added in v1.14.0
GetDistinctResponseFromIngress tries GET call to the ingress VIP and return all distinct responses.
func (*TestJig) GetIngressNodePorts ¶ added in v1.14.0
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) GetServicePorts ¶ added in v1.14.0
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 ¶ added in v1.14.0
PrepareTLSSecret creates a TLS secret and caches the cert.
func (*TestJig) RemoveHTTPS ¶ added in v1.14.0
RemoveHTTPS updates the ingress to not use this secret for TLS. Note: Does not delete the secret.
func (*TestJig) SetHTTPS ¶ added in v1.14.0
SetHTTPS updates the ingress to use only this secret for these hosts.
func (*TestJig) SetUpBacksideHTTPSIngress ¶ added in v1.14.0
func (j *TestJig) SetUpBacksideHTTPSIngress(cs clientset.Interface, namespace string, staticIPName string) (*apps.Deployment, *v1.Service, *extensions.Ingress, error)
SetUpBacksideHTTPSIngress sets up deployment, service and ingress with backside HTTPS configured.
func (*TestJig) TryDeleteIngress ¶ added in v1.14.0
func (j *TestJig) TryDeleteIngress()
TryDeleteIngress attempts to delete the ingress resource and logs errors if they occur.
func (*TestJig) Update ¶ added in v1.14.0
func (j *TestJig) Update(update func(ing *extensions.Ingress))
Update retrieves the ingress, performs the passed function, and then updates it.
func (*TestJig) VerifyURL ¶ added in v1.14.0
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 ¶ added in v1.14.0
func (j *TestJig) WaitForGivenIngressWithTimeout(ing *extensions.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 ¶ added in v1.14.0
WaitForIngress waits for the Ingress to get an address. WaitForIngress returns when it gets the first 200 response
func (*TestJig) WaitForIngressAddress ¶ added in v1.14.0
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 ¶ added in v1.14.0
func (j *TestJig) WaitForIngressToStable()
WaitForIngressToStable waits for the LB return 100 consecutive 200 responses.
func (*TestJig) WaitForIngressWithCert ¶ added in v1.14.0
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 ¶
type TestLogger interface { Infof(format string, args ...interface{}) Errorf(format string, args ...interface{}) }
TestLogger is an interface for log.