Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
K
k3s
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Jacklull
k3s
Commits
85b37750
Commit
85b37750
authored
Feb 04, 2025
by
Brad Davidson
Committed by
Brad Davidson
Feb 05, 2025
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Consolidate linux and windows containerd config templates
Signed-off-by:
Brad Davidson
<
brad.davidson@rancher.com
>
parent
bb79c2b3
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
172 additions
and
283 deletions
+172
-283
config.go
pkg/agent/config/config.go
+21
-37
config_linux.go
pkg/agent/config/config_linux.go
+36
-6
config_windows.go
pkg/agent/config/config_windows.go
+13
-5
config_windows.go
pkg/agent/containerd/config_windows.go
+0
-2
templates.go
pkg/agent/templates/templates.go
+102
-0
templates_linux.go
pkg/agent/templates/templates_linux.go
+0
-99
templates_windows.go
pkg/agent/templates/templates_windows.go
+0
-134
No files found.
pkg/agent/config/config.go
View file @
85b37750
...
@@ -22,7 +22,6 @@ import (
...
@@ -22,7 +22,6 @@ import (
"strings"
"strings"
"time"
"time"
"github.com/k3s-io/k3s/pkg/agent/containerd"
"github.com/k3s-io/k3s/pkg/agent/proxy"
"github.com/k3s-io/k3s/pkg/agent/proxy"
agentutil
"github.com/k3s-io/k3s/pkg/agent/util"
agentutil
"github.com/k3s-io/k3s/pkg/agent/util"
"github.com/k3s-io/k3s/pkg/cli/cmds"
"github.com/k3s-io/k3s/pkg/cli/cmds"
...
@@ -639,51 +638,23 @@ func get(ctx context.Context, envInfo *cmds.Agent, proxy proxy.Proxy) (*config.N
...
@@ -639,51 +638,23 @@ func get(ctx context.Context, envInfo *cmds.Agent, proxy proxy.Proxy) (*config.N
nodeConfig
.
AgentConfig
.
KubeConfigKubelet
=
kubeconfigKubelet
nodeConfig
.
AgentConfig
.
KubeConfigKubelet
=
kubeconfigKubelet
nodeConfig
.
AgentConfig
.
KubeConfigKubeProxy
=
kubeconfigKubeproxy
nodeConfig
.
AgentConfig
.
KubeConfigKubeProxy
=
kubeconfigKubeproxy
nodeConfig
.
AgentConfig
.
KubeConfigK3sController
=
kubeconfigK3sController
nodeConfig
.
AgentConfig
.
KubeConfigK3sController
=
kubeconfigK3sController
if
envInfo
.
Rootless
{
nodeConfig
.
AgentConfig
.
RootDir
=
filepath
.
Join
(
envInfo
.
DataDir
,
"agent"
,
"kubelet"
)
}
nodeConfig
.
AgentConfig
.
Snapshotter
=
envInfo
.
Snapshotter
nodeConfig
.
AgentConfig
.
Snapshotter
=
envInfo
.
Snapshotter
nodeConfig
.
AgentConfig
.
IPSECPSK
=
controlConfig
.
IPSECPSK
nodeConfig
.
AgentConfig
.
IPSECPSK
=
controlConfig
.
IPSECPSK
nodeConfig
.
Containerd
.
Config
=
filepath
.
Join
(
envInfo
.
DataDir
,
"agent"
,
"etc"
,
"containerd"
,
"config.toml"
)
nodeConfig
.
Containerd
.
Config
=
filepath
.
Join
(
envInfo
.
DataDir
,
"agent"
,
"etc"
,
"containerd"
,
"config.toml"
)
nodeConfig
.
Containerd
.
Root
=
filepath
.
Join
(
envInfo
.
DataDir
,
"agent"
,
"containerd"
)
nodeConfig
.
Containerd
.
Root
=
filepath
.
Join
(
envInfo
.
DataDir
,
"agent"
,
"containerd"
)
nodeConfig
.
CRIDockerd
.
Root
=
filepath
.
Join
(
envInfo
.
DataDir
,
"agent"
,
"cri-dockerd"
)
nodeConfig
.
CRIDockerd
.
Root
=
filepath
.
Join
(
envInfo
.
DataDir
,
"agent"
,
"cri-dockerd"
)
if
!
nodeConfig
.
Docker
{
if
nodeConfig
.
ImageServiceEndpoint
!=
""
{
nodeConfig
.
AgentConfig
.
ImageServiceSocket
=
nodeConfig
.
ImageServiceEndpoint
}
else
if
nodeConfig
.
ContainerRuntimeEndpoint
==
""
{
switch
nodeConfig
.
AgentConfig
.
Snapshotter
{
case
"overlayfs"
:
if
err
:=
containerd
.
OverlaySupported
(
nodeConfig
.
Containerd
.
Root
);
err
!=
nil
{
return
nil
,
errors
.
Wrapf
(
err
,
"
\"
overlayfs
\"
snapshotter cannot be enabled for %q, try using
\"
fuse-overlayfs
\"
or
\"
native
\"
"
,
nodeConfig
.
Containerd
.
Root
)
}
case
"fuse-overlayfs"
:
if
err
:=
containerd
.
FuseoverlayfsSupported
(
nodeConfig
.
Containerd
.
Root
);
err
!=
nil
{
return
nil
,
errors
.
Wrapf
(
err
,
"
\"
fuse-overlayfs
\"
snapshotter cannot be enabled for %q, try using
\"
native
\"
"
,
nodeConfig
.
Containerd
.
Root
)
}
case
"stargz"
:
if
err
:=
containerd
.
StargzSupported
(
nodeConfig
.
Containerd
.
Root
);
err
!=
nil
{
return
nil
,
errors
.
Wrapf
(
err
,
"
\"
stargz
\"
snapshotter cannot be enabled for %q, try using
\"
overlayfs
\"
or
\"
native
\"
"
,
nodeConfig
.
Containerd
.
Root
)
}
nodeConfig
.
AgentConfig
.
ImageServiceSocket
=
"/run/containerd-stargz-grpc/containerd-stargz-grpc.sock"
}
}
else
{
nodeConfig
.
AgentConfig
.
ImageServiceSocket
=
nodeConfig
.
ContainerRuntimeEndpoint
}
}
nodeConfig
.
Containerd
.
Opt
=
filepath
.
Join
(
envInfo
.
DataDir
,
"agent"
,
"containerd"
)
nodeConfig
.
Containerd
.
Opt
=
filepath
.
Join
(
envInfo
.
DataDir
,
"agent"
,
"containerd"
)
nodeConfig
.
Containerd
.
Log
=
filepath
.
Join
(
envInfo
.
DataDir
,
"agent"
,
"containerd"
,
"containerd.log"
)
nodeConfig
.
Containerd
.
Log
=
filepath
.
Join
(
envInfo
.
DataDir
,
"agent"
,
"containerd"
,
"containerd.log"
)
nodeConfig
.
Containerd
.
Registry
=
filepath
.
Join
(
envInfo
.
DataDir
,
"agent"
,
"etc"
,
"containerd"
,
"certs.d"
)
nodeConfig
.
Containerd
.
Registry
=
filepath
.
Join
(
envInfo
.
DataDir
,
"agent"
,
"etc"
,
"containerd"
,
"certs.d"
)
nodeConfig
.
Containerd
.
NoDefault
=
envInfo
.
ContainerdNoDefault
nodeConfig
.
Containerd
.
NoDefault
=
envInfo
.
ContainerdNoDefault
nodeConfig
.
Containerd
.
NonrootDevices
=
envInfo
.
ContainerdNonrootDevices
nodeConfig
.
Containerd
.
NonrootDevices
=
envInfo
.
ContainerdNonrootDevices
nodeConfig
.
Containerd
.
Debug
=
envInfo
.
Debug
nodeConfig
.
Containerd
.
Debug
=
envInfo
.
Debug
applyContainerdStateAndAddress
(
nodeConfig
)
applyCRIDockerdAddress
(
nodeConfig
)
applyContainerdQoSClassConfigFileIfPresent
(
envInfo
,
&
nodeConfig
.
Containerd
)
nodeConfig
.
Containerd
.
Template
=
filepath
.
Join
(
envInfo
.
DataDir
,
"agent"
,
"etc"
,
"containerd"
,
"config.toml.tmpl"
)
nodeConfig
.
Containerd
.
Template
=
filepath
.
Join
(
envInfo
.
DataDir
,
"agent"
,
"etc"
,
"containerd"
,
"config.toml.tmpl"
)
if
envInfo
.
Rootless
{
nodeConfig
.
AgentConfig
.
RootDir
=
filepath
.
Join
(
envInfo
.
DataDir
,
"agent"
,
"kubelet"
)
}
if
envInfo
.
BindAddress
!=
""
{
if
envInfo
.
BindAddress
!=
""
{
nodeConfig
.
AgentConfig
.
ListenAddress
=
envInfo
.
BindAddress
nodeConfig
.
AgentConfig
.
ListenAddress
=
envInfo
.
BindAddress
}
else
{
}
else
{
...
@@ -739,13 +710,26 @@ func get(ctx context.Context, envInfo *cmds.Agent, proxy proxy.Proxy) (*config.N
...
@@ -739,13 +710,26 @@ func get(ctx context.Context, envInfo *cmds.Agent, proxy proxy.Proxy) (*config.N
}
}
}
}
if
nodeConfig
.
Docker
{
if
nodeConfig
.
ImageServiceEndpoint
!=
""
{
nodeConfig
.
AgentConfig
.
ImageServiceSocket
=
nodeConfig
.
ImageServiceEndpoint
}
if
nodeConfig
.
ContainerRuntimeEndpoint
!=
""
{
nodeConfig
.
AgentConfig
.
RuntimeSocket
=
nodeConfig
.
ContainerRuntimeEndpoint
}
else
if
nodeConfig
.
Docker
{
if
err
:=
applyCRIDockerdOSSpecificConfig
(
nodeConfig
);
err
!=
nil
{
return
nil
,
err
}
nodeConfig
.
AgentConfig
.
CNIPlugin
=
true
nodeConfig
.
AgentConfig
.
CNIPlugin
=
true
nodeConfig
.
AgentConfig
.
RuntimeSocket
=
nodeConfig
.
CRIDockerd
.
Address
nodeConfig
.
AgentConfig
.
RuntimeSocket
=
nodeConfig
.
CRIDockerd
.
Address
}
else
if
nodeConfig
.
ContainerRuntimeEndpoint
==
""
{
nodeConfig
.
AgentConfig
.
RuntimeSocket
=
nodeConfig
.
Containerd
.
Address
}
else
{
}
else
{
nodeConfig
.
AgentConfig
.
RuntimeSocket
=
nodeConfig
.
ContainerRuntimeEndpoint
if
err
:=
applyContainerdOSSpecificConfig
(
nodeConfig
);
err
!=
nil
{
return
nil
,
err
}
if
err
:=
applyContainerdQoSClassConfigFileIfPresent
(
envInfo
,
&
nodeConfig
.
Containerd
);
err
!=
nil
{
return
nil
,
err
}
nodeConfig
.
AgentConfig
.
RuntimeSocket
=
nodeConfig
.
Containerd
.
Address
}
}
if
controlConfig
.
ClusterIPRange
!=
nil
{
if
controlConfig
.
ClusterIPRange
!=
nil
{
...
...
pkg/agent/config/config_linux.go
View file @
85b37750
...
@@ -4,25 +4,47 @@
...
@@ -4,25 +4,47 @@
package
config
package
config
import
(
import
(
"errors"
"os"
"os"
"path/filepath"
"path/filepath"
"github.com/k3s-io/k3s/pkg/agent/containerd"
"github.com/k3s-io/k3s/pkg/cli/cmds"
"github.com/k3s-io/k3s/pkg/cli/cmds"
"github.com/k3s-io/k3s/pkg/daemons/config"
"github.com/k3s-io/k3s/pkg/daemons/config"
"github.com/pkg/errors"
"github.com/sirupsen/logrus"
"github.com/sirupsen/logrus"
)
)
func
applyContainerdStateAndAddress
(
nodeConfig
*
config
.
Node
)
{
// applyContainerdOSSpecificConfig sets linux-specific containerd config
func
applyContainerdOSSpecificConfig
(
nodeConfig
*
config
.
Node
)
error
{
nodeConfig
.
Containerd
.
State
=
"/run/k3s/containerd"
nodeConfig
.
Containerd
.
State
=
"/run/k3s/containerd"
nodeConfig
.
Containerd
.
Address
=
filepath
.
Join
(
nodeConfig
.
Containerd
.
State
,
"containerd.sock"
)
nodeConfig
.
Containerd
.
Address
=
filepath
.
Join
(
nodeConfig
.
Containerd
.
State
,
"containerd.sock"
)
}
func
applyCRIDockerdAddress
(
nodeConfig
*
config
.
Node
)
{
// validate that the selected snapshotter supports the filesystem at the root path.
nodeConfig
.
CRIDockerd
.
Address
=
"unix:///run/k3s/cri-dockerd/cri-dockerd.sock"
// for stargz, also overrides the image service endpoint path.
switch
nodeConfig
.
AgentConfig
.
Snapshotter
{
case
"overlayfs"
:
if
err
:=
containerd
.
OverlaySupported
(
nodeConfig
.
Containerd
.
Root
);
err
!=
nil
{
return
errors
.
Wrapf
(
err
,
"
\"
overlayfs
\"
snapshotter cannot be enabled for %q, try using
\"
fuse-overlayfs
\"
or
\"
native
\"
"
,
nodeConfig
.
Containerd
.
Root
)
}
case
"fuse-overlayfs"
:
if
err
:=
containerd
.
FuseoverlayfsSupported
(
nodeConfig
.
Containerd
.
Root
);
err
!=
nil
{
return
errors
.
Wrapf
(
err
,
"
\"
fuse-overlayfs
\"
snapshotter cannot be enabled for %q, try using
\"
native
\"
"
,
nodeConfig
.
Containerd
.
Root
)
}
case
"stargz"
:
if
err
:=
containerd
.
StargzSupported
(
nodeConfig
.
Containerd
.
Root
);
err
!=
nil
{
return
errors
.
Wrapf
(
err
,
"
\"
stargz
\"
snapshotter cannot be enabled for %q, try using
\"
overlayfs
\"
or
\"
native
\"
"
,
nodeConfig
.
Containerd
.
Root
)
}
nodeConfig
.
AgentConfig
.
ImageServiceSocket
=
"/run/containerd-stargz-grpc/containerd-stargz-grpc.sock"
}
return
nil
}
}
func
applyContainerdQoSClassConfigFileIfPresent
(
envInfo
*
cmds
.
Agent
,
containerdConfig
*
config
.
Containerd
)
{
// applyContainerdQoSClassConfigFileIfPresent sets linux-specific qos config
func
applyContainerdQoSClassConfigFileIfPresent
(
envInfo
*
cmds
.
Agent
,
containerdConfig
*
config
.
Containerd
)
error
{
containerdConfigDir
:=
filepath
.
Join
(
envInfo
.
DataDir
,
"agent"
,
"etc"
,
"containerd"
)
containerdConfigDir
:=
filepath
.
Join
(
envInfo
.
DataDir
,
"agent"
,
"etc"
,
"containerd"
)
blockioPath
:=
filepath
.
Join
(
containerdConfigDir
,
"blockio_config.yaml"
)
blockioPath
:=
filepath
.
Join
(
containerdConfigDir
,
"blockio_config.yaml"
)
...
@@ -44,6 +66,14 @@ func applyContainerdQoSClassConfigFileIfPresent(envInfo *cmds.Agent, containerdC
...
@@ -44,6 +66,14 @@ func applyContainerdQoSClassConfigFileIfPresent(envInfo *cmds.Agent, containerdC
containerdConfig
.
RDTConfig
=
rdtPath
containerdConfig
.
RDTConfig
=
rdtPath
}
}
}
}
return
nil
}
// applyCRIDockerdOSSpecificConfig sets linux-specific cri-dockerd config
func
applyCRIDockerdOSSpecificConfig
(
nodeConfig
*
config
.
Node
)
error
{
nodeConfig
.
CRIDockerd
.
Address
=
"unix:///run/k3s/cri-dockerd/cri-dockerd.sock"
return
nil
}
}
// configureACL will configure an Access Control List for the specified file.
// configureACL will configure an Access Control List for the specified file.
...
...
pkg/agent/config/config_windows.go
View file @
85b37750
...
@@ -15,17 +15,25 @@ import (
...
@@ -15,17 +15,25 @@ import (
"golang.org/x/sys/windows"
"golang.org/x/sys/windows"
)
)
func
applyContainerdStateAndAddress
(
nodeConfig
*
config
.
Node
)
{
// applyContainerdOSSpecificConfig sets windows-specific containerd config
func
applyContainerdOSSpecificConfig
(
nodeConfig
*
config
.
Node
)
error
{
nodeConfig
.
AgentConfig
.
Snapshotter
=
"windows"
nodeConfig
.
Containerd
.
State
=
filepath
.
Join
(
nodeConfig
.
Containerd
.
Root
,
"state"
)
nodeConfig
.
Containerd
.
State
=
filepath
.
Join
(
nodeConfig
.
Containerd
.
Root
,
"state"
)
nodeConfig
.
Containerd
.
Address
=
"npipe:////./pipe/containerd-containerd"
nodeConfig
.
Containerd
.
Address
=
"npipe:////./pipe/containerd-containerd"
nodeConfig
.
DefaultRuntime
=
"runhcs-wcow-process"
return
nil
}
}
func
applyCRIDockerdAddress
(
nodeConfig
*
config
.
Node
)
{
// applyContainerdQoSClassConfigFileIfPresent sets windows-specific qos config
nodeConfig
.
CRIDockerd
.
Address
=
"npipe:////.pipe/cri-dockerd"
func
applyContainerdQoSClassConfigFileIfPresent
(
envInfo
*
cmds
.
Agent
,
containerdConfig
*
config
.
Containerd
)
error
{
// QoS-class resource management not supported on windows.
return
nil
}
}
func
applyContainerdQoSClassConfigFileIfPresent
(
envInfo
*
cmds
.
Agent
,
containerdConfig
*
config
.
Containerd
)
{
// applyCRIDockerdOSSpecificConfig sets windows-specific cri-dockerd config
// QoS-class resource management not supported on windows.
func
applyCRIDockerdOSSpecificConfig
(
nodeConfig
*
config
.
Node
)
error
{
nodeConfig
.
CRIDockerd
.
Address
=
"npipe:////.pipe/cri-dockerd"
return
nil
}
}
// configureACL will configure an Access Control List for the specified file,
// configureACL will configure an Access Control List for the specified file,
...
...
pkg/agent/containerd/config_windows.go
View file @
85b37750
...
@@ -31,8 +31,6 @@ func SetupContainerdConfig(cfg *config.Node) error {
...
@@ -31,8 +31,6 @@ func SetupContainerdConfig(cfg *config.Node) error {
containerdConfig
:=
templates
.
ContainerdConfig
{
containerdConfig
:=
templates
.
ContainerdConfig
{
NodeConfig
:
cfg
,
NodeConfig
:
cfg
,
DisableCgroup
:
true
,
DisableCgroup
:
true
,
SystemdCgroup
:
false
,
IsRunningInUserNS
:
false
,
PrivateRegistryConfig
:
cfg
.
AgentConfig
.
Registry
,
PrivateRegistryConfig
:
cfg
.
AgentConfig
.
Registry
,
NoDefaultEndpoint
:
cfg
.
Containerd
.
NoDefault
,
NoDefaultEndpoint
:
cfg
.
Containerd
.
NoDefault
,
}
}
...
...
pkg/agent/templates/templates.go
View file @
85b37750
...
@@ -42,6 +42,108 @@ type HostConfig struct {
...
@@ -42,6 +42,108 @@ type HostConfig struct {
Endpoints
[]
RegistryEndpoint
Endpoints
[]
RegistryEndpoint
}
}
const
ContainerdConfigTemplate
=
`
{{- /* */ -}}
# File generated by {{ .Program }}. DO NOT EDIT. Use config.toml.tmpl instead.
version = 2
root = {{ printf "%q" .NodeConfig.Containerd.Root }}
state = {{ printf "%q" .NodeConfig.Containerd.State }}
[plugins."io.containerd.internal.v1.opt"]
path = {{ printf "%q" .NodeConfig.Containerd.Opt }}
[plugins."io.containerd.grpc.v1.cri"]
stream_server_address = "127.0.0.1"
stream_server_port = "10010"
enable_selinux = {{ .NodeConfig.SELinux }}
enable_unprivileged_ports = {{ .EnableUnprivileged }}
enable_unprivileged_icmp = {{ .EnableUnprivileged }}
device_ownership_from_security_context = {{ .NonrootDevices }}
{{- if .DisableCgroup}}
disable_cgroup = true
{{end}}
{{- if .IsRunningInUserNS }}
disable_apparmor = true
restrict_oom_score_adj = true
{{end}}
{{- if .NodeConfig.AgentConfig.PauseImage }}
sandbox_image = "{{ .NodeConfig.AgentConfig.PauseImage }}"
{{end}}
{{- if .NodeConfig.AgentConfig.Snapshotter }}
[plugins."io.containerd.grpc.v1.cri".containerd]
snapshotter = "{{ .NodeConfig.AgentConfig.Snapshotter }}"
disable_snapshot_annotations = {{ if eq .NodeConfig.AgentConfig.Snapshotter "stargz" }}false{{else}}true{{end}}
{{ if .NodeConfig.DefaultRuntime }}default_runtime_name = "{{ .NodeConfig.DefaultRuntime }}"{{end}}
{{ if eq .NodeConfig.AgentConfig.Snapshotter "stargz" }}
{{ if .NodeConfig.AgentConfig.ImageServiceSocket }}
[plugins."io.containerd.snapshotter.v1.stargz"]
cri_keychain_image_service_path = "{{ .NodeConfig.AgentConfig.ImageServiceSocket }}"
[plugins."io.containerd.snapshotter.v1.stargz".cri_keychain]
enable_keychain = true
{{end}}
[plugins."io.containerd.snapshotter.v1.stargz".registry]
config_path = "{{ .NodeConfig.Containerd.Registry }}"
{{ if .PrivateRegistryConfig }}
{{range $k, $v := .PrivateRegistryConfig.Configs }}
{{ if $v.Auth }}
[plugins."io.containerd.snapshotter.v1.stargz".registry.configs."{{$k}}".auth]
{{ if $v.Auth.Username }}username = {{ printf "%q" $v.Auth.Username }}{{end}}
{{ if $v.Auth.Password }}password = {{ printf "%q" $v.Auth.Password }}{{end}}
{{ if $v.Auth.Auth }}auth = {{ printf "%q" $v.Auth.Auth }}{{end}}
{{ if $v.Auth.IdentityToken }}identitytoken = {{ printf "%q" $v.Auth.IdentityToken }}{{end}}
{{end}}
{{end}}
{{end}}
{{end}}
{{end}}
{{- if not .NodeConfig.NoFlannel }}
[plugins."io.containerd.grpc.v1.cri".cni]
bin_dir = "{{ .NodeConfig.AgentConfig.CNIBinDir }}"
conf_dir = "{{ .NodeConfig.AgentConfig.CNIConfDir }}"
{{end}}
{{- if or .NodeConfig.Containerd.BlockIOConfig .NodeConfig.Containerd.RDTConfig }}
[plugins."io.containerd.service.v1.tasks-service"]
{{ if .NodeConfig.Containerd.BlockIOConfig }}blockio_config_file = "{{ .NodeConfig.Containerd.BlockIOConfig }}"{{end}}
{{ if .NodeConfig.Containerd.RDTConfig }}rdt_config_file = "{{ .NodeConfig.Containerd.RDTConfig }}"{{end}}
{{end}}
[plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc]
runtime_type = "io.containerd.runc.v2"
[plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc.options]
SystemdCgroup = {{ .SystemdCgroup }}
[plugins."io.containerd.grpc.v1.cri".registry]
config_path = "{{ .NodeConfig.Containerd.Registry }}"
{{ if .PrivateRegistryConfig }}
{{range $k, $v := .PrivateRegistryConfig.Configs }}
{{ if $v.Auth }}
[plugins."io.containerd.grpc.v1.cri".registry.configs."{{$k}}".auth]
{{ if $v.Auth.Username }}username = {{ printf "%q" $v.Auth.Username }}{{end}}
{{ if $v.Auth.Password }}password = {{ printf "%q" $v.Auth.Password }}{{end}}
{{ if $v.Auth.Auth }}auth = {{ printf "%q" $v.Auth.Auth }}{{end}}
{{ if $v.Auth.IdentityToken }}identitytoken = {{ printf "%q" $v.Auth.IdentityToken }}{{end}}
{{end}}
{{end}}
{{end}}
{{range $k, $v := .ExtraRuntimes}}
[plugins."io.containerd.grpc.v1.cri".containerd.runtimes."{{$k}}"]
runtime_type = "{{$v.RuntimeType}}"
[plugins."io.containerd.grpc.v1.cri".containerd.runtimes."{{$k}}".options]
BinaryName = "{{$v.BinaryName}}"
SystemdCgroup = {{ $.SystemdCgroup }}
{{end}}
`
var
HostsTomlHeader
=
"# File generated by "
+
version
.
Program
+
". DO NOT EDIT.
\n
"
var
HostsTomlHeader
=
"# File generated by "
+
version
.
Program
+
". DO NOT EDIT.
\n
"
const
HostsTomlTemplate
=
`
const
HostsTomlTemplate
=
`
...
...
pkg/agent/templates/templates_linux.go
View file @
85b37750
...
@@ -6,105 +6,6 @@ import (
...
@@ -6,105 +6,6 @@ import (
"text/template"
"text/template"
)
)
const
ContainerdConfigTemplate
=
`
{{- /* */ -}}
# File generated by {{ .Program }}. DO NOT EDIT. Use config.toml.tmpl instead.
version = 2
[plugins."io.containerd.internal.v1.opt"]
path = "{{ .NodeConfig.Containerd.Opt }}"
[plugins."io.containerd.grpc.v1.cri"]
stream_server_address = "127.0.0.1"
stream_server_port = "10010"
enable_selinux = {{ .NodeConfig.SELinux }}
enable_unprivileged_ports = {{ .EnableUnprivileged }}
enable_unprivileged_icmp = {{ .EnableUnprivileged }}
device_ownership_from_security_context = {{ .NonrootDevices }}
{{- if .DisableCgroup}}
disable_cgroup = true
{{end}}
{{- if .IsRunningInUserNS }}
disable_apparmor = true
restrict_oom_score_adj = true
{{end}}
{{- if .NodeConfig.AgentConfig.PauseImage }}
sandbox_image = "{{ .NodeConfig.AgentConfig.PauseImage }}"
{{end}}
{{- if .NodeConfig.AgentConfig.Snapshotter }}
[plugins."io.containerd.grpc.v1.cri".containerd]
snapshotter = "{{ .NodeConfig.AgentConfig.Snapshotter }}"
disable_snapshot_annotations = {{ if eq .NodeConfig.AgentConfig.Snapshotter "stargz" }}false{{else}}true{{end}}
{{ if .NodeConfig.DefaultRuntime }}default_runtime_name = "{{ .NodeConfig.DefaultRuntime }}"{{end}}
{{ if eq .NodeConfig.AgentConfig.Snapshotter "stargz" }}
{{ if .NodeConfig.AgentConfig.ImageServiceSocket }}
[plugins."io.containerd.snapshotter.v1.stargz"]
cri_keychain_image_service_path = "{{ .NodeConfig.AgentConfig.ImageServiceSocket }}"
[plugins."io.containerd.snapshotter.v1.stargz".cri_keychain]
enable_keychain = true
{{end}}
[plugins."io.containerd.snapshotter.v1.stargz".registry]
config_path = "{{ .NodeConfig.Containerd.Registry }}"
{{ if .PrivateRegistryConfig }}
{{range $k, $v := .PrivateRegistryConfig.Configs }}
{{ if $v.Auth }}
[plugins."io.containerd.snapshotter.v1.stargz".registry.configs."{{$k}}".auth]
{{ if $v.Auth.Username }}username = {{ printf "%q" $v.Auth.Username }}{{end}}
{{ if $v.Auth.Password }}password = {{ printf "%q" $v.Auth.Password }}{{end}}
{{ if $v.Auth.Auth }}auth = {{ printf "%q" $v.Auth.Auth }}{{end}}
{{ if $v.Auth.IdentityToken }}identitytoken = {{ printf "%q" $v.Auth.IdentityToken }}{{end}}
{{end}}
{{end}}
{{end}}
{{end}}
{{end}}
{{- if not .NodeConfig.NoFlannel }}
[plugins."io.containerd.grpc.v1.cri".cni]
bin_dir = "{{ .NodeConfig.AgentConfig.CNIBinDir }}"
conf_dir = "{{ .NodeConfig.AgentConfig.CNIConfDir }}"
{{end}}
{{- if or .NodeConfig.Containerd.BlockIOConfig .NodeConfig.Containerd.RDTConfig }}
[plugins."io.containerd.service.v1.tasks-service"]
{{ if .NodeConfig.Containerd.BlockIOConfig }}blockio_config_file = "{{ .NodeConfig.Containerd.BlockIOConfig }}"{{end}}
{{ if .NodeConfig.Containerd.RDTConfig }}rdt_config_file = "{{ .NodeConfig.Containerd.RDTConfig }}"{{end}}
{{end}}
[plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc]
runtime_type = "io.containerd.runc.v2"
[plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc.options]
SystemdCgroup = {{ .SystemdCgroup }}
[plugins."io.containerd.grpc.v1.cri".registry]
config_path = "{{ .NodeConfig.Containerd.Registry }}"
{{ if .PrivateRegistryConfig }}
{{range $k, $v := .PrivateRegistryConfig.Configs }}
{{ if $v.Auth }}
[plugins."io.containerd.grpc.v1.cri".registry.configs."{{$k}}".auth]
{{ if $v.Auth.Username }}username = {{ printf "%q" $v.Auth.Username }}{{end}}
{{ if $v.Auth.Password }}password = {{ printf "%q" $v.Auth.Password }}{{end}}
{{ if $v.Auth.Auth }}auth = {{ printf "%q" $v.Auth.Auth }}{{end}}
{{ if $v.Auth.IdentityToken }}identitytoken = {{ printf "%q" $v.Auth.IdentityToken }}{{end}}
{{end}}
{{end}}
{{end}}
{{range $k, $v := .ExtraRuntimes}}
[plugins."io.containerd.grpc.v1.cri".containerd.runtimes."{{$k}}"]
runtime_type = "{{$v.RuntimeType}}"
[plugins."io.containerd.grpc.v1.cri".containerd.runtimes."{{$k}}".options]
BinaryName = "{{$v.BinaryName}}"
SystemdCgroup = {{ $.SystemdCgroup }}
{{end}}
`
// Linux config templates do not need fixups
// Linux config templates do not need fixups
var
templateFuncs
=
template
.
FuncMap
{
var
templateFuncs
=
template
.
FuncMap
{
"deschemify"
:
func
(
s
string
)
string
{
"deschemify"
:
func
(
s
string
)
string
{
...
...
pkg/agent/templates/templates_windows.go
View file @
85b37750
...
@@ -9,140 +9,6 @@ import (
...
@@ -9,140 +9,6 @@ import (
"text/template"
"text/template"
)
)
const
ContainerdConfigTemplate
=
`
{{- /* */ -}}
# File generated by {{ .Program }}. DO NOT EDIT. Use config.toml.tmpl instead.
version = 2
root = {{ printf "%q" .NodeConfig.Containerd.Root }}
state = {{ printf "%q" .NodeConfig.Containerd.State }}
plugin_dir = ""
disabled_plugins = []
required_plugins = []
oom_score = 0
[grpc]
address = "{{ deschemify .NodeConfig.Containerd.Address }}"
tcp_address = ""
tcp_tls_cert = ""
tcp_tls_key = ""
uid = 0
gid = 0
max_recv_message_size = 16777216
max_send_message_size = 16777216
[ttrpc]
address = ""
uid = 0
gid = 0
[debug]
address = ""
uid = 0
gid = 0
level = ""
[metrics]
address = ""
grpc_histogram = false
[cgroup]
path = ""
[timeouts]
"io.containerd.timeout.shim.cleanup" = "5s"
"io.containerd.timeout.shim.load" = "5s"
"io.containerd.timeout.shim.shutdown" = "3s"
"io.containerd.timeout.task.state" = "2s"
[plugins]
[plugins."io.containerd.gc.v1.scheduler"]
pause_threshold = 0.02
deletion_threshold = 0
mutation_threshold = 100
schedule_delay = "0s"
startup_delay = "100ms"
[plugins."io.containerd.grpc.v1.cri"]
disable_tcp_service = true
stream_server_address = "127.0.0.1"
stream_server_port = "0"
stream_idle_timeout = "4h0m0s"
enable_selinux = false
selinux_category_range = 0
sandbox_image = "{{ .NodeConfig.AgentConfig.PauseImage }}"
stats_collect_period = 10
systemd_cgroup = false
enable_tls_streaming = false
max_container_log_line_size = 16384
disable_cgroup = false
disable_apparmor = false
restrict_oom_score_adj = false
max_concurrent_downloads = 3
disable_proc_mount = false
unset_seccomp_profile = ""
tolerate_missing_hugetlb_controller = false
disable_hugetlb_controller = false
ignore_image_defined_volumes = false
[plugins."io.containerd.grpc.v1.cri".containerd]
snapshotter = "windows"
default_runtime_name = "runhcs-wcow-process"
no_pivot = false
disable_snapshot_annotations = false
discard_unpacked_layers = false
[plugins."io.containerd.grpc.v1.cri".containerd.default_runtime]
runtime_type = ""
runtime_engine = ""
runtime_root = ""
privileged_without_host_devices = false
base_runtime_spec = ""
[plugins."io.containerd.grpc.v1.cri".containerd.untrusted_workload_runtime]
runtime_type = ""
runtime_engine = ""
runtime_root = ""
privileged_without_host_devices = false
base_runtime_spec = ""
[plugins."io.containerd.grpc.v1.cri".containerd.runtimes]
[plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runhcs-wcow-process]
runtime_type = "io.containerd.runhcs.v1"
runtime_engine = ""
runtime_root = ""
privileged_without_host_devices = false
base_runtime_spec = ""
[plugins."io.containerd.grpc.v1.cri".cni]
bin_dir = {{ printf "%q" .NodeConfig.AgentConfig.CNIBinDir }}
conf_dir = {{ printf "%q" .NodeConfig.AgentConfig.CNIConfDir }}
max_conf_num = 1
conf_template = ""
[plugins."io.containerd.grpc.v1.cri".registry]
config_path = {{ printf "%q" .NodeConfig.Containerd.Registry }}
{{ if .PrivateRegistryConfig }}
{{range $k, $v := .PrivateRegistryConfig.Configs }}
{{ if $v.Auth }}
[plugins."io.containerd.grpc.v1.cri".registry.configs.auth."{{$k}}"]
{{ if $v.Auth.Username }}username = {{ printf "%q" $v.Auth.Username }}{{end}}
{{ if $v.Auth.Password }}password = {{ printf "%q" $v.Auth.Password }}{{end}}
{{ if $v.Auth.Auth }}auth = {{ printf "%q" $v.Auth.Auth }}{{end}}
{{ if $v.Auth.IdentityToken }}identitytoken = {{ printf "%q" $v.Auth.IdentityToken }}{{end}}
{{end}}
{{end}}
{{end}}
[plugins."io.containerd.grpc.v1.cri".image_decryption]
key_model = ""
[plugins."io.containerd.grpc.v1.cri".x509_key_pair_streaming]
tls_cert_file = ""
tls_key_file = ""
[plugins."io.containerd.internal.v1.opt"]
path = {{ printf "%q" .NodeConfig.Containerd.Opt }}
[plugins."io.containerd.internal.v1.restart"]
interval = "10s"
[plugins."io.containerd.metadata.v1.bolt"]
content_sharing_policy = "shared"
[plugins."io.containerd.runtime.v2.task"]
platforms = ["windows/amd64", "linux/amd64"]
[plugins."io.containerd.service.v1.diff-service"]
default = ["windows", "windows-lcow"]
`
// Windows config templates need named pipe addresses fixed up
// Windows config templates need named pipe addresses fixed up
var
templateFuncs
=
template
.
FuncMap
{
var
templateFuncs
=
template
.
FuncMap
{
"deschemify"
:
func
(
s
string
)
string
{
"deschemify"
:
func
(
s
string
)
string
{
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment