aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLoic Blot <loic.blot@unix-experience.fr>2023-01-17 19:32:43 +0000
committerMikael Urankar <mikael@FreeBSD.org>2023-01-20 11:50:24 +0000
commitdb9dab9d84dd2470d070b9b6e2b387185f132f1e (patch)
treea1e7d80a00ba290434b411aa199fa9a8edd99383
parentf665aa3933ec2173abb4da8aca442e97fb29b18a (diff)
downloadports-db9dab9d84dd2470d070b9b6e2b387185f132f1e.tar.gz
ports-db9dab9d84dd2470d070b9b6e2b387185f132f1e.zip
net/kube-apiserver: Add new port
The Kubernetes API server validates and configures data for the api objects which include pods, services, replicationcontrollers, and others. The API Server services REST operations and provides the frontend to the cluster's shared state through which all other components interact. Note: while testing this as a replacement of a Linux based on my lab, I only saw Webhooks not working due to Kubernetes network mesh not implemented. I added a notice about this for people who want to test it. PR: 267308
-rw-r--r--net/Makefile1
-rw-r--r--net/kube-apiserver/Makefile45
-rw-r--r--net/kube-apiserver/distinfo3
-rwxr-xr-xnet/kube-apiserver/files/kube-apiserver.in24
-rw-r--r--net/kube-apiserver/pkg-descr5
-rw-r--r--net/kube-apiserver/pkg-message12
6 files changed, 90 insertions, 0 deletions
diff --git a/net/Makefile b/net/Makefile
index bacf08db86c3..3cab3a106599 100644
--- a/net/Makefile
+++ b/net/Makefile
@@ -339,6 +339,7 @@
SUBDIR += krill
SUBDIR += ksmtp
SUBDIR += ktnef
+ SUBDIR += kube-apiserver
SUBDIR += kube-controller-manager
SUBDIR += kube-scheduler
SUBDIR += l2tpd
diff --git a/net/kube-apiserver/Makefile b/net/kube-apiserver/Makefile
new file mode 100644
index 000000000000..34bd6be54ca7
--- /dev/null
+++ b/net/kube-apiserver/Makefile
@@ -0,0 +1,45 @@
+PORTNAME= kube-apiserver
+PORTVERSION= 1.26.0
+DISTVERSIONPREFIX= v
+CATEGORIES= net
+
+MAINTAINER= loic.blot@unix-experience.fr
+COMMENT= Kubernetes API service
+WWW= https://github.com/kubernetes/kubernetes
+
+LICENSE= APACHE20
+
+USES= cpe go
+CPE_VENDOR= jenkins
+CPE_PRODUCT= kubernetes
+
+USE_GITHUB= yes
+GH_ACCOUNT= kubernetes
+GH_PROJECT= kubernetes
+
+BUILD_DATE= $$(date +'%Y-%m-%dT%H:%M:%SZ')
+
+GO_PKGNAME= k8s.io/kubernetes
+GO_TARGET= ${GO_PKGNAME}/cmd/kube-apiserver
+GO_BUILDFLAGS= -ldflags="-X k8s.io/kubernetes/vendor/k8s.io/client-go/pkg/version.buildDate=${BUILD_DATE} \
+ -X k8s.io/kubernetes/vendor/k8s.io/component-base/version.buildDate=${BUILD_DATE} \
+ -X k8s.io/client-go/pkg/version.buildDate=${BUILD_DATE} \
+ -X k8s.io/component-base/version.buildDate=${BUILD_DATE} \
+ -X k8s.io/kubernetes/vendor/k8s.io/client-go/pkg/version.gitMinor=${PORTVERSION:R:E} \
+ -X k8s.io/kubernetes/vendor/k8s.io/component-base/version.gitMinor=${PORTVERSION:R:E} \
+ -X k8s.io/client-go/pkg/version.gitMinor=${PORTVERSION:R:E} \
+ -X k8s.io/component-base/version.gitMinor=${PORTVERSION:R:E} \
+ -X k8s.io/kubernetes/vendor/k8s.io/client-go/pkg/version.gitMajor=${PORTVERSION:R:R} \
+ -X k8s.io/kubernetes/vendor/k8s.io/component-base/version.gitMajor=${PORTVERSION:R:R} \
+ -X k8s.io/client-go/pkg/version.gitMajor=${PORTVERSION:R:R} \
+ -X k8s.io/component-base/version.gitMajor=${PORTVERSION:R:R} \
+ -X k8s.io/kubernetes/vendor/k8s.io/client-go/pkg/version.gitVersion=${DISTVERSIONPREFIX}${PORTVERSION} \
+ -X k8s.io/kubernetes/vendor/k8s.io/component-base/version.gitVersion=${DISTVERSIONPREFIX}${PORTVERSION} \
+ -X k8s.io/client-go/pkg/version.gitVersion=${DISTVERSIONPREFIX}${PORTVERSION} \
+ -X k8s.io/component-base/version.gitVersion=${DISTVERSIONPREFIX}${PORTVERSION}"
+
+USE_RC_SUBR= kube-apiserver
+
+PLIST_FILES= bin/${PORTNAME}
+
+.include <bsd.port.mk>
diff --git a/net/kube-apiserver/distinfo b/net/kube-apiserver/distinfo
new file mode 100644
index 000000000000..73ca67366738
--- /dev/null
+++ b/net/kube-apiserver/distinfo
@@ -0,0 +1,3 @@
+TIMESTAMP = 1670573676
+SHA256 (kubernetes-kubernetes-v1.26.0_GH0.tar.gz) = a0de781db6d09d91f39306740420f150c5912606f52e4c9a859649f4313fe508
+SIZE (kubernetes-kubernetes-v1.26.0_GH0.tar.gz) = 40269668
diff --git a/net/kube-apiserver/files/kube-apiserver.in b/net/kube-apiserver/files/kube-apiserver.in
new file mode 100755
index 000000000000..06acf8c90d6a
--- /dev/null
+++ b/net/kube-apiserver/files/kube-apiserver.in
@@ -0,0 +1,24 @@
+#!/bin/sh
+#
+# PROVIDE: kube-apiserver
+# REQUIRE: DAEMON
+# KEYWORD: shutdown
+
+# Add the following lines to /etc/rc.conf to enable kube-apiserver:
+#
+# kube-apiserver_enable="YES"
+
+. /etc/rc.subr
+
+name="kube_apiserver"
+rcvar="kube_apiserver_enable"
+
+load_rc_config $name
+: ${kube_apiserver_enable:=no}
+: ${kube_apiserver_args:="--bind-address=0.0.0.0 --v=2"}
+
+pidfile="/var/run/${name}.pid"
+command="/usr/sbin/daemon"
+command_args="-P ${pidfile} -r -S -t ${name} -T ${name} /usr/local/bin/kube-apiserver ${kube_apiserver_args}"
+
+run_rc_command "$1"
diff --git a/net/kube-apiserver/pkg-descr b/net/kube-apiserver/pkg-descr
new file mode 100644
index 000000000000..dc49c218d62a
--- /dev/null
+++ b/net/kube-apiserver/pkg-descr
@@ -0,0 +1,5 @@
+The Kubernetes API server validates and configures data for the api
+objects which include pods, services, replicationcontrollers,
+and others. The API Server services REST operations and provides
+the frontend to the cluster's shared state through which all other
+components interact.
diff --git a/net/kube-apiserver/pkg-message b/net/kube-apiserver/pkg-message
new file mode 100644
index 000000000000..c7f597251f49
--- /dev/null
+++ b/net/kube-apiserver/pkg-message
@@ -0,0 +1,12 @@
+[
+{ type: install
+ message: <<EOM
+----------------------------------------------------------------------
+Thanks for installing Kubernetes API server on FreeBSD.
+There is a known limitation on kube-apiserver currently:
+* Webhooks cannot work as they require CNI network mesh in most of the
+ deployment. Currently Kubelet hasn't be ported to FreeBSD.
+----------------------------------------------------------------------
+EOM
+}
+]