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

Commit 3e53644

Browse files
committed
charts/osm: use image digest for default images
Default images corresponding to the latest released image should use the image digest instead of tags to avoid supply chain attacks, which tags are vulernable to due to being mutatble. Image digests are immutable. Image tags will be used only if specified. Part of #3715 Signed-off-by: Shashank Ram <[email protected]>
1 parent 6e9464d commit 3e53644

File tree

10 files changed

+101
-12
lines changed

10 files changed

+101
-12
lines changed

charts/osm/README.md

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -100,9 +100,15 @@ The following table lists the configurable parameters of the osm chart and their
100100
| OpenServiceMesh.fluentBit.workspaceId | string | `""` | WorkspaceId for Fluent Bit output plugin to Log Analytics |
101101
| OpenServiceMesh.grafana.enableRemoteRendering | bool | `false` | Enable Remote Rendering in Grafana |
102102
| OpenServiceMesh.grafana.port | int | `3000` | Grafana service's port |
103-
| OpenServiceMesh.image.pullPolicy | string | `"IfNotPresent"` | Container image pull policy |
104-
| OpenServiceMesh.image.registry | string | `"openservicemesh"` | Container image registry |
105-
| OpenServiceMesh.image.tag | string | `"v0.9.2"` | Container image tag |
103+
| OpenServiceMesh.image.digest | object | `{"osmBootstrap":"","osmCRDs":"","osmController":"sha256:f77659d771d82c8f053bf008fd513574bde5021ea344289ffd47de863fac4461","osmInjector":"sha256:c3ded5e1cd4b02474aac573a7437c8e8a91ada556e05060701af4be3982c02b2","osmSidecarInit":"sha256:3717f5054f835ccefc751c6fe5d4b2824038dc49514e811bf867093206ec2ce1"}` | Image digest (defaults to latest release) |
104+
| OpenServiceMesh.image.digest.osmBootstrap | string | `""` | osm-boostrap's image digest for v0.9.2 (not available) |
105+
| OpenServiceMesh.image.digest.osmCRDs | string | `""` | osm-crds' image digest for v0.9.2 (not available) |
106+
| OpenServiceMesh.image.digest.osmController | string | `"sha256:f77659d771d82c8f053bf008fd513574bde5021ea344289ffd47de863fac4461"` | osm-controller's image digest for v0.9.2 |
107+
| OpenServiceMesh.image.digest.osmInjector | string | `"sha256:c3ded5e1cd4b02474aac573a7437c8e8a91ada556e05060701af4be3982c02b2"` | osm-injector's image digest for v0.9.2 |
108+
| OpenServiceMesh.image.digest.osmSidecarInit | string | `"sha256:3717f5054f835ccefc751c6fe5d4b2824038dc49514e811bf867093206ec2ce1"` | Sidecar init container's image digest for v0.9.2 |
109+
| OpenServiceMesh.image.pullPolicy | string | `"IfNotPresent"` | Container image pull policy for control plane containers |
110+
| OpenServiceMesh.image.registry | string | `"openservicemesh"` | Container image registry for control plane images |
111+
| OpenServiceMesh.image.tag | string | `""` | Container image tag for control plane images |
106112
| OpenServiceMesh.imagePullSecrets | list | `[]` | `osm-controller` image pull secret |
107113
| OpenServiceMesh.inboundPortExclusionList | list | `[]` | Specifies a global list of ports to exclude from inbound traffic interception by the sidecar proxy. If specified, must be a list of positive integers. |
108114
| OpenServiceMesh.injector.autoScale | object | `{"enable":false,"maxReplicas":5,"minReplicas":1,"targetAverageUtilization":80}` | Auto scale configuration |

charts/osm/templates/cleanup-hook.yaml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -128,7 +128,11 @@ spec:
128128
restartPolicy: Never
129129
containers:
130130
- name: garbage-collector
131+
{{- if .Values.OpenServiceMesh.image.tag }}
131132
image: "{{ .Values.OpenServiceMesh.image.registry }}/osm-crds:{{ .Values.OpenServiceMesh.image.tag }}"
133+
{{- else }}
134+
image: "{{ .Values.OpenServiceMesh.image.registry }}/osm-crds@{{ .Values.OpenServiceMesh.image.digest.osmCRDs }}"
135+
{{- end }}
132136
imagePullPolicy: {{ .Values.OpenServiceMesh.image.pullPolicy }}
133137
command:
134138
- sh

charts/osm/templates/osm-bootstrap-deployment.yaml

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,15 +33,23 @@ spec:
3333
kubernetes.io/os: linux
3434
initContainers:
3535
- name: init-osm-bootstrap
36+
{{- if .Values.OpenServiceMesh.image.tag }}
3637
image: "{{ .Values.OpenServiceMesh.image.registry }}/osm-crds:{{ .Values.OpenServiceMesh.image.tag }}"
38+
{{- else }}
39+
image: "{{ .Values.OpenServiceMesh.image.registry }}/osm-crds@{{ .Values.OpenServiceMesh.image.digest.osmCRDs }}"
40+
{{- end }}
3741
imagePullPolicy: {{ .Values.OpenServiceMesh.image.pullPolicy }}
3842
args:
3943
- apply
4044
- -f
4145
- /osm-crds
4246
containers:
4347
- name: osm-bootstrap
48+
{{- if .Values.OpenServiceMesh.image.tag }}
4449
image: "{{ .Values.OpenServiceMesh.image.registry }}/osm-bootstrap:{{ .Values.OpenServiceMesh.image.tag }}"
50+
{{- else }}
51+
image: "{{ .Values.OpenServiceMesh.image.registry }}/osm-bootstrap@{{ .Values.OpenServiceMesh.image.digest.osmBootstrap }}"
52+
{{- end }}
4553
imagePullPolicy: {{ .Values.OpenServiceMesh.image.pullPolicy }}
4654
ports:
4755
- name: "tls"

charts/osm/templates/osm-deployment.yaml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,11 @@ spec:
4747
done
4848
containers:
4949
- name: osm-controller
50+
{{- if .Values.OpenServiceMesh.image.tag }}
5051
image: "{{ .Values.OpenServiceMesh.image.registry }}/osm-controller:{{ .Values.OpenServiceMesh.image.tag }}"
52+
{{- else }}
53+
image: "{{ .Values.OpenServiceMesh.image.registry }}/osm-controller@{{ .Values.OpenServiceMesh.image.digest.osmController }}"
54+
{{- end }}
5155
imagePullPolicy: {{ .Values.OpenServiceMesh.image.pullPolicy }}
5256
ports:
5357
- name: "admin-port"

charts/osm/templates/osm-injector-deployment.yaml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,11 @@ spec:
4646
done
4747
containers:
4848
- name: osm-injector
49+
{{- if .Values.OpenServiceMesh.image.tag }}
4950
image: "{{ .Values.OpenServiceMesh.image.registry }}/osm-injector:{{ .Values.OpenServiceMesh.image.tag }}"
51+
{{- else }}
52+
image: "{{ .Values.OpenServiceMesh.image.registry }}/osm-injector@{{ .Values.OpenServiceMesh.image.digest.osmInjector }}"
53+
{{- end }}
5054
imagePullPolicy: {{ .Values.OpenServiceMesh.image.pullPolicy }}
5155
ports:
5256
- name: "sidecar-inject"

charts/osm/templates/preset-mesh-config.yaml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,11 @@ data:
1212
"maxDataPlaneConnections": {{.Values.OpenServiceMesh.maxDataPlaneConnections}},
1313
"envoyImage": "{{.Values.OpenServiceMesh.sidecarImage}}",
1414
"envoyWindowsImage": "{{.Values.OpenServiceMesh.sidecarWindowsImage}}",
15+
{{- if .Values.OpenServiceMesh.image.tag }}
1516
"initContainerImage": "{{ .Values.OpenServiceMesh.image.registry }}/init:{{ .Values.OpenServiceMesh.image.tag }}",
17+
{{- else }}
18+
"initContainerImage": "{{ .Values.OpenServiceMesh.image.registry }}/init@{{ .Values.OpenServiceMesh.image.digest.osmSidecarInit }}",
19+
{{- end }}
1620
"configResyncInterval": "{{.Values.OpenServiceMesh.configResyncInterval}}"
1721
},
1822
"traffic": {

charts/osm/values.schema.json

Lines changed: 47 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -214,7 +214,8 @@
214214
"required": [
215215
"registry",
216216
"pullPolicy",
217-
"tag"
217+
"tag",
218+
"digest"
218219
],
219220
"properties": {
220221
"registry": {
@@ -244,6 +245,51 @@
244245
"examples": [
245246
"v0.4.2"
246247
]
248+
},
249+
"digest": {
250+
"$id": "#/properties/OpenServiceMesh/properties/image/properties/digest",
251+
"type": "object",
252+
"title": "Default image digests",
253+
"description": "Default image digests for control plane.",
254+
"required": [
255+
"osmController",
256+
"osmInjector",
257+
"osmSidecarInit",
258+
"osmCRDs",
259+
"osmBootstrap"
260+
],
261+
"properties": {
262+
"osmController": {
263+
"$id": "#/properties/OpenServiceMesh/properties/image/properties/digest/properties/osmController",
264+
"type": "string",
265+
"title": "osm-controller's image digest",
266+
"description": "osm-controller container's image digest."
267+
},
268+
"osmInjector": {
269+
"$id": "#/properties/OpenServiceMesh/properties/image/properties/digest/properties/osmInjector",
270+
"type": "string",
271+
"title": "osm-injector's image digest",
272+
"description": "osm-injector container's image digest."
273+
},
274+
"osmSidecarInit": {
275+
"$id": "#/properties/OpenServiceMesh/properties/image/properties/digest/properties/osmSidecarInit",
276+
"type": "string",
277+
"title": "osm-osmSidecarInit's image digest",
278+
"description": "osm-osmSidecarInit container's image digest."
279+
},
280+
"osmCRDs": {
281+
"$id": "#/properties/OpenServiceMesh/properties/image/properties/digest/properties/osmCRDs",
282+
"type": "string",
283+
"title": "osm-crds' image digest",
284+
"description": "osm-crds container's image digest."
285+
},
286+
"osmBootstrap": {
287+
"$id": "#/properties/OpenServiceMesh/properties/image/properties/digest/properties/osmBootstrap",
288+
"type": "string",
289+
"title": "osm-boostrap's image digest",
290+
"description": "osm-bootstrap container's image digest."
291+
}
292+
}
247293
}
248294
},
249295
"additionalProperties": false

charts/osm/values.yaml

Lines changed: 17 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,12 +7,25 @@ OpenServiceMesh:
77
#
88
# -- OSM control plane image parameters
99
image:
10-
# -- Container image registry
10+
# -- Container image registry for control plane images
1111
registry: openservicemesh
12-
# -- Container image pull policy
12+
# -- Container image pull policy for control plane containers
1313
pullPolicy: IfNotPresent
14-
# -- Container image tag
15-
tag: v0.9.2
14+
# -- Container image tag for control plane images
15+
tag: ""
16+
# -- Image digest (defaults to latest release)
17+
digest:
18+
# -- osm-controller's image digest for v0.9.2
19+
osmController: "sha256:f77659d771d82c8f053bf008fd513574bde5021ea344289ffd47de863fac4461"
20+
# -- osm-injector's image digest for v0.9.2
21+
osmInjector: "sha256:c3ded5e1cd4b02474aac573a7437c8e8a91ada556e05060701af4be3982c02b2"
22+
# -- Sidecar init container's image digest for v0.9.2
23+
osmSidecarInit: "sha256:3717f5054f835ccefc751c6fe5d4b2824038dc49514e811bf867093206ec2ce1"
24+
# -- osm-crds' image digest for v0.9.2 (not available)
25+
osmCRDs: ""
26+
# -- osm-boostrap's image digest for v0.9.2 (not available)
27+
osmBootstrap: ""
28+
1629

1730
# -- `osm-controller` image pull secret
1831
imagePullSecrets: []

docs/release_guide.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -54,13 +54,13 @@ If there are other commits on the `main` branch to be included in the release (s
5454

5555
Create a new commit on the patch branch to update the hardcoded version information in the following locations:
5656

57-
* The container image tag in [charts/osm/values.yaml](/charts/osm/values.yaml)
57+
* The container image digests `OpenServiceMesh.image.digest` for images in [charts/osm/values.yaml](/charts/osm/values.yaml)
5858
* The chart and app version in [charts/osm/Chart.yaml](/charts/osm/Chart.yaml)
5959
* The default osm image tag in [osm cli mesh upgrade](/cmd/cli/mesh_upgrade.go)
6060
* The Helm chart [README.md](/charts/osm/README.md)
6161
- Necessary changes should be made automatically by running `make chart-readme`
62-
* The init container image version in [charts/osm/crds/meshconfig.yaml](/charts/osm/crds/meshconfig.yaml)
63-
* The init container image version in [pkg/constants/constants.go](/pkg/constants/constants.go)
62+
* The init container image digest in [charts/osm/crds/meshconfig.yaml](/charts/osm/crds/meshconfig.yaml)
63+
* The init container image digest in [pkg/constants/constants.go](/pkg/constants/constants.go)
6464
* The image versions contained in tests.
6565
- [pkg/configurator/methods_test.go](/pkg/configurator/methods_test.go)
6666
* The container image versions used in the examples.

pkg/constants/constants.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@ const (
6767
DefaultEnvoyWindowsImage = "envoyproxy/envoy-windows@sha256:c904fda95891ebbccb9b1f24c1a9482c8d01cbca215dd081fc8c8db36db85f85"
6868

6969
// DefaultInitContainerImage is the default init container image if not defined in the osm MeshConfig
70-
DefaultInitContainerImage = "openservicemesh/init:v0.9.2"
70+
DefaultInitContainerImage = "openservicemesh/init@sha256:3717f5054f835ccefc751c6fe5d4b2824038dc49514e811bf867093206ec2ce1"
7171

7272
// EnvoyPrometheusInboundListenerPort is Envoy's inbound listener port number for prometheus
7373
EnvoyPrometheusInboundListenerPort = 15010

0 commit comments

Comments
 (0)