Skip to content

Commit e39361d

Browse files
authored
ci: Prepare v0.3.0 release (#315)
Prepare v0.3.0 release Signed-off-by: Peter Engelbert
1 parent 980651c commit e39361d

18 files changed

+169
-73
lines changed

Makefile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
VERSION := v0.2.0
1+
VERSION := v0.3.0
22

33
# Image URL to use all building/pushing image targets
44
TRIVY_SCANNER_IMG ?= ghcr.io/azure/eraser-trivy-scanner:${VERSION}

charts/eraser/Chart.yaml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,8 @@ apiVersion: v2
22
name: eraser
33
description: A Helm chart for Eraser
44
type: application
5-
version: 0.2.0
6-
appVersion: v0.2.0
5+
version: 0.3.0
6+
appVersion: v0.3.0
77
home: https://github.com/Azure/eraser
88
sources:
99
- https://github.com/Azure/eraser.git

charts/eraser/README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,13 +33,13 @@ _See [helm install](https://helm.sh/docs/helm/helm_install/) for command documen
3333
| Parameter | Description | Default |
3434
| :-------------------------------------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :------------------------------------------------------------------------ |
3535
| controllerManager.image.repository | Image repository | `ghcr.io/azure/eraser-manager` |
36-
| controllerManager.image.tag | Image tag | Current release version: `v0.2.0` |
36+
| controllerManager.image.tag | Image tag | Current release version: `v0.3.0` |
3737
| controllerManager.image.pullPolicy | Image pull policy | `Always` |
3838
| controllerManager.securityContext | Security context applied on the container | `{ allowPrivilegeEscalation: false }` |
3939
| controllerManager.resources | The resource request/limits for the container image | limits: 0.1 CPU, 30Mi, requests: 0.1 CPU, 20Mi |
4040
| controllerManager.nodeSelector | The node selector to use for pod scheduling | `kubernetes.io/os: linux` |
4141
| controllerManager.tolerations | The tolerations to use for pod scheduling | `[]` |
4242
| controllerManager.affinity | The node affinity to use for pod scheduling | `{}` |
4343
| eraser.image.repository | Image repository for worker | `ghcr.io/azure/eraser` |
44-
| eraser.image.tag | Image tag for worker | Current release version: `v0.2.0` |
44+
| eraser.image.tag | Image tag for worker | Current release version: `v0.3.0` |
4545
| nameOverride | Override name if needed | `""` |

charts/eraser/templates/eraser-controller-manager-deployment.yaml

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,8 +35,16 @@ spec:
3535
- --eraser-image={{ .Values.eraser.image.repository }}:{{ .Values.eraser.image.tag | default .Chart.AppVersion }}
3636
- --collector-image={{ if .Values.collector.image.repository }}{{ .Values.collector.image.repository }}:{{ .Values.collector.image.tag | default .Chart.AppVersion }}{{ end }}
3737
- --scanner-image={{ if .Values.scanner.image.repository }}{{ .Values.scanner.image.repository }}:{{ .Values.scanner.image.tag | default .Chart.AppVersion }}{{ end }}
38+
{{- if .Values.scanner.image.args }}{{- range .Values.scanner.image.args }}{{ nindent 8 "- --scanner-arg=" }}{{ . }}{{- end -}}{{ end }}
39+
{{- if .Values.controllerManager.image.additionalArgs }}{{- range .Values.controllerManager.image.additionalArgs }}{{ nindent 8 "- " }}{{ . }}{{- end -}}{{ end }}
3840
command:
3941
- /manager
42+
env:
43+
- name: POD_NAMESPACE
44+
valueFrom:
45+
fieldRef:
46+
apiVersion: v1
47+
fieldPath: metadata.namespace
4048
image: '{{ .Values.controllerManager.image.repository }}:{{ .Values.controllerManager.image.tag | default .Chart.AppVersion }}'
4149
imagePullPolicy: '{{ .Values.controllerManager.image.pullPolicy }}'
4250
livenessProbe:
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
apiVersion: rbac.authorization.k8s.io/v1
2+
kind: ClusterRole
3+
metadata:
4+
creationTimestamp: null
5+
labels:
6+
app.kubernetes.io/instance: '{{ .Release.Name }}'
7+
app.kubernetes.io/managed-by: '{{ .Release.Service }}'
8+
app.kubernetes.io/name: '{{ template "eraser.name" . }}'
9+
helm.sh/chart: '{{ template "eraser.name" . }}'
10+
name: eraser-imagejob-pods-cluster-role
11+
rules:
12+
- apiGroups:
13+
- eraser.sh
14+
resources:
15+
- imagecollectors
16+
verbs:
17+
- create
18+
- delete
19+
- get
20+
- list
21+
- patch
22+
- update
23+
- watch
24+
- apiGroups:
25+
- eraser.sh
26+
resources:
27+
- imagecollectors/finalizers
28+
verbs:
29+
- update
30+
- apiGroups:
31+
- eraser.sh
32+
resources:
33+
- imagecollectors/status
34+
verbs:
35+
- get
36+
- patch
37+
- update
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
apiVersion: rbac.authorization.k8s.io/v1
2+
kind: ClusterRoleBinding
3+
metadata:
4+
labels:
5+
app.kubernetes.io/instance: '{{ .Release.Name }}'
6+
app.kubernetes.io/managed-by: '{{ .Release.Service }}'
7+
app.kubernetes.io/name: '{{ template "eraser.name" . }}'
8+
helm.sh/chart: '{{ template "eraser.name" . }}'
9+
name: eraser-imagejob-pods-cluster-rolebinding
10+
roleRef:
11+
apiGroup: rbac.authorization.k8s.io
12+
kind: ClusterRole
13+
name: eraser-imagejob-pods-cluster-role
14+
subjects:
15+
- kind: ServiceAccount
16+
name: eraser-imagejob-pods
17+
namespace: '{{ .Release.Namespace }}'
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
apiVersion: v1
2+
kind: ServiceAccount
3+
metadata:
4+
labels:
5+
app.kubernetes.io/instance: '{{ .Release.Name }}'
6+
app.kubernetes.io/managed-by: '{{ .Release.Service }}'
7+
app.kubernetes.io/name: '{{ template "eraser.name" . }}'
8+
helm.sh/chart: '{{ template "eraser.name" . }}'
9+
name: eraser-imagejob-pods
10+
namespace: '{{ .Release.Namespace }}'

charts/eraser/templates/imagecollectors.eraser.sh-customresourcedefinition.yaml

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ apiVersion: apiextensions.k8s.io/v1
22
kind: CustomResourceDefinition
33
metadata:
44
annotations:
5-
controller-gen.kubebuilder.io/version: v0.5.0
5+
controller-gen.kubebuilder.io/version: v0.9.0
66
creationTimestamp: null
77
labels:
88
app.kubernetes.io/instance: '{{ .Release.Name }}'
@@ -77,9 +77,3 @@ spec:
7777
storage: true
7878
subresources:
7979
status: {}
80-
status:
81-
acceptedNames:
82-
kind: ""
83-
plural: ""
84-
conditions: []
85-
storedVersions: []

charts/eraser/templates/imagejobs.eraser.sh-customresourcedefinition.yaml

Lines changed: 4 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ apiVersion: apiextensions.k8s.io/v1
22
kind: CustomResourceDefinition
33
metadata:
44
annotations:
5-
controller-gen.kubebuilder.io/version: v0.5.0
5+
controller-gen.kubebuilder.io/version: v0.9.0
66
creationTimestamp: null
77
labels:
88
app.kubernetes.io/instance: '{{ .Release.Name }}'
@@ -3025,7 +3025,7 @@ spec:
30253025
description: TopologyKey is the key of node labels. Nodes that have a label with this key and identical values are considered to be in the same topology. We consider each <key, value> as a "bucket", and try to put balanced number of pods into each bucket. It's a required field.
30263026
type: string
30273027
whenUnsatisfiable:
3028-
description: 'WhenUnsatisfiable indicates how to deal with a pod if it doesn''t satisfy the spread constraint. - DoNotSchedule (default) tells the scheduler not to schedule it. - ScheduleAnyway tells the scheduler to schedule the pod in any location, but giving higher precedence to topologies that would help reduce the skew. A constraint is considered "Unsatisfiable" for an incoming pod if and only if every possible node assigment for that pod would violate "MaxSkew" on some topology. For example, in a 3-zone cluster, MaxSkew is set to 1, and pods with the same labelSelector spread as 3/1/1: | zone1 | zone2 | zone3 | | P P P | P | P | If WhenUnsatisfiable is set to DoNotSchedule, incoming pod can only be scheduled to zone2(zone3) to become 3/2/1(3/1/2) as ActualSkew(2-1) on zone2(zone3) satisfies MaxSkew(1). In other words, the cluster can still be imbalanced, but scheduler won''t make it *more* imbalanced. It''s a required field.'
3028+
description: 'WhenUnsatisfiable indicates how to deal with a pod if it doesn''t satisfy the spread constraint. - DoNotSchedule (default) tells the scheduler not to schedule it. - ScheduleAnyway tells the scheduler to schedule the pod in any location, but giving higher precedence to topologies that would help reduce the skew. A constraint is considered "Unsatisfiable" for an incoming pod if and only if every possible node assigment for that pod would violate "MaxSkew" on some topology. For example, in a 3-zone cluster, MaxSkew is set to 1, and pods with the same labelSelector spread as 3/1/1: | zone1 | zone2 | zone3 | | P P P | P | P | If WhenUnsatisfiable is set to DoNotSchedule, incoming pod can only be scheduled to zone2(zone3) to become 3/2/1(3/1/2) as ActualSkew(2-1) on zone2(zone3) satisfies MaxSkew(1). In other words, the cluster can still be imbalanced, but scheduler won''t make it *more* imbalanced. It''s a required field.'
30293029
type: string
30303030
required:
30313031
- maxSkew
@@ -3285,7 +3285,7 @@ spec:
32853285
x-kubernetes-int-or-string: true
32863286
type: object
32873287
ephemeral:
3288-
description: "Ephemeral represents a volume that is handled by a cluster storage driver. The volume's lifecycle is tied to the pod that defines it - it will be created before the pod starts, and deleted when the pod is removed. \n Use this if: a) the volume is only needed while the pod runs, b) features of normal volumes like restoring from snapshot or capacity tracking are needed, c) the storage driver is specified through a storage class, and d) the storage driver supports dynamic volume provisioning through a PersistentVolumeClaim (see EphemeralVolumeSource for more information on the connection between this volume type and PersistentVolumeClaim). \n Use PersistentVolumeClaim or one of the vendor-specific APIs for volumes that persist for longer than the lifecycle of an individual pod. \n Use CSI for light-weight local ephemeral volumes if the CSI driver is meant to be used that way - see the documentation of the driver for more information. \n A pod can use both types of ephemeral volumes and persistent volumes at the same time. \n This is a beta feature and only available when the GenericEphemeralVolume feature gate is enabled."
3288+
description: "Ephemeral represents a volume that is handled by a cluster storage driver. The volume's lifecycle is tied to the pod that defines it - it will be created before the pod starts, and deleted when the pod is removed. \n Use this if: a) the volume is only needed while the pod runs, b) features of normal volumes like restoring from snapshot or capacity tracking are needed, c) the storage driver is specified through a storage class, and d) the storage driver supports dynamic volume provisioning through a PersistentVolumeClaim (see EphemeralVolumeSource for more information on the connection between this volume type and PersistentVolumeClaim). \n Use PersistentVolumeClaim or one of the vendor-specific APIs for volumes that persist for longer than the lifecycle of an individual pod. \n Use CSI for light-weight local ephemeral volumes if the CSI driver is meant to be used that way - see the documentation of the driver for more information. \n A pod can use both types of ephemeral volumes and persistent volumes at the same time. \n This is a beta feature and only available when the GenericEphemeralVolume feature gate is enabled."
32893289
properties:
32903290
volumeClaimTemplate:
32913291
description: "Will be used to create a stand-alone PVC to provision the volume. The pod in which this EphemeralVolumeSource is embedded will be the owner of the PVC, i.e. the PVC will be deleted together with the pod. The name of the PVC will be `<pod name>-<volume name>` where `<volume name>` is the name from the `PodSpec.Volumes` array entry. Pod validation will reject the pod if the concatenated name is not valid for a PVC (for example, too long). \n An existing PVC with that name that is not owned by the pod will *not* be used for the pod to avoid using an unrelated volume by mistake. Starting the pod is then blocked until the unrelated PVC is removed. If such a pre-created PVC is meant to be used by the pod, the PVC has to updated with an owner reference to the pod once the pod exists. Normally this should not be necessary, but it may be useful when manually reconstructing a broken cluster. \n This field is read-only and no changes will be made by Kubernetes to the PVC after it has been created. \n Required, must not be nil."
@@ -3318,7 +3318,7 @@ spec:
33183318
- name
33193319
type: object
33203320
dataSourceRef:
3321-
description: 'Specifies the object from which to populate the volume with data, if a non-empty volume is desired. This may be any local object from a non-empty API group (non core object) or a PersistentVolumeClaim object. When this field is specified, volume binding will only succeed if the type of the specified object matches some installed volume populator or dynamic provisioner. This field will replace the functionality of the DataSource field and as such if both fields are non-empty, they must have the same value. For backwards compatibility, both fields (DataSource and DataSourceRef) will be set to the same value automatically if one of them is empty and the other is non-empty. There are two important differences between DataSource and DataSourceRef: * While DataSource only allows two specific types of objects, DataSourceRef allows any non-core object, as well as PersistentVolumeClaim objects. * While DataSource ignores disallowed values (dropping them), DataSourceRef preserves all values, and generates an error if a disallowed value is specified. (Alpha) Using this field requires the AnyVolumeDataSource feature gate to be enabled.'
3321+
description: 'Specifies the object from which to populate the volume with data, if a non-empty volume is desired. This may be any local object from a non-empty API group (non core object) or a PersistentVolumeClaim object. When this field is specified, volume binding will only succeed if the type of the specified object matches some installed volume populator or dynamic provisioner. This field will replace the functionality of the DataSource field and as such if both fields are non-empty, they must have the same value. For backwards compatibility, both fields (DataSource and DataSourceRef) will be set to the same value automatically if one of them is empty and the other is non-empty. There are two important differences between DataSource and DataSourceRef: * While DataSource only allows two specific types of objects, DataSourceRef allows any non-core object, as well as PersistentVolumeClaim objects. * While DataSource ignores disallowed values (dropping them), DataSourceRef preserves all values, and generates an error if a disallowed value is specified. (Alpha) Using this field requires the AnyVolumeDataSource feature gate to be enabled.'
33223322
properties:
33233323
apiGroup:
33243324
description: APIGroup is the group for the resource being referenced. If APIGroup is not specified, the specified Kind must be in the core API group. For any other third-party types, APIGroup is required.
@@ -3994,9 +3994,3 @@ spec:
39943994
storage: true
39953995
subresources:
39963996
status: {}
3997-
status:
3998-
acceptedNames:
3999-
kind: ""
4000-
plural: ""
4001-
conditions: []
4002-
storedVersions: []

charts/eraser/templates/imagelists.eraser.sh-customresourcedefinition.yaml

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ apiVersion: apiextensions.k8s.io/v1
22
kind: CustomResourceDefinition
33
metadata:
44
annotations:
5-
controller-gen.kubebuilder.io/version: v0.5.0
5+
controller-gen.kubebuilder.io/version: v0.9.0
66
creationTimestamp: null
77
labels:
88
app.kubernetes.io/instance: '{{ .Release.Name }}'
@@ -73,9 +73,3 @@ spec:
7373
storage: true
7474
subresources:
7575
status: {}
76-
status:
77-
acceptedNames:
78-
kind: ""
79-
plural: ""
80-
conditions: []
81-
storedVersions: []

0 commit comments

Comments
 (0)