From 49a485090ea59c20d26c367be79501a0fab598dc Mon Sep 17 00:00:00 2001 From: eryalito Date: Tue, 6 Feb 2024 11:03:37 +0100 Subject: [PATCH] operator [N] [CI] kubensync (0.2.0) --- operators/kubensync/0.2.0/bundle.Dockerfile | 20 ++ ...mation.kubensync.com_managedresources.yaml | 119 ++++++++ ...er-manager-metrics-service_v1_service.yaml | 23 ++ ...c.authorization.k8s.io_v1_clusterrole.yaml | 17 ++ .../kubensync.clusterserviceversion.yaml | 259 ++++++++++++++++++ .../kubensync/0.2.0/metadata/annotations.yaml | 14 + .../0.2.0/tests/scorecard/config.yaml | 70 +++++ operators/kubensync/ci.yaml | 5 + 8 files changed, 527 insertions(+) create mode 100644 operators/kubensync/0.2.0/bundle.Dockerfile create mode 100644 operators/kubensync/0.2.0/manifests/automation.kubensync.com_managedresources.yaml create mode 100644 operators/kubensync/0.2.0/manifests/kubensync-controller-manager-metrics-service_v1_service.yaml create mode 100644 operators/kubensync/0.2.0/manifests/kubensync-metrics-reader_rbac.authorization.k8s.io_v1_clusterrole.yaml create mode 100644 operators/kubensync/0.2.0/manifests/kubensync.clusterserviceversion.yaml create mode 100644 operators/kubensync/0.2.0/metadata/annotations.yaml create mode 100644 operators/kubensync/0.2.0/tests/scorecard/config.yaml create mode 100644 operators/kubensync/ci.yaml diff --git a/operators/kubensync/0.2.0/bundle.Dockerfile b/operators/kubensync/0.2.0/bundle.Dockerfile new file mode 100644 index 00000000000..6dcddf8c094 --- /dev/null +++ b/operators/kubensync/0.2.0/bundle.Dockerfile @@ -0,0 +1,20 @@ +FROM scratch + +# Core bundle labels. +LABEL operators.operatorframework.io.bundle.mediatype.v1=registry+v1 +LABEL operators.operatorframework.io.bundle.manifests.v1=manifests/ +LABEL operators.operatorframework.io.bundle.metadata.v1=metadata/ +LABEL operators.operatorframework.io.bundle.package.v1=kubensync +LABEL operators.operatorframework.io.bundle.channels.v1=alpha +LABEL operators.operatorframework.io.metrics.builder=operator-sdk-v1.28.0 +LABEL operators.operatorframework.io.metrics.mediatype.v1=metrics+v1 +LABEL operators.operatorframework.io.metrics.project_layout=go.kubebuilder.io/v3 + +# Labels for testing. +LABEL operators.operatorframework.io.test.mediatype.v1=scorecard+v1 +LABEL operators.operatorframework.io.test.config.v1=tests/scorecard/ + +# Copy files to locations specified by labels. +COPY bundle/manifests /manifests/ +COPY bundle/metadata /metadata/ +COPY bundle/tests/scorecard /tests/scorecard/ diff --git a/operators/kubensync/0.2.0/manifests/automation.kubensync.com_managedresources.yaml b/operators/kubensync/0.2.0/manifests/automation.kubensync.com_managedresources.yaml new file mode 100644 index 00000000000..9277eb56b50 --- /dev/null +++ b/operators/kubensync/0.2.0/manifests/automation.kubensync.com_managedresources.yaml @@ -0,0 +1,119 @@ +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.11.1 + creationTimestamp: null + name: managedresources.automation.kubensync.com +spec: + group: automation.kubensync.com + names: + kind: ManagedResource + listKind: ManagedResourceList + plural: managedresources + singular: managedresource + scope: Cluster + versions: + - name: v1alpha1 + schema: + openAPIV3Schema: + description: ManagedResource is the Schema for the managedresources API + properties: + apiVersion: + description: 'APIVersion defines the versioned schema of this representation + of an object. Servers should convert recognized schemas to the latest + internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + type: string + kind: + description: 'Kind is a string value representing the REST resource this + object represents. Servers may infer this from the endpoint the client + submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + metadata: + type: object + spec: + description: ManagedResourceSpec defines the desired state of ManagedResource + properties: + avoidResourceUpdate: + description: AvoidResourceUpdate defines if the created resources + should be updated if they already exists. Default value is false. + type: boolean + namespaceSelector: + description: ManagedResourceSpecNamespaceSelector defines the selector + used to specify which namespaces are affected + properties: + regex: + description: Regex that the namespace name must match to be selected + type: string + type: object + template: + description: ManagedResourceSpecTemplate defines the resources to + be created when a namespace matches the selector + properties: + data: + description: Data defines a set of refences to secrets or configmaps + items: + description: Describes extra data that will be loaded into the + go template as inputs. They all will be inside `.Data` parent + and all Secret/ConfigMap keys will be loaded. The format inside + the template would look as follows `.Data.${Name}.${Key}`. + properties: + name: + description: Name of the key where the contents will be + created. + type: string + ref: + description: Defines the reference to the resource that + should be imported. + properties: + name: + description: Name of the resource. + type: string + namespace: + description: Namespace of the resource + type: string + type: object + type: + description: Defines the kind of resource the ref is pointing + to. Could be `Secret` or `ConfigMap`. + type: string + type: object + type: array + literal: + description: Literal defines a go template to be renderized for + each namespace matching the selector + type: string + type: object + type: object + status: + description: ManagedResourceStatus defines the observed state of ManagedResource + properties: + createdResources: + items: + properties: + apiVersion: + type: string + kind: + type: string + name: + type: string + namespace: + type: string + triggerNamespace: + type: string + uid: + type: string + type: object + type: array + type: object + type: object + served: true + storage: true + subresources: + status: {} +status: + acceptedNames: + kind: "" + plural: "" + conditions: null + storedVersions: null diff --git a/operators/kubensync/0.2.0/manifests/kubensync-controller-manager-metrics-service_v1_service.yaml b/operators/kubensync/0.2.0/manifests/kubensync-controller-manager-metrics-service_v1_service.yaml new file mode 100644 index 00000000000..2ce8e54aefa --- /dev/null +++ b/operators/kubensync/0.2.0/manifests/kubensync-controller-manager-metrics-service_v1_service.yaml @@ -0,0 +1,23 @@ +apiVersion: v1 +kind: Service +metadata: + creationTimestamp: null + labels: + app.kubernetes.io/component: kube-rbac-proxy + app.kubernetes.io/created-by: kubensync + app.kubernetes.io/instance: controller-manager-metrics-service + app.kubernetes.io/managed-by: kustomize + app.kubernetes.io/name: service + app.kubernetes.io/part-of: kubensync + control-plane: controller-manager + name: kubensync-controller-manager-metrics-service +spec: + ports: + - name: https + port: 8443 + protocol: TCP + targetPort: https + selector: + control-plane: controller-manager +status: + loadBalancer: {} diff --git a/operators/kubensync/0.2.0/manifests/kubensync-metrics-reader_rbac.authorization.k8s.io_v1_clusterrole.yaml b/operators/kubensync/0.2.0/manifests/kubensync-metrics-reader_rbac.authorization.k8s.io_v1_clusterrole.yaml new file mode 100644 index 00000000000..b3970456bef --- /dev/null +++ b/operators/kubensync/0.2.0/manifests/kubensync-metrics-reader_rbac.authorization.k8s.io_v1_clusterrole.yaml @@ -0,0 +1,17 @@ +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRole +metadata: + creationTimestamp: null + labels: + app.kubernetes.io/component: kube-rbac-proxy + app.kubernetes.io/created-by: kubensync + app.kubernetes.io/instance: metrics-reader + app.kubernetes.io/managed-by: kustomize + app.kubernetes.io/name: clusterrole + app.kubernetes.io/part-of: kubensync + name: kubensync-metrics-reader +rules: +- nonResourceURLs: + - /metrics + verbs: + - get diff --git a/operators/kubensync/0.2.0/manifests/kubensync.clusterserviceversion.yaml b/operators/kubensync/0.2.0/manifests/kubensync.clusterserviceversion.yaml new file mode 100644 index 00000000000..21fc0f85337 --- /dev/null +++ b/operators/kubensync/0.2.0/manifests/kubensync.clusterserviceversion.yaml @@ -0,0 +1,259 @@ +apiVersion: operators.coreos.com/v1alpha1 +kind: ClusterServiceVersion +metadata: + annotations: + alm-examples: | + [ + { + "apiVersion": "automation.kubensync.com/v1alpha1", + "kind": "ManagedResource", + "metadata": { + "name": "serviceaccount-sample" + }, + "spec": { + "namespaceSelector": { + "regex": "test" + }, + "template": { + "literal": "---\napiVersion: v1\nkind: ServiceAccount\nmetadata:\n name: managed-resource-sa\n namespace: {{ .Namespace.Name }}\n" + } + } + } + ] + capabilities: Seamless Upgrades + categories: Integration & Delivery + createdAt: "2024-02-01T20:21:56Z" + containerImage: ghcr.io/eryalito/kubensync-operator@sha256:f1bb42959f8f4e7577f3ce43bc187dc75ec773c00899e4ef847e7c5b616d8f43 + repository: https://github.com/eryalito/kubensync-operator + operators.operatorframework.io/builder: operator-sdk-v1.28.0 + operators.operatorframework.io/project_layout: go.kubebuilder.io/v3 + name: kubensync.v0.2.0 + namespace: placeholder +spec: + apiservicedefinitions: {} + customresourcedefinitions: + owned: + - description: ManagedResource is the Schema for the managedresources API + displayName: Managed Resource + kind: ManagedResource + name: managedresources.automation.kubensync.com + version: v1alpha1 + description: KubeNSync is a Kubernetes operator that helps you automate the creation + of Kubernetes resources. You can use it to create resources like pull secrets, + RBAC rules, and operators using Go templates. With KubeNSync, you can define a + Custom Resource (CR) that contains the template to be rendered and a namespace + selector in the form of a regex. This allows you to create and manage resources + in specific namespaces or across the entire cluster. + displayName: KubeNSync + icon: + - base64data: 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 + mediatype: image/png + install: + spec: + clusterPermissions: + - rules: + - apiGroups: + - "" + resources: + - namespaces + verbs: + - get + - list + - watch + - apiGroups: + - automation.kubensync.com + resources: + - managedresources + verbs: + - create + - delete + - get + - list + - patch + - update + - watch + - apiGroups: + - automation.kubensync.com + resources: + - managedresources/finalizers + verbs: + - update + - apiGroups: + - automation.kubensync.com + resources: + - managedresources/status + verbs: + - get + - patch + - update + - apiGroups: + - authentication.k8s.io + resources: + - tokenreviews + verbs: + - create + - apiGroups: + - authorization.k8s.io + resources: + - subjectaccessreviews + verbs: + - create + serviceAccountName: kubensync-controller-manager + deployments: + - label: + app.kubernetes.io/component: manager + app.kubernetes.io/created-by: kubensync + app.kubernetes.io/instance: controller-manager + app.kubernetes.io/managed-by: kustomize + app.kubernetes.io/name: deployment + app.kubernetes.io/part-of: kubensync + control-plane: controller-manager + name: kubensync-controller-manager + spec: + replicas: 1 + selector: + matchLabels: + control-plane: controller-manager + strategy: {} + template: + metadata: + annotations: + kubectl.kubernetes.io/default-container: manager + labels: + control-plane: controller-manager + spec: + affinity: + nodeAffinity: + requiredDuringSchedulingIgnoredDuringExecution: + nodeSelectorTerms: + - matchExpressions: + - key: kubernetes.io/arch + operator: In + values: + - amd64 + - arm64 + - ppc64le + - s390x + - key: kubernetes.io/os + operator: In + values: + - linux + containers: + - args: + - --secure-listen-address=0.0.0.0:8443 + - --upstream=http://127.0.0.1:8080/ + - --logtostderr=true + - --v=0 + image: gcr.io/kubebuilder/kube-rbac-proxy@sha256:d4883d7c622683b3319b5e6b3a7edfbf2594c18060131a8bf64504805f875522 + name: kube-rbac-proxy + ports: + - containerPort: 8443 + name: https + protocol: TCP + resources: + limits: + cpu: 500m + memory: 128Mi + requests: + cpu: 5m + memory: 64Mi + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: + - ALL + - args: + - --health-probe-bind-address=:8081 + - --metrics-bind-address=127.0.0.1:8080 + - --leader-elect + command: + - /manager + image: ghcr.io/eryalito/kubensync-operator@sha256:f1bb42959f8f4e7577f3ce43bc187dc75ec773c00899e4ef847e7c5b616d8f43 + livenessProbe: + httpGet: + path: /healthz + port: 8081 + initialDelaySeconds: 15 + periodSeconds: 20 + name: manager + readinessProbe: + httpGet: + path: /readyz + port: 8081 + initialDelaySeconds: 5 + periodSeconds: 10 + resources: + limits: + cpu: 500m + memory: 128Mi + requests: + cpu: 10m + memory: 64Mi + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: + - ALL + securityContext: + runAsNonRoot: true + serviceAccountName: kubensync-controller-manager + terminationGracePeriodSeconds: 10 + permissions: + - rules: + - apiGroups: + - "" + resources: + - configmaps + verbs: + - get + - list + - watch + - create + - update + - patch + - delete + - apiGroups: + - coordination.k8s.io + resources: + - leases + verbs: + - get + - list + - watch + - create + - update + - patch + - delete + - apiGroups: + - "" + resources: + - events + verbs: + - create + - patch + serviceAccountName: kubensync-controller-manager + strategy: deployment + installModes: + - supported: false + type: OwnNamespace + - supported: false + type: SingleNamespace + - supported: false + type: MultiNamespace + - supported: true + type: AllNamespaces + keywords: + - namespace + - automation + - resources + - template + links: + - name: Docs + url: https://docs.kubensync.com + maintainers: + - email: eryalito@gmail.com + name: eryalito + maturity: alpha + provider: + name: eryalito + version: 0.2.0 diff --git a/operators/kubensync/0.2.0/metadata/annotations.yaml b/operators/kubensync/0.2.0/metadata/annotations.yaml new file mode 100644 index 00000000000..6b41d2161fd --- /dev/null +++ b/operators/kubensync/0.2.0/metadata/annotations.yaml @@ -0,0 +1,14 @@ +annotations: + # Core bundle annotations. + operators.operatorframework.io.bundle.mediatype.v1: registry+v1 + operators.operatorframework.io.bundle.manifests.v1: manifests/ + operators.operatorframework.io.bundle.metadata.v1: metadata/ + operators.operatorframework.io.bundle.package.v1: kubensync + operators.operatorframework.io.bundle.channels.v1: alpha + operators.operatorframework.io.metrics.builder: operator-sdk-v1.28.0 + operators.operatorframework.io.metrics.mediatype.v1: metrics+v1 + operators.operatorframework.io.metrics.project_layout: go.kubebuilder.io/v3 + + # Annotations for testing. + operators.operatorframework.io.test.mediatype.v1: scorecard+v1 + operators.operatorframework.io.test.config.v1: tests/scorecard/ diff --git a/operators/kubensync/0.2.0/tests/scorecard/config.yaml b/operators/kubensync/0.2.0/tests/scorecard/config.yaml new file mode 100644 index 00000000000..c0ffb5abfff --- /dev/null +++ b/operators/kubensync/0.2.0/tests/scorecard/config.yaml @@ -0,0 +1,70 @@ +apiVersion: scorecard.operatorframework.io/v1alpha3 +kind: Configuration +metadata: + name: config +stages: +- parallel: true + tests: + - entrypoint: + - scorecard-test + - basic-check-spec + image: quay.io/operator-framework/scorecard-test:v1.28.0 + labels: + suite: basic + test: basic-check-spec-test + storage: + spec: + mountPath: {} + - entrypoint: + - scorecard-test + - olm-bundle-validation + image: quay.io/operator-framework/scorecard-test:v1.28.0 + labels: + suite: olm + test: olm-bundle-validation-test + storage: + spec: + mountPath: {} + - entrypoint: + - scorecard-test + - olm-crds-have-validation + image: quay.io/operator-framework/scorecard-test:v1.28.0 + labels: + suite: olm + test: olm-crds-have-validation-test + storage: + spec: + mountPath: {} + - entrypoint: + - scorecard-test + - olm-crds-have-resources + image: quay.io/operator-framework/scorecard-test:v1.28.0 + labels: + suite: olm + test: olm-crds-have-resources-test + storage: + spec: + mountPath: {} + - entrypoint: + - scorecard-test + - olm-spec-descriptors + image: quay.io/operator-framework/scorecard-test:v1.28.0 + labels: + suite: olm + test: olm-spec-descriptors-test + storage: + spec: + mountPath: {} + - entrypoint: + - scorecard-test + - olm-status-descriptors + image: quay.io/operator-framework/scorecard-test:v1.28.0 + labels: + suite: olm + test: olm-status-descriptors-test + storage: + spec: + mountPath: {} +storage: + spec: + mountPath: {} diff --git a/operators/kubensync/ci.yaml b/operators/kubensync/ci.yaml new file mode 100644 index 00000000000..aa51c6e2657 --- /dev/null +++ b/operators/kubensync/ci.yaml @@ -0,0 +1,5 @@ +# Use `replaces-mode` or `semver-mode`. Once you switch to `semver-mode`, there is no easy way back. +updateGraph: semver-mode + +reviewers: + - eryalito