Skip to content
This repository was archived by the owner on May 24, 2023. It is now read-only.

Commit 4a21fa2

Browse files
authored
Release 0.1.0
1 parent 1e9920d commit 4a21fa2

13 files changed

+1775
-10
lines changed

CHANGELOG.md

+47-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,51 @@
11
# Changelog
22

3+
### 0.1.0
4+
5+
FEATURES:
6+
7+
* [56](https://github.com/nginxinc/nginx-ingress-operator/pull/56) Graduate Policies. Add enablePreviewPolicy flag support.
8+
* [55](https://github.com/nginxinc/nginx-ingress-operator/pull/55) Add AppProtect User Defined Signatures support.
9+
* [39](https://github.com/nginxinc/nginx-ingress-operator/pull/39) Update secret type of default secret to TLS.
10+
11+
FIXES:
12+
13+
* [71](https://github.com/nginxinc/nginx-ingress-operator/pull/71) Fix replicas and service to be optional fields.
14+
* [70](https://github.com/nginxinc/nginx-ingress-operator/pull/70) Make enableCRDs optional.
15+
* [66](https://github.com/nginxinc/nginx-ingress-operator/pull/66) Fix Service to be an optional field. Add support for updating ExtraLabels.
16+
* [65](https://github.com/nginxinc/nginx-ingress-operator/pull/65) Fix SCC resource to only affect KIC pods.
17+
18+
DOCUMENTATION:
19+
20+
* [54](https://github.com/nginxinc/nginx-ingress-operator/pull/54) Update IC compatibility in changelog.
21+
22+
KNOWN ISSUES:
23+
24+
* The Operator doesn't automatically remove IngressClasses created by [29](https://github.com/nginxinc/nginx-ingress-operator/pull/29).
25+
26+
COMPATIBILITY:
27+
28+
- NGINX Ingress Controller 1.10.x
29+
- Openshift 4.5 or newer.
30+
31+
UPGRADE INSTRUCTIONS:
32+
33+
UPGRADE INSTRUCTIONS:
34+
35+
1. Remove the existing Policy CRD: kubectl delete crd policies.k8s.nginx.org
36+
**Please note that deletion of the policies.k8s.nginx.org CRD will result in all instances of that CRD being deleted too. Ensure to back up any important Custom Resource instances first!**
37+
1. Delete the existing SCC: kubectl delete scc nginx-ingress-scc
38+
1. Upgrade the operator to version 0.1.0.
39+
1. If the defaultSecret field is not set in your nginxingresscontrollers.k8s.nginx.org resource (or resources):
40+
1. Remove the generated default secret. For example: kubectl delete secret -n my-nginx-ingress my-nginx-ingress-controller
41+
1. Wait until the operator regenerates the secret. The old secret was of the type Opaque. The new secret will be of the type kubernetes.io/tls.
42+
1. Alternatively, if the defaultSecret is set to some secret, make sure it is of the type kubernetes.io/tls. If not, recreate the secret with the type kubernetes.io/tls.
43+
1. If the wildcardTLS is set to some secret, make sure it is of the type kubernetes.io/tls. If not, recreate the secret with the type kubernetes.io/tls.
44+
1. Ensure that the TLS secrets referenced by Ingress, VirtualServer and Policy resources are of the type kubernetes.io/tls, JWT secrets are of the type nginx.org/jwt and CA secrets are of the type nginx.org/ca. To avoid potential disruption of client traffic, instead of recreating the secrets, create new secrets with the correct type and update the Ingress, VirtualServer and Policy resources to use the new secrets.
45+
1. Update any existing instances of the nginxingresscontrollers.k8s.nginx.org Custom Resource to use an NGINX Ingress Controller 1.10.x image.
46+
47+
**Note**: Steps 4-8 are required because Version 1.10.0 of the Ingress Controller added a requirement for secrets to be one of the following types: kubernetes.io/tls for TLS secrets; nginx.org/jwk for JWK secrets; or nginx.org/ca for CA secrets. Please see the section UPDATING SECRETS in https://docs.nginx.com/nginx-ingress-controller/releases/#nginx-ingress-controller-1-10-0 for more details.
48+
349
### 0.0.7
450

551
FEATURES:
@@ -14,7 +60,7 @@ FIXES:
1460

1561
* [31](https://github.com/nginxinc/nginx-ingress-operator/pull/31) Add Status update for VS/VSR to RBAC.
1662

17-
KNOWS ISSUES:
63+
KNOWN ISSUES:
1864
* The Operator doesn't automatically remove IngressClasses created by [29](https://github.com/nginxinc/nginx-ingress-operator/pull/29)
1965

2066
COMPATIBILITY:

Makefile

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
OLD_TAG = 0.0.6
2-
TAG = 0.0.7
1+
OLD_TAG = 0.0.7
2+
TAG = 0.1.0
33

44
IMAGE = nginx/nginx-ingress-operator
55

README.md

+5-4
Original file line numberDiff line numberDiff line change
@@ -12,10 +12,11 @@ The following table shows the relation between the versions of the two projects:
1212

1313
| NGINX Ingress Controller | NGINX Ingress Operator |
1414
| --- | --- |
15-
| < 1.7.0 | N/A |
16-
| 1.7.x | 0.0.4 |
17-
| 1.8.x | 0.0.6 |
15+
| 1.10.x | 0.1.0 |
1816
| 1.9.x | 0.0.7 |
17+
| 1.8.x | 0.0.6 |
18+
| 1.7.x | 0.0.4 |
19+
| < 1.7.0 | N/A |
1920

2021
Note: The NGINX Ingress Operator works only for NGINX Ingress Controller versions after `1.7.0`.
2122

@@ -29,7 +30,7 @@ Note: The NGINX Ingress Operator works only for NGINX Ingress Controller version
2930
## NGINX Ingress Operator Releases
3031
We publish NGINX Ingress Operator releases on GitHub. See our [releases page](https://github.com/nginxinc/nginx-ingress-operator/releases).
3132

32-
The latest stable release is [0.0.7](https://github.com/nginxinc/nginx-ingress-operator/releases/tag/v0.0.7). For production use, we recommend that you choose the latest stable release.
33+
The latest stable release is [0.1.0](https://github.com/nginxinc/nginx-ingress-operator/releases/tag/v0.1.0). For production use, we recommend that you choose the latest stable release.
3334

3435
## Development
3536

Original file line numberDiff line numberDiff line change
@@ -0,0 +1,287 @@
1+
apiVersion: apiextensions.k8s.io/v1beta1
2+
kind: CustomResourceDefinition
3+
metadata:
4+
name: nginxingresscontrollers.k8s.nginx.org
5+
spec:
6+
group: k8s.nginx.org
7+
names:
8+
kind: NginxIngressController
9+
listKind: NginxIngressControllerList
10+
plural: nginxingresscontrollers
11+
singular: nginxingresscontroller
12+
scope: Namespaced
13+
subresources:
14+
status: {}
15+
validation:
16+
openAPIV3Schema:
17+
description: NginxIngressController is the Schema for the nginxingresscontrollers
18+
API
19+
properties:
20+
apiVersion:
21+
description: 'APIVersion defines the versioned schema of this representation
22+
of an object. Servers should convert recognized schemas to the latest
23+
internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
24+
type: string
25+
kind:
26+
description: 'Kind is a string value representing the REST resource this
27+
object represents. Servers may infer this from the endpoint the client
28+
submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
29+
type: string
30+
metadata:
31+
type: object
32+
spec:
33+
description: NginxIngressControllerSpec defines the desired state of NginxIngressController
34+
properties:
35+
appProtect:
36+
description: App Protect support configuration. Requires enableCRDs
37+
set to true.
38+
nullable: true
39+
properties:
40+
enable:
41+
description: Enable App Protect.
42+
type: boolean
43+
required:
44+
- enable
45+
type: object
46+
configMapData:
47+
additionalProperties:
48+
type: string
49+
description: Initial values of the Ingress Controller ConfigMap. Check
50+
https://docs.nginx.com/nginx-ingress-controller/configuration/global-configuration/configmap-resource/
51+
for more information about possible values.
52+
nullable: true
53+
type: object
54+
defaultSecret:
55+
description: The TLS Secret for TLS termination of the default server.
56+
The format is namespace/name. The secret must be of the type kubernetes.io/tls.
57+
If not specified, the operator will generate and deploy a TLS Secret
58+
with a self-signed certificate and key.
59+
type: string
60+
enableCRDs:
61+
description: Enables the use of NGINX Ingress Resource Definitions (VirtualServer
62+
and VirtualServerRoute). Default is true.
63+
nullable: true
64+
type: boolean
65+
enableLatencyMetrics:
66+
description: Bucketed response times from when NGINX establishes a connection
67+
to an upstream server to when the last byte of the response body is
68+
received by NGINX. **Note** The metric for the upstream isn't available
69+
until traffic is sent to the upstream.
70+
nullable: true
71+
type: boolean
72+
enableLeaderElection:
73+
description: Enables Leader election to avoid multiple replicas of the
74+
controller reporting the status of Ingress resources – only one replica
75+
will report status.
76+
type: boolean
77+
enablePreviewPolicies:
78+
description: Enables preview policies. Requires enableCRDs set to true.
79+
type: boolean
80+
enableSnippets:
81+
description: Enable custom NGINX configuration snippets in VirtualServer
82+
and VirtualServerRoute resources. Requires enableCRDs set to true.
83+
type: boolean
84+
enableTLSPassthrough:
85+
description: Enable TLS Passthrough on port 443. Requires enableCRDs
86+
set to true.
87+
type: boolean
88+
globalConfiguration:
89+
description: The GlobalConfiguration resource for global configuration
90+
of the Ingress Controller. Format is namespace/name. Requires enableCRDs
91+
set to true.
92+
type: string
93+
healthStatus:
94+
description: Adds a new location to the default server. The location
95+
responds with the 200 status code for any request. Useful for external
96+
health-checking of the Ingress controller.
97+
nullable: true
98+
properties:
99+
enable:
100+
description: Enable the HealthStatus.
101+
type: boolean
102+
uri:
103+
description: URI of the location. Default is `/nginx-health`.
104+
type: string
105+
required:
106+
- enable
107+
type: object
108+
image:
109+
description: The image of the Ingress Controller.
110+
properties:
111+
pullPolicy:
112+
description: The ImagePullPolicy of the image.
113+
enum:
114+
- Never
115+
- Always
116+
- IfNotPresent
117+
type: string
118+
repository:
119+
description: The repository of the image.
120+
type: string
121+
tag:
122+
description: The tag (version) of the image.
123+
type: string
124+
required:
125+
- pullPolicy
126+
- repository
127+
- tag
128+
type: object
129+
ingressClass:
130+
description: A class of the Ingress controller. The Ingress controller
131+
only processes Ingress resources that belong to its class (in other
132+
words, have the annotation “kubernetes.io/ingress.class”). Additionally,
133+
the Ingress controller processes Ingress resources that do not have
134+
that annotation, which can be disabled by setting UseIngressClassOnly
135+
to true. Default is `nginx`.
136+
type: string
137+
logLevel:
138+
description: Log level for V logs. Format is 0 - 3
139+
maximum: 3
140+
minimum: 0
141+
type: integer
142+
nginxDebug:
143+
description: 'Enable debugging for NGINX. Uses the nginx-debug binary.
144+
Requires ‘error-log-level: debug’ in the ConfigMapData.'
145+
type: boolean
146+
nginxPlus:
147+
description: Deploys the Ingress Controller for NGINX Plus. The default
148+
is false meaning the Ingress Controller will be deployed for NGINX
149+
OSS.
150+
type: boolean
151+
nginxReloadTimeout:
152+
description: Timeout in milliseconds which the Ingress Controller will
153+
wait for a successful NGINX reload after a change or at the initial
154+
start.
155+
type: integer
156+
nginxStatus:
157+
description: NGINX stub_status, or the NGINX Plus API.
158+
nullable: true
159+
properties:
160+
allowCidrs:
161+
description: Whitelist IPv4 IP/CIDR blocks to allow access to NGINX
162+
stub_status or the NGINX Plus API. Separate multiple IP/CIDR by
163+
commas. (default “127.0.0.1”)
164+
type: string
165+
enable:
166+
description: Enable the NginxStatus.
167+
type: boolean
168+
port:
169+
description: Set the port where the NGINX stub_status or the NGINX
170+
Plus API is exposed. Default is 8080. Format is 1023 - 65535
171+
maximum: 65535
172+
minimum: 1023
173+
nullable: true
174+
type: integer
175+
required:
176+
- enable
177+
type: object
178+
prometheus:
179+
description: NGINX or NGINX Plus metrics in the Prometheus format.
180+
nullable: true
181+
properties:
182+
enable:
183+
description: Enable Prometheus metrics.
184+
type: boolean
185+
port:
186+
description: Sets the port where the Prometheus metrics are exposed.
187+
Default is 9113. Format is 1023 - 65535
188+
maximum: 65535
189+
minimum: 1023
190+
nullable: true
191+
type: integer
192+
required:
193+
- enable
194+
type: object
195+
replicas:
196+
description: The number of replicas of the Ingress Controller pod. The
197+
default is 1. Only applies if the type is set to deployment.
198+
format: int32
199+
nullable: true
200+
type: integer
201+
reportIngressStatus:
202+
description: Update the address field in the status of Ingresses resources.
203+
nullable: true
204+
properties:
205+
enable:
206+
description: Enable the ReportIngressStatus.
207+
type: boolean
208+
externalService:
209+
description: 'Specifies the name of the service with the type LoadBalancer
210+
through which the Ingress controller pods are exposed externally.
211+
The external address of the service is used when reporting the
212+
status of Ingress resources. Note: Only if serviceType is NodePort.'
213+
type: string
214+
ingressLink:
215+
description: 'Specifies the name of the IngressLink resource, which
216+
exposes the Ingress Controller pods via a BIG-IP system. The IP
217+
of the BIG-IP system is used when reporting the status of Ingress,
218+
VirtualServer and VirtualServerRoute resources. Requires reportIngressStatus.enable
219+
set to true. Note: Only if serviceType is NodePort and reportIngressStatus.externalService
220+
is not set.'
221+
type: string
222+
required:
223+
- enable
224+
type: object
225+
service:
226+
description: The service of the Ingress controller.
227+
nullable: true
228+
properties:
229+
extraLabels:
230+
additionalProperties:
231+
type: string
232+
description: Specifies extra labels of the service.
233+
type: object
234+
type: object
235+
serviceType:
236+
description: 'The type of the Service for the Ingress Controller. Valid
237+
Service types are: NodePort and LoadBalancer.'
238+
enum:
239+
- NodePort
240+
- LoadBalancer
241+
type: string
242+
type:
243+
description: The type of the Ingress Controller installation - deployment
244+
or daemonset.
245+
enum:
246+
- deployment
247+
- daemonset
248+
type: string
249+
useIngressClassOnly:
250+
description: Ignore Ingress resources without the “kubernetes.io/ingress.class”
251+
annotation.
252+
type: boolean
253+
watchNamespace:
254+
description: Namespace to watch for Ingress resources. By default the
255+
Ingress controller watches all namespaces.
256+
type: string
257+
wildcardTLS:
258+
description: A Secret with a TLS certificate and key for TLS termination
259+
of every Ingress host for which TLS termination is enabled but the
260+
Secret is not specified. The secret must be of the type kubernetes.io/tls.
261+
If the argument is not set, for such Ingress hosts NGINX will break
262+
any attempt to establish a TLS connection. If the argument is set,
263+
but the Ingress controller is not able to fetch the Secret from Kubernetes
264+
API, the Ingress Controller will fail to start. Format is namespace/name.
265+
type: string
266+
required:
267+
- image
268+
- serviceType
269+
- type
270+
type: object
271+
status:
272+
description: NginxIngressControllerStatus defines the observed state of
273+
NginxIngressController
274+
properties:
275+
deployed:
276+
description: Deployed is true if the Operator has finished the deployment
277+
of the NginxIngressController.
278+
type: boolean
279+
required:
280+
- deployed
281+
type: object
282+
type: object
283+
version: v1alpha1
284+
versions:
285+
- name: v1alpha1
286+
served: true
287+
storage: true

0 commit comments

Comments
 (0)