Skip to content

Commit 06c921f

Browse files
authored
Merge pull request #44997 from drewhagen/merged-main-dev-1.30
Merge main branch into dev-1.30
2 parents 74aea81 + e4da56e commit 06c921f

File tree

30 files changed

+2279
-157
lines changed

30 files changed

+2279
-157
lines changed

content/en/docs/concepts/security/rbac-good-practices.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ In cases where a workload requires powerful permissions, consider the following
5656
[Taints and Toleration](/docs/concepts/scheduling-eviction/taint-and-toleration/),
5757
[NodeAffinity](/docs/concepts/scheduling-eviction/assign-pod-node/#node-affinity), or
5858
[PodAntiAffinity](/docs/concepts/scheduling-eviction/assign-pod-node/#inter-pod-affinity-and-anti-affinity)
59-
to ensure pods don't run alongside untrusted or less-trusted Pods. Pay especial attention to
59+
to ensure pods don't run alongside untrusted or less-trusted Pods. Pay special attention to
6060
situations where less-trustworthy Pods are not meeting the **Restricted** Pod Security Standard.
6161

6262
### Hardening
@@ -130,8 +130,8 @@ reading data from other containers, and abusing the credentials of system servic
130130

131131
You should only allow access to create PersistentVolume objects for:
132132

133-
- users (cluster operators) that need this access for their work, and who you trust,
134-
- the Kubernetes control plane components which creates PersistentVolumes based on PersistentVolumeClaims
133+
- Users (cluster operators) that need this access for their work, and who you trust.
134+
- The Kubernetes control plane components which creates PersistentVolumes based on PersistentVolumeClaims
135135
that are configured for automatic provisioning.
136136
This is usually setup by the Kubernetes provider or by the operator when installing a CSI driver.
137137

content/en/docs/concepts/services-networking/dns-pod-service.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -213,7 +213,7 @@ When you set `setHostnameAsFQDN: true` in the Pod spec, the kubelet writes the P
213213
{{< note >}}
214214
In Linux, the hostname field of the kernel (the `nodename` field of `struct utsname`) is limited to 64 characters.
215215

216-
If a Pod enables this feature and its FQDN is longer than 64 character, it will fail to start. The Pod will remain in `Pending` status (`ContainerCreating` as seen by `kubectl`) generating error events, such as Failed to construct FQDN from Pod hostname and cluster domain, FQDN `long-FQDN` is too long (64 characters is the max, 70 characters requested). One way of improving user experience for this scenario is to create an [admission webhook controller](/docs/reference/access-authn-authz/extensible-admission-controllers/#admission-webhooks) to control FQDN size when users create top level objects, for example, Deployment.
216+
If a Pod enables this feature and its FQDN is longer than 64 character, it will fail to start. The Pod will remain in `Pending` status (`ContainerCreating` as seen by `kubectl`) generating error events, such as Failed to construct FQDN from Pod hostname and cluster domain, FQDN `long-FQDN` is too long (64 characters is the max, 70 characters requested). One way of improving user experience for this scenario is to create an [admission webhook controller](/docs/reference/access-authn-authz/extensible-admission-controllers/#what-are-admission-webhooks) to control FQDN size when users create top level objects, for example, Deployment.
217217
{{< /note >}}
218218

219219
### Pod's DNS Policy

content/en/docs/contribute/new-content/blogs-case-studies.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -124,6 +124,10 @@ Submissions need to be in Markdown format to be used by the [Hugo](https://gohug
124124
for the blog. There are [many resources available](https://gohugo.io/documentation/) on how to use
125125
this technology stack.
126126

127+
For illustrations, diagrams or charts, the [figure shortcode](https://gohugo.io/content-management/shortcodes/#figure)
128+
can be used. For other images, we strongly encourage use of alt attributes; if an image doesn't
129+
need any alt attrribute, maybe it's not needed in the article at all.
130+
127131
We recognize that this requirement makes the process more difficult for less-familiar folks to
128132
submit, and we're constantly looking at solutions to lower this bar. If you have ideas on how to
129133
lower the barrier, please volunteer to help out.

content/en/docs/reference/command-line-tools-reference/feature-gates/default-host-network-ports-in-pod-templates.md

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,12 @@ stages:
1010
defaultValue: false
1111
fromVersion: "1.28"
1212
---
13-
Changes when the default value of
14-
`PodSpec.containers[*].ports[*].hostPort`
15-
is assigned. The default is to only set a default value in Pods.
13+
This feature gate controls the point at which a default value for
14+
`.spec.containers[*].ports[*].hostPort`
15+
is assigned, for Pods using `hostNetwork: true`. The default since Kubernetes v1.28 is to only set a default
16+
value in Pods.
1617

17-
Enabling this means a default will be assigned even to embedded
18-
PodSpecs (e.g. in a Deployment), which is the historical default.
18+
Enabling this means a default will be assigned even to the `.spec` of an embedded
19+
[PodTemplate](/docs/concepts/workloads/pods/#pod-templates) (for example, in a Deployment),
20+
which is the way that older releases of Kubernetes worked.
21+
You should migrate your code so that it does not rely on the legacy behavior.

content/en/docs/reference/using-api/cel.md

Lines changed: 59 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -65,27 +65,21 @@ Example CEL expressions:
6565

6666
CEL is configured with the following options, libraries and language features, introduced at the specified Kubernetes versions:
6767

68-
| CEL option, library or language feature | Included | Availablity |
69-
| --------------------------------------------------- | --------------------------------------------------------------------------------------------------------------- | -------------------------- |
70-
| [Standard macros](stdmacros) | `has`, `all`, `exists`, `exists_one`, `map`, `filter` | All Kubernetes versions |
71-
| [Standard functions](stdlib) | See [official list of standard definitions](stdlib) | All Kubernetes versions |
72-
| [Homogeneous Aggregate Literals](opt1) | | All Kubernetes versions |
73-
| [Default UTC Time Zone](opt2) | | All Kubernetes versions |
74-
| [Eagerly Validate Declarations](opt3) | | All Kubernetes versions |
75-
| [extended strings library](stringsgodoc), Version 1 | `charAt`, `indexOf`, `lastIndexOf`, `lowerAscii`, `upperAscii`, `replace`, `split`, `join`, `substring`, `trim` | All Kubernetes versions |
76-
| Kubernetes list library | See [Kubernetes list library](#kubernetes-list-library) | All Kubernetes versions |
77-
| Kubernetes regex library | See [Kubernetes regex library](#kubernetes-regex-library) | All Kubernetes versions |
78-
| Kubernetes URL library | See [Kubernetes URL library](#kubernetes-url-library) | All Kubernetes versions |
79-
| Kubernetes authorizer library | See [Kubernetes authorizer library](#kubernetes-authorizer-library) | All Kubernetes versions |
80-
81-
[stdmacros]: https://github.com/google/cel-spec/blob/v0.7.0/doc/langdef.md#macros
82-
[stdlib]: https://github.com/google/cel-spec/blob/master/doc/langdef.md#list-of-standard-definitions
83-
[stringsgodoc]: https://pkg.go.dev/github.com/google/cel-go/ext#Strings
84-
[opt1]: https://pkg.go.dev/github.com/google/[email protected]/cel#HomogeneousAggregateLiterals
85-
[opt2]: https://pkg.go.dev/github.com/google/[email protected]/cel#DefaultUTCTimeZone
86-
[opt3]: https://pkg.go.dev/github.com/google/[email protected]/cel#EagerlyValidateDeclarations
87-
[opt4]: https://pkg.go.dev/github.com/google/[email protected]/cel#OptionalTypes
88-
[opt5]: https://pkg.go.dev/github.com/google/[email protected]/cel#CrossTypeNumericComparisons
68+
| CEL option, library or language feature | Included | Availablity |
69+
|------------------------------------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------|---------------------------|
70+
| [Standard macros](https://github.com/google/cel-spec/blob/v0.7.0/doc/langdef.md#macros) | `has`, `all`, `exists`, `exists_one`, `map`, `filter` | All Kubernetes versions |
71+
| [Standard functions](https://github.com/google/cel-spec/blob/master/doc/langdef.md#list-of-standard-definitions) | See [official list of standard definitions](https://github.com/google/cel-spec/blob/master/doc/langdef.md#list-of-standard-definitions) | All Kubernetes versions |
72+
| [Homogeneous Aggregate Literals](https://pkg.go.dev/github.com/google/[email protected]/cel#HomogeneousAggregateLiterals) | | All Kubernetes versions |
73+
| [Default UTC Time Zone](https://pkg.go.dev/github.com/google/[email protected]/cel#DefaultUTCTimeZone) | | All Kubernetes versions |
74+
| [Eagerly Validate Declarations](https://pkg.go.dev/github.com/google/[email protected]/cel#EagerlyValidateDeclarations) | | All Kubernetes versions |
75+
| [extended strings library](https://pkg.go.dev/github.com/google/cel-go/ext#Strings), Version 1 | `charAt`, `indexOf`, `lastIndexOf`, `lowerAscii`, `upperAscii`, `replace`, `split`, `join`, `substring`, `trim` | All Kubernetes versions |
76+
| Kubernetes list library | See [Kubernetes list library](#kubernetes-list-library) | All Kubernetes versions |
77+
| Kubernetes regex library | See [Kubernetes regex library](#kubernetes-regex-library) | All Kubernetes versions |
78+
| Kubernetes URL library | See [Kubernetes URL library](#kubernetes-url-library) | All Kubernetes versions |
79+
| Kubernetes authorizer library | See [Kubernetes authorizer library](#kubernetes-authorizer-library) | All Kubernetes versions |
80+
| Kubernetes quantity library | See [Kubernetes quantity library](#kubernetes-quantity-library) | Kubernetes versions 1.29+ |
81+
| CEL optional types | See [CEL optional types](https://pkg.go.dev/github.com/google/[email protected]/cel#OptionalTypes) | Kubernetes versions 1.29+ |
82+
| CEL CrossTypeNumericComparisons | See [CEL CrossTypeNumericComparisons](https://pkg.go.dev/github.com/google/[email protected]/cel#CrossTypeNumericComparisons) | Kubernetes versions 1.29+ |
8983

9084
CEL functions, features and language settings support Kubernetes control plane
9185
rollbacks. For example, _CEL Optional Values_ was introduced at Kubernetes 1.29
@@ -207,6 +201,50 @@ To perform an authorization check for a service account:
207201
See the [Kubernetes Authz library](https://pkg.go.dev/k8s.io/apiserver/pkg/cel/library#Authz)
208202
godoc for more information.
209203

204+
### Kubernetes quantity library
205+
206+
Kubernetes 1.28 adds support for manipulating quantity strings (ex 1.5G, 512k, 20Mi)
207+
208+
- `isQuantity(string)` checks if a string is a valid Quantity according to [Kubernetes'
209+
resource.Quantity](https://pkg.go.dev/k8s.io/apimachinery/pkg/api/resource#Quantity).
210+
- `quantity(string) Quantity` converts a string to a Quantity or results in an error if the
211+
string is not a valid quantity.
212+
213+
Once parsed via the `quantity` function, the resulting Quantity object has the
214+
following library of member functions:
215+
216+
{{< table caption="Available member functions of a Quantity" >}}
217+
| Member Function | CEL Return Value | Description |
218+
|-------------------------------|-------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------|
219+
| `isInteger()` | bool | returns true if and only if asInteger is safe to call without an error |
220+
| `asInteger()` | int | returns a representation of the current value as an int64 if possible or results in an error if conversion would result in overflow or loss of precision. |
221+
| `asApproximateFloat()` | float | returns a float64 representation of the quantity which may lose precision. If the value of the quantity is outside the range of a float64 +Inf/-Inf will be returned. |
222+
| `sign()` | int | Returns `1` if the quantity is positive, `-1` if it is negative. `0` if it is zero |
223+
| `add(<Quantity>)` | Quantity | Returns sum of two quantities |
224+
| `add(<int>)` | Quantity | Returns sum of quantity and an integer |
225+
| `sub(<Quantity>)` | Quantity | Returns difference between two quantities |
226+
| `sub(<int>)` | Quantity | Returns difference between a quantity and an integer |
227+
| `isLessThan(<Quantity>)` | bool | Returns true if and only if the receiver is less than the operand |
228+
| `isGreaterThan(<Quantity>)` | bool | Returns true if and only if the receiver is greater than the operand |
229+
| `compareTo(<Quantity>)` | int | Compares receiver to operand and returns 0 if they are equal, 1 if the receiver is greater, or -1 if the receiver is less than the operand |
230+
{{< /table >}}
231+
232+
Examples:
233+
234+
{{< table caption="Examples of CEL expressions using URL library functions" >}}
235+
| CEL Expression | Purpose |
236+
|---------------------------------------------------------------------------|-------------------------------------------------------|
237+
| `quantity("500000G").isInteger()` | Test if conversion to integer would throw an error |
238+
| `quantity("50k").asInteger()` | Precise conversion to integer |
239+
| `quantity("9999999999999999999999999999999999999G").asApproximateFloat()` | Lossy conversion to float |
240+
| `quantity("50k").add("20k")` | Add two quantities |
241+
| `quantity("50k").sub(20000)` | Subtract an integer from a quantity |
242+
| `quantity("50k").add(20).sub(quantity("100k")).sub(-50000)` | Chain adding and subtracting integers and quantities |
243+
| `quantity("200M").compareTo(quantity("0.2G"))` | Compare two quantities |
244+
| `quantity("150Mi").isGreaterThan(quantity("100Mi"))` | Test if a quantity is greater than the receiver |
245+
| `quantity("50M").isLessThan(quantity("100M"))` | Test if a quantity is less than the receiver |
246+
{{< /table >}}
247+
210248
## Type checking
211249

212250
CEL is a [gradually typed language](https://github.com/google/cel-spec/blob/master/doc/langdef.md#gradual-type-checking).

content/en/docs/tasks/manage-gpus/scheduling-gpus.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -95,12 +95,13 @@ You also need a plugin for NFD that adds appropriate labels to your nodes; these
9595
labels or they could be vendor specific. Your GPU vendor may provide a third party
9696
plugin for NFD; check their documentation for more details.
9797

98-
{{< highlight yaml "linenos=false,hl_lines=6-18" >}}
98+
{{< highlight yaml "linenos=false,hl_lines=7-18" >}}
9999
apiVersion: v1
100100
kind: Pod
101101
metadata:
102102
name: example-vector-add
103103
spec:
104+
restartPolicy: OnFailure
104105
# You can use Kubernetes node affinity to schedule this Pod onto a node
105106
# that provides the kind of GPU that its container needs in order to work
106107
affinity:
@@ -113,7 +114,6 @@ spec:
113114
values: ["40535"]
114115
- key: "feature.node.kubernetes.io/pci-10.present" # NFD Feature label
115116
values: ["true"] # (optional) only schedule on nodes with PCI device 10
116-
restartPolicy: OnFailure
117117
containers:
118118
- name: example-vector-add
119119
image: "registry.example/example-vector-add:v42"

content/ja/docs/concepts/services-networking/ingress-controllers.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ Ingressリソースが動作するためには、クラスターでIngressコン
4747
* [Skipper](https://opensource.zalando.com/skipper/kubernetes/ingress-controller/)は、カスタムプロキシーを構築するためのライブラリーとして設計された、Kubernetes Ingressなどのユースケースを含む、サービス構成用のHTTPルーターとリバースプロキシーです。
4848
* [Traefik Kubernetes Ingress provider](https://doc.traefik.io/traefik/providers/kubernetes-ingress/)は、[Traefik](https://traefik.io/traefik/) proxy向けのIngressコントローラーです。
4949
* [Tyk Operator](https://github.com/TykTechnologies/tyk-operator)はAPI管理機能をIngressに持たせるためにCustom ResourcesでAPIを拡張します。Tyk OperatorはOpen Source Tyk GatewayとTyk Cloudコントロールプレーンで動作します。
50-
* [Voyager](https://appscode.com/products/voyager)は、[HAProxy](https://www.haproxy.org/#desc)向けのIngressコントローラーです。
50+
* [Voyager](https://voyagermesh.com)は、[HAProxy](https://www.haproxy.org/#desc)向けのIngressコントローラーです。
5151
* [Wallarm Ingress Controller](https://www.wallarm.com/solutions/waf-for-kubernetes)はWAAP(WAF)やAPIセキュリティ機能を提供するIngressコントローラーです。
5252

5353
## 複数のIngressコントローラーの使用 {#using-multiple-ingress-controllers}

0 commit comments

Comments
 (0)