-
Notifications
You must be signed in to change notification settings - Fork 15
/
daemonset.yaml
162 lines (159 loc) · 3.84 KB
/
daemonset.yaml
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
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
apiVersion: v1
kind: Namespace
metadata:
name: node-configuration-daemonset
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
name: node-patch-installer
rules:
- apiGroups: ['policy']
resources: ['podsecuritypolicies']
verbs: ['use']
resourceNames:
- node-patch-installer
---
apiVersion: v1
kind: ServiceAccount
metadata:
name: node-patch-installer
namespace: node-configuration-daemonset
---
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
name: node-patch-installer
namespace: node-configuration-daemonset
roleRef:
kind: ClusterRole
name: node-patch-installer
apiGroup: rbac.authorization.k8s.io
subjects:
- kind: ServiceAccount
name: node-patch-installer
namespace: node-configuration-daemonset
---
apiVersion: policy/v1beta1
kind: PodSecurityPolicy
metadata:
name: node-patch-installer
spec:
privileged: true
hostPID: true
seLinux:
rule: RunAsAny
supplementalGroups:
rule: RunAsAny
runAsUser:
rule: RunAsAny
fsGroup:
rule: RunAsAny
---
apiVersion: v1
kind: ConfigMap
metadata:
name: node-patch-installer-script
namespace: node-configuration-daemonset
data:
install.sh: |
#!/bin/bash
OS_TYPE=`uname -a`
RPM_TYPE=""
echo "Detecting OS..."
if [[ "$OS_TYPE" =~ "amzn1" ]]; then
RPM_TYPE="amzn1"
echo "OS Matched $RPM_TYPE"
elif [[ "$OS_TYPE" =~ "amzn2" ]]; then
RPM_TYPE="amzn2"
echo "OS Matched $RPM_TYPE"
else
echo "No OS match for $OS_TYPE"
exit 1
fi
PACKAGE="log4j-cve-2021-44228-hotpatch-1.1-3.$RPM_TYPE.noarch"
FILE="/tmp/install/$PACKAGE.rpm"
echo "Detecting RPM file: $FILE"
if test -f "$FILE"; then
echo "$FILE exists."
else
echo "ERROR: $FILE does not exist."
exit 1
fi
echo "Installing $PACKAGE"
eval "rpm -ivh $FILE"
echo "Verifying $PACKAGE"
OUTPUT=`eval "rpm -V $PACKAGE"`
if [[ -z $OUTPUT ]]; then
echo "$PACKAGE installed and verified"
else
echo "$PACKAGE could not be verified"
echo "$OUTPUT"
exit 1
fi
---
apiVersion: apps/v1
kind: DaemonSet
metadata:
name: node-patch-installer
namespace: node-configuration-daemonset
spec:
selector:
matchLabels:
job: node-patch-installer
template:
metadata:
labels:
job: node-patch-installer
spec:
affinity:
nodeAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
nodeSelectorTerms:
- matchExpressions:
- key: kubernetes.io/os
operator: In
values:
- linux
- key: kubernetes.io/arch
operator: In
values:
- amd64
- arm64
- key: eks.amazonaws.com/compute-type
operator: NotIn
values:
- fargate
hostPID: true
restartPolicy: Always
initContainers:
- image: public.ecr.aws/aws-containers/kubernetes-log4j-cve-2021-44228-mitigation:v0.0.4
name: node-patch-installer
securityContext:
privileged: true
volumeMounts:
- name: install-script
mountPath: /tmp
- name: tmp-install
mountPath: /host
imagePullPolicy: Always
volumes:
- name: install-script
configMap:
name: node-patch-installer-script
- name: tmp-install
hostPath:
path: /tmp/install
serviceAccountName: node-patch-installer
tolerations:
- operator: Exists
containers:
- image: "public.ecr.aws/eks-distro/kubernetes/pause:3.5"
name: pause
securityContext:
allowPrivilegeEscalation: false
runAsUser: 1000
readOnlyRootFilesystem: true
capabilities:
drop:
- all