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 }}