Skip to content

Commit b9f20b3

Browse files
feat(624): Implement apply sets from kro for deployer #624 (#1335)
#### What this PR does / why we need it We want to use the apply-sets from - https://github.com/kubernetes/enhancements/blob/master/keps/sig-cli/3659-kubectl-apply-prune/README.md - https://github.com/kubernetes-sigs/kro/tree/main/pkg/applyset to handle pruning without side-effects #### Which issue(s) this PR fixes Fixes: open-component-model/ocm-project#624 --------- Signed-off-by: Matthias Bruns <git@matthiasbruns.com> Co-authored-by: Piotr Janik <piotr.janik@sap.com>
1 parent 8eab916 commit b9f20b3

20 files changed

Lines changed: 2637 additions & 59 deletions

File tree

.github/config/wordlist.txt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ apeirora
1717
api
1818
apis
1919
applyable
20+
ApplySet
2021
approvers
2122
araise
2223
architected
@@ -120,6 +121,7 @@ deserialization
120121
deserialize
121122
deserialized
122123
dest
124+
dev
123125
devops
124126
digesters
125127
directorytree
@@ -232,6 +234,7 @@ json
232234
jsonNormalisation
233235
jsonschema
234236
kelch
237+
KEP
235238
keyless
236239
keypair
237240
keyring
@@ -284,6 +287,7 @@ mavenrepository
284287
mediatype
285288
mimetype
286289
mimetypes
290+
misconfigured
287291
moeller
288292
moldenhauer
289293
morri

.github/workflows/kubernetes-controller.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@ jobs:
6565
E2E:
6666
name: E2E with Helm
6767
runs-on: ubuntu-latest
68-
timeout-minutes: 15
68+
timeout-minutes: 20
6969
needs: verify-chart
7070
steps:
7171
- name: Checkout

kubernetes/controller/chart/templates/rbac/manager-role.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,7 @@ rules:
6666
- resourcegraphdefinitions
6767
verbs:
6868
- create
69+
- delete
6970
- list
7071
- patch
7172
- update

kubernetes/controller/config/rbac/role.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,7 @@ rules:
6767
- resourcegraphdefinitions
6868
verbs:
6969
- create
70+
- delete
7071
- list
7172
- patch
7273
- update
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
apiVersion: delivery.ocm.software/v1alpha1
2+
kind: Deployer
3+
metadata:
4+
name: applyset-pruning-deployer
5+
spec:
6+
resourceRef:
7+
name: applyset-pruning-resource
8+
namespace: default
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
apiVersion: delivery.ocm.software/v1alpha1
2+
kind: Repository
3+
metadata:
4+
name: applyset-pruning-repository
5+
spec:
6+
repositorySpec:
7+
# Adjust to your OCM repository
8+
baseUrl: http://image-registry:5000
9+
type: OCIRegistry
10+
interval: 10m
11+
---
12+
apiVersion: delivery.ocm.software/v1alpha1
13+
kind: Component
14+
metadata:
15+
name: applyset-pruning-component
16+
spec:
17+
component: ocm.software/ocm-k8s-toolkit/examples/applyset-pruning
18+
repositoryRef:
19+
name: applyset-pruning-repository
20+
semver: 1.0.0
21+
interval: 10m
22+
---
23+
apiVersion: delivery.ocm.software/v1alpha1
24+
kind: Resource
25+
metadata:
26+
name: applyset-pruning-resource
27+
spec:
28+
componentRef:
29+
name: applyset-pruning-component
30+
resource:
31+
byReference:
32+
resource:
33+
name: applyset-pruning-resource
34+
interval: 10m
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
components:
2+
- name: ocm.software/ocm-k8s-toolkit/examples/applyset-pruning
3+
version: "2.0.0"
4+
provider:
5+
name: ocm.software
6+
resources:
7+
- name: applyset-pruning-resource
8+
type: blob
9+
version: "2.0.0"
10+
input:
11+
type: file
12+
path: ./k8s-manifest-2.yaml
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
components:
2+
- name: ocm.software/ocm-k8s-toolkit/examples/applyset-pruning
3+
version: "1.0.0"
4+
provider:
5+
name: ocm.software
6+
resources:
7+
- name: applyset-pruning-resource
8+
type: blob
9+
version: "1.0.0"
10+
input:
11+
type: file
12+
path: ./k8s-manifest.yaml
Lines changed: 104 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,104 @@
1+
---
2+
apiVersion: v1
3+
kind: Service
4+
metadata:
5+
name: podinfo
6+
labels:
7+
app: applyset-pruning-podinfo
8+
spec:
9+
ports:
10+
- name: http
11+
port: 9898
12+
protocol: TCP
13+
targetPort: http
14+
- name: grpc
15+
port: 9999
16+
protocol: TCP
17+
targetPort: grpc
18+
selector:
19+
app: applyset-pruning-podinfo
20+
type: ClusterIP
21+
---
22+
apiVersion: apps/v1
23+
kind: Deployment
24+
metadata:
25+
name: applyset-pruning-podinfo
26+
labels:
27+
app: podinfo
28+
spec:
29+
minReadySeconds: 3
30+
progressDeadlineSeconds: 60
31+
revisionHistoryLimit: 5
32+
selector:
33+
matchLabels:
34+
app: podinfo
35+
strategy:
36+
rollingUpdate:
37+
maxUnavailable: 0
38+
type: RollingUpdate
39+
template:
40+
metadata:
41+
annotations:
42+
prometheus.io/port: "9797"
43+
prometheus.io/scrape: "true"
44+
labels:
45+
app: podinfo
46+
app.kubernetes.io/name: applyset-pruning-podinfo
47+
spec:
48+
containers:
49+
- command:
50+
- ./podinfo
51+
- --port=9898
52+
- --port-metrics=9797
53+
- --grpc-port=9999
54+
- --grpc-service-name=podinfo
55+
- --level=info
56+
- --random-delay=false
57+
- --random-error=false
58+
env:
59+
- name: PODINFO_UI_COLOR
60+
value: "#34577c"
61+
image: ghcr.io/stefanprodan/podinfo:6.9.2
62+
imagePullPolicy: IfNotPresent
63+
livenessProbe:
64+
exec:
65+
command:
66+
- podcli
67+
- check
68+
- http
69+
- localhost:9898/healthz
70+
initialDelaySeconds: 5
71+
timeoutSeconds: 5
72+
name: podinfod
73+
ports:
74+
- containerPort: 9898
75+
name: http
76+
protocol: TCP
77+
- containerPort: 9797
78+
name: http-metrics
79+
protocol: TCP
80+
- containerPort: 9999
81+
name: grpc
82+
protocol: TCP
83+
readinessProbe:
84+
exec:
85+
command:
86+
- podcli
87+
- check
88+
- http
89+
- localhost:9898/readyz
90+
initialDelaySeconds: 5
91+
timeoutSeconds: 5
92+
resources:
93+
limits:
94+
cpu: 2000m
95+
memory: 512Mi
96+
requests:
97+
cpu: 100m
98+
memory: 64Mi
99+
volumeMounts:
100+
- mountPath: /data
101+
name: data
102+
volumes:
103+
- emptyDir: { }
104+
name: data

0 commit comments

Comments
 (0)