Add chart starrocks-operator/1.11.0

This commit is contained in:
wbsong111
2025-08-20 14:56:35 +09:00
parent 87e0e0430b
commit 2c883ae917
14 changed files with 7915 additions and 0 deletions
+23
View File
@@ -0,0 +1,23 @@
apiVersion: v2
appVersion: 1.11.0
description: A Helm chart for StarRocks operator
home: https://github.com/StarRocks/starrocks-kubernetes-operator
icon: https://avatars.githubusercontent.com/u/88238841
keywords:
- operator
- starrocks
- database
- olap
kubeVersion: '>=1.23.0-0'
maintainers:
- email: caixiaohua@starrocks.com
name: Kevin Cai
- email: shensida@starrocks.com
name: SidaShen
- email: yandongxiao@starrocks.com
name: Dongxiao Yan
name: operator
sources:
- https://github.com/StarRocks/starrocks
type: application
version: 1.11.0
+50
View File
@@ -0,0 +1,50 @@
# Deploy Operator by operator Chart
[![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/starrocks-kubernetes-operator/releases)
[Helm](https://helm.sh/) is a package manager for Kubernetes. A [Helm Chart](https://helm.sh/docs/topics/charts/) is a Helm package and contains all of the resource definitions necessary to run an application on a Kubernetes cluster. This topic describes how to use Helm to automatically deploy a StarRocks operator on a Kubernetes cluster.
## Before you begin
- [Create a Kubernetes cluster](https://kubernetes.io/).
- [Install Helm](https://helm.sh/docs/intro/quickstart/).
## Install operator Chart
1. Add the Helm Chart Repo for StarRocks. The Helm Chart contains the definitions of the StarRocks Operator and the custom resource StarRocksCluster.
1. Add the Helm Chart Repo.
```Bash
helm repo add starrocks https://starrocks.github.io/starrocks-kubernetes-operator
```
2. Update the Helm Chart Repo to the latest version.
```Bash
helm repo update starrocks
```
3. View the Helm Chart Repo that you added.
```Bash
$ helm search repo starrocks
NAME CHART VERSION APP VERSION DESCRIPTION
starrocks/kube-starrocks 1.8.0 3.1-latest kube-starrocks includes two subcharts, starrock...
starrocks/operator 1.8.0 1.8.0 A Helm chart for StarRocks operator
starrocks/starrocks 1.8.0 3.1-latest A Helm chart for StarRocks cluster
```
2. Install the operator Chart.
```Bash
helm install starrocks-operator starrocks/operator
```
Please see [values.yaml](./values.yaml) for more details.
## Uninstall operator Chart
```Bash
helm uninstall starrocks-operator
```
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,3 @@
Thank you for installing {{ .Chart.Name }}-{{ .Chart.Version }} operator chart.
Please see the values.yaml for more operation information: https://github.com/StarRocks/starrocks-kubernetes-operator/blob/main/helm-charts/charts/kube-starrocks/charts/operator/values.yaml
@@ -0,0 +1,14 @@
{{/*
The default service account name to use for the operator.
*/}}
{{- define "operator.serviceAccountName" -}}
{{- default "starrocks" .Values.global.rbac.serviceAccount.name }}
{{- end }}
{{- define "operator.namespace" -}}
{{- default .Release.Namespace .Values.starrocksOperator.namespaceOverride }}
{{- end }}
{{- define "operator.name" -}}
{{- default .Chart.Name .Values.nameOverride -}}
{{- end }}
@@ -0,0 +1,73 @@
{{- if and .Values.starrocksOperator.enabled .Values.global.rbac.create }}
{{- if .Values.starrocksOperator.watchNamespace | not }}
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
name: {{ template "operator.name" . }}-operator
labels:
app: {{ template "operator.name" . }}-operator
rules:
- apiGroups:
- apps
resources:
- deployments
- statefulsets
verbs:
- '*'
- apiGroups:
- autoscaling
resources:
- horizontalpodautoscalers
verbs:
- '*'
- apiGroups:
- batch
resources:
- cronjobs
verbs:
- '*'
- apiGroups:
- ""
resources:
- configmaps
- serviceaccounts
- services
verbs:
- '*'
- apiGroups:
- ""
resources:
- endpoints
- pods
- secrets
verbs:
- get
- list
- watch
- apiGroups:
- starrocks.com
resources:
- starrocksclusters
- starrockswarehouses
verbs:
- '*'
# when deploying to OpenShift, the following permission is also necessary
- apiGroups:
- starrocks.com
resources:
- starrocksclusters/finalizers
- starrockswarehouses/finalizers
verbs:
- update
- apiGroups:
- starrocks.com
resources:
- starrocksclusters/status
- starrockswarehouses/status
verbs:
- get
- patch
- update
{{- end }}
{{- end }}
@@ -0,0 +1,16 @@
{{ if and .Values.starrocksOperator.enabled .Values.global.rbac.create }}
{{- if .Values.starrocksOperator.watchNamespace | not }}
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: {{ template "operator.name" . }}-operator
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: {{ template "operator.name" . }}-operator
subjects:
- kind: ServiceAccount
name: {{ template "operator.serviceAccountName" . }}
namespace: {{ template "operator.namespace" . }}
{{- end }}
{{- end }}
@@ -0,0 +1,89 @@
{{- if .Values.starrocksOperator.enabled }}
apiVersion: apps/v1
kind: Deployment
metadata:
name: {{ template "operator.name" . }}-operator
namespace: {{ template "operator.namespace" . }}
labels:
app: {{ template "operator.name" . }}-operator
{{- if .Values.starrocksOperator.annotations }}
annotations:
{{- toYaml .Values.starrocksOperator.annotations | nindent 4 }}
{{- end }}
spec:
selector:
matchLabels:
app: {{ template "operator.name" . }}-operator
replicas: {{ .Values.starrocksOperator.replicaCount }}
template:
metadata:
annotations:
kubectl.kubernetes.io/default-container: manager
{{- if .Values.starrocksOperator.annotations }}
{{- toYaml .Values.starrocksOperator.annotations | nindent 8 }}
{{- end }}
labels:
app: {{ template "operator.name" . }}-operator
version: {{ $.Chart.Version }}
spec:
automountServiceAccountToken: true
{{- if .Values.starrocksOperator.imagePullSecrets }}
imagePullSecrets:
{{- toYaml .Values.starrocksOperator.imagePullSecrets | nindent 6 }}
{{- end }}
containers:
- command:
- /sroperator
args:
- --leader-elect
{{- toYaml .Values.starrocksOperator.log | nindent 8 }}
{{- if .Values.starrocksOperator.watchNamespace }}
- --namespace={{ .Values.starrocksOperator.watchNamespace }}
{{- end }}
{{- if .Values.starrocksOperator.dnsDomainSuffix }}
- --dns-domain-suffix={{ .Values.starrocksOperator.dnsDomainSuffix }}
{{- end }}
- --volume-name-with-hash={{ .Values.starrocksOperator.volumeNameWithHash }}
env:
- name: TZ
value: {{ .Values.timeZone }}
{{- if .Values.starrocksOperator.env }}
{{- toYaml .Values.starrocksOperator.env | nindent 8 }}
{{- end }}
image: "{{ .Values.starrocksOperator.image.repository }}:{{ .Values.starrocksOperator.image.tag }}"
imagePullPolicy: {{ .Values.starrocksOperator.imagePullPolicy }}
name: manager
{{- if .Values.starrocksOperator.securityContext }}
securityContext:
{{- toYaml .Values.starrocksOperator.securityContext | nindent 10 }}
{{- end }}
livenessProbe:
httpGet:
path: /healthz
port: 8081
initialDelaySeconds: 15
periodSeconds: 20
readinessProbe:
httpGet:
path: /readyz
port: 8081
initialDelaySeconds: 5
periodSeconds: 10
# More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
resources:
{{- toYaml .Values.starrocksOperator.resources | nindent 10 }}
serviceAccountName: {{ template "operator.serviceAccountName" . }}
terminationGracePeriodSeconds: 10
{{- if .Values.starrocksOperator.nodeSelector }}
nodeSelector:
{{- toYaml .Values.starrocksOperator.nodeSelector | nindent 8 }}
{{- end }}
{{- if .Values.starrocksOperator.affinity }}
affinity:
{{- toYaml .Values.starrocksOperator.affinity | nindent 8 }}
{{- end }}
{{- if .Values.starrocksOperator.tolerations }}
tolerations:
{{- toYaml .Values.starrocksOperator.tolerations | nindent 8 }}
{{- end }}
{{- end }}
@@ -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 "operator.namespace" . }}
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: Role
name: cn-leader-election-role
subjects:
- kind: ServiceAccount
name: {{ template "operator.serviceAccountName" . }}
namespace: {{ template "operator.namespace" . }}
{{- end }}
@@ -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 "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 }}
@@ -0,0 +1,74 @@
{{- if and .Values.starrocksOperator.enabled .Values.global.rbac.create }}
{{- if .Values.starrocksOperator.watchNamespace }}
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
name: {{ template "operator.name" . }}-operator
namespace: {{ template "operator.namespace" . }}
labels:
app: {{ template "operator.name" . }}-operator
rules:
- apiGroups:
- apps
resources:
- deployments
- statefulsets
verbs:
- '*'
- apiGroups:
- autoscaling
resources:
- horizontalpodautoscalers
verbs:
- '*'
- apiGroups:
- batch
resources:
- cronjobs
verbs:
- '*'
- apiGroups:
- ""
resources:
- configmaps
- serviceaccounts
- services
verbs:
- '*'
- apiGroups:
- ""
resources:
- endpoints
- pods
- secrets
verbs:
- get
- list
- watch
- apiGroups:
- starrocks.com
resources:
- starrocksclusters
- starrockswarehouses
verbs:
- '*'
# when deploying to OpenShift, the following permission is also necessary
- apiGroups:
- starrocks.com
resources:
- starrocksclusters/finalizers
- starrockswarehouses/finalizers
verbs:
- update
- apiGroups:
- starrocks.com
resources:
- starrocksclusters/status
- starrockswarehouses/status
verbs:
- get
- patch
- update
{{- end }}
{{- end }}
@@ -0,0 +1,17 @@
{{- if and .Values.starrocksOperator.enabled .Values.global.rbac.create }}
{{- if .Values.starrocksOperator.watchNamespace }}
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
name: {{ template "operator.name" . }}-operator
namespace: {{ template "operator.namespace" . }}
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: Role
name: {{ template "operator.name" . }}-operator
subjects:
- kind: ServiceAccount
name: {{ template "operator.serviceAccountName" . }}
namespace: {{ template "operator.namespace" . }}
{{- end }}
{{- end }}
@@ -0,0 +1,15 @@
{{- if and .Values.starrocksOperator.enabled .Values.global.rbac.create }}
apiVersion: v1
kind: ServiceAccount
metadata:
name: {{ template "operator.serviceAccountName" . }}
namespace: {{ template "operator.namespace" . }}
{{- with .Values.global.rbac.serviceAccount.annotations }}
annotations:
{{- toYaml . | nindent 4 }}
{{- end }}
{{- with .Values.global.rbac.serviceAccount.labels }}
labels:
{{- toYaml . | nindent 4 }}
{{- end }}
{{- end }}
+107
View File
@@ -0,0 +1,107 @@
# Default values for operator.
# This is a YAML-formatted file.
# Declare variables to be passed into your templates.
global:
rbac:
# If set true, the clusterrole, clusterrolebinding, serviceaccount resources will be created for
# the operator. If changed to false later, these resources will be deleted.
# Note: By default the operator will watch all namespaces, so it needs clusterrole, clusterrolebinding to access resources.
# If .Values.starrocksOperator.watchNamespace is set, the role and rolebinding will be created for the specified namespace.
create: true
serviceAccount:
name: "starrocks"
# Optional annotations to add to the serviceaccount manifest
annotations: {}
# Optional labels to add to the serviceaccount manifest
labels: {}
# TimeZone is used to set the environment variable TZ for pod, with Asia/Shanghai as the default.
timeZone: Asia/Shanghai
# Set the nameOverride values for creating the same resources with the parent chart.
# In version v1.7.1 or before, there is only one chart called kube-starrocks, and the chart name is the prefix
# of some resources created by the chart.
# In version v1.8.0, the kube-starrocks chart is split into two charts, and to keep backward compatibility, the
# nameOverride is used to set the prefix of the resources created by the operator chart.
nameOverride: "kube-starrocks"
starrocksOperator:
# If enabled, the operator-related resources will be created, including the operator deployment, service account,
# clusterrole, clusterrolebinding, and service account.
enabled: true
# annotations for starrocks operator.
annotations: {}
namespaceOverride: ""
image:
# image sliced by "repository:tag"
repository: starrocks/operator
tag: v1.11.0
imagePullPolicy: Always
replicaCount: 1
resources:
limits:
cpu: 500m
memory: 800Mi
requests:
cpu: 500m
memory: 400Mi
# By default, the operator will only set runAsNonRoot to true, allowPrivilegeEscalation to false, readOnlyRootFilesystem to true.
# You can customize the securityContext for operator pod, e.g., drop capabilities, seccompProfile, etc.
securityContext:
runAsNonRoot: true
allowPrivilegeEscalation: false
readOnlyRootFilesystem: true
#capabilities:
# drop:
# - ALL
#seccompProfile:
# type: "RuntimeDefault"
# imagePullSecrets allows you to use secrets to pull images for pods.
imagePullSecrets: []
# - name: "image-pull-secret"
# If specified, the pod's nodeSelectordisplayName="Map of nodeSelectors to match when scheduling pods on nodes"
# Ref: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#nodeselector
nodeSelector: {}
# affinity for operator pod scheduling.
affinity: {}
# nodeAffinity:
# requiredDuringSchedulingIgnoredDuringExecution:
# nodeSelectorTerms:
# - matchFields:
# - key: metadata.name
# operator: In
# values:
# - target-host-name
tolerations: []
# - key: "key"
# operator: "Equal|Exists"
# value: "value"
# effect: "NoSchedule|PreferNoSchedule|NoExecute(1.6 only)"
# If specified, it will restrict operator to watch resources in the specified namespace. And
# 1. You must deploy your StarRocks cluster to the specified namespace.
# 2. You cannot assign multiple namespaces to watchNamespace field.
# Note: In most cases, you should not set this value. If your kubernetes cluster manages too many nodes, and
# the operator watching all namespaces uses too many memory resources, you can set this value.
# Defaults to all namespaces.
watchNamespace: ""
# Additional operator container environment variables
# You specify this manually like you would a raw deployment manifest.
# Ref: https://kubernetes.io/docs/tasks/inject-data-application/define-environment-variable-container/
# operator supports the following environment variables:
# KUBE_STARROCKS_UNSUPPORTED_ENVS: "XXX,YYY" # The environment variables that will not be passed to starrocks container.
env: []
# setting log related parameter
log:
- --zap-time-encoding=iso8601
- --zap-encoder=console
# if you want open debug log, open this option
# - --zap-log-level 4
# Operator needs to specify the FQDN in nginx.conf when it set up fe-proxy service.
# By default, Operator will use cluster.local as the dnsDomainSuffix.
# If you set up a kubernetes cluster with a different dnsDomainSuffix, you need to set this value.
dnsDomainSuffix: ""
# By default, the volume name of secret and configmap created by operator for the FE/BE/CN pods has a hash suffix.
# If users plan to use a sidecar or init container to mount the same volume, it will be challenging to get the volume name.
# In this situation, you can set this value to false.
volumeNameWithHash: true