Added helm chart
This commit is contained in:
parent
f83cd4eb6b
commit
b2a0ee4963
1
.gitignore
vendored
1
.gitignore
vendored
@ -1 +1,2 @@
|
||||
*~
|
||||
.*.sw*
|
||||
|
1
helm/.helmignore
Normal file
1
helm/.helmignore
Normal file
@ -0,0 +1 @@
|
||||
*~
|
14
helm/Chart.yaml
Normal file
14
helm/Chart.yaml
Normal file
@ -0,0 +1,14 @@
|
||||
---
|
||||
apiVersion: v2
|
||||
version: "2024.8.0"
|
||||
appVersion: "2.17"
|
||||
name: radvd
|
||||
description: Linux IPv6 Router Advertisement Daemon
|
||||
type: application
|
||||
keywords:
|
||||
- routing
|
||||
- network
|
||||
maintainers:
|
||||
- name: Jeff Mahoney
|
||||
email: jeffm@jeffm.io
|
||||
url: https://github.com/jeff_mahoney
|
251
helm/templates/config.yaml
Normal file
251
helm/templates/config.yaml
Normal file
@ -0,0 +1,251 @@
|
||||
apiVersion: v1
|
||||
kind: ConfigMap
|
||||
metadata:
|
||||
name: {{ .Chart.Name }}-config-{{ .Release.Name }}
|
||||
data:
|
||||
config: |-
|
||||
{{- $defaultInterfaceOptions := dict }}
|
||||
{{- $defaultPrefixOptions := dict }}
|
||||
{{- $defaultRouteOptions := dict }}
|
||||
{{- $defaultRdnssOptions := dict }}
|
||||
{{- $defaultDnsslOptions := dict }}
|
||||
{{- $defaultAbroOptions := dict }}
|
||||
{{- if $.Values.defaults }}
|
||||
{{- range $name, $value := $.Values.defaults.interfaces }}
|
||||
{{- $_ := set $defaultInterfaceOptions $name $value }}
|
||||
{{- end }}
|
||||
{{- range $name, $value := $.Values.defaults.prefixes }}
|
||||
{{- $_ := set $defaultPrefixOptions $name $value }}
|
||||
{{- end }}
|
||||
{{- range $name, $value := $.Values.defaults.routes }}
|
||||
{{- $_ := set $defaultRouteOptions $name $value }}
|
||||
{{- end }}
|
||||
{{- range $name, $value := $.Values.defaults.rdnss }}
|
||||
{{- $_ := set $defaultRdnssOptions $name $value }}
|
||||
{{- end }}
|
||||
{{- range $name, $value := $.Values.defaults.dnssl }}
|
||||
{{- $_ := set $defaultDnsslOptions $name $value }}
|
||||
{{- end }}
|
||||
{{- range $name, $value := $.Values.defaults.abro }}
|
||||
{{- $_ := set $defaultAbroOptions $name $value }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
{{- range $interface := .Values.interfaces }}
|
||||
interface {{ $interface.name }} {
|
||||
{{- $interfaceOptions := dict }}
|
||||
{{- range $name, $value := $interface.options }}
|
||||
{{- $_ := set $interfaceOptions $name $value }}
|
||||
{{- end }}
|
||||
{{- $_ := merge $interfaceOptions $defaultInterfaceOptions $interfaceOptions }}
|
||||
{{- if hasKey $interfaceOptions "IgnoreIfMissing" }}
|
||||
IgnoreIfMissing {{get $interfaceOptions "IgnoreIfMissing" | ternary "on" "off" }};
|
||||
{{- end }}
|
||||
{{- if hasKey $interfaceOptions "AdvSendAdvert" }}
|
||||
AdvSendAdvert {{get $interfaceOptions "AdvSendAdvert" | ternary "on" "off" }};
|
||||
{{- end }}
|
||||
{{- if hasKey $interfaceOptions "UnicastOnly" }}
|
||||
UnicastOnly {{get $interfaceOptions "UnicastOnly" | ternary "on" "off" }};
|
||||
{{- end }}
|
||||
{{- if hasKey $interfaceOptions "AdvRASolicitedUnicast" }}
|
||||
AdvRASolicitedUnicast {{get $interfaceOptions "AdvRASolicitedUnicast" | ternary "on" "off" }};
|
||||
{{- end }}
|
||||
{{- if hasKey $interfaceOptions "MaxRtrAdvInterval" }}
|
||||
MaxRtrAdvInterval {{get $interfaceOptions "MaxRtrAdvInterval" | float64 }}; # seconds
|
||||
{{- end }}
|
||||
{{- if hasKey $interfaceOptions "MinRtrAdvInterval" }}
|
||||
MinRtrAdvInterval {{get $interfaceOptions "MinRtrAdvInterval" | float64 }}; # seconds
|
||||
{{- end }}
|
||||
{{- if hasKey $interfaceOptions "MinDelayBetweenRAs" }}
|
||||
MinDelayBetweenRAs {{get $interfaceOptions "MinDelayBetweenRAs" | float64 }}; # seconds
|
||||
{{- end }}
|
||||
{{- if hasKey $interfaceOptions "AdvManagedFlag" }}
|
||||
AdvManagedFlag {{get $interfaceOptions "AdvManagedFlag" | ternary "on" "off" }};
|
||||
{{- end }}
|
||||
{{- if hasKey $interfaceOptions "AdvOtherConfigFlag" }}
|
||||
AdvOtherConfigFlag {{get $interfaceOptions "AdvOtherConfigFlag" | ternary "on" "off" }};
|
||||
{{- end }}
|
||||
{{- if hasKey $interfaceOptions "AdvLinkMTU" }}
|
||||
AdvLinkMTU {{get $interfaceOptions "AdvLinkMTU" | int}}; # integer
|
||||
{{- end }}
|
||||
{{- if hasKey $interfaceOptions "AdvReachableTime" }}
|
||||
AdvReachableTime {{get $interfaceOptions "AdvReachableTime" | int }}; # milliseconds
|
||||
{{- end }}
|
||||
{{- if hasKey $interfaceOptions "AdvRetransTimer" }}
|
||||
AdvRetransTimer {{get $interfaceOptions "AdvRetransTimer" | int }}; # milliseconds
|
||||
{{- end }}
|
||||
{{- if hasKey $interfaceOptions "AdvCurHopLimit" }}
|
||||
AdvCurHopLimit {{get $interfaceOptions "AdvCurHopLimit" | int }}; # integer
|
||||
{{- end }}
|
||||
{{- if hasKey $interfaceOptions "AdvDefaultLifetime" }}
|
||||
AdvDefaultLifetime {{get $interfaceOptions "AdvDefaultLifetime" | int }}; # seconds
|
||||
{{- end }}
|
||||
{{- if hasKey $interfaceOptions "AdvDefaultPreference" }}
|
||||
AdvDefaultPreference {{get $interfaceOptions "AdvDefaultPreference" }}; # low|medium|high
|
||||
{{- end }}
|
||||
{{- if hasKey $interfaceOptions "AdvSourceLLAddress" }}
|
||||
AdvSourceLLAddress {{get $interfaceOptions "AdvSourceLLAddress" | ternary "on" "off" }};
|
||||
{{- end }}
|
||||
{{- if hasKey $interfaceOptions "AdvHomeAgentFlag" }}
|
||||
AdvHomeAgentFlag {{get $interfaceOptions "AdvHomeAgentFlag" | ternary "on" "off" }};
|
||||
{{- end }}
|
||||
{{- if hasKey $interfaceOptions "AdvHomeAgentInfo" }}
|
||||
AdvHomeAgentInfo {{get $interfaceOptions "AdvHomeAgentInfo" | ternary "on" "off" }};
|
||||
{{- end }}
|
||||
{{- if hasKey $interfaceOptions "HomeAgentLifetime" }}
|
||||
HomeAgentLifetime {{get $interfaceOptions "HomeAgentLifetime" | int}}; # seconds
|
||||
{{- end }}
|
||||
{{- if hasKey $interfaceOptions "HomeAgentPreference" }}
|
||||
HomeAgentPreference {{get $interfaceOptions "HomeAgentPreference" | int}}; # integer
|
||||
{{- end }}
|
||||
{{- if hasKey $interfaceOptions "AdvMobRtrSupportFlag" }}
|
||||
AdvMobRtrSupportFlag {{get $interfaceOptions "AdvMobRtrSupportFlag" | ternary "on" "off" }};
|
||||
{{- end }}
|
||||
{{- if hasKey $interfaceOptions "AdvIntervalOpt" }}
|
||||
AdvIntervalOpt {{get $interfaceOptions "AdvIntervalOpt" | ternary "on" "off" }};
|
||||
{{- end }}
|
||||
|
||||
{{- range $prefix := $interface.prefixes }}
|
||||
prefix {{ $prefix.prefix }} {
|
||||
{{- $prefixOptions := dict }}
|
||||
{{- range $name, $value := $prefix.options }}
|
||||
{{- $_ := set $prefixOptions $name $value }}
|
||||
{{- end }}
|
||||
{{- $_ := merge $prefixOptions $defaultPrefixOptions $prefixOptions }}
|
||||
{{- if hasKey $prefixOptions "AdvOnLink" }}
|
||||
AdvOnLink {{get $prefixOptions "AdvOnLink" | ternary "on" "off" }};
|
||||
{{- end }}
|
||||
{{- if hasKey $prefixOptions "AdvAutonomous" }}
|
||||
AdvAutonomous {{get $prefixOptions "AdvAutonomous" | ternary "on" "off" }};
|
||||
{{- end }}
|
||||
{{- if hasKey $prefixOptions "AdvRouterAddr" }}
|
||||
AdvRouterAddr {{get $prefixOptions "AdvRouterAddr" | ternary "on" "off" }};
|
||||
{{- end }}
|
||||
{{- if hasKey $prefixOptions "AdvValidLifetime" }}
|
||||
{{- if kindIs "string" (get $prefixOptions "AdvValidLifetime") }}
|
||||
AdvValidLifetime {{get $prefixOptions "AdvValidLifetime" }}; # seconds|infinity
|
||||
{{- else }}
|
||||
AdvValidLifetime {{get $prefixOptions "AdvValidLifetime" | int}}; # seconds|infinity
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
{{- if hasKey $prefixOptions "AdvPreferredLifetime" }}
|
||||
{{- if kindIs "string" (get $prefixOptions "AdvValidLifetime") }}
|
||||
AdvPreferredLifetime {{get $prefixOptions "AdvPreferredLifetime" }}; # seconds|infinity
|
||||
{{- else }}
|
||||
AdvPreferredLifetime {{get $prefixOptions "AdvPreferredLifetime" | int}}; # seconds|infinity
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
{{- if hasKey $prefixOptions "DeprecatePrefix" }}
|
||||
DeprecatePrefix {{get $prefixOptions "DeprecatePrefix" | ternary "on" "off" }};
|
||||
{{- end }}
|
||||
{{- if hasKey $prefixOptions "DecrementLifetimes" }}
|
||||
DecrementLifetimes {{get $prefixOptions "DecrementLifetimes" | ternary "on" "off" }};
|
||||
{{- end }}
|
||||
{{- if hasKey $prefixOptions "Base6Interface" }}
|
||||
Base6Interface {{get $prefixOptions "Base6Interface" }}; # name
|
||||
{{- end }}
|
||||
{{- if hasKey $prefixOptions "Base6to4Interface" }}
|
||||
Base6to4Interface {{get $prefixOptions "Base6to4Interface" }}; # name
|
||||
{{- end }}
|
||||
}
|
||||
{{- end }}
|
||||
|
||||
{{- range $route := $interface.routes }}
|
||||
route {{ $route.route }} {
|
||||
{{- $routeOptions := dict }}
|
||||
{{- range $name, $value := $route.options }}
|
||||
{{- $_ := set $routeOptions $name $value }}
|
||||
{{- end }}
|
||||
{{- $_ := merge $routeOptions $defaultRouteOptions $routeOptions }}
|
||||
{{- if hasKey $routeOptions "AdvRouteLifetime" }}
|
||||
{{- if kindIs "string" (get $routeOptions "AdvRouteLifetime") }}
|
||||
AdvRouteLifetime {{get $routeOptions "AdvRouteLifetime" }}; # seconds|infinity
|
||||
{{- else }}
|
||||
AdvRouteLifetime {{get $routeOptions "AdvRouteLifetime" | int}}; # seconds|infinity
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
{{- if hasKey $routeOptions "AdvRoutePreference" }}
|
||||
AdvRoutePreference {{get $routeOptions "AdvRoutePreference" }}; # low|medium|high
|
||||
{{- end }}
|
||||
{{- if hasKey $routeOptions "RemoveRoute" }}
|
||||
RemoveRoute {{get $routeOptions "RemoveRoute" | ternary "on" "off" }};
|
||||
{{- end }}
|
||||
}
|
||||
{{- end }}
|
||||
|
||||
{{- range $rdnss := $interface.rdnss }}
|
||||
RDNSS {{ join " " $rdnss.addresses }} {
|
||||
{{- $rdnssOptions := dict }}
|
||||
{{- range $name, $value := $rdnss.options }}
|
||||
{{- $_ := set $rdnssOptions $name $value }}
|
||||
{{- end }}
|
||||
{{- $_ := merge $rdnssOptions $defaultRdnssOptions $rdnssOptions }}
|
||||
{{- if hasKey $rdnssOptions "AdvRDNSSLifetime" }}
|
||||
{{- if kindIs "string" (get $rdnssOptions "AdvRDNSSLifetime") }}
|
||||
AdvRDNSSLifetime {{get $rdnssOptions "AdvRDNSSLifetime" }}; # seconds|infinity
|
||||
{{- else }}
|
||||
AdvRDNSSLifetime {{get $rdnssOptions "AdvRDNSSLifetime" | int }}; # seconds|infinity
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
{{- if hasKey $rdnssOptions "FlushRDNSS" }}
|
||||
FlushRDNSS {{get $rdnssOptions "FlushRDNSS" | ternary "on" "off" }};
|
||||
{{- end }}
|
||||
}
|
||||
{{- end }}
|
||||
|
||||
{{- range $dnssl := .dnssl }}
|
||||
DNSSL {{ join " " $dnssl.suffixes }} {
|
||||
{{- $dnsslOptions := dict }}
|
||||
{{- range $name, $value := $dnssl.options }}
|
||||
{{- $_ := set $dnsslOptions $name $value }}
|
||||
{{- end }}
|
||||
{{- $_ := merge $dnsslOptions $defaultDnsslOptions $dnsslOptions }}
|
||||
{{- if hasKey $dnsslOptions "AdvDNSSLLifetime" }}
|
||||
{{ $val := get $dnsslOptions "AdvDNSSLifetime" }}
|
||||
{{- if kindIs "string" $val }}
|
||||
AdvDNSSLLifetime {{ $val }}; # seconds|infinity;
|
||||
{{- else }}
|
||||
AdvDNSSLLifetime {{ $val | int }}; # seconds|infinity;
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
{{- if hasKey $dnsslOptions "FlushDNSSL" }}
|
||||
FlushDNSSL {{get $dnsslOptions "FlushDNSSL" | ternary "on" "off" }};
|
||||
{{- end }}
|
||||
}
|
||||
{{- end }}
|
||||
|
||||
{{- range $abro := .abro }}
|
||||
{{- $abroOptions := dict }}
|
||||
{{- range $name, $value := $abro.options }}
|
||||
{{- $_ := set $abroOptions $name $value }}
|
||||
{{- end }}
|
||||
{{- $_ := merge $abroOptions $defaultAbroOptions $abroOptions }}
|
||||
abro {{ $abro.address }} {
|
||||
{{- if hasKey $abroOptions "AdvValidLifeTime" }}
|
||||
AdvValidLifeTime {{get $abroOptions "AdvValidLifeTime" | int }}; # seconds
|
||||
{{- end }}
|
||||
{{- if hasKey $abroOptions "AdvVersionLow" }}
|
||||
AdvVersionLow {{get $abroOptions "AdvVersionLow" | int }}; # unsignedinteger
|
||||
{{- end }}
|
||||
{{- if hasKey $abroOptions "AdvVersionHigh" }}
|
||||
AdvVersionHigh {{get $abroOptions "AdvVersionHigh" | int }}; # unsignedinteger
|
||||
{{- end }}
|
||||
}
|
||||
{{- end }}
|
||||
|
||||
{{- if $interface.clients }}
|
||||
clients {
|
||||
{{- range $client := $interface.clients }}
|
||||
{{- $client }};
|
||||
{{- end }}
|
||||
}
|
||||
{{- end }}
|
||||
|
||||
{{- if $interface.AdvRASrcAddresses }}
|
||||
AdvRASrcAddress {
|
||||
{{- range $address := $interface.AdvRASrcAddresses }}
|
||||
{{- $address }};
|
||||
{{- end }}
|
||||
}
|
||||
{{- end }}
|
||||
}
|
||||
{{- end }}
|
35
helm/templates/pod.yaml
Normal file
35
helm/templates/pod.yaml
Normal file
@ -0,0 +1,35 @@
|
||||
apiVersion: v1
|
||||
kind: Pod
|
||||
metadata:
|
||||
name: radvd
|
||||
spec:
|
||||
hostNetwork: true
|
||||
containers:
|
||||
- name: radvd
|
||||
image: radvd
|
||||
command:
|
||||
- "/usr/bin/radvd"
|
||||
- "-C"
|
||||
- "/etc/radvd.conf"
|
||||
{{- if .Values.debugLevel }}
|
||||
- "-d"
|
||||
- {{- .Values.debugLevel | quote }}
|
||||
{{- end }}
|
||||
securityContext:
|
||||
capabilities:
|
||||
add:
|
||||
- NET_BIND_SERVICE
|
||||
- NET_RAW
|
||||
volumeMounts:
|
||||
- name: config-volume
|
||||
mountPath: /etc/radvd.conf
|
||||
volumes:
|
||||
- name: config-volume
|
||||
configMap:
|
||||
# Provide the name of the ConfigMap containing the files you want
|
||||
# to add to the container
|
||||
name: {{ .Chart.Name}}-config-{{ .Release.Name }}
|
||||
{{- if .Values.nodeSelector }}
|
||||
nodeSelector:
|
||||
{{- .Values.nodeSelector | toYaml | nindent 4 }}
|
||||
{{- end }}
|
233
helm/values-example.yaml
Normal file
233
helm/values-example.yaml
Normal file
@ -0,0 +1,233 @@
|
||||
defaults:
|
||||
interfaces:
|
||||
IgnoreIfMissing: true
|
||||
AdvSendAdvert: false
|
||||
UnicastOnly: false
|
||||
AdvRASolicitedUnicast: true
|
||||
MaxRtrAdvInterval: 600
|
||||
MinRtrAdvInterval: 200
|
||||
MinDelayBetweenRAs: 3
|
||||
AdvManagedFlag: false
|
||||
AdvOtherConfigFlag: false
|
||||
AdvLinkMTU: 0
|
||||
AdvReachableTime: 0
|
||||
AdvRetransTimer: 0
|
||||
AdvCurHopLimit: 64
|
||||
AdvDefaultLifetime: 1800
|
||||
AdvDefaultPreference: "medium"
|
||||
AdvSourceLLAddress: true
|
||||
AdvHomeAgentFlag: false
|
||||
AdvHomeAgentInfo: false
|
||||
HomeAgentLifetime: 1800
|
||||
HomeAgentPreference: 0
|
||||
AdvMobRtrSupportFlag: false
|
||||
AdvIntervalOpt: false
|
||||
prefixes:
|
||||
AdvOnLink: true
|
||||
AdvAutonomous: true
|
||||
AdvRouterAddr: false
|
||||
AdvValidLifetime: 86400
|
||||
AdvPreferredLifetime: 14400
|
||||
DeprecatePrefix: false
|
||||
DecrementLifetimes: false
|
||||
routes:
|
||||
AdvRouteLifetime: 1800
|
||||
AdvRoutePreference: "medium"
|
||||
RemoveRoute: true
|
||||
rdnss:
|
||||
AdvRDNSSLifetime: 1200
|
||||
FlushRDNSS: true
|
||||
dnssl:
|
||||
AdvDNSSLLifetime: 1200
|
||||
FlushDNSSL: true
|
||||
abro:
|
||||
AdvValidLifeTime: 0
|
||||
AdvVersionLow: 0
|
||||
AdvVersionHigh: 0
|
||||
|
||||
interfaces:
|
||||
- name: eth0
|
||||
options:
|
||||
IgnoreIfMissing: true
|
||||
AdvSendAdvert: false
|
||||
UnicastOnly: false
|
||||
AdvRASolicitedUnicast: true
|
||||
MaxRtrAdvInterval: 600
|
||||
MinRtrAdvInterval: 200
|
||||
MinDelayBetweenRAs: 3
|
||||
AdvManagedFlag: false
|
||||
AdvOtherConfigFlag: false
|
||||
AdvLinkMTU: 0
|
||||
AdvReachableTime: 0
|
||||
AdvRetransTimer: 0
|
||||
AdvCurHopLimit: 64
|
||||
AdvDefaultLifetime: 1800
|
||||
AdvDefaultPreference: "medium"
|
||||
AdvSourceLLAddress: true
|
||||
AdvHomeAgentFlag: false
|
||||
AdvHomeAgentInfo: false
|
||||
HomeAgentLifetime: 1800
|
||||
HomeAgentPreference: 0
|
||||
AdvMobRtrSupportFlag: false
|
||||
AdvIntervalOpt: false
|
||||
|
||||
prefixes:
|
||||
- prefix: fe80::/64
|
||||
options:
|
||||
AdvOnLink: true
|
||||
AdvAutonomous: true
|
||||
AdvRouterAddr: false
|
||||
AdvValidLifetime: 86400
|
||||
AdvPreferredLifetime: 14400
|
||||
DeprecatePrefix: false
|
||||
DecrementLifetimes: false
|
||||
- prefix: fd80::/64
|
||||
options:
|
||||
AdvOnLink: true
|
||||
AdvAutonomous: true
|
||||
AdvRouterAddr: false
|
||||
AdvValidLifetime: 86400
|
||||
AdvPreferredLifetime: 14400
|
||||
DeprecatePrefix: false
|
||||
DecrementLifetimes: false
|
||||
routes:
|
||||
- route: fe80::/64
|
||||
options:
|
||||
AdvRouteLifetime: 1800
|
||||
AdvRoutePreference: "medium"
|
||||
RemoveRoute: true
|
||||
- route: fd80::/64
|
||||
options:
|
||||
AdvRouteLifetime: 1800
|
||||
AdvRoutePreference: "medium"
|
||||
rdnss:
|
||||
- addresses:
|
||||
- fe80::1
|
||||
- fe80::2
|
||||
options:
|
||||
AdvRDNSSLifetime: 1200
|
||||
FlushRDNSS: true
|
||||
- addresses:
|
||||
- fe80::3
|
||||
- fe80::4
|
||||
options:
|
||||
AdvRDNSSLifetime: 1200
|
||||
FlushRDNSS: true
|
||||
dnssl:
|
||||
- suffixes:
|
||||
- "home.jeffm.io"
|
||||
- "work.jeffm.io"
|
||||
options:
|
||||
AdvDNSSLLifetime: 1200
|
||||
FlushDNSSL: true
|
||||
clients:
|
||||
- fe80::1
|
||||
- fe80::2
|
||||
- fe80::3
|
||||
- fe80::4
|
||||
abro:
|
||||
- address: fe80::1/64
|
||||
options:
|
||||
AdvValidLifeTime: 0
|
||||
AdvVersionLow: 0
|
||||
AdvVersionHigh: 0
|
||||
- address: fe80::2/64
|
||||
options:
|
||||
AdvValidLifeTime: 0
|
||||
AdvVersionLow: 0
|
||||
AdvVersionHigh: 0
|
||||
- name: eth1
|
||||
options:
|
||||
IgnoreIfMissing: true
|
||||
AdvSendAdvert: false
|
||||
UnicastOnly: false
|
||||
AdvRASolicitedUnicast: true
|
||||
MaxRtrAdvInterval: 600
|
||||
MinRtrAdvInterval: 200
|
||||
MinDelayBetweenRAs: 3
|
||||
AdvManagedFlag: false
|
||||
AdvOtherConfigFlag: false
|
||||
AdvLinkMTU: 0
|
||||
AdvReachableTime: 0
|
||||
AdvRetransTimer: 0
|
||||
AdvCurHopLimit: 64
|
||||
AdvDefaultLifetime: 1800
|
||||
AdvDefaultPreference: "medium"
|
||||
AdvSourceLLAddress: true
|
||||
AdvHomeAgentFlag: false
|
||||
AdvHomeAgentInfo: false
|
||||
HomeAgentLifetime: 1800
|
||||
HomeAgentPreference: 0
|
||||
AdvMobRtrSupportFlag: false
|
||||
AdvIntervalOpt: false
|
||||
|
||||
prefixes:
|
||||
- prefix: fe80::/64
|
||||
options:
|
||||
AdvOnLink: true
|
||||
AdvAutonomous: true
|
||||
AdvRouterAddr: false
|
||||
AdvValidLifetime: 86400
|
||||
AdvPreferredLifetime: 14400
|
||||
DeprecatePrefix: false
|
||||
DecrementLifetimes: false
|
||||
- prefix: fd80::/64
|
||||
options:
|
||||
AdvOnLink: true
|
||||
AdvAutonomous: true
|
||||
AdvRouterAddr: false
|
||||
AdvValidLifetime: 86400
|
||||
AdvPreferredLifetime: 14400
|
||||
DeprecatePrefix: false
|
||||
DecrementLifetimes: false
|
||||
routes:
|
||||
- route: fe80::/64
|
||||
options:
|
||||
AdvRouteLifetime: 1800
|
||||
AdvRoutePreference: "medium"
|
||||
RemoveRoute: true
|
||||
- route: fd80::/64
|
||||
options:
|
||||
AdvRouteLifetime: 1800
|
||||
AdvRoutePreference: "medium"
|
||||
rdnss:
|
||||
- addresses:
|
||||
- fe80::1
|
||||
- fe80::2
|
||||
options:
|
||||
AdvRDNSSLifetime: 1200
|
||||
FlushRDNSS: true
|
||||
- addresses:
|
||||
- fe80::3
|
||||
- fe80::4
|
||||
options:
|
||||
AdvRDNSSLifetime: 1200
|
||||
FlushRDNSS: true
|
||||
dnssl:
|
||||
- suffixes:
|
||||
- "home.jeffm.io"
|
||||
- "work.jeffm.io"
|
||||
options:
|
||||
AdvDNSSLLifetime: 1200
|
||||
FlushDNSSL: true
|
||||
clients:
|
||||
- fe80::1
|
||||
- fe80::2
|
||||
- fe80::3
|
||||
- fe80::4
|
||||
abro:
|
||||
- address: fe80::1/64
|
||||
options:
|
||||
AdvValidLifeTime: 0
|
||||
AdvVersionLow: 0
|
||||
AdvVersionHigh: 0
|
||||
- address: fe80::2/64
|
||||
options:
|
||||
AdvValidLifeTime: 0
|
||||
AdvVersionLow: 0
|
||||
AdvVersionHigh: 0
|
||||
AdvRASrcAddresses:
|
||||
- fe80::1
|
||||
- fe80::2
|
||||
- fe80::3
|
||||
- fe80::4
|
554
helm/values.schema.json
Normal file
554
helm/values.schema.json
Normal file
@ -0,0 +1,554 @@
|
||||
{
|
||||
"$schema": "https://json-schema.org/draft/2019-09/schema",
|
||||
"type": "object",
|
||||
"title": "Root Schema",
|
||||
"required": [
|
||||
"interfaces"
|
||||
],
|
||||
"properties": {
|
||||
"nodeSelector": {
|
||||
"additionalProperties": false,
|
||||
"title": "Label to use to select node",
|
||||
"type": "object",
|
||||
"additionalProperties": { "type": "string" }
|
||||
},
|
||||
"debugLevel": {
|
||||
"title": "Debug level",
|
||||
"type": "integer",
|
||||
"default": 0,
|
||||
"minimum": 0,
|
||||
"maximum": 5
|
||||
},
|
||||
"defaults": {
|
||||
"properties": {
|
||||
"interfaces": { "$ref": "#/$defs/interface_options" },
|
||||
"prefixes": { "$ref": "#/$defs/prefix_options" },
|
||||
"routes": { "$ref": "#/$defs/route_options" },
|
||||
"rdnss": { "$ref": "#/$defs/rdnss_options" },
|
||||
"dnssl": { "$ref": "#/$defs/dnssl_options" },
|
||||
"abro": { "$ref": "#/$defs/abro_options" }
|
||||
},
|
||||
"additionalProperties": false,
|
||||
"title": "Default options for each definition",
|
||||
"type": "object"
|
||||
},
|
||||
"interfaces": {
|
||||
"type": "array",
|
||||
"default": [],
|
||||
"title": "The RADVD configuration schema",
|
||||
"items": {
|
||||
"type": "object",
|
||||
"title": "RADVD per-interface definition",
|
||||
"required": [
|
||||
"name",
|
||||
"prefixes"
|
||||
],
|
||||
"properties": {
|
||||
"name": {
|
||||
"type": "string",
|
||||
"title": "The interface name",
|
||||
"examples": [
|
||||
"eth0",
|
||||
"eth1"
|
||||
]
|
||||
},
|
||||
"options": { "$ref": "#/$defs/interface_options" },
|
||||
"prefixes": {
|
||||
"type": "array",
|
||||
"title": "Prefix(es) definition for the interface",
|
||||
"items": {
|
||||
"type": "object",
|
||||
"title": "Configuration for a single prefix",
|
||||
"required": [
|
||||
"prefix"
|
||||
],
|
||||
"properties": {
|
||||
"prefix": {
|
||||
"type": "string",
|
||||
"title": "The IPv6 prefix to be configured",
|
||||
"examples": [
|
||||
"fe80::/64",
|
||||
"fd80::/64"
|
||||
]
|
||||
},
|
||||
"options": { "$ref": "#/$defs/prefix_options" }
|
||||
},
|
||||
"additionalProperties": false
|
||||
}
|
||||
},
|
||||
"routes": {
|
||||
"type": "array",
|
||||
"title": "Route(s) definition for the interface",
|
||||
"items": {
|
||||
"type": "object",
|
||||
"title": "Configuration for a single route",
|
||||
"required": [
|
||||
"route"
|
||||
],
|
||||
"properties": {
|
||||
"route": {
|
||||
"type": "string",
|
||||
"title": "The route to be configured",
|
||||
"examples": [
|
||||
"fe80::/64",
|
||||
"fd80::/64"
|
||||
]
|
||||
},
|
||||
"options": { "$ref": "#/$defs/route_options" }
|
||||
},
|
||||
"additionalProperties": false
|
||||
}
|
||||
},
|
||||
"rdnss": {
|
||||
"type": "array",
|
||||
"title": "Recursive DNS server definitions for this interface",
|
||||
"items": {
|
||||
"type": "object",
|
||||
"title": "Configuration for one set of DNS servers",
|
||||
"required": [
|
||||
"addresses"
|
||||
],
|
||||
"properties": {
|
||||
"addresses": {
|
||||
"type": "array",
|
||||
"title": "Addresses used by this set of DNS servers",
|
||||
"items": {
|
||||
"type": "string",
|
||||
"title": "Address used by a single DNS server",
|
||||
"format": "ipv6",
|
||||
"examples": [
|
||||
"fe80::1/64",
|
||||
"fe80::2/64",
|
||||
"fe80::3/64",
|
||||
"fe80::4/64"
|
||||
]
|
||||
}
|
||||
},
|
||||
"options": { "$ref": "#/$defs/rdnss_options" }
|
||||
},
|
||||
"additionalProperties": false
|
||||
}
|
||||
},
|
||||
"dnssl": {
|
||||
"type": "array",
|
||||
"title": "DNS Search List definitions for this interface",
|
||||
"items": {
|
||||
"type": "object",
|
||||
"title": "Definition for one set of suffixes",
|
||||
"required": [
|
||||
"suffixes"
|
||||
],
|
||||
"properties": {
|
||||
"suffixes": {
|
||||
"type": "array",
|
||||
"title": "List of DNS suffixes",
|
||||
"items": {
|
||||
"type": "string",
|
||||
"title": "One DNS suffix",
|
||||
"examples": [
|
||||
"example.com",
|
||||
"subdomain.example.com"
|
||||
]
|
||||
}
|
||||
},
|
||||
"options": { "$ref": "#/$defs/dnssl_options" }
|
||||
},
|
||||
"additionalProperties": false
|
||||
}
|
||||
},
|
||||
"clients": {
|
||||
"type": "array",
|
||||
"title": "Exclusive unicast client Configuration (disables multicast)",
|
||||
"items": {
|
||||
"type": "string",
|
||||
"format": "ipv6",
|
||||
"title": "One client to add to the unicast list",
|
||||
"examples": [
|
||||
"fe80::1",
|
||||
"fe80::2",
|
||||
"fe80::3",
|
||||
"fe80::4"
|
||||
]
|
||||
}
|
||||
},
|
||||
"abro": {
|
||||
"type": "array",
|
||||
"title": "List of Authoritative Border Router Option definitions",
|
||||
"items": {
|
||||
"type": "object",
|
||||
"title": "A single Authoritative Border Router Option definition",
|
||||
"required": [
|
||||
"address"
|
||||
],
|
||||
"properties": {
|
||||
"address": {
|
||||
"type": "string",
|
||||
"title": "Address of border router",
|
||||
"examples": [
|
||||
"fe80::1/64",
|
||||
"fe80::2/64"
|
||||
]
|
||||
},
|
||||
"options": { "$ref": "#/$defs/abro_options" }
|
||||
},
|
||||
"additionalProperties": false
|
||||
}
|
||||
},
|
||||
"AdvRASrcAddresses": {
|
||||
"type": "array",
|
||||
"title": "List of acceptable source addresses",
|
||||
"items": {
|
||||
"type": "string",
|
||||
"format": "ipv6",
|
||||
"title": "One source address",
|
||||
"examples": [
|
||||
"fe80::1",
|
||||
"fe80::2",
|
||||
"fe80::3",
|
||||
"fe80::4"
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
"additionalProperties": false
|
||||
}
|
||||
}
|
||||
},
|
||||
"additionalProperties": false,
|
||||
"$defs": {
|
||||
"interface_options": {
|
||||
"type": "object",
|
||||
"title": "The options for an interface",
|
||||
"properties": {
|
||||
"IgnoreIfMissing": {
|
||||
"type": "boolean",
|
||||
"title": "The IgnoreIfMissing Schema",
|
||||
"default": true
|
||||
},
|
||||
"AdvSendAdvert": {
|
||||
"type": "boolean",
|
||||
"title": "Whether or not the router sends periodic router advertisements and responds to router solicitations",
|
||||
"default": false
|
||||
},
|
||||
"UnicastOnly": {
|
||||
"type": "boolean",
|
||||
"title": "Indicates that the interface link type only supports unicast",
|
||||
"default": false
|
||||
},
|
||||
"AdvRASolicitedUnicast": {
|
||||
"type": "boolean",
|
||||
"title": "Indicates that router solicitations will be responded to with unicast router advertisements, as recommended by RFC7772",
|
||||
"default" : true
|
||||
},
|
||||
"MaxRtrAdvInterval": {
|
||||
"type": "number",
|
||||
"title": "Maximum time allowed between sending unsolicited multicast router advertisements from the interface, in seconds",
|
||||
"default" : 600,
|
||||
"exclusiveMinimum" : 0
|
||||
},
|
||||
"MinRtrAdvInterval": {
|
||||
"type": "number",
|
||||
"default" : "0.33 * MaxRtrAdvInterval",
|
||||
"title": "Minimum time allowed between sending unsolicited multicast router advertisements from the interface, in seconds",
|
||||
"minimum" : 3
|
||||
},
|
||||
"MinDelayBetweenRAs": {
|
||||
"type": "integer",
|
||||
"title": "Minimum time allowed between sending multicast router advertisements, in seconds",
|
||||
"type" : "number",
|
||||
"default" : 3,
|
||||
"exclusiveMinimum" : 0
|
||||
},
|
||||
"AdvManagedFlag": {
|
||||
"type": "boolean",
|
||||
"default" : false,
|
||||
"title": "When set, hosts use the administered (stateful) protocol for address autoconfiguration in addition to any addresses autoconfigured using stateless address autoconfiguration"
|
||||
},
|
||||
"AdvOtherConfigFlag": {
|
||||
"type": "boolean",
|
||||
"default" : false,
|
||||
"title": "When set, hosts use the administered (stateful) protocol for autoconfiguration of other (non-address) information"
|
||||
},
|
||||
"AdvLinkMTU": {
|
||||
"type": "integer",
|
||||
"title": "The MTU option is used in router advertisement messages to insure that all nodes on a link use the same MTU value in those cases where the link MTU is not well known",
|
||||
"type" : "integer",
|
||||
"default" : 0,
|
||||
"minimum" : 0
|
||||
},
|
||||
"AdvReachableTime": {
|
||||
"type": "integer",
|
||||
"title": "The time, in milliseconds, that a node assumes a neighbor is reachable after having received a reachability confirmation",
|
||||
"type" : "integer",
|
||||
"default" : 0,
|
||||
"minimum" : 0,
|
||||
"maximum" : 3600000
|
||||
},
|
||||
"AdvRetransTimer": {
|
||||
"type": "integer",
|
||||
"default" : 0,
|
||||
"minimum" : 0,
|
||||
"title": "The time, in milliseconds, between retransmitted Neighbor Solicitation messages"
|
||||
},
|
||||
"AdvCurHopLimit": {
|
||||
"type": "integer",
|
||||
"default" : 64,
|
||||
"minimum" : 0,
|
||||
"title": "The default value that should be placed in the Hop Count field of the IP header for outgoing (unicast) IP packets."
|
||||
},
|
||||
"AdvDefaultLifetime": {
|
||||
"type": "integer",
|
||||
"title": "The lifetime associated with the default router in units of seconds",
|
||||
"minimum" : 0,
|
||||
"maximum": 65520,
|
||||
"default" : "3 * MaxRtrAdvInterval (Minimum 1 second)"
|
||||
},
|
||||
"AdvDefaultPreference": {
|
||||
"type": "string",
|
||||
"title": "The preference associated with the default router",
|
||||
"enum" : [ "low", "medium", "high" ]
|
||||
},
|
||||
"AdvSourceLLAddress": {
|
||||
"type": "boolean",
|
||||
"title": "When set, the link-layer address of the outgoing interface is included in the RA.",
|
||||
"default" : true
|
||||
},
|
||||
"AdvHomeAgentFlag": {
|
||||
"type": "boolean",
|
||||
"title": "When set, indicates that sending router is able to serve as Mobile IPv6 Home Agent",
|
||||
"default" : false
|
||||
},
|
||||
"AdvHomeAgentInfo": {
|
||||
"type": "boolean",
|
||||
"title": "When set, Home Agent Information Option (specified by Mobile IPv6) is included in Router Advertisements. (Requires AdvHomeAgentFlag=true)",
|
||||
"default": false
|
||||
},
|
||||
"HomeAgentLifetime": {
|
||||
"type": "integer",
|
||||
"title": "The length of time in seconds (relative to the time the packet is sent) that the router is offering Mobile IPv6 Home Agent services. (Requires AdvHomeAgentFlag=true)",
|
||||
"default" : 0
|
||||
},
|
||||
"HomeAgentPreference": {
|
||||
"type": "integer",
|
||||
"title": "The preference for the Home Agent sending this Router Advertisement (Requires AdvHomeAgentFlag=true)",
|
||||
"default" : 0
|
||||
},
|
||||
"AdvMobRtrSupportFlag": {
|
||||
"type": "boolean",
|
||||
"title": "When set, the Home Agent signals it supports Mobile Router registrations (specified by NEMO Basic). (Requires AdvHomeAgentFlag=true)",
|
||||
"default": false
|
||||
},
|
||||
"AdvIntervalOpt": {
|
||||
"type": "boolean",
|
||||
"title": "When set, Advertisement Interval Option (specified by Mobile IPv6) is included in Router Advertisements",
|
||||
"default" : false
|
||||
}
|
||||
},
|
||||
"additionalProperties": false
|
||||
},
|
||||
"prefix_options": {
|
||||
"type": "object",
|
||||
"title": "Options for a prefix",
|
||||
"properties": {
|
||||
"AdvOnLink": {
|
||||
"type": "boolean",
|
||||
"default": true,
|
||||
"title": "Indicates that this prefix can be used for on-link determination."
|
||||
},
|
||||
"AdvAutonomous": {
|
||||
"type": "boolean",
|
||||
"title": "indicates that this prefix can be used for autonomous address configuration as specified in RFC 4862"
|
||||
},
|
||||
"AdvRouterAddr": {
|
||||
"type": "boolean",
|
||||
"default": false,
|
||||
"title": "When set, indicates that the address of interface is sent instead of network prefix, as is required by Mobile IPv6"
|
||||
},
|
||||
"AdvValidLifetime": {
|
||||
"anyOf" : [
|
||||
{
|
||||
"type": "integer",
|
||||
"mininum": 0,
|
||||
"maximum": 4294967295
|
||||
},
|
||||
{
|
||||
"type": "string",
|
||||
"enum" : [ "infinity" ]
|
||||
}
|
||||
],
|
||||
"default": 86400,
|
||||
"title": "The length of time in seconds (relative to the time the packet is sent) that the prefix is valid for the purpose of on-link determination",
|
||||
"examples": [
|
||||
86400,
|
||||
"infinity"
|
||||
]
|
||||
},
|
||||
"AdvPreferredLifetime": {
|
||||
"anyOf" : [
|
||||
{
|
||||
"type": "integer",
|
||||
"mininum": 0,
|
||||
"maximum": 4294967295
|
||||
},
|
||||
{
|
||||
"type": "string",
|
||||
"enum" : [ "infinity" ]
|
||||
}
|
||||
],
|
||||
"default": 14400,
|
||||
"title": "The length of time in seconds (relative to the time the packet is sent) that addresses generated from the prefix via stateless address autoconfiguration remain preferred",
|
||||
"examples": [
|
||||
14400,
|
||||
"infinity"
|
||||
]
|
||||
},
|
||||
"DeprecatePrefix": {
|
||||
"type": "boolean",
|
||||
"title": "Upon shutdown, this option will cause radvd to deprecate the prefix by announcing it in the radvd shutdown RA with a zero preferred lifetime and a valid lifetime slightly greater than 2 hours",
|
||||
"default": false
|
||||
},
|
||||
"DecrementLifetimes": {
|
||||
"type": "boolean",
|
||||
"title": "This option causes radvd to decrement the values of the preferred and valid lifetimes for the prefix over time",
|
||||
"default": false
|
||||
},
|
||||
"Base6Interface": {
|
||||
"type": "string",
|
||||
"title": "This prefix will be combined with the IPv6 address of the interface specified",
|
||||
"default": null
|
||||
},
|
||||
"Base6to4Interface": {
|
||||
"type": "string",
|
||||
"title": "This prefix will be combined with the IPv4 address of interface name to produce a valid 6to4 prefix",
|
||||
"default": null
|
||||
}
|
||||
},
|
||||
"additionalProperties": false
|
||||
},
|
||||
"route_options": {
|
||||
"type": "object",
|
||||
"title": "Options for a route",
|
||||
"properties": {
|
||||
"AdvRouteLifetime": {
|
||||
"anyOf" : [
|
||||
{
|
||||
"type": "integer",
|
||||
"mininum": 0,
|
||||
"maximum": 4294967295
|
||||
},
|
||||
{
|
||||
"type": "string",
|
||||
"enum" : [ "infinity" ]
|
||||
}
|
||||
],
|
||||
"default": "3 * MaxRtrAdvInterval",
|
||||
"title": "The AdvRouteLifetime Schema",
|
||||
"examples": [
|
||||
1800,
|
||||
"infinity"
|
||||
]
|
||||
},
|
||||
"AdvRoutePreference": {
|
||||
"type": "string",
|
||||
"title": "The preference associated with the default router",
|
||||
"enum" : [ "low", "medium", "high" ],
|
||||
"default": "medium"
|
||||
},
|
||||
"RemoveRoute": {
|
||||
"type": "boolean",
|
||||
"title": "Upon shutdown, announce this route with a zero second lifetime",
|
||||
"default": true
|
||||
}
|
||||
},
|
||||
"additionalProperties": false
|
||||
},
|
||||
"rdnss_options": {
|
||||
"type": "object",
|
||||
"title": "Options for this set of DNS servers",
|
||||
"properties": {
|
||||
"AdvRDNSSLifetime": {
|
||||
"anyOf" : [
|
||||
{
|
||||
"type": "integer",
|
||||
"mininum": 0,
|
||||
"maximum": 4294967295
|
||||
},
|
||||
{
|
||||
"type": "string",
|
||||
"enum" : [ "infinity" ]
|
||||
}
|
||||
],
|
||||
"default": "2 * MaxRtrAdvInterval",
|
||||
"title": "The maximum duration how long the RDNSS entries are used for name resolution.",
|
||||
"examples": [
|
||||
1200,
|
||||
"infinity"
|
||||
]
|
||||
},
|
||||
"FlushRDNSS": {
|
||||
"type": "boolean",
|
||||
"title": "Upon shutdown, announce the RDNSS entries with a zero second lifetime",
|
||||
"default": true
|
||||
}
|
||||
},
|
||||
"additionalProperties": false
|
||||
},
|
||||
"dnssl_options": {
|
||||
"type": "object",
|
||||
"title": "Options for this set of suffixes",
|
||||
"properties": {
|
||||
"AdvDNSSLLifetime": {
|
||||
"anyOf" : [
|
||||
{
|
||||
"type": "integer",
|
||||
"mininum": 0,
|
||||
"maximum": 4294967295
|
||||
},
|
||||
{
|
||||
"type": "string",
|
||||
"enum" : [ "infinity" ]
|
||||
}
|
||||
],
|
||||
"default": "2 * MaxRtrAdvInterval",
|
||||
"title": "The maximum duration how long the DNSSL entries are used for name resolution",
|
||||
"examples": [
|
||||
1200,
|
||||
"infinity"
|
||||
]
|
||||
},
|
||||
"FlushDNSSL": {
|
||||
"type": "boolean",
|
||||
"title": "Upon shutdown, announce the DNSSL entries with a zero second lifetime",
|
||||
"default": true
|
||||
}
|
||||
},
|
||||
"additionalProperties": false
|
||||
},
|
||||
"abro_options": {
|
||||
"type": "object",
|
||||
"title": "Options for this Authoritative Border Router Option definition",
|
||||
"properties": {
|
||||
"AdvValidLifeTime": {
|
||||
"type": "integer",
|
||||
"title": "The time in units of that the set of border router information is valid",
|
||||
"default": 10000
|
||||
},
|
||||
"AdvVersionLow": {
|
||||
"type": "integer",
|
||||
"title": "The lower 32 bits of a 48-bit version number corresponding to the set of information contained in RA message",
|
||||
"minimum": 0,
|
||||
"maximum": 4294967295,
|
||||
"default": 0
|
||||
},
|
||||
"AdvVersionHigh": {
|
||||
"type": "integer",
|
||||
"title": "The upper 16 bits of a 48-bit version number corresponding to the set of information contained in RA message",
|
||||
"default": 0,
|
||||
"minimum": 0,
|
||||
"maximumExclusive": 65536
|
||||
}
|
||||
},
|
||||
"additionalProperties": false
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user