102 lines
3.5 KiB
YAML
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"
|
|
)
|
|
}}
|