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
f3150c9c
Commit
f3150c9c
authored
Jul 19, 2017
by
Pengfei Ni
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Support seccomp profile from container's security context
parent
2820b45c
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
41 additions
and
3 deletions
+41
-3
server.go
cmd/kubelet/app/server.go
+1
-1
kubelet.go
pkg/kubelet/kubelet.go
+2
-1
helpers.go
pkg/kubelet/kuberuntime/helpers.go
+28
-0
kuberuntime_manager.go
pkg/kubelet/kuberuntime/kuberuntime_manager.go
+5
-0
kuberuntime_sandbox.go
pkg/kubelet/kuberuntime/kuberuntime_sandbox.go
+2
-1
security_context.go
pkg/kubelet/kuberuntime/security_context.go
+3
-0
No files found.
cmd/kubelet/app/server.go
View file @
f3150c9c
...
@@ -819,7 +819,7 @@ func RunDockershim(c *componentconfig.KubeletConfiguration, r *options.Container
...
@@ -819,7 +819,7 @@ func RunDockershim(c *componentconfig.KubeletConfiguration, r *options.Container
SupportedPortForwardProtocols
:
streaming
.
DefaultConfig
.
SupportedPortForwardProtocols
,
SupportedPortForwardProtocols
:
streaming
.
DefaultConfig
.
SupportedPortForwardProtocols
,
}
}
ds
,
err
:=
dockershim
.
NewDockerService
(
dockerClient
,
c
.
SeccompProfileRoot
,
r
.
PodSandboxImage
,
ds
,
err
:=
dockershim
.
NewDockerService
(
dockerClient
,
r
.
PodSandboxImage
,
streamingConfig
,
&
pluginSettings
,
c
.
RuntimeCgroups
,
c
.
CgroupDriver
,
r
.
DockerExecHandlerName
,
r
.
DockershimRootDirectory
,
streamingConfig
,
&
pluginSettings
,
c
.
RuntimeCgroups
,
c
.
CgroupDriver
,
r
.
DockerExecHandlerName
,
r
.
DockershimRootDirectory
,
r
.
DockerDisableSharedPID
)
r
.
DockerDisableSharedPID
)
if
err
!=
nil
{
if
err
!=
nil
{
...
...
pkg/kubelet/kubelet.go
View file @
f3150c9c
...
@@ -577,7 +577,7 @@ func NewMainKubelet(kubeCfg *componentconfig.KubeletConfiguration,
...
@@ -577,7 +577,7 @@ func NewMainKubelet(kubeCfg *componentconfig.KubeletConfiguration,
case
kubetypes
.
DockerContainerRuntime
:
case
kubetypes
.
DockerContainerRuntime
:
// Create and start the CRI shim running as a grpc server.
// Create and start the CRI shim running as a grpc server.
streamingConfig
:=
getStreamingConfig
(
kubeCfg
,
kubeDeps
)
streamingConfig
:=
getStreamingConfig
(
kubeCfg
,
kubeDeps
)
ds
,
err
:=
dockershim
.
NewDockerService
(
kubeDeps
.
DockerClient
,
kubeCfg
.
SeccompProfileRoot
,
crOptions
.
PodSandboxImage
,
ds
,
err
:=
dockershim
.
NewDockerService
(
kubeDeps
.
DockerClient
,
crOptions
.
PodSandboxImage
,
streamingConfig
,
&
pluginSettings
,
kubeCfg
.
RuntimeCgroups
,
kubeCfg
.
CgroupDriver
,
crOptions
.
DockerExecHandlerName
,
streamingConfig
,
&
pluginSettings
,
kubeCfg
.
RuntimeCgroups
,
kubeCfg
.
CgroupDriver
,
crOptions
.
DockerExecHandlerName
,
crOptions
.
DockershimRootDirectory
,
crOptions
.
DockerDisableSharedPID
)
crOptions
.
DockershimRootDirectory
,
crOptions
.
DockerDisableSharedPID
)
if
err
!=
nil
{
if
err
!=
nil
{
...
@@ -621,6 +621,7 @@ func NewMainKubelet(kubeCfg *componentconfig.KubeletConfiguration,
...
@@ -621,6 +621,7 @@ func NewMainKubelet(kubeCfg *componentconfig.KubeletConfiguration,
runtime
,
err
:=
kuberuntime
.
NewKubeGenericRuntimeManager
(
runtime
,
err
:=
kuberuntime
.
NewKubeGenericRuntimeManager
(
kubecontainer
.
FilterEventRecorder
(
kubeDeps
.
Recorder
),
kubecontainer
.
FilterEventRecorder
(
kubeDeps
.
Recorder
),
klet
.
livenessManager
,
klet
.
livenessManager
,
kubeCfg
.
SeccompProfileRoot
,
containerRefManager
,
containerRefManager
,
machineInfo
,
machineInfo
,
klet
.
podManager
,
klet
.
podManager
,
...
...
pkg/kubelet/kuberuntime/helpers.go
View file @
f3150c9c
...
@@ -20,6 +20,7 @@ import (
...
@@ -20,6 +20,7 @@ import (
"fmt"
"fmt"
"path/filepath"
"path/filepath"
"strconv"
"strconv"
"strings"
"github.com/golang/glog"
"github.com/golang/glog"
"k8s.io/api/core/v1"
"k8s.io/api/core/v1"
...
@@ -255,3 +256,30 @@ func getSysctlsFromAnnotations(annotations map[string]string) (map[string]string
...
@@ -255,3 +256,30 @@ func getSysctlsFromAnnotations(annotations map[string]string) (map[string]string
return
sysctls
,
nil
return
sysctls
,
nil
}
}
// getSeccompProfileFromAnnotations gets seccomp profile from annotations.
// It gets pod's profile if containerName is null.
func
(
m
*
kubeGenericRuntimeManager
)
getSeccompProfileFromAnnotations
(
annotations
map
[
string
]
string
,
containerName
string
)
string
{
// try the pod profile.
profile
,
profileOK
:=
annotations
[
v1
.
SeccompPodAnnotationKey
]
if
containerName
!=
""
{
// try the container profile.
cProfile
,
cProfileOK
:=
annotations
[
v1
.
SeccompContainerAnnotationKeyPrefix
+
containerName
]
if
cProfileOK
{
profile
=
cProfile
profileOK
=
cProfileOK
}
}
if
!
profileOK
{
return
""
}
if
strings
.
HasPrefix
(
profile
,
"localhost/"
)
{
name
:=
strings
.
TrimPrefix
(
profile
,
"localhost/"
)
fname
:=
filepath
.
Join
(
m
.
seccompProfileRoot
,
filepath
.
FromSlash
(
name
))
return
fname
}
return
profile
}
pkg/kubelet/kuberuntime/kuberuntime_manager.go
View file @
f3150c9c
...
@@ -105,6 +105,9 @@ type kubeGenericRuntimeManager struct {
...
@@ -105,6 +105,9 @@ type kubeGenericRuntimeManager struct {
// The version cache of runtime daemon.
// The version cache of runtime daemon.
versionCache
*
cache
.
ObjectCache
versionCache
*
cache
.
ObjectCache
// The directory path for seccomp profiles.
seccompProfileRoot
string
}
}
type
KubeGenericRuntime
interface
{
type
KubeGenericRuntime
interface
{
...
@@ -117,6 +120,7 @@ type KubeGenericRuntime interface {
...
@@ -117,6 +120,7 @@ type KubeGenericRuntime interface {
func
NewKubeGenericRuntimeManager
(
func
NewKubeGenericRuntimeManager
(
recorder
record
.
EventRecorder
,
recorder
record
.
EventRecorder
,
livenessManager
proberesults
.
Manager
,
livenessManager
proberesults
.
Manager
,
seccompProfileRoot
string
,
containerRefManager
*
kubecontainer
.
RefManager
,
containerRefManager
*
kubecontainer
.
RefManager
,
machineInfo
*
cadvisorapi
.
MachineInfo
,
machineInfo
*
cadvisorapi
.
MachineInfo
,
podGetter
podGetter
,
podGetter
podGetter
,
...
@@ -134,6 +138,7 @@ func NewKubeGenericRuntimeManager(
...
@@ -134,6 +138,7 @@ func NewKubeGenericRuntimeManager(
kubeRuntimeManager
:=
&
kubeGenericRuntimeManager
{
kubeRuntimeManager
:=
&
kubeGenericRuntimeManager
{
recorder
:
recorder
,
recorder
:
recorder
,
cpuCFSQuota
:
cpuCFSQuota
,
cpuCFSQuota
:
cpuCFSQuota
,
seccompProfileRoot
:
seccompProfileRoot
,
livenessManager
:
livenessManager
,
livenessManager
:
livenessManager
,
containerRefManager
:
containerRefManager
,
containerRefManager
:
containerRefManager
,
machineInfo
:
machineInfo
,
machineInfo
:
machineInfo
,
...
...
pkg/kubelet/kuberuntime/kuberuntime_sandbox.go
View file @
f3150c9c
...
@@ -135,7 +135,8 @@ func (m *kubeGenericRuntimeManager) generatePodSandboxLinuxConfig(pod *v1.Pod) (
...
@@ -135,7 +135,8 @@ func (m *kubeGenericRuntimeManager) generatePodSandboxLinuxConfig(pod *v1.Pod) (
lc
:=
&
runtimeapi
.
LinuxPodSandboxConfig
{
lc
:=
&
runtimeapi
.
LinuxPodSandboxConfig
{
CgroupParent
:
cgroupParent
,
CgroupParent
:
cgroupParent
,
SecurityContext
:
&
runtimeapi
.
LinuxSandboxSecurityContext
{
SecurityContext
:
&
runtimeapi
.
LinuxSandboxSecurityContext
{
Privileged
:
kubecontainer
.
HasPrivilegedContainer
(
pod
),
Privileged
:
kubecontainer
.
HasPrivilegedContainer
(
pod
),
SeccompProfilePath
:
m
.
getSeccompProfileFromAnnotations
(
pod
.
Annotations
,
""
),
},
},
}
}
...
...
pkg/kubelet/kuberuntime/security_context.go
View file @
f3150c9c
...
@@ -33,6 +33,9 @@ func (m *kubeGenericRuntimeManager) determineEffectiveSecurityContext(pod *v1.Po
...
@@ -33,6 +33,9 @@ func (m *kubeGenericRuntimeManager) determineEffectiveSecurityContext(pod *v1.Po
synthesized
=
&
runtimeapi
.
LinuxContainerSecurityContext
{}
synthesized
=
&
runtimeapi
.
LinuxContainerSecurityContext
{}
}
}
// set SeccompProfilePath.
synthesized
.
SeccompProfilePath
=
m
.
getSeccompProfileFromAnnotations
(
pod
.
Annotations
,
container
.
Name
)
// set ApparmorProfile.
// set ApparmorProfile.
synthesized
.
ApparmorProfile
=
apparmor
.
GetProfileNameFromPodAnnotations
(
pod
.
Annotations
,
container
.
Name
)
synthesized
.
ApparmorProfile
=
apparmor
.
GetProfileNameFromPodAnnotations
(
pod
.
Annotations
,
container
.
Name
)
...
...
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