diff --git a/.github/workflows/release-chart.yml b/.github/workflows/release-chart.yml new file mode 100644 index 00000000..af66ef49 --- /dev/null +++ b/.github/workflows/release-chart.yml @@ -0,0 +1,35 @@ +name: Release Charts + +on: + release: + types: [published] + branches: + - main + +jobs: + release: + # depending on default permission settings for your org (contents being read-only or read-write for workloads), you will have to add permissions + # see: https://docs.github.com/en/actions/security-guides/automatic-token-authentication#modifying-the-permissions-for-the-github_token + permissions: + contents: write + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v2 + with: + fetch-depth: 0 + + - name: Configure Git + run: | + git config user.name "$GITHUB_ACTOR" + git config user.email "$GITHUB_ACTOR@users.noreply.github.com" + + - name: Install Helm + uses: azure/setup-helm@v3 + with: + version: v3.10.0 + + - name: Run chart-releaser + uses: helm/chart-releaser-action@v1.4.1 + env: + CR_TOKEN: "${{ secrets.GITHUB_TOKEN }}" diff --git a/helm-charts/.helmignore b/helm-charts/.helmignore new file mode 100644 index 00000000..0e8a0eb3 --- /dev/null +++ b/helm-charts/.helmignore @@ -0,0 +1,23 @@ +# Patterns to ignore when building packages. +# This supports shell glob matching, relative path matching, and +# negation (prefixed with !). Only one pattern per line. +.DS_Store +# Common VCS dirs +.git/ +.gitignore +.bzr/ +.bzrignore +.hg/ +.hgignore +.svn/ +# Common backup files +*.swp +*.bak +*.tmp +*.orig +*~ +# Various IDEs +.project +.idea/ +*.tmproj +.vscode/ diff --git a/helm-charts/LICENSE b/helm-charts/LICENSE new file mode 100644 index 00000000..261eeb9e --- /dev/null +++ b/helm-charts/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + 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. diff --git a/helm-charts/README.md b/helm-charts/README.md new file mode 100644 index 00000000..0d469f29 --- /dev/null +++ b/helm-charts/README.md @@ -0,0 +1,30 @@ +# StarRocks Kubernetes Helm Charts +[![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0) [![Release Charts](https://img.shields.io/badge/Release-helmcharts-green.svg)](https://github.com/StarRocks/helm-charts/releases) + +This functionality is in beta and is subject to change. The code is provided as-is with no warranties. Beta features are not subject to the support SLA of official GA features. + +## Usage + +[Helm](https://helm.sh) must be installed to use the charts. +Please refer to Helm's [documentation](https://helm.sh/docs/) to get started. + +Once Helm is set up properly, add the repo as follows: + +```console +helm repo add starrocks-community https://starrocks.github.io/helm-charts +``` + +You can then run `helm search repo kube-starrocks` to see the charts. + +## Contributing + +The source code of all [StarRocks](https://www.starrocks.io/) community [Helm](https://helm.sh) charts can be found on Github: + +## License + + +[Apache 2.0 License](https://github.com/StarRocks/helm-charts/blob/main/LICENSE). + +## Helm charts build status + +[![Release Charts](https://img.shields.io/github/Download-StarRocks-helmcharts.svg)](https://github.com/StarRocks/helm-charts/releases) diff --git a/helm-charts/charts/kube-starrocks/.helmignore b/helm-charts/charts/kube-starrocks/.helmignore new file mode 100644 index 00000000..0e8a0eb3 --- /dev/null +++ b/helm-charts/charts/kube-starrocks/.helmignore @@ -0,0 +1,23 @@ +# Patterns to ignore when building packages. +# This supports shell glob matching, relative path matching, and +# negation (prefixed with !). Only one pattern per line. +.DS_Store +# Common VCS dirs +.git/ +.gitignore +.bzr/ +.bzrignore +.hg/ +.hgignore +.svn/ +# Common backup files +*.swp +*.bak +*.tmp +*.orig +*~ +# Various IDEs +.project +.idea/ +*.tmproj +.vscode/ diff --git a/helm-charts/charts/kube-starrocks/Chart.yaml b/helm-charts/charts/kube-starrocks/Chart.yaml new file mode 100644 index 00000000..479ad7a5 --- /dev/null +++ b/helm-charts/charts/kube-starrocks/Chart.yaml @@ -0,0 +1,45 @@ +apiVersion: v2 +name: kube-starrocks +description: kube-starrocks collects Kubernetes manifests, starrocks combined with documentation and scripts to provide easy to operate end-to-end Kubernetes cluster deploy starrocks using the starrocks operator. +icon: https://avatars.githubusercontent.com/u/88238841 + +# A chart can be either an 'application' or a 'library' chart. +# +# Application charts are a collection of templates that can be packaged into versioned archives +# to be deployed. +# +# Library charts provide useful utilities or functions for the chart developer. They're included as +# a dependency of application charts to inject those utilities and functions into the rendering +# pipeline. Library charts do not define any templates and therefore cannot be deployed. +type: application +maintainers: + - name: Kevin Cai + email: caixiaohua@starrocks.com + - name: SidaShen + email: shensida@starrocks.com + - name: ShileiFu + email: fushilei@starrocks.com + +# This is the chart version. This version number should be incremented each time you make changes + +# Versions are expected to follow Semantic Versioning (https://semver.org/) +version: 1.6.1 + +# This is the version number of tlhe application being deployed. This version number should be +# incremented each time you make changes to the application. Versions are not expected to +# follow Semantic Versioning. They should reflect the version the application is using. +# It is recommended to use it with quotes. +appVersion: 2.5.5 + +kubeVersion: ">=1.18.3-0" + +keywords: + - operator + - starrocks + - database + - olap + +sources: + - https://github.com/StarRocks/helm-charts + - https://github.com/StarRocks/starrocks +home: https://github.com/StarRocks/starrocks-kubernetes-operator diff --git a/helm-charts/charts/kube-starrocks/README.md b/helm-charts/charts/kube-starrocks/README.md new file mode 100644 index 00000000..bb3b327b --- /dev/null +++ b/helm-charts/charts/kube-starrocks/README.md @@ -0,0 +1,57 @@ +# kube-starrocks +Install the kube-starrocks, a collectionof Kubernetes manifests to provide easy to operate end-to-end Kubernetes cluster deploy starrocks cluster use [starrocks Operator](https://github.com/StarRocks/starrocks-kubernetes-operator). + +## Prerequisites +- Kbuernetes 1.18.3+ +- Helm 3+ + +## Get Helm Repository Info +```console +helm repo add starrocks-community https://starrocks.github.io/helm-charts +helm repo update +``` +_See [`helm repo`](https://helm.sh/docs/helm/helm_repo/) for command documentation._ + +## Install Helm Chart + +1. view the package names in repo. +```console +helm search repo starrocks-community +``` +2. install specify package. +```console +helm install [RELEASE_NAME] starrocks-community/[PACKAGE_NAME] +``` + +_See [configuration](#configuration) below._ + +## Uninstall Helm Chart + +```console +helm uninstall [RELEASE_NAME] +``` + +This removes all the Kubernetes components associated with the chart and deletes the release. + +_See [helm uninstall](https://helm.sh/docs/helm/helm_uninstall/) for command documentation._ + +CRDs created by this chart are not removed by default and should be manually cleaned up: + +```console + kubectl delete crd starrocksclusters.starrocks.com +``` + +## Configuration + +See [Customizing the Chart Before Installing](https://helm.sh/docs/intro/using_helm/#customizing-the-chart-before-installing). To see all configurable options with detailed comments: + +```console +helm show values starrocks-community/kube-starrocks +``` + +## Documentation + +You can see our documentation at StarRocks website for more in-depth installation and instructions for production: + +- [Englist](https://docs.starrocks.io/en-us/latest/introduction/StarRocks_intro) +- [简体中文](https://docs.starrocks.io/zh-cn/latest/introduction/StarRocks_intro) diff --git a/helm-charts/charts/kube-starrocks/celostar-starrocks.values.yaml b/helm-charts/charts/kube-starrocks/celostar-starrocks.values.yaml new file mode 100644 index 00000000..92aa1019 --- /dev/null +++ b/helm-charts/charts/kube-starrocks/celostar-starrocks.values.yaml @@ -0,0 +1,106 @@ +# deploy operator in special namespace. +nameOverride: "celostar" +starrocksOperator: + # provide a name for operator deployment. + enabled: true + serviceAccountName: "" + namespaceOverride: "celostar-starrocks" + image: + registry: hub.docker + repository: starrocks/operator + tag: v1.1 + resources: + limits: + cpu: 500m + memory: 200Mi + requests: + cpu: 100m + memory: 200Mi + +# deploy a starrocks cluster +starrocksCluster: + # Provide a name for starprocks cluster + name: "celostar-starrocks" + ## service account for fe and be to use. + ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/ + serviceAccount: "" + namespace: "celostar-starrocks" + ## annotations for starrocks cluster + annotations: {} + labels: + object: starrocks + ## specify the cn deploy or not. + enabledCn: false + +## spec to deploy fe. +starrocksFESpec: + ## Number of replicas to deploy for a fe statefulset. + replicas: 1 + image: + registry: hub.docker + repository: starrocks/fe + tag: 2.4.1 + ## specify the service name and port config and serviceType + ## the service type refer https://kubernetes.io/docs/concepts/services-networking/service/#publishing-services-service-types + service: + ## the fe service type, only supported ClusterIP, NodePort, LoadBalancer, ExternalName + type: "ClusterIP" + # resource config for fe components. + resources: + requests: + cpu: 2 + memory: 4Gi + limits: + cpu: 2 + memory: 4Gi + # fe storageSpec for persistent meta data. + storageSpec: + # the storageClass name for fe meta persistent volume. if name is empty used emptyDir. + name: "gp2" + #the persistent volume size default 1 Gi. + storageSize: 1Gi + ## the config for start fe. the base information as follows. + config: | + LOG_DIR = ${STARROCKS_HOME}/log + DATE = "$(date +%Y%m%d-%H%M%S)" + JAVA_OPTS="-Dlog4j2.formatMsgNoLookups=true -Xmx8192m -XX:+UseMembar -XX:SurvivorRatio=8 -XX:MaxTenuringThreshold=7 -XX:+PrintGCDateStamps -XX:+PrintGCDetails -XX:+UseConcMarkSweepGC -XX:+UseParNewGC -XX:+CMSClassUnloadingEnabled -XX:-CMSParallelRemarkEnabled -XX:CMSInitiatingOccupancyFraction=80 -XX:SoftRefLRUPolicyMSPerMB=0 -Xloggc:${LOG_DIR}/fe.gc.log.$DATE" + JAVA_OPTS_FOR_JDK_9="-Dlog4j2.formatMsgNoLookups=true -Xmx8192m -XX:SurvivorRatio=8 -XX:MaxTenuringThreshold=7 -XX:+CMSClassUnloadingEnabled -XX:-CMSParallelRemarkEnabled -XX:CMSInitiatingOccupancyFraction=80 -XX:SoftRefLRUPolicyMSPerMB=0 -Xlog:gc*:${LOG_DIR}/fe.gc.log.$DATE:time" + http_port = 8030 + rpc_port = 9020 + query_port = 9030 + edit_log_port = 9010 + mysql_service_nio_enabled = true + sys_log_level = INFO + + + + +## spec for component be, be provide storage and compute function. +starrocksBeSpec: + ## Number of replicas to deploy for a be statefulset. + replicas: 3 + image: + registry: hub.docker + repository: starrocks/be + tag: 2.4.1 + resource: + requests: + cpu: 2 + memory: 4Gi + limits: + cpu: 2 + memory: 4Gi + ## specify storageclass name and request size. + storageSpec: + # the storageClass name for be data persistent volume. if name is empty used emptyDir. + name: "gp2" + storageSize: 10Gi + + # the config for start be. the base information as follows. + config: | + be_port = 9060 + webserver_port = 8040 + heartbeat_service_port = 9050 + brpc_port = 8060 + sys_log_level = INFO + default_rowset_type = beta diff --git a/helm-charts/charts/kube-starrocks/crds/starrocks.com_starrocksclusters.yaml b/helm-charts/charts/kube-starrocks/crds/starrocks.com_starrocksclusters.yaml new file mode 100644 index 00000000..92037b23 --- /dev/null +++ b/helm-charts/charts/kube-starrocks/crds/starrocks.com_starrocksclusters.yaml @@ -0,0 +1,4303 @@ +--- +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.8.0 + creationTimestamp: null + name: starrocksclusters.starrocks.com +spec: + group: starrocks.com + names: + kind: StarRocksCluster + listKind: StarRocksClusterList + plural: starrocksclusters + shortNames: + - src + singular: starrockscluster + scope: Namespaced + versions: + - additionalPrinterColumns: + - jsonPath: .status.starRocksFeStatus.phase + name: FeStatus + type: string + - jsonPath: .status.starRocksCnStatus.phase + name: CnStatus + type: string + - jsonPath: .status.starRocksBeStatus.phase + name: BeStatus + type: string + name: v1 + schema: + openAPIV3Schema: + properties: + apiVersion: + type: string + kind: + type: string + metadata: + type: object + spec: + properties: + serviceAccount: + type: string + starRocksBeSpec: + properties: + affinity: + properties: + nodeAffinity: + properties: + preferredDuringSchedulingIgnoredDuringExecution: + items: + properties: + preference: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchFields: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + type: object + weight: + format: int32 + type: integer + required: + - preference + - weight + type: object + type: array + requiredDuringSchedulingIgnoredDuringExecution: + properties: + nodeSelectorTerms: + items: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchFields: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + type: object + type: array + required: + - nodeSelectorTerms + type: object + type: object + podAffinity: + properties: + preferredDuringSchedulingIgnoredDuringExecution: + items: + properties: + podAffinityTerm: + properties: + labelSelector: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + type: object + type: object + namespaceSelector: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + type: object + type: object + namespaces: + items: + type: string + type: array + topologyKey: + type: string + required: + - topologyKey + type: object + weight: + format: int32 + type: integer + required: + - podAffinityTerm + - weight + type: object + type: array + requiredDuringSchedulingIgnoredDuringExecution: + items: + properties: + labelSelector: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + type: object + type: object + namespaceSelector: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + type: object + type: object + namespaces: + items: + type: string + type: array + topologyKey: + type: string + required: + - topologyKey + type: object + type: array + type: object + podAntiAffinity: + properties: + preferredDuringSchedulingIgnoredDuringExecution: + items: + properties: + podAffinityTerm: + properties: + labelSelector: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + type: object + type: object + namespaceSelector: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + type: object + type: object + namespaces: + items: + type: string + type: array + topologyKey: + type: string + required: + - topologyKey + type: object + weight: + format: int32 + type: integer + required: + - podAffinityTerm + - weight + type: object + type: array + requiredDuringSchedulingIgnoredDuringExecution: + items: + properties: + labelSelector: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + type: object + type: object + namespaceSelector: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + type: object + type: object + namespaces: + items: + type: string + type: array + topologyKey: + type: string + required: + - topologyKey + type: object + type: array + type: object + type: object + annotations: + additionalProperties: + type: string + type: object + beEnvVars: + items: + properties: + name: + type: string + value: + type: string + valueFrom: + properties: + configMapKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + fieldRef: + properties: + apiVersion: + type: string + fieldPath: + type: string + required: + - fieldPath + type: object + resourceFieldRef: + properties: + containerName: + type: string + divisor: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + resource: + type: string + required: + - resource + type: object + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + required: + - name + type: object + type: array + configMapInfo: + properties: + configMapName: + type: string + resolveKey: + type: string + type: object + fsGroup: + format: int64 + type: integer + hostAliases: + items: + properties: + hostnames: + items: + type: string + type: array + ip: + type: string + type: object + type: array + image: + type: string + imagePullSecrets: + items: + properties: + name: + type: string + type: object + type: array + limits: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + name: + pattern: '[a-z0-9]([-a-z0-9]*[a-z0-9])?(\\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*' + type: string + nodeSelector: + additionalProperties: + type: string + type: object + podLabels: + additionalProperties: + type: string + type: object + probe: + properties: + initialDelaySeconds: + format: int32 + minimum: 0 + type: integer + periodSeconds: + format: int32 + minimum: 1 + type: integer + type: + enum: + - tcp + - command + type: string + required: + - type + type: object + replicaInstances: + items: + type: string + type: array + replicas: + format: int32 + type: integer + requests: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + service: + properties: + loadBalancerIP: + type: string + name: + pattern: '[a-z0-9]([-a-z0-9]*[a-z0-9])?(\\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*' + type: string + ports: + items: + properties: + containerPort: + format: int32 + type: integer + name: + type: string + nodePort: + format: int32 + type: integer + port: + format: int32 + type: integer + required: + - containerPort + - port + type: object + type: array + type: + type: string + type: object + serviceAccount: + type: string + storageVolumes: + items: + properties: + mountPath: + type: string + name: + pattern: '[a-z0-9]([-a-z0-9]*[a-z0-9])?(\\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*' + type: string + storageClassName: + type: string + storageSize: + pattern: (^0|([0-9]*l[.])?[0-9]+((M|G|T|E|P)i))$ + type: string + required: + - name + - storageSize + type: object + type: array + tolerations: + items: + properties: + effect: + type: string + key: + type: string + operator: + type: string + tolerationSeconds: + format: int64 + type: integer + value: + type: string + type: object + type: array + required: + - image + type: object + starRocksCnSpec: + properties: + affinity: + properties: + nodeAffinity: + properties: + preferredDuringSchedulingIgnoredDuringExecution: + items: + properties: + preference: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchFields: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + type: object + weight: + format: int32 + type: integer + required: + - preference + - weight + type: object + type: array + requiredDuringSchedulingIgnoredDuringExecution: + properties: + nodeSelectorTerms: + items: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchFields: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + type: object + type: array + required: + - nodeSelectorTerms + type: object + type: object + podAffinity: + properties: + preferredDuringSchedulingIgnoredDuringExecution: + items: + properties: + podAffinityTerm: + properties: + labelSelector: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + type: object + type: object + namespaceSelector: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + type: object + type: object + namespaces: + items: + type: string + type: array + topologyKey: + type: string + required: + - topologyKey + type: object + weight: + format: int32 + type: integer + required: + - podAffinityTerm + - weight + type: object + type: array + requiredDuringSchedulingIgnoredDuringExecution: + items: + properties: + labelSelector: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + type: object + type: object + namespaceSelector: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + type: object + type: object + namespaces: + items: + type: string + type: array + topologyKey: + type: string + required: + - topologyKey + type: object + type: array + type: object + podAntiAffinity: + properties: + preferredDuringSchedulingIgnoredDuringExecution: + items: + properties: + podAffinityTerm: + properties: + labelSelector: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + type: object + type: object + namespaceSelector: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + type: object + type: object + namespaces: + items: + type: string + type: array + topologyKey: + type: string + required: + - topologyKey + type: object + weight: + format: int32 + type: integer + required: + - podAffinityTerm + - weight + type: object + type: array + requiredDuringSchedulingIgnoredDuringExecution: + items: + properties: + labelSelector: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + type: object + type: object + namespaceSelector: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + type: object + type: object + namespaces: + items: + type: string + type: array + topologyKey: + type: string + required: + - topologyKey + type: object + type: array + type: object + type: object + annotations: + additionalProperties: + type: string + type: object + autoScalingPolicy: + properties: + hpaPolicy: + properties: + behavior: + properties: + scaleDown: + properties: + policies: + items: + properties: + periodSeconds: + format: int32 + type: integer + type: + type: string + value: + format: int32 + type: integer + required: + - periodSeconds + - type + - value + type: object + type: array + selectPolicy: + type: string + stabilizationWindowSeconds: + format: int32 + type: integer + type: object + scaleUp: + properties: + policies: + items: + properties: + periodSeconds: + format: int32 + type: integer + type: + type: string + value: + format: int32 + type: integer + required: + - periodSeconds + - type + - value + type: object + type: array + selectPolicy: + type: string + stabilizationWindowSeconds: + format: int32 + type: integer + type: object + type: object + metrics: + items: + properties: + containerResource: + properties: + container: + type: string + name: + type: string + target: + properties: + averageUtilization: + format: int32 + type: integer + averageValue: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: + type: string + value: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + required: + - type + type: object + required: + - container + - name + - target + type: object + external: + properties: + metric: + properties: + name: + type: string + selector: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + type: object + type: object + required: + - name + type: object + target: + properties: + averageUtilization: + format: int32 + type: integer + averageValue: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: + type: string + value: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + required: + - type + type: object + required: + - metric + - target + type: object + object: + properties: + describedObject: + properties: + apiVersion: + type: string + kind: + type: string + name: + type: string + required: + - kind + - name + type: object + metric: + properties: + name: + type: string + selector: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + type: object + type: object + required: + - name + type: object + target: + properties: + averageUtilization: + format: int32 + type: integer + averageValue: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: + type: string + value: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + required: + - type + type: object + required: + - describedObject + - metric + - target + type: object + pods: + properties: + metric: + properties: + name: + type: string + selector: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + type: object + type: object + required: + - name + type: object + target: + properties: + averageUtilization: + format: int32 + type: integer + averageValue: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: + type: string + value: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + required: + - type + type: object + required: + - metric + - target + type: object + resource: + properties: + name: + type: string + target: + properties: + averageUtilization: + format: int32 + type: integer + averageValue: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: + type: string + value: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + required: + - type + type: object + required: + - name + - target + type: object + type: + type: string + required: + - type + type: object + type: array + type: object + maxReplicas: + format: int32 + type: integer + minReplicas: + format: int32 + type: integer + version: + default: v2beta2 + type: string + type: object + cnEnvVars: + items: + properties: + name: + type: string + value: + type: string + valueFrom: + properties: + configMapKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + fieldRef: + properties: + apiVersion: + type: string + fieldPath: + type: string + required: + - fieldPath + type: object + resourceFieldRef: + properties: + containerName: + type: string + divisor: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + resource: + type: string + required: + - resource + type: object + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + required: + - name + type: object + type: array + configMapInfo: + properties: + configMapName: + type: string + resolveKey: + type: string + type: object + fsGroup: + format: int64 + type: integer + hostAliases: + items: + properties: + hostnames: + items: + type: string + type: array + ip: + type: string + type: object + type: array + image: + type: string + imagePullSecrets: + items: + properties: + name: + type: string + type: object + type: array + limits: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + name: + pattern: '[a-z0-9]([-a-z0-9]*[a-z0-9])?(\\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*' + type: string + nodeSelector: + additionalProperties: + type: string + type: object + podLabels: + additionalProperties: + type: string + type: object + probe: + properties: + initialDelaySeconds: + format: int32 + minimum: 0 + type: integer + periodSeconds: + format: int32 + minimum: 1 + type: integer + type: + enum: + - tcp + - command + type: string + required: + - type + type: object + replicas: + format: int32 + minimum: 0 + type: integer + requests: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + service: + properties: + loadBalancerIP: + type: string + name: + pattern: '[a-z0-9]([-a-z0-9]*[a-z0-9])?(\\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*' + type: string + ports: + items: + properties: + containerPort: + format: int32 + type: integer + name: + type: string + nodePort: + format: int32 + type: integer + port: + format: int32 + type: integer + required: + - containerPort + - port + type: object + type: array + type: + type: string + type: object + serviceAccount: + type: string + tolerations: + items: + properties: + effect: + type: string + key: + type: string + operator: + type: string + tolerationSeconds: + format: int64 + type: integer + value: + type: string + type: object + type: array + required: + - image + type: object + starRocksFeSpec: + properties: + affinity: + properties: + nodeAffinity: + properties: + preferredDuringSchedulingIgnoredDuringExecution: + items: + properties: + preference: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchFields: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + type: object + weight: + format: int32 + type: integer + required: + - preference + - weight + type: object + type: array + requiredDuringSchedulingIgnoredDuringExecution: + properties: + nodeSelectorTerms: + items: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchFields: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + type: object + type: array + required: + - nodeSelectorTerms + type: object + type: object + podAffinity: + properties: + preferredDuringSchedulingIgnoredDuringExecution: + items: + properties: + podAffinityTerm: + properties: + labelSelector: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + type: object + type: object + namespaceSelector: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + type: object + type: object + namespaces: + items: + type: string + type: array + topologyKey: + type: string + required: + - topologyKey + type: object + weight: + format: int32 + type: integer + required: + - podAffinityTerm + - weight + type: object + type: array + requiredDuringSchedulingIgnoredDuringExecution: + items: + properties: + labelSelector: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + type: object + type: object + namespaceSelector: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + type: object + type: object + namespaces: + items: + type: string + type: array + topologyKey: + type: string + required: + - topologyKey + type: object + type: array + type: object + podAntiAffinity: + properties: + preferredDuringSchedulingIgnoredDuringExecution: + items: + properties: + podAffinityTerm: + properties: + labelSelector: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + type: object + type: object + namespaceSelector: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + type: object + type: object + namespaces: + items: + type: string + type: array + topologyKey: + type: string + required: + - topologyKey + type: object + weight: + format: int32 + type: integer + required: + - podAffinityTerm + - weight + type: object + type: array + requiredDuringSchedulingIgnoredDuringExecution: + items: + properties: + labelSelector: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + type: object + type: object + namespaceSelector: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + type: object + type: object + namespaces: + items: + type: string + type: array + topologyKey: + type: string + required: + - topologyKey + type: object + type: array + type: object + type: object + annotations: + additionalProperties: + type: string + type: object + configMapInfo: + properties: + configMapName: + type: string + resolveKey: + type: string + type: object + feEnvVars: + items: + properties: + name: + type: string + value: + type: string + valueFrom: + properties: + configMapKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + fieldRef: + properties: + apiVersion: + type: string + fieldPath: + type: string + required: + - fieldPath + type: object + resourceFieldRef: + properties: + containerName: + type: string + divisor: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + resource: + type: string + required: + - resource + type: object + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + required: + - name + type: object + type: array + fsGroup: + format: int64 + type: integer + hostAliases: + items: + properties: + hostnames: + items: + type: string + type: array + ip: + type: string + type: object + type: array + image: + type: string + imagePullSecrets: + items: + properties: + name: + type: string + type: object + type: array + limits: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + name: + pattern: '[a-z0-9]([-a-z0-9]*[a-z0-9])?(\\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*' + type: string + nodeSelector: + additionalProperties: + type: string + type: object + podLabels: + additionalProperties: + type: string + type: object + probe: + properties: + initialDelaySeconds: + format: int32 + minimum: 0 + type: integer + periodSeconds: + format: int32 + minimum: 1 + type: integer + type: + enum: + - tcp + - command + type: string + required: + - type + type: object + replicas: + format: int32 + type: integer + requests: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + service: + properties: + loadBalancerIP: + type: string + name: + pattern: '[a-z0-9]([-a-z0-9]*[a-z0-9])?(\\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*' + type: string + ports: + items: + properties: + containerPort: + format: int32 + type: integer + name: + type: string + nodePort: + format: int32 + type: integer + port: + format: int32 + type: integer + required: + - containerPort + - port + type: object + type: array + type: + type: string + type: object + serviceAccount: + type: string + storageVolumes: + items: + properties: + mountPath: + type: string + name: + pattern: '[a-z0-9]([-a-z0-9]*[a-z0-9])?(\\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*' + type: string + storageClassName: + type: string + storageSize: + pattern: (^0|([0-9]*l[.])?[0-9]+((M|G|T|E|P)i))$ + type: string + required: + - name + - storageSize + type: object + type: array + tolerations: + items: + properties: + effect: + type: string + key: + type: string + operator: + type: string + tolerationSeconds: + format: int64 + type: integer + value: + type: string + type: object + type: array + required: + - image + type: object + type: object + status: + properties: + phase: + type: string + starRocksBeStatus: + properties: + creatingInstances: + items: + type: string + type: array + failedInstances: + items: + type: string + type: array + phase: + type: string + reason: + type: string + resourceNames: + items: + type: string + type: array + runningInstances: + items: + type: string + type: array + serviceName: + type: string + required: + - phase + type: object + starRocksCnStatus: + properties: + creatingInstances: + items: + type: string + type: array + failedInstances: + items: + type: string + type: array + horizontalScaler: + properties: + name: + type: string + version: + type: string + type: object + hpaName: + type: string + phase: + type: string + reason: + type: string + resourceNames: + items: + type: string + type: array + runningInstances: + items: + type: string + type: array + serviceName: + type: string + required: + - phase + type: object + starRocksFeStatus: + properties: + creatingInstances: + items: + type: string + type: array + failedInstances: + items: + type: string + type: array + phase: + type: string + reason: + type: string + resourceNames: + items: + type: string + type: array + runningInstances: + items: + type: string + type: array + serviceName: + type: string + required: + - phase + type: object + required: + - phase + type: object + type: object + served: true + storage: true + subresources: + status: {} + - additionalPrinterColumns: + - jsonPath: .status.starRocksFeStatus.phase + name: FeStatus + type: string + - jsonPath: .status.starRocksCnStatus.phase + name: CnStatus + type: string + - jsonPath: .status.starRocksBeStatus.phase + name: BeStatus + type: string + name: v1alpha1 + schema: + openAPIV3Schema: + properties: + apiVersion: + type: string + kind: + type: string + metadata: + type: object + spec: + properties: + serviceAccount: + type: string + starRocksBeSpec: + properties: + affinity: + properties: + nodeAffinity: + properties: + preferredDuringSchedulingIgnoredDuringExecution: + items: + properties: + preference: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchFields: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + type: object + weight: + format: int32 + type: integer + required: + - preference + - weight + type: object + type: array + requiredDuringSchedulingIgnoredDuringExecution: + properties: + nodeSelectorTerms: + items: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchFields: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + type: object + type: array + required: + - nodeSelectorTerms + type: object + type: object + podAffinity: + properties: + preferredDuringSchedulingIgnoredDuringExecution: + items: + properties: + podAffinityTerm: + properties: + labelSelector: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + type: object + type: object + namespaceSelector: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + type: object + type: object + namespaces: + items: + type: string + type: array + topologyKey: + type: string + required: + - topologyKey + type: object + weight: + format: int32 + type: integer + required: + - podAffinityTerm + - weight + type: object + type: array + requiredDuringSchedulingIgnoredDuringExecution: + items: + properties: + labelSelector: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + type: object + type: object + namespaceSelector: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + type: object + type: object + namespaces: + items: + type: string + type: array + topologyKey: + type: string + required: + - topologyKey + type: object + type: array + type: object + podAntiAffinity: + properties: + preferredDuringSchedulingIgnoredDuringExecution: + items: + properties: + podAffinityTerm: + properties: + labelSelector: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + type: object + type: object + namespaceSelector: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + type: object + type: object + namespaces: + items: + type: string + type: array + topologyKey: + type: string + required: + - topologyKey + type: object + weight: + format: int32 + type: integer + required: + - podAffinityTerm + - weight + type: object + type: array + requiredDuringSchedulingIgnoredDuringExecution: + items: + properties: + labelSelector: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + type: object + type: object + namespaceSelector: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + type: object + type: object + namespaces: + items: + type: string + type: array + topologyKey: + type: string + required: + - topologyKey + type: object + type: array + type: object + type: object + annotations: + additionalProperties: + type: string + type: object + beEnvVars: + items: + properties: + name: + type: string + value: + type: string + valueFrom: + properties: + configMapKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + fieldRef: + properties: + apiVersion: + type: string + fieldPath: + type: string + required: + - fieldPath + type: object + resourceFieldRef: + properties: + containerName: + type: string + divisor: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + resource: + type: string + required: + - resource + type: object + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + required: + - name + type: object + type: array + configMapInfo: + properties: + configMapName: + type: string + resolveKey: + type: string + type: object + fsGroup: + format: int64 + type: integer + hostAliases: + items: + properties: + hostnames: + items: + type: string + type: array + ip: + type: string + type: object + type: array + image: + type: string + imagePullSecrets: + items: + properties: + name: + type: string + type: object + type: array + limits: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + name: + pattern: '[a-z0-9]([-a-z0-9]*[a-z0-9])?(\\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*' + type: string + nodeSelector: + additionalProperties: + type: string + type: object + podLabels: + additionalProperties: + type: string + type: object + probe: + properties: + initialDelaySeconds: + format: int32 + minimum: 0 + type: integer + periodSeconds: + format: int32 + minimum: 1 + type: integer + type: + enum: + - tcp + - command + type: string + required: + - type + type: object + replicaInstances: + items: + type: string + type: array + replicas: + format: int32 + type: integer + requests: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + service: + properties: + loadBalancerIP: + type: string + name: + pattern: '[a-z0-9]([-a-z0-9]*[a-z0-9])?(\\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*' + type: string + ports: + items: + properties: + containerPort: + format: int32 + type: integer + name: + type: string + nodePort: + format: int32 + type: integer + port: + format: int32 + type: integer + required: + - containerPort + - port + type: object + type: array + type: + type: string + type: object + serviceAccount: + type: string + storageVolumes: + items: + properties: + mountPath: + type: string + name: + pattern: '[a-z0-9]([-a-z0-9]*[a-z0-9])?(\\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*' + type: string + storageClassName: + type: string + storageSize: + pattern: (^0|([0-9]*l[.])?[0-9]+((M|G|T|E|P)i))$ + type: string + required: + - name + - storageSize + type: object + type: array + tolerations: + items: + properties: + effect: + type: string + key: + type: string + operator: + type: string + tolerationSeconds: + format: int64 + type: integer + value: + type: string + type: object + type: array + required: + - image + type: object + starRocksCnSpec: + properties: + affinity: + properties: + nodeAffinity: + properties: + preferredDuringSchedulingIgnoredDuringExecution: + items: + properties: + preference: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchFields: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + type: object + weight: + format: int32 + type: integer + required: + - preference + - weight + type: object + type: array + requiredDuringSchedulingIgnoredDuringExecution: + properties: + nodeSelectorTerms: + items: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchFields: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + type: object + type: array + required: + - nodeSelectorTerms + type: object + type: object + podAffinity: + properties: + preferredDuringSchedulingIgnoredDuringExecution: + items: + properties: + podAffinityTerm: + properties: + labelSelector: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + type: object + type: object + namespaceSelector: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + type: object + type: object + namespaces: + items: + type: string + type: array + topologyKey: + type: string + required: + - topologyKey + type: object + weight: + format: int32 + type: integer + required: + - podAffinityTerm + - weight + type: object + type: array + requiredDuringSchedulingIgnoredDuringExecution: + items: + properties: + labelSelector: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + type: object + type: object + namespaceSelector: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + type: object + type: object + namespaces: + items: + type: string + type: array + topologyKey: + type: string + required: + - topologyKey + type: object + type: array + type: object + podAntiAffinity: + properties: + preferredDuringSchedulingIgnoredDuringExecution: + items: + properties: + podAffinityTerm: + properties: + labelSelector: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + type: object + type: object + namespaceSelector: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + type: object + type: object + namespaces: + items: + type: string + type: array + topologyKey: + type: string + required: + - topologyKey + type: object + weight: + format: int32 + type: integer + required: + - podAffinityTerm + - weight + type: object + type: array + requiredDuringSchedulingIgnoredDuringExecution: + items: + properties: + labelSelector: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + type: object + type: object + namespaceSelector: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + type: object + type: object + namespaces: + items: + type: string + type: array + topologyKey: + type: string + required: + - topologyKey + type: object + type: array + type: object + type: object + annotations: + additionalProperties: + type: string + type: object + autoScalingPolicy: + properties: + hpaPolicy: + properties: + behavior: + properties: + scaleDown: + properties: + policies: + items: + properties: + periodSeconds: + format: int32 + type: integer + type: + type: string + value: + format: int32 + type: integer + required: + - periodSeconds + - type + - value + type: object + type: array + selectPolicy: + type: string + stabilizationWindowSeconds: + format: int32 + type: integer + type: object + scaleUp: + properties: + policies: + items: + properties: + periodSeconds: + format: int32 + type: integer + type: + type: string + value: + format: int32 + type: integer + required: + - periodSeconds + - type + - value + type: object + type: array + selectPolicy: + type: string + stabilizationWindowSeconds: + format: int32 + type: integer + type: object + type: object + metrics: + items: + properties: + containerResource: + properties: + container: + type: string + name: + type: string + target: + properties: + averageUtilization: + format: int32 + type: integer + averageValue: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: + type: string + value: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + required: + - type + type: object + required: + - container + - name + - target + type: object + external: + properties: + metric: + properties: + name: + type: string + selector: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + type: object + type: object + required: + - name + type: object + target: + properties: + averageUtilization: + format: int32 + type: integer + averageValue: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: + type: string + value: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + required: + - type + type: object + required: + - metric + - target + type: object + object: + properties: + describedObject: + properties: + apiVersion: + type: string + kind: + type: string + name: + type: string + required: + - kind + - name + type: object + metric: + properties: + name: + type: string + selector: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + type: object + type: object + required: + - name + type: object + target: + properties: + averageUtilization: + format: int32 + type: integer + averageValue: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: + type: string + value: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + required: + - type + type: object + required: + - describedObject + - metric + - target + type: object + pods: + properties: + metric: + properties: + name: + type: string + selector: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + type: object + type: object + required: + - name + type: object + target: + properties: + averageUtilization: + format: int32 + type: integer + averageValue: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: + type: string + value: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + required: + - type + type: object + required: + - metric + - target + type: object + resource: + properties: + name: + type: string + target: + properties: + averageUtilization: + format: int32 + type: integer + averageValue: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: + type: string + value: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + required: + - type + type: object + required: + - name + - target + type: object + type: + type: string + required: + - type + type: object + type: array + type: object + maxReplicas: + format: int32 + type: integer + minReplicas: + format: int32 + type: integer + version: + default: v2beta2 + type: string + type: object + cnEnvVars: + items: + properties: + name: + type: string + value: + type: string + valueFrom: + properties: + configMapKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + fieldRef: + properties: + apiVersion: + type: string + fieldPath: + type: string + required: + - fieldPath + type: object + resourceFieldRef: + properties: + containerName: + type: string + divisor: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + resource: + type: string + required: + - resource + type: object + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + required: + - name + type: object + type: array + configMapInfo: + properties: + configMapName: + type: string + resolveKey: + type: string + type: object + fsGroup: + format: int64 + type: integer + hostAliases: + items: + properties: + hostnames: + items: + type: string + type: array + ip: + type: string + type: object + type: array + image: + type: string + imagePullSecrets: + items: + properties: + name: + type: string + type: object + type: array + limits: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + name: + pattern: '[a-z0-9]([-a-z0-9]*[a-z0-9])?(\\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*' + type: string + nodeSelector: + additionalProperties: + type: string + type: object + podLabels: + additionalProperties: + type: string + type: object + probe: + properties: + initialDelaySeconds: + format: int32 + minimum: 0 + type: integer + periodSeconds: + format: int32 + minimum: 1 + type: integer + type: + enum: + - tcp + - command + type: string + required: + - type + type: object + replicas: + format: int32 + minimum: 0 + type: integer + requests: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + service: + properties: + loadBalancerIP: + type: string + name: + pattern: '[a-z0-9]([-a-z0-9]*[a-z0-9])?(\\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*' + type: string + ports: + items: + properties: + containerPort: + format: int32 + type: integer + name: + type: string + nodePort: + format: int32 + type: integer + port: + format: int32 + type: integer + required: + - containerPort + - port + type: object + type: array + type: + type: string + type: object + serviceAccount: + type: string + tolerations: + items: + properties: + effect: + type: string + key: + type: string + operator: + type: string + tolerationSeconds: + format: int64 + type: integer + value: + type: string + type: object + type: array + required: + - image + type: object + starRocksFeSpec: + properties: + affinity: + properties: + nodeAffinity: + properties: + preferredDuringSchedulingIgnoredDuringExecution: + items: + properties: + preference: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchFields: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + type: object + weight: + format: int32 + type: integer + required: + - preference + - weight + type: object + type: array + requiredDuringSchedulingIgnoredDuringExecution: + properties: + nodeSelectorTerms: + items: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchFields: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + type: object + type: array + required: + - nodeSelectorTerms + type: object + type: object + podAffinity: + properties: + preferredDuringSchedulingIgnoredDuringExecution: + items: + properties: + podAffinityTerm: + properties: + labelSelector: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + type: object + type: object + namespaceSelector: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + type: object + type: object + namespaces: + items: + type: string + type: array + topologyKey: + type: string + required: + - topologyKey + type: object + weight: + format: int32 + type: integer + required: + - podAffinityTerm + - weight + type: object + type: array + requiredDuringSchedulingIgnoredDuringExecution: + items: + properties: + labelSelector: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + type: object + type: object + namespaceSelector: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + type: object + type: object + namespaces: + items: + type: string + type: array + topologyKey: + type: string + required: + - topologyKey + type: object + type: array + type: object + podAntiAffinity: + properties: + preferredDuringSchedulingIgnoredDuringExecution: + items: + properties: + podAffinityTerm: + properties: + labelSelector: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + type: object + type: object + namespaceSelector: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + type: object + type: object + namespaces: + items: + type: string + type: array + topologyKey: + type: string + required: + - topologyKey + type: object + weight: + format: int32 + type: integer + required: + - podAffinityTerm + - weight + type: object + type: array + requiredDuringSchedulingIgnoredDuringExecution: + items: + properties: + labelSelector: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + type: object + type: object + namespaceSelector: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + type: object + type: object + namespaces: + items: + type: string + type: array + topologyKey: + type: string + required: + - topologyKey + type: object + type: array + type: object + type: object + annotations: + additionalProperties: + type: string + type: object + configMapInfo: + properties: + configMapName: + type: string + resolveKey: + type: string + type: object + feEnvVars: + items: + properties: + name: + type: string + value: + type: string + valueFrom: + properties: + configMapKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + fieldRef: + properties: + apiVersion: + type: string + fieldPath: + type: string + required: + - fieldPath + type: object + resourceFieldRef: + properties: + containerName: + type: string + divisor: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + resource: + type: string + required: + - resource + type: object + secretKeyRef: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + type: object + required: + - name + type: object + type: array + fsGroup: + format: int64 + type: integer + hostAliases: + items: + properties: + hostnames: + items: + type: string + type: array + ip: + type: string + type: object + type: array + image: + type: string + imagePullSecrets: + items: + properties: + name: + type: string + type: object + type: array + limits: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + name: + pattern: '[a-z0-9]([-a-z0-9]*[a-z0-9])?(\\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*' + type: string + nodeSelector: + additionalProperties: + type: string + type: object + podLabels: + additionalProperties: + type: string + type: object + probe: + properties: + initialDelaySeconds: + format: int32 + minimum: 0 + type: integer + periodSeconds: + format: int32 + minimum: 1 + type: integer + type: + enum: + - tcp + - command + type: string + required: + - type + type: object + replicas: + format: int32 + type: integer + requests: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + service: + properties: + loadBalancerIP: + type: string + name: + pattern: '[a-z0-9]([-a-z0-9]*[a-z0-9])?(\\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*' + type: string + ports: + items: + properties: + containerPort: + format: int32 + type: integer + name: + type: string + nodePort: + format: int32 + type: integer + port: + format: int32 + type: integer + required: + - containerPort + - port + type: object + type: array + type: + type: string + type: object + serviceAccount: + type: string + storageVolumes: + items: + properties: + mountPath: + type: string + name: + pattern: '[a-z0-9]([-a-z0-9]*[a-z0-9])?(\\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*' + type: string + storageClassName: + type: string + storageSize: + pattern: (^0|([0-9]*l[.])?[0-9]+((M|G|T|E|P)i))$ + type: string + required: + - name + - storageSize + type: object + type: array + tolerations: + items: + properties: + effect: + type: string + key: + type: string + operator: + type: string + tolerationSeconds: + format: int64 + type: integer + value: + type: string + type: object + type: array + required: + - image + type: object + type: object + status: + properties: + phase: + type: string + starRocksBeStatus: + properties: + creatingInstances: + items: + type: string + type: array + failedInstances: + items: + type: string + type: array + phase: + type: string + reason: + type: string + resourceNames: + items: + type: string + type: array + runningInstances: + items: + type: string + type: array + serviceName: + type: string + required: + - phase + type: object + starRocksCnStatus: + properties: + creatingInstances: + items: + type: string + type: array + failedInstances: + items: + type: string + type: array + horizontalScaler: + properties: + name: + type: string + version: + type: string + type: object + hpaName: + type: string + phase: + type: string + reason: + type: string + resourceNames: + items: + type: string + type: array + runningInstances: + items: + type: string + type: array + serviceName: + type: string + required: + - phase + type: object + starRocksFeStatus: + properties: + creatingInstances: + items: + type: string + type: array + failedInstances: + items: + type: string + type: array + phase: + type: string + reason: + type: string + resourceNames: + items: + type: string + type: array + runningInstances: + items: + type: string + type: array + serviceName: + type: string + required: + - phase + type: object + required: + - phase + type: object + type: object + served: true + storage: false + subresources: + status: {} +status: + acceptedNames: + kind: "" + plural: "" + conditions: [] + storedVersions: [] diff --git a/helm-charts/charts/kube-starrocks/templates/NOTES.txt b/helm-charts/charts/kube-starrocks/templates/NOTES.txt new file mode 100644 index 00000000..956300c2 --- /dev/null +++ b/helm-charts/charts/kube-starrocks/templates/NOTES.txt @@ -0,0 +1,32 @@ +1. Get the application URL by running these commands: + +{{ $.Chart.Name }} has been installed, Check its status by running: + kubectl --namespace {{ template "starrockscluster.namespace" . }} get starrockscluster -l "cluster={{ template "starrockscluster.name" . }}" + +Visit https://github.com/starrocks for instructions on how to create & configure. + + + +{{/* +{{- if .Values.ingress.enabled }} +{{- range $host := .Values.ingress.hosts }} + {{- range .paths }} + http{{ if $.Values.ingress.tls }}s{{ end }}://{{ $host.host }}{{ .path }} + {{- end }} +{{- end }} +{{- else if contains "NodePort" .Values.service.type }} + export NODE_PORT=$(kubectl get --namespace {{ .Release.Namespace }} -o jsonpath="{.spec.ports[0].nodePort}" services {{ include "kube-starrocks.fullname" . }}) + export NODE_IP=$(kubectl get nodes --namespace {{ .Release.Namespace }} -o jsonpath="{.items[0].status.addresses[0].address}") + echo http://$NODE_IP:$NODE_PORT +{{- else if contains "LoadBalancer" .Values.service.type }} + NOTE: It may take a few minutes for the LoadBalancer IP to be available. + You can watch the status of by running 'kubectl get --namespace {{ .Release.Namespace }} svc -w {{ include "kube-starrocks.fullname" . }}' + export SERVICE_IP=$(kubectl get svc --namespace {{ .Release.Namespace }} {{ include "kube-starrocks.fullname" . }} --template "{{"{{ range (index .status.loadBalancer.ingress 0) }}{{.}}{{ end }}"}}") + echo http://$SERVICE_IP:{{ .Values.service.port }} +{{- else if contains "ClusterIP" .Values.service.type }} + export POD_NAME=$(kubectl get pods --namespace {{ .Release.Namespace }} -l "app.kubernetes.io/name={{ include "kube-starrocks.name" . }},app.kubernetes.io/instance={{ .Release.Name }}" -o jsonpath="{.items[0].metadata.name}") + export CONTAINER_PORT=$(kubectl get pod --namespace {{ .Release.Namespace }} $POD_NAME -o jsonpath="{.spec.containers[0].ports[0].containerPort}") + echo "Visit http://127.0.0.1:8080 to use your application" + kubectl --namespace {{ .Release.Namespace }} port-forward $POD_NAME 8080:$CONTAINER_PORT +{{- end }} +*/}} diff --git a/helm-charts/charts/kube-starrocks/templates/_helpers.tpl b/helm-charts/charts/kube-starrocks/templates/_helpers.tpl new file mode 100644 index 00000000..1de10597 --- /dev/null +++ b/helm-charts/charts/kube-starrocks/templates/_helpers.tpl @@ -0,0 +1,98 @@ +{{/* +Expand the name of the chart. +*/}} +{{- define "kube-starrocks.name" -}} +{{- default .Chart.Name .Values.nameOverride -}} +{{- end }} + + +{{- define "kube-starrocks.operator.namespace" -}} +{{- default .Release.Namespace .Values.starrocksOperator.namespaceOverride }} +{{- end }} + + +{{/* +Create chart name and version as used by the chart label. +*/}} +{{- define "kube-starrocks.chart" -}} +{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" }} +{{- end }} + +{{/* +Common labels +*/}} +{{- define "kube-starrocks.labels" -}} +app.kubernetes.io/instance: {{ .Release.Name }} +app.kubernetes.io/managed-by: {{ .Release.Service }} +{{- end }} + +{{- define "kube-starrocks.operator.serviceAccountName" -}} +{{- print "starrocks" }} +{{- end }} + + +{{/* +starrockscluster +*/}} + +{{- define "starrockscluster.name" -}} +{{ default (include "kube-starrocks.name" .) .Values.starrocksCluster.name }} +{{- end }} + +{{- define "starrockscluster.namespace" -}} +{{ default .Release.Namespace .Values.starrocksCluster.namespace }} +{{- end }} + + +{{- define "starrockscluster.fe.name" -}} +{{- print (include "kube-starrocks.name" .) "-fe" }} +{{- end }} + +{{- define "starrockscluster.cn.name" -}} +{{- print (include "kube-starrocks.name" .) "-cn" }} +{{- end }} + +{{- define "starrockscluster.be.name" -}} +{{- print (include "kube-starrocks.name" .) "-be" }} +{{- end }} + +{{- define "starrockscluster.be.configmap.name" -}} +{{- print (include "starrockscluster.be.name" .) "-cm" }} +{{- end }} + +{{- define "starrockscluster.fe.configmap.name" -}} +{{- print (include "starrockscluster.fe.name" .) "-cm" }} +{{- end }} + +{{- define "starrockscluster.cn.configmap.name" -}} +{{- print (include "starrockscluster.cn.name" .) "-cm" }} +{{- end }} + +{{- define "starrockscluster.fe.config" -}} +fe.conf: |- +{{- if .Values.starrocksFESpec.config }} +{{ .Values.starrocksFESpec.config | indent 2 }} +{{- end }} +{{- end }} + +{{- define "starrockscluster.cn.config" -}} +cn.conf: |- +{{- if .Values.starrocksCnSpec.config | indent 2 }} +{{ .Values.starrocksCnSpec.config | indent 2 }} +{{- end }} +{{- end }} + +{{- define "starrocksclster.be.config" -}} +be.conf: |- +{{- if .Values.starrocksBeSpec.config | indent 2 }} +{{ .Values.starrocksBeSpec.config | indent 2 }} +{{- end }} +{{- end }} + +{{- define "starrockscluster.fe.meta.path" -}} +{{- print "/opt/starrocks/fe/meta" }} +{{- end }} + +{{- define "starrockscluster.be.data.path" -}} +{{- print "/opt/starrocks/be/storage" }} +{{- end }} diff --git a/helm-charts/charts/kube-starrocks/templates/starrocks-operator/clusterrole.yaml b/helm-charts/charts/kube-starrocks/templates/starrocks-operator/clusterrole.yaml new file mode 100644 index 00000000..e244b50e --- /dev/null +++ b/helm-charts/charts/kube-starrocks/templates/starrocks-operator/clusterrole.yaml @@ -0,0 +1,190 @@ +{{- if and .Values.starrocksOperator.enabled .Values.global.rbac.create }} +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRole +metadata: + name: {{ template "kube-starrocks.name" . }}-operator + labels: + app: {{ template "kube-starrocks.name" . }}-operator +rules: +- apiGroups: + - apps + resources: + - deployments + verbs: + - create + - delete + - get + - list + - patch + - update + - watch +- apiGroups: + - apps + resources: + - statefulsets + verbs: + - create + - delete + - get + - list + - patch + - update + - watch +- apiGroups: + - autoscaling + resources: + - horizontalpodautoscalers + verbs: + - create + - delete + - get + - list + - patch + - update + - watch +- apiGroups: + - batch + resources: + - cronjobs + verbs: + - create + - delete + - get + - list + - patch + - update + - watch +- apiGroups: + - "" + resources: + - configmaps + verbs: + - get + - list + - watch +- apiGroups: + - "" + resources: + - endpoints + verbs: + - get + - list + - watch +- apiGroups: + - "" + resources: + - pods + verbs: + - get + - list + - watch +- apiGroups: + - "" + resources: + - secrets + verbs: + - get + - list + - watch +- apiGroups: + - "" + resources: + - serviceaccounts + verbs: + - create + - delete + - get + - list + - patch + - update + - watch +- apiGroups: + - "" + resources: + - services + verbs: + - create + - delete + - get + - list + - patch + - update + - watch +- apiGroups: + - rbac.authorization.k8s.io + resources: + - clusterrolebindings + verbs: + - create + - delete + - get + - list + - patch + - update + - watch +- apiGroups: + - rbac.authorization.k8s.io + resources: + - rolebindings + verbs: + - create + - delete + - get + - list + - patch + - update + - watch +- apiGroups: + - starrocks.com + resources: + - computenodegroups + verbs: + - create + - delete + - get + - list + - patch + - update + - watch +- apiGroups: + - starrocks.com + resources: + - computenodegroups/finalizers + verbs: + - update +- apiGroups: + - starrocks.com + resources: + - computenodegroups/status + verbs: + - get + - patch + - update +- apiGroups: + - starrocks.com + resources: + - starrocksclusters + verbs: + - create + - delete + - get + - list + - patch + - update + - watch +- apiGroups: + - starrocks.com + resources: + - starrocksclusters/finalizers + verbs: + - update +- apiGroups: + - starrocks.com + resources: + - starrocksclusters/status + verbs: + - get + - patch + - update + +{{- end }} \ No newline at end of file diff --git a/helm-charts/charts/kube-starrocks/templates/starrocks-operator/clusterrolebinding.yaml b/helm-charts/charts/kube-starrocks/templates/starrocks-operator/clusterrolebinding.yaml new file mode 100644 index 00000000..d09d3f43 --- /dev/null +++ b/helm-charts/charts/kube-starrocks/templates/starrocks-operator/clusterrolebinding.yaml @@ -0,0 +1,14 @@ +{{ if and .Values.starrocksOperator.enabled .Values.global.rbac.create }} +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRoleBinding +metadata: + name: {{ template "kube-starrocks.name" . }}-operator +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: ClusterRole + name: {{ template "kube-starrocks.name" . }}-operator +subjects: +- kind: ServiceAccount + name: {{ template "kube-starrocks.operator.serviceAccountName" . }} + namespace: {{ template "kube-starrocks.operator.namespace" . }} +{{- end }} \ No newline at end of file diff --git a/helm-charts/charts/kube-starrocks/templates/starrocks-operator/deployment.yaml b/helm-charts/charts/kube-starrocks/templates/starrocks-operator/deployment.yaml new file mode 100644 index 00000000..8feb3689 --- /dev/null +++ b/helm-charts/charts/kube-starrocks/templates/starrocks-operator/deployment.yaml @@ -0,0 +1,51 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: {{ template "kube-starrocks.name" . }}-operator + namespace: {{ template "kube-starrocks.operator.namespace" . }} + labels: + app: {{ template "kube-starrocks.name" . }}-operator +spec: + selector: + matchLabels: + app: {{ template "kube-starrocks.name" . }}-operator + version: {{ $.Chart.Version }} + replicas: 1 + template: + metadata: + annotations: + kubectl.kubernetes.io/default-container: manager + labels: + app: {{ template "kube-starrocks.name" . }}-operator + version: {{ $.Chart.Version }} + spec: + securityContext: + runAsNonRoot: false + containers: + - command: + - /sroperator + args: + - --leader-elect + image: "{{ .Values.starrocksOperator.image.repository }}:{{ .Values.starrocksOperator.image.tag }}" + imagePullPolicy: {{ .Values.starrocksOperator.imagePullPolicy }} + name: manager + securityContext: + allowPrivilegeEscalation: false + livenessProbe: + httpGet: + path: /healthz + port: 8081 + initialDelaySeconds: 15 + periodSeconds: 20 + readinessProbe: + httpGet: + path: /readyz + port: 8081 + initialDelaySeconds: 5 + periodSeconds: 10 + # TODO(user): Configure the resources accordingly based on the project requirements. + # More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ + resources: +{{ toYaml .Values.starrocksOperator.resources | indent 10 }} + serviceAccountName: {{ template "kube-starrocks.operator.serviceAccountName" . }} + terminationGracePeriodSeconds: 10 diff --git a/helm-charts/charts/kube-starrocks/templates/starrocks-operator/leader-election-role-binding.yaml b/helm-charts/charts/kube-starrocks/templates/starrocks-operator/leader-election-role-binding.yaml new file mode 100644 index 00000000..2b1e9b60 --- /dev/null +++ b/helm-charts/charts/kube-starrocks/templates/starrocks-operator/leader-election-role-binding.yaml @@ -0,0 +1,15 @@ +{{ if and .Values.starrocksOperator.enabled .Values.global.rbac.create }} +apiVersion: rbac.authorization.k8s.io/v1 +kind: RoleBinding +metadata: + name: cn-leader-election-rolebinding + namespace: {{ template "kube-starrocks.operator.namespace" . }} +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: Role + name: cn-leader-election-role +subjects: +- kind: ServiceAccount + name: {{ template "kube-starrocks.operator.serviceAccountName" . }} + namespace: {{ template "kube-starrocks.operator.namespace" . }} +{{- end }} \ No newline at end of file diff --git a/helm-charts/charts/kube-starrocks/templates/starrocks-operator/leader-election-role.yaml b/helm-charts/charts/kube-starrocks/templates/starrocks-operator/leader-election-role.yaml new file mode 100644 index 00000000..c6ddaf9f --- /dev/null +++ b/helm-charts/charts/kube-starrocks/templates/starrocks-operator/leader-election-role.yaml @@ -0,0 +1,40 @@ + +{{ if and .Values.starrocksOperator.enabled .Values.global.rbac.create }} +apiVersion: rbac.authorization.k8s.io/v1 +kind: Role +metadata: + name: cn-leader-election-role + namespace: {{ template "kube-starrocks.operator.namespace" . }} +rules: +- apiGroups: + - "" + resources: + - configmaps + verbs: + - get + - list + - watch + - create + - update + - patch + - delete +- apiGroups: + - coordination.k8s.io + resources: + - leases + verbs: + - get + - list + - watch + - create + - update + - patch + - delete +- apiGroups: + - "" + resources: + - events + verbs: + - create + - patch +{{- end }} \ No newline at end of file diff --git a/helm-charts/charts/kube-starrocks/templates/starrocks-operator/service_account.yaml b/helm-charts/charts/kube-starrocks/templates/starrocks-operator/service_account.yaml new file mode 100644 index 00000000..d2cc2dd3 --- /dev/null +++ b/helm-charts/charts/kube-starrocks/templates/starrocks-operator/service_account.yaml @@ -0,0 +1,7 @@ +{{- if and .Values.starrocksOperator.enabled .Values.global.rbac.create }} +apiVersion: v1 +kind: ServiceAccount +metadata: + name: {{ template "kube-starrocks.operator.serviceAccountName" . }} + namespace: {{ template "kube-starrocks.operator.namespace" . }} + {{- end }} \ No newline at end of file diff --git a/helm-charts/charts/kube-starrocks/templates/starrocks/beconfigmap.yaml b/helm-charts/charts/kube-starrocks/templates/starrocks/beconfigmap.yaml new file mode 100644 index 00000000..f214769e --- /dev/null +++ b/helm-charts/charts/kube-starrocks/templates/starrocks/beconfigmap.yaml @@ -0,0 +1,14 @@ +{{- if .Values.starrocksBeSpec }} +apiVersion: v1 +kind: ConfigMap +metadata: + name: {{ template "starrockscluster.be.configmap.name" . }} + namespace: {{ template "starrockscluster.namespace" . }} + labels: + cluster: {{ template "kube-starrocks.name" . }} + app: "be" +data: +{{ include "starrocksclster.be.config" . | indent 2 }} + +{{- end }} + diff --git a/helm-charts/charts/kube-starrocks/templates/starrocks/cnconfigmap.yaml b/helm-charts/charts/kube-starrocks/templates/starrocks/cnconfigmap.yaml new file mode 100644 index 00000000..dc12e2e7 --- /dev/null +++ b/helm-charts/charts/kube-starrocks/templates/starrocks/cnconfigmap.yaml @@ -0,0 +1,13 @@ +{{- if .Values.starrocksCluster.enabledCn }} +apiVersion: v1 +kind: ConfigMap +metadata: + name: {{ template "starrockscluster.cn.configmap.name" . }} + namespace: {{ template "starrockscluster.namespace" . }} + labels: + cluster: {{ template "kube-starrocks.name" . }} + app: "cn" +data: +{{ include "starrockscluster.cn.config" . | indent 2 }} + +{{- end }} diff --git a/helm-charts/charts/kube-starrocks/templates/starrocks/feconfigmap.yaml b/helm-charts/charts/kube-starrocks/templates/starrocks/feconfigmap.yaml new file mode 100644 index 00000000..6d95d5de --- /dev/null +++ b/helm-charts/charts/kube-starrocks/templates/starrocks/feconfigmap.yaml @@ -0,0 +1,10 @@ +apiVersion: v1 +kind: ConfigMap +metadata: + name: {{ template "starrockscluster.fe.configmap.name" . }} + namespace: {{ template "starrockscluster.namespace" . }} + labels: + cluster: {{ template "kube-starrocks.name" . }} + app: "fe" +data: +{{ include "starrockscluster.fe.config" . | indent 2 }} \ No newline at end of file diff --git a/helm-charts/charts/kube-starrocks/templates/starrocks/starrockscluster.yaml b/helm-charts/charts/kube-starrocks/templates/starrocks/starrockscluster.yaml new file mode 100644 index 00000000..05fe12e8 --- /dev/null +++ b/helm-charts/charts/kube-starrocks/templates/starrocks/starrockscluster.yaml @@ -0,0 +1,200 @@ +apiVersion: starrocks.com/{{ .Values.global.crdVersion }} +kind: StarRocksCluster +metadata: + name: {{ template "starrockscluster.name" . }} + namespace: {{ template "starrockscluster.namespace" . }} + labels: + cluster: {{ template "starrockscluster.name" . }} +{{- include "kube-starrocks.labels" . | nindent 4 }} +{{- if .Values.starrocksCluster.annotations }} + annotations: + {{ toYaml .Values.starrocksCluster.annotations | nindent 4 }} +{{- end }} +spec: + starRocksFeSpec: + image: "{{ .Values.starrocksFESpec.image.repository }}:{{ .Values.starrocksFESpec.image.tag }}" + replicas: {{ .Values.starrocksFESpec.replicas }} +{{- if .Values.starrocksFESpec.resources }} +{{ toYaml .Values.starrocksFESpec.resources | indent 4 }} +{{- end }} +{{- if .Values.starrocksFESpec.service.type }} + service: + type: {{ .Values.starrocksFESpec.service.type }} +{{- if and (eq "LoadBalancer" .Values.starrocksFESpec.service.type) .Values.starrocksFESpec.service.loadbalancerIP }} + loadBalancerIP: {{ .Values.starrocksFESpec.service.loadbalancerIP }} +{{- end }} +{{- end }} +{{- if .Values.starrocksFESpec.annotations }} + annotations: +{{ toYaml .Values.starrocksFESpec.annotations | indent 6 }} +{{- end }} +{{- if .Values.starrocksFESpec.imagePullSecrets }} + imagePullSecrets: +{{toYaml .Values.starrocksFESpec.imagePullSecrets | indent 4 }} +{{- end }} +{{- if .Values.starrocksFESpec.serviceAccount }} + serviceAccount: {{ .Values.starrocksFESpec.serviceAccount }} +{{- end }} + fsGroup: {{ .Values.starrocksFESpec.fsGroup }} +{{- if .Values.starrocksFESpec.nodeSelector }} + nodeSelector: +{{ toYaml .Values.starrocksFESpec.nodeSelector | indent 6 }} +{{- end }} +{{- if .Values.starrocksFESpec.podLabels }} + podLabels: +{{toYaml .Values.starrocksFESpec.podLabels | indent 6 }} +{{- end }} +{{- if .Values.starrocksFESpec.hostAliases }} + hostAliases: +{{toYaml .Values.starrocksFESpec.hostAliases | indent 4 }} +{{- end }} +{{- if .Values.starrocksFESpec.feEnvVars }} + feEnvVars: +{{ toYaml .Values.starrocksFESpec.feEnvVars | indent 4 }} +{{- end }} +{{- if .Values.starrocksFESpec.affinity }} + affinity: +{{ toYaml .Values.starrocksFESpec.affinity | indent 6 }} +{{- end }} +{{- if .Values.starrocksFESpec.tolerations }} + tolerations: +{{toYaml .Values.starrocksFESpec.tolerations | indent 4 }} +{{- end }} + configMapInfo: + configMapName: {{ template "starrockscluster.fe.configmap.name" . }} + resolveKey: fe.conf +{{- if .Values.starrocksFESpec.storageSpec.name }} + storageVolumes: + - name: {{ .Values.starrocksFESpec.storageSpec.name }} +{{- if .Values.starrocksFESpec.storageSpec.storageClassName }} + storageClassName: {{ .Values.starrocksFESpec.storageSpec.storageClassName }} +{{- end }} +{{- if .Values.starrocksFESpec.storageSpec.storageSize }} + storageSize: {{ .Values.starrocksFESpec.storageSpec.storageSize }} +{{- end }} + mountPath: {{ template "starrockscluster.fe.meta.path" . }} +{{- end }} + +{{- if .Values.starrocksBeSpec }} + starRocksBeSpec: + image: "{{ .Values.starrocksBeSpec.image.repository }}:{{ .Values.starrocksBeSpec.image.tag }}" + replicas: {{ .Values.starrocksBeSpec.replicas }} +{{- if .Values.starrocksBeSpec.resource }} +{{ toYaml .Values.starrocksBeSpec.resource | indent 4 }} +{{- end }} +{{- if .Values.starrocksBeSpec.service.type }} + service: + type: {{ .Values.starrocksBeSpec.service.type }} +{{- if and (eq "LoadBalancer" .Values.starrocksBeSpec.service.type) .Values.starrocksBeSpec.service.loadbalancerIP }} + loadBalancerIP: {{ .Values.starrocksBeSpec.service.loadbalancerIP }} +{{- end }} +{{- end }} +{{- if .Values.starrocksBeSpec.annotations }} + annotations: +{{ toYaml .Values.starrocksBeSpec.annotations | indent 6 }} +{{- end }} +{{- if .Values.starrocksBeSpec.imagePullSecrets }} + imagePullSecrets: +{{toYaml .Values.starrocksBeSpec.imagePullSecrets | indent 4 }} +{{- end }} +{{- if .Values.starrocksBeSpec.serviceAccount }} + serviceAccount: {{ .Values.starrocksBeSpec.serviceAccount }} +{{- end }} + fsGroup: {{ .Values.starrocksBeSpec.fsGroup }} +{{- if .Values.starrocksBeSpec.podLabels }} + podLabels: +{{toYaml .Values.starrocksBeSpec.podLabels | indent 6 }} +{{- end }} +{{- if .Values.starrocksBeSpec.hostAliases }} + hostAliases: +{{toYaml .Values.starrocksBeSpec.hostAliases | indent 4 }} +{{- end }} +{{- if .Values.starrocksBeSpec.nodeSelector }} + nodeSelector: +{{ toYaml .Values.starrocksBeSpec.nodeSelector | indent 6 }} +{{- end }} +{{- if .Values.starrocksBeSpec.beEnvVars }} + beEnvVars: +{{ toYaml .Values.starrocksBeSpec.beEnvVars | indent 4 }} +{{- end }} +{{- if .Values.starrocksBeSpec.affinity }} + affinity: +{{ toYaml .Values.starrocksBeSpec.affinity | indent 6 }} +{{- end }} +{{- if .Values.starrocksBeSpec.tolerations }} + tolerations: +{{toYaml .Values.starrocksBeSpec.tolerations | indent 4 }} +{{- end }} + configMapInfo: + configMapName: {{template "starrockscluster.be.configmap.name" . }} + resolveKey: be.conf +{{- if .Values.starrocksBeSpec.storageSpec.name }} + storageVolumes: + - name: {{ .Values.starrocksBeSpec.storageSpec.name }} +{{- if .Values.starrocksBeSpec.storageSpec.storageClassName }} + storageClassName: {{ .Values.starrocksBeSpec.storageSpec.storageClassName }} +{{- end }} +{{- if .Values.starrocksBeSpec.storageSpec.storageSize }} + storageSize: {{ .Values.starrocksBeSpec.storageSpec.storageSize }} +{{- end }} + mountPath: {{template "starrockscluster.be.data.path" . }} +{{- end }} +{{- end }} + +{{- if .Values.starrocksCluster.enabledCn }} + starRocksCnSpec: + image: "{{ .Values.starrocksCnSpec.image.repository }}:{{ .Values.starrocksCnSpec.image.tag }}" +{{- if .Values.starrocksCnSpec.serviceAccount }} + serviceAccount: {{ .Values.starrocksCnSpec.serviceAccount }} +{{- end }} + fsGroup: {{ .Values.starrocksCnSpec.fsGroup }} +{{- if .Values.starrocksCnSpec.podLabels }} + podLabels: +{{toYaml .Values.starrocksCnSpec.podLabels | indent 6 }} +{{- end }} +{{- if .Values.starrocksCnSpec.hostAliases }} + hostAliases: +{{toYaml .Values.starrocksCnSpec.hostAliases | indent 4 }} +{{- end }} +{{- if .Values.starrocksCnSpec.nodeSelector }} + nodeSelector: +{{ toYaml .Values.starrocksCnSpec.nodeSelector | indent 6 }} +{{- end }} +{{- if .Values.starrocksCnSpec.cnEnvVars }} + cnEnvVars: +{{ toYaml .Values.starrocksCnSpec.cnEnvVars | indent 4 }} +{{- end }} +{{- if .Values.starrocksCnSpec.affinity }} + affinity: +{{ toYaml .Values.starrocksCnSpec.affinity | indent 6 }} +{{- end }} +{{- if .Values.starrocksCnSpec.tolerations }} + tolerations: +{{toYaml .Values.starrocksCnSpec.tolerations | indent 4 }} +{{- end }} +{{- if and .Values.starrocksCluster.enabledCn .Values.starrocksCnSpec.autoScalingPolicy }} + autoScalingPolicy: +{{ toYaml .Values.starrocksCnSpec.autoScalingPolicy | indent 6 }} +{{- end }} +{{- if .Values.starrocksCnSpec.resource }} +{{ toYaml .Values.starrocksCnSpec.resource | indent 4 }} +{{- end }} +{{- if .Values.starrocksCnSpec.service.type }} + service: + type: {{ .Values.starrocksCnSpec.service.type }} +{{- if and (eq "LoadBalancer" .Values.starrocksCnSpec.service.type) .Values.starrocksCnSpec.service.loadbalancerIP }} + loadBalancerIP: {{ .Values.starrocksCnSpec.service.loadbalancerIP }} +{{- end }} +{{- end }} +{{- if .Values.starrocksCnSpec.annotations }} + annotations: +{{ toYaml .Values.starrocksCnSpec.annotations | indent 6 }} +{{- end }} +{{- if .Values.starrocksCnSpec.imagePullSecrets }} + imagePullSecrets: +{{toYaml .Values.starrocksCnSpec.imagePullSecrets | indent 4 }} +{{- end }} + configMapInfo: + configMapName: {{template "starrockscluster.cn.configmap.name" . }} + resolveKey: cn.conf +{{- end }} diff --git a/helm-charts/charts/kube-starrocks/templates/tests/test-connection.yaml b/helm-charts/charts/kube-starrocks/templates/tests/test-connection.yaml new file mode 100644 index 00000000..1e9ecdd2 --- /dev/null +++ b/helm-charts/charts/kube-starrocks/templates/tests/test-connection.yaml @@ -0,0 +1,15 @@ +apiVersion: v1 +kind: Pod +metadata: + name: "{{ include "kube-starrocks.name" . }}-test-connection" + labels: + {{- include "kube-starrocks.labels" . | nindent 4 }} + annotations: + "helm.sh/hook": test +spec: + containers: + - name: wget + image: busybox + command: ['wget'] + args: ['{{ include "kube-starrocks.name" . }}'] + restartPolicy: Never diff --git a/helm-charts/charts/kube-starrocks/values.yaml b/helm-charts/charts/kube-starrocks/values.yaml new file mode 100644 index 00000000..e8b1d19a --- /dev/null +++ b/helm-charts/charts/kube-starrocks/values.yaml @@ -0,0 +1,388 @@ +# Default values for kube-starrocks. +# This is a YAML-formatted file. +# Declare variables to be passed into your templates. +global: + rbac: + create: true + # set the starrockscluster CRD version. from operator v1.6 we have supported v1 CRD and as default CRD version. but the v1alpha1 also supported. + # in future v1alpha1 as verify CRD, when the ability is stable will be added into v1. + # supported value: v1, v1alpha1 + crdVersion: v1 + +# the starrockscluster crd' name. +nameOverride: "" +starrocksOperator: + # provide a name for operator deployment. + enabled: true + namespaceOverride: "" + image: + # image sliced by "repository:tag" + repository: starrocks/operator + tag: latest + imagePullPolicy: Always + resources: + limits: + cpu: 500m + memory: 200Mi + requests: + cpu: 500m + memory: 200Mi + + +# deploy a starrocks cluster +starrocksCluster: + # Provide a name for starprocks cluster + name: "" + namespace: "" + # annotations for starrocks cluster + annotations: {} + labels: + object: starrocks + # specify the cn deploy or not. + enabledCn: false + + +# spec to deploy fe. +starrocksFESpec: + # Number of replicas to deploy for a fe statefulset. + replicas: 1 + image: + # image sliced by "repository:tag" + repository: starrocks/fe-ubuntu + tag: 2.5.5 + + # add annotations for fe pods. example, if you want to config monitor for datadog, you can config the annotations. etc... + annotations: {} + + # A special supplemental group that applies to all containers in a pod. Some volume types allow the Kubelet to change the ownership of that volume to be owned by the pod: + # Ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/#configure-volume-permission-and-ownership-change-policy-for-pods + fsGroup: 0 + + # specify the service name and port config and serviceType + # the service type refer https://kubernetes.io/docs/concepts/services-networking/service/#publishing-services-service-types + service: + # the fe service type, only supported ClusterIP, NodePort, LoadBalancer, ExternalName + type: "ClusterIP" + # the loadbalancerIP for static ip config when the type=LoadBalancer and loadbalancerIp is not empty. + loadbalancerIP: "" + + # contains the secret name + imagePullSecrets: [] + # - name: "image-pull-secret" + + # serviceAccount for fe access cloud service. + serviceAccount: "" + + # If specified, the pod's nodeSelector,displayName="Map of nodeSelectors to match when scheduling pods on nodes" + # Ref: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#nodeselector + nodeSelector: {} + # beta.kubernetes.io/arch: amd64 + # beta.kubernetes.io/os: linux + + # the pod labels for user select or classify pods. + podLabels: {} + + ## hostAliases allows adding entries to /etc/hosts inside the containers + hostAliases: [] + # - ip: "127.0.0.1" + # hostnames: + # - "example.com" + + # Additional fe container environment variables + # You specify this manually like you would a raw deployment manifest. + # This means you can bind in environment variables from secrets. + # Ref: https://kubernetes.io/docs/tasks/inject-data-application/define-environment-variable-container/ + feEnvVars: [] + # e.g. static environment variable: + # - name: DEMO_GREETING + # value: "Hello from the environment" + # + # e.g. secret environment variable: + # - name: USERNAME + # valueFrom: + # secretKeyRef: + # name: mysecret + # key: username + + # Pod affinity + affinity: {} + # nodeAffinity: + # requiredDuringSchedulingIgnoredDuringExecution: + # nodeSelectorTerms: + # - matchFields: + # - key: metadata.name + # operator: In + # values: + # - target-host-name + + # Node tolerations for fe pod scheduling to nodes with taints + # Ref: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/ + tolerations: [] + # - key: "key" + # operator: "Equal|Exists" + # value: "value" + # effect: "NoSchedule|PreferNoSchedule|NoExecute(1.6 only)" + resources: + requests: + cpu: 4 + memory: 4Gi + limits: + cpu: 8 + memory: 8Gi + + # fe storageSpec for persistent meta data. + storageSpec: + # the name of volume for mount. if not will use emptyDir. + name: "" + # the storageClassName represent the used storageclss name. if not set will use k8s cluster default storageclass. + # you must set name when you set storageClassName + storageClassName: "" + #the persistent volume size default 1 Gi. + storageSize: 1Gi + + # the config for start fe. the base information as follows. + config: | + LOG_DIR = ${STARROCKS_HOME}/log + DATE = "$(date +%Y%m%d-%H%M%S)" + JAVA_OPTS="-Dlog4j2.formatMsgNoLookups=true -Xmx8192m -XX:+UseMembar -XX:SurvivorRatio=8 -XX:MaxTenuringThreshold=7 -XX:+PrintGCDateStamps -XX:+PrintGCDetails -XX:+UseConcMarkSweepGC -XX:+UseParNewGC -XX:+CMSClassUnloadingEnabled -XX:-CMSParallelRemarkEnabled -XX:CMSInitiatingOccupancyFraction=80 -XX:SoftRefLRUPolicyMSPerMB=0 -Xloggc:${LOG_DIR}/fe.gc.log.$DATE" + JAVA_OPTS_FOR_JDK_9="-Dlog4j2.formatMsgNoLookups=true -Xmx8192m -XX:SurvivorRatio=8 -XX:MaxTenuringThreshold=7 -XX:+CMSClassUnloadingEnabled -XX:-CMSParallelRemarkEnabled -XX:CMSInitiatingOccupancyFraction=80 -XX:SoftRefLRUPolicyMSPerMB=0 -Xlog:gc*:${LOG_DIR}/fe.gc.log.$DATE:time" + http_port = 8030 + rpc_port = 9020 + query_port = 9030 + edit_log_port = 9010 + mysql_service_nio_enabled = true + sys_log_level = INFO + +## spec for compute node, compute node provide compute function. +starrocksCnSpec: + image: + # image sliced by "repository:tag" + repository: starrocks/cn-ubuntu + tag: 2.5.5 + # serviceAccount for cn access cloud service. + #serviceAccount: starrocks + + # add annotations for cn pods. example, if you want to config monitor for datadog, you can config the annotations. etc... + annotations: {} + + # A special supplemental group that applies to all containers in a pod. Some volume types allow the Kubelet to change the ownership of that volume to be owned by the pod: + # Ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/#configure-volume-permission-and-ownership-change-policy-for-pods + fsGroup: 0 + + # specify the service name and port config and serviceType + # the service type refer https://kubernetes.io/docs/concepts/services-networking/service/#publishing-services-service-types + service: + # the fe service type, only supported ClusterIP, NodePort, LoadBalancer, ExternalName + type: "ClusterIP" + # the loadbalancerIP for static ip config when the type=LoadBalancer and loadbalancerIp is not empty. + loadbalancerIP: "" + + # contains the secret name + imagePullSecrets: [] + # - name: "image-pull-secret" + + # serviceAccount for fe access cloud service. + serviceAccount: "" + + # If specified, the pod's nodeSelector,displayName="Map of nodeSelectors to match when scheduling pods on nodes" + # Ref: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#nodeselector + nodeSelector: {} + # beta.kubernetes.io/arch: amd64 + # beta.kubernetes.io/os: linux + + # the pod labels for user select or classify pods. + podLabels: {} + + ## hostAliases allows adding entries to /etc/hosts inside the containers + hostAliases: [] + # - ip: "127.0.0.1" + # hostnames: + # - "example.com" + + # Additional cn container environment variables + # You specify this manually like you would a raw deployment manifest. + # This means you can bind in environment variables from secrets. + # Ref: https://kubernetes.io/docs/tasks/inject-data-application/define-environment-variable-container/ + cnEnvVars: [] + # e.g. static environment variable: + # - name: DEMO_GREETING + # value: "Hello from the environment" + # e.g. secret environment variable: + # - name: USERNAME + # valueFrom: + # secretKeyRef: + # name: mysecret + # key: username + + # Pod affinity + affinity: {} + # nodeAffinity: + # requiredDuringSchedulingIgnoredDuringExecution: + # nodeSelectorTerms: + # - matchFields: + # - key: metadata.name + # operator: In + # values: + # - target-host-name + + + # Node tolerations for cn pod scheduling to nodes with taints + # Ref: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/ + tolerations: [] + # - key: "key" + # operator: "Equal|Exists" + # value: "value" + # effect: "NoSchedule|PreferNoSchedule|NoExecute(1.6 only)" + + autoScalingPolicy: {} + # maxReplicas: 10 + # minReplicas: 1 + # hpaPolicy: + # metrics: + # - type: Resource + # resource: + # name: memory + # target: + # averageUtilization: 30 + # type: Utilization + # - type: Resource + # resource: + # name: cpu + # target: + # averageUtilization: 30 + # type: Utilization + # behavior: + # scaleUp: + # policies: + # - type: Pods + # value: 1 + # periodSeconds: 10 + # scaleDown: + # selectPolicy: Disabled + + # define resources requests and limits for cn pods. + resource: + limits: + cpu: 8 + memory: 8Gi + requests: + cpu: 4 + memory: 8Gi + # the config start for cn, the base information as follows. + config: | + sys_log_level = INFO + # ports for admin, web, heartbeat service + thrift_port = 9060 + webserver_port = 8040 + heartbeat_service_port = 9050 + brpc_port = 8060 + + +## spec for component be, be provide storage and compute function. +starrocksBeSpec: + ## Number of replicas to deploy for a be statefulset. + replicas: 1 + image: + # image sliced by "repository:tag" + repository: starrocks/be-ubuntu + tag: 2.5.5 + ## serviceAccount for be access cloud service. + #serviceAccount: starrocks + + # add annotations for be pods. example, if you want to config monitor for datadog, you can config the annotations. etc... + annotations: {} + + # A special supplemental group that applies to all containers in a pod. Some volume types allow the Kubelet to change the ownership of that volume to be owned by the pod: + # Ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/#configure-volume-permission-and-ownership-change-policy-for-pods + fsGroup: 0 + + # specify the service name and port config and serviceType + # the service type refer https://kubernetes.io/docs/concepts/services-networking/service/#publishing-services-service-types + service: + # the fe service type, only supported ClusterIP, NodePort, LoadBalancer, ExternalName + type: "ClusterIP" + # the loadbalancerIP for static ip config when the type=LoadBalancer and loadbalancerIp is not empty. + loadbalancerIP: "" + + # contains the secret name + imagePullSecrets: [] + # - name: "image-pull-secret" + + # serviceAccount for fe access cloud service. + serviceAccount: "" + + # If specified, the pod's nodeSelector,displayName="Map of nodeSelectors to match when scheduling pods on nodes" + # Ref: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#nodeselector + nodeSelector: {} + # beta.kubernetes.io/arch: amd64 + # beta.kubernetes.io/os: linux + + # the pod labels for user select or classify pods. + podLabels: {} + + ## hostAliases allows adding entries to /etc/hosts inside the containers + hostAliases: [] + # - ip: "127.0.0.1" + # hostnames: + # - "example.com" + + # Additional be container environment variables + # You specify this manually like you would a raw deployment manifest. + # This means you can bind in environment variables from secrets. + # + # Ref: https://kubernetes.io/docs/tasks/inject-data-application/define-environment-variable-container/ + beEnvVars: [] + # e.g. static environment variable: + # - name: DEMO_GREETING + # value: "Hello from the environment" + # + # e.g. secret environment variable: + # - name: USERNAME + # valueFrom: + # secretKeyRef: + # name: mysecret + # key: username + + ## Pod affinity + affinity: {} + # nodeAffinity: + # requiredDuringSchedulingIgnoredDuringExecution: + # nodeSelectorTerms: + # - matchFields: + # - key: metadata.name + # operator: In + # values: + # - target-host-name + + # Node tolerations for be pod scheduling to nodes with taints + # Ref: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/ + tolerations: [] + # - key: "key" + # operator: "Equal|Exists" + # value: "value" + # effect: "NoSchedule|PreferNoSchedule|NoExecute(1.6 only)" + + resource: + requests: + cpu: 4 + memory: 4Gi + limits: + cpu: 8 + memory: 8Gi + ## specify storageclass name and request size. + storageSpec: + # the name of volume for mount. if not will use emptyDir. + name: "" + # the storageClassName represent the used storageclss name. if not set will use k8s cluster default storageclass. + # you must set name when you set storageClassName + storageClassName: "" + storageSize: 1Ti + + # the config for start be. the base information as follows. + config: | + be_port = 9060 + webserver_port = 8040 + heartbeat_service_port = 9050 + brpc_port = 8060 + sys_log_level = INFO + default_rowset_type = beta