diff --git a/operators/aiven-operator/0.1.1/bundle.Dockerfile b/operators/aiven-operator/0.1.1/bundle.Dockerfile new file mode 100644 index 00000000000..1273b28d444 --- /dev/null +++ b/operators/aiven-operator/0.1.1/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=aiven-operator +LABEL operators.operatorframework.io.bundle.channels.v1=alpha +LABEL operators.operatorframework.io.metrics.builder=operator-sdk-v1.11.0+git +LABEL operators.operatorframework.io.metrics.mediatype.v1=metrics+v1 +LABEL operators.operatorframework.io.metrics.project_layout=go.kubebuilder.io/v2 + +# 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/aiven-operator/0.1.1/manifests/aiven-operator-webhook-service_v1_service.yaml b/operators/aiven-operator/0.1.1/manifests/aiven-operator-webhook-service_v1_service.yaml new file mode 100644 index 00000000000..25734fd820f --- /dev/null +++ b/operators/aiven-operator/0.1.1/manifests/aiven-operator-webhook-service_v1_service.yaml @@ -0,0 +1,13 @@ +apiVersion: v1 +kind: Service +metadata: + creationTimestamp: null + name: aiven-operator-webhook-service +spec: + ports: + - port: 443 + targetPort: 9443 + selector: + control-plane: controller-manager +status: + loadBalancer: {} diff --git a/operators/aiven-operator/0.1.1/manifests/aiven-operator.v0.1.1.clusterserviceversion.yaml b/operators/aiven-operator/0.1.1/manifests/aiven-operator.v0.1.1.clusterserviceversion.yaml new file mode 100644 index 00000000000..1797f2907b1 --- /dev/null +++ b/operators/aiven-operator/0.1.1/manifests/aiven-operator.v0.1.1.clusterserviceversion.yaml @@ -0,0 +1,981 @@ +apiVersion: operators.coreos.com/v1alpha1 +kind: ClusterServiceVersion +metadata: + annotations: + alm-examples: '[]' + capabilities: Basic Install + categories: Cloud Provider + description: Manage your https://aiven.io resources with Kubernetes. + repository: https://github.com/aiven/aiven-operator + containerImage: aivenoy/aiven-operator:v0.1.1 + operators.operatorframework.io/builder: operator-sdk-v1.11.0+git + operators.operatorframework.io/project_layout: go.kubebuilder.io/v2 + name: aiven-operator.v0.1.1 + namespace: placeholder +spec: + apiservicedefinitions: {} + customresourcedefinitions: + owned: + - description: ConnectionPool is the Schema for the connectionpools API + displayName: Connection Pool + kind: ConnectionPool + name: connectionpools.aiven.io + version: v1alpha1 + - description: Database is the Schema for the databases API + displayName: Database + kind: Database + name: databases.aiven.io + version: v1alpha1 + - description: KafkaACL is the Schema for the kafkaacls API + displayName: Kafka ACL + kind: KafkaACL + name: kafkaacls.aiven.io + version: v1alpha1 + - description: KafkaConnector is the Schema for the kafkaconnectors API + displayName: Kafka Connector + kind: KafkaConnector + name: kafkaconnectors.aiven.io + version: v1alpha1 + - description: KafkaConnect is the Schema for the kafkaconnects API + displayName: Kafka Connect + kind: KafkaConnect + name: kafkaconnects.aiven.io + version: v1alpha1 + - description: Kafka is the Schema for the kafkas API + displayName: Kafka + kind: Kafka + name: kafkas.aiven.io + version: v1alpha1 + - description: KafkaSchema is the Schema for the kafkaschemas API + displayName: Kafka Schema + kind: KafkaSchema + name: kafkaschemas.aiven.io + version: v1alpha1 + - description: KafkaTopic is the Schema for the kafkatopics API + displayName: Kafka Topic + kind: KafkaTopic + name: kafkatopics.aiven.io + version: v1alpha1 + - description: PostgreSQL is the Schema for the postgresql API + displayName: Postgre SQL + kind: PostgreSQL + name: postgresqls.aiven.io + version: v1alpha1 + - description: Project is the Schema for the projects API + displayName: Project + kind: Project + name: projects.aiven.io + version: v1alpha1 + - description: ProjectVPC is the Schema for the projectvpcs API + displayName: Project VPC + kind: ProjectVPC + name: projectvpcs.aiven.io + version: v1alpha1 + - description: ServiceIntegration is the Schema for the serviceintegrations API + displayName: Service Integration + kind: ServiceIntegration + name: serviceintegrations.aiven.io + version: v1alpha1 + - description: ServiceUser is the Schema for the serviceusers API + displayName: Service User + kind: ServiceUser + name: serviceusers.aiven.io + version: v1alpha1 + description: A Kubernetes operator for provisioning and managing Aiven Databases + and other resources + displayName: Aiven Operator + install: + spec: + clusterPermissions: + - rules: + - apiGroups: + - "" + resources: + - events + verbs: + - create + - patch + - apiGroups: + - "" + resources: + - secrets + verbs: + - create + - delete + - get + - list + - patch + - update + - watch + - apiGroups: + - aiven.io + resources: + - connectionpools + verbs: + - create + - delete + - get + - list + - patch + - update + - watch + - apiGroups: + - aiven.io + resources: + - connectionpools/status + verbs: + - get + - patch + - update + - apiGroups: + - aiven.io + resources: + - databases + verbs: + - create + - delete + - get + - list + - patch + - update + - watch + - apiGroups: + - aiven.io + resources: + - databases/status + verbs: + - get + - patch + - update + - apiGroups: + - aiven.io + resources: + - kafkaacls + verbs: + - create + - delete + - get + - list + - watch + - apiGroups: + - aiven.io + resources: + - kafkaacls/status + verbs: + - get + - apiGroups: + - aiven.io + resources: + - kafkaconnectors + verbs: + - create + - delete + - get + - list + - patch + - update + - watch + - apiGroups: + - aiven.io + resources: + - kafkaconnectors/status + verbs: + - get + - patch + - update + - apiGroups: + - aiven.io + resources: + - kafkaconnects + verbs: + - create + - delete + - get + - list + - patch + - update + - watch + - apiGroups: + - aiven.io + resources: + - kafkaconnects/status + verbs: + - get + - patch + - update + - apiGroups: + - aiven.io + resources: + - kafkas + verbs: + - create + - delete + - get + - list + - patch + - update + - watch + - apiGroups: + - aiven.io + resources: + - kafkas/status + verbs: + - get + - patch + - update + - apiGroups: + - aiven.io + resources: + - kafkaschemas + verbs: + - create + - delete + - get + - list + - patch + - update + - watch + - apiGroups: + - aiven.io + resources: + - kafkaschemas/status + verbs: + - get + - patch + - update + - apiGroups: + - aiven.io + resources: + - kafkatopics + verbs: + - create + - delete + - get + - list + - patch + - update + - watch + - apiGroups: + - aiven.io + resources: + - kafkatopics/status + verbs: + - get + - patch + - update + - apiGroups: + - aiven.io + resources: + - postgresqls + verbs: + - create + - delete + - get + - list + - patch + - update + - watch + - apiGroups: + - aiven.io + resources: + - postgresqls/status + verbs: + - get + - patch + - update + - apiGroups: + - aiven.io + resources: + - projects + verbs: + - create + - delete + - get + - list + - patch + - update + - watch + - apiGroups: + - aiven.io + resources: + - projects/status + verbs: + - get + - patch + - update + - apiGroups: + - aiven.io + resources: + - projectvpcs + verbs: + - create + - delete + - get + - list + - patch + - update + - watch + - apiGroups: + - aiven.io + resources: + - projectvpcs/status + verbs: + - get + - patch + - update + - apiGroups: + - aiven.io + resources: + - serviceintegrations + verbs: + - create + - delete + - get + - list + - patch + - update + - watch + - apiGroups: + - aiven.io + resources: + - serviceintegrations/status + verbs: + - get + - patch + - update + - apiGroups: + - aiven.io + resources: + - serviceusers + verbs: + - create + - delete + - get + - list + - update + - watch + - apiGroups: + - aiven.io + resources: + - serviceusers/status + verbs: + - get + - update + - apiGroups: + - coordination.k8s.io + resources: + - leases + verbs: + - create + - get + - list + - update + serviceAccountName: default + deployments: + - name: aiven-operator-controller-manager + spec: + replicas: 1 + selector: + matchLabels: + control-plane: controller-manager + strategy: {} + template: + metadata: + labels: + control-plane: controller-manager + spec: + containers: + - args: + - --enable-leader-election + command: + - /manager + image: aivenoy/aiven-operator:v0.1.1 + imagePullPolicy: IfNotPresent + name: manager + ports: + - containerPort: 9443 + name: webhook-server + protocol: TCP + resources: + limits: + cpu: 100m + memory: 30Mi + requests: + cpu: 100m + memory: 20Mi + volumeMounts: + - mountPath: /tmp/k8s-webhook-server/serving-certs + name: cert + readOnly: true + terminationGracePeriodSeconds: 10 + volumes: + - name: cert + secret: + defaultMode: 420 + secretName: webhook-server-cert + permissions: + - rules: + - apiGroups: + - "" + resources: + - configmaps + verbs: + - get + - list + - watch + - create + - update + - patch + - delete + - apiGroups: + - "" + resources: + - configmaps/status + verbs: + - get + - update + - patch + - apiGroups: + - "" + resources: + - events + verbs: + - create + - patch + serviceAccountName: default + strategy: deployment + installModes: + - supported: false + type: OwnNamespace + - supported: false + type: SingleNamespace + - supported: false + type: MultiNamespace + - supported: true + type: AllNamespaces + + keywords: + - aiven + icon: + - base64data: PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDI0LjEuMywgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgIC0tPgo8c3ZnIHZlcnNpb249IjEuMSIgaWQ9IkxheWVyXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IgoJIHZpZXdCb3g9IjAgMCAzOTYuOSAzMTEuOCIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAgMzk2LjkgMzExLjg7IiB4bWw6c3BhY2U9InByZXNlcnZlIj4KPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KCS5zdDB7ZmlsbDojMzAzMDMwO30KCS5zdDF7ZmlsbDp1cmwoI1NWR0lEXzFfKTt9Cgkuc3Qye2ZpbGw6dXJsKCNTVkdJRF8yXyk7fQoJLnN0M3tmaWxsOnVybCgjU1ZHSURfM18pO30KCS5zdDR7ZmlsbDp1cmwoI1NWR0lEXzRfKTt9Cgkuc3Q1e2ZpbGw6dXJsKCNTVkdJRF81Xyk7fQoJLnN0NntmaWxsOnVybCgjU1ZHSURfNl8pO30KCS5zdDd7ZmlsbDp1cmwoI1NWR0lEXzdfKTt9Cgkuc3Q4e2ZpbGw6dXJsKCNTVkdJRF84Xyk7fQoJLnN0OXtmaWxsOnVybCgjU1ZHSURfOV8pO30KPC9zdHlsZT4KPGc+Cgk8cGF0aCBjbGFzcz0ic3QwIiBkPSJNNjQuOCwxOTkuOWM1LjcsMCwxMC41LDAuNywxNC4zLDIuMWMzLjksMS40LDcsMy40LDkuMyw2YzIuMywyLjYsNCw1LjcsNSw5LjNjMSwzLjYsMS41LDcuNiwxLjUsMTJ2NDUKCQljLTIuNiwwLjYtNi42LDEuMy0xMiwyLjFjLTUuMywwLjgtMTEuNCwxLjItMTguMSwxLjJjLTQuNCwwLTguNS0wLjQtMTIuMi0xLjNjLTMuNy0wLjgtNi44LTIuMi05LjQtNC4xYy0yLjYtMS45LTQuNi00LjQtNi4xLTcuNAoJCWMtMS41LTMtMi4yLTYuOC0yLjItMTEuMmMwLTQuMywwLjgtNy44LDIuNS0xMC44YzEuNy0yLjksMy45LTUuMyw2LjctNy4yYzIuOC0xLjgsNi4xLTMuMiw5LjktNGMzLjctMC44LDcuNi0xLjIsMTEuNy0xLjIKCQljMS45LDAsMy45LDAuMSw2LDAuNGMyLjEsMC4yLDQuMywwLjYsNi43LDEuMnYtMi44YzAtMi0wLjItMy45LTAuNy01LjdjLTAuNS0xLjgtMS4zLTMuNC0yLjUtNC44Yy0xLjItMS40LTIuNy0yLjQtNC43LTMuMgoJCWMtMS45LTAuOC00LjQtMS4xLTcuMy0xLjFjLTQsMC03LjYsMC4zLTEwLjksMC45Yy0zLjMsMC42LTYsMS4yLTguMSwyTDQyLDIwMy4zYzIuMi0wLjgsNS4zLTEuNSw5LjUtMi4zCgkJQzU1LjYsMjAwLjMsNjAuMSwxOTkuOSw2NC44LDE5OS45eiBNNjYuMiwyNjMuOWM1LjMsMCw5LjMtMC4zLDEyLjEtMC44di0xOWMtMC45LTAuMy0yLjMtMC42LTQuMS0wLjhjLTEuOC0wLjMtMy44LTAuNC02LTAuNAoJCWMtMS45LDAtMy44LDAuMS01LjcsMC40Yy0xLjksMC4zLTMuNywwLjgtNS4yLDEuNmMtMS42LDAuOC0yLjgsMS44LTMuOCwzLjJjLTAuOSwxLjQtMS40LDMuMS0xLjQsNS4yYzAsNC4xLDEuMyw2LjksMy44LDguNAoJCUM1OC40LDI2My4xLDYxLjksMjYzLjksNjYuMiwyNjMuOXoiLz4KCTxwYXRoIGNsYXNzPSJzdDAiIGQ9Ik0xMzIuMiwxODBjMCwzLjItMSw1LjgtMy4xLDcuN2MtMi4xLDEuOS00LjUsMi44LTcuNCwyLjhjLTIuOSwwLTUuNC0wLjktNy41LTIuOGMtMi4xLTEuOS0zLjEtNC40LTMuMS03LjcKCQljMC0zLjMsMS01LjksMy4xLTcuOGMyLjEtMS45LDQuNi0yLjgsNy41LTIuOGMyLjgsMCw1LjMsMC45LDcuNCwyLjhDMTMxLjIsMTc0LjEsMTMyLjIsMTc2LjcsMTMyLjIsMTgweiBNMTMwLjQsMjc2aC0xNy4ydi03NC4yCgkJaDE3LjJWMjc2eiIvPgoJPHBhdGggY2xhc3M9InN0MCIgZD0iTTE3MS4zLDI3NmMtNC43LTkuNy05LjYtMjAuOS0xNC42LTMzLjZjLTUtMTIuNi05LjUtMjYuMi0xMy42LTQwLjZoMTguM2MxLDQuMiwyLjMsOC42LDMuNiwxMy40CgkJYzEuNCw0LjgsMi44LDkuNiw0LjQsMTQuM2MxLjYsNC44LDMuMiw5LjQsNC44LDEzLjljMS43LDQuNSwzLjIsOC41LDQuNiwxMi4xYzEuNC0zLjYsMi45LTcuNiw0LjYtMTIuMWMxLjYtNC41LDMuMi05LjEsNC44LTEzLjkKCQljMS42LTQuOCwzLjEtOS42LDQuNS0xNC4zYzEuNC00LjgsMi43LTkuMiwzLjctMTMuNGgxNy43Yy00LjEsMTQuNS04LjYsMjgtMTMuNiw0MC42Yy01LDEyLjYtOS45LDIzLjgtMTQuNiwzMy42SDE3MS4zeiIvPgoJPHBhdGggY2xhc3M9InN0MCIgZD0iTTIxOC4yLDIzOS4yYzAtNi41LDEtMTIuMiwyLjktMTcuMmMxLjktNC45LDQuNS05LDcuNy0xMi4zYzMuMi0zLjMsNi45LTUuNywxMS4xLTcuNAoJCWM0LjItMS43LDguNC0yLjUsMTIuOC0yLjVjMTAuMiwwLDE4LjIsMy4yLDIzLjksOS41YzUuNyw2LjMsOC42LDE1LjgsOC42LDI4LjRjMCwwLjksMCwyLTAuMSwzLjJjMCwxLjItMC4xLDIuMi0wLjIsMy4yaC00OC45CgkJYzAuNSw2LDIuNiwxMC42LDYuMywxMy44YzMuNywzLjMsOS4yLDQuOSwxNi4yLDQuOWM0LjIsMCw4LTAuNCwxMS40LTEuMWMzLjUtMC44LDYuMi0xLjYsOC4yLTIuNGwyLjMsMTRjLTAuOSwwLjUtMi4yLDEtMy45LDEuNQoJCWMtMS43LDAuNS0zLjUsMS01LjcsMS40Yy0yLjEsMC40LTQuNCwwLjgtNi45LDEuMWMtMi41LDAuMy01LDAuNC03LjUsMC40Yy02LjUsMC0xMi4yLTEtMTctMi45Yy00LjgtMS45LTguOC00LjYtMTEuOS04LjEKCQljLTMuMS0zLjUtNS40LTcuNS03LTEyLjJDMjE4LjksMjQ5LjksMjE4LjIsMjQ0LjgsMjE4LjIsMjM5LjJ6IE0yNjgsMjMxLjZjMC0yLjQtMC4zLTQuNi0xLTYuN2MtMC43LTIuMS0xLjYtNC0yLjktNS41CgkJYy0xLjMtMS42LTIuOC0yLjgtNC43LTMuN2MtMS44LTAuOS00LTEuMy02LjYtMS4zYy0yLjYsMC01LDAuNS03LDEuNWMtMiwxLTMuNywyLjMtNSwzLjljLTEuNCwxLjYtMi40LDMuNS0zLjIsNS41CgkJYy0wLjgsMi4xLTEuMyw0LjItMS42LDYuNEgyNjh6Ii8+Cgk8cGF0aCBjbGFzcz0ic3QwIiBkPSJNMzAwLjUsMjA0LjJjMy4zLTAuOSw3LjYtMS44LDEyLjktMi43YzUuMy0wLjksMTEuMi0xLjMsMTcuNi0xLjNjNi4xLDAsMTEuMSwwLjgsMTUuMiwyLjUKCQljNC4xLDEuNyw3LjMsNCw5LjcsN2MyLjQsMyw0LjEsNi42LDUuMSwxMC44YzEsNC4yLDEuNSw4LjgsMS41LDEzLjhWMjc2aC0xNy4ydi0zOWMwLTQtMC4zLTcuNC0wLjgtMTAuMWMtMC41LTIuOC0xLjQtNS4xLTIuNi02LjgKCQljLTEuMi0xLjctMi44LTMtNC44LTMuOGMtMi0wLjgtNC41LTEuMi03LjQtMS4yYy0yLjIsMC00LjQsMC4xLTYuOCwwLjRjLTIuNCwwLjMtNC4xLDAuNS01LjIsMC43VjI3NmgtMTcuMlYyMDQuMnoiLz4KPC9nPgo8Zz4KCTxnPgoJCTxsaW5lYXJHcmFkaWVudCBpZD0iU1ZHSURfMV8iIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIiB4MT0iMTY1Ljc5OTQiIHkxPSIxNTIuMjY5NiIgeDI9IjIzNy4xMzg3IiB5Mj0iNTUuODI5NCI+CgkJCTxzdG9wICBvZmZzZXQ9IjAiIHN0eWxlPSJzdG9wLWNvbG9yOiNGRjc3MDAiLz4KCQkJPHN0b3AgIG9mZnNldD0iMC43NDIzIiBzdHlsZT0ic3RvcC1jb2xvcjojRkYzNTU0Ii8+CgkJPC9saW5lYXJHcmFkaWVudD4KCQk8cGF0aCBjbGFzcz0ic3QxIiBkPSJNMjQyLjksMTIxLjJjMi44LDAsNS41LDAuNSw4LDEuNGM0LTQuNiw2LjEtOS42LDYuMS0xNC44YzAtOC41LTUuOC0xNi43LTE2LjItMjMuMQoJCQljLTExLjItNi44LTI2LjItMTAuNi00Mi4xLTEwLjZoMGMtMTYsMC0zMSwzLjgtNDIuMSwxMC42Yy0xMC41LDYuNC0xNi4yLDE0LjYtMTYuMiwyMy4xYzAsNS4yLDIuMSwxMC4yLDYuMSwxNC44CgkJCWMyLjUtMC45LDUuMi0xLjQsOC0xLjRjNi4zLDAsMTIuMiwyLjQsMTYuNiw2LjljMy4xLDMuMSw1LjIsNi45LDYuMiwxMS4xYzYuNywxLjYsMTMuOSwyLjQsMjEuNCwyLjRjNy40LDAsMTQuNi0wLjgsMjEuNC0yLjQKCQkJYzEtNC4xLDMuMS04LDYuMi0xMS4xQzIzMC43LDEyMy43LDIzNi42LDEyMS4yLDI0Mi45LDEyMS4yeiBNMTk4LjcsMTAxLjZjLTcuMiwwLTEzLjEtNS45LTEzLjEtMTMuMWgyNi4yCgkJCUMyMTEuOCw5NS44LDIwNS45LDEwMS42LDE5OC43LDEwMS42eiIvPgoJPC9nPgoJPGc+CgkJPGxpbmVhckdyYWRpZW50IGlkPSJTVkdJRF8yXyIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiIHgxPSIxMTYuNDkyMyIgeTE9IjExNS43OTU4IiB4Mj0iMTg3LjgzMTYiIHkyPSIxOS4zNTU2Ij4KCQkJPHN0b3AgIG9mZnNldD0iMCIgc3R5bGU9InN0b3AtY29sb3I6I0ZGNzcwMCIvPgoJCQk8c3RvcCAgb2Zmc2V0PSIwLjc0MjMiIHN0eWxlPSJzdG9wLWNvbG9yOiNGRjM1NTQiLz4KCQk8L2xpbmVhckdyYWRpZW50PgoJCTxwYXRoIGNsYXNzPSJzdDIiIGQ9Ik0xNTMuMyw3OC42YzEuMy0wLjgsMi42LTEuNSwzLjktMi4ybC0wLjEsMGMtMy4zLTIuNS03LjItMy43LTExLjEtMy43Yy01LjYsMC0xMS4xLDIuNS0xNC43LDcuM2wtMS41LDIuMQoJCQlsMTAuNCw3LjhDMTQzLjUsODUuNywxNDcuOSw4MS45LDE1My4zLDc4LjZ6Ii8+Cgk8L2c+Cgk8Zz4KCQk8bGluZWFyR3JhZGllbnQgaWQ9IlNWR0lEXzNfIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjEyNC45NjYyIiB5MT0iMTIyLjA2NDIiIHgyPSIxOTYuMzA1NSIgeTI9IjI1LjYyNCI+CgkJCTxzdG9wICBvZmZzZXQ9IjAiIHN0eWxlPSJzdG9wLWNvbG9yOiNGRjc3MDAiLz4KCQkJPHN0b3AgIG9mZnNldD0iMC43NDIzIiBzdHlsZT0ic3RvcC1jb2xvcjojRkYzNTU0Ii8+CgkJPC9saW5lYXJHcmFkaWVudD4KCQk8cGF0aCBjbGFzcz0ic3QzIiBkPSJNMTQwLjQsMTI1LjljLTMuNS00LjUtNS43LTkuNC02LjMtMTQuNWMtMC4yLTEuMi0wLjMtMi40LTAuMy0zLjZjMC02LDItMTEuNyw1LjctMTYuOWgtMS4zCgkJCWMtMTAuMiwwLTE4LjQsOC4zLTE4LjQsMTguNHYyLjZsMTMuNywwYy0zLjYsMy01LjksNy4xLTYuNSwxMS43Yy0wLjcsNC45LDAuNiw5LjcsMy42LDEzLjZsMS4xLDEuNWMxLTQsMy4xLTcuNiw2LjEtMTAuNgoJCQlDMTM4LjYsMTI3LjMsMTM5LjUsMTI2LjYsMTQwLjQsMTI1Ljl6Ii8+Cgk8L2c+Cgk8Zz4KCQk8bGluZWFyR3JhZGllbnQgaWQ9IlNWR0lEXzRfIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjE4Ny43NTkzIiB5MT0iMTY4LjUxMzkiIHgyPSIyNTkuMDk4NiIgeTI9IjcyLjA3MzciPgoJCQk8c3RvcCAgb2Zmc2V0PSIwIiBzdHlsZT0ic3RvcC1jb2xvcjojRkY3NzAwIi8+CgkJCTxzdG9wICBvZmZzZXQ9IjAuNzQyMyIgc3R5bGU9InN0b3AtY29sb3I6I0ZGMzU1NCIvPgoJCTwvbGluZWFyR3JhZGllbnQ+CgkJPHBhdGggY2xhc3M9InN0NCIgZD0iTTI1Ny4xLDg5LjlsMTAuNC03LjhsLTEuNS0yLjFjLTMuNi00LjgtOS4xLTcuMy0xNC43LTcuM2MtMy45LDAtNy43LDEuMi0xMS4xLDMuN2wtMC4xLDAKCQkJYzEuMywwLjcsMi43LDEuNCwzLjksMi4yQzI0OS41LDgxLjksMjUzLjgsODUuNywyNTcuMSw4OS45eiIvPgoJPC9nPgoJPGc+CgkJPGxpbmVhckdyYWRpZW50IGlkPSJTVkdJRF81XyIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiIHgxPSIyMDkuOTA4NCIgeTE9IjE4NC44OTgxIiB4Mj0iMjgxLjI0NzciIHkyPSI4OC40NTgiPgoJCQk8c3RvcCAgb2Zmc2V0PSIwIiBzdHlsZT0ic3RvcC1jb2xvcjojRkY3NzAwIi8+CgkJCTxzdG9wICBvZmZzZXQ9IjAuNzQyMyIgc3R5bGU9InN0b3AtY29sb3I6I0ZGMzU1NCIvPgoJCTwvbGluZWFyR3JhZGllbnQ+CgkJPHBhdGggY2xhc3M9InN0NSIgZD0iTTI3Ny42LDEwOS4zYzAtMTAuMi04LjMtMTguNC0xOC40LTE4LjRoLTEuM2MzLjgsNS4yLDUuNywxMSw1LjcsMTYuOWMwLDEuMi0wLjEsMi40LTAuMywzLjYKCQkJYy0wLjcsNS4xLTIuOSwxMC02LjMsMTQuNWMwLjksMC43LDEuOCwxLjQsMi42LDIuMmMzLDMsNS4xLDYuNiw2LjEsMTAuNmwxLjEtMS41YzMtMy45LDQuMy04LjgsMy42LTEzLjYKCQkJYy0wLjYtNC42LTIuOS04LjgtNi41LTExLjdsMTMuNywwVjEwOS4zeiIvPgoJPC9nPgoJPGc+CgkJPGxpbmVhckdyYWRpZW50IGlkPSJTVkdJRF82XyIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiIHgxPSIxMjQuNTM3MSIgeTE9IjEyMS43NDY4IiB4Mj0iMTk1Ljg3NjQiIHkyPSIyNS4zMDY2Ij4KCQkJPHN0b3AgIG9mZnNldD0iMCIgc3R5bGU9InN0b3AtY29sb3I6I0ZGNzcwMCIvPgoJCQk8c3RvcCAgb2Zmc2V0PSIwLjc0MjMiIHN0eWxlPSJzdG9wLWNvbG9yOiNGRjM1NTQiLz4KCQk8L2xpbmVhckdyYWRpZW50PgoJCTxwYXRoIGNsYXNzPSJzdDYiIGQ9Ik0xNzYuNSw2OS45YzEwLjIsMCwxOC40LTguMywxOC40LTE4LjRjMC0xMC4yLTguMy0xOC40LTE4LjQtMTguNGMtMTAuMiwwLTE4LjQsOC4zLTE4LjQsMTguNAoJCQlDMTU4LjEsNjEuNiwxNjYuMyw2OS45LDE3Ni41LDY5Ljl6IE0xNzYuNSw0MS40QzE3Ni41LDQxLjQsMTc2LjYsNDEuNCwxNzYuNSw0MS40Yy0xLjIsMS4zLTIsMy4xLTIsNS4xYzAsMy45LDMuMiw3LjEsNy4xLDcuMQoJCQljMiwwLDMuOC0wLjgsNS4xLTIuMWMwLDAsMCwwLjEsMCwwLjFjMCw1LjYtNC41LDEwLjEtMTAuMSwxMC4xYy01LjYsMC0xMC4xLTQuNS0xMC4xLTEwLjFDMTY2LjQsNDUuOSwxNzAuOSw0MS40LDE3Ni41LDQxLjR6Ii8+Cgk8L2c+Cgk8Zz4KCQk8bGluZWFyR3JhZGllbnQgaWQ9IlNWR0lEXzdfIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjE1My4xODUxIiB5MT0iMTQyLjkzODQiIHgyPSIyMjQuNTI0NCIgeTI9IjQ2LjQ5ODMiPgoJCQk8c3RvcCAgb2Zmc2V0PSIwIiBzdHlsZT0ic3RvcC1jb2xvcjojRkY3NzAwIi8+CgkJCTxzdG9wICBvZmZzZXQ9IjAuNzQyMyIgc3R5bGU9InN0b3AtY29sb3I6I0ZGMzU1NCIvPgoJCTwvbGluZWFyR3JhZGllbnQ+CgkJPHBhdGggY2xhc3M9InN0NyIgZD0iTTIyMC44LDY5LjljMTAuMiwwLDE4LjQtOC4zLDE4LjQtMTguNGMwLTEwLjItOC4zLTE4LjQtMTguNC0xOC40Yy0xMC4yLDAtMTguNCw4LjMtMTguNCwxOC40CgkJCUMyMDIuNCw2MS42LDIxMC43LDY5LjksMjIwLjgsNjkuOXogTTIyMC44LDQxLjRDMjIwLjksNDEuNCwyMjAuOSw0MS40LDIyMC44LDQxLjRjLTEuMiwxLjMtMiwzLjEtMiw1LjFjMCwzLjksMy4yLDcuMSw3LjEsNy4xCgkJCWMyLDAsMy44LTAuOCw1LjEtMi4xYzAsMCwwLDAuMSwwLDAuMWMwLDUuNi00LjUsMTAuMS0xMC4xLDEwLjFjLTUuNiwwLTEwLjEtNC41LTEwLjEtMTAuMUMyMTAuNyw0NS45LDIxNS4yLDQxLjQsMjIwLjgsNDEuNHoiLz4KCTwvZz4KCTxnPgoJCTxsaW5lYXJHcmFkaWVudCBpZD0iU1ZHSURfOF8iIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIiB4MT0iMTU0LjU0MjkiIHkxPSIxNDMuOTQyOSIgeDI9IjIyNS44ODIyIiB5Mj0iNDcuNTAyNyI+CgkJCTxzdG9wICBvZmZzZXQ9IjAiIHN0eWxlPSJzdG9wLWNvbG9yOiNGRjc3MDAiLz4KCQkJPHN0b3AgIG9mZnNldD0iMC43NDIzIiBzdHlsZT0ic3RvcC1jb2xvcjojRkYzNTU0Ii8+CgkJPC9saW5lYXJHcmFkaWVudD4KCQk8cGF0aCBjbGFzcz0ic3Q4IiBkPSJNMTU0LjUsMTI2LjNjLTEwLjIsMC0xOC40LDguMi0xOC40LDE4LjRjMCwxMC4yLDguMiwxOC40LDE4LjQsMTguNGMyLjEsMCw0LjItMC40LDYuMS0xLjEKCQkJYy0wLjItMC4yLTAuNC0wLjMtMC41LTAuNWMtNS4zLTUuMy03LjItMTIuMi00LTE1LjNjMy4xLTMuMSwxMC0xLjMsMTUuMyw0YzAuMiwwLjIsMC4zLDAuNCwwLjUsMC41YzAuNy0xLjksMS4xLTMuOSwxLjEtNi4xCgkJCUMxNzIuOSwxMzQuNiwxNjQuNiwxMjYuMywxNTQuNSwxMjYuM3oiLz4KCTwvZz4KCTxnPgoJCTxsaW5lYXJHcmFkaWVudCBpZD0iU1ZHSURfOV8iIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIiB4MT0iMjEyLjA0MTUiIHkxPSIxODYuNDc2MSIgeDI9IjI4My4zODA4IiB5Mj0iOTAuMDM1OSI+CgkJCTxzdG9wICBvZmZzZXQ9IjAiIHN0eWxlPSJzdG9wLWNvbG9yOiNGRjc3MDAiLz4KCQkJPHN0b3AgIG9mZnNldD0iMC43NDIzIiBzdHlsZT0ic3RvcC1jb2xvcjojRkYzNTU0Ii8+CgkJPC9saW5lYXJHcmFkaWVudD4KCQk8cGF0aCBjbGFzcz0ic3Q5IiBkPSJNMjQyLjksMTI2LjNjLTEwLjIsMC0xOC40LDguMi0xOC40LDE4LjRjMCwyLjEsMC40LDQuMiwxLjEsNi4xYzAuMi0wLjIsMC4zLTAuNCwwLjUtMC41CgkJCWM1LjMtNS4zLDEyLjItNy4yLDE1LjMtNGMzLjEsMy4xLDEuMywxMC00LDE1LjNjLTAuMiwwLjItMC4zLDAuMy0wLjUsMC41YzEuOSwwLjcsMy45LDEuMSw2LjEsMS4xYzEwLjIsMCwxOC40LTguMiwxOC40LTE4LjQKCQkJQzI2MS4zLDEzNC42LDI1My4xLDEyNi4zLDI0Mi45LDEyNi4zeiIvPgoJPC9nPgo8L2c+Cjwvc3ZnPgo= + mediatype: image/svg+xml + links: + - name: Aiven Operator + url: https://aiven.github.io/aiven-operator + maintainers: + - email: ivan.savciuc@gmail.com + name: Ivan Savciuc + - email: michael.hoffmann@aiven.io + name: Michael Hoffmann + maturity: alpha + provider: + name: aiven + version: 0.1.1 + webhookdefinitions: + - admissionReviewVersions: + - v1 + containerPort: 443 + deploymentName: aiven-operator-controller-manager + failurePolicy: Fail + generateName: mconnectionpool.kb.io + rules: + - apiGroups: + - aiven.io + apiVersions: + - v1alpha1 + operations: + - CREATE + - UPDATE + resources: + - connectionpools + sideEffects: None + targetPort: 9443 + type: MutatingAdmissionWebhook + webhookPath: /mutate-aiven-io-v1alpha1-connectionpool + - admissionReviewVersions: + - v1 + containerPort: 443 + deploymentName: aiven-operator-controller-manager + failurePolicy: Fail + generateName: mserviceintegration.kb.io + rules: + - apiGroups: + - aiven.io + apiVersions: + - v1alpha1 + operations: + - CREATE + - UPDATE + resources: + - serviceintegrations + sideEffects: None + targetPort: 9443 + type: MutatingAdmissionWebhook + webhookPath: /mutate-aiven-io-v1alpha1-serviceintegration + - admissionReviewVersions: + - v1 + containerPort: 443 + deploymentName: aiven-operator-controller-manager + failurePolicy: Fail + generateName: mprojectvpc.kb.io + rules: + - apiGroups: + - aiven.io + apiVersions: + - v1alpha1 + operations: + - CREATE + - UPDATE + resources: + - projectvpcs + sideEffects: None + targetPort: 9443 + type: MutatingAdmissionWebhook + webhookPath: /mutate-aiven-io-v1alpha1-projectvpc + - admissionReviewVersions: + - v1 + containerPort: 443 + deploymentName: aiven-operator-controller-manager + failurePolicy: Fail + generateName: mproject.kb.io + rules: + - apiGroups: + - aiven.io + apiVersions: + - v1alpha1 + operations: + - CREATE + - UPDATE + resources: + - projects + sideEffects: None + targetPort: 9443 + type: MutatingAdmissionWebhook + webhookPath: /mutate-aiven-io-v1alpha1-project + - admissionReviewVersions: + - v1 + containerPort: 443 + deploymentName: aiven-operator-controller-manager + failurePolicy: Fail + generateName: mpg.kb.io + rules: + - apiGroups: + - aiven.io + apiVersions: + - v1alpha1 + operations: + - CREATE + - UPDATE + resources: + - postgresqls + sideEffects: None + targetPort: 9443 + type: MutatingAdmissionWebhook + webhookPath: /mutate-aiven-io-v1alpha1-postgresql + - admissionReviewVersions: + - v1 + containerPort: 443 + deploymentName: aiven-operator-controller-manager + failurePolicy: Fail + generateName: mkafkatopic.kb.io + rules: + - apiGroups: + - aiven.io + apiVersions: + - v1alpha1 + operations: + - CREATE + - UPDATE + resources: + - kafkatopics + sideEffects: None + targetPort: 9443 + type: MutatingAdmissionWebhook + webhookPath: /mutate-aiven-io-v1alpha1-kafkatopic + - admissionReviewVersions: + - v1 + containerPort: 443 + deploymentName: aiven-operator-controller-manager + failurePolicy: Fail + generateName: mkafkaschema.kb.io + rules: + - apiGroups: + - aiven.io + apiVersions: + - v1alpha1 + operations: + - CREATE + - UPDATE + resources: + - kafkaschemas + sideEffects: None + targetPort: 9443 + type: MutatingAdmissionWebhook + webhookPath: /mutate-aiven-io-v1alpha1-kafkaschema + - admissionReviewVersions: + - v1 + containerPort: 443 + deploymentName: aiven-operator-controller-manager + failurePolicy: Fail + generateName: mkafkaconnector.kb.io + rules: + - apiGroups: + - aiven.io + apiVersions: + - v1alpha1 + operations: + - CREATE + - UPDATE + resources: + - kafkaconnectors + sideEffects: None + targetPort: 9443 + type: MutatingAdmissionWebhook + webhookPath: /mutate-aiven-io-v1alpha1-kafkaconnector + - admissionReviewVersions: + - v1 + containerPort: 443 + deploymentName: aiven-operator-controller-manager + failurePolicy: Fail + generateName: mkafkaconnect.kb.io + rules: + - apiGroups: + - aiven.io + apiVersions: + - v1alpha1 + operations: + - CREATE + - UPDATE + resources: + - kafkaconnects + sideEffects: None + targetPort: 9443 + type: MutatingAdmissionWebhook + webhookPath: /mutate-aiven-io-v1alpha1-kafkaconnect + - admissionReviewVersions: + - v1 + containerPort: 443 + deploymentName: aiven-operator-controller-manager + failurePolicy: Fail + generateName: mkafkaacl.kb.io + rules: + - apiGroups: + - aiven.io + apiVersions: + - v1alpha1 + operations: + - CREATE + - UPDATE + resources: + - kafkaacls + sideEffects: None + targetPort: 9443 + type: MutatingAdmissionWebhook + webhookPath: /mutate-aiven-io-v1alpha1-kafkaacl + - admissionReviewVersions: + - v1 + containerPort: 443 + deploymentName: aiven-operator-controller-manager + failurePolicy: Fail + generateName: mkafka.kb.io + rules: + - apiGroups: + - aiven.io + apiVersions: + - v1alpha1 + operations: + - CREATE + - UPDATE + resources: + - kafkas + sideEffects: None + targetPort: 9443 + type: MutatingAdmissionWebhook + webhookPath: /mutate-aiven-io-v1alpha1-kafka + - admissionReviewVersions: + - v1 + containerPort: 443 + deploymentName: aiven-operator-controller-manager + failurePolicy: Fail + generateName: mdatabase.kb.io + rules: + - apiGroups: + - aiven.io + apiVersions: + - v1alpha1 + operations: + - CREATE + - UPDATE + resources: + - databases + sideEffects: None + targetPort: 9443 + type: MutatingAdmissionWebhook + webhookPath: /mutate-aiven-io-v1alpha1-database + - admissionReviewVersions: + - v1 + containerPort: 443 + deploymentName: aiven-operator-controller-manager + failurePolicy: Fail + generateName: mserviceuser.kb.io + rules: + - apiGroups: + - aiven.io + apiVersions: + - v1alpha1 + operations: + - CREATE + - UPDATE + resources: + - serviceusers + sideEffects: None + targetPort: 9443 + type: MutatingAdmissionWebhook + webhookPath: /mutate-aiven-io-v1alpha1-serviceuser + - admissionReviewVersions: + - v1 + containerPort: 443 + deploymentName: aiven-operator-controller-manager + failurePolicy: Fail + generateName: vserviceuser.kb.io + rules: + - apiGroups: + - aiven.io + apiVersions: + - v1alpha1 + operations: + - CREATE + - UPDATE + resources: + - serviceusers + sideEffects: None + targetPort: 9443 + type: ValidatingAdmissionWebhook + webhookPath: /validate-aiven-io-v1alpha1-serviceuser + - admissionReviewVersions: + - v1 + containerPort: 443 + deploymentName: aiven-operator-controller-manager + failurePolicy: Fail + generateName: vserviceintegration.kb.io + rules: + - apiGroups: + - aiven.io + apiVersions: + - v1alpha1 + operations: + - CREATE + - UPDATE + resources: + - serviceintegrations + sideEffects: None + targetPort: 9443 + type: ValidatingAdmissionWebhook + webhookPath: /validate-aiven-io-v1alpha1-serviceintegration + - admissionReviewVersions: + - v1 + containerPort: 443 + deploymentName: aiven-operator-controller-manager + failurePolicy: Fail + generateName: vprojectvpc.kb.io + rules: + - apiGroups: + - aiven.io + apiVersions: + - v1alpha1 + operations: + - CREATE + - UPDATE + resources: + - projectvpcs + sideEffects: None + targetPort: 9443 + type: ValidatingAdmissionWebhook + webhookPath: /validate-aiven-io-v1alpha1-projectvpc + - admissionReviewVersions: + - v1 + containerPort: 443 + deploymentName: aiven-operator-controller-manager + failurePolicy: Fail + generateName: vproject.kb.io + rules: + - apiGroups: + - aiven.io + apiVersions: + - v1alpha1 + operations: + - CREATE + - UPDATE + - DELETE + resources: + - projects + sideEffects: None + targetPort: 9443 + type: ValidatingAdmissionWebhook + webhookPath: /validate-aiven-io-v1alpha1-project + - admissionReviewVersions: + - v1 + containerPort: 443 + deploymentName: aiven-operator-controller-manager + failurePolicy: Fail + generateName: vpg.kb.io + rules: + - apiGroups: + - aiven.io + apiVersions: + - v1alpha1 + operations: + - CREATE + - UPDATE + - DELETE + resources: + - postgresqls + sideEffects: None + targetPort: 9443 + type: ValidatingAdmissionWebhook + webhookPath: /validate-aiven-io-v1alpha1-postgresql + - admissionReviewVersions: + - v1 + containerPort: 443 + deploymentName: aiven-operator-controller-manager + failurePolicy: Fail + generateName: vkafkaschema.kb.io + rules: + - apiGroups: + - aiven.io + apiVersions: + - v1alpha1 + operations: + - CREATE + - UPDATE + resources: + - kafkaschemas + sideEffects: None + targetPort: 9443 + type: ValidatingAdmissionWebhook + webhookPath: /validate-aiven-io-v1alpha1-kafkaschema + - admissionReviewVersions: + - v1 + containerPort: 443 + deploymentName: aiven-operator-controller-manager + failurePolicy: Fail + generateName: vkafkatopic.kb.io + rules: + - apiGroups: + - aiven.io + apiVersions: + - v1alpha1 + operations: + - CREATE + - UPDATE + - DELETE + resources: + - kafkatopics + sideEffects: None + targetPort: 9443 + type: ValidatingAdmissionWebhook + webhookPath: /validate-aiven-io-v1alpha1-kafkatopic + - admissionReviewVersions: + - v1 + containerPort: 443 + deploymentName: aiven-operator-controller-manager + failurePolicy: Fail + generateName: vkafkaconnect.kb.io + rules: + - apiGroups: + - aiven.io + apiVersions: + - v1alpha1 + operations: + - CREATE + - UPDATE + - DELETE + resources: + - kafkaconnects + sideEffects: None + targetPort: 9443 + type: ValidatingAdmissionWebhook + webhookPath: /validate-aiven-io-v1alpha1-kafkaconnect + - admissionReviewVersions: + - v1 + containerPort: 443 + deploymentName: aiven-operator-controller-manager + failurePolicy: Fail + generateName: vkafkaacl.kb.io + rules: + - apiGroups: + - aiven.io + apiVersions: + - v1alpha1 + operations: + - CREATE + - UPDATE + resources: + - kafkaacls + sideEffects: None + targetPort: 9443 + type: ValidatingAdmissionWebhook + webhookPath: /validate-aiven-io-v1alpha1-kafkaacl + - admissionReviewVersions: + - v1 + containerPort: 443 + deploymentName: aiven-operator-controller-manager + failurePolicy: Fail + generateName: vkafka.kb.io + rules: + - apiGroups: + - aiven.io + apiVersions: + - v1alpha1 + operations: + - CREATE + - UPDATE + - DELETE + resources: + - kafkas + sideEffects: None + targetPort: 9443 + type: ValidatingAdmissionWebhook + webhookPath: /validate-aiven-io-v1alpha1-kafka + - admissionReviewVersions: + - v1 + containerPort: 443 + deploymentName: aiven-operator-controller-manager + failurePolicy: Fail + generateName: vdatabase.kb.io + rules: + - apiGroups: + - aiven.io + apiVersions: + - v1alpha1 + operations: + - CREATE + - UPDATE + - DELETE + resources: + - databases + sideEffects: None + targetPort: 9443 + type: ValidatingAdmissionWebhook + webhookPath: /validate-aiven-io-v1alpha1-database + - admissionReviewVersions: + - v1 + containerPort: 443 + deploymentName: aiven-operator-controller-manager + failurePolicy: Fail + generateName: vconnectionpool.kb.io + rules: + - apiGroups: + - aiven.io + apiVersions: + - v1alpha1 + operations: + - CREATE + - UPDATE + - DELETE + resources: + - connectionpools + sideEffects: None + targetPort: 9443 + type: ValidatingAdmissionWebhook + webhookPath: /validate-aiven-io-v1alpha1-connectionpool diff --git a/operators/aiven-operator/0.1.1/manifests/aiven.io_connectionpools.yaml b/operators/aiven-operator/0.1.1/manifests/aiven.io_connectionpools.yaml new file mode 100644 index 00000000000..8cda3a64c15 --- /dev/null +++ b/operators/aiven-operator/0.1.1/manifests/aiven.io_connectionpools.yaml @@ -0,0 +1,214 @@ +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + cert-manager.io/inject-ca-from: aiven-operator-system/aiven-operator-serving-cert + controller-gen.kubebuilder.io/version: v0.4.1 + creationTimestamp: null + name: connectionpools.aiven.io +spec: + conversion: + strategy: Webhook + webhook: + clientConfig: + caBundle: Cg== + service: + name: webhook-service + namespace: system + path: /convert + port: 443 + conversionReviewVersions: + - v1 + - v1beta1 + group: aiven.io + names: + kind: ConnectionPool + listKind: ConnectionPoolList + plural: connectionpools + singular: connectionpool + scope: Namespaced + versions: + - additionalPrinterColumns: + - jsonPath: .spec.serviceName + name: Service Name + type: string + - jsonPath: .spec.project + name: Project + type: string + - jsonPath: .spec.databaseName + name: Database + type: string + - jsonPath: .spec.username + name: Username + type: string + - jsonPath: .spec.poolSize + name: Pool Size + type: string + - jsonPath: .spec.poolMode + name: Pool Mode + type: string + name: v1alpha1 + schema: + openAPIV3Schema: + description: ConnectionPool is the Schema for the connectionpools 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: ConnectionPoolSpec defines the desired state of ConnectionPool + properties: + authSecretRef: + description: Authentication reference to Aiven token in a secret + properties: + key: + minLength: 1 + type: string + name: + minLength: 1 + type: string + required: + - key + - name + type: object + connInfoSecretTarget: + description: Information regarding secret creation + properties: + name: + description: Name of the Secret resource to be created + type: string + required: + - name + type: object + databaseName: + description: Name of the database the pool connects to + maxLength: 40 + type: string + poolMode: + description: Mode the pool operates in (session, transaction, statement) + enum: + - session + - transaction + - statement + type: string + poolSize: + description: Number of connections the pool may create towards the + backend server + type: integer + project: + description: Target project. + format: ^[a-zA-Z0-9_-]*$ + maxLength: 63 + type: string + serviceName: + description: Service name. + maxLength: 63 + type: string + username: + description: Name of the service user used to connect to the database + maxLength: 64 + type: string + required: + - authSecretRef + - databaseName + - project + - serviceName + - username + type: object + status: + description: ConnectionPoolStatus defines the observed state of ConnectionPool + properties: + conditions: + description: Conditions represent the latest available observations + of an ConnectionPool state + items: + description: "Condition contains details for one aspect of the current + state of this API Resource. --- This struct is intended for direct + use as an array at the field path .status.conditions. For example, + type FooStatus struct{ // Represents the observations of a + foo's current state. // Known .status.conditions.type are: + \"Available\", \"Progressing\", and \"Degraded\" // +patchMergeKey=type + \ // +patchStrategy=merge // +listType=map // +listMapKey=type + \ Conditions []metav1.Condition `json:\"conditions,omitempty\" + patchStrategy:\"merge\" patchMergeKey:\"type\" protobuf:\"bytes,1,rep,name=conditions\"` + \n // other fields }" + properties: + lastTransitionTime: + description: lastTransitionTime is the last time the condition + transitioned from one status to another. This should be when + the underlying condition changed. If that is not known, then + using the time when the API field changed is acceptable. + format: date-time + type: string + message: + description: message is a human readable message indicating + details about the transition. This may be an empty string. + maxLength: 32768 + type: string + observedGeneration: + description: observedGeneration represents the .metadata.generation + that the condition was set based upon. For instance, if .metadata.generation + is currently 12, but the .status.conditions[x].observedGeneration + is 9, the condition is out of date with respect to the current + state of the instance. + format: int64 + minimum: 0 + type: integer + reason: + description: reason contains a programmatic identifier indicating + the reason for the condition's last transition. Producers + of specific condition types may define expected values and + meanings for this field, and whether the values are considered + a guaranteed API. The value should be a CamelCase string. + This field may not be empty. + maxLength: 1024 + minLength: 1 + pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$ + type: string + status: + description: status of the condition, one of True, False, Unknown. + enum: + - "True" + - "False" + - Unknown + type: string + type: + description: type of condition in CamelCase or in foo.example.com/CamelCase. + --- Many .condition.type values are consistent across resources + like Available, but because arbitrary conditions can be useful + (see .node.status.conditions), the ability to deconflict is + important. The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt) + maxLength: 316 + pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$ + type: string + required: + - lastTransitionTime + - message + - reason + - status + - type + type: object + type: array + required: + - conditions + type: object + type: object + served: true + storage: true + subresources: + status: {} +status: + acceptedNames: + kind: "" + plural: "" + conditions: [] + storedVersions: [] diff --git a/operators/aiven-operator/0.1.1/manifests/aiven.io_databases.yaml b/operators/aiven-operator/0.1.1/manifests/aiven.io_databases.yaml new file mode 100644 index 00000000000..04673d4b358 --- /dev/null +++ b/operators/aiven-operator/0.1.1/manifests/aiven.io_databases.yaml @@ -0,0 +1,188 @@ +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + cert-manager.io/inject-ca-from: aiven-operator-system/aiven-operator-serving-cert + controller-gen.kubebuilder.io/version: v0.4.1 + creationTimestamp: null + name: databases.aiven.io +spec: + conversion: + strategy: Webhook + webhook: + clientConfig: + caBundle: Cg== + service: + name: webhook-service + namespace: system + path: /convert + port: 443 + conversionReviewVersions: + - v1 + - v1beta1 + group: aiven.io + names: + kind: Database + listKind: DatabaseList + plural: databases + singular: database + scope: Namespaced + versions: + - additionalPrinterColumns: + - jsonPath: .spec.serviceName + name: Service Name + type: string + - jsonPath: .spec.project + name: Project + type: string + name: v1alpha1 + schema: + openAPIV3Schema: + description: Database is the Schema for the databases 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: DatabaseSpec defines the desired state of Database + properties: + authSecretRef: + description: Authentication reference to Aiven token in a secret + properties: + key: + minLength: 1 + type: string + name: + minLength: 1 + type: string + required: + - key + - name + type: object + lcCollate: + description: 'Default string sort order (LC_COLLATE) of the database. + Default value: en_US.UTF-8' + maxLength: 128 + type: string + lcCtype: + description: 'Default character classification (LC_CTYPE) of the database. + Default value: en_US.UTF-8' + maxLength: 128 + type: string + project: + description: Project to link the database to + format: ^[a-zA-Z0-9_-]*$ + maxLength: 63 + type: string + serviceName: + description: PostgreSQL service to link the database to + maxLength: 63 + type: string + terminationProtection: + description: It is a Kubernetes side deletion protections, which prevents + the database from being deleted by Kubernetes. It is recommended + to enable this for any production databases containing critical + data. + type: boolean + required: + - authSecretRef + - project + - serviceName + type: object + status: + description: DatabaseStatus defines the observed state of Database + properties: + conditions: + description: Conditions represent the latest available observations + of an Database state + items: + description: "Condition contains details for one aspect of the current + state of this API Resource. --- This struct is intended for direct + use as an array at the field path .status.conditions. For example, + type FooStatus struct{ // Represents the observations of a + foo's current state. // Known .status.conditions.type are: + \"Available\", \"Progressing\", and \"Degraded\" // +patchMergeKey=type + \ // +patchStrategy=merge // +listType=map // +listMapKey=type + \ Conditions []metav1.Condition `json:\"conditions,omitempty\" + patchStrategy:\"merge\" patchMergeKey:\"type\" protobuf:\"bytes,1,rep,name=conditions\"` + \n // other fields }" + properties: + lastTransitionTime: + description: lastTransitionTime is the last time the condition + transitioned from one status to another. This should be when + the underlying condition changed. If that is not known, then + using the time when the API field changed is acceptable. + format: date-time + type: string + message: + description: message is a human readable message indicating + details about the transition. This may be an empty string. + maxLength: 32768 + type: string + observedGeneration: + description: observedGeneration represents the .metadata.generation + that the condition was set based upon. For instance, if .metadata.generation + is currently 12, but the .status.conditions[x].observedGeneration + is 9, the condition is out of date with respect to the current + state of the instance. + format: int64 + minimum: 0 + type: integer + reason: + description: reason contains a programmatic identifier indicating + the reason for the condition's last transition. Producers + of specific condition types may define expected values and + meanings for this field, and whether the values are considered + a guaranteed API. The value should be a CamelCase string. + This field may not be empty. + maxLength: 1024 + minLength: 1 + pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$ + type: string + status: + description: status of the condition, one of True, False, Unknown. + enum: + - "True" + - "False" + - Unknown + type: string + type: + description: type of condition in CamelCase or in foo.example.com/CamelCase. + --- Many .condition.type values are consistent across resources + like Available, but because arbitrary conditions can be useful + (see .node.status.conditions), the ability to deconflict is + important. The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt) + maxLength: 316 + pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$ + type: string + required: + - lastTransitionTime + - message + - reason + - status + - type + type: object + type: array + required: + - conditions + type: object + type: object + served: true + storage: true + subresources: + status: {} +status: + acceptedNames: + kind: "" + plural: "" + conditions: [] + storedVersions: [] diff --git a/operators/aiven-operator/0.1.1/manifests/aiven.io_kafkaacls.yaml b/operators/aiven-operator/0.1.1/manifests/aiven.io_kafkaacls.yaml new file mode 100644 index 00000000000..08276a27f46 --- /dev/null +++ b/operators/aiven-operator/0.1.1/manifests/aiven.io_kafkaacls.yaml @@ -0,0 +1,202 @@ +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + cert-manager.io/inject-ca-from: aiven-operator-system/aiven-operator-serving-cert + controller-gen.kubebuilder.io/version: v0.4.1 + creationTimestamp: null + name: kafkaacls.aiven.io +spec: + conversion: + strategy: Webhook + webhook: + clientConfig: + caBundle: Cg== + service: + name: webhook-service + namespace: system + path: /convert + port: 443 + conversionReviewVersions: + - v1 + - v1beta1 + group: aiven.io + names: + kind: KafkaACL + listKind: KafkaACLList + plural: kafkaacls + singular: kafkaacl + scope: Namespaced + versions: + - additionalPrinterColumns: + - jsonPath: .spec.serviceName + name: Service Name + type: string + - jsonPath: .spec.project + name: Project + type: string + - jsonPath: .spec.username + name: Username + type: string + - jsonPath: .spec.permission + name: Permission + type: string + - jsonPath: .spec.topic + name: Topic + type: string + name: v1alpha1 + schema: + openAPIV3Schema: + description: KafkaACL is the Schema for the kafkaacls 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: KafkaACLSpec defines the desired state of KafkaACL + properties: + authSecretRef: + description: Authentication reference to Aiven token in a secret + properties: + key: + minLength: 1 + type: string + name: + minLength: 1 + type: string + required: + - key + - name + type: object + permission: + description: Kafka permission to grant (admin, read, readwrite, write) + enum: + - admin + - read + - readwrite + - write + type: string + project: + description: Project to link the Kafka ACL to + format: ^[a-zA-Z0-9_-]*$ + maxLength: 63 + type: string + serviceName: + description: Service to link the Kafka ACL to + maxLength: 63 + type: string + topic: + description: Topic name pattern for the ACL entry + type: string + username: + description: Username pattern for the ACL entry + type: string + required: + - authSecretRef + - permission + - project + - serviceName + - topic + - username + type: object + status: + description: KafkaACLStatus defines the observed state of KafkaACL + properties: + conditions: + description: Conditions represent the latest available observations + of an KafkaACL state + items: + description: "Condition contains details for one aspect of the current + state of this API Resource. --- This struct is intended for direct + use as an array at the field path .status.conditions. For example, + type FooStatus struct{ // Represents the observations of a + foo's current state. // Known .status.conditions.type are: + \"Available\", \"Progressing\", and \"Degraded\" // +patchMergeKey=type + \ // +patchStrategy=merge // +listType=map // +listMapKey=type + \ Conditions []metav1.Condition `json:\"conditions,omitempty\" + patchStrategy:\"merge\" patchMergeKey:\"type\" protobuf:\"bytes,1,rep,name=conditions\"` + \n // other fields }" + properties: + lastTransitionTime: + description: lastTransitionTime is the last time the condition + transitioned from one status to another. This should be when + the underlying condition changed. If that is not known, then + using the time when the API field changed is acceptable. + format: date-time + type: string + message: + description: message is a human readable message indicating + details about the transition. This may be an empty string. + maxLength: 32768 + type: string + observedGeneration: + description: observedGeneration represents the .metadata.generation + that the condition was set based upon. For instance, if .metadata.generation + is currently 12, but the .status.conditions[x].observedGeneration + is 9, the condition is out of date with respect to the current + state of the instance. + format: int64 + minimum: 0 + type: integer + reason: + description: reason contains a programmatic identifier indicating + the reason for the condition's last transition. Producers + of specific condition types may define expected values and + meanings for this field, and whether the values are considered + a guaranteed API. The value should be a CamelCase string. + This field may not be empty. + maxLength: 1024 + minLength: 1 + pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$ + type: string + status: + description: status of the condition, one of True, False, Unknown. + enum: + - "True" + - "False" + - Unknown + type: string + type: + description: type of condition in CamelCase or in foo.example.com/CamelCase. + --- Many .condition.type values are consistent across resources + like Available, but because arbitrary conditions can be useful + (see .node.status.conditions), the ability to deconflict is + important. The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt) + maxLength: 316 + pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$ + type: string + required: + - lastTransitionTime + - message + - reason + - status + - type + type: object + type: array + id: + description: Kafka ACL ID + type: string + required: + - conditions + - id + type: object + type: object + served: true + storage: true + subresources: + status: {} +status: + acceptedNames: + kind: "" + plural: "" + conditions: [] + storedVersions: [] diff --git a/operators/aiven-operator/0.1.1/manifests/aiven.io_kafkaconnectors.yaml b/operators/aiven-operator/0.1.1/manifests/aiven.io_kafkaconnectors.yaml new file mode 100644 index 00000000000..ce3d8067090 --- /dev/null +++ b/operators/aiven-operator/0.1.1/manifests/aiven.io_kafkaconnectors.yaml @@ -0,0 +1,233 @@ +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.4.1 + creationTimestamp: null + name: kafkaconnectors.aiven.io +spec: + group: aiven.io + names: + kind: KafkaConnector + listKind: KafkaConnectorList + plural: kafkaconnectors + singular: kafkaconnector + scope: Namespaced + versions: + - additionalPrinterColumns: + - jsonPath: .spec.serviceName + name: Service Name + type: string + - jsonPath: .spec.project + name: Project + type: string + - jsonPath: .spec.connectorClass + name: Connector Class + type: string + - jsonPath: .status.state + name: State + type: string + - jsonPath: .status.tasksStatus.total + name: Tasks Total + type: integer + - jsonPath: .status.tasksStatus.running + name: Tasks Running + type: integer + name: v1alpha1 + schema: + openAPIV3Schema: + description: KafkaConnector is the Schema for the kafkaconnectors 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: KafkaConnectorSpec defines the desired state of KafkaConnector + properties: + authSecretRef: + description: Authentication reference to Aiven token in a secret + properties: + key: + minLength: 1 + type: string + name: + minLength: 1 + type: string + required: + - key + - name + type: object + connectorClass: + description: The Java class of the connector. + maxLength: 1024 + type: string + project: + description: Target project. + format: ^[a-zA-Z0-9_-]*$ + maxLength: 63 + type: string + serviceName: + description: Service name. + maxLength: 63 + type: string + userConfig: + additionalProperties: + type: string + description: The connector specific configuration To build config + values from secret the template function `{{ fromSecret "name" "key" + }}` is provided when interpreting the keys + type: object + required: + - authSecretRef + - connectorClass + - project + - serviceName + - userConfig + type: object + status: + description: KafkaConnectorStatus defines the observed state of KafkaConnector + properties: + conditions: + description: Conditions represent the latest available observations + of an kafka connector state + items: + description: "Condition contains details for one aspect of the current + state of this API Resource. --- This struct is intended for direct + use as an array at the field path .status.conditions. For example, + type FooStatus struct{ // Represents the observations of a + foo's current state. // Known .status.conditions.type are: + \"Available\", \"Progressing\", and \"Degraded\" // +patchMergeKey=type + \ // +patchStrategy=merge // +listType=map // +listMapKey=type + \ Conditions []metav1.Condition `json:\"conditions,omitempty\" + patchStrategy:\"merge\" patchMergeKey:\"type\" protobuf:\"bytes,1,rep,name=conditions\"` + \n // other fields }" + properties: + lastTransitionTime: + description: lastTransitionTime is the last time the condition + transitioned from one status to another. This should be when + the underlying condition changed. If that is not known, then + using the time when the API field changed is acceptable. + format: date-time + type: string + message: + description: message is a human readable message indicating + details about the transition. This may be an empty string. + maxLength: 32768 + type: string + observedGeneration: + description: observedGeneration represents the .metadata.generation + that the condition was set based upon. For instance, if .metadata.generation + is currently 12, but the .status.conditions[x].observedGeneration + is 9, the condition is out of date with respect to the current + state of the instance. + format: int64 + minimum: 0 + type: integer + reason: + description: reason contains a programmatic identifier indicating + the reason for the condition's last transition. Producers + of specific condition types may define expected values and + meanings for this field, and whether the values are considered + a guaranteed API. The value should be a CamelCase string. + This field may not be empty. + maxLength: 1024 + minLength: 1 + pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$ + type: string + status: + description: status of the condition, one of True, False, Unknown. + enum: + - "True" + - "False" + - Unknown + type: string + type: + description: type of condition in CamelCase or in foo.example.com/CamelCase. + --- Many .condition.type values are consistent across resources + like Available, but because arbitrary conditions can be useful + (see .node.status.conditions), the ability to deconflict is + important. The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt) + maxLength: 316 + pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$ + type: string + required: + - lastTransitionTime + - message + - reason + - status + - type + type: object + type: array + pluginStatus: + description: PluginStatus contains metadata about the configured connector + plugin + properties: + author: + type: string + class: + type: string + docUrl: + type: string + title: + type: string + type: + type: string + version: + type: string + required: + - author + - class + - docUrl + - title + - type + - version + type: object + state: + description: Connector state + type: string + tasksStatus: + description: TasksStatus contains metadata about the running tasks + properties: + failed: + type: integer + paused: + type: integer + running: + type: integer + stackTrace: + type: string + total: + type: integer + unassigned: + type: integer + unknown: + type: integer + required: + - total + type: object + required: + - conditions + - pluginStatus + - state + - tasksStatus + type: object + type: object + served: true + storage: true + subresources: + status: {} +status: + acceptedNames: + kind: "" + plural: "" + conditions: [] + storedVersions: [] diff --git a/operators/aiven-operator/0.1.1/manifests/aiven.io_kafkaconnects.yaml b/operators/aiven-operator/0.1.1/manifests/aiven.io_kafkaconnects.yaml new file mode 100644 index 00000000000..93df6f44196 --- /dev/null +++ b/operators/aiven-operator/0.1.1/manifests/aiven.io_kafkaconnects.yaml @@ -0,0 +1,293 @@ +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + cert-manager.io/inject-ca-from: aiven-operator-system/aiven-operator-serving-cert + controller-gen.kubebuilder.io/version: v0.4.1 + creationTimestamp: null + name: kafkaconnects.aiven.io +spec: + conversion: + strategy: Webhook + webhook: + clientConfig: + caBundle: Cg== + service: + name: webhook-service + namespace: system + path: /convert + port: 443 + conversionReviewVersions: + - v1 + - v1beta1 + group: aiven.io + names: + kind: KafkaConnect + listKind: KafkaConnectList + plural: kafkaconnects + singular: kafkaconnect + scope: Namespaced + versions: + - additionalPrinterColumns: + - jsonPath: .status.state + name: State + type: string + name: v1alpha1 + schema: + openAPIV3Schema: + description: KafkaConnect is the Schema for the kafkaconnects 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: KafkaConnectSpec defines the desired state of KafkaConnect + properties: + authSecretRef: + description: Authentication reference to Aiven token in a secret + properties: + key: + minLength: 1 + type: string + name: + minLength: 1 + type: string + required: + - key + - name + type: object + cloudName: + description: Cloud the service runs in. + maxLength: 256 + type: string + maintenanceWindowDow: + description: Day of week when maintenance operations should be performed. + One monday, tuesday, wednesday, etc. + enum: + - monday + - tuesday + - wednesday + - thursday + - friday + - saturday + - sunday + - never + type: string + maintenanceWindowTime: + description: Time of day when maintenance operations should be performed. + UTC time in HH:mm:ss format. + maxLength: 8 + type: string + plan: + description: Subscription plan. + maxLength: 128 + type: string + project: + description: Target project. + format: ^[a-zA-Z0-9_-]*$ + maxLength: 63 + type: string + projectVpcId: + description: Identifier of the VPC the service should be in, if any. + maxLength: 36 + type: string + terminationProtection: + description: Prevent service from being deleted. It is recommended + to have this enabled for all services. + type: boolean + userConfig: + description: PostgreSQL specific user configuration options + properties: + connector_client_config_override_policy: + description: Defines what client configurations can be overridden + by the connector. Default is None + type: string + consumer_auto_offset_reset: + description: What to do when there is no initial offset in Kafka + or if the current offset does not exist any more on the server. + Default is earliest + type: string + consumer_fetch_max_bytes: + description: Records are fetched in batches by the consumer, and + if the first record batch in the first non-empty partition of + the fetch is larger than this value, the record batch will still + be returned to ensure that the consumer can make progress. As + such, this is not a absolute maximum. + format: int64 + type: integer + consumer_isolation_level: + description: Transaction read isolation level. read_uncommitted + is the default, but read_committed can be used if consume-exactly-once + behavior is desired. + type: string + consumer_max_partition_fetch_bytes: + description: Records are fetched in batches by the consumer.If + the first record batch in the first non-empty partition of the + fetch is larger than this limit, the batch will still be returned + to ensure that the consumer can make progress. + format: int64 + type: integer + consumer_max_poll_interval_ms: + description: The maximum delay in milliseconds between invocations + of poll() when using consumer group management (defaults to + 300000). + format: int64 + type: integer + consumer_max_poll_records: + description: The maximum number of records returned in a single + call to poll() (defaults to 500). + format: int64 + type: integer + offset_flush_interval_ms: + description: The interval at which to try committing offsets for + tasks (defaults to 60000). + format: int64 + type: integer + private_access: + description: Allow access to selected service ports from private + networks + properties: + kafka_connect: + description: Allow clients to connect to kafka_connect with + a DNS name that always resolves to the service's private + IP addresses. Only available in certain network locations + type: boolean + prometheus: + description: Allow clients to connect to prometheus with a + DNS name that always resolves to the service's private IP + addresses. Only available in certain network locations + type: boolean + type: object + producer_max_request_size: + description: This setting will limit the number of record batches + the producer will send in a single request to avoid sending + huge requests. + format: int64 + type: integer + public_access: + description: Allow access to selected service ports from the public + Internet + properties: + kafka_connect: + description: Allow clients to connect to kafka_connect from + the public internet for service nodes that are in a project + VPC or another type of private network + type: boolean + prometheus: + description: Allow clients to connect to prometheus from the + public internet for service nodes that are in a project + VPC or another type of private network + type: boolean + type: object + session_timeout_ms: + description: The timeout in milliseconds used to detect failures + when using Kafka’s group management facilities (defaults to + 10000). + format: int64 + type: integer + type: object + required: + - authSecretRef + - project + type: object + status: + description: ServiceStatus defines the observed state of service + properties: + conditions: + description: Conditions represent the latest available observations + of a service state + items: + description: "Condition contains details for one aspect of the current + state of this API Resource. --- This struct is intended for direct + use as an array at the field path .status.conditions. For example, + type FooStatus struct{ // Represents the observations of a + foo's current state. // Known .status.conditions.type are: + \"Available\", \"Progressing\", and \"Degraded\" // +patchMergeKey=type + \ // +patchStrategy=merge // +listType=map // +listMapKey=type + \ Conditions []metav1.Condition `json:\"conditions,omitempty\" + patchStrategy:\"merge\" patchMergeKey:\"type\" protobuf:\"bytes,1,rep,name=conditions\"` + \n // other fields }" + properties: + lastTransitionTime: + description: lastTransitionTime is the last time the condition + transitioned from one status to another. This should be when + the underlying condition changed. If that is not known, then + using the time when the API field changed is acceptable. + format: date-time + type: string + message: + description: message is a human readable message indicating + details about the transition. This may be an empty string. + maxLength: 32768 + type: string + observedGeneration: + description: observedGeneration represents the .metadata.generation + that the condition was set based upon. For instance, if .metadata.generation + is currently 12, but the .status.conditions[x].observedGeneration + is 9, the condition is out of date with respect to the current + state of the instance. + format: int64 + minimum: 0 + type: integer + reason: + description: reason contains a programmatic identifier indicating + the reason for the condition's last transition. Producers + of specific condition types may define expected values and + meanings for this field, and whether the values are considered + a guaranteed API. The value should be a CamelCase string. + This field may not be empty. + maxLength: 1024 + minLength: 1 + pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$ + type: string + status: + description: status of the condition, one of True, False, Unknown. + enum: + - "True" + - "False" + - Unknown + type: string + type: + description: type of condition in CamelCase or in foo.example.com/CamelCase. + --- Many .condition.type values are consistent across resources + like Available, but because arbitrary conditions can be useful + (see .node.status.conditions), the ability to deconflict is + important. The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt) + maxLength: 316 + pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$ + type: string + required: + - lastTransitionTime + - message + - reason + - status + - type + type: object + type: array + state: + description: Service state + type: string + required: + - conditions + - state + type: object + type: object + served: true + storage: true + subresources: + status: {} +status: + acceptedNames: + kind: "" + plural: "" + conditions: [] + storedVersions: [] diff --git a/operators/aiven-operator/0.1.1/manifests/aiven.io_kafkas.yaml b/operators/aiven-operator/0.1.1/manifests/aiven.io_kafkas.yaml new file mode 100644 index 00000000000..8f4aa12ae79 --- /dev/null +++ b/operators/aiven-operator/0.1.1/manifests/aiven.io_kafkas.yaml @@ -0,0 +1,764 @@ +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + cert-manager.io/inject-ca-from: aiven-operator-system/aiven-operator-serving-cert + controller-gen.kubebuilder.io/version: v0.4.1 + creationTimestamp: null + name: kafkas.aiven.io +spec: + conversion: + strategy: Webhook + webhook: + clientConfig: + caBundle: Cg== + service: + name: webhook-service + namespace: system + path: /convert + port: 443 + conversionReviewVersions: + - v1 + - v1beta1 + group: aiven.io + names: + kind: Kafka + listKind: KafkaList + plural: kafkas + singular: kafka + scope: Namespaced + versions: + - additionalPrinterColumns: + - jsonPath: .spec.project + name: Project + type: string + - jsonPath: .spec.cloudName + name: Region + type: string + - jsonPath: .spec.plan + name: Plan + type: string + - jsonPath: .status.state + name: State + type: string + name: v1alpha1 + schema: + openAPIV3Schema: + description: Kafka is the Schema for the kafkas 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: KafkaSpec defines the desired state of Kafka + properties: + authSecretRef: + description: Authentication reference to Aiven token in a secret + properties: + key: + minLength: 1 + type: string + name: + minLength: 1 + type: string + required: + - key + - name + type: object + cloudName: + description: Cloud the service runs in. + maxLength: 256 + type: string + connInfoSecretTarget: + description: Information regarding secret creation + properties: + name: + description: Name of the Secret resource to be created + type: string + required: + - name + type: object + maintenanceWindowDow: + description: Day of week when maintenance operations should be performed. + One monday, tuesday, wednesday, etc. + enum: + - monday + - tuesday + - wednesday + - thursday + - friday + - saturday + - sunday + - never + type: string + maintenanceWindowTime: + description: Time of day when maintenance operations should be performed. + UTC time in HH:mm:ss format. + maxLength: 8 + type: string + plan: + description: Subscription plan. + maxLength: 128 + type: string + project: + description: Target project. + format: ^[a-zA-Z0-9_-]*$ + maxLength: 63 + type: string + projectVpcId: + description: Identifier of the VPC the service should be in, if any. + maxLength: 36 + type: string + terminationProtection: + description: Prevent service from being deleted. It is recommended + to have this enabled for all services. + type: boolean + userConfig: + description: Kafka specific user configuration options + properties: + ip_filter: + description: IP filter Allow incoming connections from CIDR address + block, e.g. '10.20.0.0/16' + items: + type: string + type: array + kafka: + description: Kafka broker configuration values + properties: + auto_create_topics_enable: + description: auto.create.topics.enable Enable auto creation + of topics + type: boolean + compression_type: + description: compression.type Specify the final compression + type for a given topic. This configuration accepts the standard + compression codecs ('gzip', 'snappy', 'lz4', 'zstd'). It + additionally accepts 'uncompressed' which is equivalent + to no compression; and 'producer' which means retain the + original compression codec set by the producer. + enum: + - gzip + - snappy + - lz4 + - zstd + - uncompressed + - producer + type: string + connections_max_idle_ms: + description: 'connections.max.idle.ms Idle connections timeout: + the server socket processor threads close the connections + that idle for longer than this.' + format: int64 + maximum: 3600000 + minimum: 1000 + type: integer + default_replication_factor: + description: default.replication.factor Replication factor + for autocreated topics + format: int64 + maximum: 10 + minimum: 1 + type: integer + group_max_session_timeout_ms: + description: group.max.session.timeout.ms The maximum allowed + session timeout for registered consumers. Longer timeouts + give consumers more time to process messages in between + heartbeats at the cost of a longer time to detect failures. + format: int64 + maximum: 1800000 + minimum: 0 + type: integer + group_min_session_timeout_ms: + description: group.min.session.timeout.ms The minimum allowed + session timeout for registered consumers. Longer timeouts + give consumers more time to process messages in between + heartbeats at the cost of a longer time to detect failures. + format: int64 + maximum: 60000 + minimum: 0 + type: integer + log_cleaner_delete_retention_ms: + description: log.cleaner.delete.retention.ms How long are + delete records retained? + format: int64 + maximum: 315569260000 + minimum: 0 + type: integer + log_cleaner_max_compaction_lag_ms: + description: log.cleaner.max.compaction.lag.ms The maximum + amount of time message will remain uncompacted. Only applicable + for logs that are being compacted + format: int64 + minimum: 30000 + type: integer + log_cleaner_min_cleanable_ratio: + description: log.cleaner.min.cleanable.ratio Controls log + compactor frequency. Larger value means more frequent compactions + but also more space wasted for logs. Consider setting log.cleaner.max.compaction.lag.ms + to enforce compactions sooner, instead of setting a very + high value for this option. + format: int64 + maximum: 1 + minimum: 0 + type: integer + log_cleaner_min_compaction_lag_ms: + description: log.cleaner.min.compaction.lag.ms The minimum + time a message will remain uncompacted in the log. Only + applicable for logs that are being compacted. + format: int64 + minimum: 0 + type: integer + log_cleanup_policy: + description: log.cleanup.policy The default cleanup policy + for segments beyond the retention window + enum: + - compact + - delete + type: string + log_flush_interval_messages: + description: log.flush.interval.messages The number of messages + accumulated on a log partition before messages are flushed + to disk + format: int64 + minimum: 1 + type: integer + log_flush_interval_ms: + description: log.flush.interval.ms The maximum time in ms + that a message in any topic is kept in memory before flushed + to disk. If not set, the value in log.flush.scheduler.interval.ms + is used + format: int64 + minimum: 0 + type: integer + log_index_interval_bytes: + description: log.index.interval.bytes The interval with which + Kafka adds an entry to the offset index + format: int64 + maximum: 104857600 + minimum: 0 + type: integer + log_index_size_max_bytes: + description: log.index.size.max.bytes The maximum size in + bytes of the offset index + format: int64 + maximum: 104857600 + minimum: 1048576 + type: integer + log_message_downconversion_enable: + description: log.message.downconversion.enable This configuration + controls whether down-conversion of message formats is enabled + to satisfy consume requests. + type: boolean + log_message_timestamp_difference_max_ms: + description: log.message.timestamp.difference.max.ms The maximum + difference allowed between the timestamp when a broker receives + a message and the timestamp specified in the message + format: int64 + minimum: 0 + type: integer + log_message_timestamp_type: + description: log.message.timestamp.type Define whether the + timestamp in the message is message create time or log append + time. + enum: + - CreateTime + - LogAppendTime + type: string + log_preallocate: + description: log.preallocate Should pre allocate file when + create new segment? + type: boolean + log_retention_bytes: + description: log.retention.bytes The maximum size of the log + before deleting messages + format: int64 + type: integer + log_retention_hours: + description: log.retention.hours The number of hours to keep + a log file before deleting it + format: int64 + maximum: 2147483647 + type: integer + log_retention_ms: + description: log.retention.ms The number of milliseconds to + keep a log file before deleting it (in milliseconds), If + not set, the value in log.retention.minutes is used. If + set to -1, no time limit is applied. + format: int64 + type: integer + log_roll_jitter_ms: + description: log.roll.jitter.ms The maximum jitter to subtract + from logRollTimeMillis (in milliseconds). If not set, the + value in log.roll.jitter.hours is used + format: int64 + minimum: 0 + type: integer + log_roll_ms: + description: log.roll.ms The maximum time before a new log + segment is rolled out (in milliseconds). + format: int64 + minimum: 1 + type: integer + log_segment_bytes: + description: log.segment.bytes The maximum size of a single + log file + format: int64 + maximum: 1073741824 + minimum: 10485760 + type: integer + log_segment_delete_delay_ms: + description: log.segment.delete.delay.ms The amount of time + to wait before deleting a file from the filesystem + format: int64 + maximum: 3600000 + minimum: 0 + type: integer + max_connections_per_ip: + description: max.connections.per.ip The maximum number of + connections allowed from each ip address (defaults to 2147483647). + format: int64 + maximum: 2147483647 + minimum: 256 + type: integer + max_incremental_fetch_session_cache_slots: + description: max.incremental.fetch.session.cache.slots The + maximum number of incremental fetch sessions that the broker + will maintain. + format: int64 + maximum: 10000 + minimum: 1000 + type: integer + message_max_bytes: + description: message.max.bytes The maximum size of message + that the server can receive. + format: int64 + maximum: 100001200 + minimum: 0 + type: integer + min_insync_replicas: + description: min.insync.replicas When a producer sets acks + to 'all' (or '-1'), min.insync.replicas specifies the minimum + number of replicas that must acknowledge a write for the + write to be considered successful. + format: int64 + maximum: 7 + minimum: 1 + type: integer + num_partitions: + description: num.partitions Number of partitions for autocreated + topics + format: int64 + maximum: 1000 + minimum: 1 + type: integer + offsets_retention_minutes: + description: offsets.retention.minutes Log retention window + in minutes for offsets topic + format: int64 + maximum: 2147483647 + minimum: 1 + type: integer + producer_purgatory_purge_interval_requests: + description: producer.purgatory.purge.interval.requests The + purge interval (in number of requests) of the producer request + purgatory(defaults to 1000). + format: int64 + maximum: 10000 + minimum: 10 + type: integer + replica_fetch_max_bytes: + description: replica.fetch.max.bytes The number of bytes of + messages to attempt to fetch for each partition (defaults + to 1048576). This is not an absolute maximum, if the first + record batch in the first non-empty partition of the fetch + is larger than this value, the record batch will still be + returned to ensure that progress can be made. + format: int64 + maximum: 104857600 + minimum: 1048576 + type: integer + replica_fetch_response_max_bytes: + description: replica.fetch.response.max.bytes Maximum bytes + expected for the entire fetch response (defaults to 10485760). + Records are fetched in batches, and if the first record + batch in the first non-empty partition of the fetch is larger + than this value, the record batch will still be returned + to ensure that progress can be made. As such, this is not + an absolute maximum. + format: int64 + maximum: 1048576000 + minimum: 10485760 + type: integer + socket_request_max_bytes: + description: socket.request.max.bytes The maximum number of + bytes in a socket request (defaults to 104857600). + format: int64 + maximum: 209715200 + minimum: 10485760 + type: integer + type: object + kafka_authentication_methods: + description: Kafka authentication methods + properties: + certificate: + description: Enable certificate/SSL authentication + type: boolean + sasl: + description: Enable SASL authentication + type: boolean + type: object + kafka_connect: + description: Enable Kafka Connect service + type: boolean + kafka_connect_user_config: + description: Kafka Connect configuration values + properties: + connector_client_config_override_policy: + description: Client config override policy Defines what client + configurations can be overridden by the connector. Default + is None + enum: + - None + - All + type: string + consumer_auto_offset_reset: + description: Consumer auto offset reset What to do when there + is no initial offset in Kafka or if the current offset does + not exist any more on the server. Default is earliest + enum: + - earliest + - latest + type: string + consumer_fetch_max_bytes: + description: The maximum amount of data the server should + return for a fetch request Records are fetched in batches + by the consumer, and if the first record batch in the first + non-empty partition of the fetch is larger than this value, + the record batch will still be returned to ensure that the + consumer can make progress. As such, this is not a absolute + maximum. + format: int64 + maximum: 104857600 + minimum: 1048576 + type: integer + consumer_isolation_level: + description: Consumer isolation level Transaction read isolation + level. read_uncommitted is the default, but read_committed + can be used if consume-exactly-once behavior is desired. + enum: + - read_uncommitted + - read_committed + type: string + consumer_max_partition_fetch_bytes: + description: The maximum amount of data per-partition the + server will return. Records are fetched in batches by the + consumer.If the first record batch in the first non-empty + partition of the fetch is larger than this limit, the batch + will still be returned to ensure that the consumer can make + progress. + format: int64 + maximum: 104857600 + minimum: 1048576 + type: integer + consumer_max_poll_interval_ms: + description: The maximum delay between polls when using consumer + group management The maximum delay in milliseconds between + invocations of poll() when using consumer group management + (defaults to 300000). + format: int64 + maximum: 2147483647 + minimum: 1 + type: integer + consumer_max_poll_records: + description: The maximum number of records returned by a single + poll The maximum number of records returned in a single + call to poll() (defaults to 500). + format: int64 + maximum: 10000 + minimum: 1 + type: integer + offset_flush_interval_ms: + description: The interval at which to try committing offsets + for tasks The interval at which to try committing offsets + for tasks (defaults to 60000). + format: int64 + maximum: 100000000 + minimum: 1 + type: integer + offset_flush_timeout_ms: + description: Offset flush timeout Maximum number of milliseconds + to wait for records to flush and partition offset data to + be committed to offset storage before cancelling the process + and restoring the offset data to be committed in a future + attempt (defaults to 5000). + format: int64 + maximum: 2147483647 + minimum: 1 + type: integer + producer_max_request_size: + description: The maximum size of a request in bytes This setting + will limit the number of record batches the producer will + send in a single request to avoid sending huge requests. + format: int64 + maximum: 10485760 + minimum: 131072 + type: integer + session_timeout_ms: + description: The timeout used to detect failures when using + Kafka’s group management facilities The timeout in milliseconds + used to detect failures when using Kafka’s group management + facilities (defaults to 10000). + format: int64 + maximum: 2147483647 + minimum: 1 + type: integer + type: object + kafka_rest: + description: Enable Kafka-REST service + type: boolean + kafka_rest_config: + description: Kafka REST configuration + properties: + consumer_enable_auto_commit: + description: consumer.enable.auto.commit If true the consumer's + offset will be periodically committed to Kafka in the background + type: boolean + consumer_request_max_bytes: + description: consumer.request.max.bytes Maximum number of + bytes in unencoded message keys and values by a single request + format: int64 + maximum: 671088640 + minimum: 0 + type: integer + consumer_request_timeout_ms: + description: consumer.request.timeout.ms The maximum total + time to wait for messages for a request if the maximum number + of messages has not yet been reached + enum: + - 1000 + - 15000 + - 30000 + format: int64 + maximum: 30000 + minimum: 1000 + type: integer + custom_domain: + description: Custom domain Serve the web frontend using a + custom CNAME pointing to the Aiven DNS name + maxLength: 255 + type: string + producer_acks: + description: producer.acks The number of acknowledgments the + producer requires the leader to have received before considering + a request complete. If set to 'all' or '-1', the leader + will wait for the full set of in-sync replicas to acknowledge + the record. + enum: + - all + - -1 + - 0 + - 1 + type: string + producer_linger_ms: + description: producer.linger.ms Wait for up to the given delay + to allow batching records together + format: int64 + maximum: 5000 + minimum: 0 + type: integer + public_access: + description: Allow access to selected service ports from the + public Internet + properties: + kafka: + description: Allow clients to connect to kafka from the + public internet for service nodes that are in a project + VPC or another type of private network + type: boolean + kafka_connect: + description: Allow clients to connect to kafka_connect + from the public internet for service nodes that are + in a project VPC or another type of private network + type: boolean + kafka_rest: + description: Allow clients to connect to kafka_rest from + the public internet for service nodes that are in a + project VPC or another type of private network + type: boolean + prometheus: + description: Allow clients to connect to prometheus from + the public internet for service nodes that are in a + project VPC or another type of private network + type: boolean + schema_registry: + description: Allow clients to connect to schema_registry + from the public internet for service nodes that are + in a project VPC or another type of private network + type: boolean + type: object + simpleconsumer_pool_size_max: + description: simpleconsumer.pool.size.max Maximum number of + SimpleConsumers that can be instantiated per broker + format: int64 + maximum: 250 + minimum: 10 + type: integer + type: object + kafka_version: + description: Kafka major version + enum: + - "1.0" + - "1.1" + - "2.0" + - "2.1" + - "2.2" + - "2.3" + - "2.4" + - "2.5" + - "2.6" + - "2.7" + - "2.8" + type: string + private_access: + description: Allow access to selected service ports from private + networks + properties: + prometheus: + description: Allow clients to connect to prometheus with a + DNS name that always resolves to the service's private IP + addresses. Only available in certain network locations + type: boolean + type: object + schema_registry: + description: Enable Schema-Registry service + type: boolean + schema_registry_config: + description: Schema Registry configuration + properties: + leader_eligibility: + description: leader_eligibility If true, Karapace / Schema + Registry on the service nodes can participate in leader + election. It might be needed to disable this when the schemas + topic is replicated to a secondary cluster and Karapace + / Schema Registry there must not participate in leader election. + Defaults to 'true'. + type: boolean + topic_name: + description: topic_name The durable single partition topic + that acts as the durable log for the data. This topic must + be compacted to avoid losing data due to retention policy. + Please note that changing this configuration in an existing + Schema Registry / Karapace setup leads to previous schemas + being inaccessible, data encoded with them potentially unreadable + and schema ID sequence put out of order. It's only possible + to do the switch while Schema Registry / Karapace is disabled. + Defaults to '_schemas'. + maxLength: 249 + type: string + type: object + type: object + required: + - authSecretRef + - project + type: object + status: + description: ServiceStatus defines the observed state of service + properties: + conditions: + description: Conditions represent the latest available observations + of a service state + items: + description: "Condition contains details for one aspect of the current + state of this API Resource. --- This struct is intended for direct + use as an array at the field path .status.conditions. For example, + type FooStatus struct{ // Represents the observations of a + foo's current state. // Known .status.conditions.type are: + \"Available\", \"Progressing\", and \"Degraded\" // +patchMergeKey=type + \ // +patchStrategy=merge // +listType=map // +listMapKey=type + \ Conditions []metav1.Condition `json:\"conditions,omitempty\" + patchStrategy:\"merge\" patchMergeKey:\"type\" protobuf:\"bytes,1,rep,name=conditions\"` + \n // other fields }" + properties: + lastTransitionTime: + description: lastTransitionTime is the last time the condition + transitioned from one status to another. This should be when + the underlying condition changed. If that is not known, then + using the time when the API field changed is acceptable. + format: date-time + type: string + message: + description: message is a human readable message indicating + details about the transition. This may be an empty string. + maxLength: 32768 + type: string + observedGeneration: + description: observedGeneration represents the .metadata.generation + that the condition was set based upon. For instance, if .metadata.generation + is currently 12, but the .status.conditions[x].observedGeneration + is 9, the condition is out of date with respect to the current + state of the instance. + format: int64 + minimum: 0 + type: integer + reason: + description: reason contains a programmatic identifier indicating + the reason for the condition's last transition. Producers + of specific condition types may define expected values and + meanings for this field, and whether the values are considered + a guaranteed API. The value should be a CamelCase string. + This field may not be empty. + maxLength: 1024 + minLength: 1 + pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$ + type: string + status: + description: status of the condition, one of True, False, Unknown. + enum: + - "True" + - "False" + - Unknown + type: string + type: + description: type of condition in CamelCase or in foo.example.com/CamelCase. + --- Many .condition.type values are consistent across resources + like Available, but because arbitrary conditions can be useful + (see .node.status.conditions), the ability to deconflict is + important. The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt) + maxLength: 316 + pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$ + type: string + required: + - lastTransitionTime + - message + - reason + - status + - type + type: object + type: array + state: + description: Service state + type: string + required: + - conditions + - state + type: object + type: object + served: true + storage: true + subresources: + status: {} +status: + acceptedNames: + kind: "" + plural: "" + conditions: [] + storedVersions: [] diff --git a/operators/aiven-operator/0.1.1/manifests/aiven.io_kafkaschemas.yaml b/operators/aiven-operator/0.1.1/manifests/aiven.io_kafkaschemas.yaml new file mode 100644 index 00000000000..a13e167ad4f --- /dev/null +++ b/operators/aiven-operator/0.1.1/manifests/aiven.io_kafkaschemas.yaml @@ -0,0 +1,206 @@ +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + cert-manager.io/inject-ca-from: aiven-operator-system/aiven-operator-serving-cert + controller-gen.kubebuilder.io/version: v0.4.1 + creationTimestamp: null + name: kafkaschemas.aiven.io +spec: + conversion: + strategy: Webhook + webhook: + clientConfig: + caBundle: Cg== + service: + name: webhook-service + namespace: system + path: /convert + port: 443 + conversionReviewVersions: + - v1 + - v1beta1 + group: aiven.io + names: + kind: KafkaSchema + listKind: KafkaSchemaList + plural: kafkaschemas + singular: kafkaschema + scope: Namespaced + versions: + - additionalPrinterColumns: + - jsonPath: .spec.serviceName + name: Service Name + type: string + - jsonPath: .spec.project + name: Project + type: string + - jsonPath: .spec.subjectName + name: Subject + type: string + - jsonPath: .spec.compatibilityLevel + name: Compatibility Level + type: string + - jsonPath: .status.version + name: Version + type: number + name: v1alpha1 + schema: + openAPIV3Schema: + description: KafkaSchema is the Schema for the kafkaschemas 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: KafkaSchemaSpec defines the desired state of KafkaSchema + properties: + authSecretRef: + description: Authentication reference to Aiven token in a secret + properties: + key: + minLength: 1 + type: string + name: + minLength: 1 + type: string + required: + - key + - name + type: object + compatibilityLevel: + description: Kafka Schemas compatibility level + enum: + - BACKWARD + - BACKWARD_TRANSITIVE + - FORWARD + - FORWARD_TRANSITIVE + - FULL + - FULL_TRANSITIVE + - NONE + type: string + project: + description: Project to link the Kafka Schema to + format: ^[a-zA-Z0-9_-]*$ + maxLength: 63 + type: string + schema: + description: Kafka Schema configuration should be a valid Avro Schema + JSON format + type: string + serviceName: + description: Service to link the Kafka Schema to + maxLength: 63 + type: string + subjectName: + description: Kafka Schema Subject name + maxLength: 63 + type: string + required: + - authSecretRef + - project + - schema + - serviceName + - subjectName + type: object + status: + description: KafkaSchemaStatus defines the observed state of KafkaSchema + properties: + conditions: + description: Conditions represent the latest available observations + of an KafkaSchema state + items: + description: "Condition contains details for one aspect of the current + state of this API Resource. --- This struct is intended for direct + use as an array at the field path .status.conditions. For example, + type FooStatus struct{ // Represents the observations of a + foo's current state. // Known .status.conditions.type are: + \"Available\", \"Progressing\", and \"Degraded\" // +patchMergeKey=type + \ // +patchStrategy=merge // +listType=map // +listMapKey=type + \ Conditions []metav1.Condition `json:\"conditions,omitempty\" + patchStrategy:\"merge\" patchMergeKey:\"type\" protobuf:\"bytes,1,rep,name=conditions\"` + \n // other fields }" + properties: + lastTransitionTime: + description: lastTransitionTime is the last time the condition + transitioned from one status to another. This should be when + the underlying condition changed. If that is not known, then + using the time when the API field changed is acceptable. + format: date-time + type: string + message: + description: message is a human readable message indicating + details about the transition. This may be an empty string. + maxLength: 32768 + type: string + observedGeneration: + description: observedGeneration represents the .metadata.generation + that the condition was set based upon. For instance, if .metadata.generation + is currently 12, but the .status.conditions[x].observedGeneration + is 9, the condition is out of date with respect to the current + state of the instance. + format: int64 + minimum: 0 + type: integer + reason: + description: reason contains a programmatic identifier indicating + the reason for the condition's last transition. Producers + of specific condition types may define expected values and + meanings for this field, and whether the values are considered + a guaranteed API. The value should be a CamelCase string. + This field may not be empty. + maxLength: 1024 + minLength: 1 + pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$ + type: string + status: + description: status of the condition, one of True, False, Unknown. + enum: + - "True" + - "False" + - Unknown + type: string + type: + description: type of condition in CamelCase or in foo.example.com/CamelCase. + --- Many .condition.type values are consistent across resources + like Available, but because arbitrary conditions can be useful + (see .node.status.conditions), the ability to deconflict is + important. The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt) + maxLength: 316 + pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$ + type: string + required: + - lastTransitionTime + - message + - reason + - status + - type + type: object + type: array + version: + description: Kafka Schema configuration version + type: integer + required: + - conditions + - version + type: object + type: object + served: true + storage: true + subresources: + status: {} +status: + acceptedNames: + kind: "" + plural: "" + conditions: [] + storedVersions: [] diff --git a/operators/aiven-operator/0.1.1/manifests/aiven.io_kafkatopics.yaml b/operators/aiven-operator/0.1.1/manifests/aiven.io_kafkatopics.yaml new file mode 100644 index 00000000000..56e3cc03cad --- /dev/null +++ b/operators/aiven-operator/0.1.1/manifests/aiven.io_kafkatopics.yaml @@ -0,0 +1,305 @@ +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + cert-manager.io/inject-ca-from: aiven-operator-system/aiven-operator-serving-cert + controller-gen.kubebuilder.io/version: v0.4.1 + creationTimestamp: null + name: kafkatopics.aiven.io +spec: + conversion: + strategy: Webhook + webhook: + clientConfig: + caBundle: Cg== + service: + name: webhook-service + namespace: system + path: /convert + port: 443 + conversionReviewVersions: + - v1 + - v1beta1 + group: aiven.io + names: + kind: KafkaTopic + listKind: KafkaTopicList + plural: kafkatopics + singular: kafkatopic + scope: Namespaced + versions: + - additionalPrinterColumns: + - jsonPath: .spec.serviceName + name: Service Name + type: string + - jsonPath: .spec.project + name: Project + type: string + - jsonPath: .spec.partitions + name: Partitions + type: string + - jsonPath: .spec.replication + name: Replication + type: string + name: v1alpha1 + schema: + openAPIV3Schema: + description: KafkaTopic is the Schema for the kafkatopics 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: KafkaTopicSpec defines the desired state of KafkaTopic + properties: + authSecretRef: + description: Authentication reference to Aiven token in a secret + properties: + key: + minLength: 1 + type: string + name: + minLength: 1 + type: string + required: + - key + - name + type: object + config: + description: Kafka topic configuration + properties: + cleanup_policy: + description: cleanup.policy value + type: string + compression_type: + description: compression.type value + type: string + delete_retention_ms: + description: delete.retention.ms value + format: int64 + type: integer + file_delete_delay_ms: + description: file.delete.delay.ms value + format: int64 + type: integer + flush_messages: + description: flush.messages value + format: int64 + type: integer + flush_ms: + description: flush.ms value + format: int64 + type: integer + index_interval_bytes: + description: index.interval.bytes value + format: int64 + type: integer + max_compaction_lag_ms: + description: max.compaction.lag.ms value + format: int64 + type: integer + max_message_bytes: + description: max.message.bytes value + format: int64 + type: integer + message_downconversion_enable: + description: message.downconversion.enable value + type: boolean + message_format_version: + description: message.format.version value + type: string + message_timestamp_difference_max_ms: + description: message.timestamp.difference.max.ms value + format: int64 + type: integer + message_timestamp_type: + description: message.timestamp.type value + type: string + min_compaction_lag_ms: + description: min.compaction.lag.ms value + format: int64 + type: integer + min_insync_replicas: + description: min.insync.replicas value + format: int64 + type: integer + preallocate: + description: preallocate value + type: boolean + retention_bytes: + description: retention.bytes value + format: int64 + type: integer + retention_ms: + description: retention.ms value + format: int64 + type: integer + segment_bytes: + description: segment.bytes value + format: int64 + type: integer + segment_index_bytes: + description: segment.index.bytes value + format: int64 + type: integer + segment_jitter_ms: + description: segment.jitter.ms value + format: int64 + type: integer + segment_ms: + description: segment.ms value + format: int64 + type: integer + unclean_leader_election_enable: + description: unclean.leader.election.enable value + type: boolean + type: object + partitions: + description: Number of partitions to create in the topic + maximum: 1000000 + minimum: 1 + type: integer + project: + description: Target project. + format: ^[a-zA-Z0-9_-]*$ + maxLength: 63 + type: string + replication: + description: Replication factor for the topic + minimum: 2 + type: integer + serviceName: + description: Service name. + maxLength: 63 + type: string + tags: + description: Kafka topic tags + items: + properties: + key: + format: ^[a-zA-Z0-9_-]*$ + maxLength: 64 + minLength: 1 + type: string + value: + format: ^[a-zA-Z0-9_-]*$ + maxLength: 256 + type: string + required: + - key + type: object + type: array + termination_protection: + description: It is a Kubernetes side deletion protections, which prevents + the kafka topic from being deleted by Kubernetes. It is recommended + to enable this for any production databases containing critical + data. + type: boolean + required: + - authSecretRef + - partitions + - project + - replication + - serviceName + type: object + status: + description: KafkaTopicStatus defines the observed state of KafkaTopic + properties: + conditions: + description: Conditions represent the latest available observations + of an KafkaTopic state + items: + description: "Condition contains details for one aspect of the current + state of this API Resource. --- This struct is intended for direct + use as an array at the field path .status.conditions. For example, + type FooStatus struct{ // Represents the observations of a + foo's current state. // Known .status.conditions.type are: + \"Available\", \"Progressing\", and \"Degraded\" // +patchMergeKey=type + \ // +patchStrategy=merge // +listType=map // +listMapKey=type + \ Conditions []metav1.Condition `json:\"conditions,omitempty\" + patchStrategy:\"merge\" patchMergeKey:\"type\" protobuf:\"bytes,1,rep,name=conditions\"` + \n // other fields }" + properties: + lastTransitionTime: + description: lastTransitionTime is the last time the condition + transitioned from one status to another. This should be when + the underlying condition changed. If that is not known, then + using the time when the API field changed is acceptable. + format: date-time + type: string + message: + description: message is a human readable message indicating + details about the transition. This may be an empty string. + maxLength: 32768 + type: string + observedGeneration: + description: observedGeneration represents the .metadata.generation + that the condition was set based upon. For instance, if .metadata.generation + is currently 12, but the .status.conditions[x].observedGeneration + is 9, the condition is out of date with respect to the current + state of the instance. + format: int64 + minimum: 0 + type: integer + reason: + description: reason contains a programmatic identifier indicating + the reason for the condition's last transition. Producers + of specific condition types may define expected values and + meanings for this field, and whether the values are considered + a guaranteed API. The value should be a CamelCase string. + This field may not be empty. + maxLength: 1024 + minLength: 1 + pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$ + type: string + status: + description: status of the condition, one of True, False, Unknown. + enum: + - "True" + - "False" + - Unknown + type: string + type: + description: type of condition in CamelCase or in foo.example.com/CamelCase. + --- Many .condition.type values are consistent across resources + like Available, but because arbitrary conditions can be useful + (see .node.status.conditions), the ability to deconflict is + important. The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt) + maxLength: 316 + pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$ + type: string + required: + - lastTransitionTime + - message + - reason + - status + - type + type: object + type: array + state: + description: State represents the state of the kafka topic + type: string + required: + - conditions + - state + type: object + type: object + served: true + storage: true + subresources: + status: {} +status: + acceptedNames: + kind: "" + plural: "" + conditions: [] + storedVersions: [] diff --git a/operators/aiven-operator/0.1.1/manifests/aiven.io_postgresqls.yaml b/operators/aiven-operator/0.1.1/manifests/aiven.io_postgresqls.yaml new file mode 100644 index 00000000000..1d91f100377 --- /dev/null +++ b/operators/aiven-operator/0.1.1/manifests/aiven.io_postgresqls.yaml @@ -0,0 +1,720 @@ +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + cert-manager.io/inject-ca-from: aiven-operator-system/aiven-operator-serving-cert + controller-gen.kubebuilder.io/version: v0.4.1 + creationTimestamp: null + name: postgresqls.aiven.io +spec: + conversion: + strategy: Webhook + webhook: + clientConfig: + caBundle: Cg== + service: + name: webhook-service + namespace: system + path: /convert + port: 443 + conversionReviewVersions: + - v1 + - v1beta1 + group: aiven.io + names: + kind: PostgreSQL + listKind: PostgreSQLList + plural: postgresqls + singular: postgresql + scope: Namespaced + versions: + - additionalPrinterColumns: + - jsonPath: .spec.project + name: Project + type: string + - jsonPath: .spec.cloudName + name: Region + type: string + - jsonPath: .spec.plan + name: Plan + type: string + - jsonPath: .status.state + name: State + type: string + name: v1alpha1 + schema: + openAPIV3Schema: + description: PostgreSQL is the Schema for the postgresql 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: PostgreSQLSpec defines the desired state of postgres instance + properties: + authSecretRef: + description: Authentication reference to Aiven token in a secret + properties: + key: + minLength: 1 + type: string + name: + minLength: 1 + type: string + required: + - key + - name + type: object + cloudName: + description: Cloud the service runs in. + maxLength: 256 + type: string + connInfoSecretTarget: + description: Information regarding secret creation + properties: + name: + description: Name of the Secret resource to be created + type: string + required: + - name + type: object + maintenanceWindowDow: + description: Day of week when maintenance operations should be performed. + One monday, tuesday, wednesday, etc. + enum: + - monday + - tuesday + - wednesday + - thursday + - friday + - saturday + - sunday + - never + type: string + maintenanceWindowTime: + description: Time of day when maintenance operations should be performed. + UTC time in HH:mm:ss format. + maxLength: 8 + type: string + plan: + description: Subscription plan. + maxLength: 128 + type: string + project: + description: Target project. + format: ^[a-zA-Z0-9_-]*$ + maxLength: 63 + type: string + projectVpcId: + description: Identifier of the VPC the service should be in, if any. + maxLength: 36 + type: string + terminationProtection: + description: Prevent service from being deleted. It is recommended + to have this enabled for all services. + type: boolean + userConfig: + description: PostgreSQL specific user configuration options + properties: + admin_password: + description: Custom password for admin user. Defaults to random + string. This must be set only when a new service is being created. + format: ^[a-zA-Z0-9-_]+$ + maxLength: 256 + type: string + admin_username: + description: Custom username for admin user. This must be set + only when a new service is being created. + format: ^[_A-Za-z0-9][-._A-Za-z0-9]{0,63}$ + maxLength: 64 + type: string + backup_hour: + description: The hour of day (in UTC) when backup for the service + is started. New backup is only started if previous backup has + already completed. + format: int64 + maximum: 23 + minimum: 0 + type: integer + backup_minute: + description: The minute of an hour when backup for the service + is started. New backup is only started if previous backup has + already completed. + format: int64 + maximum: 59 + minimum: 0 + type: integer + ip_filter: + description: IP filter Allow incoming connections from CIDR address + block, e.g. '10.20.0.0/16' + items: + type: string + type: array + migration: + description: Migrate data from existing server + properties: + dbname: + description: Database name for bootstrapping the initial connection + maxLength: 63 + type: string + host: + description: Hostname or IP address of the server where to + migrate data from + maxLength: 255 + type: string + password: + description: Password for authentication with the server where + to migrate data from + maxLength: 256 + type: string + port: + description: Port number of the server where to migrate data + from + format: int64 + maximum: 65535 + minimum: 1 + type: integer + ssl: + description: The server where to migrate data from is secured + with SSL + type: boolean + username: + description: User name for authentication with the server + where to migrate data from + maxLength: 256 + type: string + type: object + pg: + description: postgresql.conf configuration values + properties: + autovacuum_analyze_scale_factor: + description: autovacuum_analyze_scale_factor Specifies a fraction + of the table size to add to autovacuum_analyze_threshold + when deciding whether to trigger an ANALYZE. The default + is 0.2 (20% of table size) + format: int64 + maximum: 1 + minimum: 0 + type: integer + autovacuum_analyze_threshold: + description: autovacuum_analyze_threshold Specifies the minimum + number of inserted, updated or deleted tuples needed to + trigger an ANALYZE in any one table. The default is 50 + tuples. + format: int64 + maximum: 2147483647 + minimum: 0 + type: integer + autovacuum_freeze_max_age: + description: autovacuum_freeze_max_age Specifies the maximum + age (in transactions) that a table's pg_class.relfrozenxid + field can attain before a VACUUM operation is forced to + prevent transaction ID wraparound within the table. Note + that the system will launch autovacuum processes to prevent + wraparound even when autovacuum is otherwise disabled. This + parameter will cause the server to be restarted. + format: int64 + maximum: 1500000000 + minimum: 200000000 + type: integer + autovacuum_max_workers: + description: autovacuum_max_workers Specifies the maximum + number of autovacuum processes (other than the autovacuum + launcher) that may be running at any one time. The default + is three. This parameter can only be set at server start. + format: int64 + maximum: 20 + minimum: 1 + type: integer + autovacuum_naptime: + description: autovacuum_naptime Specifies the minimum delay + between autovacuum runs on any given database. The delay + is measured in seconds, and the default is one minute + format: int64 + maximum: 86400 + minimum: 0 + type: integer + autovacuum_vacuum_cost_delay: + description: autovacuum_vacuum_cost_delay Specifies the cost + delay value that will be used in automatic VACUUM operations. + If -1 is specified, the regular vacuum_cost_delay value + will be used. The default value is 20 milliseconds + format: int64 + maximum: 100 + type: integer + autovacuum_vacuum_cost_limit: + description: autovacuum_vacuum_cost_limit Specifies the cost + limit value that will be used in automatic VACUUM operations. + If -1 is specified (which is the default), the regular vacuum_cost_limit + value will be used. + format: int64 + maximum: 10000 + type: integer + autovacuum_vacuum_scale_factor: + description: autovacuum_vacuum_scale_factor Specifies a fraction + of the table size to add to autovacuum_vacuum_threshold + when deciding whether to trigger a VACUUM. The default is + 0.2 (20% of table size) + format: int64 + maximum: 1 + minimum: 0 + type: integer + autovacuum_vacuum_threshold: + description: autovacuum_vacuum_threshold Specifies the minimum + number of updated or deleted tuples needed to trigger a + VACUUM in any one table. The default is 50 tuples + format: int64 + maximum: 2147483647 + minimum: 0 + type: integer + deadlock_timeout: + description: deadlock_timeout This is the amount of time, + in milliseconds, to wait on a lock before checking to see + if there is a deadlock condition. + format: int64 + maximum: 1800000 + minimum: 500 + type: integer + idle_in_transaction_session_timeout: + description: idle_in_transaction_session_timeout Time out + sessions with open transactions after this number of milliseconds + format: int64 + maximum: 604800000 + minimum: 0 + type: integer + jit: + description: jit Controls system-wide use of Just-in-Time + Compilation (JIT). + type: boolean + log_autovacuum_min_duration: + description: log_autovacuum_min_duration Causes each action + executed by autovacuum to be logged if it ran for at least + the specified number of milliseconds. Setting this to zero + logs all autovacuum actions. Minus-one (the default) disables + logging autovacuum actions. + format: int64 + maximum: 2147483647 + type: integer + log_error_verbosity: + description: log_error_verbosity Controls the amount of detail + written in the server log for each message that is logged. + enum: + - TERSE + - DEFAULT + - VERBOSE + type: string + log_min_duration_statement: + description: log_min_duration_statement Log statements that + take more than this number of milliseconds to run, -1 disables + format: int64 + maximum: 86400000 + type: integer + max_files_per_process: + description: max_files_per_process PostgreSQL maximum number + of files that can be open per process + format: int64 + maximum: 4096 + minimum: 1000 + type: integer + max_locks_per_transaction: + description: max_locks_per_transaction PostgreSQL maximum + locks per transaction + format: int64 + maximum: 640 + minimum: 64 + type: integer + max_logical_replication_workers: + description: max_logical_replication_workers PostgreSQL maximum + logical replication workers (taken from the pool of max_parallel_workers) + format: int64 + maximum: 64 + minimum: 4 + type: integer + max_parallel_workers: + description: max_parallel_workers Sets the maximum number + of workers that the system can support for parallel queries + format: int64 + maximum: 96 + minimum: 0 + type: integer + max_parallel_workers_per_gather: + description: max_parallel_workers_per_gather Sets the maximum + number of workers that can be started by a single Gather + or Gather Merge node + format: int64 + maximum: 96 + minimum: 0 + type: integer + max_pred_locks_per_transaction: + description: max_pred_locks_per_transaction PostgreSQL maximum + predicate locks per transaction + format: int64 + maximum: 640 + minimum: 64 + type: integer + max_prepared_transactions: + description: max_prepared_transactions PostgreSQL maximum + prepared transactions + format: int64 + maximum: 10000 + minimum: 0 + type: integer + max_replication_slots: + description: max_replication_slots PostgreSQL maximum replication + slots + format: int64 + maximum: 64 + minimum: 8 + type: integer + max_stack_depth: + description: max_stack_depth Maximum depth of the stack in + bytes + format: int64 + maximum: 6291456 + minimum: 2097152 + type: integer + max_standby_archive_delay: + description: max_standby_archive_delay Max standby archive + delay in milliseconds + format: int64 + maximum: 43200000 + minimum: 1 + type: integer + max_standby_streaming_delay: + description: max_standby_streaming_delay Max standby streaming + delay in milliseconds + format: int64 + maximum: 43200000 + minimum: 1 + type: integer + max_wal_senders: + description: max_wal_senders PostgreSQL maximum WAL senders + format: int64 + maximum: 64 + minimum: 8 + type: integer + max_worker_processes: + description: max_worker_processes Sets the maximum number + of background processes that the system can support + format: int64 + maximum: 96 + minimum: 8 + type: integer + pg_partman_bgw.interval: + description: pg_partman_bgw.interval Sets the time interval + to run pg_partman's scheduled tasks + format: int64 + maximum: 604800 + minimum: 3600 + type: integer + pg_partman_bgw.role: + description: pg_partman_bgw.role Controls which role to use + for pg_partman's scheduled background tasks. + format: ^[_A-Za-z0-9][-._A-Za-z0-9]{0,63}$ + maxLength: 64 + type: string + pg_stat_statements.track: + description: pg_stat_statements.track Controls which statements + are counted. Specify top to track top-level statements (those + issued directly by clients), all to also track nested statements + (such as statements invoked within functions), or none to + disable statement statistics collection. The default value + is top. + enum: + - all + - top + - none + type: string + temp_file_limit: + description: temp_file_limit PostgreSQL temporary file limit + in KiB, -1 for unlimited + format: int64 + maximum: 2147483647 + type: integer + timezone: + description: timezone PostgreSQL service timezone + maxLength: 64 + type: string + track_activity_query_size: + description: track_activity_query_size Specifies the number + of bytes reserved to track the currently executing command + for each active session. + format: int64 + maximum: 10240 + minimum: 1024 + type: integer + track_commit_timestamp: + description: track_commit_timestamp Record commit time of + transactions. + enum: + - "off" + - "on" + type: string + track_functions: + description: track_functions Enables tracking of function + call counts and time used. + enum: + - all + - pl + - none + type: string + wal_sender_timeout: + description: wal_sender_timeout Terminate replication connections + that are inactive for longer than this amount of time, in + milliseconds. + format: int64 + maximum: 600000 + minimum: 5000 + type: integer + wal_writer_delay: + description: wal_writer_delay WAL flush interval in milliseconds. + Note that setting this value to lower than the default 200ms + may negatively impact performance + format: int64 + maximum: 200 + minimum: 10 + type: integer + type: object + pg_service_to_fork_from: + description: Name of the PostgreSQL Service from which to fork + (deprecated, use service_to_fork_from). This has effect only + when a new service is being created. + maxLength: 63 + type: string + pg_version: + description: PostgreSQL major version + enum: + - "9.5" + - "9.6" + - "10" + - "11" + - "12" + type: string + pgbouncer: + description: PGBouncer connection pooling settings + properties: + ignore_startup_parameters: + description: List of parameters to ignore when given in startup + packet + items: + type: string + type: array + server_reset_query_always: + description: Run server_reset_query (DISCARD ALL) in all pooling + modes + type: boolean + type: object + pglookout: + description: PGLookout settings + properties: + max_failover_replication_time_lag: + description: max_failover_replication_time_lag Number of seconds + of master unavailability before triggering database failover + to standby + format: int64 + minimum: 10 + type: integer + type: object + private_access: + description: Allow access to selected service ports from private + networks + properties: + pg: + description: Allow clients to connect to pg with a DNS name + that always resolves to the service's private IP addresses. + Only available in certain network locations + type: boolean + pgbouncer: + description: Allow clients to connect to pgbouncer with a + DNS name that always resolves to the service's private IP + addresses. Only available in certain network locations + type: boolean + prometheus: + description: Allow clients to connect to prometheus with a + DNS name that always resolves to the service's private IP + addresses. Only available in certain network locations + type: boolean + type: object + public_access: + description: Allow access to selected service ports from the public + Internet + properties: + pg: + description: Allow clients to connect to pg from the public + internet for service nodes that are in a project VPC or + another type of private network + type: boolean + pgbouncer: + description: Allow clients to connect to pgbouncer from the + public internet for service nodes that are in a project + VPC or another type of private network + type: boolean + prometheus: + description: Allow clients to connect to prometheus from the + public internet for service nodes that are in a project + VPC or another type of private network + type: boolean + type: object + recovery_target_time: + description: Recovery target time when forking a service. This + has effect only when a new service is being created. + maxLength: 32 + type: string + service_to_fork_from: + description: Name of another service to fork from. This has effect + only when a new service is being created. + maxLength: 63 + type: string + shared_buffers_percentage: + description: shared_buffers_percentage Percentage of total RAM + that the database server uses for shared memory buffers. Valid + range is 20-60 (float), which corresponds to 20% - 60%. This + setting adjusts the shared_buffers configuration value. The + absolute maximum is 12 GB. + format: int64 + maximum: 60 + minimum: 20 + type: integer + synchronous_replication: + description: Synchronous replication type. Note that the service + plan also needs to support synchronous replication. + enum: + - quorum + - "off" + type: string + timescaledb: + description: TimescaleDB extension configuration values + properties: + max_background_workers: + description: timescaledb.max_background_workers The number + of background workers for timescaledb operations. You should + configure this setting to the sum of your number of databases + and the total number of concurrent background workers you + want running at any given point in time. + format: int64 + maximum: 4096 + minimum: 1 + type: integer + type: object + variant: + description: Variant of the PostgreSQL service, may affect the + features that are exposed by default + enum: + - aiven + - timescale + type: string + work_mem: + description: work_mem Sets the maximum amount of memory to be + used by a query operation (such as a sort or hash table) before + writing to temporary disk files, in MB. Default is 1MB + 0.075% + of total RAM (up to 32MB). + format: int64 + maximum: 1024 + minimum: 1 + type: integer + type: object + required: + - authSecretRef + - project + type: object + status: + description: ServiceStatus defines the observed state of service + properties: + conditions: + description: Conditions represent the latest available observations + of a service state + items: + description: "Condition contains details for one aspect of the current + state of this API Resource. --- This struct is intended for direct + use as an array at the field path .status.conditions. For example, + type FooStatus struct{ // Represents the observations of a + foo's current state. // Known .status.conditions.type are: + \"Available\", \"Progressing\", and \"Degraded\" // +patchMergeKey=type + \ // +patchStrategy=merge // +listType=map // +listMapKey=type + \ Conditions []metav1.Condition `json:\"conditions,omitempty\" + patchStrategy:\"merge\" patchMergeKey:\"type\" protobuf:\"bytes,1,rep,name=conditions\"` + \n // other fields }" + properties: + lastTransitionTime: + description: lastTransitionTime is the last time the condition + transitioned from one status to another. This should be when + the underlying condition changed. If that is not known, then + using the time when the API field changed is acceptable. + format: date-time + type: string + message: + description: message is a human readable message indicating + details about the transition. This may be an empty string. + maxLength: 32768 + type: string + observedGeneration: + description: observedGeneration represents the .metadata.generation + that the condition was set based upon. For instance, if .metadata.generation + is currently 12, but the .status.conditions[x].observedGeneration + is 9, the condition is out of date with respect to the current + state of the instance. + format: int64 + minimum: 0 + type: integer + reason: + description: reason contains a programmatic identifier indicating + the reason for the condition's last transition. Producers + of specific condition types may define expected values and + meanings for this field, and whether the values are considered + a guaranteed API. The value should be a CamelCase string. + This field may not be empty. + maxLength: 1024 + minLength: 1 + pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$ + type: string + status: + description: status of the condition, one of True, False, Unknown. + enum: + - "True" + - "False" + - Unknown + type: string + type: + description: type of condition in CamelCase or in foo.example.com/CamelCase. + --- Many .condition.type values are consistent across resources + like Available, but because arbitrary conditions can be useful + (see .node.status.conditions), the ability to deconflict is + important. The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt) + maxLength: 316 + pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$ + type: string + required: + - lastTransitionTime + - message + - reason + - status + - type + type: object + type: array + state: + description: Service state + type: string + required: + - conditions + - state + type: object + type: object + served: true + storage: true + subresources: + status: {} +status: + acceptedNames: + kind: "" + plural: "" + conditions: [] + storedVersions: [] diff --git a/operators/aiven-operator/0.1.1/manifests/aiven.io_projects.yaml b/operators/aiven-operator/0.1.1/manifests/aiven.io_projects.yaml new file mode 100644 index 00000000000..700161224be --- /dev/null +++ b/operators/aiven-operator/0.1.1/manifests/aiven.io_projects.yaml @@ -0,0 +1,240 @@ +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + cert-manager.io/inject-ca-from: aiven-operator-system/aiven-operator-serving-cert + controller-gen.kubebuilder.io/version: v0.4.1 + creationTimestamp: null + name: projects.aiven.io +spec: + conversion: + strategy: Webhook + webhook: + clientConfig: + caBundle: Cg== + service: + name: webhook-service + namespace: system + path: /convert + port: 443 + conversionReviewVersions: + - v1 + - v1beta1 + group: aiven.io + names: + kind: Project + listKind: ProjectList + plural: projects + singular: project + scope: Namespaced + versions: + - name: v1alpha1 + schema: + openAPIV3Schema: + description: Project is the Schema for the projects 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: ProjectSpec defines the desired state of Project + properties: + accountId: + description: Account ID + maxLength: 32 + type: string + authSecretRef: + description: Authentication reference to Aiven token in a secret + properties: + key: + minLength: 1 + type: string + name: + minLength: 1 + type: string + required: + - key + - name + type: object + billingAddress: + description: Billing name and address of the project + maxLength: 1000 + type: string + billingCurrency: + description: Billing currency + enum: + - AUD + - CAD + - CHF + - DKK + - EUR + - GBP + - NOK + - SEK + - USD + type: string + billingEmails: + description: Billing contact emails of the project + items: + type: string + maxItems: 10 + type: array + billingExtraText: + description: Extra text to be included in all project invoices, e.g. + purchase order or cost center number + maxLength: 1000 + type: string + billingGroupId: + description: BillingGroup ID + maxLength: 36 + minLength: 36 + type: string + cardId: + description: Credit card ID; The ID may be either last 4 digits of + the card or the actual ID + maxLength: 64 + type: string + cloud: + description: 'Target cloud, example: aws-eu-central-1' + maxLength: 256 + type: string + connInfoSecretTarget: + description: Information regarding secret creation + properties: + name: + description: Name of the Secret resource to be created + type: string + required: + - name + type: object + copyFromProject: + description: Project name from which to copy settings to the new project + maxLength: 63 + type: string + countryCode: + description: Billing country code of the project + maxLength: 2 + minLength: 2 + type: string + technicalEmails: + description: Technical contact emails of the project + items: + type: string + maxItems: 10 + type: array + required: + - authSecretRef + type: object + status: + description: ProjectStatus defines the observed state of Project + properties: + availableCredits: + description: Available credirs + type: string + conditions: + description: Conditions represent the latest available observations + of an Project state + items: + description: "Condition contains details for one aspect of the current + state of this API Resource. --- This struct is intended for direct + use as an array at the field path .status.conditions. For example, + type FooStatus struct{ // Represents the observations of a + foo's current state. // Known .status.conditions.type are: + \"Available\", \"Progressing\", and \"Degraded\" // +patchMergeKey=type + \ // +patchStrategy=merge // +listType=map // +listMapKey=type + \ Conditions []metav1.Condition `json:\"conditions,omitempty\" + patchStrategy:\"merge\" patchMergeKey:\"type\" protobuf:\"bytes,1,rep,name=conditions\"` + \n // other fields }" + properties: + lastTransitionTime: + description: lastTransitionTime is the last time the condition + transitioned from one status to another. This should be when + the underlying condition changed. If that is not known, then + using the time when the API field changed is acceptable. + format: date-time + type: string + message: + description: message is a human readable message indicating + details about the transition. This may be an empty string. + maxLength: 32768 + type: string + observedGeneration: + description: observedGeneration represents the .metadata.generation + that the condition was set based upon. For instance, if .metadata.generation + is currently 12, but the .status.conditions[x].observedGeneration + is 9, the condition is out of date with respect to the current + state of the instance. + format: int64 + minimum: 0 + type: integer + reason: + description: reason contains a programmatic identifier indicating + the reason for the condition's last transition. Producers + of specific condition types may define expected values and + meanings for this field, and whether the values are considered + a guaranteed API. The value should be a CamelCase string. + This field may not be empty. + maxLength: 1024 + minLength: 1 + pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$ + type: string + status: + description: status of the condition, one of True, False, Unknown. + enum: + - "True" + - "False" + - Unknown + type: string + type: + description: type of condition in CamelCase or in foo.example.com/CamelCase. + --- Many .condition.type values are consistent across resources + like Available, but because arbitrary conditions can be useful + (see .node.status.conditions), the ability to deconflict is + important. The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt) + maxLength: 316 + pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$ + type: string + required: + - lastTransitionTime + - message + - reason + - status + - type + type: object + type: array + country: + description: Country name + type: string + estimatedBalance: + description: Estimated balance + type: string + paymentMethod: + description: Payment method name + type: string + vatId: + description: EU VAT Identification Number + maxLength: 64 + type: string + required: + - conditions + type: object + type: object + served: true + storage: true + subresources: + status: {} +status: + acceptedNames: + kind: "" + plural: "" + conditions: [] + storedVersions: [] diff --git a/operators/aiven-operator/0.1.1/manifests/aiven.io_projectvpcs.yaml b/operators/aiven-operator/0.1.1/manifests/aiven.io_projectvpcs.yaml new file mode 100644 index 00000000000..2fa018f25f9 --- /dev/null +++ b/operators/aiven-operator/0.1.1/manifests/aiven.io_projectvpcs.yaml @@ -0,0 +1,191 @@ +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + cert-manager.io/inject-ca-from: aiven-operator-system/aiven-operator-serving-cert + controller-gen.kubebuilder.io/version: v0.4.1 + creationTimestamp: null + name: projectvpcs.aiven.io +spec: + conversion: + strategy: Webhook + webhook: + clientConfig: + caBundle: Cg== + service: + name: webhook-service + namespace: system + path: /convert + port: 443 + conversionReviewVersions: + - v1 + - v1beta1 + group: aiven.io + names: + kind: ProjectVPC + listKind: ProjectVPCList + plural: projectvpcs + singular: projectvpc + scope: Namespaced + versions: + - additionalPrinterColumns: + - jsonPath: .spec.project + name: Project + type: string + - jsonPath: .spec.cloudName + name: Cloud + type: string + - jsonPath: .spec.networkCidr + name: Network CIDR + type: string + - jsonPath: .status.state + name: State + type: string + name: v1alpha1 + schema: + openAPIV3Schema: + description: ProjectVPC is the Schema for the projectvpcs 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: ProjectVPCSpec defines the desired state of ProjectVPC + properties: + authSecretRef: + description: Authentication reference to Aiven token in a secret + properties: + key: + minLength: 1 + type: string + name: + minLength: 1 + type: string + required: + - key + - name + type: object + cloudName: + description: Cloud the VPC is in + maxLength: 256 + type: string + networkCidr: + description: Network address range used by the VPC like 192.168.0.0/24 + maxLength: 36 + type: string + project: + description: The project the VPC belongs to + format: ^[a-zA-Z0-9_-]*$ + maxLength: 63 + type: string + required: + - authSecretRef + - cloudName + - networkCidr + - project + type: object + status: + description: ProjectVPCStatus defines the observed state of ProjectVPC + properties: + conditions: + description: Conditions represent the latest available observations + of an ProjectVPC state + items: + description: "Condition contains details for one aspect of the current + state of this API Resource. --- This struct is intended for direct + use as an array at the field path .status.conditions. For example, + type FooStatus struct{ // Represents the observations of a + foo's current state. // Known .status.conditions.type are: + \"Available\", \"Progressing\", and \"Degraded\" // +patchMergeKey=type + \ // +patchStrategy=merge // +listType=map // +listMapKey=type + \ Conditions []metav1.Condition `json:\"conditions,omitempty\" + patchStrategy:\"merge\" patchMergeKey:\"type\" protobuf:\"bytes,1,rep,name=conditions\"` + \n // other fields }" + properties: + lastTransitionTime: + description: lastTransitionTime is the last time the condition + transitioned from one status to another. This should be when + the underlying condition changed. If that is not known, then + using the time when the API field changed is acceptable. + format: date-time + type: string + message: + description: message is a human readable message indicating + details about the transition. This may be an empty string. + maxLength: 32768 + type: string + observedGeneration: + description: observedGeneration represents the .metadata.generation + that the condition was set based upon. For instance, if .metadata.generation + is currently 12, but the .status.conditions[x].observedGeneration + is 9, the condition is out of date with respect to the current + state of the instance. + format: int64 + minimum: 0 + type: integer + reason: + description: reason contains a programmatic identifier indicating + the reason for the condition's last transition. Producers + of specific condition types may define expected values and + meanings for this field, and whether the values are considered + a guaranteed API. The value should be a CamelCase string. + This field may not be empty. + maxLength: 1024 + minLength: 1 + pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$ + type: string + status: + description: status of the condition, one of True, False, Unknown. + enum: + - "True" + - "False" + - Unknown + type: string + type: + description: type of condition in CamelCase or in foo.example.com/CamelCase. + --- Many .condition.type values are consistent across resources + like Available, but because arbitrary conditions can be useful + (see .node.status.conditions), the ability to deconflict is + important. The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt) + maxLength: 316 + pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$ + type: string + required: + - lastTransitionTime + - message + - reason + - status + - type + type: object + type: array + id: + description: Project VPC id + type: string + state: + description: State of VPC + type: string + required: + - conditions + - id + - state + type: object + type: object + served: true + storage: true + subresources: + status: {} +status: + acceptedNames: + kind: "" + plural: "" + conditions: [] + storedVersions: [] diff --git a/operators/aiven-operator/0.1.1/manifests/aiven.io_serviceintegrations.yaml b/operators/aiven-operator/0.1.1/manifests/aiven.io_serviceintegrations.yaml new file mode 100644 index 00000000000..c18d2066220 --- /dev/null +++ b/operators/aiven-operator/0.1.1/manifests/aiven.io_serviceintegrations.yaml @@ -0,0 +1,315 @@ +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + cert-manager.io/inject-ca-from: aiven-operator-system/aiven-operator-serving-cert + controller-gen.kubebuilder.io/version: v0.4.1 + creationTimestamp: null + name: serviceintegrations.aiven.io +spec: + conversion: + strategy: Webhook + webhook: + clientConfig: + caBundle: Cg== + service: + name: webhook-service + namespace: system + path: /convert + port: 443 + conversionReviewVersions: + - v1 + - v1beta1 + group: aiven.io + names: + kind: ServiceIntegration + listKind: ServiceIntegrationList + plural: serviceintegrations + singular: serviceintegration + scope: Namespaced + versions: + - additionalPrinterColumns: + - jsonPath: .spec.project + name: Project + type: string + - jsonPath: .spec.integrationType + name: Type + type: string + - jsonPath: .spec.sourceServiceName + name: Source Service Name + type: string + - jsonPath: .spec.destinationServiceName + name: Destination Service Name + type: string + - jsonPath: .spec.sourceEndpointId + name: Source Endpoint ID + type: string + - jsonPath: .spec.destinationEndpointId + name: Destination Endpoint ID + type: string + name: v1alpha1 + schema: + openAPIV3Schema: + description: ServiceIntegration is the Schema for the serviceintegrations + 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: ServiceIntegrationSpec defines the desired state of ServiceIntegration + properties: + authSecretRef: + description: Authentication reference to Aiven token in a secret + properties: + key: + minLength: 1 + type: string + name: + minLength: 1 + type: string + required: + - key + - name + type: object + datadog: + description: Datadog specific user configuration options + properties: + exclude_consumer_groups: + description: Consumer groups to exclude + items: + type: string + type: array + exclude_topics: + description: List of topics to exclude + items: + type: string + type: array + include_consumer_groups: + description: Consumer groups to include + items: + type: string + type: array + include_topics: + description: Topics to include + items: + type: string + type: array + kafka_custom_metrics: + description: List of custom metrics + items: + type: string + type: array + type: object + destinationEndpointId: + description: Destination endpoint for the integration (if any) + type: string + destinationServiceName: + description: Destination service for the integration (if any) + type: string + integrationType: + description: Type of the service integration + enum: + - datadog + - kafka_logs + - kafka_connect + - metrics + - dashboard + - rsyslog + - read_replica + - schema_registry_proxy + - signalfx + - jolokia + - internal_connectivity + - external_google_cloud_logging + - datasource + type: string + kafkaConnect: + description: Kafka Connect service configuration values + properties: + kafka_connect: + properties: + config_storage_topic: + description: The name of the topic where connector and task + configuration data are stored. This must be the same for + all workers with the same group_id. + maxLength: 249 + type: string + group_id: + description: A unique string that identifies the Connect cluster + group this worker belongs to. + maxLength: 249 + type: string + offset_storage_topic: + description: The name of the topic where connector and task + configuration offsets are stored. This must be the same + for all workers with the same group_id. + maxLength: 249 + type: string + status_storage_topic: + description: The name of the topic where connector and task + configuration status updates are stored.This must be the + same for all workers with the same group_id. + maxLength: 249 + type: string + type: object + type: object + kafkaLogs: + description: Kafka logs configuration values + properties: + kafka_topic: + description: Topic name + maxLength: 63 + minLength: 1 + type: string + type: object + metrics: + description: Metrics configuration values + properties: + database: + description: Name of the database where to store metric datapoints. + Only affects PostgreSQL destinations + format: ^[_A-Za-z0-9][-_A-Za-z0-9]{0,39}$ + maxLength: 40 + type: string + retention_days: + description: Number of days to keep old metrics. Only affects + PostgreSQL destinations. Set to 0 for no automatic cleanup. + Defaults to 30 days. + type: integer + ro_username: + description: Name of a user that can be used to read metrics. + This will be used for Grafana integration (if enabled) to prevent + Grafana users from making undesired changes. Only affects PostgreSQL + destinations. Defaults to 'metrics_reader'. Note that this must + be the same for all metrics integrations that write data to + the same PostgreSQL service. + format: ^[_A-Za-z0-9][-._A-Za-z0-9]{0,39}$ + maxLength: 40 + type: string + username: + description: Name of the user used to write metrics. Only affects + PostgreSQL destinations. Defaults to 'metrics_writer'. Note + that this must be the same for all metrics integrations that + write data to the same PostgreSQL service. + format: ^[_A-Za-z0-9][-._A-Za-z0-9]{0,39}$ + maxLength: 40 + type: string + type: object + project: + description: Project the integration belongs to + format: ^[a-zA-Z0-9_-]*$ + maxLength: 63 + type: string + sourceEndpointID: + description: Source endpoint for the integration (if any) + type: string + sourceServiceName: + description: Source service for the integration (if any) + type: string + required: + - authSecretRef + - integrationType + - project + type: object + status: + description: ServiceIntegrationStatus defines the observed state of ServiceIntegration + properties: + conditions: + description: Conditions represent the latest available observations + of an ServiceIntegration state + items: + description: "Condition contains details for one aspect of the current + state of this API Resource. --- This struct is intended for direct + use as an array at the field path .status.conditions. For example, + type FooStatus struct{ // Represents the observations of a + foo's current state. // Known .status.conditions.type are: + \"Available\", \"Progressing\", and \"Degraded\" // +patchMergeKey=type + \ // +patchStrategy=merge // +listType=map // +listMapKey=type + \ Conditions []metav1.Condition `json:\"conditions,omitempty\" + patchStrategy:\"merge\" patchMergeKey:\"type\" protobuf:\"bytes,1,rep,name=conditions\"` + \n // other fields }" + properties: + lastTransitionTime: + description: lastTransitionTime is the last time the condition + transitioned from one status to another. This should be when + the underlying condition changed. If that is not known, then + using the time when the API field changed is acceptable. + format: date-time + type: string + message: + description: message is a human readable message indicating + details about the transition. This may be an empty string. + maxLength: 32768 + type: string + observedGeneration: + description: observedGeneration represents the .metadata.generation + that the condition was set based upon. For instance, if .metadata.generation + is currently 12, but the .status.conditions[x].observedGeneration + is 9, the condition is out of date with respect to the current + state of the instance. + format: int64 + minimum: 0 + type: integer + reason: + description: reason contains a programmatic identifier indicating + the reason for the condition's last transition. Producers + of specific condition types may define expected values and + meanings for this field, and whether the values are considered + a guaranteed API. The value should be a CamelCase string. + This field may not be empty. + maxLength: 1024 + minLength: 1 + pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$ + type: string + status: + description: status of the condition, one of True, False, Unknown. + enum: + - "True" + - "False" + - Unknown + type: string + type: + description: type of condition in CamelCase or in foo.example.com/CamelCase. + --- Many .condition.type values are consistent across resources + like Available, but because arbitrary conditions can be useful + (see .node.status.conditions), the ability to deconflict is + important. The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt) + maxLength: 316 + pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$ + type: string + required: + - lastTransitionTime + - message + - reason + - status + - type + type: object + type: array + id: + description: Service integration ID + type: string + required: + - conditions + - id + type: object + type: object + served: true + storage: true + subresources: + status: {} +status: + acceptedNames: + kind: "" + plural: "" + conditions: [] + storedVersions: [] diff --git a/operators/aiven-operator/0.1.1/manifests/aiven.io_serviceusers.yaml b/operators/aiven-operator/0.1.1/manifests/aiven.io_serviceusers.yaml new file mode 100644 index 00000000000..04d790f5663 --- /dev/null +++ b/operators/aiven-operator/0.1.1/manifests/aiven.io_serviceusers.yaml @@ -0,0 +1,193 @@ +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + cert-manager.io/inject-ca-from: aiven-operator-system/aiven-operator-serving-cert + controller-gen.kubebuilder.io/version: v0.4.1 + creationTimestamp: null + name: serviceusers.aiven.io +spec: + conversion: + strategy: Webhook + webhook: + clientConfig: + caBundle: Cg== + service: + name: webhook-service + namespace: system + path: /convert + port: 443 + conversionReviewVersions: + - v1 + - v1beta1 + group: aiven.io + names: + kind: ServiceUser + listKind: ServiceUserList + plural: serviceusers + singular: serviceuser + scope: Namespaced + versions: + - additionalPrinterColumns: + - jsonPath: .spec.serviceName + name: Service Name + type: string + - jsonPath: .spec.project + name: Project + type: string + - jsonPath: .spec.connInfoSecretTarget.name + name: Connection Information Secret + type: string + name: v1alpha1 + schema: + openAPIV3Schema: + description: ServiceUser is the Schema for the serviceusers 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: ServiceUserSpec defines the desired state of ServiceUser + properties: + authSecretRef: + description: Authentication reference to Aiven token in a secret + properties: + key: + minLength: 1 + type: string + name: + minLength: 1 + type: string + required: + - key + - name + type: object + authentication: + description: Authentication details + enum: + - caching_sha2_password + - mysql_native_password + type: string + connInfoSecretTarget: + description: Information regarding secret creation + properties: + name: + description: Name of the Secret resource to be created + type: string + required: + - name + type: object + project: + description: Project to link the user to + format: ^[a-zA-Z0-9_-]*$ + maxLength: 63 + type: string + serviceName: + description: Service to link the user to + maxLength: 63 + type: string + required: + - authSecretRef + - project + - serviceName + type: object + status: + description: ServiceUserStatus defines the observed state of ServiceUser + properties: + conditions: + description: Conditions represent the latest available observations + of an ServiceUser state + items: + description: "Condition contains details for one aspect of the current + state of this API Resource. --- This struct is intended for direct + use as an array at the field path .status.conditions. For example, + type FooStatus struct{ // Represents the observations of a + foo's current state. // Known .status.conditions.type are: + \"Available\", \"Progressing\", and \"Degraded\" // +patchMergeKey=type + \ // +patchStrategy=merge // +listType=map // +listMapKey=type + \ Conditions []metav1.Condition `json:\"conditions,omitempty\" + patchStrategy:\"merge\" patchMergeKey:\"type\" protobuf:\"bytes,1,rep,name=conditions\"` + \n // other fields }" + properties: + lastTransitionTime: + description: lastTransitionTime is the last time the condition + transitioned from one status to another. This should be when + the underlying condition changed. If that is not known, then + using the time when the API field changed is acceptable. + format: date-time + type: string + message: + description: message is a human readable message indicating + details about the transition. This may be an empty string. + maxLength: 32768 + type: string + observedGeneration: + description: observedGeneration represents the .metadata.generation + that the condition was set based upon. For instance, if .metadata.generation + is currently 12, but the .status.conditions[x].observedGeneration + is 9, the condition is out of date with respect to the current + state of the instance. + format: int64 + minimum: 0 + type: integer + reason: + description: reason contains a programmatic identifier indicating + the reason for the condition's last transition. Producers + of specific condition types may define expected values and + meanings for this field, and whether the values are considered + a guaranteed API. The value should be a CamelCase string. + This field may not be empty. + maxLength: 1024 + minLength: 1 + pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$ + type: string + status: + description: status of the condition, one of True, False, Unknown. + enum: + - "True" + - "False" + - Unknown + type: string + type: + description: type of condition in CamelCase or in foo.example.com/CamelCase. + --- Many .condition.type values are consistent across resources + like Available, but because arbitrary conditions can be useful + (see .node.status.conditions), the ability to deconflict is + important. The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt) + maxLength: 316 + pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$ + type: string + required: + - lastTransitionTime + - message + - reason + - status + - type + type: object + type: array + type: + description: Type of the user account + type: string + required: + - conditions + type: object + type: object + served: true + storage: true + subresources: + status: {} +status: + acceptedNames: + kind: "" + plural: "" + conditions: [] + storedVersions: [] diff --git a/operators/aiven-operator/0.1.1/metadata/annotations.yaml b/operators/aiven-operator/0.1.1/metadata/annotations.yaml new file mode 100644 index 00000000000..bcc192ebc8f --- /dev/null +++ b/operators/aiven-operator/0.1.1/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: aiven-operator + operators.operatorframework.io.bundle.channels.v1: alpha + operators.operatorframework.io.metrics.builder: operator-sdk-v1.11.0+git + operators.operatorframework.io.metrics.mediatype.v1: metrics+v1 + operators.operatorframework.io.metrics.project_layout: go.kubebuilder.io/v2 + + # Annotations for testing. + operators.operatorframework.io.test.mediatype.v1: scorecard+v1 + operators.operatorframework.io.test.config.v1: tests/scorecard/ diff --git a/operators/aiven-operator/0.1.1/tests/scorecard/config.yaml b/operators/aiven-operator/0.1.1/tests/scorecard/config.yaml new file mode 100644 index 00000000000..4a1b77cef7f --- /dev/null +++ b/operators/aiven-operator/0.1.1/tests/scorecard/config.yaml @@ -0,0 +1,60 @@ +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.8.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.8.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.8.0 + labels: + suite: olm + test: olm-crds-have-validation-test + storage: + spec: + mountPath: {} + - entrypoint: + - scorecard-test + - olm-spec-descriptors + image: quay.io/operator-framework/scorecard-test:v1.8.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.8.0 + labels: + suite: olm + test: olm-status-descriptors-test + storage: + spec: + mountPath: {} +storage: + spec: + mountPath: {} diff --git a/operators/aiven-operator/ci.yaml b/operators/aiven-operator/ci.yaml new file mode 100644 index 00000000000..37b408874b4 --- /dev/null +++ b/operators/aiven-operator/ci.yaml @@ -0,0 +1,2 @@ +--- +updateGraph: replaces-mode