Add support for IPv6 to machine and cluster chart
[icn.git] / deploy / cluster / templates / metal3datatemplate.yaml
1 ---
2 apiVersion: infrastructure.cluster.x-k8s.io/v1alpha5
3 kind: Metal3DataTemplate
4 metadata:
5   name: {{ .Values.clusterName }}-nodepool
6 spec:
7   clusterName: {{ .Values.clusterName }}
8   metaData:
9 {{- if .Values.networkData }}
10     ipAddressesFromIPPool:
11 {{- range $name, $network := .Values.networkData.networks.ipv4 }}
12 {{- $link := $network.link | default $name }}
13 {{- if eq $link "baremetal" }}
14     - key: node_ip_{{ $name }}
15       name: {{ $.Values.clusterName }}-{{ $network.fromIPPool }}
16 {{- end }}
17 {{- end }}
18 {{- range $name, $network := .Values.networkData.networks.ipv6 }}
19 {{- $link := $network.link | default $name }}
20 {{- if eq $link "baremetal" }}
21     - key: node_ip_{{ $name }}
22       name: {{ $.Values.clusterName }}-{{ $network.fromIPPool }}
23 {{- end }}
24 {{- end }}
25 {{- else }}
26     fromAnnotations:
27     - key: node_ip
28       object: baremetalhost
29       annotation: icn.akraino.org/node-ip
30 {{- end }}
31 {{- if .Values.networkData }}
32   networkData:
33     links:
34       ethernets:
35 {{- range $name, $link := .Values.networkData.links.ethernets }}
36       - id: {{ $name }}_nic
37         macAddress:
38           fromHostInterface: {{ $link.interface }}
39         type: phy
40 {{- end }}
41     networks:
42 {{- if .Values.networkData.networks.ipv4DHCP }}
43       ipv4DHCP:
44 {{- range $name, $network := .Values.networkData.networks.ipv4DHCP }}
45       - id: {{ $name }}
46         link: {{ $network.link | default $name }}_nic
47 {{- end }}
48 {{- end }}
49 {{- if .Values.networkData.networks.ipv4 }}
50       ipv4:
51 {{- range $name, $network := .Values.networkData.networks.ipv4 }}
52       - id: {{ $name }}
53         link: {{ $network.link | default $name }}_nic
54         ipAddressFromIPPool: {{ $.Values.clusterName }}-{{ $network.fromIPPool }}
55 {{- $pool := (get $.Values.ipPools $network.fromIPPool) }}
56 {{- if hasKey $pool "gateway" }}
57         routes:
58         - network: "0.0.0.0"
59           prefix: 0
60           gateway:
61             fromIPPool: {{ $.Values.clusterName }}-{{ $network.fromIPPool }}
62 {{- end }}
63 {{- end }}
64 {{- end }}
65 {{- if .Values.networkData.networks.ipv6DHCP }}
66       ipv6DHCP:
67 {{- range $name, $network := .Values.networkData.networks.ipv6DHCP }}
68       - id: {{ $name }}
69         link: {{ $network.link | default $name }}_nic
70 {{- end }}
71 {{- end }}
72 {{- if .Values.networkData.networks.ipv6 }}
73       ipv6:
74 {{- range $name, $network := .Values.networkData.networks.ipv6 }}
75       - id: {{ $name }}
76         link: {{ $network.link | default $name }}_nic
77         ipAddressFromIPPool: {{ $.Values.clusterName }}-{{ $network.fromIPPool }}
78 {{- $pool := (get $.Values.ipPools $network.fromIPPool) }}
79 {{- if hasKey $pool "gateway" }}
80         routes:
81         - network: "::"
82           prefix: 0
83           gateway:
84             fromIPPool: {{ $.Values.clusterName }}-{{ $network.fromIPPool }}
85 {{- end }}
86 {{- end }}
87 {{- end }}
88 {{- /*
89 Using routes[0].servers.dnsFromIPPool above doesn't have the desired
90 effect.  So use separate services field here
91 */}}
92 {{- if .Values.networkData.services }}
93 {{- if .Values.networkData.services.dns }}
94     services:
95       dns:
96 {{- range $address := .Values.networkData.services.dns }}
97       - {{ $address }}
98 {{- end }}
99 {{- end }}
100 {{- end }}
101 {{- end }}