Skip to content

Commit 8128809

Browse files
committed
HYPERFLEET-1411 - feat: Add hyperfleet-operator image and bundle components
1 parent a6f4250 commit 8128809

17 files changed

Lines changed: 1063 additions & 125 deletions

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
*.so
66
*.dylib
77
bin/*
8+
dist/
89
_output/
910
Dockerfile.cross
1011

Makefile

Lines changed: 145 additions & 119 deletions
Large diffs are not rendered by default.

bundle-hack/update_bundle.sh

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
#!/usr/bin/env bash
2+
set -euo pipefail
3+
4+
# Konflux nudges update these variables with the latest digest-pinned pullspecs.
5+
6+
HYPERFLEET_OPERATOR_IMAGE_PULLSPEC="${HYPERFLEET_OPERATOR_IMAGE_PULLSPEC:-quay.io/openshift-hyperfleet/hyperfleet-operator:v0.0.1}"
7+
8+
CSV_FILE="${CSV_FILE:-/manifests/hyperfleet-operator.clusterserviceversion.yaml}"
9+
10+
# Update operator deployment image
11+
yq eval ".spec.install.spec.deployments[].spec.template.spec.containers[] |= (
12+
select(.name == \"manager\") |
13+
.image = \"${HYPERFLEET_OPERATOR_IMAGE_PULLSPEC}\"
14+
)" -i "${CSV_FILE}"
15+
16+
17+
# Update containerImage annotation
18+
yq eval ".metadata.annotations.containerImage = \"${HYPERFLEET_OPERATOR_IMAGE_PULLSPEC}\"" -i "${CSV_FILE}"
19+
20+
# Update relatedImages
21+
22+
cat "${CSV_FILE}"

bundle.Dockerfile

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
FROM scratch
2+
3+
# Core bundle labels.
4+
LABEL operators.operatorframework.io.bundle.mediatype.v1=registry+v1
5+
LABEL operators.operatorframework.io.bundle.manifests.v1=manifests/
6+
LABEL operators.operatorframework.io.bundle.metadata.v1=metadata/
7+
LABEL operators.operatorframework.io.bundle.package.v1=hyperfleet-operator
8+
LABEL operators.operatorframework.io.bundle.channels.v1=stable,alpha
9+
LABEL operators.operatorframework.io.bundle.channel.default.v1=stable
10+
LABEL operators.operatorframework.io.metrics.builder=operator-sdk-v1.42.3
11+
LABEL operators.operatorframework.io.metrics.mediatype.v1=metrics+v1
12+
LABEL operators.operatorframework.io.metrics.project_layout=go.kubebuilder.io/v4
13+
14+
# Labels for testing.
15+
LABEL operators.operatorframework.io.test.mediatype.v1=scorecard+v1
16+
LABEL operators.operatorframework.io.test.config.v1=tests/scorecard/
17+
18+
# Copy files to locations specified by labels.
19+
COPY bundle/manifests /manifests/
20+
COPY bundle/metadata /metadata/
21+
COPY bundle/tests/scorecard /tests/scorecard/

bundle.konflux.Dockerfile

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
# Konflux bundle image build. Unlike the auto-generated bundle.Dockerfile (used
2+
# for local dev with operator-sdk), this runs bundle-hack/update_bundle.sh to
3+
# patch digest-pinned image references into the CSV at build time.
4+
ARG
5+
FROM registry.access.redhat.com/ubi9/ubi-minimal:latest AS builder-runner
6+
RUN microdnf install -y tar gzip && \
7+
curl -sL https://github.com/mikefarah/yq/releases/download/v4.44.1/yq_linux_amd64.tar.gz | tar xz && \
8+
mv yq_linux_amd64 /usr/bin/yq
9+
10+
FROM builder-runner AS builder
11+
# Hack to set the operator container image in the deployment
12+
COPY bundle-hack .
13+
COPY bundle/manifests /manifests/
14+
15+
RUN ./update_bundle.sh
16+
17+
FROM scratch
18+
19+
# Core bundle labels.
20+
LABEL operators.operatorframework.io.bundle.mediatype.v1=registry+v1
21+
LABEL operators.operatorframework.io.bundle.manifests.v1=manifests/
22+
LABEL operators.operatorframework.io.bundle.metadata.v1=metadata/
23+
LABEL operators.operatorframework.io.bundle.package.v1=hyperfleet-operator
24+
LABEL operators.operatorframework.io.bundle.channels.v1=stable,alpha
25+
LABEL operators.operatorframework.io.bundle.channel.default.v1=stable
26+
LABEL operators.operatorframework.io.metrics.builder=operator-sdk-v1.42.3
27+
LABEL operators.operatorframework.io.metrics.mediatype.v1=metrics+v1
28+
LABEL operators.operatorframework.io.metrics.project_layout=go.kubebuilder.io/v4
29+
30+
# Labels for testing.
31+
LABEL operators.operatorframework.io.test.mediatype.v1=scorecard+v1
32+
LABEL operators.operatorframework.io.test.config.v1=tests/scorecard/
33+
34+
# Copy patched manifests from builder, metadata and tests from source.
35+
COPY --from=builder /manifests /manifests/
36+
COPY bundle/metadata /metadata/
37+
COPY bundle/tests/scorecard /tests/scorecard/
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
apiVersion: v1
2+
kind: Service
3+
metadata:
4+
creationTimestamp: null
5+
labels:
6+
app.kubernetes.io/managed-by: kustomize
7+
app.kubernetes.io/name: hyperfleet-operator
8+
control-plane: controller-manager
9+
name: hyperfleet-operator-controller-manager-metrics-service
10+
spec:
11+
ports:
12+
- name: https
13+
port: 8443
14+
protocol: TCP
15+
targetPort: 8443
16+
selector:
17+
app.kubernetes.io/name: hyperfleet-operator
18+
control-plane: controller-manager
19+
status:
20+
loadBalancer: {}
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
apiVersion: rbac.authorization.k8s.io/v1
2+
kind: ClusterRole
3+
metadata:
4+
creationTimestamp: null
5+
labels:
6+
app.kubernetes.io/managed-by: kustomize
7+
app.kubernetes.io/name: hyperfleet-operator
8+
name: hyperfleet-operator-hyperfleetconfig-admin-role
9+
rules:
10+
- apiGroups:
11+
- hyperfleet.redhat.com
12+
resources:
13+
- hyperfleetconfigs
14+
verbs:
15+
- '*'
16+
- apiGroups:
17+
- hyperfleet.redhat.com
18+
resources:
19+
- hyperfleetconfigs/status
20+
verbs:
21+
- get
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
apiVersion: rbac.authorization.k8s.io/v1
2+
kind: ClusterRole
3+
metadata:
4+
creationTimestamp: null
5+
labels:
6+
app.kubernetes.io/managed-by: kustomize
7+
app.kubernetes.io/name: hyperfleet-operator
8+
name: hyperfleet-operator-hyperfleetconfig-editor-role
9+
rules:
10+
- apiGroups:
11+
- hyperfleet.redhat.com
12+
resources:
13+
- hyperfleetconfigs
14+
verbs:
15+
- create
16+
- delete
17+
- get
18+
- list
19+
- patch
20+
- update
21+
- watch
22+
- apiGroups:
23+
- hyperfleet.redhat.com
24+
resources:
25+
- hyperfleetconfigs/status
26+
verbs:
27+
- get
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
apiVersion: rbac.authorization.k8s.io/v1
2+
kind: ClusterRole
3+
metadata:
4+
creationTimestamp: null
5+
labels:
6+
app.kubernetes.io/managed-by: kustomize
7+
app.kubernetes.io/name: hyperfleet-operator
8+
name: hyperfleet-operator-hyperfleetconfig-viewer-role
9+
rules:
10+
- apiGroups:
11+
- hyperfleet.redhat.com
12+
resources:
13+
- hyperfleetconfigs
14+
verbs:
15+
- get
16+
- list
17+
- watch
18+
- apiGroups:
19+
- hyperfleet.redhat.com
20+
resources:
21+
- hyperfleetconfigs/status
22+
verbs:
23+
- get
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
apiVersion: rbac.authorization.k8s.io/v1
2+
kind: ClusterRole
3+
metadata:
4+
creationTimestamp: null
5+
labels:
6+
app.kubernetes.io/managed-by: kustomize
7+
app.kubernetes.io/name: hyperfleet-operator
8+
name: hyperfleet-operator-metrics-reader
9+
rules:
10+
- nonResourceURLs:
11+
- /metrics
12+
verbs:
13+
- get

0 commit comments

Comments
 (0)