All of lore.kernel.org
 help / color / mirror / Atom feed
* [meta-virtualization][PATCH] Adding k3s recipe
@ 2020-08-21 20:59 Erik Jansson
  2020-08-21 21:11 ` Bruce Ashfield
  0 siblings, 1 reply; 77+ messages in thread
From: Erik Jansson @ 2020-08-21 20:59 UTC (permalink / raw)
  To: meta-virtualization; +Cc: joakim.roubert, Erik Jansson

Signed-off-by: Erik Jansson <erik.jansson@axis.com>
---
 ...1-Updating-bin-location-to-not-local.patch | 25 +++++
 ...02-Finding-host-local-in-usr-libexec.patch | 25 +++++
 recipes-containers/k3s/k3s/agent.service      | 23 +++++
 .../k3s/k3s/cni-containerd-net.conf           | 24 +++++
 recipes-containers/k3s/k3s/k3s-agent          | 99 +++++++++++++++++++
 recipes-containers/k3s/k3s/k3s-clean          | 24 +++++
 recipes-containers/k3s/k3s/server.service     | 21 ++++
 recipes-containers/k3s/k3s_git.bb             | 74 ++++++++++++++
 8 files changed, 315 insertions(+)
 create mode 100644 recipes-containers/k3s/k3s/0001-Updating-bin-location-to-not-local.patch
 create mode 100644 recipes-containers/k3s/k3s/0002-Finding-host-local-in-usr-libexec.patch
 create mode 100644 recipes-containers/k3s/k3s/agent.service
 create mode 100644 recipes-containers/k3s/k3s/cni-containerd-net.conf
 create mode 100755 recipes-containers/k3s/k3s/k3s-agent
 create mode 100644 recipes-containers/k3s/k3s/k3s-clean
 create mode 100644 recipes-containers/k3s/k3s/server.service
 create mode 100644 recipes-containers/k3s/k3s_git.bb

diff --git a/recipes-containers/k3s/k3s/0001-Updating-bin-location-to-not-local.patch b/recipes-containers/k3s/k3s/0001-Updating-bin-location-to-not-local.patch
new file mode 100644
index 0000000..9876f61
--- /dev/null
+++ b/recipes-containers/k3s/k3s/0001-Updating-bin-location-to-not-local.patch
@@ -0,0 +1,25 @@
+From f007ddd1eb43f43e5b596ef31df91e4ae689ba8b Mon Sep 17 00:00:00 2001
+From: Erik Jansson <erikja@axis.com>
+Date: Mon, 14 Oct 2019 09:57:52 +0200
+Subject: [PATCH] Updating bin location to not local
+
+---
+ k3s.service | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/k3s.service b/k3s.service
+index 94abfb771a..e93a28138f 100644
+--- a/k3s.service
++++ b/k3s.service
+@@ -6,7 +6,7 @@ After=network-online.target
+ [Service]
+ Type=notify
+ EnvironmentFile=/etc/systemd/system/k3s.service.env
+-ExecStart=/usr/local/bin/k3s server
++ExecStart=/usr/bin/k3s server
+ KillMode=process
+ Delegate=yes
+ LimitNOFILE=infinity
+-- 
+2.11.0
+
diff --git a/recipes-containers/k3s/k3s/0002-Finding-host-local-in-usr-libexec.patch b/recipes-containers/k3s/k3s/0002-Finding-host-local-in-usr-libexec.patch
new file mode 100644
index 0000000..9fc81e0
--- /dev/null
+++ b/recipes-containers/k3s/k3s/0002-Finding-host-local-in-usr-libexec.patch
@@ -0,0 +1,25 @@
+From 4faf68d68c97cfd10947e1152f711acc59f39647 Mon Sep 17 00:00:00 2001
+From: Erik Jansson <erikja@axis.com>
+Date: Wed, 16 Oct 2019 15:07:48 +0200
+Subject: [PATCH] Finding host-local in /usr/libexec
+
+---
+ pkg/agent/config/config.go | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/pkg/agent/config/config.go b/pkg/agent/config/config.go
+index b4296f360a..6af9dab895 100644
+--- a/pkg/agent/config/config.go
++++ b/pkg/agent/config/config.go
+@@ -308,7 +308,7 @@ func get(envInfo *cmds.Agent) (*config.Node, error) {
+ 		return nil, err
+ 	}
+ 
+-	hostLocal, err := exec.LookPath("host-local")
++	hostLocal, err := exec.LookPath("/usr/libexec/cni/host-local")
+ 	if err != nil {
+ 		return nil, errors.Wrapf(err, "failed to find host-local")
+ 	}
+-- 
+2.11.0
+
diff --git a/recipes-containers/k3s/k3s/agent.service b/recipes-containers/k3s/k3s/agent.service
new file mode 100644
index 0000000..80bfe40
--- /dev/null
+++ b/recipes-containers/k3s/k3s/agent.service
@@ -0,0 +1,23 @@
+[Unit]
+Description=Lightweight Kubernetes Agent
+Documentation=https://k3s.io
+Requires=containerd.service
+After=containerd.service
+
+[Service]
+Type=notify
+ExecStart=/usr/bin/k3s agent
+ExecStopPost=/usr/bin/k3s-clean
+KillMode=control-group
+Delegate=yes
+LimitNOFILE=infinity
+LimitNPROC=infinity
+LimitCORE=infinity
+TasksMax=infinity
+TimeoutStartSec=0
+TimeoutStopSec=5
+Restart=always
+RestartSec=5s
+
+[Install]
+WantedBy=multi-user.target
\ No newline at end of file
diff --git a/recipes-containers/k3s/k3s/cni-containerd-net.conf b/recipes-containers/k3s/k3s/cni-containerd-net.conf
new file mode 100644
index 0000000..ca434d6
--- /dev/null
+++ b/recipes-containers/k3s/k3s/cni-containerd-net.conf
@@ -0,0 +1,24 @@
+{
+  "cniVersion": "0.4.0",
+  "name": "containerd-net",
+  "plugins": [
+    {
+      "type": "bridge",
+      "bridge": "cni0",
+      "isGateway": true,
+      "ipMasq": true,
+      "promiscMode": true,
+      "ipam": {
+        "type": "host-local",
+        "subnet": "10.88.0.0/16",
+        "routes": [
+          { "dst": "0.0.0.0/0" }
+        ]
+      }
+    },
+    {
+      "type": "portmap",
+      "capabilities": {"portMappings": true}
+    }
+  ]
+}
diff --git a/recipes-containers/k3s/k3s/k3s-agent b/recipes-containers/k3s/k3s/k3s-agent
new file mode 100755
index 0000000..c6cab05
--- /dev/null
+++ b/recipes-containers/k3s/k3s/k3s-agent
@@ -0,0 +1,99 @@
+#!/bin/sh -eu
+
+ENV_CONF=/etc/systemd/system/k3s-agent.service.d/10-env.conf
+
+usage() {
+	echo "
+USAGE:
+    ${0##*/} [OPTIONS]
+OPTIONS:
+    --token value, -t value             Token to use for authentication [\$K3S_TOKEN]
+    --token-file value                  Token file to use for authentication [\$K3S_TOKEN_FILE]
+    --server value, -s value            Server to connect to [\$K3S_URL]
+    --node-name value                   Node name [\$K3S_NODE_NAME]
+    --resolv-conf value                 Kubelet resolv.conf file [\$K3S_RESOLV_CONF]
+    --cluster-secret value              Shared secret used to bootstrap a cluster [\$K3S_CLUSTER_SECRET]
+    -h                                  print this
+"
+}
+
+[ $# -gt 0 ] || {
+	usage
+	exit
+}
+
+case $1 in
+	-*)
+		;;
+	*)
+		usage
+		exit 1
+		;;
+esac
+
+rm -f $ENV_CONF
+mkdir -p ${ENV_CONF%/*}
+echo [Service] > $ENV_CONF
+
+while getopts "t:s:-:h" opt; do
+	case $opt in
+		h)
+			usage
+			exit
+			;;
+		t)
+			VAR_NAME=K3S_TOKEN
+			;;
+		s)
+			VAR_NAME=K3S_URL
+			;;
+		-)
+			[ $# -ge $OPTIND ] || {
+				usage
+				exit 1
+			}
+			opt=$OPTARG
+			eval OPTARG='$'$OPTIND
+			OPTIND=$(($OPTIND + 1))
+			case $opt in
+				token)
+					VAR_NAME=K3S_TOKEN
+					;;
+				token-file)
+					VAR_NAME=K3S_TOKEN_FILE
+					;;
+				server)
+					VAR_NAME=K3S_URL
+					;;
+				node-name)
+					VAR_NAME=K3S_NODE_NAME
+					;;
+				resolv-conf)
+					VAR_NAME=K3S_RESOLV_CONF
+					;;
+				cluster-secret)
+					VAR_NAME=K3S_CLUSTER_SECRET
+					;;
+				help)
+					usage
+					exit
+					;;
+				*)
+					usage
+					exit 1
+					;;
+			esac
+			;;
+		*)
+			usage
+			exit 1
+			;;
+	esac
+    echo Environment=$VAR_NAME=$OPTARG >> $ENV_CONF
+done
+
+chmod 0644 $ENV_CONF
+rm -rf /var/lib/rancher/k3s/agent
+systemctl daemon-reload
+systemctl restart k3s-agent
+systemctl enable k3s-agent.service
diff --git a/recipes-containers/k3s/k3s/k3s-clean b/recipes-containers/k3s/k3s/k3s-clean
new file mode 100644
index 0000000..b726637
--- /dev/null
+++ b/recipes-containers/k3s/k3s/k3s-clean
@@ -0,0 +1,24 @@
+#!/bin/sh -eu
+do_unmount() {
+	[ $# -eq 2 ] || return
+	local mounts=
+	while read ignore mount ignore; do
+		case $mount in
+			$1/*|$2/*)
+				mounts="$mount $mounts"
+				;;
+		esac
+	done </proc/self/mounts
+	[ -z "$mounts" ] || umount $mounts
+}
+
+do_unmount /run/k3s /var/lib/rancher/k3s
+
+ip link show | grep 'master cni0' | while read ignore iface ignore; do
+    iface=${iface%%@*}
+    [ -z "$iface" ] || ip link delete $iface
+done
+
+ip link delete cni0
+ip link delete flannel.1
+rm -rf /var/lib/cni/
\ No newline at end of file
diff --git a/recipes-containers/k3s/k3s/server.service b/recipes-containers/k3s/k3s/server.service
new file mode 100644
index 0000000..02b5446
--- /dev/null
+++ b/recipes-containers/k3s/k3s/server.service
@@ -0,0 +1,21 @@
+[Unit]
+Description=Lightweight Kubernetes
+Documentation=https://k3s.io
+Requires=containerd.service
+After=containerd.service
+
+[Service]
+Type=notify
+ExecStart=/usr/bin/k3s server
+KillMode=process
+Delegate=yes
+LimitNOFILE=infinity
+LimitNPROC=infinity
+LimitCORE=infinity
+TasksMax=infinity
+TimeoutStartSec=0
+Restart=always
+RestartSec=5s
+
+[Install]
+WantedBy=multi-user.target
\ No newline at end of file
diff --git a/recipes-containers/k3s/k3s_git.bb b/recipes-containers/k3s/k3s_git.bb
new file mode 100644
index 0000000..5052613
--- /dev/null
+++ b/recipes-containers/k3s/k3s_git.bb
@@ -0,0 +1,74 @@
+SUMMARY = "Production-Grade Container Scheduling and Management"
+DESCRIPTION = "Lightweight Kubernetes, intended to be a fully compliant Kubernetes."
+HOMEPAGE = "https://k3s.io/"
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://${S}/src/import/LICENSE;md5=2ee41112a44fe7014dce33e26468ba93"
+PV = "v1.18.6+k3s1-dirty"
+
+SRC_URI = "git://github.com/rancher/k3s.git;branch=release-1.18;name=k3s \
+           file://agent.service \
+           file://server.service \
+           file://k3s-agent \
+           file://k3s-clean \
+           file://cni-containerd-net.conf \
+           file://0001-Updating-bin-location-to-not-local.patch;patchdir=src/import \
+           file://0002-Finding-host-local-in-usr-libexec.patch;patchdir=src/import \
+          "
+SRC_URI[k3s.md5sum] = "363d3a08dc0b72ba6e6577964f6e94a5"
+SRCREV_k3s = "6f56fa1d68a5a48b8b6fdefa8eb7ead2015a4b3a"
+
+inherit go
+inherit goarch
+inherit systemd
+
+PACKAGECONFIG = ""
+PACKAGECONFIG[upx] = ",,upx-native"
+GO_IMPORT = "import"
+GO_BUILD_LDFLAGS = "-X github.com/rancher/k3s/pkg/version.Version=${PV} \
+                    -X github.com/rancher/k3s/pkg/version.GitCommit=${@d.getVar('SRCREV_k3s', d, 1)[:8]} \
+                    -w -s \
+                   "
+
+do_compile() {
+        export GOPATH="${S}/src/import/.gopath:${S}/src/import/vendor:${STAGING_DIR_TARGET}/${prefix}/local/go"
+        export CGO_ENABLED="1"
+        export GOFLAGS="-mod=vendor"
+        cd ${S}/src/import
+        ${GO} build -tags providerless -ldflags "${GO_BUILD_LDFLAGS}" -o ./dist/artifacts/k3s ./cmd/server/main.go
+        # Use UPX if it is enabled (and thus exists) to compress binary
+        if command -v upx > /dev/null 2>&1; then
+                upx -9 ./dist/artifacts/k3s
+        fi
+}
+do_install() {
+        install -d "${D}${bindir}"
+        install -m 755 "${S}/src/import/dist/artifacts/k3s" "${D}${bindir}"
+        ln -sr "${D}/${bindir}/k3s" "${D}${bindir}/crictl"
+        ln -sr "${D}/${bindir}/k3s" "${D}${bindir}/ctr"
+        ln -sr "${D}/${bindir}/k3s" "${D}${bindir}/kubectl"
+        if ${@bb.utils.contains('DISTRO_FEATURES','systemd','true','false',d)}; then
+                install -D -m 0644 "${WORKDIR}/server.service" "${D}${systemd_system_unitdir}/k3s.service"
+                install -D -m 0644 "${WORKDIR}/agent.service" "${D}${systemd_system_unitdir}/k3s-agent.service"
+                install -m 755 "${WORKDIR}/k3s-agent" "${D}${bindir}"
+        fi
+        install -m 755 "${WORKDIR}/k3s-clean" "${D}${bindir}"
+        install -D -m 0644 "${WORKDIR}/cni-containerd-net.conf" "${D}/${sysconfdir}/cni/net.d/10-containerd-net.conf"
+}
+
+PACKAGES =+ "${PN}-server ${PN}-agent"
+
+SYSTEMD_PACKAGES = "${@bb.utils.contains('DISTRO_FEATURES','systemd','${PN}-server ${PN}-agent','',d)}"
+SYSTEMD_SERVICE_${PN}-server = "${@bb.utils.contains('DISTRO_FEATURES','systemd','k3s.service','',d)}"
+SYSTEMD_SERVICE_${PN}-agent = "${@bb.utils.contains('DISTRO_FEATURES','systemd','k3s-agent.service','',d)}"
+SYSTEMD_AUTO_ENABLE_${PN}-agent = "disable"
+
+FILES_${PN}-agent = "${bindir}/k3s-agent"
+
+RDEPENDS_${PN} = "cni conntrack-tools coreutils findutils ipset virtual/containerd"
+RDEPENDS_${PN}-server = "${PN}"
+RDEPENDS_${PN}-agent = "${PN}"
+
+RCONFLICTS_${PN} = "kubectl"
+
+INHIBIT_PACKAGE_STRIP = "1"
+INSANE_SKIP_${PN} += "ldflags already-stripped"
-- 
2.20.1


^ permalink raw reply related	[flat|nested] 77+ messages in thread

end of thread, other threads:[~2021-03-15  9:47 UTC | newest]

Thread overview: 77+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
     [not found] <20200821205529.29901-1-erik.jansson@axis.com>
2020-09-21  8:38 ` [meta-virtualization][PATCH] Adding k3s recipe Joakim Roubert
2020-09-21 11:11   ` Bruce Ashfield
2020-09-21 13:15     ` Joakim Roubert
2020-09-24 14:02       ` Bruce Ashfield
2020-09-24 14:46         ` Joakim Roubert
2020-09-24 15:41           ` Bruce Ashfield
2020-09-25  6:20             ` Joakim Roubert
2020-09-25 13:12               ` Bruce Ashfield
2020-09-25 13:50                 ` Joakim Roubert
     [not found]                 ` <16380B0CA000AB98.28124@lists.yoctoproject.org>
2020-09-28 13:48                   ` Joakim Roubert
2020-09-29 19:58                     ` Bruce Ashfield
2020-09-30  8:12                       ` Joakim Roubert
     [not found]                       ` <1639818C3E50A226.8589@lists.yoctoproject.org>
2020-09-30  8:14                         ` Joakim Roubert
2020-10-01 10:32                         ` Joakim Roubert
     [not found]                         ` <1639D7B9311FC65C.18704@lists.yoctoproject.org>
2020-10-01 10:32                           ` Joakim Roubert
2020-10-14 16:38                             ` Bruce Ashfield
2020-10-15 11:40                               ` Joakim Roubert
2020-10-15 11:47                               ` [meta-virtualization][PATCH v4] " Joakim Roubert
2020-10-15 15:02                                 ` Bruce Ashfield
2020-10-20 11:14                                   ` [meta-virtualization][PATCH v5] " Joakim Roubert
2020-10-21  3:10                                     ` Bruce Ashfield
2020-10-21  6:00                                       ` Joakim Roubert
2020-10-26 15:46                                         ` Bruce Ashfield
2020-10-28  8:32                                           ` Joakim Roubert
2020-11-06 21:20                                             ` Bruce Ashfield
2020-11-09  7:48                                               ` Joakim Roubert
2020-11-09  9:26                                                 ` Lance.Yang
2020-11-09 13:45                                                   ` Bruce Ashfield
2020-11-10  8:45                                                     ` Lance Yang
2020-11-09 13:44                                                 ` Bruce Ashfield
2020-11-10  6:43                                           ` Lance Yang
2020-11-10 12:46                                             ` Bruce Ashfield
     [not found]                                             ` <16462648E2B320A8.24110@lists.yoctoproject.org>
2020-11-10 13:17                                               ` Bruce Ashfield
2020-11-12  7:30                                                 ` Lance Yang
2020-11-12 13:38                                                   ` Bruce Ashfield
2020-11-12 14:26                                                     ` [meta-virtualization][PATCH] k3s: Update README.md Joakim Roubert
2020-11-17 12:39                                                     ` [meta-virtualization][PATCH] k3s: Bump to v1.19.3+k3s3 Joakim Roubert
2020-11-17 13:27                                                       ` Bruce Ashfield
2020-11-17 13:31                                                         ` Joakim Roubert
2020-11-17 13:40                                                           ` Bruce Ashfield
2020-11-17 13:50                                                             ` Joakim Roubert
2020-11-17 14:15                                                               ` Bruce Ashfield
     [not found]                                                               ` <16485135E3A12798.28066@lists.yoctoproject.org>
2020-11-17 14:19                                                                 ` Bruce Ashfield
2020-11-17 14:27                                                                   ` Joakim Roubert
2020-11-17 14:41                                                                     ` Bruce Ashfield
     [not found]                                                                     ` <1648529A6FD37D30.5807@lists.yoctoproject.org>
2020-11-17 19:39                                                                       ` Bruce Ashfield
2020-11-18 18:27                                                                         ` Joakim Roubert
2020-11-18 20:38                                                                           ` Bruce Ashfield
2020-12-11  6:31                                                                             ` Lance Yang
2020-12-11 13:43                                                                               ` Bruce Ashfield
2020-12-15  9:56                                                                                 ` Lance Yang
2020-12-15 18:58                                                                                   ` Bruce Ashfield
2020-12-18 14:23                                                                                     ` Joakim Roubert
2020-12-22 16:15                                                                                       ` Bruce Ashfield
2021-01-04  7:12                                                                                         ` Joakim Roubert
2021-01-04 13:40                                                                                           ` Bruce Ashfield
     [not found]                                                                                           ` <16570B29E8680DE8.14857@lists.yoctoproject.org>
2021-01-05 13:58                                                                                             ` Bruce Ashfield
     [not found]                                                     ` <16484BFA14ED0B17.5807@lists.yoctoproject.org>
2020-11-17 13:05                                                       ` Joakim Roubert
2020-11-12 13:43                                                   ` [meta-virtualization][PATCH v5] Adding k3s recipe Joakim Roubert
2020-11-13  5:48                                                     ` Lance Yang
2020-11-13  6:20                                                       ` Bruce Ashfield
2020-11-12 13:40                                                 ` Joakim Roubert
     [not found]                                               ` <164627F27D18DB55.10479@lists.yoctoproject.org>
2020-11-10 13:34                                                 ` Bruce Ashfield
2020-11-11 10:06                                                   ` Lance Yang
2020-11-11 13:40                                                     ` Bruce Ashfield
2020-11-12  7:04                                                       ` Lance Yang
2020-11-12 13:40                                                         ` Bruce Ashfield
2020-11-12 14:07                                                           ` Lance Yang
2020-11-17 14:13                                                         ` Joakim Roubert
2021-03-13 19:30                                                           ` Bruce Ashfield
2021-03-14  4:32                                                             ` Yocto
2021-03-15  9:46                                                             ` Joakim Roubert
2020-10-13 12:22                     ` [meta-virtualization][PATCH] " Bruce Ashfield
2020-08-21 20:59 Erik Jansson
2020-08-21 21:11 ` Bruce Ashfield
2020-08-30  8:17   ` [PATCH] " Robert Berger
2020-08-30 15:40     ` [meta-virtualization] " Bruce Ashfield
2020-09-02  5:51       ` Joakim Roubert

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.