Skip to content

Commit 0e54695

Browse files
Merge pull request #2001 from cert-manager/release-next
[master] (release 1.20) Merge release-next into master
2 parents fd58892 + 1c95724 commit 0e54695

File tree

18 files changed

+940
-160
lines changed

18 files changed

+940
-160
lines changed

.spelling

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -594,8 +594,17 @@ v1.18.0.
594594
v1.19
595595
v1.19.0
596596
v1.19.1
597+
v1.20.0
597598
v1.19.2
599+
v1.20.0
600+
v1.19.x
601+
v1.20.0
602+
v1.20.
603+
v1.19.2
604+
v1.20.0
605+
Rebranding
598606
alpha.0
607+
beta.0
599608
v1.4.1
600609
v1.5
601610
v1.5.0
@@ -861,6 +870,9 @@ example.org
861870
experimental.cert
862871
http01-edit-in-place
863872
http01-ingress-class
873+
http01-ingress-ingressclassname
874+
http01-parentrefkind
875+
http01-parentrefname
864876
ingress.class
865877
ip-sans
866878
kubernetes.io

content/docs/cli/controller.md

Lines changed: 73 additions & 67 deletions
Large diffs are not rendered by default.

content/docs/cli/webhook.md

Lines changed: 4 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -15,27 +15,21 @@ Usage:
1515
1616
Flags:
1717
--api-server-host string Optional apiserver host address to connect to. If not specified, autoconfiguration will be attempted.
18+
--client-ca-path string The client cert CA used to verify clients contacting webhooks.
19+
--client-subject-names strings One or more client certificate subject names (CN or DNS SAN) that the apiserver may present when contacting the webhook. Should be a comma-separated list.
1820
--config string Path to a file containing a WebhookConfiguration object used to configure the webhook
1921
--dynamic-serving-ca-secret-name string name of the secret used to store the CA that signs serving certificates
2022
--dynamic-serving-ca-secret-namespace string namespace of the secret used to store the CA that signs serving certificates
2123
--dynamic-serving-dns-names strings DNS names that should be present on certificates generated by the dynamic serving CA
2224
--dynamic-serving-leaf-duration duration leaf duration of serving certificates (default 168h0m0s)
25+
--enable-client-verification Enable client cert authenticate of apiserver to webhooks.
2326
--enable-profiling Enable profiling for webhook.
2427
--feature-gates mapStringBool A set of key=value pairs that describe feature gates for alpha/experimental features. Options are:
25-
ACMEHTTP01IngressPathTypeExact=true|false (BETA - default=true)
2628
AllAlpha=true|false (ALPHA - default=false)
2729
AllBeta=true|false (BETA - default=false)
28-
DefaultPrivateKeyRotationPolicyAlways=true|false (BETA - default=true)
29-
ExperimentalCertificateSigningRequestControllers=true|false (ALPHA - default=false)
30-
ExperimentalGatewayAPISupport=true|false (BETA - default=true)
3130
LiteralCertificateSubject=true|false (BETA - default=true)
3231
NameConstraints=true|false (BETA - default=true)
33-
OtherNames=true|false (ALPHA - default=false)
34-
SecretsFilteredCaching=true|false (BETA - default=true)
35-
ServerSideApply=true|false (ALPHA - default=false)
36-
StableCertificateRequestName=true|false (BETA - default=true)
37-
UseCertificateRequestBasicConstraints=true|false (ALPHA - default=false)
38-
ValidateCAA=true|false (ALPHA - default=false)
32+
OtherNames=true|false (BETA - default=true)
3933
--healthz-port int32 port number to listen on for insecure healthz connections (default 6080)
4034
-h, --help help for webhook
4135
--kubeconfig string optional path to the kubeconfig used to connect to the apiserver. If not specified, in-cluster-config will be used

content/docs/configuration/acme/http01/README.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,9 @@ controllers support `ingressClassName`, with the notable exception of
6969
ingress-gce (as per the page [Configure Ingress for external load
7070
balancing](https://cloud.google.com/kubernetes-engine/docs/how-to/load-balance-ingress)).
7171

72+
> You can override the `ingressClassName` on a per-Ingress basis using the
73+
[`acme.cert-manager.io/http01-ingress-ingressclassname`](https://cert-manager.io/docs/reference/annotations/#acmecert-manageriohttp01-ingress-ingressclassname) annotation.
74+
7275
### `class`
7376

7477
If the `class` field is specified, a new Ingress resource with a randomly
@@ -79,6 +82,9 @@ value set to the value of the `class` field.
7982
This field is only recommended with ingress-gce. ingress-gce [doesn't support the
8083
`ingressClassName` field](https://cloud.google.com/kubernetes-engine/docs/how-to/load-balance-ingress).
8184

85+
> You can override the `class` on a per-Ingress basis using the
86+
[`acme.cert-manager.io/http01-ingress-class`](https://cert-manager.io/docs/reference/annotations/#acmecert-manageriohttp01-ingress-class) annotation.
87+
8288
### `name`
8389

8490
If the `name` field is specified, cert-manager will edit the named

content/docs/configuration/venafi.md

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -304,3 +304,45 @@ metadata:
304304
]
305305
...
306306
```
307+
308+
### Issuer Custom Fields
309+
310+
Starting `v1.20`, you can use `venafi.cert-manager.io/custom-fields` annotation on an `Issuer` or `ClusterIssuer` resource.
311+
This configuration would be applied to all Certificate requests created from `Issuer`.
312+
313+
It is possible to override or append custom configuration to `Certificate` resources via the `Issuer` assigned to it.
314+
For example with an `Issuer` such as:
315+
316+
```yaml
317+
apiVersion: cert-manager.io/v1
318+
kind: Issuer
319+
metadata:
320+
name: corp-issuer
321+
annotations:
322+
venafi.cert-manager.io/custom-fields: |-
323+
[
324+
{"name": "Environemnt", "value": "Dev"},
325+
]
326+
```
327+
328+
and a `Certificate` resource:
329+
330+
```yaml
331+
apiVersion: cert-manager.io/v1
332+
kind: Certificate
333+
metadata:
334+
name: example-com-certificate
335+
annotations:
336+
venafi.cert-manager.io/custom-fields: |-
337+
[
338+
{"name": "Team", "value": "amber"},
339+
]
340+
...
341+
```
342+
343+
Final configuration will be:
344+
345+
```json
346+
{"name": "Environemnt", "value": "Dev"},
347+
{"name": "Team", "value": "amber"}
348+
```

content/docs/installation/best-practice.md

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,44 @@ Or you may prefer to use the custom resources provided by your CNI software.
4747
> 📖 Learn about the [Kubernetes builtin NetworkPolicy API](https://kubernetes.io/docs/concepts/services-networking/network-policies/)
4848
> and see [some example policies](https://kubernetes.io/docs/concepts/services-networking/network-policies/#default-policies).
4949
50+
The cert-manager Helm chart allows you to create a `NetworkPolicy` resource for
51+
each `Deployment`.
52+
53+
By default, it allows inbound traffic to all the listening ports of each component.
54+
And by default, it allows outbound traffic to:
55+
- TCP port 443: For connections to the Kubernetes API server and other
56+
in-cluster and external HTTPS API servers.
57+
- TCP port 6443: For connections to the Kubernetes API server on OpenShift.
58+
- TCP and UDP port 53: To resolve DNS names using the in-cluster DNS and
59+
external DNS servers when using DNS01.
60+
- TCP port 80: So that the controller can perform ACME HTTP01 self-checks before
61+
accepting the ACME server challenge.
62+
63+
These are over-permissive defaults to provide a good installation experience.
64+
65+
You should customize the `ingress` and `egress` rules to restrict the inbound
66+
and outbound traffic to allow only those connections which are necessary for
67+
your cert-manager configuration.
68+
69+
Example Helm values:
70+
71+
```yaml
72+
# helm-values.yaml
73+
networkPolicy:
74+
enabled: true
75+
76+
webhook:
77+
networkPolicy:
78+
enabled: true
79+
80+
cainjector:
81+
networkPolicy:
82+
enabled: true
83+
```
84+
85+
There are examples of extended egress rules in the example Helm chart values
86+
file at the end of this document.
87+
5088
### Network Requirements
5189
5290
Here is an overview of the network requirements:

content/docs/manifest.json

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,16 @@
2121
"path": "/docs/releases/README.md"
2222
},
2323
{
24-
"title": "1.19",
25-
"path": "/docs/releases/release-notes/release-notes-1.19.md"
24+
"title": "1.20",
25+
"path": "/docs/releases/release-notes/release-notes-1.20.md"
26+
},
27+
{
28+
"title": "Upgrade 1.19 to 1.20",
29+
"path": "/docs/releases/upgrading/upgrading-1.19-1.20.md"
30+
},
31+
{
32+
"title": "1.19",
33+
"path": "/docs/releases/release-notes/release-notes-1.19.md"
2634
},
2735
{
2836
"title": "Upgrade 1.18 to 1.19",

content/docs/reference/annotations.md

Lines changed: 37 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -27,12 +27,43 @@ This is useful for keeping compatibility with the `ingress-gce` component.
2727
## acme.cert-manager.io/http01-ingress-class
2828
- [Ingress](../usage/ingress.md)
2929

30-
this annotation allows you to configure the ingress class that will be used to
31-
solve challenges for this ingress. Customizing this is useful when you are
32-
trying to secure internal services, and need to solve challenges using a
33-
different ingress class to that of the ingress. If not specified and the
34-
`acme-http01-edit-in-place` annotation is not set, this defaults to the ingress
35-
class defined in the Issuer resource.
30+
Allows the `kubernetes.io/ingress.class` annotation to be configured.
31+
Customizing this is useful when you are trying
32+
to secure internal services, and need to solve challenges using a different ingress class
33+
to that of the ingress. If not specified and the `acme-http01-edit-in-place` annotation is
34+
not set, this defaults to the `http01.ingress.class` defined in the Issuer resource.
35+
36+
## acme.cert-manager.io/http01-ingress-ingressclassname
37+
38+
- [Ingress](../usage/ingress.md)
39+
40+
Allows the Ingress's `spec.ingressClassName` to be configured.
41+
Customizing this is useful when you are trying
42+
to secure internal services, and need to solve challenges using a different ingress class
43+
to that of the ingress. If not specified and the `acme-http01-edit-in-place` annotation is
44+
not set, this defaults to the `http01.ingress.ingressClassName` defined in the Issuer resource.
45+
46+
## acme.cert-manager.io/http01-parentrefkind
47+
48+
- [Certificate](../usage/certificate.md)
49+
50+
This annotation is automatically added by cert-manager to Certificate resources
51+
when they are created from a [Gateway](../usage/gateway.md) or
52+
[ListenerSet](../usage/gateway.md#listenerset) resource. It stores the kind of
53+
the parent resource (either `Gateway` or `ListenerSet`) that triggered the
54+
creation of the Certificate. This is used internally by the ACME HTTP-01 solver
55+
to know where to attach the temporary HTTPRoute for the challenge.
56+
57+
## acme.cert-manager.io/http01-parentrefname
58+
59+
- [Certificate](../usage/certificate.md)
60+
61+
This annotation is automatically added by cert-manager to Certificate resources
62+
when they are created from a [Gateway](../usage/gateway.md) or
63+
[ListenerSet](../usage/gateway.md#listenerset) resource. It stores the name of
64+
the parent resource that triggered the creation of the Certificate. This is used
65+
internally by the ACME HTTP-01 solver to know where to attach the temporary
66+
HTTPRoute for the challenge.
3667

3768
## cert-manager.io/allow-direct-injection
3869
- `Secret`

0 commit comments

Comments
 (0)