diff --git a/operators/node-maintenance-operator/0.20.0/manifests/node-maintenance-operator-controller-manager-metrics-service_v1_service.yaml b/operators/node-maintenance-operator/0.20.0/manifests/node-maintenance-operator-controller-manager-metrics-service_v1_service.yaml new file mode 100644 index 000000000000..ec43d87535ac --- /dev/null +++ b/operators/node-maintenance-operator/0.20.0/manifests/node-maintenance-operator-controller-manager-metrics-service_v1_service.yaml @@ -0,0 +1,19 @@ +apiVersion: v1 +kind: Service +metadata: + creationTimestamp: null + labels: + control-plane: controller-manager + node-maintenance-operator: "" + name: node-maintenance-operator-controller-manager-metrics-service +spec: + ports: + - name: https + port: 8443 + protocol: TCP + targetPort: https + selector: + control-plane: controller-manager + node-maintenance-operator: "" +status: + loadBalancer: {} diff --git a/operators/node-maintenance-operator/0.20.0/manifests/node-maintenance-operator-metrics-reader_rbac.authorization.k8s.io_v1_clusterrole.yaml b/operators/node-maintenance-operator/0.20.0/manifests/node-maintenance-operator-metrics-reader_rbac.authorization.k8s.io_v1_clusterrole.yaml new file mode 100644 index 000000000000..b078222c01f4 --- /dev/null +++ b/operators/node-maintenance-operator/0.20.0/manifests/node-maintenance-operator-metrics-reader_rbac.authorization.k8s.io_v1_clusterrole.yaml @@ -0,0 +1,12 @@ +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRole +metadata: + creationTimestamp: null + labels: + node-maintenance-operator: "" + name: node-maintenance-operator-metrics-reader +rules: +- nonResourceURLs: + - /metrics + verbs: + - get diff --git a/operators/node-maintenance-operator/0.20.0/manifests/node-maintenance-operator-webhook-service_v1_service.yaml b/operators/node-maintenance-operator/0.20.0/manifests/node-maintenance-operator-webhook-service_v1_service.yaml new file mode 100644 index 000000000000..e3ee3cb7a164 --- /dev/null +++ b/operators/node-maintenance-operator/0.20.0/manifests/node-maintenance-operator-webhook-service_v1_service.yaml @@ -0,0 +1,17 @@ +apiVersion: v1 +kind: Service +metadata: + creationTimestamp: null + labels: + node-maintenance-operator: "" + name: node-maintenance-operator-webhook-service +spec: + ports: + - port: 443 + protocol: TCP + targetPort: 9443 + selector: + control-plane: controller-manager + node-maintenance-operator: "" +status: + loadBalancer: {} diff --git a/operators/node-maintenance-operator/0.20.0/manifests/node-maintenance-operator.clusterserviceversion.yaml b/operators/node-maintenance-operator/0.20.0/manifests/node-maintenance-operator.clusterserviceversion.yaml new file mode 100644 index 000000000000..8f89d2d76774 --- /dev/null +++ b/operators/node-maintenance-operator/0.20.0/manifests/node-maintenance-operator.clusterserviceversion.yaml @@ -0,0 +1,393 @@ +apiVersion: operators.coreos.com/v1alpha1 +kind: ClusterServiceVersion +metadata: + annotations: + alm-examples: |- + [ + { + "apiVersion": "nodemaintenance.medik8s.io/v1beta1", + "kind": "NodeMaintenance", + "metadata": { + "name": "nodemaintenance-sample" + }, + "spec": { + "nodeName": "node02", + "reason": "Test node maintenance" + } + } + ] + capabilities: Basic Install + categories: OpenShift Optional + containerImage: quay.io/medik8s/node-maintenance-operator:v0.20.0 + createdAt: 2026-02-26 10:36:38 + description: Node Maintenance Operator for cordoning and draining nodes. + olm.skipRange: '>=0.12.0' + operatorframework.io/suggested-namespace: openshift-workload-availability + operatorframework.io/suggested-namespace-template: '{"kind":"Namespace","apiVersion":"v1","metadata":{"name":"openshift-workload-availability","annotations":{"openshift.io/node-selector":""}}}' + operators.operatorframework.io/builder: operator-sdk-v1.37.0 + operators.operatorframework.io/project_layout: go.kubebuilder.io/v3 + repository: https://github.com/medik8s/node-maintenance-operator + support: Medik8s + name: node-maintenance-operator.v0.20.0 + namespace: placeholder +spec: + apiservicedefinitions: {} + customresourcedefinitions: + owned: + - description: NodeMaintenance is the Schema for the nodemaintenances API + displayName: Node Maintenance + kind: NodeMaintenance + name: nodemaintenances.nodemaintenance.medik8s.io + resources: + - kind: NodeMaintenance + name: nodemaintenances + version: v1beta1 + specDescriptors: + - description: Node name to apply maintanance on/off + displayName: Node Name + path: nodeName + - description: Reason for maintanance + displayName: Reason + path: reason + statusDescriptors: + - description: Percentage completion of draining the node + displayName: Drain Progress + path: drainProgress + - description: Consecutive number of errors upon obtaining a lease + displayName: Error On Lease Count + path: errorOnLeaseCount + - description: EvictionPods is the total number of pods up for eviction from + the start + displayName: Eviction Pods + path: evictionPods + - description: LastError represents the latest error if any in the latest reconciliation + displayName: Last Error + path: lastError + - description: The last time the status has been updated + displayName: Last Update + path: lastUpdate + - description: PendingPods is a list of pending pods for eviction + displayName: Pending Pods + path: pendingPods + - description: PendingPodsRefs is a list of refs of pending pods for eviction + displayName: Pending Pods Refs + path: pendingPodsRefs + - description: Phase is the represtation of the maintenance progress (Running,Succeeded,Failed) + displayName: Phase + path: phase + - description: TotalPods is the total number of all pods on the node from the + start + displayName: Total Pods + path: totalpods + version: v1beta1 + description: | + Node Maintenance Operator (NMO) + + This operator will keep nodes cordoned and drained while a matching NodeMaintenance (nm) custom resource exists. + This is useful when investigating problems with a machine, or performing an operation on the underlying machine that might result in node failure. + displayName: Node Maintenance Operator - Community Edition + icon: + - base64data: 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 + mediatype: image/png + install: + spec: + clusterPermissions: + - rules: + - apiGroups: + - "" + resources: + - namespaces + verbs: + - create + - get + - apiGroups: + - "" + resources: + - nodes + verbs: + - get + - list + - patch + - update + - watch + - apiGroups: + - "" + resources: + - pods + verbs: + - get + - list + - watch + - apiGroups: + - "" + resources: + - pods/eviction + verbs: + - create + - apiGroups: + - apps + resources: + - daemonsets + - deployments + - replicasets + - statefulsets + verbs: + - get + - list + - watch + - apiGroups: + - coordination.k8s.io + resources: + - leases + verbs: + - create + - get + - list + - patch + - update + - watch + - apiGroups: + - monitoring.coreos.com + resources: + - servicemonitors + verbs: + - create + - get + - apiGroups: + - nodemaintenance.medik8s.io + resources: + - nodemaintenances + verbs: + - create + - delete + - get + - list + - patch + - update + - watch + - apiGroups: + - nodemaintenance.medik8s.io + resources: + - nodemaintenances/finalizers + verbs: + - update + - apiGroups: + - nodemaintenance.medik8s.io + resources: + - nodemaintenances/status + verbs: + - get + - patch + - update + - apiGroups: + - oauth.openshift.io + resources: + - '*' + verbs: + - '*' + - apiGroups: + - policy + resources: + - poddisruptionbudgets + verbs: + - get + - list + - watch + - apiGroups: + - authentication.k8s.io + resources: + - tokenreviews + verbs: + - create + - apiGroups: + - authorization.k8s.io + resources: + - subjectaccessreviews + verbs: + - create + serviceAccountName: node-maintenance-operator-controller-manager + deployments: + - label: + control-plane: controller-manager + node-maintenance-operator: "" + name: node-maintenance-operator-controller-manager + spec: + replicas: 1 + selector: + matchLabels: + control-plane: controller-manager + node-maintenance-operator: "" + strategy: {} + template: + metadata: + annotations: + kubectl.kubernetes.io/default-container: manager + labels: + control-plane: controller-manager + node-maintenance-operator: "" + spec: + affinity: + nodeAffinity: + preferredDuringSchedulingIgnoredDuringExecution: + - preference: + matchExpressions: + - key: node-role.kubernetes.io/infra + operator: Exists + weight: 3 + - preference: + matchExpressions: + - key: node-role.kubernetes.io/master + operator: Exists + weight: 1 + - preference: + matchExpressions: + - key: node-role.kubernetes.io/control-plane + operator: Exists + weight: 1 + containers: + - args: + - --health-probe-bind-address=:8081 + - --metrics-bind-address=:8080 + - --leader-elect + command: + - /manager + env: + - name: OPERATOR_NAMESPACE + valueFrom: + fieldRef: + fieldPath: metadata.namespace + image: quay.io/medik8s/node-maintenance-operator:v0.20.0 + livenessProbe: + httpGet: + path: /healthz + port: 8081 + initialDelaySeconds: 15 + periodSeconds: 20 + name: manager + ports: + - containerPort: 9443 + name: webhook-server + protocol: TCP + readinessProbe: + httpGet: + path: /readyz + port: 8081 + initialDelaySeconds: 5 + periodSeconds: 10 + resources: + limits: + cpu: 200m + memory: 100Mi + requests: + cpu: 100m + memory: 20Mi + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: + - ALL + readOnlyRootFilesystem: true + priorityClassName: system-cluster-critical + securityContext: + runAsNonRoot: true + seccompProfile: + type: RuntimeDefault + serviceAccountName: node-maintenance-operator-controller-manager + terminationGracePeriodSeconds: 10 + tolerations: + - effect: NoSchedule + key: node-role.kubernetes.io/master + operator: Exists + - effect: NoSchedule + key: node-role.kubernetes.io/control-plane + operator: Exists + - effect: NoSchedule + key: node-role.kubernetes.io/infra + operator: Exists + - effect: NoExecute + key: node-role.kubernetes.io/infra + operator: Exists + 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: node-maintenance-operator-controller-manager + strategy: deployment + installModes: + - supported: false + type: OwnNamespace + - supported: false + type: SingleNamespace + - supported: false + type: MultiNamespace + - supported: true + type: AllNamespaces + keywords: + - medik8s + - Node-maintenance + - nmo + links: + - name: Node Maintenance Operator + url: https://medik8s.io + - name: Source Code + url: https://github.com/medik8s/node-maintenance-operator + maintainers: + - email: medik8s@googlegroups.com + name: Medik8s Team + maturity: beta + minKubeVersion: 1.23.0 + provider: + name: Medik8s + url: https://github.com/medik8s + version: 0.20.0 + webhookdefinitions: + - admissionReviewVersions: + - v1 + containerPort: 443 + deploymentName: node-maintenance-operator-controller-manager + failurePolicy: Fail + generateName: vnodemaintenance.kb.io + rules: + - apiGroups: + - nodemaintenance.medik8s.io + apiVersions: + - v1beta1 + operations: + - CREATE + - UPDATE + resources: + - nodemaintenances + sideEffects: None + targetPort: 9443 + timeoutSeconds: 15 + type: ValidatingAdmissionWebhook + webhookPath: /validate-nodemaintenance-medik8s-io-v1beta1-nodemaintenance diff --git a/operators/node-maintenance-operator/0.20.0/manifests/nodemaintenance.medik8s.io_nodemaintenances.yaml b/operators/node-maintenance-operator/0.20.0/manifests/nodemaintenance.medik8s.io_nodemaintenances.yaml new file mode 100644 index 000000000000..6dbc47145098 --- /dev/null +++ b/operators/node-maintenance-operator/0.20.0/manifests/nodemaintenance.medik8s.io_nodemaintenances.yaml @@ -0,0 +1,117 @@ +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.20.0 + creationTimestamp: null + labels: + node-maintenance-operator: "" + name: nodemaintenances.nodemaintenance.medik8s.io +spec: + group: nodemaintenance.medik8s.io + names: + kind: NodeMaintenance + listKind: NodeMaintenanceList + plural: nodemaintenances + shortNames: + - nm + singular: nodemaintenance + scope: Cluster + versions: + - name: v1beta1 + schema: + openAPIV3Schema: + description: NodeMaintenance is the Schema for the nodemaintenances 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: NodeMaintenanceSpec defines the desired state of NodeMaintenance + properties: + nodeName: + description: Node name to apply maintanance on/off + type: string + reason: + description: Reason for maintanance + type: string + required: + - nodeName + type: object + status: + description: NodeMaintenanceStatus defines the observed state of NodeMaintenance + properties: + drainProgress: + description: Percentage completion of draining the node + type: integer + errorOnLeaseCount: + description: Consecutive number of errors upon obtaining a lease + type: integer + evictionPods: + description: EvictionPods is the total number of pods up for eviction + from the start + type: integer + lastError: + description: LastError represents the latest error if any in the latest + reconciliation + type: string + lastUpdate: + description: The last time the status has been updated + format: date-time + type: string + pendingPods: + description: PendingPods is a list of pending pods for eviction + items: + type: string + type: array + pendingPodsRefs: + description: PendingPodsRefs is a list of refs of pending pods for + eviction + items: + properties: + name: + description: |- + Name of the referent pod. + More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + type: string + namespace: + description: |- + Namespace of the referent pod. + More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/ + type: string + type: object + type: array + phase: + description: Phase is the represtation of the maintenance progress + (Running,Succeeded,Failed) + type: string + totalpods: + description: TotalPods is the total number of all pods on the node + from the start + type: integer + type: object + type: object + served: true + storage: true + subresources: + status: {} +status: + acceptedNames: + kind: "" + plural: "" + conditions: null + storedVersions: null diff --git a/operators/node-maintenance-operator/0.20.0/metadata/annotations.yaml b/operators/node-maintenance-operator/0.20.0/metadata/annotations.yaml new file mode 100644 index 000000000000..e17e74adb51b --- /dev/null +++ b/operators/node-maintenance-operator/0.20.0/metadata/annotations.yaml @@ -0,0 +1,15 @@ +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: node-maintenance-operator + operators.operatorframework.io.bundle.channels.v1: stable + operators.operatorframework.io.bundle.channel.default.v1: stable + operators.operatorframework.io.metrics.builder: operator-sdk-v1.37.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/node-maintenance-operator/0.20.0/tests/scorecard/config.yaml b/operators/node-maintenance-operator/0.20.0/tests/scorecard/config.yaml new file mode 100644 index 000000000000..9769772ab10e --- /dev/null +++ b/operators/node-maintenance-operator/0.20.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.32.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.32.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.32.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.32.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.32.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.32.0 + labels: + suite: olm + test: olm-status-descriptors-test + storage: + spec: + mountPath: {} +storage: + spec: + mountPath: {}