-
Notifications
You must be signed in to change notification settings - Fork 1.1k
/
environment.go
41 lines (36 loc) · 1.54 KB
/
environment.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
package kubelet
import (
"fmt"
"strings"
"github.com/awslabs/amazon-eks-ami/nodeadm/internal/api"
"github.com/awslabs/amazon-eks-ami/nodeadm/internal/util"
)
const (
kubeletEnvironmentFilePath = "/etc/eks/kubelet/environment"
kubeletArgsEnvironmentName = "NODEADM_KUBELET_ARGS"
)
// Write environment variables needed for kubelet runtime. This should be the
// last method called on the kubelet object so that environment side effects of
// other methods are properly recored
func (k *kubelet) writeKubeletEnvironment(cfg *api.NodeConfig) error {
// transform kubelet flags into a single string and write them to the
// kubelet environment variable
var kubeletFlags []string
for flag, value := range k.flags {
kubeletFlags = append(kubeletFlags, fmt.Sprintf("--%s=%s", flag, value))
}
// append user-provided flags at the end to give them precedence
kubeletFlags = append(kubeletFlags, cfg.Spec.Kubelet.Flags...)
// expose these flags via an environment variable scoped to nodeadm
k.environment[kubeletArgsEnvironmentName] = strings.Join(kubeletFlags, " ")
// write additional environment variables
var kubeletEnvironment []string
for eKey, eValue := range k.environment {
kubeletEnvironment = append(kubeletEnvironment, fmt.Sprintf(`%s="%s"`, eKey, eValue))
}
return util.WriteFileWithDir(kubeletEnvironmentFilePath, []byte(strings.Join(kubeletEnvironment, "\n")), kubeletConfigPerm)
}
// Add values to the environment variables map in a terse manner
func (k *kubelet) setEnv(envName string, envArg string) {
k.environment[envName] = envArg
}