diff --git a/operators/ack-kafka-controller/1.0.2/bundle.Dockerfile b/operators/ack-kafka-controller/1.0.2/bundle.Dockerfile new file mode 100644 index 00000000000..1f30a361795 --- /dev/null +++ b/operators/ack-kafka-controller/1.0.2/bundle.Dockerfile @@ -0,0 +1,21 @@ +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=ack-kafka-controller +LABEL operators.operatorframework.io.bundle.channels.v1=alpha +LABEL operators.operatorframework.io.bundle.channel.default.v1=alpha +LABEL operators.operatorframework.io.metrics.builder=operator-sdk-v1.28.0 +LABEL operators.operatorframework.io.metrics.mediatype.v1=metrics+v1 +LABEL operators.operatorframework.io.metrics.project_layout=unknown + +# 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/ack-kafka-controller/1.0.2/manifests/ack-kafka-controller.clusterserviceversion.yaml b/operators/ack-kafka-controller/1.0.2/manifests/ack-kafka-controller.clusterserviceversion.yaml new file mode 100644 index 00000000000..8f182160b1e --- /dev/null +++ b/operators/ack-kafka-controller/1.0.2/manifests/ack-kafka-controller.clusterserviceversion.yaml @@ -0,0 +1,276 @@ +apiVersion: operators.coreos.com/v1alpha1 +kind: ClusterServiceVersion +metadata: + annotations: + alm-examples: |- + [ + { + "apiVersion": "kafka.services.k8s.aws/v1alpha1", + "kind": "Cluster", + "metadata": { + "name": "example" + }, + "spec": {} + } + ] + capabilities: Basic Install + categories: Cloud Provider + certified: "false" + containerImage: public.ecr.aws/aws-controllers-k8s/kafka-controller:1.0.2 + createdAt: "2025-01-23T05:36:30Z" + description: AWS Kafka controller is a service controller for managing Kafka resources + in Kubernetes + operatorframework.io/suggested-namespace: ack-system + operators.operatorframework.io/builder: operator-sdk-v1.28.0 + operators.operatorframework.io/project_layout: unknown + repository: https://github.com/aws-controllers-k8s + support: Community + labels: + operatorframework.io/arch.amd64: supported + operatorframework.io/arch.arm64: supported + operatorframework.io/os.linux: supported + name: ack-kafka-controller.v1.0.2 + namespace: placeholder +spec: + apiservicedefinitions: {} + customresourcedefinitions: + owned: + - description: Cluster represents the state of an AWS kafka Cluster resource. + displayName: Cluster + kind: Cluster + name: clusters.kafka.services.k8s.aws + version: v1alpha1 + - description: Configuration represents the state of an AWS kafka Configuration + resource. + displayName: Configuration + kind: Configuration + name: configurations.kafka.services.k8s.aws + version: v1alpha1 + description: |- + Manage Amazon Kafka resources in AWS from within your Kubernetes cluster. + + **About Amazon Kafka** + + Amazon Managed Streaming for Apache Kafka (Amazon MSK) is a fully managed AWS streaming data service makes it easy for you to build and run applications that use Apache Kafka to process streaming data without needing to become an expert in operating Apache Kafka clusters. Amazon MSK manages the provisioning, configuration, and maintenance of Apache Kafka clusters and Apache ZooKeeper nodes for you. Amazon MSK also shows key Apache Kafka performance metrics in the AWS Console. + + **About the AWS Controllers for Kubernetes** + + This controller is a component of the [AWS Controller for Kubernetes](https://github.com/aws/aws-controllers-k8s) project. This project is currently in **developer preview**. + displayName: AWS Controllers for Kubernetes - Amazon Kafka + icon: + - base64data: PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDE5LjAuMSwgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgIC0tPgo8c3ZnIHZlcnNpb249IjEuMSIgaWQ9IkxheWVyXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IiB2aWV3Qm94PSIwIDAgMzA0IDE4MiIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAgMzA0IDE4MjsiIHhtbDpzcGFjZT0icHJlc2VydmUiPgo8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgoJLnN0MHtmaWxsOiMyNTJGM0U7fQoJLnN0MXtmaWxsLXJ1bGU6ZXZlbm9kZDtjbGlwLXJ1bGU6ZXZlbm9kZDtmaWxsOiNGRjk5MDA7fQo8L3N0eWxlPgo8Zz4KCTxwYXRoIGNsYXNzPSJzdDAiIGQ9Ik04Ni40LDY2LjRjMCwzLjcsMC40LDYuNywxLjEsOC45YzAuOCwyLjIsMS44LDQuNiwzLjIsNy4yYzAuNSwwLjgsMC43LDEuNiwwLjcsMi4zYzAsMS0wLjYsMi0xLjksM2wtNi4zLDQuMiAgIGMtMC45LDAuNi0xLjgsMC45LTIuNiwwLjljLTEsMC0yLTAuNS0zLTEuNEM3Ni4yLDkwLDc1LDg4LjQsNzQsODYuOGMtMS0xLjctMi0zLjYtMy4xLTUuOWMtNy44LDkuMi0xNy42LDEzLjgtMjkuNCwxMy44ICAgYy04LjQsMC0xNS4xLTIuNC0yMC03LjJjLTQuOS00LjgtNy40LTExLjItNy40LTE5LjJjMC04LjUsMy0xNS40LDkuMS0yMC42YzYuMS01LjIsMTQuMi03LjgsMjQuNS03LjhjMy40LDAsNi45LDAuMywxMC42LDAuOCAgIGMzLjcsMC41LDcuNSwxLjMsMTEuNSwyLjJ2LTcuM2MwLTcuNi0xLjYtMTIuOS00LjctMTZjLTMuMi0zLjEtOC42LTQuNi0xNi4zLTQuNmMtMy41LDAtNy4xLDAuNC0xMC44LDEuM2MtMy43LDAuOS03LjMsMi0xMC44LDMuNCAgIGMtMS42LDAuNy0yLjgsMS4xLTMuNSwxLjNjLTAuNywwLjItMS4yLDAuMy0xLjYsMC4zYy0xLjQsMC0yLjEtMS0yLjEtMy4xdi00LjljMC0xLjYsMC4yLTIuOCwwLjctMy41YzAuNS0wLjcsMS40LTEuNCwyLjgtMi4xICAgYzMuNS0xLjgsNy43LTMuMywxMi42LTQuNWM0LjktMS4zLDEwLjEtMS45LDE1LjYtMS45YzExLjksMCwyMC42LDIuNywyNi4yLDguMWM1LjUsNS40LDguMywxMy42LDguMywyNC42VjY2LjR6IE00NS44LDgxLjYgICBjMy4zLDAsNi43LTAuNiwxMC4zLTEuOGMzLjYtMS4yLDYuOC0zLjQsOS41LTYuNGMxLjYtMS45LDIuOC00LDMuNC02LjRjMC42LTIuNCwxLTUuMywxLTguN3YtNC4yYy0yLjktMC43LTYtMS4zLTkuMi0xLjcgICBjLTMuMi0wLjQtNi4zLTAuNi05LjQtMC42Yy02LjcsMC0xMS42LDEuMy0xNC45LDRjLTMuMywyLjctNC45LDYuNS00LjksMTEuNWMwLDQuNywxLjIsOC4yLDMuNywxMC42ICAgQzM3LjcsODAuNCw0MS4yLDgxLjYsNDUuOCw4MS42eiBNMTI2LjEsOTIuNGMtMS44LDAtMy0wLjMtMy44LTFjLTAuOC0wLjYtMS41LTItMi4xLTMuOUw5Ni43LDEwLjJjLTAuNi0yLTAuOS0zLjMtMC45LTQgICBjMC0xLjYsMC44LTIuNSwyLjQtMi41aDkuOGMxLjksMCwzLjIsMC4zLDMuOSwxYzAuOCwwLjYsMS40LDIsMiwzLjlsMTYuOCw2Ni4ybDE1LjYtNjYuMmMwLjUtMiwxLjEtMy4zLDEuOS0zLjljMC44LTAuNiwyLjItMSw0LTEgICBoOGMxLjksMCwzLjIsMC4zLDQsMWMwLjgsMC42LDEuNSwyLDEuOSwzLjlsMTUuOCw2N2wxNy4zLTY3YzAuNi0yLDEuMy0zLjMsMi0zLjljMC44LTAuNiwyLjEtMSwzLjktMWg5LjNjMS42LDAsMi41LDAuOCwyLjUsMi41ICAgYzAsMC41LTAuMSwxLTAuMiwxLjZjLTAuMSwwLjYtMC4zLDEuNC0wLjcsMi41bC0yNC4xLDc3LjNjLTAuNiwyLTEuMywzLjMtMi4xLDMuOWMtMC44LDAuNi0yLjEsMS0zLjgsMWgtOC42Yy0xLjksMC0zLjItMC4zLTQtMSAgIGMtMC44LTAuNy0xLjUtMi0xLjktNEwxNTYsMjNsLTE1LjQsNjQuNGMtMC41LDItMS4xLDMuMy0xLjksNGMtMC44LDAuNy0yLjIsMS00LDFIMTI2LjF6IE0yNTQuNiw5NS4xYy01LjIsMC0xMC40LTAuNi0xNS40LTEuOCAgIGMtNS0xLjItOC45LTIuNS0xMS41LTRjLTEuNi0wLjktMi43LTEuOS0zLjEtMi44Yy0wLjQtMC45LTAuNi0xLjktMC42LTIuOHYtNS4xYzAtMi4xLDAuOC0zLjEsMi4zLTMuMWMwLjYsMCwxLjIsMC4xLDEuOCwwLjMgICBjMC42LDAuMiwxLjUsMC42LDIuNSwxYzMuNCwxLjUsNy4xLDIuNywxMSwzLjVjNCwwLjgsNy45LDEuMiwxMS45LDEuMmM2LjMsMCwxMS4yLTEuMSwxNC42LTMuM2MzLjQtMi4yLDUuMi01LjQsNS4yLTkuNSAgIGMwLTIuOC0wLjktNS4xLTIuNy03Yy0xLjgtMS45LTUuMi0zLjYtMTAuMS01LjJMMjQ2LDUyYy03LjMtMi4zLTEyLjctNS43LTE2LTEwLjJjLTMuMy00LjQtNS05LjMtNS0xNC41YzAtNC4yLDAuOS03LjksMi43LTExLjEgICBjMS44LTMuMiw0LjItNiw3LjItOC4yYzMtMi4zLDYuNC00LDEwLjQtNS4yYzQtMS4yLDguMi0xLjcsMTIuNi0xLjdjMi4yLDAsNC41LDAuMSw2LjcsMC40YzIuMywwLjMsNC40LDAuNyw2LjUsMS4xICAgYzIsMC41LDMuOSwxLDUuNywxLjZjMS44LDAuNiwzLjIsMS4yLDQuMiwxLjhjMS40LDAuOCwyLjQsMS42LDMsMi41YzAuNiwwLjgsMC45LDEuOSwwLjksMy4zdjQuN2MwLDIuMS0wLjgsMy4yLTIuMywzLjIgICBjLTAuOCwwLTIuMS0wLjQtMy44LTEuMmMtNS43LTIuNi0xMi4xLTMuOS0xOS4yLTMuOWMtNS43LDAtMTAuMiwwLjktMTMuMywyLjhjLTMuMSwxLjktNC43LDQuOC00LjcsOC45YzAsMi44LDEsNS4yLDMsNy4xICAgYzIsMS45LDUuNywzLjgsMTEsNS41bDE0LjIsNC41YzcuMiwyLjMsMTIuNCw1LjUsMTUuNSw5LjZjMy4xLDQuMSw0LjYsOC44LDQuNiwxNGMwLDQuMy0wLjksOC4yLTIuNiwxMS42ICAgYy0xLjgsMy40LTQuMiw2LjQtNy4zLDguOGMtMy4xLDIuNS02LjgsNC4zLTExLjEsNS42QzI2NC40LDk0LjQsMjU5LjcsOTUuMSwyNTQuNiw5NS4xeiIvPgoJPGc+CgkJPHBhdGggY2xhc3M9InN0MSIgZD0iTTI3My41LDE0My43Yy0zMi45LDI0LjMtODAuNywzNy4yLTEyMS44LDM3LjJjLTU3LjYsMC0xMDkuNS0yMS4zLTE0OC43LTU2LjdjLTMuMS0yLjgtMC4zLTYuNiwzLjQtNC40ICAgIGM0Mi40LDI0LjYsOTQuNywzOS41LDE0OC44LDM5LjVjMzYuNSwwLDc2LjYtNy42LDExMy41LTIzLjJDMjc0LjIsMTMzLjYsMjc4LjksMTM5LjcsMjczLjUsMTQzLjd6Ii8+CgkJPHBhdGggY2xhc3M9InN0MSIgZD0iTTI4Ny4yLDEyOC4xYy00LjItNS40LTI3LjgtMi42LTM4LjUtMS4zYy0zLjIsMC40LTMuNy0yLjQtMC44LTQuNWMxOC44LTEzLjIsNDkuNy05LjQsNTMuMy01ICAgIGMzLjYsNC41LTEsMzUuNC0xOC42LDUwLjJjLTIuNywyLjMtNS4zLDEuMS00LjEtMS45QzI4Mi41LDE1NS43LDI5MS40LDEzMy40LDI4Ny4yLDEyOC4xeiIvPgoJPC9nPgo8L2c+Cjwvc3ZnPg== + mediatype: image/svg+xml + install: + spec: + clusterPermissions: + - rules: + - apiGroups: + - "" + resources: + - configmaps + - secrets + verbs: + - get + - list + - patch + - watch + - apiGroups: + - "" + resources: + - namespaces + verbs: + - get + - list + - watch + - apiGroups: + - kafka.services.k8s.aws + resources: + - clusters + - configurations + verbs: + - create + - delete + - get + - list + - patch + - update + - watch + - apiGroups: + - kafka.services.k8s.aws + resources: + - clusters/status + - configurations/status + verbs: + - get + - patch + - update + - apiGroups: + - secretsmanager.services.k8s.aws + resources: + - secrets + - secrets/status + verbs: + - get + - list + - apiGroups: + - services.k8s.aws + resources: + - adoptedresources + - fieldexports + verbs: + - create + - delete + - get + - list + - patch + - update + - watch + - apiGroups: + - services.k8s.aws + resources: + - adoptedresources/status + - fieldexports/status + verbs: + - get + - patch + - update + serviceAccountName: ack-kafka-controller + deployments: + - label: + app.kubernetes.io/name: ack-kafka-controller + app.kubernetes.io/part-of: ack-system + name: ack-kafka-controller + spec: + replicas: 1 + selector: + matchLabels: + app.kubernetes.io/name: ack-kafka-controller + strategy: {} + template: + metadata: + labels: + app.kubernetes.io/name: ack-kafka-controller + spec: + containers: + - args: + - --aws-region + - $(AWS_REGION) + - --aws-endpoint-url + - $(AWS_ENDPOINT_URL) + - --enable-development-logging=$(ACK_ENABLE_DEVELOPMENT_LOGGING) + - --log-level + - $(ACK_LOG_LEVEL) + - --resource-tags + - $(ACK_RESOURCE_TAGS) + - --watch-namespace + - $(ACK_WATCH_NAMESPACE) + - --enable-leader-election=$(ENABLE_LEADER_ELECTION) + - --leader-election-namespace + - $(LEADER_ELECTION_NAMESPACE) + - --reconcile-default-max-concurrent-syncs + - $(RECONCILE_DEFAULT_MAX_CONCURRENT_SYNCS) + - --feature-gates + - $(FEATURE_GATES) + command: + - ./bin/controller + env: + - name: ACK_SYSTEM_NAMESPACE + valueFrom: + fieldRef: + fieldPath: metadata.namespace + envFrom: + - configMapRef: + name: ack-kafka-user-config + optional: false + - secretRef: + name: ack-kafka-user-secrets + optional: true + image: public.ecr.aws/aws-controllers-k8s/kafka-controller:1.0.2 + livenessProbe: + httpGet: + path: /healthz + port: 8081 + initialDelaySeconds: 15 + periodSeconds: 20 + name: controller + ports: + - containerPort: 8080 + name: http + readinessProbe: + httpGet: + path: /readyz + port: 8081 + initialDelaySeconds: 5 + periodSeconds: 10 + resources: + limits: + cpu: 100m + memory: 300Mi + requests: + cpu: 100m + memory: 200Mi + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: + - ALL + privileged: false + runAsNonRoot: true + dnsPolicy: ClusterFirst + securityContext: + seccompProfile: + type: RuntimeDefault + serviceAccountName: ack-kafka-controller + terminationGracePeriodSeconds: 10 + permissions: + - rules: + - apiGroups: + - coordination.k8s.io + resources: + - leases + verbs: + - get + - list + - watch + - create + - update + - patch + - delete + - apiGroups: + - "" + resources: + - events + verbs: + - create + - patch + serviceAccountName: ack-kafka-controller + strategy: deployment + installModes: + - supported: true + type: OwnNamespace + - supported: true + type: SingleNamespace + - supported: true + type: MultiNamespace + - supported: true + type: AllNamespaces + keywords: + - kafka + - aws + - amazon + - ack + links: + - name: AWS Controllers for Kubernetes + url: https://github.com/aws-controllers-k8s/community + - name: Documentation + url: https://aws-controllers-k8s.github.io/community/ + - name: Amazon Kafka Developer Resources + url: https://aws.amazon.com/msk/resources/ + maintainers: + - email: ack-maintainers@amazon.com + name: kafka maintainer team + maturity: alpha + provider: + name: Amazon, Inc. + url: https://aws.amazon.com + version: 1.0.2 diff --git a/operators/ack-kafka-controller/1.0.2/manifests/ack-kafka-metrics-service_v1_service.yaml b/operators/ack-kafka-controller/1.0.2/manifests/ack-kafka-metrics-service_v1_service.yaml new file mode 100644 index 00000000000..3a4e37c8aa7 --- /dev/null +++ b/operators/ack-kafka-controller/1.0.2/manifests/ack-kafka-metrics-service_v1_service.yaml @@ -0,0 +1,16 @@ +apiVersion: v1 +kind: Service +metadata: + creationTimestamp: null + name: ack-kafka-metrics-service +spec: + ports: + - name: metricsport + port: 8080 + protocol: TCP + targetPort: http + selector: + app.kubernetes.io/name: ack-kafka-controller + type: NodePort +status: + loadBalancer: {} diff --git a/operators/ack-kafka-controller/1.0.2/manifests/ack-kafka-reader_rbac.authorization.k8s.io_v1_role.yaml b/operators/ack-kafka-controller/1.0.2/manifests/ack-kafka-reader_rbac.authorization.k8s.io_v1_role.yaml new file mode 100644 index 00000000000..b97597b0633 --- /dev/null +++ b/operators/ack-kafka-controller/1.0.2/manifests/ack-kafka-reader_rbac.authorization.k8s.io_v1_role.yaml @@ -0,0 +1,15 @@ +apiVersion: rbac.authorization.k8s.io/v1 +kind: Role +metadata: + creationTimestamp: null + name: ack-kafka-reader +rules: +- apiGroups: + - kafka.services.k8s.aws + resources: + - clusters + - configurations + verbs: + - get + - list + - watch diff --git a/operators/ack-kafka-controller/1.0.2/manifests/ack-kafka-writer_rbac.authorization.k8s.io_v1_role.yaml b/operators/ack-kafka-controller/1.0.2/manifests/ack-kafka-writer_rbac.authorization.k8s.io_v1_role.yaml new file mode 100644 index 00000000000..d0788d489eb --- /dev/null +++ b/operators/ack-kafka-controller/1.0.2/manifests/ack-kafka-writer_rbac.authorization.k8s.io_v1_role.yaml @@ -0,0 +1,28 @@ +apiVersion: rbac.authorization.k8s.io/v1 +kind: Role +metadata: + creationTimestamp: null + name: ack-kafka-writer +rules: +- apiGroups: + - kafka.services.k8s.aws + resources: + - clusters + - configurations + verbs: + - create + - delete + - get + - list + - patch + - update + - watch +- apiGroups: + - kafka.services.k8s.aws + resources: + - clusters + - configurations + verbs: + - get + - patch + - update diff --git a/operators/ack-kafka-controller/1.0.2/manifests/kafka.services.k8s.aws_clusters.yaml b/operators/ack-kafka-controller/1.0.2/manifests/kafka.services.k8s.aws_clusters.yaml new file mode 100644 index 00000000000..a29a8a2ca94 --- /dev/null +++ b/operators/ack-kafka-controller/1.0.2/manifests/kafka.services.k8s.aws_clusters.yaml @@ -0,0 +1,383 @@ +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.16.2 + creationTimestamp: null + name: clusters.kafka.services.k8s.aws +spec: + group: kafka.services.k8s.aws + names: + kind: Cluster + listKind: ClusterList + plural: clusters + singular: cluster + scope: Namespaced + versions: + - name: v1alpha1 + schema: + openAPIV3Schema: + description: Cluster is the Schema for the Clusters 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: |- + ClusterSpec defines the desired state of Cluster. + + Returns information about a cluster of either the provisioned or the serverless + type. + properties: + associatedSCRAMSecretRefs: + items: + description: "AWSResourceReferenceWrapper provides a wrapper around + *AWSResourceReference\ntype to provide more user friendly syntax + for references using 'from' field\nEx:\nAPIIDRef:\n\n\tfrom:\n\t + \ name: my-api" + properties: + from: + description: |- + AWSResourceReference provides all the values necessary to reference another + k8s resource for finding the identifier(Id/ARN/Name) + properties: + name: + type: string + namespace: + type: string + type: object + type: object + type: array + associatedSCRAMSecrets: + items: + type: string + type: array + brokerNodeGroupInfo: + description: Information about the brokers. + properties: + brokerAZDistribution: + description: |- + The distribution of broker nodes across Availability Zones. By default, broker + nodes are distributed among the Availability Zones of your Region. Currently, + the only supported value is DEFAULT. You can either specify this value explicitly + or leave it out. + type: string + clientSubnets: + items: + type: string + type: array + connectivityInfo: + description: Information about the broker access configuration. + properties: + publicAccess: + description: Broker public access control. + properties: + type: + type: string + type: object + type: object + instanceType: + type: string + securityGroups: + items: + type: string + type: array + storageInfo: + description: Contains information about storage volumes attached + to MSK broker nodes. + properties: + ebsStorageInfo: + description: |- + Contains information about the EBS storage volumes attached to Apache Kafka + broker nodes. + properties: + provisionedThroughput: + description: |- + Contains information about provisioned throughput for EBS storage volumes + attached to kafka broker nodes. + properties: + enabled: + type: boolean + volumeThroughput: + format: int64 + type: integer + type: object + volumeSize: + format: int64 + type: integer + type: object + type: object + type: object + clientAuthentication: + description: Includes all client authentication related information. + properties: + sasl: + properties: + iam: + properties: + enabled: + type: boolean + type: object + scram: + properties: + enabled: + type: boolean + type: object + type: object + tls: + description: Details for client authentication using TLS. + properties: + certificateAuthorityARNList: + items: + type: string + type: array + enabled: + type: boolean + type: object + unauthenticated: + description: Contains information about unauthenticated traffic + to the cluster. + properties: + enabled: + type: boolean + type: object + type: object + configurationInfo: + description: Represents the configuration that you want MSK to use + for the cluster. + properties: + arn: + type: string + revision: + format: int64 + type: integer + type: object + encryptionInfo: + description: Includes all encryption-related information. + properties: + encryptionAtRest: + description: The data-volume encryption details. + properties: + dataVolumeKMSKeyID: + type: string + type: object + encryptionInTransit: + description: The settings for encrypting data in transit. + properties: + clientBroker: + description: Client-broker encryption in transit setting. + type: string + inCluster: + type: boolean + type: object + type: object + enhancedMonitoring: + description: |- + Specifies the level of monitoring for the MSK cluster. The possible values + are DEFAULT, PER_BROKER, PER_TOPIC_PER_BROKER, and PER_TOPIC_PER_PARTITION. + type: string + kafkaVersion: + description: The version of Apache Kafka. + type: string + loggingInfo: + description: LoggingInfo details. + properties: + brokerLogs: + description: The broker logs configuration for this MSK cluster. + properties: + cloudWatchLogs: + description: Details of the CloudWatch Logs destination for + broker logs. + properties: + enabled: + type: boolean + logGroup: + type: string + type: object + firehose: + description: Firehose details for BrokerLogs. + properties: + deliveryStream: + type: string + enabled: + type: boolean + type: object + s3: + description: The details of the Amazon S3 destination for + broker logs. + properties: + bucket: + type: string + enabled: + type: boolean + prefix: + type: string + type: object + type: object + type: object + name: + description: The name of the cluster. + type: string + numberOfBrokerNodes: + description: The number of Apache Kafka broker nodes in the Amazon + MSK cluster. + format: int64 + type: integer + openMonitoring: + description: The settings for open monitoring. + properties: + prometheus: + description: Prometheus settings. + properties: + jmxExporter: + description: Indicates whether you want to enable or disable + the JMX Exporter. + properties: + enabledInBroker: + type: boolean + type: object + nodeExporter: + description: Indicates whether you want to enable or disable + the Node Exporter. + properties: + enabledInBroker: + type: boolean + type: object + type: object + type: object + storageMode: + description: This controls storage mode for supported storage tiers. + type: string + tags: + additionalProperties: + type: string + description: Create tags when creating the cluster. + type: object + required: + - brokerNodeGroupInfo + - kafkaVersion + - name + - numberOfBrokerNodes + type: object + status: + description: ClusterStatus defines the observed state of Cluster + properties: + ackResourceMetadata: + description: |- + All CRs managed by ACK have a common `Status.ACKResourceMetadata` member + that is used to contain resource sync state, account ownership, + constructed ARN for the resource + properties: + arn: + description: |- + ARN is the Amazon Resource Name for the resource. This is a + globally-unique identifier and is set only by the ACK service controller + once the controller has orchestrated the creation of the resource OR + when it has verified that an "adopted" resource (a resource where the + ARN annotation was set by the Kubernetes user on the CR) exists and + matches the supplied CR's Spec field values. + https://github.com/aws/aws-controllers-k8s/issues/270 + type: string + ownerAccountID: + description: |- + OwnerAccountID is the AWS Account ID of the account that owns the + backend AWS service API resource. + type: string + region: + description: Region is the AWS region in which the resource exists + or will exist. + type: string + required: + - ownerAccountID + - region + type: object + bootstrapBrokerString: + type: string + bootstrapBrokerStringPublicSASLIAM: + type: string + bootstrapBrokerStringPublicSASLSCRAM: + type: string + bootstrapBrokerStringPublicTLS: + type: string + bootstrapBrokerStringSASLIAM: + type: string + bootstrapBrokerStringSASLSCRAM: + type: string + bootstrapBrokerStringTLS: + type: string + bootstrapBrokerStringVPCConnectivitySASLIAM: + type: string + bootstrapBrokerStringVPCConnectivitySASLSCRAM: + type: string + bootstrapBrokerStringVPCConnectivityTLS: + type: string + conditions: + description: |- + All CRS managed by ACK have a common `Status.Conditions` member that + contains a collection of `ackv1alpha1.Condition` objects that describe + the various terminal states of the CR and its backend AWS service API + resource + items: + description: |- + Condition is the common struct used by all CRDs managed by ACK service + controllers to indicate terminal states of the CR and its backend AWS + service API resource + properties: + lastTransitionTime: + description: Last time the condition transitioned from one status + to another. + format: date-time + type: string + message: + description: A human readable message indicating details about + the transition. + type: string + reason: + description: The reason for the condition's last transition. + type: string + status: + description: Status of the condition, one of True, False, Unknown. + type: string + type: + description: Type is the type of the Condition + type: string + required: + - status + - type + type: object + type: array + state: + description: |- + The state of the cluster. The possible states are ACTIVE, CREATING, DELETING, + FAILED, HEALING, MAINTENANCE, REBOOTING_BROKER, and UPDATING. + type: string + zookeeperConnectString: + type: string + zookeeperConnectStringTLS: + type: string + type: object + type: object + served: true + storage: true + subresources: + status: {} +status: + acceptedNames: + kind: "" + plural: "" + conditions: null + storedVersions: null diff --git a/operators/ack-kafka-controller/1.0.2/manifests/kafka.services.k8s.aws_configurations.yaml b/operators/ack-kafka-controller/1.0.2/manifests/kafka.services.k8s.aws_configurations.yaml new file mode 100644 index 00000000000..365f928060e --- /dev/null +++ b/operators/ack-kafka-controller/1.0.2/manifests/kafka.services.k8s.aws_configurations.yaml @@ -0,0 +1,165 @@ +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.16.2 + creationTimestamp: null + name: configurations.kafka.services.k8s.aws +spec: + group: kafka.services.k8s.aws + names: + kind: Configuration + listKind: ConfigurationList + plural: configurations + singular: configuration + scope: Namespaced + versions: + - name: v1alpha1 + schema: + openAPIV3Schema: + description: Configuration is the Schema for the Configurations 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: |- + ConfigurationSpec defines the desired state of Configuration. + + Represents an MSK Configuration. + properties: + description: + description: The description of the configuration. + type: string + kafkaVersions: + description: The versions of Apache Kafka with which you can use this + MSK configuration. + items: + type: string + type: array + name: + description: |- + The name of the configuration. Configuration names are strings that match + the regex "^[0-9A-Za-z-]+$". + type: string + serverProperties: + format: byte + type: string + required: + - name + - serverProperties + type: object + status: + description: ConfigurationStatus defines the observed state of Configuration + properties: + ackResourceMetadata: + description: |- + All CRs managed by ACK have a common `Status.ACKResourceMetadata` member + that is used to contain resource sync state, account ownership, + constructed ARN for the resource + properties: + arn: + description: |- + ARN is the Amazon Resource Name for the resource. This is a + globally-unique identifier and is set only by the ACK service controller + once the controller has orchestrated the creation of the resource OR + when it has verified that an "adopted" resource (a resource where the + ARN annotation was set by the Kubernetes user on the CR) exists and + matches the supplied CR's Spec field values. + https://github.com/aws/aws-controllers-k8s/issues/270 + type: string + ownerAccountID: + description: |- + OwnerAccountID is the AWS Account ID of the account that owns the + backend AWS service API resource. + type: string + region: + description: Region is the AWS region in which the resource exists + or will exist. + type: string + required: + - ownerAccountID + - region + type: object + conditions: + description: |- + All CRS managed by ACK have a common `Status.Conditions` member that + contains a collection of `ackv1alpha1.Condition` objects that describe + the various terminal states of the CR and its backend AWS service API + resource + items: + description: |- + Condition is the common struct used by all CRDs managed by ACK service + controllers to indicate terminal states of the CR and its backend AWS + service API resource + properties: + lastTransitionTime: + description: Last time the condition transitioned from one status + to another. + format: date-time + type: string + message: + description: A human readable message indicating details about + the transition. + type: string + reason: + description: The reason for the condition's last transition. + type: string + status: + description: Status of the condition, one of True, False, Unknown. + type: string + type: + description: Type is the type of the Condition + type: string + required: + - status + - type + type: object + type: array + creationTime: + description: The time when the configuration was created. + format: date-time + type: string + latestRevision: + description: Latest revision of the configuration. + properties: + creationTime: + format: date-time + type: string + description: + type: string + revision: + format: int64 + type: integer + type: object + state: + description: |- + The state of the configuration. The possible states are ACTIVE, DELETING + and DELETE_FAILED. + type: string + type: object + type: object + served: true + storage: true + subresources: + status: {} +status: + acceptedNames: + kind: "" + plural: "" + conditions: null + storedVersions: null diff --git a/operators/ack-kafka-controller/1.0.2/metadata/annotations.yaml b/operators/ack-kafka-controller/1.0.2/metadata/annotations.yaml new file mode 100644 index 00000000000..018ed71b12f --- /dev/null +++ b/operators/ack-kafka-controller/1.0.2/metadata/annotations.yaml @@ -0,0 +1,15 @@ +annotations: + # Core bundle annotations. + operators.operatorframework.io.bundle.mediatype.v1: registry+v1 + operators.operatorframework.io.bundle.manifests.v1: manifests/ + operators.operatorframework.io.bundle.metadata.v1: metadata/ + operators.operatorframework.io.bundle.package.v1: ack-kafka-controller + operators.operatorframework.io.bundle.channels.v1: alpha + operators.operatorframework.io.bundle.channel.default.v1: alpha + operators.operatorframework.io.metrics.builder: operator-sdk-v1.28.0 + operators.operatorframework.io.metrics.mediatype.v1: metrics+v1 + operators.operatorframework.io.metrics.project_layout: unknown + + # Annotations for testing. + operators.operatorframework.io.test.mediatype.v1: scorecard+v1 + operators.operatorframework.io.test.config.v1: tests/scorecard/ diff --git a/operators/ack-kafka-controller/1.0.2/tests/scorecard/config.yaml b/operators/ack-kafka-controller/1.0.2/tests/scorecard/config.yaml new file mode 100644 index 00000000000..382ddefd156 --- /dev/null +++ b/operators/ack-kafka-controller/1.0.2/tests/scorecard/config.yaml @@ -0,0 +1,50 @@ +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.7.1 + 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.7.1 + 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.7.1 + 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.7.1 + labels: + suite: olm + test: olm-spec-descriptors-test + storage: + spec: + mountPath: {} +storage: + spec: + mountPath: {}