github.com/1aal/kubeblocks@v0.0.0-20231107070852-e1c03e598921/deploy/helm/templates/_helpers.tpl (about) 1 {{/* 2 Expand the name of the chart. 3 */}} 4 {{- define "kubeblocks.name" -}} 5 {{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" }} 6 {{- end }} 7 8 {{/* 9 Create a default fully qualified app name. 10 We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec). 11 If release name contains chart name it will be used as a full name. 12 */}} 13 {{- define "kubeblocks.fullname" -}} 14 {{- if .Values.fullnameOverride }} 15 {{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" }} 16 {{- else }} 17 {{- $name := default .Chart.Name .Values.nameOverride }} 18 {{- if contains $name .Release.Name }} 19 {{- .Release.Name | trunc 63 | trimSuffix "-" }} 20 {{- else }} 21 {{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" }} 22 {{- end }} 23 {{- end }} 24 {{- end }} 25 26 {{/* 27 Create chart name and version as used by the chart label. 28 */}} 29 {{- define "kubeblocks.chart" -}} 30 {{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" }} 31 {{- end }} 32 33 {{/* 34 Common labels 35 */}} 36 {{- define "kubeblocks.labels" -}} 37 helm.sh/chart: {{ include "kubeblocks.chart" . }} 38 {{ include "kubeblocks.selectorLabels" . }} 39 {{- if .Chart.AppVersion }} 40 app.kubernetes.io/version: {{ .Chart.AppVersion | quote }} 41 {{- end }} 42 app.kubernetes.io/managed-by: {{ .Release.Service }} 43 {{- end }} 44 45 {{/* 46 Selector labels 47 */}} 48 {{- define "kubeblocks.selectorLabels" -}} 49 app.kubernetes.io/name: {{ include "kubeblocks.name" . }} 50 app.kubernetes.io/instance: {{ .Release.Name }} 51 {{- end }} 52 53 {{/* 54 Create the name of the service account to use 55 */}} 56 {{- define "kubeblocks.serviceAccountName" -}} 57 {{- if .Values.serviceAccount.create }} 58 {{- default (include "kubeblocks.fullname" .) .Values.serviceAccount.name }} 59 {{- else }} 60 {{- default "default" .Values.serviceAccount.name }} 61 {{- end }} 62 {{- end }} 63 64 {{/* 65 Create the addon installer name of the service account to use 66 */}} 67 {{- define "kubeblocks.addonSAName" -}} 68 {{- printf "%s-%s" (include "kubeblocks.serviceAccountName" .) "addon-installer" }} 69 {{- end }} 70 71 {{/* 72 Create the name of the webhook service. 73 */}} 74 {{- define "kubeblocks.svcName" -}} 75 {{ include "kubeblocks.fullname" . }} 76 {{- end }} 77 78 {{/* 79 matchLabels 80 */}} 81 {{- define "kubeblocks.matchLabels" -}} 82 {{ template "kubeblocks.selectorLabels" . }} 83 {{- end -}} 84 85 {{/* 86 Create the default PodDisruptionBudget to use. 87 */}} 88 {{- define "podDisruptionBudget.spec" -}} 89 {{- if and .Values.podDisruptionBudget.minAvailable .Values.podDisruptionBudget.maxUnavailable }} 90 {{- fail "Cannot set both .Values.podDisruptionBudget.minAvailable and .Values.podDisruptionBudget.maxUnavailable" -}} 91 {{- end }} 92 {{- if not .Values.podDisruptionBudget.maxUnavailable }} 93 minAvailable: {{ default 1 .Values.podDisruptionBudget.minAvailable }} 94 {{- end }} 95 {{- if .Values.podDisruptionBudget.maxUnavailable }} 96 maxUnavailable: {{ .Values.podDisruptionBudget.maxUnavailable }} 97 {{- end }} 98 {{- end }} 99 100 {{/* 101 Print KubeBlocks's logo. 102 */}} 103 {{- define "_logo" -}} 104 {{ print "\033[36m" }} 105 {{ print " __ __ __ _______ __ __ " }} 106 {{ print "| \\ / \\ | \\ | \\| \\ | \\ " }} 107 {{ print "| ▓▓ / ▓▓__ __| ▓▓____ ______ | ▓▓▓▓▓▓▓\\ ▓▓ ______ _______| ▓▓ __ _______ " }} 108 {{ print "| ▓▓/ ▓▓| \\ | \\ ▓▓ \\ / \\| ▓▓__/ ▓▓ ▓▓/ \\ / \\ ▓▓ / \\/ \\ " }} 109 {{ print "| ▓▓ ▓▓ | ▓▓ | ▓▓ ▓▓▓▓▓▓▓\\ ▓▓▓▓▓▓\\ ▓▓ ▓▓ ▓▓ ▓▓▓▓▓▓\\ ▓▓▓▓▓▓▓ ▓▓_/ ▓▓ ▓▓▓▓▓▓▓ " }} 110 {{ print "| ▓▓▓▓▓\\ | ▓▓ | ▓▓ ▓▓ | ▓▓ ▓▓ ▓▓ ▓▓▓▓▓▓▓\\ ▓▓ ▓▓ | ▓▓ ▓▓ | ▓▓ ▓▓ \\▓▓ \\ " }} 111 {{ print "| ▓▓ \\▓▓\\| ▓▓__/ ▓▓ ▓▓__/ ▓▓ ▓▓▓▓▓▓▓▓ ▓▓__/ ▓▓ ▓▓ ▓▓__/ ▓▓ ▓▓_____| ▓▓▓▓▓▓\\ _\\▓▓▓▓▓▓\\ " }} 112 {{ print "| ▓▓ \\▓▓\\\\▓▓ ▓▓ ▓▓ ▓▓\\▓▓ \\ ▓▓ ▓▓ ▓▓\\▓▓ ▓▓\\▓▓ \\ ▓▓ \\▓▓\\ ▓▓ " }} 113 {{ print " \\▓▓ \\▓▓ \\▓▓▓▓▓▓ \\▓▓▓▓▓▓▓ \\▓▓▓▓▓▓▓\\▓▓▓▓▓▓▓ \\▓▓ \\▓▓▓▓▓▓ \\▓▓▓▓▓▓▓\\▓▓ \\▓▓\\▓▓▓▓▓▓▓ " }} 114 {{ print "\033[0m" }} 115 {{- end }} 116 117 {{/* 118 Print line divider. 119 */}} 120 {{- define "_divider" -}} 121 {{ print "--------------------------------------------------------------------------------" }} 122 {{- end }} 123 124 {{/* 125 Print the supplied value in yellow. 126 */}} 127 {{- define "_fmt.yellow" -}} 128 {{ print "\033[0;33m" . "\033[0m" }} 129 {{- end }} 130 131 {{/* 132 Print the supplied value in blue. 133 */}} 134 {{- define "_fmt.blue" -}} 135 {{ print "\033[36m" . "\033[0m" }} 136 {{- end }} 137 138 139 {{/* 140 Allow the release namespace to be overridden for multi-namespace deployments in combined charts 141 */}} 142 {{- define "kubeblocks.namespace" -}} 143 {{- if .Values.namespaceOverride -}} 144 {{- .Values.namespaceOverride -}} 145 {{- else -}} 146 {{- .Release.Namespace -}} 147 {{- end -}} 148 {{- end -}} 149 150 151 152 153 {{/* 154 Use the prometheus namespace override for multi-namespace deployments in combined charts 155 */}} 156 {{- define "kubeblocks.prometheus.namespace" -}} 157 {{- if .Values.prometheus.namespaceOverride -}} 158 {{- .Values.prometheus.namespaceOverride -}} 159 {{- else -}} 160 {{- .Release.Namespace -}} 161 {{- end -}} 162 {{- end -}} 163 164 {{/* 165 Use the grafana namespace override for multi-namespace deployments in combined charts 166 */}} 167 {{- define "kubeblocks.grafana.namespace" -}} 168 {{- if .Values.grafana.namespaceOverride -}} 169 {{- .Values.grafana.namespaceOverride -}} 170 {{- else -}} 171 {{- .Release.Namespace -}} 172 {{- end -}} 173 {{- end -}} 174 175 {{/* 176 Create a fully qualified Prometheus server name. 177 We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec). 178 */}} 179 {{- define "kubeblocks.prometheus.server.fullname" -}} 180 {{- if .Values.prometheus.server.fullnameOverride -}} 181 {{- .Values.prometheus.server.fullnameOverride | trunc 63 | trimSuffix "-" -}} 182 {{- else -}} 183 {{- $name := default .Values.prometheus.nameOverride "prometheus" -}} 184 {{- if contains $name .Release.Name -}} 185 {{- printf "%s-%s" .Release.Name .Values.prometheus.server.name | trunc 63 | trimSuffix "-" -}} 186 {{- else -}} 187 {{- printf "%s-%s-%s" .Release.Name $name .Values.prometheus.server.name | trunc 63 | trimSuffix "-" -}} 188 {{- end -}} 189 {{- end -}} 190 {{- end -}} 191 192 {{/* 193 Create a fully qualified alertmanager name. 194 We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec). 195 */}} 196 {{- define "kubeblocks.prometheus.alertmanager.fullname" -}} 197 {{- if .Values.prometheus.alertmanager.fullnameOverride -}} 198 {{- .Values.prometheus.alertmanager.fullnameOverride | trunc 63 | trimSuffix "-" -}} 199 {{- else -}} 200 {{- $name := default .Values.prometheus.nameOverride "prometheus" -}} 201 {{- if contains $name .Release.Name -}} 202 {{- printf "%s-%s" .Release.Name .Values.prometheus.alertmanager.name | trunc 63 | trimSuffix "-" -}} 203 {{- else -}} 204 {{- printf "%s-%s-%s" .Release.Name $name .Values.prometheus.alertmanager.name | trunc 63 | trimSuffix "-" -}} 205 {{- end -}} 206 {{- end -}} 207 {{- end -}} 208 209 {{/* 210 Create a default fully qualified app name. 211 We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec). 212 If release name contains chart name it will be used as a full name. 213 */}} 214 {{- define "kubeblocks.grafana.fullname" -}} 215 {{- if .Values.grafana.fullnameOverride -}} 216 {{- .Values.grafana.fullnameOverride | trunc 63 | trimSuffix "-" -}} 217 {{- else -}} 218 {{- $name := default .Values.grafana.nameOverride "grafana" -}} 219 {{- if contains $name .Release.Name -}} 220 {{- .Release.Name | trunc 63 | trimSuffix "-" -}} 221 {{- else -}} 222 {{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" -}} 223 {{- end -}} 224 {{- end -}} 225 {{- end -}} 226 227 {{/* 228 Specify KubeBlocks Operator deployment with priorityClassName=system-cluster-critical, if deployed to "kube-system" 229 namespace and unspecified priorityClassName. 230 */}} 231 {{- define "kubeblocks.priorityClassName" -}} 232 {{- if .Values.priorityClassName -}} 233 {{- .Values.priorityClassName }} 234 {{- else if ( eq ( include "kubeblocks.namespace" . ) "kube-system" ) -}} 235 {{- "system-cluster-critical" -}} 236 {{- else -}} 237 {{- "" -}} 238 {{- end -}} 239 {{- end -}} 240 241 {{/* 242 Get addon controller enabled attributes. 243 */}} 244 {{- define "kubeblocks.addonControllerEnabled" -}} 245 {{- if and .Values.addonController .Values.addonController.enabled }} 246 {{- true }} 247 {{- else }} 248 {{- false }} 249 {{- end }} 250 {{- end }} 251 252 {{/* 253 Define addon prometheus name 254 */}} 255 {{- define "addon.prometheus.name" -}} 256 {{- print "prometheus" }} 257 {{- end }} 258 259 {{/* 260 Define addon alertmanager-webhook-adaptor name 261 */}} 262 {{- define "addon.alertmanager-webhook-adaptor.name" -}} 263 {{- print "alertmanager-webhook-adaptor" }} 264 {{- end }} 265 266 {{/* 267 Define addon loki name 268 */}} 269 {{- define "addon.loki.name" -}} 270 {{- print "loki" }} 271 {{- end }} 272 273 {{/* 274 Define addon apecloud-otel-collector name 275 */}} 276 {{- define "addon.apecloud-otel-collector.name" -}} 277 {{- print "apecloud-otel-collector" }} 278 {{- end }} 279 280 {{/* 281 Get cloud provider, now support aws, gcp, aliyun and tencentCloud. 282 TODO: For azure, we should get provider from node.Spec.ProviderID 283 */}} 284 {{- define "kubeblocks.cloudProvider" }} 285 {{- $kubeVersion := .Capabilities.KubeVersion.GitVersion }} 286 {{- $validProviders := .Values.validProviders}} 287 {{- $provider := .Values.provider }} 288 {{- $valid := false }} 289 {{- range $validProviders }} 290 {{- if eq . $provider }} 291 {{- $valid = true }} 292 {{- end }} 293 {{- end }} 294 {{- if contains "-eks" $kubeVersion }} 295 {{- "aws" -}} 296 {{- else if contains "-gke" $kubeVersion }} 297 {{- "gcp" -}} 298 {{- else if contains "-aliyun" $kubeVersion }} 299 {{- "aliyun" -}} 300 {{- else if contains "-tke" $kubeVersion }} 301 {{- "tencentCloud" -}} 302 {{- else if contains "-aks" $kubeVersion }} 303 {{- "azure" -}} 304 {{- else if $valid }} 305 {{- $provider }} 306 {{- else}} 307 {{- $invalidProvider := join ", " .Values.validProviders }} 308 {{- $errorMessage := printf "Warning: Your provider is invalid. Please use one of the following: %s" $invalidProvider | trimSuffix ", " }} 309 {{- fail $errorMessage}} 310 {{- end }} 311 {{- end }} 312 313 314 {{/* 315 Define default storage class name, if cloud provider is known, specify a default storage class name. 316 */}} 317 {{- define "kubeblocks.defaultStorageClass" }} 318 {{- $cloudProvider := (include "kubeblocks.cloudProvider" .) }} 319 {{- if and .Values.storageClass .Values.storageClass.name }} 320 {{- .Values.storageClass.name }} 321 {{- else if $cloudProvider }} 322 {{- "kb-default-sc" }} 323 {{- else }} 324 {{- "" }} 325 {{- end }} 326 {{- end }}