2022-08-02 08:37:41 +01:00

102 lines
3.5 KiB
YAML

{{- define "cluster-addons.cloud-config.config" -}}
{{-
$secretNameTemplate := required
".Values.openstack.cloudCredentialsSecretName is required"
.Values.openstack.cloudCredentialsSecretName
}}
{{- $secretName := tpl $secretNameTemplate . }}
{{- include "cluster-addons.job.defaults" (list . "cloud-config") }}
installType: custom
custom:
install: |
{{- if .Values.clusterApi }}
export EXTERNAL_NETWORK_ID="$(
KUBECONFIG= kubectl get openstackcluster \
{{ tpl .Values.clusterName . }} \
--namespace {{ .Release.Namespace }} \
-o jsonpath='{.status.externalNetwork.id}'
)"
export INTERNAL_NETWORK_NAME="$(
KUBECONFIG= kubectl get openstackcluster \
{{ tpl .Values.clusterName . }} \
--namespace {{ .Release.Namespace }} \
-o jsonpath='{.status.network.name}'
)"
{{- end }}
gomplate --file secret.yaml.tpl | kubectl apply -f -
delete: |
kubectl delete secret --namespace kube-system cloud-config
extraVolumes:
- secret:
name: {{ $secretName }}
extraFiles:
secret.yaml.tpl: |
apiVersion: v1
kind: Secret
metadata:
name: cloud-config
namespace: kube-system
stringData:
{{ "{{-" }} $clouds := file.Read "./clouds.yaml" {{ "}}" }}
{{ "{{-" }} $cloud := index (data.YAML $clouds).clouds "{{ .Values.openstack.cloudName }}" {{ "}}" }}
clouds.yaml: |
{{ "{{" }} $clouds | indent 4 | trimSpace {{ "}}" }}
{{ "{{-" }} if file.Exists "./cacert" {{ "}}" }}
cacert: |
{{ "{{" }} file.Read "./cacert" | indent 4 | trimSpace {{ "}}" }}
{{ "{{-" }} end {{ "}}" }}
cloud.conf: |
[Global]
use-clouds=true
clouds-file=/etc/config/clouds.yaml
cloud={{ .Values.openstack.cloudName }}
{{ "{{-" }} if file.Exists "./cacert" {{ "}}" }}
ca-file=/etc/config/cacert
{{ "{{-" }} end {{ "}}" }}
{{ "{{-" }} if has $cloud "verify" {{ "}}" }}
{{ "{{-" }} if not $cloud.verify {{ "}}" }}
tls-insecure=true
{{ "{{-" }} end {{ "}}" }}
{{ "{{-" }} end {{ "}}" }}
[Networking]
{{- $networkingItems := default dict .Values.openstack.cloudConfig.Networking }}
{{- if hasKey $networkingItems "internal-network-name" }}
internal-network-name={{ index $networkingItems "internal-network-name" }}
{{- else if .Values.clusterApi }}
internal-network-name={{ "{{" }} .Env.INTERNAL_NETWORK_NAME {{ "}}" }}
{{- end }}
{{- range $netName, $netValue := omit $networkingItems "internal-network-name" }}
{{ $netName }}={{ $netValue }}
{{- end }}
[LoadBalancer]
{{- $lbItems := default dict .Values.openstack.cloudConfig.LoadBalancer }}
{{- if hasKey $lbItems "floating-network-id" }}
floating-network-id={{ index $lbItems "floating-network-id" }}
{{- else if .Values.clusterApi }}
floating-network-id={{ "{{" }} .Env.EXTERNAL_NETWORK_ID {{ "}}" }}
{{- end }}
{{- range $lbName, $lbValue := omit $lbItems "floating-network-id" }}
{{ $lbName }}={{ $lbValue }}
{{- end }}
{{-
range $section, $items := omit
.Values.openstack.cloudConfig
"Global"
"LoadBalancer"
"Networking"
}}
[{{ $section }}]
{{- range $name, $value := $items }}
{{ $name }}={{ $value }}
{{- end }}
{{ end }}
{{- end }}
{{-
include "addon.job" (list
.
"cloud-config"
"cluster-addons.cloud-config.config"
)
}}