Closed aledbf closed 4 years ago
Example of the output:
=== RUN TestSuite
Feature: Host rules
An Ingress may define routing rules based on the request host.
If the HTTP request host matches one of the hosts in the
Ingress objects, the traffic is routed to its backend service.
---
metadata:
creationTimestamp: null
generateName: ingress-conformance-
labels:
app.kubernetes.io/name: ingress-conformance
spec: {}
status: {}
Background:
Given a new random namespace # feature.go:58 -> sigs.k8s.io/ingress-controller-conformance/test/conformance/hostrules.aNewRandomNamespace
---
data:
tls.crt: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSURJRENDQWdpZ0F3SUJBZ0lSQU52NWNLYXZDSVNwLzJyT1pvMEhlNUF3RFFZSktvWklodmNOQVFFTEJRQXcKSkRFUU1BNEdBMVVFQ2hNSFFXTnRaU0JEYnpFUU1BNEdBMVVFQXhNSFpHVm1ZWFZzZERBZUZ3MHlNREE1TWpreApOREEzTlRWYUZ3MHlNVEE1TWpreE5EQTNOVFZhTUNReEVEQU9CZ05WQkFvVEIwRmpiV1VnUTI4eEVEQU9CZ05WCkJBTVRCMlJsWm1GMWJIUXdnZ0VpTUEwR0NTcUdTSWIzRFFFQkFRVUFBNElCRHdBd2dnRUtBb0lCQVFDM3hSbTcKMzhLT3o4M0ZoUGlzTDJPUitRUEFvVTg3N0doOHBjSXNhYXFBQW5oMlRJRzdUVXArVTdpeDd0V1ZGZGxjUUxxNwowNVJFVEhZdEg3NUtLcy9RR1c4RmUwUlovZEU4ck52OUlzdGtOc09HczcwVDFTYUJVU3dkODBPZGJZUHFoSWIwCkZ1citEdEhob3UyMzZXalVoYVN3Y3VJSlRPNStEWCtqMmxFU2E4VVFITXBwUWJtZyt6TXZVNnBzVmVuWFFmQzQKMFlZeTM5QzdTNXN1WXhjbkNmb2xZWktHZnd1ZStoVXJWZGttR3U0TTRTeFRKN1NJdHNMYW5SV2dUaHFUd0pHMApuMkVhRFZEeEIzVysvUGEzaGNaMFBNWWl2ZGZCSWNrMVdaV0h6Qk0rcEx2bXl5L083bm5EVnFEMG9MbVNHTmxPCkxjTEIwVUZxbW5la1lYZkhBZ01CQUFHalRUQkxNQTRHQTFVZER3RUIvd1FFQXdJRm9EQVRCZ05WSFNVRUREQUsKQmdnckJnRUZCUWNEQVRBTUJnTlZIUk1CQWY4RUFqQUFNQllHQTFVZEVRUVBNQTJDQzJadmJ5NWlZWEl1WTI5dApNQTBHQ1NxR1NJYjNEUUVCQ3dVQUE0SUJBUUNzWjUxK2U3WHBGZVUydjFET2VrUG9MSS8xSlZsYVUvVDN4Q1VUCjdmdEFaODZlenBZVFlwL0pvMnRib1VRZTlYeVhqT1NCNStVbExrYnZNcjdpZWUrM0g3SVVzLzYzYkhWWUQ4SGUKTkZtUnUySitoYlFOdTdNTWJyWlpNT2xQSDIycjhyYm1obGNYYVZackJ1S21mcURqVVpDWVdsc3p2ek5BbnBnYgpvUjk2ODZRR1FTMmVGbmVwQVhNUGpQQU9DbnNWQmQzOTlJQzFZSEJPUTdYR1ZySWp4Wi9leHd6cDFSd0xqV3ZmCk5JOTRKQm9wY0hFL3V5b0hHSHB2VFlZQ0tzSi9hdG9xVmFPQWhMMHdpYXhacGNXLzBWUzVpNFh6RGovU2VYZUcKVTdBTE0vekdkd1gwQ1UxTWlSM2ZmUW9TdFg2S0wxRlh1ZDNKTjg0TFFpOUFOeXJvCi0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K
tls.key: LS0tLS1CRUdJTiBSU0EgUFJJVkFURSBLRVktLS0tLQpNSUlFb3dJQkFBS0NBUUVBdDhVWnU5L0Nqcy9OeFlUNHJDOWprZmtEd0tGUE8reG9mS1hDTEdtcWdBSjRka3lCCnUwMUtmbE80c2U3VmxSWFpYRUM2dTlPVVJFeDJMUisrU2lyUDBCbHZCWHRFV2YzUlBLemIvU0xMWkRiRGhyTzkKRTlVbWdWRXNIZk5EblcyRDZvU0c5QmJxL2c3UjRhTHR0K2xvMUlXa3NITGlDVXp1ZmcxL285cFJFbXZGRUJ6SwphVUc1b1BzekwxT3FiRlhwMTBId3VOR0dNdC9RdTB1YkxtTVhKd242SldHU2huOExudm9WSzFYWkpocnVET0VzClV5ZTBpTGJDMnAwVm9FNGFrOENSdEo5aEdnMVE4UWQxdnZ6MnQ0WEdkRHpHSXIzWHdTSEpOVm1WaDh3VFBxUzcKNXNzdnp1NTV3MWFnOUtDNWtoalpUaTNDd2RGQmFwcDNwR0YzeHdJREFRQUJBb0lCQUJBZUpXZW85SE42SGw0WQpqNGJxa1IwWWJnL1RGaFAzWkNLcWx5RTJFMUl1NVVuYTQvWDlqVzhQQUwvNlpwa3cxV09WK2NySGY5V05yeis5CjdQNnNTcFhCNVU3aHhOanZ2ZzVJU3ZNa3Zob0lBNVlvNVloN3hXaktLY2htc2FONUczelNLdFAxdnA2UnhpNjQKRDRsMTIwL29lTTFSQmlveXFTZzlIdGpNS1Jnb1hYNjVKYTdqQ2l0YjBQSzhWSmhtclJzbkpLU25XNi9CVTNTcwppZmw0dVZ0Wkl6cHZEM0l2Q0ZBdmhSdUNxMnF4SWozQ2V3SXFaWE9ITVZvNXp3K2Zva1QxQVBYaE5GRUtGSXJVCmRZa3RLa0ZXVCs0b0lVMEZXWU40QWh6UmtRa0xtalVmT0YybjhzMmpnd2FuQmd2Q2xmTk9SMUF0bFJMWXhOY3YKZGZFaDZpRUNnWUVBNWttV3F2M0kyN2s2bzlIa05tbEUyYjJYU1ZBZUxhLzVXbllGSVNTaWMvVkJ1R01TRnFWbApaLzYzUjNpMzVlRUVoN2Z3Y1VTNThZTzFLajR5Y1ozSmVlUGNRbFZnSkZkcDVWOTFyM0ZQUlV1Tkc1Y0ErMTkrCnBRemxDTk93aWI5anA4eFhVc2hGa0hTUXBuVjdNVlJjVFdkSjk3R2JXcHNvclcwa21aVElTZnNDZ1lFQXpFbmgKVVI4eE5ETmdoaXB0aGZqeDBkaEdYWHg1bkQ5V01rNktEaXNmMGpqNXF1TFBUNlNZNTRrYjZOSE5rRllxVDVQNQpFY2sra2NQR2FWYWVtbE4wc0Nqako5OXE5dE4wckxzSWxXcno2TGJ5WURMcnBqRGVXYTZsbkZ2THM5YlBQckxvCkorQ3d0c3hIV1ZxWHRWWWhFcWIzdlNqcDBueWZWQWxpQ3UyVUM2VUNnWUVBcjlEUkFoMGQ0M3JvWlRnUzV1TzUKMkE5aVdHdWRqcjRDUHVsS0EwTEg4SVgzdGdHVlJzcmh2K0w5Sk1qcWhjd2t2RVZYZ2ZLNWo4VkJaRTMyRHo0cgpHeTgyODBIaFUvMlU4TFRQMGJGTmx4Y1dWVkVWUTlWbGlEZHZDUzB0WkExRjFVOHlBQmE4M1l2US8vVkRwNmJECmphamxGUUY1SFZUR1dwbXdUcjBEcVU4Q2dZQXNjQ1hETDdYVVZSaTZGcUNjYy9xbVd4VnpZSkJUbkxOelhnSkoKOHJlSlV6dDhJTHBYNk1ZYUY0a3FxL2k3WFFMM0xJa1JoV1ZHNy85SkNyNlZjM0grbitaSjFoKytjV0QvOGU5OApFVGZkZDI1aDNySEVCUDFaSk5TQm5yWkErSWs4YWs1MTNqcVNpUDA4UXFpZG1ZNjRML25UL0FKZzl4cnhmTmtHCjU0Yzh3UUtCZ0NSUk03Z2hVUFY2RUZCYjY1NDRTZFhnVUZmck9Cbjdpa25TYWpwTmk4ZVNuS0xQUExuelo0MEoKZXo4WFJ1cUozQTRVK2MrMVJxM0YrZHNhSTdJZjZ3bngvL1BoOUczWWNoZENTbHJ6ZzA4ZGRDclcxR28yTUNBRgo2dmR4YjJCRC9IQlY0YjZZbGVVRHFCc0pqc3pDZHNVZ2NMc2RiK056NS9rUjNDTnl5alBjCi0tLS0tRU5EIFJTQSBQUklWQVRFIEtFWS0tLS0tCg==
metadata:
creationTimestamp: null
name: conformance-tls
Given a self-signed TLS secret named "conformance-tls" for the "foo.bar.com" hostname # feature.go:89 -> sigs.k8s.io/ingress-controller-conformance/test/conformance/hostrules.aSelfsignedTLSSecretNamedForTheHostname
---
apiVersion: apps/v1
kind: Deployment
metadata:
creationTimestamp: null
name: host-rules-wildcard-foo-com
spec:
replicas: 1
selector:
matchLabels:
app: host-rules-wildcard-foo-com
strategy:
type: RollingUpdate
template:
metadata:
creationTimestamp: null
labels:
app: host-rules-wildcard-foo-com
spec:
containers:
- env:
- name: POD_NAME
valueFrom:
fieldRef:
fieldPath: metadata.name
- name: NAMESPACE
valueFrom:
fieldRef:
fieldPath: metadata.namespace
- name: INGRESS_NAME
value: host-rules
- name: SERVICE_NAME
value: wildcard-foo-com
image: gcr.io/k8s-staging-ingressconformance/echoserver@sha256:317f2dfad5e4e937275e79f783e5e7b81a88f0123a3988e8b06f9d7b1eb435c9
livenessProbe:
failureThreshold: 10
httpGet:
path: /health
port: 3000
scheme: HTTP
initialDelaySeconds: 1
periodSeconds: 1
successThreshold: 1
timeoutSeconds: 1
name: ingress-conformance-echo
ports:
- containerPort: 3000
readinessProbe:
failureThreshold: 10
httpGet:
path: /health
port: 3000
scheme: HTTP
initialDelaySeconds: 1
periodSeconds: 1
successThreshold: 1
timeoutSeconds: 1
resources: {}
status: {}
---
apiVersion: v1
kind: Service
metadata:
creationTimestamp: null
name: wildcard-foo-com
spec:
ports:
- port: 8080
targetPort: 3000
selector:
app: host-rules-wildcard-foo-com
type: NodePort
status:
loadBalancer: {}
---
apiVersion: apps/v1
kind: Deployment
metadata:
creationTimestamp: null
name: host-rules-foo-bar-com
spec:
replicas: 1
selector:
matchLabels:
app: host-rules-foo-bar-com
strategy:
type: RollingUpdate
template:
metadata:
creationTimestamp: null
labels:
app: host-rules-foo-bar-com
spec:
containers:
- env:
- name: POD_NAME
valueFrom:
fieldRef:
fieldPath: metadata.name
- name: NAMESPACE
valueFrom:
fieldRef:
fieldPath: metadata.namespace
- name: INGRESS_NAME
value: host-rules
- name: SERVICE_NAME
value: foo-bar-com
image: gcr.io/k8s-staging-ingressconformance/echoserver@sha256:317f2dfad5e4e937275e79f783e5e7b81a88f0123a3988e8b06f9d7b1eb435c9
livenessProbe:
failureThreshold: 10
httpGet:
path: /health
port: 3000
scheme: HTTP
initialDelaySeconds: 1
periodSeconds: 1
successThreshold: 1
timeoutSeconds: 1
name: ingress-conformance-echo
ports:
- containerPort: 3000
name: http
readinessProbe:
failureThreshold: 10
httpGet:
path: /health
port: 3000
scheme: HTTP
initialDelaySeconds: 1
periodSeconds: 1
successThreshold: 1
timeoutSeconds: 1
resources: {}
status: {}
---
apiVersion: v1
kind: Service
metadata:
creationTimestamp: null
name: foo-bar-com
spec:
ports:
- name: http
port: 8080
targetPort: 3000
selector:
app: host-rules-foo-bar-com
type: NodePort
status:
loadBalancer: {}
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
creationTimestamp: null
name: host-rules
namespace: ingress-conformance-468v5
spec:
rules:
- host: '*.foo.com'
http:
paths:
- backend:
service:
name: wildcard-foo-com
port:
number: 8080
path: /
pathType: Prefix
- host: foo.bar.com
http:
paths:
- backend:
service:
name: foo-bar-com
port:
name: http
path: /
pathType: Prefix
tls:
- hosts:
- foo.bar.com
secretName: conformance-tls
status:
loadBalancer: {}
Given an Ingress resource # feature.go:68 -> sigs.k8s.io/ingress-controller-conformance/test/conformance/hostrules.anIngressResource
"""
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: host-rules
spec:
tls:
- hosts:
- foo.bar.com
secretName: conformance-tls
rules:
- host: "*.foo.com"
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: wildcard-foo-com
port:
number: 8080
- host: foo.bar.com
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: foo-bar-com
port:
name: http
"""
/lgtm /approve
[APPROVALNOTIFIER] This PR is APPROVED
This pull-request has been approved by: aledbf, bowei
The full list of commands accepted by this bot can be found here.
The pull request process is described here
Running the conformance test suite we could find a particular test is not ok. The yaml definition helps to reproduce the problem without spending time trying to reproduce what is being executed underneath