Чтобы получить хост из URL, вам нужно будет использовать Lookahead и Lookbehind . Пожалуйста, смотрите пример
К сожалению, вы не можете написать этот тип регулярных выражений в helm. Вы получите следующую ошибку:
Error: rendering template failed: regexp: Compile(`(?<=://)(.*?)(?=:)`): error parsing regexp: invalid or unsupported Perl syntax: `(?<`
Из руководство по шаблону диаграммы :
Считается предпочтительным использовать include over template в шаблонах Helm просто для того, чтобы выходное форматирование могло лучше обрабатываться для документов YAML.
Работая с include , вы можете получить имя хоста или ip следующим образом:
configmap.yaml
apiVersion: v1
kind: ConfigMap
metadata:
name: {{ .Release.Name }}-myservice-configmap
namespace: {{ .Release.Namespace }}
data:
myservice.mongodbcache.bind.ip: {{- include "myservice.mongodbcache.bindip" . -}}
_helpers.tpl
{{- define "myservice.mongodbcache.bindip" -}}
{{- $match := .Values.myservice.cachedb.uri | toString | regexFind "//.*:" -}}
{{- $match | trimAll ":" | trimAll "/" -}}
{{- end -}}
У руды даже все в одной строке.
Результат
$ helm install --debug --dry-run .
....
# Source: mychart/templates/configmap.yaml
apiVersion: v1
kind: ConfigMap
metadata:
name: billowing-boxer-myservice-configmap
namespace: default
data:
myservice.mongodbcache.bind.ip:localhost