From af13ed50479977f0fdf80c83012b4f5d5c872a6f Mon Sep 17 00:00:00 2001 From: whg517 Date: Fri, 6 Sep 2024 19:35:04 +0800 Subject: [PATCH] feat: add hive spark superset catalog and update exist (#24) --- catalog-template.yaml | 8 + catalog/commons-operator/index.yaml | 164 +++++++++----- catalog/hive-operator/index.yaml | 221 +++++++++++++++++++ catalog/secret-operator/index.yaml | 4 +- catalog/spark-k8s-operator/index.yaml | 298 ++++++++++++++++++++++++++ catalog/superset-operator/index.yaml | 212 ++++++++++++++++++ catalog/zookeeper-operator/index.yaml | 6 +- 7 files changed, 851 insertions(+), 62 deletions(-) create mode 100644 catalog/hive-operator/index.yaml create mode 100644 catalog/spark-k8s-operator/index.yaml create mode 100644 catalog/superset-operator/index.yaml diff --git a/catalog-template.yaml b/catalog-template.yaml index 8b142d4..e24ddba 100644 --- a/catalog-template.yaml +++ b/catalog-template.yaml @@ -10,3 +10,11 @@ references: image: quay.io/zncdatadev/zookeeper-operator-catalog:latest - name: hdfs-operator image: quay.io/zncdatadev/hdfs-operator-catalog:latest +- name: zookeeper-operator + image: quay.io/zncdatadev/zookeeper-operator-catalog:latest +- name: spark-k8s-operator + image: quay.io/zncdatadev/spark-k8s-operator-catalog:latest +- name: hive-operator + image: quay.io/zncdatadev/hive-operator-catalog:latest +- name: superset-operator + image: quay.io/zncdatadev/superset-operator-catalog:latest diff --git a/catalog/commons-operator/index.yaml b/catalog/commons-operator/index.yaml index e3dff02..013e30c 100644 --- a/catalog/commons-operator/index.yaml +++ b/catalog/commons-operator/index.yaml @@ -115,16 +115,6 @@ properties: group: authentication.zncdata.dev kind: AuthenticationClass version: v1alpha1 -- type: olm.gvk - value: - group: database.zncdata.dev - kind: Database - version: v1alpha1 -- type: olm.gvk - value: - group: database.zncdata.dev - kind: DatabaseConnection - version: v1alpha1 - type: olm.gvk value: group: s3.zncdata.dev @@ -157,37 +147,81 @@ properties: }, "name": "authenticationclass-sample" }, - "spec": null - }, - { - "apiVersion": "database.zncdata.dev/v1alpha1", - "kind": "Database", - "metadata": { - "labels": { - "app.kubernetes.io/created-by": "commons-operator", - "app.kubernetes.io/instance": "database-sample", - "app.kubernetes.io/managed-by": "kustomize", - "app.kubernetes.io/name": "database", - "app.kubernetes.io/part-of": "commons-operator" - }, - "name": "database-sample" - }, - "spec": null - }, - { - "apiVersion": "database.zncdata.dev/v1alpha1", - "kind": "DatabaseConnection", - "metadata": { - "labels": { - "app.kubernetes.io/created-by": "commons-operator", - "app.kubernetes.io/instance": "databaseconnection-sample", - "app.kubernetes.io/managed-by": "kustomize", - "app.kubernetes.io/name": "databaseconnection", - "app.kubernetes.io/part-of": "commons-operator" - }, - "name": "databaseconnection-sample" - }, - "spec": null + "spec": { + "provider": { + "ldap": { + "bindCredentials": { + "scope": { + "node": false, + "pod": true, + "services": [ + "foo" + ] + }, + "secretClass": "ldap-credentials" + }, + "hostname": "ldap.example.com", + "ldapFieldNames": { + "email": "mail", + "givenName": "cn", + "group": "cn", + "surname": "cn", + "uid": "cn" + }, + "port": 389, + "searchBase": "ou=people,dc=example,dc=com", + "searchFilter": "(uid={username})", + "tls": { + "verification": { + "mutual": { + "certSecretClass": "tls" + }, + "none": {}, + "server": { + "caCert": { + "secretClass": "tls", + "webPIK": {} + } + } + } + } + }, + "oidc": { + "hostname": "keycloak.example.com", + "port": 8080, + "principalClaim": "preferred_username", + "provisioner": "keycloak", + "rootPath": "/auth", + "scopes": [ + "openid", + "email", + "profile" + ], + "tls": { + "verification": { + "mutual": { + "certSecretClass": "tls" + }, + "none": {}, + "server": { + "caCert": { + "secretClass": "tls", + "webPIK": {} + } + } + } + } + }, + "static": { + "userCredentialsSecret": { + "name": "static-credentials" + } + }, + "tls": { + "clientCertSecretClass": "tls" + } + } + } }, { "apiVersion": "s3.zncdata.dev/v1alpha1", @@ -202,7 +236,10 @@ properties: }, "name": "s3bucket-sample" }, - "spec": null + "spec": { + "bucketName": "mybucket", + "connection": "s3connection-sample" + } }, { "apiVersion": "s3.zncdata.dev/v1alpha1", @@ -217,12 +254,40 @@ properties: }, "name": "s3connection-sample" }, - "spec": null + "spec": { + "credentials": { + "host": "s3.example.com", + "port": 443, + "region": "us-west-1", + "scope": { + "node": false, + "pod": true, + "services": [ + "foo" + ] + }, + "secretClass": "s3-credentials", + "tls": { + "verification": { + "mutual": { + "certSecretClass": "tls" + }, + "none": {}, + "server": { + "caCert": { + "secretClass": "tls", + "webPIK": {} + } + } + } + } + } + } } ] capabilities: Basic Install categories: Big Data - createdAt: "2024-08-29T12:19:51Z" + createdAt: "2024-09-06T10:36:20Z" operators.operatorframework.io/builder: operator-sdk-v1.35.0 operators.operatorframework.io/project_layout: go.kubebuilder.io/v4 apiServiceDefinitions: {} @@ -234,17 +299,6 @@ properties: kind: AuthenticationClass name: authenticationclasses.authentication.zncdata.dev version: v1alpha1 - - description: DatabaseConnection is the Schema for the databaseconnections - API - displayName: Database Connection - kind: DatabaseConnection - name: databaseconnections.database.zncdata.dev - version: v1alpha1 - - description: Database is the Schema for the databases API - displayName: Database - kind: Database - name: databases.database.zncdata.dev - version: v1alpha1 - description: S3Bucket is the Schema for the s3buckets API displayName: S3 Bucket kind: S3Bucket diff --git a/catalog/hive-operator/index.yaml b/catalog/hive-operator/index.yaml new file mode 100644 index 0000000..48bbd7b --- /dev/null +++ b/catalog/hive-operator/index.yaml @@ -0,0 +1,221 @@ +--- +defaultChannel: stable +description: |+ + # hive-operator + + // TODO(user): Add simple overview of use/purpose + + ## Description + + // TODO(user): An in-depth paragraph about your project and overview of use + + ## Getting Started + + You’ll need a Kubernetes cluster to run against. You can use [KIND](https://sigs.k8s.io/kind) to get a local cluster for testing, or run against a remote cluster. + **Note:** Your controller will automatically use the current context in your kubeconfig file (i.e. whatever cluster `kubectl cluster-info` shows). + + ### Running on the cluster + + 1. Install Instances of Custom Resources: + + ```sh + kubectl apply -f config/samples/ + ``` + + 2. Build and push your image to the location specified by `IMG`: + + ```sh + make docker-build docker-push IMG=/hive-operator:tag + ``` + + 3. Deploy the controller to the cluster with the image specified by `IMG`: + + ```sh + make deploy IMG=/hive-operator:tag + ``` + + + ### Uninstall CRDs + + To delete the CRDs from the cluster: + + ```sh + make uninstall + ``` + + ### Undeploy controller + + UnDeploy the controller from the cluster: + + ```sh + make undeploy + ``` + + ## Contributing + + // TODO(user): Add detailed information on how you would like others to contribute to this project + + ### How it works + + This project aims to follow the Kubernetes [Operator pattern](https://kubernetes.io/docs/concepts/extend-kubernetes/operator/). + + It uses [Controllers](https://kubernetes.io/docs/concepts/architecture/controller/), + which provide a reconcile function responsible for synchronizing resources until the desired state is reached on the cluster. + + ### Test It Out + + + 1. Install the CRDs into the cluster: + + ```sh + make install + ``` + + 2. Run your controller (this will run in the foreground, so switch to a new terminal if you want to leave it running): + + ```sh + make run + ``` + + + **NOTE:** You can also run this in one step by running: `make install run` + + ### Modifying the API definitions + + If you are editing the API definitions, generate the manifests such as CRs or CRDs using: + + ```sh + make manifests + ``` + + **NOTE:** Run `make --help` for more information on all potential `make` targets + + More information can be found via the [Kubebuilder Documentation](https://book.kubebuilder.io/introduction.html) + + ## License + + Copyright 2023 zncdatadev. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + +icon: + base64data: PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGhlaWdodD0iOTAwIiB3aWR0aD0iMWUzIiB2ZXJzaW9uPSIxLjEiIHhtbG5zOmNjPSJodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9ucyMiIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIgdmlld0JveD0iMCAwIDEwMDAgOTAwIj4KIDxnIHN0cm9rZT0iI2ZkZWUyMSIgc3Ryb2tlLXdpZHRoPSI1LjEyODYiIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0uNTMyNjggNjYuOCkiIGZpbGwtcnVsZT0iZXZlbm9kZCI+CiAgPHBhdGggZD0ibTU5Ny4zMyA2MzcuNzl2MTkyLjg1aDQ3LjM0NnYtODguNjMybDkuNzY3NCAwLjE4Mjczdjg4LjQ1aDQ3Ljg4MXYtMTkyLjg1aC00Ny44ODF2NzEuNTUyaC05Ljc2NzR2LTcxLjU1MnoiLz4KICA8cGF0aCBkPSJtNzYxLjI1IDYzNy43OWgtNDYuMTE2djE5Mi44NWg0Ni4xMTZ6Ii8+CiAgPHBhdGggZD0ibTc2OC44IDYzNy43OSAzNi40MjkgMTkyLjg1aDU0Ljk4NGwzNi40MjktMTkyLjg1aC00OC45NTFsLTEyLjA2NyA4Mi41MTdjLTEuMDA1NSAzLjE2MDUtNC40MDIgMy4xNjA1LTUuMDA4OSAwbC0xMi4wNi04Mi41MnoiLz4KICA8cGF0aCBkPSJtOTk3Ljk3IDYzNy43OWgtOTEuNTM4djE5Mi44NWg5MS41Mzh2LTUwLjU2OWwtNTAuODk4LTAuNDMzNTcgMC4wMDAxNy0yMS42NzloMjQuMjQ4di01MC4yMDRoLTI0LjI0OGwtMC4wMDAxNy0xOS4zOTdoNTAuODk4eiIvPgogPC9nPgogPGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLS41MzI2OCA2Ni44KSI+CiAgPHBhdGggZD0ibTUwMy42NiA1Mi45NTJjLTcuNzEtMjEuMTE1LTI3Mi45Mi0xMjQuMjItMjc2LjMxLTExMi45LTQ4LjcgMTIuNjk1LTY4LjUyIDY4LjgyNi0xMDIuMDIgMTA0LjM4bC03NC4zOTMtNC4yNjFjLTMyLjc3MSA0Mi4xNDItNDkuOTY3IDg1LjE5OS0zOC4yNTggMTI5Ljk1IDQyLjAwMiA1Ni45MDYgOTAuNzYgMTA1LjMzIDEyMS4xNSAxNzYuODEgMi40MDIgMzMuNjkyIDE0NS44MiAzLjUzMyAxNzYuNTYtMy4xMzY0LTQxLjk5MiAzMC4wNTktNzguNTYxIDc2LjY1MS02Mi44NDYgMjEwLjg0IDE0LjM0NiA2My4wMTQgMjQuMTU5IDEzMy4zNyAxNTEuNCAyMDQuNjQgMTYuNzUgOS4zODE2IDUxLjQwNyAyMC4yMDcgNzIuODM4IDI4LjA5OCAyMC40OTUgOS40MDEyIDQ0LjQ2MSAxMy4yNjQgMTEyLjA3LTcuNDEyMyAzOS4xMjQtMTYuODYzIDgxLjM2NS0yNy4wMjIgMTE5LjY1LTQzLjg0NGwtNDYuMDE3IDIuMTU5NWMtNjMuMzY5IDEuMzc4Ny0xMTIuMjkgNi4xMDU3LTEyNy4zOC0xMS42bC01OC4zMi0xMDAuNjggMzQtNjYuMDRjNDcuMDU2IDQuODI2MyA2Mi42NzUgNDIuOTg2IDEwNC4xNSA1Ny41MThsNDguODg1LTM2LjIxNWMxNDEuOTkgODMuODE2IDE5OC40OC01My4xMiAyMTQuNjctMTU5Ljc3LTEuNzI3Ni00My4zOTItOTMuOTUyIDEzLjYxMS04OC4zNjItNi42Nzg5IDIuMTY2Mi00Ni42NDQtMzUuODU0LTEwNy42Ny02MC40Mi0xNTUuMjJsMjguNDMtMTEwLjAxYzEyLjktMTEuNDktNTkuNzItMTMzLjg2LTExOS4wMi0xNDkuMTItNTIuMDMtMTMuMzkxLTEzMC40NiA1Mi40OTItMTMwLjQ2IDUyLjQ5MnoiIGZpbGwtcnVsZT0iZXZlbm9kZCIgZmlsbD0iI2ZkZWUyMSIvPgogPC9nPgogPGcgZmlsbC1ydWxlPSJldmVub2RkIj4KICA8ZyBmaWxsPSIjYzhjMDM3IiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtLjUzMjY4IDY2LjgpIj4KICAgPHBhdGggZD0ibTczNi45MiAyODYuNzVjMC41MDkyNyAxMS44MTYgMC40NTIxNiAyNi4xODcgMS41OTQxIDM1LjE1LTAuMTk2NjMgNi44MzgyLTUuMzIyNyA3LjA4ODgtOS41NjQ1IDguNTIxMmwyNy42MzEgMTAuMTE5YzUuNDg1NSA5LjIzMTMgOS44OTQxIDE4LjQ2MyAxNC4zNDcgMjcuNjk0IDUuMTY1MiAyMi43MDggMS4zMTA1IDIzLjM1Ny0yLjEyNTQgMjUuMDMxLTEwLjAyNyAwLjEwMjEyLTIwLjAyNSAwLjEyMDg4LTI5LjM1OC0xLjg2NCA0LjE4MSAyLjIwNjYgNS4xMDA2IDMuODE1MiA1LjU0MyA2LjY0MiAwLjgxNTU2IDUuMjExNy0yLjU0MDcgMTIuMzI5LTguMDY2OSAxOS4xODggOC4xNzE4IDQuNTM0IDIzLjA3MSA4Ljk2OTggMzQuMTQgMTMuMTgxbDEyLjYyLTI4LjA5M2MtNS43MTUxLTQxLjI3MS0yMy4wNDUtNzkuMzA5LTQ2Ljc2LTExNS41N3oiLz4KICAgPHBhdGggZD0ibTc4OC40OSA0MjUuMThjMTUuMzI0IDYuMzg3MiAzNi40OTUgNC41MTQ2IDY1Ljg0OC0xMC42MTMgNC4zNjUzLTMuMTA0MyA4LjQzMTEtMS4yNDg1IDAuNjE5MzcgMy44NTc3LTM4LjQ5OSAzNC41NDctNTYuOTI3IDE3LjI2NS02Ni40NjcgNi43NTUyeiIvPgogICA8cGF0aCBkPSJtODU3LjI4IDQxMC4wNGM0LjU1MjMgOC43MTY1IDEuNzk0MiAxNS44MDUgMC4yNjU2OCAyMy4xNjctNC43NTM0IDM3LjQ0OS0xNi40MjMgNjcuMDU2LTM5LjMyMSA5Ny45OTQtNzQuNDc4IDExOS43NC0xNDkuNjcgNDQuODE3LTIwOS42Mi0zLjk0NTVsLTI0Ljc5OCA2Mi4xMzdjLTEuMzE2MiA1LjQ0NjQtNi43OTAzIDkuNjg4IDMxLjkzNyAyNi43MzhsMzkuNDUyLTI3Ljg2N2MxNTAuNDYgMTE0LjQ4IDI1Ny4wOC0xNjAuMjQgMjAyLjA4LTE3OC4yMnoiLz4KICAgPHBhdGggZD0ibTYyNi43NSA1MTcuMDRjLTEwLjE1MSAwLjcyNDQyLTQwLjM2MSAxMC45OTctNDEuNzA2IDE2Ljk0NmwxMy45MDItMjAuNzEyeiIvPgogICA8cGF0aCBkPSJtNjA3LjAxIDM5MC4wN2MxLjg1OTggMCAxMC43ODggMi4zOTcxIDkuODMwMiAxLjg2NC0xLjM2OTgtMC43NjI1Ni0wLjE1MjcyIDEyLjUxOSAyLjY1NjggMTkuNDM5bC0xMC44OTMgMjMuN2MyMC44NjUtMjQuMDYzIDUzLjg1OC0yMi40NjIgODQuNDg2LTI1LjU2NGwtMTQuNjEyLTkuMDUzN2MyLjUzODQtOC40NjY0LTAuNDUwNTktMTUuMTY1LTEuODU5OC0yMi4zNjh6Ii8+CiAgIDxwYXRoIGQ9Im02NTguMjggMzE4LjcxYy0yMi4zODcgNi44NjMyLTQzLjgxNiAxOC4wNzUtNTguMjAzIDQxLjk3NiAxMC45NzYtMzkuMzk1IDEzLjIxMy0zNy44OTkgMTYuNzU3LTM5Ljg0NiAxNS4zNTEtNi44NjUxIDI3LjkyMi0yLjU4NjQgNDEuNDQ2LTIuMTMwM3oiLz4KICA8L2c+CiAgPGcgZmlsbD0iI2ZjZjZhMCIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLS41MzI2OCA2Ni44KSI+CiAgIDxwYXRoIGQ9Im01MzguNzMgNzgwLjQ1Yy0yNy4wNyAyOS44Ny04Ny40Ny0yLjI2LTEzNy42My0xOC42NC0xMjcuNDYtODEuMDUtMTUyLjM2LTE1Ny4zNS0xNTQuMDktMjMyLjItNi41NTM1LTEwNy4yMiAyNi4zNy0xNjkuNTIgNjguMDE0LTE4NC4yNy0yNy41NjEgNTMuMTI5LTQwLjQxIDE0OC41LTI3LjYzMSAyMTkuNDIgMTAuMzE1IDM5LjQ1NSAxMC41MjkgMTA2IDc2LjU0NSAxNDEuNjIgMzIuMzI3IDE4LjE5OSAyMy41NzEgMzIuMzY4IDQ1LjQzMSA0OS40MTMgMjMuOTU1IDE4LjY3OSA5MC43NDcgMzYuNDM3IDEyOS4zNiAyNC42NTh6Ii8+CiAgIDxwYXRoIGQ9Im01NzkuMTcgMjg0Ljk0Yy00NS44MzEtNjQuOTkxLTExMC4yOS04OS4zODctMTgyLjk4LTkyLjA1MyAxNC41NjgtNC43NDg4IDI5LjEzNi03LjIyMTYgNDMuNzA0LTE0LjI0NiAzLjU2NzUtMy43NDg0IDIuNDAxMi0xMC4zNDQgMS4wNjI3LTE3LjA0Mi02OS45Ny0xOC4yNy0xMTQuMTMtNDAuODUtMTcwLjAzLTYxLjc4MWwxNTAuOTEgMzYuMjE1YzEwMS45MSAzLjg3MjQgOTMuMTU4IDI5LjAzMiAxNTcuMzQgMTQ4LjkxeiIvPgogICA8cGF0aCBkPSJtNjI4LjI0IDI1My42Yy0zMy44Ny00OC4zNS02Ni43Mi0xMDcuMDMtMTExLjMxLTE0NC4zNS0xMDcuNjQtNDguNTg0LTIxNC4xMi04NC42NjYtMzM4LjkxLTExNy41bDM5LjgyNy01MS4yMTZjMTMyLjQyIDMwLjIyNyAyNTYuOCA4MC44MDggMzY4LjIxIDE2NC4xOSAxOC44NDkgNDcuNjYgMzEuNDE5IDk1LjM4MyA0Mi4xNzMgMTQ4Ljg3eiIvPgogICA8cGF0aCBkPSJtNjk2LjUyIDE2OC4xNnMtMTguOTg4LTQyLjU5OS0yOC4yMzMtNTguODY2Yy0yMS40NDYtMjMuNzY2LTMyLjI5LTY4LjA1NC03Ni4yMTMtODguOTIyIDEzLjg5MiAzLjc1MTUgMjMuMzk5LTAuNzE4MyA1MS43NTkgMjQuOTkybDQ0LjY2OSA4NC43MzR6Ii8+CiAgIDxwYXRoIGQ9Im03MjAuMTQgMjQxLjk2YzQuMzc5Mi0zNi45MDggMTIuNjk1LTk2LjExIDMuMTUxNy0xMTkuNS0yNi41NS0zNS42MjQtNTMuMjktNzIuNDQ2LTgwLjA0LTEwNi42My00LjQzLTQuMTIzLTcuNjItOS43MTg2LTExLjExLTE0LjA4NCAzNy42MSA5Ljc0NCA3Ni44NiAzNS44OTQgMTI5Ljc5IDEzOS4xM3oiLz4KICA8L2c+CiAgPGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLS41MzI2OCA2Ni44KSI+CiAgIDxwYXRoIGQ9Im01NjIuMDIgMjQ2LjMyYy0xNC45OC0xMS43OS0yOC4zMy01My40OS01MS4wMy02Mi4xNi0yMS4wMTEtMS43NTc3LTI4LjcxNS04LjM2ODItNTYuMzQ0LTIuNzM4NiAxMC4wMjEtNS4wMjEzIDE5LjQ4Mi0xMS40NDYgMzAuMTM0LTE0Ljg4NSA3LjIxNTItMS43MDMyIDEzLjk4MyAwLjE4MzgyIDIwLjg2NyAxLjEzMzQgMS42OTk5LTAuODAzNTcgMi44MTM5LTEuODAyOSAyLjM5ODMtMy4zMTMzLTI3LjgxMi0xNy4xODctODQuODY2LTE3LjQzMi0xMjMuMzgtMjcuMjQzIDQ0LjY5OSAxLjQ5NjIgOTQuMTU2LTAuOTgxNSAxMjcuNzUgOS43OTEyIDI3LjAxMyAyMy45NzMgMzUuNzg4IDY5LjExOSA0OS42MDUgOTkuNDE1eiIvPgogICA8cGF0aCBkPSJtNjQzLjkzIDQ1LjIyN2M2LjIwMTEgMC41NjMzNiAzOS41NzQgNTMuMzUzIDQxLjE0MiA2Mi4xMzcgMi43NzUxIDE5LjIwMiA5LjYxOTYgNDAuNzI4IDExLjQ2IDYwLjgxOS01LjQ5NjgtMTkuMjY5LTExLjQ4Ni0zOC41MzctMTguOTc0LTU3LjgwNi0yLjE4OTgtNS4zMDYyLTcuNzI0MS0xNy4zMDItMjMuMTA3LTM0LjI2OS03LjE2MjgtMTEuOTU5LTguNzA5Mi0yMS4zNTktMTAuNTItMzAuODh6Ii8+CiAgIDxwYXRoIGQ9Im03NTcuMDIgMzMyLjc1aC0xNC4yNzhsMTUuNzgxIDQuMTQyNHoiLz4KICAgPHBhdGggZD0ibTY1OS42IDMxOC40OWMtMTQuMzU4LTEuNzY1MS0yOS4wOTEtMS45OTkxLTQzLjQ0OCAxLjE1NjUtNS44NTIyIDcuODYwOC02LjI1NTQgMTUuODU2LTguODEzIDIzLjI0NSAxNy40NTQtMTkuMjM2IDI0LjM4LTIwLjQxMiA1Mi4yNjEtMjQuNDAxeiIvPgogICA8cGF0aCBkPSJtODU1LjQyIDQxNy43N2MtNy45OSA2LjM3NzEtOC43ODg0IDEyLjM3OS0zMi40MTMgMTkuNTcyLTE3LjIyOCA0LjA3NC0yNi45NjEtMi44MzE0LTM1LjA3LTEyLjExNiAxMi4yOTQgMy41MjE3IDE0LjI1OSAxMi44MSA0Ny4yMjUgMi4zOTY2eiIvPgogICA8cGF0aCBkPSJtNzgzLjgyIDQyMS43NmMtNS43NTA0IDE1LjgxMi0xMS45NDkgMzEuNzkxLTE4LjE5OSA0Ni42LTE0Ljg4MyAxNy40NTQtOC41NDAyIDcuNTA3OS0zMC44MTkgMzQuNjE3IDcuMTI4NS0xMC45OTggMTYuNC0yMS41NjYgMjEuMjU0LTMzLjAyIDMuNDA5MS03LjU0MjIgNy42NTMyLTE1LjU0MyA5LjUzMjMtMjIuMjQ0LTUuOTA3NC0yLjk1LTE3Ljk5OS0zLjE4MzQtMTkuNjM5LTIuMTI0Ny0xOS44MDggMTEuNjgzLTIzLjM4MiAyNC4wNDctMzUuMDU5IDM2LjA4NiA4LjQ2MzctMTMuNTMgMTUuNjkzLTI4LjI5OCAyNS41MDUtNDAuNDc2IDEuMTE4MS0xLjU4MDYgOC4zODI2LTEuODg2MyAxMi44NDktMi44MTg5LTYuOTQwNC0xLjE5MDgtMTkuNzg2LTMuNjg0OC0yMC44Mi0zLjU3Mi0xMi45MjIgMy4xMDUzLTIwLjE2MyAxNC4zNjEtMjkuNzU2IDIxLjgzNiA2Ljk5MzktMTAuMDk4IDEzLjQzNi0yMC42MTIgMjIuMzE3LTI5LjI5MiAwLjg3ODUtMS4wMjA4IDI0Ljg4MyAxLjA4MjIgMzcuMzI0IDYuMDQ2NmwwLjI0NjggNC45NDkxIDcuMDYzMyAyLjg1MTIgNS4zMTM2LTEzLjMxNHoiLz4KICAgPHBhdGggZD0ibTYyNy4wNyA1MTcuMDljLTMuMTg4Mi0xLjA4OTUtMzEuMzUtNC43MTEyLTMxLjM1LTMuODYxMS0xMC44MTMgNy42OTU3LTEyLjQ1MyAxNS4wNTktMTIuMjIxIDIxLjQzNiAxNy45ODktMTcuNjk3IDE3LjMxOS0xNy43NDcgNDMuNTcyLTE3LjU3NXoiLz4KICAgPHBhdGggZD0ibTYwNS42OCAzODkuODFzMjAuMzIyLTIuOTYyNiAxOS45MjYtMS4wNjUyYy0xLjQ3MjIgNy4wNTA0IDIuNDg3NiAyNC4yMzMgMi45MjI1IDIxLjgzNmwtMTEuNDI0IDkuMzJjMjMuOTI2LTEyLjAyOSA0OS4xMTMtOS42MTE3IDc0LjY1Ni0xMS40NSAwIDAtMjEuNTA3LTUuOTM4MS0yMC4xOTItNi4xMjQ2IDQuNzk3Ny0wLjY4MDMtMS4yNzcyLTIyLjQzLTIuOTIyNS0yMi45MDEgNC4wOTE1LTEuMzg0NyA4LjA4NzMtMi40Mjg1IDEyLjIyMS0zLjQ2MTctMzAuNzU2LTguMDQ4My00OC41NDEtMy4zMDU5LTc1LjE4OCAxMy44NDd6Ii8+CiAgIDxwYXRoIGQ9Im03ODEuNTYgNDA0Ljk4LTQuNTE2NiAyLjI2MzRjLTAuNjQwOC0xMy4yMzEtMTQuODUxLTEyLjI2LTI2LjgzNC0xMi4zODJsLTkuODMwMi0yLjM5NjZjMi45ODg5IDIuNzY2NCAxMi4yMjkgMi41NDk1IDguNTAxOCA4LjUyMTItMy4xMzY3IDEuNjc2NS00LjU3OTggOC44Ny02LjM3NjMgMTQuOTEybC01LjMxMzYgMC4yNjYyOGM5LjM4NjcgMy42Njg0IDE4LjA5NSA2Ljg4MzYgMjguNDI4IDExLjE4NGw2LjExMDYgMC45MzIgMTQuNjEyLTcuODU1NXoiLz4KICA8L2c+CiAgPGcgZmlsbD0iI2ZmZiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLS41MzI2OCA2Ni44KSI+CiAgIDxwYXRoIGQ9Im02NDYuODYgMzk2LjA2Yy0yLjI4NzItNC41MjQ4LTEzLjc5NC0zLjg4MjQtMTYuMjc1LTAuOTU0ODQtMi4wMTU4IDIuMzc4OC0wLjEyNTE0IDE3LjY0MiAyLjQ1OTUgMTUuMDY4IDMuNzM2OC0zLjI4NDkgOC42MTc2LTQuNjU4OCAxNC40OC00LjM5MzggMC43MzkwNC0yLjgyIDAuNDc3NDItNS44NjQ4LTAuNjY0MjEtOS43MTk0eiIvPgogICA8cGF0aCBkPSJtNzU3LjIxIDQxOC44YzEuMDgxNi0wLjc5MTEzIDMuMzY4OS04LjQ0MzQgMi42MzAxLTEwLjczMy0xLjUxMTctNS40MDMyLTEyLjIxMi00LjI2NTktMTIuMjEyLTQuMjY1OS0yLjYxMDggMS41MzYzLTQuODk4OSA5Ljk1OTYtMy45NDQ4IDEyLjczOSAwLjQ1NTQzIDIuMzUyNiAxMS44MDkgMy4xMDI1IDEzLjUyNiAyLjI1OTV6Ii8+CiAgPC9nPgogIDxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0uNTMyNjggNjYuOCkiPgogICA8cGF0aCBkPSJtMjk5LjY0IDY4Mi44NCA2Ljc1OTYgMC42NjExMmM0MC4wNzEgMTkuNjc1IDEwNi4wNSA0OC44NDcgMjAxLjU3IDMzLjE3MWwxNC45ODggMjMuNTg0Yy00Mi4wNjcgMjAuNDQyLTg3LjMxMiAxNS43MzgtMTI5LjcxIDE3LjE3MnoiLz4KICAgPHBhdGggZD0ibTI0Mi4xMSA1MjcuMyAyMC4wNzMgODQuMjY4YzUzLjc0IDMzLjU5MyAxNDUuNTQgNzIuMDcgMjIyLjA2IDY4Ljk2NWwtMTYuOTEtMzguOGMtMTU5LjczLTMzLjkyLTE3My4yNC03Ni44LTIyNS4yMi0xMTQuNDR6Ii8+CiAgIDxwYXRoIGQ9Im0yOTIuMDYgMzU0LjY5YzkuODEwNiA2NS4zMDIgMjIuOTA3IDExNC44MSA3OS42OSAxNTYuMjggMzQuODA0IDI1LjAzIDY5LjM1MSA0OS45NTQgMTExLjM3IDcwLjUyNCAwIDAtMy42ODM2IDE5LjE3MS02Ljc2MzEgMTguODI5LTEyNS4wNS0xMy44OS0yMTYuNi0xMTcuNTgtMjI3LjY5LTE2NC45NCAxMC43NDEtMzYuMzI5IDI2LjE0OS01OS4wMjEgNDMuMzg5LTgwLjY5M3oiLz4KICAgPHBhdGggZD0ibTM1Mi4xNyAzMTcuNjljMTYuNjY0IDcyLjM3NiA1Ni4zOTcgMTQ1LjY4IDk1Ljg4OSAyMTIuMTggMTQuNDc3IDE4LjM2OSAxOC4yNjYgMjYuNDc1IDQwLjU3OSAzNy42NTkgMzAuMTU5IDkuNTQ5MiA1MS40ODYgNy4xMTE5IDczLjM3NyA1LjY3NTYtNS45OTgyLTExLjEwMi0xMS4zMjktMjIuNzA2LTE4LjIxNy0zMy4xNC00OS4wMTgtMzguNzY1LTI2LjM2NC03NC4wNi0xMy4zNDQtOTYuNDA2LTI3LjI1Ni02Ljg4Ny02My4zNy0yMS41MjUtNjguMzQ1LTQwLjc3OC03Ljk5OTItNjIuMjcxLTMuOTM3My04Mi4wMjUgNC4wNjg1LTExNC4wMS0zNi45MDkgNy43ODIyLTc0LjMwOSAxNS40OTQtMTE0LjAxIDI4LjgyeiIvPgogICA8cGF0aCBzdHlsZT0iY29sb3ItcmVuZGVyaW5nOmF1dG87dGV4dC1kZWNvcmF0aW9uLWNvbG9yOiMwMDAwMDA7Y29sb3I6IzAwMDAwMDtpc29sYXRpb246YXV0bzttaXgtYmxlbmQtbW9kZTpub3JtYWw7c2hhcGUtcmVuZGVyaW5nOmF1dG87c29saWQtY29sb3I6IzAwMDAwMDtibG9jay1wcm9ncmVzc2lvbjp0Yjt0ZXh0LWRlY29yYXRpb24tbGluZTpub25lO2ltYWdlLXJlbmRlcmluZzphdXRvO3doaXRlLXNwYWNlOm5vcm1hbDt0ZXh0LWluZGVudDowO3RleHQtdHJhbnNmb3JtOm5vbmU7dGV4dC1kZWNvcmF0aW9uLXN0eWxlOnNvbGlkIiBkPSJtMjE2Ljc3LTY2Ljc0MmMtMTIuMTMxIDcuOTI0OC0yMy44MTggMTkuMjU2LTM2LjM5MSAzMi4xMzUtMjAuODQzIDIxLjU3NS0zNC42OTkgNDIuNjIxLTU1LjkxNSA1OC4yMjQtNC4yNDMyIDMuNjU4OC0xNi4xNTEgOS41NTExLTMxLjEyMSAxMC40MjUtNy4wNTIgMC4zNTItMTEuNjQ2IDEuNTE5LTI0LjYwNC0wLjEwOC0xMS40MjgtNi4xODgtMjIuMjg1LTIuMTY0LTMyLjg4MSAxMC41MS0xMS42MTkgMTYuNzA5LTI2LjMzNCA0OC40MzctMzIuNDUzIDY4LjQxLTEyLjYxMSA1MC45MzcgMTkuNTQxIDkyLjkwNSA1MC4zNzQgMTI1LjI1IDI3LjQyOSAyNi43OTYgNDMuMjQzIDQzLjU0MiA1NC41MDUgNjguMTA3IDguNTI3IDE1LjkzMyAxNC44NDQgMzcuNzk5IDIxLjY4MyA1My4xMyAyLjQ2NjEgNC44NjA1IDEuOTUzNCA0LjgzNTIgOC41OTEzIDYuMyAxNC4zMzMgMy4wNTg4IDM0LjIxNSAzLjA4MjggNTEuOTE1IDQuNjA0MSA3LjY1ODMgMC4xMDY5MSAxOC4xNzUtMC4xNzgxMyAyOC4xNC0xLjIxNjggMTMuNzMxLTIuNTkyOCAyOS44NjMtNS4xMzMzIDQzLjM4NC05LjgwOTggMTMuMjEzLTMuMjUzNSAyNC45ODUtNy43NTkyIDM1LjU5Ny0xMS45MDctMS4zNjg2IDQuNjQ0Mi0xMS40NzggOS4xMTUzLTE1LjI2OCAxNS4wMDItMzUuOTcgNTEuNDktNDUuODIzIDk3LjMwOC0zOS41NjEgMTY5LjYgMy41NDI1IDMyLjA0MiAxMC44OTYgNTguNjA1IDIxLjk5MiA4OC45OTcgNS4wNzc1IDEzLjkwOCAxNS44ODIgMzUuOTM0IDI2LjIzNiA1MC41NjUgMzAuNzkgNDMuNTA2IDk5LjY3MiA5OS4zNzQgMTk1LjU2IDEyMC44OCAxNi43MjkgMi4yODY2IDM1LjcxNSAxLjA2NyA1My41NzEtMy42ODgyIDQ3LjMyNi0xNC4zNDYgMTQzLjc4LTQ4LjI3NSAxNDMuNzgtNDguMjc1cy04NS42MTkgNy4wODI4LTEyNC44MyAzLjIwNThjLTkuMDc3OC0xLjQxOTUtMTkuMDgxLTEuOTAxMS0yNS40MDUtOC4wODcyLTEuMDYwOC0xLjM2OTQtNC45MTQ0LTkuMTMxOC0yLjQyNTgtOS4yMDE1IDMuMzk1Mi0wLjA5NSAxMy4xNDItNC4xNCAyOC4xOTEtNS40ODIxLTMyLjEyOS0zLjQ1OTEtMzEuNjcxLTMuNDE4LTM0LjAxNi05LjI3MDYtMy42NDcxLTkuMDg0Ny05LjIyOTItMjEuNTAyLTE0Ljk3Ny0zMi4zNjcgMTQuMTE4IDEuMTkxMSA0NS4zNzYgMi45NDU1IDU1Ljk4NC04LjAwMjUgMCAwLTE4LjQ5NyAyLjEzNTYtMzQuODQzIDAuMjE4NC01LjUwNzItMC42NDU5NS0xNC44OTEtMy45OTQ2LTE3LjcxLTUuMDI5Ny03LjMzODMtMi44NTgtMTMuMzgtMy43NDU2LTE0Ljc4OC01LjYwOTEtMi41NDgzLTYuNDg1Ni00LjI3NTEtOC42NjcyLTcuMzUwNi0xNy4zNTYtNC4xNjU5LTExLjUwNC00LjQ5NjQtMjQuMzM3LTUuMjg5NS0zNi4wODMgMTAuNjkzIDEzLjE4IDI0LjMxOCAyNC4yNzUgNDIuMzU2IDI5Ljk0MSAwLjIzMTQxLTAuNDg3NzYgMjMuNCAxMC4wNzIgNDAuMjI2IDQuNjQybDMuNDg4Ni0xLjEyNTRjMCAwLjMxMTM0LTExLjE0OCAwLjk3NjctMTUuMjM3LTEuMDQ3NC0zNC4yMTktMTQuNTQ1LTM5LjM3LTI3LjI3Ni00NC44OTUtMzMuNTk5bC0xNC43NzctMjIuMTMzYzQuNDk0My04Ljk2MDggNy4wMzUxLTkuMzAxMyAxMi45ODktOS4zODQyIDE4LjAxMSAyLjAwMDYgMjUuODQ4IDMuNTM5OSAzNi44MDcgMC44OTU4NyA3LjQwNTMgMTUuMjQgOS40MDYyIDMwLjU3MSAyNi4yNjUgNDEuNjYyIDU2LjE2NiAxNi42NzIgNjguMzY5LTQuOTUxIDgxLjk3My0yNC4wNTcgNDAuNDEyIDI5LjY1OCAxMDYuMiAzOC44MDMgMTUxLjg5IDAuNTE0NzggNTguMDg2LTY3LjIxMiA3Ni40NzYtMTczLjE3IDcxLjMyNS0xNzkuMjItNy4yNTQ0LTEyLjMwNy0xNi43NzItMjQuOTk5LTI0Ljk0NS0yMy4yNDUtMjkuMTMgNy45NTItMzkuODcxIDIyLjczLTY4LjczNSAxOS4zNTkgMy40Mzc3LTAuMTk0MzEgOS4yMTg3LTAuMjg3MzQgOS4yNjI4LTAuNjE1MDggMi4yMjM4LTI0LjQ0MS0wLjE3ODgzLTM2LjI2Ny0xLjI1MTgtMzguMjk3LTguNzU5LTE5LjMxNy0yMC4yNjEtMzkuNjQ2LTI4LjI3OC01NC44ODEtMi4wNjY4LTMuMTYwNy04LjEzNjctMjcuMTY1LTE4LjMwOC0zNi42NDgtNC4zNjIzLTMuNzI0NS0xNS4wMzktMTMuNTQ2LTE1LjAzOS0xMy41NDZsLTAuOTA0ODQgMTAuNDM5czQuMTczOSAwLjYzMDMyIDUuNzYyNCA3LjA5NzNjNi4wMjIyIDI0LjUxNyAzNi42ODcgODIuNDg1IDM4LjkzOCA4NS4yNjMgMTAuODY4IDE3LjU0NSAxLjEwNDUgMzkuNDAxIDkuMzY3MyA1MS42NjMgMC43OTM4IDEuNTU3OCAxNi44NTctMC4xMzY1IDI5LjMwNyAwLjYyODQ1IDIwLjQ3My00LjQwMzQgMTkuNjA5LTEzLjQyNiAzNy4yOTQtMTQuNzgyIDExLjkxMy0wLjkxMzQ3IDEzLjEwOCAyMS40NiAxMi45NTEgMjMuMTk2LTIuMjIgMjQuNzA0LTkuNzM1IDUzLjQyNy0yMS4yMzYgNzkuNjU4LTIzLjkxMiA0Ni4wNjktNTAuNjkxIDg3LjQ0Ni04OC42NyA5My4yMTYtNDYuMzI2IDguMDk1Mi03MC4zOTktMTIuMTU4LTk1LjUxMi0yNS4wNTVsLTkuNjA2OCA4LjE5MzRjLTMyLjYzNyAzMi41MDEtNzEuMzg5IDI5LjYxNC04Ny4yMzktMTIuODUxLTcuODkwMS0xNi40NzMtMTguMTcyLTI2LjU2OS0yNi45NzYtNDAuN2wtNDYuNjg4IDMzLjYyN2MtMy44ODY1IDcuOTcwOC04LjY2NTIgMjAuNTQtMTQuNDcgMzQuNTgtNC4wMzU3IDkuNzYxLTcuNDE5OSAyNi41MjUtNy4xOTk1IDQwLjQ1Ni01Ljk4NDcgMTAuMTk1IDIwLjcyOSA1MS41NDIgMzcuNjA5IDc2LjY5MiA0Ljk4MTEgNy40MjEyIDE0LjI3OSAyMC4zODUgMTQuNTkgMjEuMTkzIDMuMzQ3NiA4LjY4MzEgMTAuNjc5IDE2LjM0OSAxMS4xMjQgMTcuMjg0IDMxLjMzNyA0MC44NzItMzkuNTMxIDMxLjQ2LTU0LjE2NyAyOC45OTEtMjguODc2LTQuNjAxLTU3LjEyMS0xNi42NjMtODMuNjctMzIuNzkyLTEuNTQwNi0wLjkzNjAxLTMuMDc1Ny0xLjg4NTMtNC42MDQ3LTIuODQ4LTMxLjU1MS0xOS44NjYtNjAuNTgxLTQ1LjI4My04NS4yNjQtNzAuNDIzLTE0LjcxOC0xNi42NjYtMjguNzMyLTUwLjgyNy0zOS4wODMtNzUuMDQ1LTE1LjUxMy01OC4yMjYtMzcuNzc2LTE1OS4xNSAyMi41MzItMjM1LjYzIDMuODIyOC00LjM3MTcgNy45NDc4LTExLjY1IDExLjQ2LTEzLjA5IDE3LjkxOC0xMi4xMTkgMzcuMzc1LTIwLjM3OSA1OC4yOTgtMjQuOTY2bC0yLjExMjItMTMuNTYzYy0xMC40NDkgMi4zNzQxLTQ1LjYzMyAxNS4yNDMtNTUuNTgxIDIwLjYyOS0yMi42MjMgNi41NTgyLTQxLjM4OCAxMy40MDYtNzAuMjIgMjAuNjI1LTkuMzcyNCAxLjE0NjgtMTguNTkyIDEuMTY3NC0yNy41NzktMC4wNTM1LTIwLjc0MS0yLjgxNzgtNTYuMDk0LTAuMzAwNy01OC4zNDktMi4zOTU2LTE0LjA0NC0xOS41ODUtMTcuODg5LTU0LjY3Ni0zMC43MDMtNzMuNDU2bC0wLjE1MTItMC4xODcyLTAuMTYyMzEtMC4xNzgyN2MtNy40Ny0xMC4wNC0xNi4xNzctMTguMjMtMjQuNzUyLTI2Ljc1LTMwLjcwOC0zMC41MS01Ni45OTEtNjAuMDEtNjQuMzQ4LTkxLjI3LTEuODUtOS4yMy02LjYxNC0xOC43OS00LjA4Mi00Ni4xbDAuMDQ2NjktMC4xMzM3IDAuMDQ0NDctMC4xMzM3MWM3LjM4OC0yNS41MTMgMTkuNDA3LTQ2LjMxIDM5LjgwNi02Ny4xNTMgMjEuMjI4IDAuMzQyNjcgNDIuMjQgMC44MDkgNTguNjA3IDMuOTM1NSA3LjUwODkgMS4yNTYyIDIzLjEyNCAzLjI5NTkgMzkuMjUyIDkuMzA0IDQwLjgyMiAxNS4yMDcgOTQuNzYgNDAuMjA5IDk0Ljc2IDQwLjIwOS00MC40ODgtMjIuMjM2LTg1Ljc2MS01MS4xMTUtMTE0LjM1LTU2Ljk0My00LjI1MzYtMC42MDIxNy02Ljg2NzktMi41NDI2LTguMTMxMS01LjkzIDQyLjk5OS0yNS4yNjQgNTAuODY1LTU1LjAwOSA3OS4xNDctODEuNjg2IDEyLjkyNS01LjYyNjIgMTcuOTY1LTguNDk4NCAyOC45NDctOS42OTE3IDEwMS41NyAxNi4wNiAxNjUuNTEgNTYuNTE1IDIxNi4wOSA4My41NjYgMjAuNTI5IDExLjE2NCAzOS4xOTEgMTkuNjA2IDU3LjAxNSAyOS43NzMgMTUuNjI0IDUuMTM5MSA2Mi43NzEgNDAuNzM0IDc2LjU2OSA1OS45MjUgMTQuMDE3IDI5LjU5NSAyNC4yNTEgNjEuNTYzIDMzLjU4NSA5Mi40MTEgNi42OTMxIDMxLjM3NSAxMi41NjQgNDQuMTAyIDEyLjU2NCA0NC4xMDJzLTUuNjg4My0yNi4yNDMtNC43NDAzLTMwLjk1OGM1Ljg5NzYgMi4yMDM4IDE5Ljg0MSA2LjU1NzQgMjUuNjIxIDUuODgxIDAgMC0yNS44MTgtMTMuMzQ2LTI5LjIwMS0yNS4xNDEtMTAuODU2LTM3Ljg0Ny0yMS43NDQtOTYuNzY1LTI0LjY4LTk5LjgzNy04LjI3NC0xMC40MTEtNDIuNzc3LTM2LjgxNi02My45NDEtNDkuMDMtOC4wMDYtNC42MjA1LTEyLjMzMy03LjQ4NjUtMTIuNjcxLTkuNTE3OSA2Ljc2MS02LjgzIDE1LjExMS0xNS44NjUgMjIuNTk4LTIxLjYwNiA3LjE3NjYtNS41MDMxIDEzLjcxMS0xMS43MDkgMjMuNzEzLTE1LjQyMyA0My45NjMtMTkuOCA2OS4xMDEgNy42MTc2IDc1LjA2NiAyLjA2NTYgMCAwLTkuNDU4LTEwLjg0MS01LjI1Ny05LjA1NjQgNC4zMDIxIDIuMzMwMyAxOC4zMjMgNS4wNzg0IDE5Ljg2MiA2LjUwOTQgMTYuMDIzIDEyLjUzNCA1Ny45MTMgNTguMzQ0IDgzLjE2MSAxMDYuNjggNi4wNjM5IDExLjg0IDguNTI4OCAxOS42MzYgNS43MTY0IDMzLjg5My0yLjgxOTkgMTQuMjctNS4wMDE3IDIyLjExNy04LjA3NzcgMzEuNjQ3LTIuNzc4NCA2LjM3MS0xOC40OTggNDkuOTg4LTE4LjQzNyA1NS44NDgtMy4xNjY2IDIzLjkzMiAxMC4yNjQgNTMuODkzIDEwLjI2NCA1My44OTMgMC4xMjcwMy04LjEzMjYtMC41MDAzLTEyLjQ2NiAwLjIzNjc3LTE4LjI4MmwwLjkwNDA0LTEwLjM5M3MtMC41NzMtMi43NjQ0LTAuNDY5MDItMy44NmMwLjY4MjEtNy4xODY3IDIuNDQ1LTEzLjIyOSAyLjk2MjUtMTcuMzQ1IDUuMDQ3Ni0zMS4yNTUgMTMuODIyLTUzLjc1NSAyMy43NzUtODEuMTgyIDIuOTU3OC02LjkyMTYgNi44Mjc3LTEwLjc3MSA2LjYzMDMtMTYuMDQxIDAuMTYyNzQtOS4zNTE4LTguMjA0OC0yMS45MDQtMTQuMjUyLTM0LjE2My02LjEtMTIuMzktMTMuMzktMjYuMjAyLTIyLjk2LTQwLjc2LTIxLjgyLTMxLjM3Ni00MC40Mi01NS45MjUtNzQuNDgtNzEuMjg5LTkuNTMtNC4xODIxLTQ3LjAzLTguMjcwOS01OS45OC01Ljg0MTMtMTUuNzEgMy4yNzI5LTI5LjIyIDYuNTAwNC0zOS45OSAxMy4zOTgtMTYuOTUgMTAuODU0LTMwLjI3IDI3LjY1OS00NS44OSAzNy41NjEtMzQuNTYtMTcuMjgyLTUxLjI0LTMwLjIxNi01NC4zNS0zMS45OTktMjAuNTQtMTEuMDA2LTQ1LjItMjMuNzc4LTcxLjczLTM1Ljg5LTEyLjcyLTExLjg2Mi05MS43MS00MC4yMzMtMTY0LjA0LTQ1Ljg5MnptNDQyLjA4IDY0NC41OWMtMjEuMy0xNi42NS0zOS4yMy0zMy43OS01MS4wNS01MS40NC0zLjg1ODIgMjAuNzU4LTE3Ljg2NCAzNS41NDItMjguNjg4IDUwLjA4My0yLjE1NDYgMy40MTA0LTMuNzA3OCA4LjA2MDQgNi45MDIyIDIyLjg3OSAyLjg1OTggMy45NDggMTMuMjA3IDQuNjIyNyAyMC4xOTIgNC4yNjA2LTcuMTA2NS01LjM3MTktMTcuOTE4LTExLjA1My0xOS42Ni0xNS45NzcgMTIuNTAxIDguNTEwOSAyNC4wNzYgMTAuOTU3IDM0LjUzOCA5LjU4NjMgMi4zOTAzLTAuMjY4NjcgNS4zNi0yLjgwMzcgNy42NTUzLTYuNzA1OCA0LjY2MzctMTAuMDIgOC4zMTU1LTEyLjQzMyAxMi4wMDUtMTUuMTNsOC41MDE4IDEwLjY1MXoiIHN0cm9rZT0iIzAwMCIgc3Ryb2tlLXdpZHRoPSIuMTEzOTciLz4KICA8L2c+CiA8L2c+Cjwvc3ZnPgo= + mediatype: image/svg+xml +name: hive-operator +schema: olm.package +--- +entries: +- name: hive-operator.v0.0.0-dev +name: stable +package: hive-operator +schema: olm.channel +--- +image: quay.io/zncdatadev/hive-operator-bundle:0.0.0-dev +name: hive-operator.v0.0.0-dev +package: hive-operator +properties: +- type: olm.gvk + value: + group: zncdata.dev + kind: HiveMetastore + version: v1alpha1 +- type: olm.package + value: + packageName: hive-operator + version: 0.0.0-dev +- type: olm.csv.metadata + value: + annotations: + alm-examples: |- + [ + { + "apiVersion": "zncdata.dev/v1alpha1", + "kind": "HiveMetastore", + "metadata": { + "labels": { + "app.kubernetes.io/created-by": "hive-operator", + "app.kubernetes.io/instance": "hivemetastore-sample", + "app.kubernetes.io/managed-by": "kustomize", + "app.kubernetes.io/name": "hivemetastore", + "app.kubernetes.io/part-of": "hive-operator" + }, + "name": "hivemetastore-sample" + }, + "spec": { + "metastore": { + "roleGroups": { + "default": { + "config": { + "logging": { + "metastore": { + "console": { + "level": "INFO" + } + } + } + }, + "replicas": 1 + } + } + } + } + } + ] + capabilities: Basic Install + categories: Big Data + createdAt: "2024-08-28T12:23:26Z" + operators.operatorframework.io/builder: operator-sdk-v1.35.0 + operators.operatorframework.io/project_layout: go.kubebuilder.io/v4 + apiServiceDefinitions: {} + crdDescriptions: + owned: + - description: HiveMetastore is the Schema for the hivemetastores API + displayName: Hive Metastore + kind: HiveMetastore + name: hivemetastores.zncdata.dev + version: v1alpha1 + description: hive for operator + displayName: Hive Operator + installModes: + - supported: true + type: OwnNamespace + - supported: true + type: SingleNamespace + - supported: false + type: MultiNamespace + - supported: false + type: AllNamespaces + keywords: + - hive + - metastore + links: + - name: Hive Operator + url: https://github.com/zncdatadev/hive-operator + - name: hive + url: https://hive.apache.org/ + maintainers: + - email: zncdatadev@googlegroups.com + name: ZNCDataDev Team + maturity: stable + minKubeVersion: 1.26.1 + provider: + name: zncdatadev + url: https://github.com/zncdatadev +relatedImages: +- image: docker.io/bitnami/kube-rbac-proxy:0.13.1 + name: "" +- image: quay.io/zncdatadev/hive-operator-bundle:0.0.0-dev + name: "" +- image: quay.io/zncdatadev/hive-operator:0.0.0-dev + name: "" +schema: olm.bundle diff --git a/catalog/secret-operator/index.yaml b/catalog/secret-operator/index.yaml index 6bd270d..d573a3a 100644 --- a/catalog/secret-operator/index.yaml +++ b/catalog/secret-operator/index.yaml @@ -163,7 +163,7 @@ properties: }, "pullPolicy": "IfNotPresent", "repository": "quay.io/zncdatadev/secret-csi-driver", - "tag": "v0.0.1" + "tag": "0.0.0-dev" }, "csiProvisioner": { "logging": { @@ -217,7 +217,7 @@ properties: ] capabilities: Basic Install categories: Big Data - createdAt: "2024-08-28T15:30:36Z" + createdAt: "2024-09-05T10:51:31Z" operators.operatorframework.io/builder: operator-sdk-v1.34.2 operators.operatorframework.io/project_layout: go.kubebuilder.io/v4 apiServiceDefinitions: {} diff --git a/catalog/spark-k8s-operator/index.yaml b/catalog/spark-k8s-operator/index.yaml new file mode 100644 index 0000000..67e96ca --- /dev/null +++ b/catalog/spark-k8s-operator/index.yaml @@ -0,0 +1,298 @@ +--- +defaultChannel: stable +description: | + # spark-k8s-operator + // TODO(user): Add simple overview of use/purpose + + ## Description + // TODO(user): An in-depth paragraph about your project and overview of use + + ## Getting Started + You’ll need a Kubernetes cluster to run against. You can use [KIND](https://sigs.k8s.io/kind) to get a local cluster for testing, or run against a remote cluster. + **Note:** Your controller will automatically use the current context in your kubeconfig file (i.e. whatever cluster `kubectl cluster-info` shows). + + ### Running on the cluster + 1. Install Instances of Custom Resources: + + ```sh + kubectl apply -f config/samples/ + ``` + + 2. Build and push your image to the location specified by `IMG`: + + ```sh + make docker-build docker-push IMG=/spark-k8s-operator:tag + ``` + + 3. Deploy the controller to the cluster with the image specified by `IMG`: + + ```sh + make deploy IMG=/spark-k8s-operator:tag + ``` + + ### Uninstall CRDs + To delete the CRDs from the cluster: + + ```sh + make uninstall + ``` + + ### Undeploy controller + UnDeploy the controller from the cluster: + + ```sh + make undeploy + ``` + + ## Contributing + // TODO(user): Add detailed information on how you would like others to contribute to this project + + ### How it works + This project aims to follow the Kubernetes [Operator pattern](https://kubernetes.io/docs/concepts/extend-kubernetes/operator/). + + It uses [Controllers](https://kubernetes.io/docs/concepts/architecture/controller/), + which provide a reconcile function responsible for synchronizing resources until the desired state is reached on the cluster. + + ### Test It Out + 1. Install the CRDs into the cluster: + + ```sh + make install + ``` + + 2. Run your controller (this will run in the foreground, so switch to a new terminal if you want to leave it running): + + ```sh + make run + ``` + + **NOTE:** You can also run this in one step by running: `make install run` + + ### Modifying the API definitions + If you are editing the API definitions, generate the manifests such as CRs or CRDs using: + + ```sh + make manifests + ``` + + **NOTE:** Run `make --help` for more information on all potential `make` targets + + More information can be found via the [Kubebuilder Documentation](https://book.kubebuilder.io/introduction.html) + + ## License + + Copyright 2023 zncdatadev. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +icon: + base64data: PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI2OCIgaGVpZ2h0PSIzNiIgdmlld0JveD0iMCAwIDY4IDM2Ij4KICAgIDxnIGZpbGw9Im5vbmUiIGZpbGwtcnVsZT0iZXZlbm9kZCI+CiAgICAgICAgPHBhdGggZmlsbD0iI0UyNUExQyIgZD0iTTYyLjA2MSAxNy4yNDNjLS4wNTguMTIzLS4wODUuMTg2LS4xMTcuMjQ1LS44NSAxLjU5NC0xLjY5OCAzLjE5LTIuNTU1IDQuNzgtLjA4Ny4xNTktLjA3Ni4yNTQuMDQyLjM5IDEuMzUyIDEuNTU4IDIuNjk3IDMuMTIyIDQuMDQ0IDQuNjg1LjA0Ny4wNTQuMDkuMTEzLjEwOC4yMS0uMzk0LS4xMDEtLjc4OC0uMjAxLTEuMTgxLS4zMDQtMS42MzQtLjQyNy0zLjI2OC0uODUzLTQuOS0xLjI4NS0uMTUyLS4wNC0uMjIxLjAwMy0uMjk3LjEyOC0uOTI3IDEuNTI4LTEuODYgMy4wNTMtMi43OTIgNC41NzgtLjA0OC4wOC0uMS4xNTctLjIwMi4yMjMtLjA3NS0uNDA3LS4xNTItLjgxNC0uMjI1LTEuMjIxbC0uNzc3LTQuMzE0Yy0uMDI4LS4xNTYtLjA2Ny0uMzEtLjA4LS40NjctLjAxNC0uMTQ4LS4wOS0uMjAzLS4yMjctLjI0NS0xLjkyNS0uNTk2LTMuODQ4LTEuMTk4LTUuNzcyLTEuOC0uMDg0LS4wMjYtLjE2Ny0uMDYtLjI1Ny0uMTQxbDQuNzQ0LTEuODZjLS4wNTgtLjA0NS0uMDk2LS4wOC0uMTM4LS4xMDgtLjk4NC0uNjI4LTEuOTctMS4yNTMtMi45NS0xLjg4NC0uMTE4LS4wNzUtLjIxMS0uMDg2LS4zNDMtLjAyNy0xLjE3NS41MjEtMi4zNTUgMS4wMzMtMy41MzEgMS41NTItLjUyOS4yMzMtMS4wMDQuNTQyLTEuMzc0Ljk4OC0uODM3IDEuMDEtLjY3MiAyLjE1OC40NDMgMi44Ni4zNjUuMjMuNzguNDAxIDEuMTkyLjUzNCAxLjg4Ni42MDYgMy43NzkgMS4xOSA1LjY3IDEuNzc3LjE1OS4wNDkuMjMzLjExOS4yNjIuMjg4LjI1MiAxLjQ0LjUxNCAyLjg3Ny43NzYgNC4zMTUuMTQxLjc2OC4yMTYgMS41NTcuNTk1IDIuMjYuMTQ2LjI3Mi4zMi41MzcuNTI4Ljc2NC43NS44MjIgMS43OTkuODU0IDIuNTkzLjA3LjI2OC0uMjY0LjQ5OC0uNTc2LjY5OC0uODk1Ljg3NC0xLjQwNyAxLjczNS0yLjgyMyAyLjU5LTQuMjQuMTAyLS4xNjkuMTkzLS4yMDIuMzgtLjE1MyAyLjExLjU1OCA0LjIyMiAxLjEwNyA2LjMzMyAxLjY1Ny40MzYuMTE0Ljg3Ni4xNTUgMS4zMjMuMDczLjk3NC0uMTggMS40LS45MSAxLjA3LTEuODM4LS4xNS0uNDIyLS40MDktLjc4LS43LTEuMTE2LTEuNDczLTEuNzEtMi45NDQtMy40Mi00LjQyMi01LjEyNS0uMTIxLS4xNC0uMTI0LS4yNC0uMDQtLjM5Ni44ODItMS42NCAxLjc1Ni0zLjI4MyAyLjYzNC00LjkyNS4yMS0uMzkzLjM3LS44LjM3NS0xLjI1Mi4wMS0xLjAyNy0uNzUtMS44NjctMS43ODUtMi4wMTYtLjU4LS4wODQtMS4xMTguMDM4LTEuNjYuMjAzLTEuMzIzLjQwNC0yLjY0OC44LTMuOTc0IDEuMTkzLS4xMjMuMDM3LS4xNy4wODQtLjE5MS4yMTUtLjE1My45Mi0uMzE5IDEuODM4LS40OCAyLjc1Ny0uMDA0LjAyNS4wMDMuMDUyLjAwNy4xMDlsNC41NjMtMS4yNDIiIHRyYW5zZm9ybT0ibWF0cml4KDEgMCAwIC0xIDAgMzUuOTc0KSIvPgogICAgICAgIDxwYXRoIGZpbGw9IiNGRkYiIGQ9Ik01OS40ODMgMy44NDFjLTEuMTkzLjAwMi0yLjM4Ni4wMDgtMy41OC4wMDMtLjE1NyAwLS4yNDYuMDQ1LS4zMzQuMTc3LTEuNDEyIDIuMTIyLTIuODMgNC4yMzktNC4yNDggNi4zNTctLjA0NS4wNjgtLjA5My4xMzMtLjE3NC4yNDZsLS45MDItNi43NjdoLTMuMTI0Yy4wMzcuMy4wNjkuNTkuMTA3Ljg4LjMwNSAyLjI5Ni42MTEgNC41OTQuOTE4IDYuODkuMjkyIDIuMTk1LjU4MyA0LjM5Ljg4IDYuNTg1LjAwOS4wNjUuMDUzLjE0OC4xMDcuMTgzIDEuMDc1LjY5IDIuMTU0IDEuMzc2IDMuMjMyIDIuMDYyLjAxNi4wMS4wMzguMDExLjA5NC4wMjdsLS45NzQtNy4zMjQuMDM4LS4wMjYgNS4xMTMgNS41OS4xMzYtLjc3MmMuMTIxLS42OTguMjM3LTEuMzk2LjM2Ny0yLjA5Mi4wMjYtLjE0LS4wMTEtLjIyOC0uMTA2LS4zMjUtMS4wOTQtMS4xMy0yLjE4NS0yLjI2My0zLjI3Ni0zLjM5NmwtLjE0Ny0uMTU5Yy4wMzUtLjA1NS4wNjQtLjEwOC4xLS4xNTdsNS42NDctNy44MTRjLjAzNC0uMDQ4LjA4My0uMDg1LjEyNi0uMTI3di0uMDRNMjIuNDU1IDEwLjYxNGMtLjA0OC4yNC0uMDgyLjU5My0uMTkuOTIyLS41MjMgMS41OTItMi4xOCAyLjQ2NS0zLjg5NCAyLjA3MS0xLjg4LS40MzEtMy4yMjQtMS44OS0zLjQxOC0zLjc4Mi0uMTQ0LTEuNC42Mi0yLjc0OSAyLjA0MS0zLjI1NSAxLjE0NS0uNDA4IDIuMjQ3LS4yMzcgMy4yNy4zNjggMS4zNTguODAzIDIuMDkzIDEuOTk1IDIuMTkgMy42NzZ6bS04LjI1OC01LjkxN2MtLjA5My0uNjg1LS4xODItMS4zMy0uMjY4LTEuOTc3LS4xMTQtLjg1OC0uMjI4LTEuNzE3LS4zMzgtMi41NzYtLjAxMy0uMS0uMDQ0LS4xNDUtLjE1My0uMTQ0LS44NTguMDAzLTEuNzE2LjAwMy0yLjU3NC4wMDQtLjAyIDAtLjAzOS4wMS0uMDg1LjAyMy4wNTEuNDA2LjEwMi44MTIuMTU2IDEuMjE4LjE5IDEuNDI1LjM3OCAyLjg0OS41NyA0LjI3My4yMiAxLjYyOC4zOTQgMy4yNjQuNjc1IDQuODgyLjQ5OSAyLjg2NCAyLjk2MiA1LjMzMyA1Ljg1NCA1Ljk0OCAxLjY3Ni4zNTYgMy4yOC4xOTEgNC43NDMtLjc0IDEuNDYtLjkyNyAyLjI5Ny0yLjI3MyAyLjQ4OC0zLjk2Ny4yNy0yLjM5NC0uNjI0LTQuMzgyLTIuMzQ4LTYuMDI2LTEuMTMyLTEuMDgtMi40ODctMS43NjYtNC4wNS0xLjk5OC0xLjYxLS4yMzktMy4xMjQuMDI2LTQuNDgyLjk2Mi0uMDUuMDM0LS4xMDMuMDY0LS4xODguMTE4TTEyLjc5OCAxOC4zMDhsLTIuODIxLTIuMDcxYy0uMTUuMjMzLS4yODUuNDY2LS40NDIuNjgzLS40MDQuNTU3LS45MDYuOTczLTEuNjM3IDEuMDI0LS42MDcuMDQyLTEuMTI2LS4xNTYtMS41NC0uNTk3LS4zNy0uMzk1LS40MTgtLjk1Ny0uMDcyLTEuNDAzLjM4LS40OS43OTYtLjk1NiAxLjIyMS0xLjQxMS43MDUtLjc1MyAxLjQ0Mi0xLjQ3OCAyLjE0Mi0yLjIzNi42MzctLjY4OSAxLjE0NC0xLjQ2MiAxLjMwMS0yLjQwNC4xODctMS4xMi0uMDQtMi4xODctLjU3Ny0zLjE3MS0uOTk0LTEuODIyLTIuNTYtMi44OC00LjYyNi0zLjIxLS45MTMtLjE0Ni0xLjgyMy0uMTE3LTIuNzE0LjE0MkMxLjg1MSAzLjk5NyAxLjAzIDQuNzYuNSA1Ljg0LjMxMyA2LjIyLjE3IDYuNjI0IDAgNy4wMzNsMy4wNiAxLjYxNWMuMDM1LS4wODQuMDYtLjE1NC4wOTMtLjIyLjE3NC0uMzQzLjMxNy0uNzA3LjUzMi0xLjAyMy42MzktLjkzNyAxLjY3LTEuMjIyIDIuNzE4LS43Ni4yNjguMTIuNTI3LjI4OC43NDguNDguNjc1LjU5MS44MDEgMS40MTMuMzAyIDIuMTU2LS4yODcuNDI3LS42NDYuODEtLjk5NSAxLjE5My0uODM1LjkxNC0xLjcwNCAxLjgtMi41MiAyLjczLS41NjEuNjQyLS45NDMgMS4zOS0xLjA2NCAyLjI1LS4xMzIuOTM4LjA1OCAxLjgyMy41NTMgMi42MTMgMS4yMyAxLjk2MyAzLjAyIDIuOTg1IDUuMzg1IDIuOSAxLjM0OC0uMDQ4IDIuNDIyLS42NyAzLjI1Ni0xLjcwMy4yNDYtLjMwNi40NzgtLjYyNC43My0uOTU2TTM1LjY0OCA3Ljc2N2MtLjE1Ni0xLjE4My0uMzA0LTIuMzA3LS40NTgtMy40My0uMDA4LS4wNTctLjA1My0uMTM0LS4xMDItLjE1Ny0yLjMyOS0xLjA2My01LjM5NS0uOTE1LTcuMzA3IDEuMjI3LTEuMDI4IDEuMTUtMS40NTkgMi41MTYtMS4zOTQgNC4wMzYuMTQ5IDMuNTE3IDMuMTA1IDYuNTg3IDYuNjQxIDcuMDE2IDIuMDY2LjI1MSAzLjg3OC0uMyA1LjI3Ny0xLjg4Mi45NTMtMS4wNzggMS4zOTQtMi4zNjYgMS4zMjktMy43ODctLjA0My0uOTM4LS4xOTItMS44NzMtLjMxLTIuODA3LS4xNjgtMS4zMjMtLjM1Mi0yLjY0NS0uNTI5LTMuOTY3LS4wMDYtLjA0Ny0uMDE2LS4wOTQtLjAyNi0uMTUzaC0yLjc4NmMuMDM3LjMwNC4wNzEuNjAxLjExLjg5OC4yMDIgMS41MjcuNDI0IDMuMDUyLjYgNC41ODIuMTEuOTUyLjA0MSAxLjg5OC0uNCAyLjc4LS40Ny45MzktMS4yNTkgMS40MzUtMi4yOTUgMS41NDMtMi4xNDUuMjI0LTQuMTg2LTEuMjQ2LTQuNjQzLTMuMzI4LS4zMDItMS4zNzQuMTc0LTIuNjkxIDEuMjg0LTMuNDIgMS4wODEtLjcxIDIuMjQtLjcxMiAzLjQxOC0uMjUxLjU5OC4yMzMgMS4xMDcuNjAyIDEuNTkxIDEuMU00Ny4zNzggMTYuMTkybC0uMzgtMi44NDhjLS41OSAwLTEuMTY3LjAwMy0xLjc0NC0uMDAyLS40NjgtLjAwMy0uODk1LS4zMDEtMS4wMzYtLjczMi0uMDU1LS4xNjgtLjA3NS0uMzQ5LS4wOTktLjUyNi0uMjkzLTIuMTg3LS41ODMtNC4zNzQtLjg3NC02LjU2Mi0uMDc0LS41NTEtLjE0NS0xLjEwMy0uMjE5LTEuNjYzaC0yLjg5OWMuMDU0LjQyLjEwNS44MjguMTYgMS4yMzQuMTg4IDEuNDE4LjM3NiAyLjgzNS41NjcgNC4yNTIuMTY1IDEuMjI2LjMxMiAyLjQ1NS41MDcgMy42NzcuMjYgMS42MzggMS45MTIgMy4wOTMgMy41ODggMy4xNjQuOC4wMzUgMS42MDIuMDA2IDIuNDI5LjAwNiIgdHJhbnNmb3JtPSJtYXRyaXgoMSAwIDAgLTEgMCAzNS45NzQpIi8+CiAgICAgICAgPHBhdGggZmlsbD0iI0ZGRiIgZmlsbC1ydWxlPSJub256ZXJvIiBkPSJNNjIuOSAzLjg1OXYxLjIwN2gtLjAwNmwtLjQ4LTEuMjA3aC0uMTU0bC0uNDggMS4yMDdoLS4wMDdWMy44NmgtLjI0MnYxLjQ0NmguMzczbC40MzgtMS4wOTkuNDMgMS4wOTloLjM3VjMuODU5aC0uMjQxem0tMi4xMjcgMS4yNTNWMy44NTloLS4yNDJ2MS4yNTNoLS40NnYuMTkzaDEuMTZ2LS4xOTNoLS40NThNMTYuNjgyIDIwLjMzOWguNzJsLS4xNyAxLjA3My0uNTUtMS4wNzN6bS44MzItLjY5NGgtMS4xOTZsLS4zOC0uNzM0aC0uODQ3bDEuODY4IDMuNDQzaC44MTdsLjYzNi0zLjQ0M2gtLjc4NWwtLjExMy43MzRNMjEuNzkzIDIxLjY2aC0uNDI2bC0uMTQzLS43OTRoLjQyNWMuMjU3IDAgLjQ2My4xNjYuNDYzLjQ4IDAgLjIwOC0uMTMuMzE0LS4zMTkuMzE0em0tMS4wMzIuNjk0aDEuMTJjLjU4NSAwIC45OTUtLjM0NS45OTUtLjkzNyAwLS43NDQtLjUzNC0xLjI0NS0xLjI5My0xLjI0NUgyMS4xbC0uMjI2LTEuMjZoLS43MjhsLjYxNSAzLjQ0Mk0yNS4zNTIgMjAuMzM5aC43MTlsLS4xNyAxLjA3My0uNTUtMS4wNzN6bS44MzEtLjY5NGgtMS4xOTVsLS4zOC0uNzM0aC0uODQ3bDEuODY4IDMuNDQzaC44MTZsLjYzNy0zLjQ0M2gtLjc4NmwtLjExMy43MzRNMzAuOTEyIDE5LjAzM2MtLjI0Ni0uMTExLS41MTgtLjE3OC0uNzktLjE3OC0uOTI0IDAtMS41MDUuNjg0LTEuNTA1IDEuNTQgMCAxLjA5My45MzUgMi4wMTUgMi4wNDQgMi4wMTUuMjc3IDAgLjUyOC0uMDY2LjczMy0uMTc3bC0uMTAyLS44MjZjLS4xNTQuMTY3LS40LjI4NC0uNzA5LjI4NC0uNjM2IDAtMS4yLS41NjgtMS4yLTEuMjI1IDAtLjUwMi4zMTgtLjg5Mi44Mi0uODkyLjMwOSAwIC42MDYuMTE3LjgwNi4yNzlsLS4wOTctLjgyTTM1LjM2NiAyMC4yOThMMzMuODQ3IDIwLjI5OCAzMy42IDE4LjkxMSAzMi44NzIgMTguOTExIDMzLjQ4NyAyMi4zNTQgMzQuMjE2IDIyLjM1NCAzMy45NyAyMC45OTIgMzUuNDg5IDIwLjk5MiAzNS43MzUgMjIuMzU0IDM2LjQ2NCAyMi4zNTQgMzUuODQ5IDE4LjkxMSAzNS4xMiAxOC45MTEgMzUuMzY2IDIwLjI5OE0zOC4wMzkgMTguOTExTDM4LjY1NSAyMi4zNTQgNDAuNTkgMjIuMzU0IDQwLjQ2NyAyMS42NiAzOS4yNiAyMS42NiAzOS4xMzggMjAuOTkyIDQwLjI0NiAyMC45OTIgNDAuMTIzIDIwLjI5OCAzOS4wMTQgMjAuMjk4IDM4Ljg5MSAxOS42MDUgNDAuMDk3IDE5LjYwNSAzOS45NzQgMTguOTExIDM4LjAzOSAxOC45MTEiIHRyYW5zZm9ybT0ibWF0cml4KDEgMCAwIC0xIDAgMzUuOTc0KSIvPgogICAgPC9nPgo8L3N2Zz4K + mediatype: image/svg+xml +name: spark-k8s-operator +schema: olm.package +--- +entries: +- name: spark-k8s-operator.v0.0.0-dev +name: stable +package: spark-k8s-operator +schema: olm.channel +--- +image: quay.io/zncdatadev/spark-k8s-operator-bundle:0.0.0-dev +name: spark-k8s-operator.v0.0.0-dev +package: spark-k8s-operator +properties: +- type: olm.gvk + value: + group: spark.zncdata.dev + kind: SparkHistoryServer + version: v1alpha1 +- type: olm.package + value: + packageName: spark-k8s-operator + version: 0.0.0-dev +- type: olm.csv.metadata + value: + annotations: + alm-examples: |- + [ + { + "apiVersion": "spark.zncdata.dev/v1alpha1", + "kind": "SparkHistoryServer", + "metadata": { + "labels": { + "app.kubernetes.io/created-by": "spark-k8s-operator", + "app.kubernetes.io/instance": "sparkhistoryserver", + "app.kubernetes.io/managed-by": "kustomize", + "app.kubernetes.io/name": "sparkhistoryserver", + "app.kubernetes.io/part-of": "spark-k8s" + }, + "name": "sparkhistoryserver-sample" + }, + "spec": { + "clusterConfig": { + "ingress": { + "annotations": { + "kubernetes.io/ingress.class": "nginx", + "nginx.ingress.kubernetes.io/rewrite-target": "/" + }, + "enabled": true, + "host": "spark-history.example.com" + } + }, + "clusterOperation": { + "stopped": false + }, + "image": { + "pullPolicy": "IfNotPresent", + "repository": "bitnami/spark", + "tag": "3.1.1" + }, + "sparkHistory": { + "config": { + "eventLog": { + "dir": "/tmp", + "enabled": true, + "mountMode": "pvc" + }, + "resources": { + "cpu": { + "max": "200m", + "min": "100m" + }, + "memory": { + "limit": "512Mi" + } + } + }, + "roleGroups": { + "default": { + "config": { + "gracefulShutdownTimeout": "10s", + "logging": { + "sparkHistory": { + "console": { + "level": "INFO" + } + } + }, + "nodeSelector": { + "app": "default" + }, + "resources": { + "cpu": { + "max": "400m", + "min": "300m" + }, + "memory": { + "limit": "612Mi" + } + } + }, + "podOverride": { + "metadata": { + "labels": { + "foo": "bar" + } + } + }, + "replicas": 1 + } + } + } + } + } + ] + capabilities: Basic Install + categories: Big Data + createdAt: "2024-08-28T12:03:35Z" + operators.operatorframework.io/builder: operator-sdk-v1.35.0 + operators.operatorframework.io/project_layout: go.kubebuilder.io/v4 + apiServiceDefinitions: {} + crdDescriptions: + owned: + - description: SparkHistoryServer is the Schema for the sparkhistoryservers + API + displayName: Spark History Server + kind: SparkHistoryServer + name: sparkhistoryservers.spark.zncdata.dev + resources: + - kind: ConfigMap + name: "" + version: v1 + - kind: Deployment + name: "" + version: app/v1 + - kind: Ingress + name: "" + version: v1 + - kind: PersistentVolume + name: "" + version: v1 + - kind: PersistentVolumeClaim + name: "" + version: v1 + - kind: Pod + name: "" + version: v1 + - kind: PodDisruptionBudget + name: "" + version: v1 + - kind: Service + name: "" + version: v1 + specDescriptors: + - description: spark history server cluster config + displayName: Cluster Config + path: clusterConfig + - displayName: Image + path: image + - description: spark history server role spec + displayName: Spark History + path: sparkHistory + version: v1alpha1 + description: spark for k8s operator + displayName: Spark K8s Operator + installModes: + - supported: true + type: OwnNamespace + - supported: true + type: SingleNamespace + - supported: false + type: MultiNamespace + - supported: true + type: AllNamespaces + keywords: + - spark + - k8s + links: + - name: Spark Website + url: https://spark.apache.org/ + - name: Spark K8s Operator + url: https://github.com/zncdatadev/spark-k8s-operator + - name: spark + url: https://spark.apache.org/ + maintainers: + - email: zncdatadev@googlegroups.com + name: ZNCDataDev Team + maturity: stable + minKubeVersion: 1.26.1 + provider: + name: zncdatadev + url: https://github.com/zncdatadev +relatedImages: +- image: docker.io/bitnami/kube-rbac-proxy:0.13.1 + name: "" +- image: quay.io/zncdatadev/spark-k8s-operator-bundle:0.0.0-dev + name: "" +- image: quay.io/zncdatadev/spark-k8s-operator:0.0.0-dev + name: "" +schema: olm.bundle diff --git a/catalog/superset-operator/index.yaml b/catalog/superset-operator/index.yaml new file mode 100644 index 0000000..5cf6295 --- /dev/null +++ b/catalog/superset-operator/index.yaml @@ -0,0 +1,212 @@ +--- +defaultChannel: stable +description: |+ + # superset-operator + + // TODO(user): Add simple overview of use/purpose + + ## Description + + // TODO(user): An in-depth paragraph about your project and overview of use + + ## Getting Started + + You’ll need a Kubernetes cluster to run against. You can use [KIND](https://sigs.k8s.io/kind) to get a local cluster for testing, or run against a remote cluster. + **Note:** Your controller will automatically use the current context in your kubeconfig file (i.e. whatever cluster `kubectl cluster-info` shows). + + ### Running on the cluster + + 1. Install Instances of Custom Resources: + + ```sh + kubectl apply -f config/samples/ + ``` + + 2. Build and push your image to the location specified by `IMG`: + + ```sh + make docker-build docker-push IMG=/superset-operator:tag + ``` + + 3. Deploy the controller to the cluster with the image specified by `IMG`: + + ```sh + make deploy IMG=/superset-operator:tag + ``` + + ### Uninstall CRDs + + To delete the CRDs from the cluster: + + ```sh + make uninstall + ``` + + ### Undeploy controller + + UnDeploy the controller from the cluster: + + ```sh + make undeploy + ``` + + ## Contributing + + // TODO(user): Add detailed information on how you would like others to contribute to this project + + ### How it works + + This project aims to follow the Kubernetes [Operator pattern](https://kubernetes.io/docs/concepts/extend-kubernetes/operator/). + + It uses [Controllers](https://kubernetes.io/docs/concepts/architecture/controller/), + which provide a reconcile function responsible for synchronizing resources until the desired state is reached on the cluster. + + ### Test It Out + + 1. Install the CRDs into the cluster: + + ```sh + make install + ``` + + 2. Run your controller (this will run in the foreground, so switch to a new terminal if you want to leave it running): + + ```sh + make run + ``` + + **NOTE:** You can also run this in one step by running: `make install run` + + ### Modifying the API definitions + + If you are editing the API definitions, generate the manifests such as CRs or CRDs using: + + ```sh + make manifests + ``` + + **NOTE:** Run `make --help` for more information on all potential `make` targets + + More information can be found via the [Kubebuilder Documentation](https://book.kubebuilder.io/introduction.html) + + ## License + + Copyright 2024 zncdatadev. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + +icon: + base64data: iVBORw0KGgoAAAANSUhEUgAAAQQAAAEECAYAAADOCEoKAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyNpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDYuMC1jMDAyIDc5LjE2NDM2MCwgMjAyMC8wMi8xMy0wMTowNzoyMiAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIDIwMjAgTWFjaW50b3NoIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOkM3RkZDMENGQjVGQzExRUFCRUJCQzE1QTBBREIwQkQ2IiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOkM3RkZDMEQwQjVGQzExRUFCRUJCQzE1QTBBREIwQkQ2Ij4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6QjQ1MTFFOUFCNEQ3MTFFQUJFQkJDMTVBMEFEQjBCRDYiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6QzdGRkMwQ0VCNUZDMTFFQUJFQkJDMTVBMEFEQjBCRDYiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz4oGrHeAAAm4klEQVR42uydCXhV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 + mediatype: image/png +name: superset-operator +schema: olm.package +--- +entries: +- name: superset-operator.v0.0.0-dev +name: stable +package: superset-operator +schema: olm.channel +--- +image: quay.io/zncdatadev/superset-operator-bundle:0.0.0-dev +name: superset-operator.v0.0.0-dev +package: superset-operator +properties: +- type: olm.gvk + value: + group: superset.zncdata.dev + kind: SupersetCluster + version: v1alpha1 +- type: olm.package + value: + packageName: superset-operator + version: 0.0.0-dev +- type: olm.csv.metadata + value: + annotations: + alm-examples: |- + [ + { + "apiVersion": "superset.zncdata.dev/v1alpha1", + "kind": "SupersetCluster", + "metadata": { + "labels": { + "app.kubernetes.io/created-by": "superset-operator", + "app.kubernetes.io/instance": "supersetcluster-sample", + "app.kubernetes.io/managed-by": "kustomize", + "app.kubernetes.io/name": "supersetcluster", + "app.kubernetes.io/part-of": "superset-operator" + }, + "name": "supersetcluster-sample" + }, + "spec": { + "clusterConfig": { + "credentialsSecret": "superset-credentials" + }, + "node": { + "roleGroups": { + "default": { + "replicas": 1 + } + } + } + } + } + ] + capabilities: Basic Install + categories: Big Data + createdAt: "2024-08-30T10:41:15Z" + operators.operatorframework.io/builder: operator-sdk-v1.35.0 + operators.operatorframework.io/project_layout: go.kubebuilder.io/v4 + apiServiceDefinitions: {} + crdDescriptions: + owned: + - description: SupersetCluster is the Schema for the supersetclusters API + displayName: Superset Cluster + kind: SupersetCluster + name: supersetclusters.superset.zncdata.dev + version: v1alpha1 + description: Superset Operator + displayName: Superset Operator + installModes: + - supported: true + type: OwnNamespace + - supported: true + type: SingleNamespace + - supported: false + type: MultiNamespace + - supported: true + type: AllNamespaces + keywords: + - superset + - operator + links: + - name: Superset Operator + url: https://github.com/zncdatadev/superset-operator + - name: Apache Superset + url: https://superset.apache.org/ + maintainers: + - email: zncdatadev@googlegroups.com + name: ZNCDataDev Team + maturity: stable + minKubeVersion: 1.26.1 + provider: + name: zncdatadev + url: https://github.com/zncdatadev/superset-operator +relatedImages: +- image: gcr.io/kubebuilder/kube-rbac-proxy:v0.13.1 + name: "" +- image: quay.io/zncdatadev/superset-operator-bundle:0.0.0-dev + name: "" +- image: quay.io/zncdatadev/superset-operator:0.0.0-dev + name: "" +schema: olm.bundle diff --git a/catalog/zookeeper-operator/index.yaml b/catalog/zookeeper-operator/index.yaml index c94120b..581d0a9 100644 --- a/catalog/zookeeper-operator/index.yaml +++ b/catalog/zookeeper-operator/index.yaml @@ -147,10 +147,6 @@ properties: "clusterConfig": { "listenerClass": "external-unstable" }, - "image": { - "repository": "docker.io/bitnami/zookeeper", - "tag": "3.9.1-debian-12-r15" - }, "server": { "config": { "resources": { @@ -219,7 +215,7 @@ properties: ] capabilities: Basic Install categories: Big Data - createdAt: "2024-08-29T12:14:51Z" + createdAt: "2024-09-06T07:15:55Z" operators.operatorframework.io/builder: operator-sdk-v1.34.2 operators.operatorframework.io/project_layout: go.kubebuilder.io/v4 apiServiceDefinitions: {}