diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 0000000..11ff312 Binary files /dev/null and b/.DS_Store differ diff --git a/.idea/.gitignore b/.idea/.gitignore new file mode 100644 index 0000000..13566b8 --- /dev/null +++ b/.idea/.gitignore @@ -0,0 +1,8 @@ +# Default ignored files +/shelf/ +/workspace.xml +# Editor-based HTTP Client requests +/httpRequests/ +# Datasource local storage ignored files +/dataSources/ +/dataSources.local.xml diff --git a/.idea/GitLink.xml b/.idea/GitLink.xml new file mode 100644 index 0000000..009597c --- /dev/null +++ b/.idea/GitLink.xml @@ -0,0 +1,6 @@ + + + + + \ No newline at end of file diff --git a/.idea/block-index.iml b/.idea/block-index.iml new file mode 100644 index 0000000..5e764c4 --- /dev/null +++ b/.idea/block-index.iml @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml new file mode 100644 index 0000000..afa7b8d --- /dev/null +++ b/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 0000000..35eb1dd --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/README.md b/README.md index 3e211d6..25a7e06 100644 --- a/README.md +++ b/README.md @@ -10,7 +10,9 @@ and make a pull request to this repository. ## The `block-index` file and directory structure ```bash -addons/ # A directory containing `addons.extensions.kubeblocks.io` manifests. -plugins/ # A directory containing `cliplugins.extensions.kubeblocks.io` manifests. -krew-plugins/ # A directory containing `plugins.krew.googlecontainertools.github.com` manifests. +addons/ # A directory containing `addons.extensions.kubeblocks.io` manifests. +tools/ # A directory containing `tools.extensions.kubeblocks.io` manifests. +applicatinos/ # A directory containing `applicatinos.extensions.kubeblocks.io` manifests. +cli-plugins/ # A directory containing `cliplugins.extensions.kubeblocks.io` manifests. +krew-plugins/ # A directory containing `plugins.krew.googlecontainertools.github.com` manifests. ``` \ No newline at end of file diff --git a/addons/apecloud-mysql/apecloud-mysql-addon.yaml b/addons/apecloud-mysql/apecloud-mysql-addon.yaml new file mode 100644 index 0000000..a7cccdd --- /dev/null +++ b/addons/apecloud-mysql/apecloud-mysql-addon.yaml @@ -0,0 +1,32 @@ +apiVersion: extensions.kubeblocks.io/v1alpha1 +kind: Addon +metadata: + name: apecloud-mysql + labels: + {{- include "kubeblocks.labels" . | nindent 4 }} + "kubeblocks.io/provider": apecloud + {{- if .Values.keepAddons }} + annotations: + helm.sh/resource-policy: keep + {{- end }} +spec: + description: 'ApeCloud MySQL is a database that is compatible with MySQL syntax and achieves high availability + through the utilization of the RAFT consensus protocol.' + + type: Helm + + helm: + {{- include "kubeblocks.addonChartLocationURL" ( dict "name" "apecloud-mysql" "version" (default .Chart.Version .Values.versionOverride) "values" .Values) | indent 4 }} + {{- include "kubeblocks.addonChartsImage" . | indent 4 }} + + installOptions: + {{- if hasPrefix "oci://" .Values.addonChartLocationBase }} + version: {{ default .Chart.Version .Values.versionOverride }} + {{- end }} + + defaultInstallValues: + - enabled: true + + installable: + autoInstall: true + diff --git a/addons/elasticsearch/elasticsearch-addon.yaml b/addons/elasticsearch/elasticsearch-addon.yaml new file mode 100644 index 0000000..a593d51 --- /dev/null +++ b/addons/elasticsearch/elasticsearch-addon.yaml @@ -0,0 +1,34 @@ +# copy from opsearch +apiVersion: extensions.kubeblocks.io/v1alpha1 +kind: Addon +metadata: + name: elasticsearch + labels: + {{- include "kubeblocks.labels" . | nindent 4 }} + "kubeblocks.io/provider": community + {{- if .Values.keepAddons }} + annotations: + helm.sh/resource-policy: keep + {{- end }} +spec: + description: 'Elasticsearch is a distributed search and analytics engine. It is used for web search, log monitoring, and real-time analytics. Ideal for Big Data applications.' + + type: Helm + + helm: + {{- include "kubeblocks.addonChartLocationURL" ( dict "name" "elasticsearch" "version" (default .Chart.Version .Values.versionOverride) "values" .Values) | indent 4 }} + {{- include "kubeblocks.addonChartsImage" . | indent 4 }} + + installOptions: + {{- if hasPrefix "oci://" .Values.addonChartLocationBase }} + version: {{ default .Chart.Version .Values.versionOverride }} + {{- end }} + + installable: + autoInstall: false + + defaultInstallValues: + - enabled: false + {{- with .Values.tolerations }} + tolerations: {{ toJson . | quote }} + {{- end }} diff --git a/addons/foxlake/foxlake-addon.yaml b/addons/foxlake/foxlake-addon.yaml new file mode 100644 index 0000000..51fd293 --- /dev/null +++ b/addons/foxlake/foxlake-addon.yaml @@ -0,0 +1,30 @@ +apiVersion: extensions.kubeblocks.io/v1alpha1 +kind: Addon +metadata: + name: foxlake + labels: + {{- include "kubeblocks.labels" . | nindent 4 }} + "kubeblocks.io/provider": community + {{- if .Values.keepAddons }} + annotations: + helm.sh/resource-policy: keep + {{- end }} +spec: + description: ApeCloud FoxLake is an open-source cloud-native data warehouse. + + type: Helm + + helm: + {{- include "kubeblocks.addonChartLocationURL" ( dict "name" "foxlake" "version" (default .Chart.Version .Values.versionOverride) "values" .Values) | indent 4 }} + {{- include "kubeblocks.addonChartsImage" . | indent 4 }} + + installOptions: + {{- if hasPrefix "oci://" .Values.addonChartLocationBase }} + version: {{ default .Chart.Version .Values.versionOverride }} + {{- end }} + + installable: + autoInstall: false + + defaultInstallValues: + - enabled: true \ No newline at end of file diff --git a/addons/greptimedb/greptimedb-addon.yaml b/addons/greptimedb/greptimedb-addon.yaml new file mode 100644 index 0000000..600aa8a --- /dev/null +++ b/addons/greptimedb/greptimedb-addon.yaml @@ -0,0 +1,30 @@ +apiVersion: extensions.kubeblocks.io/v1alpha1 +kind: Addon +metadata: + name: greptimedb + labels: + {{- include "kubeblocks.labels" . | nindent 4 }} + "kubeblocks.io/provider": community + {{- if .Values.keepAddons }} + annotations: + helm.sh/resource-policy: keep + {{- end }} +spec: + description: 'GreptimeDB is an Apache 2.0 licensed distributed time-series database.' + + type: Helm + + helm: + {{- include "kubeblocks.addonChartLocationURL" ( dict "name" "greptimedb" "version" (default .Chart.Version .Values.versionOverride) "values" .Values) | indent 4 }} + {{- include "kubeblocks.addonChartsImage" . | indent 4 }} + + installOptions: + {{- if hasPrefix "oci://" .Values.addonChartLocationBase }} + version: {{ default .Chart.Version .Values.versionOverride }} + {{- end }} + + installable: + autoInstall: false + + defaultInstallValues: + - enabled: true diff --git a/addons/kafka/kafka-addon.yaml b/addons/kafka/kafka-addon.yaml new file mode 100644 index 0000000..bc735b0 --- /dev/null +++ b/addons/kafka/kafka-addon.yaml @@ -0,0 +1,31 @@ +apiVersion: extensions.kubeblocks.io/v1alpha1 +kind: Addon +metadata: + name: kafka + labels: + {{- include "kubeblocks.labels" . | nindent 4 }} + "kubeblocks.io/provider": community + {{- if .Values.keepAddons }} + annotations: + helm.sh/resource-policy: keep + {{- end }} +spec: + description: 'Apache Kafka is a distributed streaming platform designed to build real-time pipelines and can be used as a message + broker or as a replacement for a log aggregation solution for big data applications.' + + type: Helm + + helm: + {{- include "kubeblocks.addonChartLocationURL" ( dict "name" "kafka" "version" (default .Chart.Version .Values.versionOverride) "values" .Values) | indent 4 }} + {{- include "kubeblocks.addonChartsImage" . | indent 4 }} + + installOptions: + {{- if hasPrefix "oci://" .Values.addonChartLocationBase }} + version: {{ default .Chart.Version .Values.versionOverride }} + {{- end }} + + installable: + autoInstall: true + + defaultInstallValues: + - enabled: true diff --git a/addons/llm/llm-addon.yaml b/addons/llm/llm-addon.yaml new file mode 100644 index 0000000..9d887b6 --- /dev/null +++ b/addons/llm/llm-addon.yaml @@ -0,0 +1,46 @@ +apiVersion: extensions.kubeblocks.io/v1alpha1 +kind: Addon +metadata: + name: llm + labels: + {{- include "kubeblocks.labels" . | nindent 4 }} + {{- if .Values.keepAddons }} + annotations: + helm.sh/resource-policy: keep + {{- end }} +spec: + description: The large language model. + type: Helm + + helm: + {{- include "kubeblocks.addonChartLocationURL" ( dict "name" "llm" "version" (default .Chart.Version .Values.versionOverride) "values" .Values) | indent 4 }} + {{- include "kubeblocks.addonChartsImage" . | indent 4 }} + + installOptions: + {{- if hasPrefix "oci://" .Values.addonChartLocationBase }} + version: 0.1.0 + {{- end }} + + valuesMapping: + valueMap: + replicaCount: replicaCount + + jsonMap: + tolerations: tolerations + + resources: + cpu: + requests: resources.requests.cpu + limits: resources.limits.cpu + memory: + requests: resources.requests.memory + limits: resources.limits.memory + + defaultInstallValues: + - replicas: 1 + {{- with .Values.tolerations }} + tolerations: {{ toJson . | quote }} + {{- end }} + + installable: + autoInstall: false diff --git a/addons/milvus/milvus-addon.yaml b/addons/milvus/milvus-addon.yaml new file mode 100644 index 0000000..4a350db --- /dev/null +++ b/addons/milvus/milvus-addon.yaml @@ -0,0 +1,33 @@ +apiVersion: extensions.kubeblocks.io/v1alpha1 +kind: Addon +metadata: + name: milvus + labels: + {{- include "kubeblocks.labels" . | nindent 4 }} + "kubeblocks.io/provider": community + {{- if .Values.keepAddons }} + annotations: + helm.sh/resource-policy: keep + {{- end }} +spec: + description: 'Milvus is an open source (Apache-2.0 licensed) vector database built to power embedding similarity search and AI applications.' + + type: Helm + + helm: + {{- include "kubeblocks.addonChartLocationURL" ( dict "name" "milvus" "version" (default .Chart.Version .Values.versionOverride) "values" .Values) | indent 4 }} + {{- include "kubeblocks.addonChartsImage" . | indent 4 }} + + installOptions: + {{- if hasPrefix "oci://" .Values.addonChartLocationBase }} + version: {{ default .Chart.Version .Values.versionOverride }} + {{- end }} + + installable: + autoInstall: false + + defaultInstallValues: + - enabled: false + {{- with .Values.tolerations }} + tolerations: {{ toJson . | quote }} + {{- end }} diff --git a/addons/mongodb/mongodb-addon.yaml b/addons/mongodb/mongodb-addon.yaml new file mode 100644 index 0000000..0786daf --- /dev/null +++ b/addons/mongodb/mongodb-addon.yaml @@ -0,0 +1,30 @@ +apiVersion: extensions.kubeblocks.io/v1alpha1 +kind: Addon +metadata: + name: mongodb + labels: + {{- include "kubeblocks.labels" . | nindent 4 }} + "kubeblocks.io/provider": community + {{- if .Values.keepAddons }} + annotations: + helm.sh/resource-policy: keep + {{- end }} +spec: + description: 'MongoDB is a document database designed for ease of application development and scaling.' + + type: Helm + + helm: + {{- include "kubeblocks.addonChartLocationURL" ( dict "name" "mongodb" "version" (default .Chart.Version .Values.versionOverride) "values" .Values) | indent 4 }} + {{- include "kubeblocks.addonChartsImage" . | indent 4 }} + + installOptions: + {{- if hasPrefix "oci://" .Values.addonChartLocationBase }} + version: {{ default .Chart.Version .Values.versionOverride }} + {{- end }} + + installable: + autoInstall: true + + defaultInstallValues: + - enabled: true diff --git a/addons/mysql/mysql-addon.yaml b/addons/mysql/mysql-addon.yaml new file mode 100644 index 0000000..cda1ddc --- /dev/null +++ b/addons/mysql/mysql-addon.yaml @@ -0,0 +1,30 @@ +apiVersion: extensions.kubeblocks.io/v1alpha1 +kind: Addon +metadata: + name: mysql + labels: + {{- include "kubeblocks.labels" . | nindent 4 }} + "kubeblocks.io/provider": community + {{- if .Values.keepAddons }} + annotations: + helm.sh/resource-policy: keep + {{- end }} +spec: + description: 'MySQL is a widely used, open-source relational database management system (RDBMS).' + + type: Helm + + helm: + {{- include "kubeblocks.addonChartLocationURL" ( dict "name" "mysql" "version" (default .Chart.Version .Values.versionOverride) "values" .Values) | indent 4 }} + {{- include "kubeblocks.addonChartsImage" . | indent 4 }} + + installOptions: + {{- if hasPrefix "oci://" .Values.addonChartLocationBase }} + version: {{ default .Chart.Version .Values.versionOverride }} + {{- end }} + + installable: + autoInstall: true + + defaultInstallValues: + - enabled: true diff --git a/addons/nebula/nebula-addon.yaml b/addons/nebula/nebula-addon.yaml new file mode 100644 index 0000000..cde5ce4 --- /dev/null +++ b/addons/nebula/nebula-addon.yaml @@ -0,0 +1,30 @@ +apiVersion: extensions.kubeblocks.io/v1alpha1 +kind: Addon +metadata: + name: nebula + labels: + {{- include "kubeblocks.labels" . | nindent 4 }} + "kubeblocks.io/provider": community + {{- if .Values.keepAddons }} + annotations: + helm.sh/resource-policy: keep + {{- end }} +spec: + description: 'NebulaGraph is an Apache 2.0 licensed distributed graph database.' + + type: Helm + + helm: + {{- include "kubeblocks.addonChartLocationURL" ( dict "name" "nebula" "version" (default .Chart.Version .Values.versionOverride) "values" .Values) | indent 4 }} + {{- include "kubeblocks.addonChartsImage" . | indent 4 }} + + installOptions: + {{- if hasPrefix "oci://" .Values.addonChartLocationBase }} + version: {{ default .Chart.Version .Values.versionOverride }} + {{- end }} + + installable: + autoInstall: false + + defaultInstallValues: + - enabled: true diff --git a/addons/neon/neon-addon.yaml b/addons/neon/neon-addon.yaml new file mode 100644 index 0000000..f4f3bcb --- /dev/null +++ b/addons/neon/neon-addon.yaml @@ -0,0 +1,30 @@ +apiVersion: extensions.kubeblocks.io/v1alpha1 +kind: Addon +metadata: + name: neon + labels: + {{- include "kubeblocks.labels" . | nindent 4 }} + "kubeblocks.io/provider": community + {{- if .Values.keepAddons }} + annotations: + helm.sh/resource-policy: keep + {{- end }} +spec: + description: 'Neon is a fully managed serverless PostgreSQL with a generous free tier. Neon separates storage and compute and offers modern developer features such as serverless, branching, bottomless storage, and more. Before deploying neon, you must execute `kbcli addon enable cert-manager` command to deploy cert-manager.' + + type: Helm + + helm: + {{- include "kubeblocks.addonChartLocationURL" ( dict "name" "neon" "version" (default .Chart.Version .Values.versionOverride) "values" .Values) | indent 4 }} + {{- include "kubeblocks.addonChartsImage" . | indent 4 }} + + installOptions: + {{- if hasPrefix "oci://" .Values.addonChartLocationBase }} + version: {{ default .Chart.Version .Values.versionOverride }} + {{- end }} + + installable: + autoInstall: false + + defaultInstallValues: + - enabled: true diff --git a/addons/opensearch/opensearch-addon.yaml b/addons/opensearch/opensearch-addon.yaml new file mode 100644 index 0000000..b89bca4 --- /dev/null +++ b/addons/opensearch/opensearch-addon.yaml @@ -0,0 +1,33 @@ +apiVersion: extensions.kubeblocks.io/v1alpha1 +kind: Addon +metadata: + name: opensearch + labels: + {{- include "kubeblocks.labels" . | nindent 4 }} + "kubeblocks.io/provider": community + {{- if .Values.keepAddons }} + annotations: + helm.sh/resource-policy: keep + {{- end }} +spec: + description: 'OpenSearch is a scalable, flexible, and extensible open-source software suite for search, analytics, and observability applications licensed under Apache 2.0.' + + type: Helm + + helm: + {{- include "kubeblocks.addonChartLocationURL" ( dict "name" "opensearch" "version" (default .Chart.Version .Values.versionOverride) "values" .Values) | indent 4 }} + {{- include "kubeblocks.addonChartsImage" . | indent 4 }} + + installOptions: + {{- if hasPrefix "oci://" .Values.addonChartLocationBase }} + version: {{ default .Chart.Version .Values.versionOverride }} + {{- end }} + + installable: + autoInstall: false + + defaultInstallValues: + - enabled: false + {{- with .Values.tolerations }} + tolerations: {{ toJson . | quote }} + {{- end }} diff --git a/addons/oracle-mysql/oracle-mysql-addon.yaml b/addons/oracle-mysql/oracle-mysql-addon.yaml new file mode 100644 index 0000000..215524d --- /dev/null +++ b/addons/oracle-mysql/oracle-mysql-addon.yaml @@ -0,0 +1,30 @@ +apiVersion: extensions.kubeblocks.io/v1alpha1 +kind: Addon +metadata: + name: oracle-mysql + labels: + {{- include "kubeblocks.labels" . | nindent 4 }} + "kubeblocks.io/provider": ApeCloud + {{- if .Values.keepAddons }} + annotations: + helm.sh/resource-policy: keep + {{- end }} +spec: + description: 'MySQL is a widely used, open-source relational database management system (RDBMS).' + + type: Helm + + helm: + {{- include "kubeblocks.addonChartLocationURL" ( dict "name" "oracle-mysql" "version" (default .Chart.Version .Values.versionOverride) "values" .Values) | indent 4 }} + {{- include "kubeblocks.addonChartsImage" . | indent 4 }} + + installOptions: + {{- if hasPrefix "oci://" .Values.addonChartLocationBase }} + version: {{ default .Chart.Version .Values.versionOverride }} + {{- end }} + + installable: + autoInstall: false + + defaultInstallValues: + - enabled: false diff --git a/addons/orioledb/orioledb-addon.yaml b/addons/orioledb/orioledb-addon.yaml new file mode 100644 index 0000000..c83f9bf --- /dev/null +++ b/addons/orioledb/orioledb-addon.yaml @@ -0,0 +1,35 @@ +apiVersion: extensions.kubeblocks.io/v1alpha1 +kind: Addon +metadata: + name: orioledb + labels: + {{- include "kubeblocks.labels" . | nindent 4 }} + "kubeblocks.io/provider": apecloud + {{- if .Values.keepAddons }} + annotations: + helm.sh/resource-policy: keep + {{- end }} +spec: + description: 'OrioleDB – a modern cloud-native storage engine solving some PostgreSQL wicked problems.' + + type: Helm + + helm: + {{- include "kubeblocks.addonChartLocationURL" ( dict "name" "orioledb" "version" (default .Chart.Version .Values.versionOverride) "values" .Values) | indent 4 }} + {{- include "kubeblocks.addonChartsImage" . | indent 4 }} + + installOptions: + {{- if hasPrefix "oci://" .Values.addonChartLocationBase }} + version: {{ default .Chart.Version .Values.versionOverride }} + {{- end }} + + installable: + autoInstall: false + + defaultInstallValues: + - enabled: false + {{- with .Values.tolerations }} + tolerations: {{ toJson . | quote }} + {{- end }} + + diff --git a/addons/postgresql/postgresql-addon.yaml b/addons/postgresql/postgresql-addon.yaml new file mode 100644 index 0000000..4c3545a --- /dev/null +++ b/addons/postgresql/postgresql-addon.yaml @@ -0,0 +1,30 @@ +apiVersion: extensions.kubeblocks.io/v1alpha1 +kind: Addon +metadata: + name: postgresql + labels: + {{- include "kubeblocks.labels" . | nindent 4 }} + "kubeblocks.io/provider": community + {{- if .Values.keepAddons }} + annotations: + helm.sh/resource-policy: keep + {{- end }} +spec: + description: 'PostgreSQL (Postgres) is an open source object-relational database known for reliability and data integrity. ACID-compliant, it supports foreign keys, joins, views, triggers and stored procedures.' + + type: Helm + + helm: + {{- include "kubeblocks.addonChartLocationURL" ( dict "name" "postgresql" "version" (default .Chart.Version .Values.versionOverride) "values" .Values) | indent 4 }} + {{- include "kubeblocks.addonChartsImage" . | indent 4 }} + + installOptions: + {{- if hasPrefix "oci://" .Values.addonChartLocationBase }} + version: {{ default .Chart.Version .Values.versionOverride }} + {{- end }} + + installable: + autoInstall: true + + defaultInstallValues: + - enabled: true \ No newline at end of file diff --git a/addons/pulsar/pulsar-addon.yaml b/addons/pulsar/pulsar-addon.yaml new file mode 100644 index 0000000..6f36219 --- /dev/null +++ b/addons/pulsar/pulsar-addon.yaml @@ -0,0 +1,30 @@ +apiVersion: extensions.kubeblocks.io/v1alpha1 +kind: Addon +metadata: + name: pulsar + labels: + {{- include "kubeblocks.labels" . | nindent 4 }} + "kubeblocks.io/provider": community + {{- if .Values.keepAddons }} + annotations: + helm.sh/resource-policy: keep + {{- end }} +spec: + description: "Apache® Pulsar™ is an open-source, distributed messaging and streaming platform built for the cloud." + + type: Helm + + helm: + {{- include "kubeblocks.addonChartLocationURL" ( dict "name" "pulsar" "version" (default .Chart.Version .Values.versionOverride) "values" .Values) | indent 4 }} + {{- include "kubeblocks.addonChartsImage" . | indent 4 }} + + installOptions: + {{- if hasPrefix "oci://" .Values.addonChartLocationBase }} + version: {{ default .Chart.Version .Values.versionOverride }} + {{- end }} + + installable: + autoInstall: true + + defaultInstallValues: + - enabled: true diff --git a/addons/qdrant/qdrant-addon.yaml b/addons/qdrant/qdrant-addon.yaml new file mode 100644 index 0000000..3b635d8 --- /dev/null +++ b/addons/qdrant/qdrant-addon.yaml @@ -0,0 +1,33 @@ +apiVersion: extensions.kubeblocks.io/v1alpha1 +kind: Addon +metadata: + name: qdrant + labels: + {{- include "kubeblocks.labels" . | nindent 4 }} + "kubeblocks.io/provider": community + {{- if .Values.keepAddons }} + annotations: + helm.sh/resource-policy: keep + {{- end }} +spec: + description: 'Qdrant is an open source (Apache-2.0 licensed), vector similarity search engine and vector database.' + + type: Helm + + helm: + {{- include "kubeblocks.addonChartLocationURL" ( dict "name" "qdrant" "version" (default .Chart.Version .Values.versionOverride) "values" .Values) | indent 4 }} + {{- include "kubeblocks.addonChartsImage" . | indent 4 }} + + installOptions: + {{- if hasPrefix "oci://" .Values.addonChartLocationBase }} + version: {{ default .Chart.Version .Values.versionOverride }} + {{- end }} + + installable: + autoInstall: false + + defaultInstallValues: + - enabled: false + {{- with .Values.tolerations }} + tolerations: {{ toJson . | quote }} + {{- end }} diff --git a/addons/redis/redis-addon.yaml b/addons/redis/redis-addon.yaml new file mode 100644 index 0000000..de2211d --- /dev/null +++ b/addons/redis/redis-addon.yaml @@ -0,0 +1,30 @@ +apiVersion: extensions.kubeblocks.io/v1alpha1 +kind: Addon +metadata: + name: redis + labels: + {{- include "kubeblocks.labels" . | nindent 4 }} + "kubeblocks.io/provider": community + {{- if .Values.keepAddons }} + annotations: + helm.sh/resource-policy: keep + {{- end }} +spec: + description: 'Redis is an open source (BSD licensed), in-memory data structure store, used as a database, cache and message broker.' + + type: Helm + + helm: + {{- include "kubeblocks.addonChartLocationURL" ( dict "name" "redis" "version" (default .Chart.Version .Values.versionOverride) "values" .Values) | indent 4 }} + {{- include "kubeblocks.addonChartsImage" . | indent 4 }} + + installOptions: + {{- if hasPrefix "oci://" .Values.addonChartLocationBase }} + version: {{ default .Chart.Version .Values.versionOverride }} + {{- end }} + + installable: + autoInstall: true + + defaultInstallValues: + - enabled: true diff --git a/addons/risingwave/risingwave-addon.yaml b/addons/risingwave/risingwave-addon.yaml new file mode 100644 index 0000000..d55cacb --- /dev/null +++ b/addons/risingwave/risingwave-addon.yaml @@ -0,0 +1,30 @@ +apiVersion: extensions.kubeblocks.io/v1alpha1 +kind: Addon +metadata: + name: risingwave + labels: + {{- include "kubeblocks.labels" . | nindent 4 }} + "kubeblocks.io/provider": community + {{- if .Values.keepAddons }} + annotations: + helm.sh/resource-policy: keep + {{- end }} +spec: + description: 'RisingWave is a distributed SQL streaming database.' + + type: Helm + + helm: + {{- include "kubeblocks.addonChartLocationURL" ( dict "name" "risingwave" "version" (default .Chart.Version .Values.versionOverride) "values" .Values) | indent 4 }} + {{- include "kubeblocks.addonChartsImage" . | indent 4 }} + + installOptions: + {{- if hasPrefix "oci://" .Values.addonChartLocationBase }} + version: {{ default .Chart.Version .Values.versionOverride }} + {{- end }} + + installable: + autoInstall: false + + defaultInstallValues: + - enabled: true diff --git a/addons/starrocks/starrocks-addon.yaml b/addons/starrocks/starrocks-addon.yaml new file mode 100644 index 0000000..ac3a0b8 --- /dev/null +++ b/addons/starrocks/starrocks-addon.yaml @@ -0,0 +1,30 @@ +apiVersion: extensions.kubeblocks.io/v1alpha1 +kind: Addon +metadata: + name: starrocks + labels: + {{- include "kubeblocks.labels" . | nindent 4 }} + "kubeblocks.io/provider": community + {{- if .Values.keepAddons }} + annotations: + helm.sh/resource-policy: keep + {{- end }} +spec: + description: 'Starrocks is an open-source, high-performance analytical database.' + + type: Helm + + helm: + {{- include "kubeblocks.addonChartLocationURL" ( dict "name" "starrocks" "version" (default .Chart.Version .Values.versionOverride) "values" .Values) | indent 4 }} + {{- include "kubeblocks.addonChartsImage" . | indent 4 }} + + installOptions: + {{- if hasPrefix "oci://" .Values.addonChartLocationBase }} + version: {{ default .Chart.Version .Values.versionOverride }} + {{- end }} + + installable: + autoInstall: false + + defaultInstallValues: + - enabled: true diff --git a/addons/tdengine/tdengine-addon.yaml b/addons/tdengine/tdengine-addon.yaml new file mode 100644 index 0000000..84f1bdd --- /dev/null +++ b/addons/tdengine/tdengine-addon.yaml @@ -0,0 +1,30 @@ +apiVersion: extensions.kubeblocks.io/v1alpha1 +kind: Addon +metadata: + name: tdengine + labels: + {{- include "kubeblocks.labels" . | nindent 4 }} + "kubeblocks.io/provider": community + {{- if .Values.keepAddons }} + annotations: + helm.sh/resource-policy: keep + {{- end }} +spec: + description: 'TDengine is an open source, high-performance, cloud native time-series database optimized for Internet of Things (IoT), Connected Cars, and Industrial IoT.' + + type: Helm + + helm: + {{- include "kubeblocks.addonChartLocationURL" ( dict "name" "tdengine" "version" (default .Chart.Version .Values.versionOverride) "values" .Values) | indent 4 }} + {{- include "kubeblocks.addonChartsImage" . | indent 4 }} + + installOptions: + {{- if hasPrefix "oci://" .Values.addonChartLocationBase }} + version: {{ default .Chart.Version .Values.versionOverride }} + {{- end }} + + installable: + autoInstall: false + + defaultInstallValues: + - enabled: true diff --git a/addons/weaviate/vmagent-addon.yaml b/addons/weaviate/vmagent-addon.yaml new file mode 100644 index 0000000..aec6622 --- /dev/null +++ b/addons/weaviate/vmagent-addon.yaml @@ -0,0 +1,47 @@ +apiVersion: extensions.kubeblocks.io/v1alpha1 +kind: Addon +metadata: + name: victoria-metrics-agent + labels: + {{- include "kubeblocks.labels" . | nindent 4 }} + "kubeblocks.io/provider": community + {{- if .Values.keepAddons }} + annotations: + helm.sh/resource-policy: keep + {{- end }} +spec: + description: 'vmagent is a tiny agent which helps you collect metrics from various sources, relabel and filter the collected metrics and store them in VictoriaMetrics or any other storage systems via Prometheus remote_write protocol.' + type: Helm + + helm: + {{- include "kubeblocks.addonChartLocationURL" ( dict "name" "victoria-metrics-agent" "version" "0.8.41" "values" .Values) | indent 4 }} + {{- include "kubeblocks.addonChartsImage" . | indent 4 }} + + installOptions: + {{- if hasPrefix "oci://" .Values.addonChartLocationBase }} + version: 0.8.41 + {{- end }} + + valuesMapping: + valueMap: + replicaCount: replicaCount + + jsonMap: + tolerations: tolerations + + resources: + cpu: + requests: resources.requests.cpu + limits: resources.limits.cpu + memory: + requests: resources.requests.memory + limits: resources.limits.memory + + defaultInstallValues: + - replicas: 1 + {{- with .Values.tolerations }} + tolerations: {{ toJson . | quote }} + {{- end }} + + installable: + autoInstall: false diff --git a/addons/weaviate/weaviate-addon.yaml b/addons/weaviate/weaviate-addon.yaml new file mode 100644 index 0000000..51c5216 --- /dev/null +++ b/addons/weaviate/weaviate-addon.yaml @@ -0,0 +1,33 @@ +apiVersion: extensions.kubeblocks.io/v1alpha1 +kind: Addon +metadata: + name: weaviate + labels: + {{- include "kubeblocks.labels" . | nindent 4 }} + "kubeblocks.io/provider": community + {{- if .Values.keepAddons }} + annotations: + helm.sh/resource-policy: keep + {{- end }} +spec: + description: 'Weaviate is an open-source (BSD-3.0 licensed) vector database. It allows you to store data objects and vector embeddings from your favorite ML-models, and scale seamlessly into billions of data objects.' + + type: Helm + + helm: + {{- include "kubeblocks.addonChartLocationURL" ( dict "name" "weaviate" "version" (default .Chart.Version .Values.versionOverride) "values" .Values) | indent 4 }} + {{- include "kubeblocks.addonChartsImage" . | indent 4 }} + + installOptions: + {{- if hasPrefix "oci://" .Values.addonChartLocationBase }} + version: {{ default .Chart.Version .Values.versionOverride }} + {{- end }} + + installable: + autoInstall: false + + defaultInstallValues: + - enabled: false + {{- with .Values.tolerations }} + tolerations: {{ toJson . | quote }} + {{- end }} diff --git a/applications/bytebase/bytebase-addon.yaml b/applications/bytebase/bytebase-addon.yaml new file mode 100644 index 0000000..d08cf7e --- /dev/null +++ b/applications/bytebase/bytebase-addon.yaml @@ -0,0 +1,29 @@ +apiVersion: extensions.kubeblocks.io/v1alpha1 +kind: Addon +metadata: + name: bytebase + labels: + {{- include "kubeblocks.labels" . | nindent 4 }} + "kubeblocks.io/provider": community + {{- if .Values.keepAddons }} + annotations: + helm.sh/resource-policy: keep + {{- end }} +spec: + description: 'Bytebase is Database DevOps and CI/CD for Developer, DBA and Platform Engineering team.' + type: Helm + + helm: + {{- include "kubeblocks.addonChartLocationURL" ( dict "name" "bytebase" "version" (default .Chart.Version .Values.versionOverride) "values" .Values) | indent 4 }} + {{- include "kubeblocks.addonChartsImage" . | indent 4 }} + installOptions: + {{- if hasPrefix "oci://" .Values.addonChartLocationBase }} + version: {{ default .Chart.Version .Values.versionOverride }} + {{- end }} + + installable: + autoInstall: false + + defaultInstallValues: + - enabled: true + diff --git a/applications/jupyter-notebook/jupyter-notebook-addon.yaml b/applications/jupyter-notebook/jupyter-notebook-addon.yaml new file mode 100644 index 0000000..17de5c2 --- /dev/null +++ b/applications/jupyter-notebook/jupyter-notebook-addon.yaml @@ -0,0 +1,30 @@ +apiVersion: extensions.kubeblocks.io/v1alpha1 +kind: Addon +metadata: + name: jupyter-notebook + labels: + {{- include "kubeblocks.labels" . | nindent 4 }} + "kubeblocks.io/provider": community + {{- if .Values.keepAddons }} + annotations: + helm.sh/resource-policy: keep + {{- end }} +spec: + description: 'Jupyter Notebook: Interactive coding, documentation, and visualization tool with multi-language support for data analysis and education.' + type: Helm + + helm: + {{- include "kubeblocks.addonChartLocationURL" ( dict "name" "jupyter-notebook" "version" (default .Chart.Version .Values.versionOverride) "values" .Values) | indent 4 }} + {{- include "kubeblocks.addonChartsImage" . | indent 4 }} + + installOptions: + {{- if hasPrefix "oci://" .Values.addonChartLocationBase }} + version: {{ default .Chart.Version .Values.versionOverride }} + {{- end }} + + installable: + autoInstall: false + + defaultInstallValues: + - enabled: true + diff --git a/applications/jupyterhub/jupyterhub-addon.yaml b/applications/jupyterhub/jupyterhub-addon.yaml new file mode 100644 index 0000000..06d0848 --- /dev/null +++ b/applications/jupyterhub/jupyterhub-addon.yaml @@ -0,0 +1,30 @@ +apiVersion: extensions.kubeblocks.io/v1alpha1 +kind: Addon +metadata: + name: jupyter-hub + labels: + {{- include "kubeblocks.labels" . | nindent 4 }} + "kubeblocks.io/provider": community + {{- if .Values.keepAddons }} + annotations: + helm.sh/resource-policy: keep + {{- end }} +spec: + description: 'JupyterHub is a multi-user platform for hosting Jupyter Notebooks.' + type: Helm + + helm: + {{- include "kubeblocks.addonChartLocationURL" ( dict "name" "jupyterhub" "version" "0.1.0" "values" .Values) | indent 4 }} + {{- include "kubeblocks.addonChartsImage" . | indent 4 }} + + installOptions: + {{- if hasPrefix "oci://" .Values.addonChartLocationBase }} + version: 0.1.0 + {{- end }} + + installable: + autoInstall: false + + defaultInstallValues: + - enabled: true + diff --git a/applications/nyancat/nyancat-addon.yaml b/applications/nyancat/nyancat-addon.yaml new file mode 100644 index 0000000..be241f3 --- /dev/null +++ b/applications/nyancat/nyancat-addon.yaml @@ -0,0 +1,49 @@ +apiVersion: extensions.kubeblocks.io/v1alpha1 +kind: Addon +metadata: + name: nyancat + labels: + {{- include "kubeblocks.labels" . | nindent 4 }} + "kubeblocks.io/provider": apecloud + {{- if .Values.keepAddons }} + annotations: + helm.sh/resource-policy: keep + {{- end }} +spec: + description: 'Deploys a nyancat application in a cluster. + Nyancat is a demo application for showing database cluster availability.' + type: Helm + + helm: + {{- include "kubeblocks.addonChartLocationURL" ( dict "name" "nyancat" "version" (default .Chart.Version .Values.versionOverride) "values" .Values) | indent 4 }} + {{- include "kubeblocks.addonChartsImage" . | indent 4 }} + + installOptions: + {{- if hasPrefix "oci://" .Values.addonChartLocationBase }} + version: {{ default .Chart.Version .Values.versionOverride }} + {{- end }} + + valuesMapping: + valueMap: + replicaCount: replicaCount + + jsonMap: + tolerations: tolerations + + resources: + cpu: + requests: resources.requests.cpu + limits: resources.limits.cpu + memory: + requests: resources.requests.memory + limits: resources.limits.memory + + defaultInstallValues: + - replicas: 1 + {{- with .Values.tolerations }} + tolerations: {{ toJson . | quote }} + {{- end }} + + installable: + autoInstall: false + diff --git a/plugins/.gitkeep b/cli-plugins/.gitkeep similarity index 100% rename from plugins/.gitkeep rename to cli-plugins/.gitkeep diff --git a/tools/altermanager-webhook-adaptor/alertmanager-webhook-adaptor-addon.yaml b/tools/altermanager-webhook-adaptor/alertmanager-webhook-adaptor-addon.yaml new file mode 100644 index 0000000..0f872da --- /dev/null +++ b/tools/altermanager-webhook-adaptor/alertmanager-webhook-adaptor-addon.yaml @@ -0,0 +1,52 @@ +apiVersion: extensions.kubeblocks.io/v1alpha1 +kind: Addon +metadata: + name: {{ include "addon.alertmanager-webhook-adaptor.name" . }} + labels: + {{- include "kubeblocks.labels" . | nindent 4 }} + "kubeblocks.io/provider": apecloud + {{- if .Values.keepAddons }} + annotations: + helm.sh/resource-policy: keep + {{- end }} +spec: + description: 'alertmanager webhook adaptor for extending alertmanager notification channels' + type: Helm + + helm: + {{- include "kubeblocks.addonChartLocationURL" ( dict "name" "alertmanager-webhook-adaptor" "version" "0.1.4" "values" .Values) | indent 4 }} + {{- include "kubeblocks.addonChartsImage" . | indent 4 }} + + installOptions: + {{- if hasPrefix "oci://" .Values.addonChartLocationBase }} + version: 0.1.4 + {{- end }} + + installValues: + configMapRefs: + - name: {{ include "addon.alertmanager-webhook-adaptor.name" . }}-chart-kubeblocks-values + key: values-kubeblocks-override.yaml + + valuesMapping: + valueMap: + replicaCount: replicaCount + + jsonMap: + tolerations: tolerations + + resources: + cpu: + requests: resources.requests.cpu + limits: resources.limits.cpu + memory: + requests: resources.requests.memory + limits: resources.limits.memory + + defaultInstallValues: + - replicas: 1 + {{- with .Values.tolerations }} + tolerations: {{ toJson . | quote }} + {{- end }} + + installable: + autoInstall: {{ .Values.prometheus.enabled }} diff --git a/tools/altermanager-webhook-adaptor/alertmanager-webhook-adaptor-values.yaml b/tools/altermanager-webhook-adaptor/alertmanager-webhook-adaptor-values.yaml new file mode 100644 index 0000000..7e43b65 --- /dev/null +++ b/tools/altermanager-webhook-adaptor/alertmanager-webhook-adaptor-values.yaml @@ -0,0 +1,13 @@ +apiVersion: v1 +kind: ConfigMap +metadata: + name: {{ include "addon.alertmanager-webhook-adaptor.name" . }}-chart-kubeblocks-values + labels: + {{- include "kubeblocks.labels" . | nindent 4 }} + {{- if .Values.keepAddons }} + annotations: + helm.sh/resource-policy: keep + {{- end }} +data: + values-kubeblocks-override.yaml: |- + {{- get ( .Values | toYaml | fromYaml ) "alertmanager-webhook-adaptor" | toYaml | nindent 4 }} \ No newline at end of file diff --git a/tools/apecloud-otel-collector/apecloud-otel-collector-addon.yaml b/tools/apecloud-otel-collector/apecloud-otel-collector-addon.yaml new file mode 100644 index 0000000..1628670 --- /dev/null +++ b/tools/apecloud-otel-collector/apecloud-otel-collector-addon.yaml @@ -0,0 +1,56 @@ +apiVersion: extensions.kubeblocks.io/v1alpha1 +kind: Addon +metadata: + name: apecloud-otel-collector + labels: + {{- include "kubeblocks.labels" . | nindent 4 }} + "kubeblocks.io/provider": apecloud + {{- if .Values.keepAddons }} + annotations: + helm.sh/resource-policy: keep + {{- end }} +spec: + description: apecloud-otel-collector is a high-performance data collection agent with luxuriant function, which inspired by OpenTelemetry. + type: Helm + + helm: + {{- include "kubeblocks.addonChartLocationURL" ( dict "name" "apecloud-otel-collector" "version" "0.1.2-beta.3" "values" .Values) | indent 4 }} + {{- include "kubeblocks.addonChartsImage" . | indent 4 }} + + installOptions: + {{- if hasPrefix "oci://" .Values.addonChartLocationBase }} + version: 0.1.2-beta.3 + {{- end }} + + installValues: + configMapRefs: + - name: {{ include "addon.apecloud-otel-collector.name" . }}-chart-kubeblocks-values + key: values-kubeblocks-override.yaml + + valuesMapping: + valueMap: + + jsonMap: + tolerations: tolerations + + resources: + cpu: + requests: resources.requests.cpu + limits: resources.limits.cpu + memory: + requests: resources.requests.memory + limits: resources.limits.memory + + defaultInstallValues: + - enabled: true + {{- $tolerations := .Values.tolerations }} + {{- $dataPlaneTolerations := .Values.dataPlane.tolerations }} + {{- $mergedTolerations := concat $tolerations $dataPlaneTolerations }} + {{- with $mergedTolerations }} + tolerations: {{ toJson . | quote }} + {{- end }} + + installable: + autoInstall: {{ .Values.agamotto.enabled }} + + diff --git a/tools/apecloud-otel-collector/apecloud-otel-collector-values.yaml b/tools/apecloud-otel-collector/apecloud-otel-collector-values.yaml new file mode 100644 index 0000000..5b7701a --- /dev/null +++ b/tools/apecloud-otel-collector/apecloud-otel-collector-values.yaml @@ -0,0 +1,13 @@ +apiVersion: v1 +kind: ConfigMap +metadata: + name: {{ include "addon.apecloud-otel-collector.name" . }}-chart-kubeblocks-values + labels: + {{- include "kubeblocks.labels" . | nindent 4 }} + {{- if .Values.keepAddons }} + annotations: + helm.sh/resource-policy: keep + {{- end }} +data: + values-kubeblocks-override.yaml: |- + {{- get ( .Values | toYaml | fromYaml ) "agamotto" | toYaml | nindent 4 }} \ No newline at end of file diff --git a/tools/aws-loadbalancer-controller/aws-loadbalancer-controller-addon.yaml b/tools/aws-loadbalancer-controller/aws-loadbalancer-controller-addon.yaml new file mode 100644 index 0000000..4f49a54 --- /dev/null +++ b/tools/aws-loadbalancer-controller/aws-loadbalancer-controller-addon.yaml @@ -0,0 +1,60 @@ +apiVersion: extensions.kubeblocks.io/v1alpha1 +kind: Addon +metadata: + name: aws-load-balancer-controller + labels: + {{- include "kubeblocks.labels" . | nindent 4 }} + {{- if .Values.keepAddons }} + annotations: + helm.sh/resource-policy: keep + {{- end }} +spec: + description: The AWS Load Balancer Controller manages AWS Elastic Load Balancers for a Kubernetes cluster. + type: Helm + + helm: + {{- include "kubeblocks.addonChartLocationURL" ( dict "name" "aws-load-balancer-controller" "version" "1.4.8" "values" .Values) | indent 4 }} + {{- include "kubeblocks.addonChartsImage" . | indent 4 }} + + installOptions: + {{- if hasPrefix "oci://" .Values.addonChartLocationBase }} + version: 1.4.8 + {{- end }} + + installValues: + configMapRefs: + - name: aws-load-balancer-controller-chart-kubeblocks-values + key: values-kubeblocks-override.yaml + + setValues: + - clusterName={{ index .Values "aws-load-balancer-controller" "clusterName" }} + + valuesMapping: + valueMap: + replicaCount: replicaCount + + jsonMap: + tolerations: tolerations + + resources: + cpu: + requests: resources.requests.cpu + limits: resources.limits.cpu + memory: + requests: resources.requests.memory + limits: resources.limits.memory + + defaultInstallValues: + - replicas: 1 + {{- with .Values.tolerations }} + tolerations: {{ toJson . | quote }} + {{- end }} + + installable: + autoInstall: {{ index .Values "aws-load-balancer-controller" "enabled" }} + selectors: + - key: KubeGitVersion + operator: Contains + values: + - eks + diff --git a/tools/aws-loadbalancer-controller/aws-loadbalancer-controller-values.yaml b/tools/aws-loadbalancer-controller/aws-loadbalancer-controller-values.yaml new file mode 100644 index 0000000..4a37b0e --- /dev/null +++ b/tools/aws-loadbalancer-controller/aws-loadbalancer-controller-values.yaml @@ -0,0 +1,13 @@ +apiVersion: v1 +kind: ConfigMap +metadata: + name: aws-load-balancer-controller-chart-kubeblocks-values + labels: + {{- include "kubeblocks.labels" . | nindent 4 }} + {{- if .Values.keepAddons }} + annotations: + helm.sh/resource-policy: keep + {{- end }} +data: + values-kubeblocks-override.yaml: |- + {{- get ( .Values | toYaml | fromYaml ) "aws-load-balancer-controller" | toYaml | nindent 4 }} \ No newline at end of file diff --git a/tools/cert-manager/cert-manager-addon.yaml b/tools/cert-manager/cert-manager-addon.yaml new file mode 100644 index 0000000..a164390 --- /dev/null +++ b/tools/cert-manager/cert-manager-addon.yaml @@ -0,0 +1,30 @@ +apiVersion: extensions.kubeblocks.io/v1alpha1 +kind: Addon +metadata: + name: cert-manager + labels: + {{- include "kubeblocks.labels" . | nindent 4 }} + "kubeblocks.io/provider": community + {{- if .Values.keepAddons }} + annotations: + helm.sh/resource-policy: keep + {{- end }} +spec: + description: 'cert-manager adds certificates and certificate issuers as resource types in Kubernetes clusters, and simplifies the process of obtaining, renewing and using those certificates. ' + + type: Helm + + helm: + {{- include "kubeblocks.addonChartLocationURL" ( dict "name" "cert-manager" "version" (default .Chart.Version .Values.versionOverride) "values" .Values) | indent 4 }} + {{- include "kubeblocks.addonChartsImage" . | indent 4 }} + + installOptions: + {{- if hasPrefix "oci://" .Values.addonChartLocationBase }} + version: {{ default .Chart.Version .Values.versionOverride }} + {{- end }} + + installable: + autoInstall: false + + defaultInstallValues: + - enabled: true diff --git a/tools/chaos-mesh/chaos-mesh-addon.yaml b/tools/chaos-mesh/chaos-mesh-addon.yaml new file mode 100644 index 0000000..081ff92 --- /dev/null +++ b/tools/chaos-mesh/chaos-mesh-addon.yaml @@ -0,0 +1,94 @@ +apiVersion: extensions.kubeblocks.io/v1alpha1 +kind: Addon +metadata: + name: fault-chaos-mesh + labels: + {{- include "kubeblocks.labels" . | nindent 4 }} + "kubeblocks.io/provider": community + {{- if .Values.keepAddons }} + annotations: + helm.sh/resource-policy: keep + {{- end }} +spec: + description: 'Chaos Mesh is an open-source chaos engineering tool that facilitates testing the resiliency and reliability of distributed systems by introducing various failure scenarios in a controlled manner.' + + type: Helm + + helm: + {{- include "kubeblocks.addonChartLocationURL" ( dict "name" "chaos-mesh" "version" "2.5.2" "values" .Values) | indent 4 }} + {{- include "kubeblocks.addonChartsImage" . | indent 4 }} + + installOptions: + {{- if hasPrefix "oci://" .Values.addonChartLocationBase }} + version: 2.5.2 + {{- end }} + + installValues: + setValues: + - "version=2.5.2" + - "chaosDaemon.privileged=true" + - "dnsServer.create=true" + - "chaosDaemon.runtime=containerd" + - "chaosDaemon.socketPath=/run/containerd/containerd.sock" + - "images.registry=registry.cn-hangzhou.aliyuncs.com" + - "controllerManager.image.repository=apecloud/chaos-mesh" + - "chaosDaemon.image.repository=apecloud/chaos-daemon" + - "dashboard.image.repository=apecloud/chaos-dashboard" + + valuesMapping: + valueMap: + replicaCount: controllerManager.replicaCount + jsonMap: + tolerations: controllerManager.tolerations + resources: + cpu: + requests: controllerManager.resources.requests.cpu + memory: + requests: controllerManager.resources.requests.memory + + extras: + - name: chaosDaemon + jsonMap: + tolerations: chaosDaemon.tolerations + + - name: dashboard + valueMap: + replicaCount: dashboard.replicaCount + jsonMap: + tolerations: dashboard.tolerations + resources: + cpu: + requests: dashboard.resources.requests.cpu + memory: + requests: dashboard.resources.requests.memory + + - name: dnsServer + jsonMap: + tolerations: dnsServer.tolerations + resources: + cpu: + requests: dnsServer.resources.requests.cpu + memory: + requests: dnsServer.resources.requests.memory + + installable: + autoInstall: false + + defaultInstallValues: + - enabled: false + {{- with .Values.tolerations }} + tolerations: {{ toJson . | quote }} + {{- end }} + extras: + - name: chaosDaemon + {{- with .Values.tolerations }} + tolerations: {{ toJson . | quote }} + {{- end }} + - name: dashboard + {{- with .Values.tolerations }} + tolerations: {{ toJson . | quote }} + {{- end }} + - name: dnsServer + {{- with .Values.tolerations }} + tolerations: {{ toJson . | quote }} + {{- end }} \ No newline at end of file diff --git a/tools/csi-driver/csi-driver-addon.yaml b/tools/csi-driver/csi-driver-addon.yaml new file mode 100644 index 0000000..06d4fce --- /dev/null +++ b/tools/csi-driver/csi-driver-addon.yaml @@ -0,0 +1,69 @@ +apiVersion: extensions.kubeblocks.io/v1alpha1 +kind: Addon +metadata: + name: kubeblocks-csi-driver + labels: + {{- include "kubeblocks.labels" . | nindent 4 }} + {{- if .Values.keepAddons }} + annotations: + helm.sh/resource-policy: keep + {{- end }} +spec: + description: 'KubeBlocks CSI driver provides a container storage interface used by Container Orchestrators + to manage the lifecycle of block storage for cloud vendors.' + type: Helm + + helm: + {{- include "kubeblocks.addonChartLocationURL" ( dict "name" "kubeblocks-csi-driver" "version" "0.1.0" "values" .Values) | indent 4 }} + {{- include "kubeblocks.addonChartsImage" . | indent 4 }} + + installOptions: + {{- if hasPrefix "oci://" .Values.addonChartLocationBase }} + version: 0.1.0 + {{- end }} + + valuesMapping: + valueMap: + replicaCount: controller.replicaCount + jsonMap: + tolerations: controller.tolerations + + resources: + cpu: + requests: controller.resources.requests.cpu + limits: controller.resources.limits.cpu + memory: + requests: controller.resources.requests.memory + limits: controller.resources.limits.memory + extras: + - name: node + jsonMap: + tolerations: node.tolerations + + resources: + cpu: + requests: node.resources.requests.cpu + limits: node.resources.limits.cpu + memory: + requests: node.resources.requests.memory + limits: node.resources.limits.memory + + defaultInstallValues: + - enabled: false + {{- with .Values.tolerations }} + tolerations: {{ toJson . | quote }} + {{- end }} + extras: + - name: node + {{- with .Values.tolerations }} + tolerations: {{ toJson . | quote }} + {{- end }} + + + installable: + autoInstall: {{ get ( get ( .Values | toYaml | fromYaml ) "kubeblocks-csi-driver" ) "enabled" }} + selectors: + - key: KubeGitVersion + operator: Contains + values: + - eks diff --git a/tools/csi-hostpath-driver/csi-hostpath-driver-addon.yaml b/tools/csi-hostpath-driver/csi-hostpath-driver-addon.yaml new file mode 100644 index 0000000..01236d3 --- /dev/null +++ b/tools/csi-hostpath-driver/csi-hostpath-driver-addon.yaml @@ -0,0 +1,50 @@ +apiVersion: extensions.kubeblocks.io/v1alpha1 +kind: Addon +metadata: + name: csi-hostpath-driver + labels: + {{- include "kubeblocks.labels" . | nindent 4 }} + "kubeblocks.io/provider": community + {{- if .Values.keepAddons }} + annotations: + helm.sh/resource-policy: keep + {{- end }} +spec: + description: Container Storage Interface (CSI) driver for HostPath volumes + type: Helm + + helm: + {{- include "kubeblocks.addonChartLocationURL" ( dict "name" "csi-hostpath-driver" "version" (default .Chart.Version .Values.versionOverride) "values" .Values) | indent 4 }} + {{- include "kubeblocks.addonChartsImage" . | indent 4 }} + + installOptions: + {{- if hasPrefix "oci://" .Values.addonChartLocationBase }} + version: {{ default .Chart.Version .Values.versionOverride }} + {{- end }} + + installValues: + configMapRefs: + - name: csi-hostpath-driver-chart-kubeblocks-values + key: values-kubeblocks-override.yaml + + valuesMapping: + jsonMap: + tolerations: tolerations + + defaultInstallValues: + - enabled: true + {{- with .Values.tolerations }} + tolerations: {{ toJson . | quote }} + {{- end }} + + installable: + autoInstall: {{ get ( get ( .Values | toYaml | fromYaml ) "csi-hostpath-driver" ) "enabled" }} + selectors: + - key: KubeGitVersion + operator: DoesNotContain + values: + - eks + - aliyun + - gke + - tke + - aks diff --git a/tools/csi-hostpath-driver/csi-hostpath-driver-values.yaml b/tools/csi-hostpath-driver/csi-hostpath-driver-values.yaml new file mode 100644 index 0000000..54c6692 --- /dev/null +++ b/tools/csi-hostpath-driver/csi-hostpath-driver-values.yaml @@ -0,0 +1,13 @@ +apiVersion: v1 +kind: ConfigMap +metadata: + name: csi-hostpath-driver-chart-kubeblocks-values + labels: + {{- include "kubeblocks.labels" . | nindent 4 }} + {{- if .Values.keepAddons }} + annotations: + helm.sh/resource-policy: keep + {{- end }} +data: + values-kubeblocks-override.yaml: |- + {{- get ( .Values | toYaml | fromYaml ) "csi-hostpath-driver" | toYaml | nindent 4 }} \ No newline at end of file diff --git a/tools/csi-s3/csi-s3-addon.yaml b/tools/csi-s3/csi-s3-addon.yaml new file mode 100644 index 0000000..1d313d5 --- /dev/null +++ b/tools/csi-s3/csi-s3-addon.yaml @@ -0,0 +1,52 @@ +apiVersion: extensions.kubeblocks.io/v1alpha1 +kind: Addon +metadata: + name: csi-s3 + labels: + {{- include "kubeblocks.labels" . | nindent 4 }} + "kubeblocks.io/provider": community + {{- if .Values.keepAddons }} + annotations: + helm.sh/resource-policy: keep + {{- end }} +spec: + description: Container Storage Interface (CSI) driver for S3 volumes + type: Helm + + helm: + {{- include "kubeblocks.addonChartLocationURL" ( dict "name" "csi-s3" "version" (default .Chart.Version .Values.versionOverride) "values" .Values) | indent 4 }} + {{- include "kubeblocks.addonChartsImage" . | indent 4 }} + + installOptions: + {{- if hasPrefix "oci://" .Values.addonChartLocationBase }} + version: {{ default .Chart.Version .Values.versionOverride }} + {{- end }} + + installValues: + secretRefs: + - name: {{ include "kubeblocks.fullname" . }}-cloud-provider + key: csi-s3 + + valuesMapping: + jsonMap: + tolerations: tolerations + extras: + - name: daemonset + jsonMap: + tolerations: daemonsetTolerations + + defaultInstallValues: + - enabled: true + {{- with .Values.tolerations }} + tolerations: {{ toJson . | quote }} + {{- end }} + + installable: + {{- $autoInstall := (get ( get ( .Values | toYaml | fromYaml ) "csi-s3" ) "enabled") }} + {{- /* auto install csi-s3 if it's required by backup repos */ -}} + {{- if .Values.backupRepo.create }} + {{- if eq .Values.backupRepo.storageProvider "s3" "oss" "minio" "obs" "cos" "gcs" }} + {{- $autoInstall = true }} + {{- end }} + {{- end }} + autoInstall: {{ $autoInstall }} diff --git a/tools/external-dns/external-dns-addon.yaml b/tools/external-dns/external-dns-addon.yaml new file mode 100644 index 0000000..f3981c9 --- /dev/null +++ b/tools/external-dns/external-dns-addon.yaml @@ -0,0 +1,147 @@ +apiVersion: extensions.kubeblocks.io/v1alpha1 +kind: Addon +metadata: + name: external-dns + labels: + {{- include "kubeblocks.labels" . | nindent 4 }} + {{- if .Values.keepAddons }} + annotations: + helm.sh/resource-policy: keep + {{- end }} +spec: + description: >- + ExternalDNS synchronizes exposed Kubernetes Services and Ingresses with DNS providers. + +{{- if (.Capabilities.KubeVersion.GitVersion | contains "-eks") }} + Before enabling this addon, you should enable the aws-load-balancer-controller addon and create the hosted zone {{ index .Values "external-dns" "domain" }} in the Route53 first. + + Then you should properly setup permissions for external-dns to call the OpenAPI, please refer to this guide: https://github.com/kubernetes-sigs/external-dns/blob/master/docs/tutorials/aws.md + + Finally, you can enable this addon by executing the following command, please note replacing the variables. + + kbcli addon enable external-dns --set provider=aws \ + --set source=service \ + --set policy=sync \ + --set triggerLoopOnEvent=true \ + --set interval=5m \ + --set registry=txt \ + --set labelFilter=app.kubernetes.io/managed-by=kubeblocks \ + --set domainFilters={{ index .Values "external-dns" "domain" }} \ + --set aws.credentials.accessKey=${accessKey} \ + --set aws.credentials.secretKey=${secretKey} \ + --set aws.region=${region} + +{{- else if (.Capabilities.KubeVersion.GitVersion | contains "-ack") }} + Before enabling this addon, you should create the domain {{ index .Values "external-dns" "domain" }} in the Cloud DNS service or Private Zone service first. + + Then you should properly setup permissions for external-dns to call the OpenAPI, please refer to this guide: https://github.com/kubernetes-sigs/external-dns/blob/master/docs/tutorials/alibabacloud.md + + Finally, you can enable this addon by executing the following command, please note replacing the variables. + + kbcli addon enable external-dns --set provider=alibabacloud \ + --set source=service \ + --set policy=sync \ + --set triggerLoopOnEvent=true \ + --set interval=5m \ + --set registry=txt \ + --set labelFilter=app.kubernetes.io/managed-by=kubeblocks \ + --set domainFilters={{ index .Values "external-dns" "domain" }} \ + --set alibabacloud.accessKeyId=${accessKeyId} \ + --set alibabacloud.accessKeySecret=${accessKeySecret} \ + --set alibabacloud.vpcId=${vpcId} + +{{- else if (.Capabilities.KubeVersion.GitVersion | contains "-gke") }} + Before enabling this addon, you should create the zone {{ index .Values "external-dns" "domain" }} in the Cloud DNS service first. + + Then you should properly setup permissions for external-dns to call the OpenAPI, please refer to this guide: https://github.com/kubernetes-sigs/external-dns/blob/master/docs/tutorials/gke.md + + Finally, you can enable this addon by executing the following command, please note replacing the variables. + + kbcli addon enable external-dns --set provider=google \ + --set source=service \ + --set policy=sync \ + --set triggerLoopOnEvent=true \ + --set interval=5m \ + --set registry=txt \ + --set labelFilter=app.kubernetes.io/managed-by=kubeblocks \ + --set domainFilters={{ index .Values "external-dns" "domain" }} \ + --set google.project=${project} \ + --set google.serviceAccountSecret=${serviceAccountSecret} \ + --set google.serviceAccountSecretKey=${serviceAccountSecretKey} \ + --set google.serviceAccountKey=${serviceAccountKey} + +{{/* FIXME: Azure AKS does not have unique identifier in the git version, we should use other method to identify AKS */}} +{{- else if (.Capabilities.KubeVersion.GitVersion | contains "-aks") }} + Before enabling this addon, you should create the zone {{ index .Values "external-dns" "domain" }} in the Azure DNS or Azure Private Zone service first. + + Then you should properly setup permissions for external-dns to call the OpenAPI, please refer to these guides: + https://github.com/kubernetes-sigs/external-dns/blob/master/docs/tutorials/azure.md + https://github.com/kubernetes-sigs/external-dns/blob/master/docs/tutorials/azure-private-dns.md + + If it's a zone in Azure Private Zone service, you can enable this addon by executing the following command, please note replacing the variables. + + kbcli addon enable external-dns --set provider=azure-private-dns \ + --set source=service \ + --set policy=sync \ + --set triggerLoopOnEvent=true \ + --set interval=5m \ + --set registry=txt \ + --set labelFilter=app.kubernetes.io/managed-by=kubeblocks \ + --set domainFilters={{ index .Values "external-dns" "domain" }} \ + --set azure.subscriptionId=${subscriptionId} \ + --set azure.resourceGroup=${resourceGroup} + + If it's a zone in Azure DNS, please follow the command below. + + kbcli addon enable external-dns --set provider=azure \ + --set source=service \ + --set policy=sync \ + --set triggerLoopOnEvent=true \ + --set interval=5m \ + --set registry=txt \ + --set labelFilter=app.kubernetes.io/managed-by=kubeblocks \ + --set domainFilters={{ index .Values "external-dns" "domain" }} \ + --set azure.subscriptionId=${subscriptionId} \ + --set azure.resourceGroup=${resourceGroup} + +{{- end }} + + type: Helm + + helm: + {{- include "kubeblocks.addonChartLocationURL" ( dict "name" "external-dns" "version" "6.20.4" "values" .Values) | indent 4 }} + {{- include "kubeblocks.addonChartsImage" . | indent 4 }} + + installOptions: + {{- if hasPrefix "oci://" .Values.addonChartLocationBase }} + version: 6.20.4 + {{- end }} + + installValues: + configMapRefs: + - name: external-dns-chart-kubeblocks-values + key: values-kubeblocks-override.yaml + + valuesMapping: + valueMap: + replicaCount: replicaCount + + jsonMap: + tolerations: tolerations + + resources: + cpu: + requests: resources.requests.cpu + limits: resources.limits.cpu + memory: + requests: resources.requests.memory + limits: resources.limits.memory + + defaultInstallValues: + - replicas: 1 + {{- with .Values.tolerations }} + tolerations: {{ toJson . | quote }} + {{- end }} + + installable: + autoInstall: {{ index .Values "external-dns" "enabled" }} diff --git a/tools/external-dns/external-dns-values.yaml b/tools/external-dns/external-dns-values.yaml new file mode 100644 index 0000000..7321a9d --- /dev/null +++ b/tools/external-dns/external-dns-values.yaml @@ -0,0 +1,13 @@ +apiVersion: v1 +kind: ConfigMap +metadata: + name: external-dns-chart-kubeblocks-values + labels: + {{- include "kubeblocks.labels" . | nindent 4 }} + {{- if .Values.keepAddons }} + annotations: + helm.sh/resource-policy: keep + {{- end }} +data: + values-kubeblocks-override.yaml: |- + {{- get ( .Values | toYaml | fromYaml ) "external-dns" | toYaml | nindent 4 }} \ No newline at end of file diff --git a/tools/grafana/grafana-addon.yaml b/tools/grafana/grafana-addon.yaml new file mode 100644 index 0000000..e775643 --- /dev/null +++ b/tools/grafana/grafana-addon.yaml @@ -0,0 +1,72 @@ +apiVersion: extensions.kubeblocks.io/v1alpha1 +kind: Addon +metadata: + name: grafana + labels: + {{- include "kubeblocks.labels" . | nindent 4 }} + "kubeblocks.io/provider": community + {{- if .Values.keepAddons }} + annotations: + helm.sh/resource-policy: keep + {{- end }} +spec: + description: The leading tool for querying and visualizing time series and metrics. + type: Helm + + helm: + {{- include "kubeblocks.addonChartLocationURL" ( dict "name" "grafana" "version" "6.43.5" "values" .Values) | indent 4 }} + {{- include "kubeblocks.addonChartsImage" . | indent 4 }} + + installOptions: + {{- if hasPrefix "oci://" .Values.addonChartLocationBase }} + version: 6.43.5 + {{- end }} + + installValues: + configMapRefs: + - name: grafana-chart-kubeblocks-values + key: values-kubeblocks-override.yaml + + valuesMapping: + valueMap: + replicaCount: replicas + storageClass: persistence.storageClassName + persistentVolumeEnabled: persistence.enabled + + jsonMap: + tolerations: tolerations + + resources: + storage: persistence.size + cpu: + requests: resources.requests.cpu + limits: resources.limits.cpu + memory: + requests: resources.requests.memory + limits: resources.limits.memory + + defaultInstallValues: + - replicas: 1 + storageClass: + resources: + requests: + storage: 1Gi + {{- with .Values.tolerations }} + tolerations: {{ toJson . | quote }} + {{- end }} + + - selectors: + - key: KubeGitVersion + operator: Contains + values: + - aliyun + replicas: 1 + resources: + requests: + storage: 20Gi + {{- with .Values.tolerations }} + tolerations: {{ toJson . | quote }} + {{- end }} + + installable: + autoInstall: {{ .Values.grafana.enabled }} diff --git a/tools/grafana/grafana-values.yaml b/tools/grafana/grafana-values.yaml new file mode 100644 index 0000000..6374ff4 --- /dev/null +++ b/tools/grafana/grafana-values.yaml @@ -0,0 +1,13 @@ +apiVersion: v1 +kind: ConfigMap +metadata: + name: grafana-chart-kubeblocks-values + labels: + {{- include "kubeblocks.labels" . | nindent 4 }} + {{- if .Values.keepAddons }} + annotations: + helm.sh/resource-policy: keep + {{- end }} +data: + values-kubeblocks-override.yaml: |- + {{- .Values.grafana | toYaml | nindent 4 }} \ No newline at end of file diff --git a/tools/kubebench/kubebench-addon.yaml b/tools/kubebench/kubebench-addon.yaml new file mode 100644 index 0000000..4598e7d --- /dev/null +++ b/tools/kubebench/kubebench-addon.yaml @@ -0,0 +1,48 @@ +apiVersion: extensions.kubeblocks.io/v1alpha1 +kind: Addon +metadata: + name: kubebench + labels: + {{- include "kubeblocks.labels" . | nindent 4 }} + "kubeblocks.io/provider": community + {{- if .Values.keepAddons }} + annotations: + helm.sh/resource-policy: keep + {{- end }} +spec: + description: 'A Kubernetes operator for running benchmark tests on databases to evaluate their performance.' + + type: Helm + + helm: + {{- include "kubeblocks.addonChartLocationURL" ( dict "name" "kubebench" "version" "0.0.1" "values" .Values) | indent 4 }} + {{- include "kubeblocks.addonChartsImage" . | indent 4 }} + + installOptions: + {{- if hasPrefix "oci://" .Values.addonChartLocationBase }} + version: 0.0.1 + {{- end }} + + valuesMapping: + valueMap: + replicaCount: replicaCount + + jsonMap: + tolerations: tolerations + + resources: + cpu: + requests: resources.requests.cpu + limits: resources.limits.cpu + memory: + requests: resources.requests.memory + limits: resources.limits.memory + + installable: + autoInstall: false + + defaultInstallValues: + - enabled: true + {{- with .Values.tolerations }} + tolerations: {{ toJson . | quote }} + {{- end }} diff --git a/tools/loki/loki-addon.yaml b/tools/loki/loki-addon.yaml new file mode 100644 index 0000000..063abe8 --- /dev/null +++ b/tools/loki/loki-addon.yaml @@ -0,0 +1,81 @@ +apiVersion: extensions.kubeblocks.io/v1alpha1 +kind: Addon +metadata: + name: {{ include "addon.loki.name" . }} + labels: + {{- include "kubeblocks.labels" . | nindent 4 }} + "kubeblocks.io/provider": community + {{- if .Values.keepAddons }} + annotations: + helm.sh/resource-policy: keep + {{- end }} +spec: + description: Grafana Loki is a horizontally scalable, highly available, and multi-tenant log aggregation system, which inspired by Prometheus. + type: Helm + + helm: + {{- include "kubeblocks.addonChartLocationURL" ( dict "name" "loki" "version" "5.8.9" "values" .Values) | indent 4 }} + {{- include "kubeblocks.addonChartsImage" . | indent 4 }} + + installOptions: + {{- if hasPrefix "oci://" .Values.addonChartLocationBase }} + version: 5.8.9 + {{- end }} + + installValues: + configMapRefs: + - name: {{ include "addon.loki.name" . }}-chart-kubeblocks-values + key: values-kubeblocks-override.yaml + + valuesMapping: + valueMap: + replicaCount: singleBinary.replicas + storageClass: singleBinary.persistence.storageClass + persistentVolumeEnabled: singleBinary.persistence.enabled + + jsonMap: + tolerations: global.tolerations + + resources: + storage: singleBinary.persistence.size + + defaultInstallValues: + - replicas: 1 + storageClass: + resources: + requests: + storage: 8Gi + {{- with .Values.tolerations }} + tolerations: {{ toJson . | quote }} + {{- end }} + # for ACK, the smallest storage size is 20Gi, the format of GitVersion is v1.24.6-aliyun.1 + - selectors: + - key: KubeGitVersion + operator: Contains + values: + - aliyun + replicas: 1 + resources: + requests: + storage: 20Gi + {{- with .Values.tolerations }} + tolerations: {{ toJson . | quote }} + {{- end }} + # for TKE, the smallest storage size is 10Gi, the format of GitVersion is v1.24.4-tke.5 + - selectors: + - key: KubeGitVersion + operator: Contains + values: + - tke + replicas: 1 + resources: + requests: + storage: 10Gi + {{- with .Values.tolerations }} + tolerations: {{ toJson . | quote }} + {{- end }} + + installable: + autoInstall: {{ .Values.loki.enabled }} + + diff --git a/tools/loki/loki-values.yaml b/tools/loki/loki-values.yaml new file mode 100644 index 0000000..8e3094c --- /dev/null +++ b/tools/loki/loki-values.yaml @@ -0,0 +1,13 @@ +apiVersion: v1 +kind: ConfigMap +metadata: + name: {{ include "addon.loki.name" . }}-chart-kubeblocks-values + labels: + {{- include "kubeblocks.labels" . | nindent 4 }} + {{- if .Values.keepAddons }} + annotations: + helm.sh/resource-policy: keep + {{- end }} +data: + values-kubeblocks-override.yaml: |- + {{- .Values.loki | toYaml | nindent 4 }} \ No newline at end of file diff --git a/tools/migration/migration-addon.yaml b/tools/migration/migration-addon.yaml new file mode 100644 index 0000000..466e597 --- /dev/null +++ b/tools/migration/migration-addon.yaml @@ -0,0 +1,48 @@ +apiVersion: extensions.kubeblocks.io/v1alpha1 +kind: Addon +metadata: + name: migration + labels: + {{- include "kubeblocks.labels" . | nindent 4 }} + "kubeblocks.io/provider": community + {{- if .Values.keepAddons }} + annotations: + helm.sh/resource-policy: keep + {{- end }} +spec: + description: 'Migration is a tool for migrating data between two databases.' + + type: Helm + + helm: + {{- include "kubeblocks.addonChartLocationURL" ( dict "name" "dt-platform" "version" "0.1.1" "values" .Values) | indent 4 }} + {{- include "kubeblocks.addonChartsImage" . | indent 4 }} + + installOptions: + {{- if hasPrefix "oci://" .Values.addonChartLocationBase }} + version: 0.1.1 + {{- end }} + + valuesMapping: + valueMap: + replicaCount: replicaCount + + jsonMap: + tolerations: tolerations + + resources: + cpu: + requests: resources.requests.cpu + limits: resources.limits.cpu + memory: + requests: resources.requests.memory + limits: resources.limits.memory + + installable: + autoInstall: false + + defaultInstallValues: + - enabled: true + {{- with .Values.tolerations }} + tolerations: {{ toJson . | quote }} + {{- end }} diff --git a/tools/minio/minio.yaml b/tools/minio/minio.yaml new file mode 100644 index 0000000..7897538 --- /dev/null +++ b/tools/minio/minio.yaml @@ -0,0 +1,29 @@ +apiVersion: extensions.kubeblocks.io/v1alpha1 +kind: Addon +metadata: + name: minio + labels: + {{- include "kubeblocks.labels" . | nindent 4 }} + "kubeblocks.io/provider": community + {{- if .Values.keepAddons }} + annotations: + helm.sh/resource-policy: keep + {{- end }} +spec: + description: 'MinIO(R) is an object storage server, compatible with Amazon S3 cloud storage service, mainly used for storing unstructured data (such as photos, videos, log files, etc.).' + type: Helm + + helm: + chartLocationURL: oci://registry-1.docker.io/bitnamicharts/minio + + installValues: + setValues: + - auth.rootUser=kubeblocks + - auth.rootPassword=kubeblocks + + installable: + autoInstall: false + + defaultInstallValues: + - enabled: true + diff --git a/tools/nvidia-gpu-exporter/nvidia-gpu-exporter-addon.yaml b/tools/nvidia-gpu-exporter/nvidia-gpu-exporter-addon.yaml new file mode 100644 index 0000000..0302c1b --- /dev/null +++ b/tools/nvidia-gpu-exporter/nvidia-gpu-exporter-addon.yaml @@ -0,0 +1,30 @@ +apiVersion: extensions.kubeblocks.io/v1alpha1 +kind: Addon +metadata: + name: nvidia-gpu-exporter + labels: + {{- include "kubeblocks.labels" . | nindent 4 }} + "kubeblocks.io/provider": community + {{- if .Values.keepAddons }} + annotations: + helm.sh/resource-policy: keep + {{- end }} +spec: + description: 'Nvidia GPU exporter for prometheus using nvidia-smi binary' + type: Helm + + helm: + {{- include "kubeblocks.addonChartLocationURL" ( dict "name" "nvidia-gpu-exporter" "version" "0.3.1" "values" .Values) | indent 4 }} + {{- include "kubeblocks.addonChartsImage" . | indent 4 }} + + installOptions: + {{- if hasPrefix "oci://" .Values.addonChartLocationBase }} + version: 0.3.1 + {{- end }} + + installable: + autoInstall: false + + defaultInstallValues: + - enabled: true + diff --git a/tools/prometheus/prometheus-addon.yaml b/tools/prometheus/prometheus-addon.yaml new file mode 100644 index 0000000..8426296 --- /dev/null +++ b/tools/prometheus/prometheus-addon.yaml @@ -0,0 +1,143 @@ +apiVersion: extensions.kubeblocks.io/v1alpha1 +kind: Addon +metadata: + name: {{ include "addon.prometheus.name" . }} + labels: + {{- include "kubeblocks.labels" . | nindent 4 }} + "kubeblocks.io/provider": community + {{- if .Values.keepAddons }} + annotations: + helm.sh/resource-policy: keep + {{- end }} +spec: + description: Prometheus is a monitoring system and time series database. + type: Helm + + helm: + {{- include "kubeblocks.addonChartLocationURL" ( dict "name" "prometheus" "version" "15.16.1" "values" .Values) | indent 4 }} + {{- include "kubeblocks.addonChartsImage" . | indent 4 }} + + installOptions: + {{- if hasPrefix "oci://" .Values.addonChartLocationBase }} + version: 15.16.1 + {{- end }} + + installValues: + configMapRefs: + - name: {{ include "addon.prometheus.name" . }}-chart-kubeblocks-values + key: values-kubeblocks-override.yaml + + valuesMapping: + valueMap: + replicaCount: server.replicaCount + storageClass: server.persistentVolume.storageClass + persistentVolumeEnabled: server.persistentVolume.enabled + + jsonMap: + tolerations: server.tolerations + + resources: + storage: server.persistentVolume.size + cpu: + requests: server.resources.requests.cpu + limits: server.resources.limits.cpu + memory: + requests: server.resources.requests.memory + limits: server.resources.limits.memory + extras: + - name: alertmanager + valueMap: + replicaCount: alertmanager.replicaCount + storageClass: alertmanager.persistentVolume.storageClass + persistentVolumeEnabled: alertmanager.persistentVolume.enabled + + jsonMap: + tolerations: alertmanager.tolerations + + resources: + storage: alertmanager.persistentVolume.size + cpu: + requests: alertmanager.resources.requests.cpu + limits: alertmanager.resources.limits.cpu + memory: + requests: alertmanager.resources.requests.memory + limits: alertmanager.resources.limits.memory + + defaultInstallValues: + - replicas: 1 + resources: + requests: + storage: 20Gi + memory: 512Mi + limits: + memory: 4Gi + {{- with .Values.tolerations }} + tolerations: {{ toJson . | quote }} + {{- end }} + + extras: + - name: alertmanager + replicas: 1 + resources: + requests: + storage: 4Gi + {{- with .Values.tolerations }} + tolerations: {{ toJson . | quote }} + {{- end }} + + # for ACK, the smallest storage size is 20Gi, the format of GitVersion is v1.24.6-aliyun.1 + - selectors: + - key: KubeGitVersion + operator: Contains + values: + - aliyun + replicas: 1 + resources: + requests: + storage: 20Gi + memory: 512Mi + limits: + memory: 4Gi + {{- with .Values.tolerations }} + tolerations: {{ toJson . | quote }} + {{- end }} + + extras: + - name: alertmanager + replicas: 1 + resources: + requests: + storage: 20Gi + {{- with .Values.tolerations }} + tolerations: {{ toJson . | quote }} + {{- end }} + + # for TKE, the smallest storage size is 10Gi, the format of GitVersion is v1.24.4-tke.5 + - selectors: + - key: KubeGitVersion + operator: Contains + values: + - tke + replicas: 1 + resources: + requests: + storage: 20Gi + memory: 512Mi + limits: + memory: 4Gi + {{- with .Values.tolerations }} + tolerations: {{ toJson . | quote }} + {{- end }} + + extras: + - name: alertmanager + replicas: 1 + resources: + requests: + storage: 10Gi + {{- with .Values.tolerations }} + tolerations: {{ toJson . | quote }} + {{- end }} + + installable: + autoInstall: {{ .Values.prometheus.enabled }} diff --git a/tools/prometheus/prometheus-values.yaml b/tools/prometheus/prometheus-values.yaml new file mode 100644 index 0000000..15b20e5 --- /dev/null +++ b/tools/prometheus/prometheus-values.yaml @@ -0,0 +1,13 @@ +apiVersion: v1 +kind: ConfigMap +metadata: + name: {{ include "addon.prometheus.name" . }}-chart-kubeblocks-values + labels: + {{- include "kubeblocks.labels" . | nindent 4 }} + {{- if .Values.keepAddons }} + annotations: + helm.sh/resource-policy: keep + {{- end }} +data: + values-kubeblocks-override.yaml: |- + {{- .Values.prometheus | toYaml | nindent 4 }} \ No newline at end of file diff --git a/tools/pyroscope/pyroscope-addon.yaml b/tools/pyroscope/pyroscope-addon.yaml new file mode 100644 index 0000000..bd7bdca --- /dev/null +++ b/tools/pyroscope/pyroscope-addon.yaml @@ -0,0 +1,46 @@ +apiVersion: extensions.kubeblocks.io/v1alpha1 +kind: Addon +metadata: + name: pyroscope-server + labels: + {{- include "kubeblocks.labels" . | nindent 4 }} + "kubeblocks.io/provider": community + {{- if .Values.keepAddons }} + annotations: + helm.sh/resource-policy: keep + {{- end }} +spec: + description: Open Source Continuous Profiling Server. + type: Helm + + helm: + {{- include "kubeblocks.addonChartLocationURL" ( dict "name" "pyroscope" "version" "0.2.92" "values" .Values) | indent 4 }} + {{- include "kubeblocks.addonChartsImage" . | indent 4 }} + + installOptions: + {{- if hasPrefix "oci://" .Values.addonChartLocationBase }} + version: 0.2.92.tgz + {{- end }} + + valuesMapping: + valueMap: + + jsonMap: + tolerations: tolerations + + resources: + cpu: + requests: resources.requests.cpu + limits: resources.limits.cpu + memory: + requests: resources.requests.memory + limits: resources.limits.memory + + defaultInstallValues: + - enabled: true + {{- with .Values.tolerations }} + tolerations: {{ toJson . | quote }} + {{- end }} + + installable: + autoInstall: false diff --git a/tools/snapshot-controller/snapshot-controller-addon.yaml b/tools/snapshot-controller/snapshot-controller-addon.yaml new file mode 100644 index 0000000..e80887f --- /dev/null +++ b/tools/snapshot-controller/snapshot-controller-addon.yaml @@ -0,0 +1,96 @@ +apiVersion: extensions.kubeblocks.io/v1alpha1 +kind: Addon +metadata: + name: snapshot-controller + labels: + {{- include "kubeblocks.labels" . | nindent 4 }} + "kubeblocks.io/provider": community + {{- if .Values.keepAddons }} + annotations: + helm.sh/resource-policy: keep + {{- end }} +spec: + description: 'Deploys a Snapshot Controller in a cluster. Snapshot Controllers are + often bundled with the Kubernetes distribution, this chart is meant for cases where + it is not. ' + type: Helm + + helm: + {{- include "kubeblocks.addonChartLocationURL" ( dict "name" "snapshot-controller" "version" "1.7.2" "values" .Values) | indent 4 }} + {{- include "kubeblocks.addonChartsImage" . | indent 4 }} + + installOptions: + {{- if hasPrefix "oci://" .Values.addonChartLocationBase }} + version: 1.7.2 + {{- end }} + + installValues: + configMapRefs: + - name: snapshot-controller-chart-kubeblocks-values + key: values-kubeblocks-override.yaml + + valuesMapping: + valueMap: + replicaCount: replicaCount + storageClass: volumeSnapshotClasses[0].driver + + jsonMap: + tolerations: tolerations + + resources: + cpu: + requests: resources.requests.cpu + limits: resources.limits.cpu + memory: + requests: resources.requests.memory + limits: resources.limits.memory + + defaultInstallValues: + - enabled: {{ get ( get ( .Values | toYaml | fromYaml ) "snapshot-controller" ) "enabled" }} + {{- with .Values.tolerations }} + tolerations: {{ toJson . | quote }} + {{- end }} + + - selectors: + - key: KubeGitVersion + operator: Contains + values: + - eks + storageClass: ebs.csi.aws.com + {{- with .Values.tolerations }} + tolerations: {{ toJson . | quote }} + {{- end }} + + - selectors: + - key: KubeGitVersion + operator: Contains + values: + - gke + storageClass: pd.csi.storage.gke.io + {{- with .Values.tolerations }} + tolerations: {{ toJson . | quote }} + {{- end }} + + - selectors: + - key: KubeGitVersion + operator: Contains + values: + - aks + storageClass: disk.csi.azure.com + {{- with .Values.tolerations }} + tolerations: {{ toJson . | quote }} + {{- end }} + + installable: + autoInstall: {{ get ( get ( .Values | toYaml | fromYaml ) "snapshot-controller" ) "enabled" }} + selectors: + - key: KubeGitVersion + operator: DoesNotContain + values: + - tke + - aliyun + - key: KubeProvider + operator: DoesNotContain + values: + - huaweiCloud + - azure \ No newline at end of file diff --git a/tools/snapshot-controller/snapshot-controller-values.yaml b/tools/snapshot-controller/snapshot-controller-values.yaml new file mode 100644 index 0000000..2ff4b3e --- /dev/null +++ b/tools/snapshot-controller/snapshot-controller-values.yaml @@ -0,0 +1,13 @@ +apiVersion: v1 +kind: ConfigMap +metadata: + name: snapshot-controller-chart-kubeblocks-values + labels: + {{- include "kubeblocks.labels" . | nindent 4 }} + {{- if .Values.keepAddons }} + annotations: + helm.sh/resource-policy: keep + {{- end }} +data: + values-kubeblocks-override.yaml: |- + {{- get ( .Values | toYaml | fromYaml ) "snapshot-controller" | toYaml | nindent 4 }} \ No newline at end of file