Commit graph

606 commits

Author SHA1 Message Date
Thibault Jamet
1cd17cd12c
Implement a validation webhook
In case some ingress have a syntax error in the snippet configuration,
the freshly generated configuration will not be reloaded to prevent tearing down existing rules.
Although, once inserted, this configuration is preventing from any other valid configuration to be inserted as it remains in the ingresses of the cluster.
To solve this problem, implement an optional validation webhook that simulates the addition of the ingress to be added together with the rest of ingresses.
In case the generated configuration is not validated by nginx, deny the insertion of the ingress.

In case certificates are mounted using kubernetes secrets, when those
changes, keys are automatically updated in the container volume, and the
controller reloads it using the filewatcher.

Related changes:

- Update vendors
- Extract useful functions to check configuration with an additional ingress
- Update documentation for validating webhook
- Add validating webhook examples
- Add a metric for each syntax check success and errors
- Add more certificate generation examples
2019-04-18 19:07:04 +02:00
Kubernetes Prow Robot
34734edc6e
Merge pull request #4005 from Shopify/proxy-next-upstream-timeout
Support proxy_next_upstream_timeout
2019-04-15 09:10:09 -07:00
Alex Kursell
ffeb1fe348 Support proxy_next_upstream_timeout 2019-04-15 11:08:57 -04:00
Elvin Efendi
13a7e2c5d0 refactor GetFakeSSLCert 2019-04-14 09:35:48 -04:00
Kubernetes Prow Robot
4c37e0e4b7
Merge pull request #4004 from Shopify/no-valgrind
Remove valgrind
2019-04-13 20:48:01 -07:00
Elvin Efendi
b1a6aa2973 make sure unit test create fakecertificate 2019-04-13 16:35:52 -04:00
Elvin Efendi
417af76e97 properly handle default and custom default certs in dynamic ssl mode 2019-04-13 12:32:06 -04:00
Alex Kursell
ae592821c6 Remove valgrind 2019-04-12 12:09:52 -04:00
Kubernetes Prow Robot
ac043771ff
Merge pull request #3990 from ElvinEfendi/fix-dynamic-cert-issue
Fix dynamic cert issue with default-ssl-certificate
2019-04-09 20:30:11 -07:00
Elvin Efendi
fc6e7c9be0 fix dynamic cert bug 2019-04-09 22:11:21 -04:00
Manuel Alejandro de Brito Fontes
6d02a9e475
Refactor isIterable 2019-04-08 10:11:44 -04:00
Kubernetes Prow Robot
d3f9fbb8fb
Merge pull request #3960 from Shopify/fix-add-headers-segfault
Fix segfault on reference to nonexistent configmap
2019-04-04 08:52:53 -07:00
Manuel Alejandro de Brito Fontes
951f7d7c1b
Refactor equals 2019-04-03 22:39:32 -03:00
Alex Kursell
f6beef960d Fix segfault on reference to nonexistent configmap 2019-04-02 16:39:42 -04:00
Kubernetes Prow Robot
39ecab8d5a
Merge pull request #3954 from Shopify/lb-configmap
Fix load-balance configmap value
2019-04-02 05:10:34 -07:00
Alex Kursell
4f819b6256 Fix load-balance configmap value 2019-04-01 15:55:36 -04:00
Kubernetes Prow Robot
b87cc5a1a6
Merge pull request #3786 from Shopify/rewrite-x-forwarded-prefix
Fix x-forwarded-prefix annotation
2019-03-31 16:18:32 -07:00
Elvin Efendi
496ff07bf1 replace some of the Nginx configuration to Lua code 2019-03-31 12:04:52 -04:00
Kubernetes Prow Robot
4bee401d16
Merge pull request #3947 from vncntvandriessche/bug/silent-custom-default-certificate-failure
Adds a log warning when falling back to default fake cert
2019-03-31 08:42:32 -07:00
Alex Kursell
188295550c Simplify x-forwarded-prefix annotation 2019-03-29 16:25:25 -04:00
Vincent Van Driessche
23902058f9 Adds a log warning when falling back to default fake cert 2019-03-29 17:30:10 +01:00
Manuel Alejandro de Brito Fontes
14a9e9f3fa
Update dependencies client-go to release-11.0 and kubernetes-1.14.0 2019-03-28 20:43:18 -03:00
Manuel Alejandro de Brito Fontes
3ec1028d0b
Fix dynamic SSL certificate for aliases and redirect-from-to-www 2019-03-28 16:29:11 -03:00
Kubernetes Prow Robot
e624fe171d
Merge pull request #3839 from perprogramming/bugfix/panic-on-multiple-non-matching-canary
Fix panic on multiple non-matching canary
2019-03-27 16:46:48 -07:00
Kubernetes Prow Robot
614a2d43bc
Merge pull request #3895 from jacksontj/issue_3881
Correctly format ipv6 resolver config for lua
2019-03-14 11:22:27 -07:00
Kubernetes Prow Robot
189e2db412
Merge pull request #3889 from Shopify/simplify-controller-annotations
Separate out annotation assignment logic
2019-03-14 11:00:38 -07:00
Thomas Jackson
eba4a8b87c Correctly format ipv6 resolver config for lua
Fixes #3881
2019-03-14 10:00:24 -07:00
Kubernetes Prow Robot
2dbc1ea3b3
Merge pull request #3870 from Shopify/improve-plugin
Improve kubectl plugin
2019-03-14 07:36:30 -07:00
Kubernetes Prow Robot
e0793650d0
Merge pull request #3885 from aledbf/status
Refactor status update
2019-03-13 08:19:36 -07:00
Alex Kursell
d74cc69693 Separate out annotation assignment logic 2019-03-12 14:18:09 -04:00
Alex Kursell
9d62ec97de Improve kubectl plugin 2019-03-12 12:52:23 -04:00
Manuel Alejandro de Brito Fontes
f4e4335d8c
Only the leader updates metrics for SSL certificate expiration 2019-03-12 12:08:24 -03:00
Per Bernhardt
c995e13249 Improve text, error level, tests... 2019-03-12 15:57:36 +01:00
Kubernetes Prow Robot
55bda6e7f4
Merge pull request #3887 from Shopify/remove-nodeip
Remove useless nodeip calls and deprecate --force-namespace-isolation
2019-03-11 16:38:38 -07:00
Alex Kursell
d8fe2d992b Remove useless nodeip call and deprecate --force-namespace-isolation 2019-03-11 18:19:13 -04:00
Kubernetes Prow Robot
869095866a
Merge pull request #3875 from aledbf/fix-auth-secret
Allow the use of a secret located in a different namespace
2019-03-11 12:16:12 -07:00
Manuel Alejandro de Brito Fontes
870b89c72b
Fix documentation 2019-03-11 13:21:10 -03:00
Manuel Alejandro de Brito Fontes
20a89480f0
Use full election leader ID 2019-03-11 13:11:27 -03:00
Manuel Alejandro de Brito Fontes
7c717cabcf
Add promehteus metric about leader election status 2019-03-11 13:11:27 -03:00
Manuel Alejandro de Brito Fontes
476d0106d6
Fix status tests 2019-03-11 13:11:27 -03:00
Manuel Alejandro de Brito Fontes
0a39425e8f
Refactor status update 2019-03-11 13:11:26 -03:00
Manuel Alejandro de Brito Fontes
d403b3ef86
Allow the use of a secret located in a different namespace 2019-03-11 11:16:10 -03:00
Kubernetes Prow Robot
8e7480e0f1
Merge pull request #3853 from aledbf/remove-authbind
Remove authbind
2019-03-11 07:09:29 -07:00
Elvin Efendi
c934509309 fix function comment 2019-03-11 00:53:06 -04:00
Elvin Efendi
5667ea5d67 bugfix: when secret includes ca.crt store it on disk even in dynamic cert mode 2019-03-11 00:53:06 -04:00
Elvin Efendi
c28247abf6 adjust unit tests 2019-03-11 00:53:06 -04:00
Elvin Efendi
70df5e03e5 clean up certificate processing 2019-03-11 00:53:06 -04:00
Elvin Efendi
0dc5a1d2e2 do not repeat cert verification against root ca 2019-03-11 00:53:06 -04:00
Elvin Efendi
301a4fb9a5 extract common logic into a helper 2019-03-11 00:53:06 -04:00
Alejandro Pedraza
7ea245e6e6 Add test
Signed-off-by: Alejandro Pedraza <alejandro.pedraza@gmail.com>
2019-03-07 06:18:06 -05:00
Alejandro Pedraza
a3c87cf9cb Properly set ing.Service when there are multiple rules with different hosts using the same path
Fixes #3611

Signed-off-by: Alejandro Pedraza <alejandro.pedraza@gmail.com>
2019-03-07 06:06:24 -05:00
Manuel Alejandro de Brito Fontes
d898169484 Fix ssl-dh-param issue when secret does not exit 2019-03-05 16:31:33 -03:00
Manuel Alejandro de Brito Fontes
26f2b1330f Remove authbind 2019-03-05 10:08:34 -03:00
Kubernetes Prow Robot
b1c2812dc5
Merge pull request #3849 from trnl/master
Use Gauge instead of Counter for connections_active Prometheus metric
2019-03-05 03:09:00 -08:00
Uladzimir Mihura
13d0f0ddab Use Gauge instead of Counter for connections_active Prometheus metric 2019-03-04 22:35:45 +01:00
Thibault Jamet
27a98f2920
Fix race condition in metric process collector test
There was a goroutine started to log things upon a test that could be
ended at the time `cmd.Wait()` ends.

To solve the problem, when the sub-test ends, ensure we wait until the
command ends when ending the test

The output of `make test` before the fix shows:

```
=== RUN   TestNewUDPLogListener
==================
WARNING: DATA RACE
Read at 0x00c0002a8643 by goroutine 74:
  testing.(*common).logDepth()
      /usr/local/go/src/testing/testing.go:629 +0x132
  testing.(*common).Logf()
      /usr/local/go/src/testing/testing.go:614 +0x90
  k8s.io/ingress-nginx/internal/ingress/metric/collectors.TestProcessCollector.func1.1()
      /go/src/k8s.io/ingress-nginx/internal/ingress/metric/collectors/process_test.go:54 +0x140

Previous write at 0x00c0002a8643 by goroutine 72:
  testing.tRunner.func1()
      /usr/local/go/src/testing/testing.go:856 +0x33e
  testing.tRunner()
      /usr/local/go/src/testing/testing.go:869 +0x17f

Goroutine 74 (running) created at:
  k8s.io/ingress-nginx/internal/ingress/metric/collectors.TestProcessCollector.func1()
      /go/src/k8s.io/ingress-nginx/internal/ingress/metric/collectors/process_test.go:50 +0x218
  testing.tRunner()
      /usr/local/go/src/testing/testing.go:865 +0x163

Goroutine 72 (finished) created at:
  testing.(*T).Run()
      /usr/local/go/src/testing/testing.go:916 +0x699
  testing.runTests.func1()
      /usr/local/go/src/testing/testing.go:1157 +0xa8
  testing.tRunner()
      /usr/local/go/src/testing/testing.go:865 +0x163
  testing.runTests()
      /usr/local/go/src/testing/testing.go:1155 +0x523
  testing.(*M).Run()
      /usr/local/go/src/testing/testing.go:1072 +0x2eb
  main.main()
      _testmain.go:52 +0x222
==================
--- PASS: TestNewUDPLogListener (0.00s)
```

after the patch:

```
=== RUN   TestNewUDPLogListener
--- PASS: TestNewUDPLogListener (0.01s)
```

Change-Id: I8ea246d14f5f80b330be19dd5b8299c6762f6d6b
2019-03-04 21:54:42 +01:00
Alex Kursell
d3ac73be79 Remove session-cookie-hash annotation 2019-03-04 10:34:48 -05:00
Per Bernhardt
8a40e82ffb Fix panic on multiple non-matching canary 2019-03-04 12:30:59 +01:00
Alex Kursell
28d99c6d7d Set default for satisfy annotation to nothing 2019-02-26 15:05:45 -05:00
Mikhail Marchenko
8b3702c829 Enable access log for default backend
disable log on default_server
2019-02-26 11:14:31 +03:00
Alex Kursell
c96eae3015 Add /dbg certs command 2019-02-25 11:38:07 -05:00
jasongwartz
3865e30a00 Changes CustomHTTPErrors annotation to use custom default backend
Updates e2e test

Removes focus from e2e test

Fixes renamed function

Adds tests for new template funcs

Addresses gofmt

Updates e2e test, fixes custom-default-backend test by creating service

Updates docs
2019-02-24 22:48:56 +01:00
Kubernetes Prow Robot
7b2495047f
Merge pull request #3781 from zoumo/proxy-buffer-number
feat: configurable proxy buffers number
2019-02-22 12:11:46 -08:00
Kubernetes Prow Robot
debe933f43
Merge pull request #3793 from Shopify/update-mergo
Update mergo dependency
2019-02-22 12:07:39 -08:00
Alex Kursell
53538acbaf Change Denied to *string 2019-02-22 11:48:13 -05:00
Alex Kursell
62191fc3e2 Fix test 2019-02-22 10:35:44 -05:00
Alex Kursell
6b6e7f5464 go fmt 2019-02-22 10:19:40 -05:00
Alex Kursell
521be9b258 Remove interface type from annotations.Ingress struct 2019-02-22 10:14:09 -05:00
Jim Zhang
6305e1d152 fix: run gofmt 2019-02-22 15:04:19 +08:00
Jim Zhang
dc63e5d185 fix: rename proxy-buffer-number to proxy-buffers-number 2019-02-22 10:21:17 +08:00
Elvin Efendi
420d804cce increase log verbosity for auth annotations 2019-02-21 16:19:10 -05:00
Taoge
24993f359f
- remove annoations in nginxcontroller struct 2019-02-21 19:14:11 +08:00
Jim Zhang
c92d29d462 feat: configurable proxy buffer number 2019-02-20 18:05:09 +08:00
Kubernetes Prow Robot
15d5ef95ef
Merge pull request #3740 from Shopify/session-annotation-reload
Fix ingress updating for session-cookie-* annotation changes
2019-02-19 15:14:21 -08:00
Alex Kursell
c180a0998b Fix session-cookie-* annotation reloading 2019-02-19 17:27:08 -05:00
Anthony Ho
ec04852526 Create custom annotation for satisfy "value" 2019-02-19 15:58:35 -05:00
Kubernetes Prow Robot
784d57ea69
Merge pull request #3695 from yowenter/patch-1
> Don't reload nginx when L4 endpoints changed
2019-02-19 11:27:11 -08:00
TaoGe
b03049c0af
> Don't reload nginx when L4 service pods changed
Since we use lua upstream for L4 service balancer. We don't need reload nginx when L4 service pod changed.
2019-02-19 14:31:45 +08:00
Manuel Alejandro de Brito Fontes
bef6ff9042
Do not log unnecessarily (#3771) 2019-02-16 20:56:18 -03:00
Alan J Castonguay
a29c27ed4c Datadog Opentracing support - part 2
This commit is part 2 of 2, adding configuration of the
Datadog Opentracing module to the controller.

Fixes half of #3752
2019-02-15 15:20:10 -05:00
Kubernetes Prow Robot
b72dfa99d8
Merge pull request #3765 from ElvinEfendi/custom-http-error-bug-fix
simplify customhttperrors e2e test and add regression test and fix a bug
2019-02-14 06:51:33 -08:00
Elvin Efendi
94a9a47225 fix no config change bug with custom-http-errors 2019-02-14 08:29:31 -05:00
Kubernetes Prow Robot
908a2ae506
Merge pull request #3764 from ElvinEfendi/cleanup-confusing-attribute
delete confusing CustomErrors attribute to make things more explicit
2019-02-14 03:26:21 -08:00
Elvin Efendi
adc128711b delete confusing CustomErrors attribute to make things more explicit 2019-02-13 22:41:02 -05:00
Kubernetes Prow Robot
c8d30755a9
Merge pull request #3748 from aledbf/update-image
Update nginx image
2019-02-13 15:14:08 -08:00
Alex Kursell
7e3304d4f9 Apply annotations to default location 2019-02-11 14:32:49 -05:00
Kubernetes Prow Robot
9ba67992be
Merge pull request #3686 from Shopify/dbg-tool
Add debug binary to the docker image
2019-02-11 07:27:15 -08:00
Kubernetes Prow Robot
4b64453787
Merge pull request #3749 from diazjf/more-unit
Enhance Unit Tests for Annotations
2019-02-10 13:58:27 -08:00
Fernando Diaz
1da2900b9b Enhance Unit Tests for Annotations
Adds unit tests for a variety of different annotations.
2019-02-10 14:44:11 -06:00
Sebastiaan Tammer
fc5e99a151 Parse environment variables in OpenTracing configuration 2019-02-10 16:59:05 +01:00
Manuel Alejandro de Brito Fontes
7dc17a603d Update nginx image 2019-02-09 18:53:31 -03:00
Alex Kursell
9534f8bc43 Add debug tool to image 2019-02-08 11:25:04 -05:00
Elvin Efendi
aca51a3d4e dont log unnecessarily 2019-02-07 13:22:02 -05:00
Kubernetes Prow Robot
ea9055b613
Merge pull request #3728 from Shopify/fix-test-list-ingresses
Fix flaky test
2019-02-07 07:08:56 -08:00
Kubernetes Prow Robot
4dd0365c01
Merge pull request #3734 from Shopify/remove-old-dicts
remove old unused lua dicts
2019-02-06 20:21:28 -08:00
Kubernetes Prow Robot
6386da7e6f
Merge pull request #3736 from Shopify/increase-log-level
do not unnecessarily log
2019-02-06 19:24:50 -08:00
Kubernetes Prow Robot
ef7d7cf7d1
Merge pull request #3667 from Shopify/fix-worker-connection-calculation
worker_connections should be less (3/4th) than worker_rlimit_nofile
2019-02-06 15:11:20 -08:00
Elvin Efendi
e7383bdf3d do not unnecessarily log 2019-02-06 17:39:38 -05:00
Elvin Efendi
d99390f402 remove old unused lua dicts 2019-02-06 17:33:16 -05:00
Kubernetes Prow Robot
17e788b8e1
Merge pull request #3684 from aledbf/health
Replace Status port using a socket
2019-02-06 13:49:08 -08:00