Skip to content

Commit dd0c321

Browse files
committed
feat: Introduce CRD versioning
1 parent a414329 commit dd0c321

13 files changed

Lines changed: 2327 additions & 550 deletions

File tree

Cargo.lock

Lines changed: 430 additions & 6 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.nix

Lines changed: 1630 additions & 72 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ edition = "2021"
1111
repository = "https://github.com/stackabletech/secret-operator"
1212

1313
[workspace.dependencies]
14-
stackable-operator = { git = "https://github.com/stackabletech/operator-rs.git", features = ["time", "telemetry"], tag = "stackable-operator-0.95.0" }
14+
stackable-operator = { git = "https://github.com/stackabletech/operator-rs.git", features = ["time", "telemetry", "versioned", "webhook"], tag = "stackable-operator-0.95.0" }
1515
krb5 = { git = "https://github.com/stackabletech/krb5-rs.git", tag = "v0.1.0" }
1616

1717
anyhow = "1.0"

Makefile

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -105,7 +105,6 @@ compile-chart: version crds config
105105

106106
chart-clean:
107107
rm -rf "deploy/helm/${OPERATOR_NAME}/configs"
108-
rm -rf "deploy/helm/${OPERATOR_NAME}/crds"
109108

110109
version:
111110
cat "deploy/helm/${OPERATOR_NAME}/Chart.yaml" | yq ".version = \"${VERSION}\" | .appVersion = \"${VERSION}\"" > "deploy/helm/${OPERATOR_NAME}/Chart.yaml.new"
@@ -117,9 +116,10 @@ config:
117116
cp -r deploy/config-spec/* "deploy/helm/${OPERATOR_NAME}/configs";\
118117
fi
119118

119+
# We generate a crds.yaml, so that the effect of code changes are visible.
120+
# The operator will take care of the CRD rollout itself.
120121
crds:
121-
mkdir -p deploy/helm/"${OPERATOR_NAME}"/crds
122-
cargo run --bin stackable-"${OPERATOR_NAME}" -- crd | yq eval '.metadata.annotations["helm.sh/resource-policy"]="keep"' - > "deploy/helm/${OPERATOR_NAME}/crds/crds.yaml"
122+
cargo run --bin stackable-"${OPERATOR_NAME}" -- crd > crds.yaml
123123

124124
chart-lint: compile-chart
125125
docker run -it -v $(shell pwd):/build/helm-charts -w /build/helm-charts quay.io/helmpack/chart-testing:v3.5.0 ct lint --config deploy/helm/ct.yaml

Tiltfile

Lines changed: 8 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -17,27 +17,16 @@ custom_build(
1717
outputs_image_ref_to='result/ref',
1818
)
1919

20-
# Load the latest CRDs from Nix
21-
watch_file('result')
22-
if os.path.exists('result'):
23-
k8s_yaml('result/crds.yaml')
24-
2520
# We need to set the correct image annotation on the operator Deployment to use e.g.
2621
# oci.stackable.tech/sandbox/opa-operator:7y19m3d8clwxlv34v5q2x4p7v536s00g instead of
2722
# oci.stackable.tech/sandbox/opa-operator:0.0.0-dev (which does not exist)
2823
k8s_kind('Deployment', image_json_path='{.spec.template.metadata.annotations.internal\\.stackable\\.tech/image}')
2924

30-
# Exclude stale CRDs from Helm chart, and apply the rest
31-
helm_crds, helm_non_crds = filter_yaml(
32-
helm(
33-
'deploy/helm/' + operator_name,
34-
name=operator_name,
35-
namespace="stackable-operators",
36-
set=[
37-
'image.repository=' + registry + '/' + operator_name,
38-
],
39-
),
40-
api_version = "^apiextensions\\.k8s\\.io/.*$",
41-
kind = "^CustomResourceDefinition$",
42-
)
43-
k8s_yaml(helm_non_crds)
25+
k8s_yaml(helm(
26+
'deploy/helm/' + operator_name,
27+
name=operator_name,
28+
namespace="stackable-operators",
29+
set=[
30+
'image.repository=' + registry + '/' + operator_name,
31+
],
32+
))

_test.yaml

Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
---
2+
apiVersion: test.stackable.tech/v1alpha1
3+
kind: Person
4+
metadata:
5+
name: sbernauer1
6+
spec:
7+
username: sbernauer1
8+
socials:
9+
email: sebastian.bernauer@stackable.tech
10+
---
11+
apiVersion: test.stackable.tech/v1alpha2
12+
kind: Person
13+
metadata:
14+
name: sbernauer2
15+
spec:
16+
username: sbernauer2
17+
firstName: Sebastian
18+
lastName: Bernauer
19+
socials:
20+
email: sebastian.bernauer@stackable.tech
21+
---
22+
apiVersion: test.stackable.tech/v1beta1
23+
kind: Person
24+
metadata:
25+
name: sbernauer3
26+
spec:
27+
username: sbernauer3
28+
firstName: Sebastian
29+
lastName: Bernauer
30+
socials:
31+
email: sebastian.bernauer@stackable.tech
32+
mastodon: FOO
33+
---
34+
apiVersion: test.stackable.tech/v2
35+
kind: Person
36+
metadata:
37+
name: sbernauer4
38+
spec:
39+
username: sbernauer4
40+
firstName: Sebastian
41+
lastName: Bernauer
42+
gender: Male
43+
socials:
44+
email: sebastian.bernauer@stackable.tech
45+
mastodon: FOO
46+
---
47+
apiVersion: test.stackable.tech/v3
48+
kind: Person
49+
metadata:
50+
name: sbernauer5
51+
spec:
52+
username: sbernauer5
53+
firstName: Sebastian
54+
lastName: Bernauer
55+
gender: Male
56+
socials:
57+
email: sebastian.bernauer@stackable.tech
58+
mastodon: FOO

crate-hashes.json

Lines changed: 2 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)