Gentoo Archives: gentoo-commits

From: William Hubbs <williamh@g.o>
To: gentoo-commits@l.g.o
Subject: [gentoo-commits] repo/gentoo:master commit in: sys-cluster/kubernetes/, sys-cluster/kubernetes/files/
Date: Mon, 30 Mar 2020 21:36:31
Message-Id: 1585604147.5fa5afed5558822cefd2d2e6e617f8370d02af62.williamh@gentoo
1 commit: 5fa5afed5558822cefd2d2e6e617f8370d02af62
2 Author: William Hubbs <williamh <AT> gentoo <DOT> org>
3 AuthorDate: Mon Mar 30 21:31:18 2020 +0000
4 Commit: William Hubbs <williamh <AT> gentoo <DOT> org>
5 CommitDate: Mon Mar 30 21:35:47 2020 +0000
6 URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=5fa5afed
7
8 sys-cluster/kubernetes: production-grade container orchestration
9
10 Previously, Kubernetes had all of its executables packaged separately,
11 but this will be much easier to maintain.
12
13 The use flags control which parts are built and installed.
14
15 Signed-off-by: William Hubbs <williamh <AT> gentoo.org>
16
17 sys-cluster/kubernetes/Manifest | 1 +
18 sys-cluster/kubernetes/files/kube-apiserver.confd | 7 ++
19 sys-cluster/kubernetes/files/kube-apiserver.initd | 19 +++++
20 .../kubernetes/files/kube-apiserver.logrotated | 7 ++
21 .../kubernetes/files/kube-controller-manager.confd | 9 +++
22 .../kubernetes/files/kube-controller-manager.initd | 19 +++++
23 .../files/kube-controller-manager.logrotated | 7 ++
24 sys-cluster/kubernetes/files/kube-proxy.confd | 4 +
25 sys-cluster/kubernetes/files/kube-proxy.initd | 19 +++++
26 sys-cluster/kubernetes/files/kube-proxy.logrotated | 7 ++
27 sys-cluster/kubernetes/files/kube-scheduler.confd | 9 +++
28 sys-cluster/kubernetes/files/kube-scheduler.initd | 19 +++++
29 .../kubernetes/files/kube-scheduler.logrotated | 7 ++
30 sys-cluster/kubernetes/files/kubelet.confd | 4 +
31 sys-cluster/kubernetes/files/kubelet.env | 17 ++++
32 sys-cluster/kubernetes/files/kubelet.initd | 19 +++++
33 sys-cluster/kubernetes/files/kubelet.logrotated | 7 ++
34 sys-cluster/kubernetes/files/kubelet.service | 24 ++++++
35 sys-cluster/kubernetes/kubernetes-1.18.0.ebuild | 90 ++++++++++++++++++++++
36 sys-cluster/kubernetes/metadata.xml | 17 ++++
37 20 files changed, 312 insertions(+)
38
39 diff --git a/sys-cluster/kubernetes/Manifest b/sys-cluster/kubernetes/Manifest
40 new file mode 100644
41 index 00000000000..0d914c7cff9
42 --- /dev/null
43 +++ b/sys-cluster/kubernetes/Manifest
44 @@ -0,0 +1 @@
45 +DIST kubernetes-1.18.0.tar.gz 32554015 BLAKE2B 24079970cc1887c6dad7b55d9f2fd80cd9f46f1b6c1240cf28abf2eb33b3809bcd858293bb800255533a13e24145fab580b0bd2eb0e06c15ca4e0feeedcf6ff2 SHA512 3298ec63a2fbcd396b415f27a581f4286317ae206c30b35457aed780baae4115059df20e40028df394984caccc8bb4ef6c879ae3c064771c8a5c045dee7998e8
46
47 diff --git a/sys-cluster/kubernetes/files/kube-apiserver.confd b/sys-cluster/kubernetes/files/kube-apiserver.confd
48 new file mode 100644
49 index 00000000000..db74d27f020
50 --- /dev/null
51 +++ b/sys-cluster/kubernetes/files/kube-apiserver.confd
52 @@ -0,0 +1,7 @@
53 +###
54 +# kubernetes system config
55 +#
56 +# The following values are used to configure the kube-apiserver
57 +#
58 +
59 +command_args=""
60
61 diff --git a/sys-cluster/kubernetes/files/kube-apiserver.initd b/sys-cluster/kubernetes/files/kube-apiserver.initd
62 new file mode 100644
63 index 00000000000..6f649f5a546
64 --- /dev/null
65 +++ b/sys-cluster/kubernetes/files/kube-apiserver.initd
66 @@ -0,0 +1,19 @@
67 +#!/sbin/openrc-run
68 +# Copyright 2017 Gentoo Foundation
69 +# Distributed under the terms of the GNU General Public License v2
70 +
71 +description="Kubernetes API Server"
72 +pidfile=${pidfile:-"/run/${RC_SVCNAME}.pid"}
73 +user=${user:-${RC_SVCNAME}}
74 +group=${group:-${RC_SVCNAME}}
75 +
76 +command="/usr/bin/kube-apiserver"
77 +command_args="${command_args}"
78 +command_background="true"
79 +start_stop_daemon_args="--user ${user} --group ${group} \
80 + --stdout /var/log/${RC_SVCNAME}/${RC_SVCNAME}.log \
81 + --stderr /var/log/${RC_SVCNAME}/${RC_SVCNAME}.log"
82 +
83 +depend() {
84 + after net
85 +}
86
87 diff --git a/sys-cluster/kubernetes/files/kube-apiserver.logrotated b/sys-cluster/kubernetes/files/kube-apiserver.logrotated
88 new file mode 100644
89 index 00000000000..4ed84506231
90 --- /dev/null
91 +++ b/sys-cluster/kubernetes/files/kube-apiserver.logrotated
92 @@ -0,0 +1,7 @@
93 +/var/log/kube-apiserver/*.log {
94 + missingok
95 + size 5M
96 + rotate 3
97 + compress
98 + copytruncate
99 +}
100
101 diff --git a/sys-cluster/kubernetes/files/kube-controller-manager.confd b/sys-cluster/kubernetes/files/kube-controller-manager.confd
102 new file mode 100644
103 index 00000000000..155c43a0756
104 --- /dev/null
105 +++ b/sys-cluster/kubernetes/files/kube-controller-manager.confd
106 @@ -0,0 +1,9 @@
107 +###
108 +# kubernetes system config
109 +#
110 +# The following values are used to configure the kube-controller-manager
111 +#
112 +
113 +# Add your own!
114 +command_args=""
115 +
116
117 diff --git a/sys-cluster/kubernetes/files/kube-controller-manager.initd b/sys-cluster/kubernetes/files/kube-controller-manager.initd
118 new file mode 100644
119 index 00000000000..276197f0656
120 --- /dev/null
121 +++ b/sys-cluster/kubernetes/files/kube-controller-manager.initd
122 @@ -0,0 +1,19 @@
123 +#!/sbin/openrc-run
124 +# Copyright 2017 Gentoo Foundation
125 +# Distributed under the terms of the GNU General Public License v2
126 +
127 +description="Kubernetes Controller Manager service"
128 +pidfile=${pidfile:-"/run/${RC_SVCNAME}.pid"}
129 +user=${user:-${RC_SVCNAME}}
130 +group=${group:-${RC_SVCNAME}}
131 +
132 +command="/usr/bin/kube-controller-manager"
133 +command_args="${command_args}"
134 +command_background="true"
135 +start_stop_daemon_args="--user ${user} --group ${group} \
136 + --stdout /var/log/${RC_SVCNAME}/${RC_SVCNAME}.log \
137 + --stderr /var/log/${RC_SVCNAME}/${RC_SVCNAME}.log"
138 +
139 +depend() {
140 + after net
141 +}
142
143 diff --git a/sys-cluster/kubernetes/files/kube-controller-manager.logrotated b/sys-cluster/kubernetes/files/kube-controller-manager.logrotated
144 new file mode 100644
145 index 00000000000..06efce23406
146 --- /dev/null
147 +++ b/sys-cluster/kubernetes/files/kube-controller-manager.logrotated
148 @@ -0,0 +1,7 @@
149 +/var/log/kube-controller-manager/*.log {
150 + missingok
151 + size 5M
152 + rotate 3
153 + compress
154 + copytruncate
155 +}
156
157 diff --git a/sys-cluster/kubernetes/files/kube-proxy.confd b/sys-cluster/kubernetes/files/kube-proxy.confd
158 new file mode 100644
159 index 00000000000..00f33f358bb
160 --- /dev/null
161 +++ b/sys-cluster/kubernetes/files/kube-proxy.confd
162 @@ -0,0 +1,4 @@
163 +###
164 +# Kubernetes kube-proxy config
165 +#
166 +command_args=""
167
168 diff --git a/sys-cluster/kubernetes/files/kube-proxy.initd b/sys-cluster/kubernetes/files/kube-proxy.initd
169 new file mode 100644
170 index 00000000000..18a75adf0b6
171 --- /dev/null
172 +++ b/sys-cluster/kubernetes/files/kube-proxy.initd
173 @@ -0,0 +1,19 @@
174 +#!/sbin/openrc-run
175 +# Copyright 2017 Gentoo Foundation
176 +# Distributed under the terms of the GNU General Public License v2
177 +
178 +description="Kubernetes Proxy service"
179 +pidfile=${pidfile:-"/run/${SVCNAME}.pid"}
180 +user=${user:-root}
181 +group=${group:-root}
182 +
183 +command="/usr/bin/kube-proxy"
184 +command_args="${command_args}"
185 +command_background="true"
186 +start_stop_daemon_args="--user ${user} --group ${group} \
187 + --stdout /var/log/${SVCNAME}/${SVCNAME}.log \
188 + --stderr /var/log/${SVCNAME}/${SVCNAME}.log"
189 +
190 +depend() {
191 + after net
192 +}
193
194 diff --git a/sys-cluster/kubernetes/files/kube-proxy.logrotated b/sys-cluster/kubernetes/files/kube-proxy.logrotated
195 new file mode 100644
196 index 00000000000..b8d1032c1f7
197 --- /dev/null
198 +++ b/sys-cluster/kubernetes/files/kube-proxy.logrotated
199 @@ -0,0 +1,7 @@
200 +/var/log/kube-proxy/*.log {
201 + missingok
202 + size 5M
203 + rotate 3
204 + compress
205 + copytruncate
206 +}
207
208 diff --git a/sys-cluster/kubernetes/files/kube-scheduler.confd b/sys-cluster/kubernetes/files/kube-scheduler.confd
209 new file mode 100644
210 index 00000000000..8442e0348d2
211 --- /dev/null
212 +++ b/sys-cluster/kubernetes/files/kube-scheduler.confd
213 @@ -0,0 +1,9 @@
214 +###
215 +# kubernetes system config
216 +#
217 +# The following values are used to configure the kube-scheduler
218 +#
219 +
220 +# Add your own!
221 +command_args=""
222 +
223
224 diff --git a/sys-cluster/kubernetes/files/kube-scheduler.initd b/sys-cluster/kubernetes/files/kube-scheduler.initd
225 new file mode 100644
226 index 00000000000..2c49bce3ec8
227 --- /dev/null
228 +++ b/sys-cluster/kubernetes/files/kube-scheduler.initd
229 @@ -0,0 +1,19 @@
230 +#!/sbin/openrc-run
231 +# Copyright 2017 Gentoo Foundation
232 +# Distributed under the terms of the GNU General Public License v2
233 +
234 +description="Kubernetes Scheduler service"
235 +pidfile=${pidfile:-"/run/${RC_SVCNAME}.pid"}
236 +user=${user:-${RC_SVCNAME}}
237 +group=${group:-${RC_SVCNAME}}
238 +
239 +command="/usr/bin/kube-scheduler"
240 +command_args="${command_args}"
241 +command_background="true"
242 +start_stop_daemon_args="--user ${user} --group ${group} \
243 + --stdout /var/log/${RC_SVCNAME}/${RC_SVCNAME}.log \
244 + --stderr /var/log/${RC_SVCNAME}/${RC_SVCNAME}.log"
245 +
246 +depend() {
247 + after net
248 +}
249
250 diff --git a/sys-cluster/kubernetes/files/kube-scheduler.logrotated b/sys-cluster/kubernetes/files/kube-scheduler.logrotated
251 new file mode 100644
252 index 00000000000..6cce6c6f5be
253 --- /dev/null
254 +++ b/sys-cluster/kubernetes/files/kube-scheduler.logrotated
255 @@ -0,0 +1,7 @@
256 +/var/log/kube-scheduler/*.log {
257 + missingok
258 + size 5M
259 + rotate 3
260 + compress
261 + copytruncate
262 +}
263
264 diff --git a/sys-cluster/kubernetes/files/kubelet.confd b/sys-cluster/kubernetes/files/kubelet.confd
265 new file mode 100644
266 index 00000000000..24f424877eb
267 --- /dev/null
268 +++ b/sys-cluster/kubernetes/files/kubelet.confd
269 @@ -0,0 +1,4 @@
270 +###
271 +# Kubernetes Kubelet (worker) config
272 +
273 +command_args=""
274
275 diff --git a/sys-cluster/kubernetes/files/kubelet.env b/sys-cluster/kubernetes/files/kubelet.env
276 new file mode 100644
277 index 00000000000..a623673960f
278 --- /dev/null
279 +++ b/sys-cluster/kubernetes/files/kubelet.env
280 @@ -0,0 +1,17 @@
281 +###
282 +# kubernetes kubelet (minion) config
283 +
284 +# The address for the info server to serve on (set to 0.0.0.0 or "" for all interfaces)
285 +KUBELET_ADDRESS="--address=127.0.0.1"
286 +
287 +# The port for the info server to serve on
288 +# KUBELET_PORT="--port=10250"
289 +
290 +# You may leave this blank to use the actual hostname
291 +KUBELET_HOSTNAME="--hostname-override=127.0.0.1"
292 +
293 +# Edit the kubelet.kubeconfig to have correct cluster server address
294 +KUBELET_KUBECONFIG=/etc/kubernetes/kubelet.kubeconfig
295 +
296 +# Add your own!
297 +KUBELET_ARGS="--cgroup-driver=systemd --fail-swap-on=false"
298
299 diff --git a/sys-cluster/kubernetes/files/kubelet.initd b/sys-cluster/kubernetes/files/kubelet.initd
300 new file mode 100644
301 index 00000000000..363f635b586
302 --- /dev/null
303 +++ b/sys-cluster/kubernetes/files/kubelet.initd
304 @@ -0,0 +1,19 @@
305 +#!/sbin/openrc-run
306 +# Copyright 2016-2017 Gentoo Foundation
307 +# Distributed under the terms of the GNU General Public License v2
308 +
309 +description="Kubelet, a Kubernetes node agent"
310 +pidfile=${pidfile:-"/run/${RC_SVCNAME}.pid"}
311 +user=${user:-root}
312 +group=${group:-root}
313 +
314 +command="/usr/bin/kubelet"
315 +command_args="${command_args}"
316 +command_background="true"
317 +start_stop_daemon_args="--user ${user} --group ${group} \
318 + --stdout /var/log/kubelet/${RC_SVCNAME}.log \
319 + --stderr /var/log/kubelet/${RC_SVCNAME}.log"
320 +
321 +depend() {
322 + after net
323 +}
324
325 diff --git a/sys-cluster/kubernetes/files/kubelet.logrotated b/sys-cluster/kubernetes/files/kubelet.logrotated
326 new file mode 100644
327 index 00000000000..ddf8c1dd80f
328 --- /dev/null
329 +++ b/sys-cluster/kubernetes/files/kubelet.logrotated
330 @@ -0,0 +1,7 @@
331 +/var/log/kubernetes/*.log {
332 + missingok
333 + size 5M
334 + rotate 3
335 + compress
336 + copytruncate
337 +}
338
339 diff --git a/sys-cluster/kubernetes/files/kubelet.service b/sys-cluster/kubernetes/files/kubelet.service
340 new file mode 100644
341 index 00000000000..1082bbac1d0
342 --- /dev/null
343 +++ b/sys-cluster/kubernetes/files/kubelet.service
344 @@ -0,0 +1,24 @@
345 +[Unit]
346 +Description=Kubernetes Kubelet Server
347 +Documentation=https://kubernetes.io/docs/concepts/overview/components/#kubelet https://kubernetes.io/docs/reference/generated/kubelet/
348 +After=docker.service
349 +Requires=docker.service
350 +
351 +[Service]
352 +WorkingDirectory=/var/lib/kubelet
353 +EnvironmentFile=-/etc/kubernetes/config
354 +EnvironmentFile=-/etc/kubernetes/kubelet
355 +ExecStart=/usr/bin/kubelet \
356 + $KUBE_LOGTOSTDERR \
357 + $KUBE_LOG_LEVEL \
358 + $KUBELET_KUBECONFIG \
359 + $KUBELET_ADDRESS \
360 + $KUBELET_PORT \
361 + $KUBELET_HOSTNAME \
362 + $KUBE_ALLOW_PRIV \
363 + $KUBELET_ARGS
364 +Restart=on-failure
365 +KillMode=process
366 +
367 +[Install]
368 +WantedBy=multi-user.target
369
370 diff --git a/sys-cluster/kubernetes/kubernetes-1.18.0.ebuild b/sys-cluster/kubernetes/kubernetes-1.18.0.ebuild
371 new file mode 100644
372 index 00000000000..50827671959
373 --- /dev/null
374 +++ b/sys-cluster/kubernetes/kubernetes-1.18.0.ebuild
375 @@ -0,0 +1,90 @@
376 +# Copyright 2020 Gentoo Authors
377 +# Distributed under the terms of the GNU General Public License v2
378 +
379 +EAPI=7
380 +inherit bash-completion-r1 go-module systemd
381 +
382 +DESCRIPTION="production-grade container orchestration"
383 +HOMEPAGE="https://kubernetes.io"
384 +SRC_URI="https://github.com/kubernetes/kubernetes/archive/v${PV}.tar.gz -> ${P}.tar.gz"
385 +
386 +LICENSE="Apache-2.0"
387 +SLOT="0"
388 +KEYWORDS="~amd64"
389 +
390 +AGENT="kubelet"
391 +CLI="kubeadm kubectl"
392 +SERVICES="kube-apiserver kube-controller-manager kube-proxy kube-scheduler"
393 +IUSE="hardened"
394 +for x in ${AGENT} ${CLI} ${SERVICES}; do
395 + IUSE+=" +${x}"
396 +done
397 +
398 +BDEPEND=">=dev-lang/go-1.13"
399 +COMMON_DEPEND="
400 + kube-apiserver? (
401 + acct-group/kube-apiserver
402 + acct-user/kube-apiserver
403 + )
404 + kube-controller-manager? (
405 + acct-group/kube-controller-manager
406 + acct-user/kube-controller-manager
407 + )
408 + kube-scheduler? (
409 + acct-group/kube-scheduler
410 + acct-user/kube-scheduler
411 + )"
412 +DEPEND="${COMMON_DEPEND}"
413 +RDEPEND="${COMMON_DEPEND}
414 + kube-proxy? ( net-firewall/conntrack-tools )
415 + !sys-cluster/kubeadm
416 + !sys-cluster/kubectl
417 + !sys-cluster/kubelet
418 + !sys-cluster/kube-apiserver
419 + !sys-cluster/kube-controller-manager
420 + !sys-cluster/kube-proxy
421 + !sys-cluster/kube-scheduler"
422 +
423 +RESTRICT+=" test"
424 +
425 +src_compile() {
426 + local x
427 + for x in ${AGENT} ${CLI} ${SERVICES}; do
428 + use $x || continue
429 + CGO_LDFLAGS="$(usex hardened '-fno-PIC ' '')" \
430 + emake -j1 GOFLAGS=-v GOLDFLAGS="" LDFLAGS="" WHAT=cmd/${x}
431 + done
432 +}
433 +
434 +src_install() {
435 + local x
436 + for x in ${AGENT} ${CLI} ${SERVICES}; do
437 + use $x || continue
438 + dobin _output/bin/${x}
439 + if has ${x} ${CLI}; then
440 + _output/bin/${x} completion bash > ${x}.bash || die
441 + _output/bin/${x} completion zsh > ${x}.zsh || die
442 + newbashcomp ${x}.bash ${x}
443 + insinto /usr/share/zsh/site-functions
444 + newins ${x}.zsh _${x}
445 + continue
446 + fi
447 + newinitd "${FILESDIR}"/${x}.initd ${x}
448 + newconfd "${FILESDIR}"/${x}.confd ${x}
449 + insinto /etc/logrotate.d
450 + newins "${FILESDIR}"/${x}.logrotated ${x}
451 + keepdir /var/log/${x}
452 + if [[ "$x" =~ kubelet ]]; then
453 + systemd_dounit "${FILESDIR}"/${x}.service
454 + insinto /etc/kubernetes
455 + newins "${FILESDIR}"/${x}.env ${x}.env
456 + keepdir /etc/kubernetes/manifests
457 + fi
458 + if [[ $x =~ kubelet|kube-proxy ]]; then
459 + keepdir /var/lib/${x}
460 + fi
461 +# if [[ $x =~ .*apiserver|.*controller-manager|.*scheduler ]]; then
462 +# fowners ${x}:${x} /var/log/${x}
463 +# fi
464 + done
465 +}
466
467 diff --git a/sys-cluster/kubernetes/metadata.xml b/sys-cluster/kubernetes/metadata.xml
468 new file mode 100644
469 index 00000000000..abf38f22972
470 --- /dev/null
471 +++ b/sys-cluster/kubernetes/metadata.xml
472 @@ -0,0 +1,17 @@
473 +<?xml version="1.0" encoding="UTF-8"?>
474 +<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
475 +<pkgmetadata>
476 + <maintainer type="person">
477 + <email>williamh@g.o</email>
478 + <name>William Hubbs</name>
479 + </maintainer>
480 + <use>
481 + <flag name="kubeadm">CLI to bootstrap a secure Kubernetes cluster</flag>
482 + <flag name="kubectl">CLI to run commands against Kubernetes clusters</flag>
483 + <flag name="kubelet">Kubernetes node agent</flag>
484 + <flag name="kube-apiserver">Kubernetes API server</flag>
485 + <flag name="kube-controller-manager">Kubernetes controller manager</flag>
486 + <flag name="kube-proxy">Kubernetes proxy service</flag>
487 + <flag name="kube-scheduler">Kubernetes scheduler</flag>
488 + </use>
489 +</pkgmetadata>