mirror of
https://github.com/k3s-io/k3s.git
synced 2024-06-07 19:41:36 +00:00
c45524e662
Render cri registry mirrors.x.endpoints and configs.x.tls into config_path; keep using mirrors.x.rewrites and configs.x.auth those do not yet have an equivalent in the new format. The new config file format allows disabling containerd's fallback to the default endpoint when using mirror endpoints; a new CLI flag is added to control that behavior. This also re-shares some code that was unnecessarily split into parallel implementations for linux/windows versions. There is probably more work to be done on this front but it's a good start. Signed-off-by: Brad Davidson <brad.davidson@rancher.com>
91 lines
2.3 KiB
Go
91 lines
2.3 KiB
Go
package templates
|
|
|
|
import (
|
|
"bytes"
|
|
"text/template"
|
|
|
|
"github.com/rancher/wharfie/pkg/registries"
|
|
|
|
"github.com/k3s-io/k3s/pkg/daemons/config"
|
|
)
|
|
|
|
type ContainerdRuntimeConfig struct {
|
|
RuntimeType string
|
|
BinaryName string
|
|
}
|
|
|
|
type ContainerdConfig struct {
|
|
NodeConfig *config.Node
|
|
DisableCgroup bool
|
|
SystemdCgroup bool
|
|
IsRunningInUserNS bool
|
|
EnableUnprivileged bool
|
|
NoDefaultEndpoint bool
|
|
PrivateRegistryConfig *registries.Registry
|
|
ExtraRuntimes map[string]ContainerdRuntimeConfig
|
|
Program string
|
|
}
|
|
|
|
type RegistryEndpoint struct {
|
|
OverridePath bool
|
|
URI string
|
|
Rewrites map[string]string
|
|
Config registries.RegistryConfig
|
|
}
|
|
|
|
type HostConfig struct {
|
|
Host string
|
|
Program string
|
|
Endpoints []RegistryEndpoint
|
|
}
|
|
|
|
const HostsTomlTemplate = `
|
|
{{- /* */ -}}
|
|
# File generated by {{ .Program }}. DO NOT EDIT.
|
|
{{ if .Host }}server = "https://{{ .Host }}"{{ end }}
|
|
|
|
{{ range $e := .Endpoints -}}
|
|
[host."{{ $e.URI }}"]
|
|
capabilities = ["pull", "resolve"]
|
|
{{- if $e.OverridePath }}
|
|
override_path = true
|
|
{{- end }}
|
|
{{- if $e.Config.TLS }}
|
|
{{- if $e.Config.TLS.CAFile }}
|
|
ca = [{{ printf "%q" $e.Config.TLS.CAFile }}]
|
|
{{- end }}
|
|
{{- if or $e.Config.TLS.CertFile $e.Config.TLS.KeyFile }}
|
|
client = [[{{ printf "%q" $e.Config.TLS.CertFile }}, {{ printf "%q" $e.Config.TLS.KeyFile }}]]
|
|
{{- end }}
|
|
{{- if $e.Config.TLS.InsecureSkipVerify }}
|
|
skip_verify = true
|
|
{{- end }}
|
|
{{ end }}
|
|
{{- if $e.Rewrites }}
|
|
[host."{{ $e.URI }}".rewrite]
|
|
{{- range $pattern, $replace := $e.Rewrites }}
|
|
"{{ $pattern }}" = "{{ $replace }}"
|
|
{{- end }}
|
|
{{ end }}
|
|
{{ end -}}
|
|
`
|
|
|
|
func ParseTemplateFromConfig(templateBuffer string, config interface{}) (string, error) {
|
|
out := new(bytes.Buffer)
|
|
t := template.Must(template.New("compiled_template").Funcs(templateFuncs).Parse(templateBuffer))
|
|
template.Must(t.New("base").Parse(ContainerdConfigTemplate))
|
|
if err := t.Execute(out, config); err != nil {
|
|
return "", err
|
|
}
|
|
return out.String(), nil
|
|
}
|
|
|
|
func ParseHostsTemplateFromConfig(templateBuffer string, config interface{}) (string, error) {
|
|
out := new(bytes.Buffer)
|
|
t := template.Must(template.New("compiled_template").Funcs(templateFuncs).Parse(templateBuffer))
|
|
if err := t.Execute(out, config); err != nil {
|
|
return "", err
|
|
}
|
|
return out.String(), nil
|
|
}
|