init kubeedge rpm build source
This commit is contained in:
parent
f12277172e
commit
bfd6b469c4
85
0001-rpminstaller-add-support-for-openEuler.patch
Normal file
85
0001-rpminstaller-add-support-for-openEuler.patch
Normal file
@ -0,0 +1,85 @@
|
||||
From 8278a8637da3f4572c2310ecf1e137f802bcdbc4 Mon Sep 17 00:00:00 2001
|
||||
From: CooperLi <a710905118@163.com>
|
||||
Date: Tue, 31 Aug 2021 20:51:09 +0800
|
||||
Subject: [PATCH] rpminstaller:add support for openEuler
|
||||
|
||||
keadm will install epel-release when edge node want to join cluster,
|
||||
openEuler does not provide epel-release, it's better to support keadm
|
||||
join on openEuler ^.^
|
||||
|
||||
openEuler is an innovative platform nurtured by community collaboration.
|
||||
It aims to build a unified and open OS that supports multiple processor architectures,
|
||||
and to advance the hardware/software application ecosystem.
|
||||
|
||||
Signed-off-by: CooperLi <a710905118@163.com>
|
||||
---
|
||||
keadm/cmd/keadm/app/cmd/util/rpminstaller.go | 32 ++++++++++++++++++--
|
||||
1 file changed, 29 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/keadm/cmd/keadm/app/cmd/util/rpminstaller.go b/keadm/cmd/keadm/app/cmd/util/rpminstaller.go
|
||||
index 24a55042..0e8fa4b8 100644
|
||||
--- a/keadm/cmd/keadm/app/cmd/util/rpminstaller.go
|
||||
+++ b/keadm/cmd/keadm/app/cmd/util/rpminstaller.go
|
||||
@@ -18,12 +18,17 @@ package util
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
+ "strings"
|
||||
|
||||
"github.com/blang/semver"
|
||||
|
||||
types "github.com/kubeedge/kubeedge/keadm/cmd/keadm/app/cmd/common"
|
||||
)
|
||||
|
||||
+const (
|
||||
+ openEulerVendorName = "openEuler"
|
||||
+)
|
||||
+
|
||||
// RpmOS struct objects shall have information of the tools version to be installed
|
||||
// on Hosts having RpmOS OS.
|
||||
// It implements OSTypeInstaller interface
|
||||
@@ -51,13 +56,24 @@ func (r *RpmOS) InstallMQTT() error {
|
||||
return nil
|
||||
}
|
||||
|
||||
- // install MQTT
|
||||
- for _, command := range []string{
|
||||
+ commands := []string{
|
||||
"yum -y install epel-release",
|
||||
"yum -y install mosquitto",
|
||||
"systemctl start mosquitto",
|
||||
"systemctl enable mosquitto",
|
||||
- } {
|
||||
+ }
|
||||
+
|
||||
+ vendorName, err := getOSVendorName()
|
||||
+ if err != nil {
|
||||
+ fmt.Printf("Get OS vendor name failed: %v\n", err)
|
||||
+ }
|
||||
+ // epel-release package does not included in openEuler
|
||||
+ if vendorName == openEulerVendorName {
|
||||
+ commands = commands[1:]
|
||||
+ }
|
||||
+
|
||||
+ // install MQTT
|
||||
+ for _, command := range commands {
|
||||
cmd := NewCommand(command)
|
||||
if err := cmd.Exec(); err != nil {
|
||||
return err
|
||||
@@ -116,3 +132,13 @@ func (r *RpmOS) IsKubeEdgeProcessRunning(proc string) (bool, error) {
|
||||
func (r *RpmOS) IsProcessRunning(proc string) (bool, error) {
|
||||
return isKubeEdgeProcessRunning(proc)
|
||||
}
|
||||
+
|
||||
+func getOSVendorName() (string, error) {
|
||||
+ cmd := NewCommand("cat /etc/os-release | grep -E \"^NAME=\" | awk -F'=' '{print $2}'")
|
||||
+ if err := cmd.Exec(); err != nil {
|
||||
+ return "", err
|
||||
+ }
|
||||
+ vendor := strings.Trim(cmd.GetStdOut(), "\"")
|
||||
+
|
||||
+ return vendor, nil
|
||||
+}
|
||||
--
|
||||
2.27.0
|
||||
|
||||
167
kubeedge.spec
Normal file
167
kubeedge.spec
Normal file
@ -0,0 +1,167 @@
|
||||
%ifarch x86_64
|
||||
%global gohostarch amd64
|
||||
%endif
|
||||
%ifarch aarch64
|
||||
%global gohostarch arm64
|
||||
%endif
|
||||
|
||||
%define debug_package %{nil}
|
||||
|
||||
Name: kubeedge
|
||||
Version: 1.8.0
|
||||
Release: 1
|
||||
Summary: Kubernetes Native Edge Computing Framework
|
||||
License: Apache-2.0
|
||||
URL: https://github.com/kubeedge/kubeedge
|
||||
Source0: https://github.com/kubeedge/kubeedge/archive/refs/tags/v%{version}.tar.gz
|
||||
BuildRequires: golang glibc-static make tar systemd git
|
||||
Requires: mosquitto
|
||||
|
||||
Patch0001: 0001-rpminstaller-add-support-for-openEuler.patch
|
||||
|
||||
%description
|
||||
KubeEdge is an open source system for extending native containerized application
|
||||
orchestration capabilities to hosts at Edge. It is built upon kubernetes and provides
|
||||
fundamental infrastructure support for network, app, deployment and metadata
|
||||
synchronization between cloud and edge.
|
||||
|
||||
%package keadm
|
||||
Summary: Keadm is used to install the cloud and edge components of KubeEdge.
|
||||
Provides: keadm = %{version}
|
||||
|
||||
%description keadm
|
||||
Keadm is used to install the cloud and edge components of KubeEdge.
|
||||
It is not responsible for installing K8s and runtime.
|
||||
|
||||
%package cloudcore
|
||||
Summary: KubeEdge Cloud Agent (CloudCore)
|
||||
Provides: cloudcore = %{version}
|
||||
Provides: admission = %{version}
|
||||
Provides: csidriver = %{version}
|
||||
|
||||
%description cloudcore
|
||||
KubeEdge is built upon Kubernetes and extends native containerized application
|
||||
orchestration and device management to hosts at the Edge. It consists of cloud
|
||||
part and edge part, provides core infrastructure support for networking,
|
||||
application deployment and metadata synchronization between cloud and edge.
|
||||
This package contains the cloudcore binary for the cloud node.
|
||||
|
||||
%package edgecore
|
||||
Summary: KubeEdge Lightweight Edge Agent (EdgeCore)
|
||||
Provides: edgecore = %{version}
|
||||
|
||||
%description edgecore
|
||||
KubeEdge is built upon Kubernetes and extends native containerized application
|
||||
orchestration and device management to hosts at the Edge. It consists of cloud
|
||||
part and edge part, provides core infrastructure support for networking,
|
||||
application deployment and metadata synchronization between cloud and edge.
|
||||
This package contains the edgecore binary for the edge node.
|
||||
|
||||
%package edgesite
|
||||
Summary: A GRPC agent/server
|
||||
Provides: edgesite-agent = %{version}
|
||||
Provides: edgesite-server = %{version}
|
||||
|
||||
%description edgesite
|
||||
edgesite-agent is a gRPC agent. Connects to the proxy and then allows traffic to be forwarded to it.
|
||||
edgesite-server is a gRPC proxy server, receives requests from the API server and forwards to the agent.
|
||||
|
||||
%prep
|
||||
%autosetup -Sgit -n %{name}-%{version} -p1
|
||||
|
||||
%build
|
||||
# add git tag since tarball did not contain any git info
|
||||
git tag -a v%{version} -m "%{version}"
|
||||
# setup GOPATH
|
||||
export GOPATH=%{_builddir}
|
||||
%global workspace $GOPATH/src/github.com/%{name}/%{name}
|
||||
mkdir -p $GOPATH/src/github.com/%{name}
|
||||
ln -sf $PWD $GOPATH/src/github.com/%{name}/%{name}
|
||||
# start to build
|
||||
cd %{workspace}
|
||||
# set go flags
|
||||
export GOLDFLAGS="-buildid=none -buildmode=pie -extldflags=-ftrapv -extldflags=-zrelro -extldflags=-znow -linkmode=external -extldflags=-static"
|
||||
# build binaries
|
||||
make all
|
||||
# build csidriver
|
||||
# TODO: delete after PR3154 is merged in new release(not included in v1.8.0)
|
||||
go build -v -o _output/local/bin/csidriver -ldflags="${GOLDFLAGS}" github.com/kubeedge/kubeedge/cloud/cmd/csidriver
|
||||
|
||||
%install
|
||||
export GOPATH=%{_builddir}
|
||||
cd %{workspace}
|
||||
# create directories
|
||||
install -dm0750 %{buildroot}%{_sysconfdir}/kubeedge
|
||||
install -dm0750 %{buildroot}%{_sysconfdir}/kubeedge/config
|
||||
install -dm0750 %{buildroot}%{_sysconfdir}/kubeedge/tools
|
||||
# install binaries
|
||||
install -Dpm0550 ./_output/local/bin/keadm %{buildroot}%{_prefix}/local/bin/keadm
|
||||
install -Dpm0550 ./_output/local/bin/cloudcore %{buildroot}%{_prefix}/local/bin/cloudcore
|
||||
install -Dpm0550 ./_output/local/bin/edgecore %{buildroot}%{_prefix}/local/bin/edgecore
|
||||
install -Dpm0550 ./_output/local/bin/admission %{buildroot}%{_prefix}/local/bin/admission
|
||||
install -Dpm0550 ./_output/local/bin/csidriver %{buildroot}%{_prefix}/local/bin/csidriver
|
||||
install -Dpm0550 ./_output/local/bin/edgesite-agent %{buildroot}%{_prefix}/local/bin/edgesite-agent
|
||||
install -Dpm0550 ./_output/local/bin/edgesite-server %{buildroot}%{_prefix}/local/bin/edgesite-server
|
||||
# generate default configs for both cloudcore and edgecore
|
||||
./_output/local/bin/cloudcore --defaultconfig > cloudcore.example.yaml
|
||||
./_output/local/bin/edgecore --defaultconfig > edgecore.example.yaml
|
||||
install -Dpm0640 ./cloudcore.example.yaml %{buildroot}%{_sysconfdir}/kubeedge/config/cloudcore.example.yaml
|
||||
install -Dpm0640 ./edgecore.example.yaml %{buildroot}%{_sysconfdir}/kubeedge/config/edgecore.example.yaml
|
||||
# service file for systemd
|
||||
install -Dpm0640 ./build/tools/cloudcore.service %{buildroot}%{_unitdir}/cloudcore.service
|
||||
install -Dpm0640 ./build/tools/edgecore.service %{buildroot}%{_unitdir}/edgecore.service
|
||||
# install service file in /etc/kubeedge/ as well so that no need to download from internet when they use keadm
|
||||
install -Dpm0640 ./build/tools/cloudcore.service %{buildroot}%{_sysconfdir}/kubeedge/cloudcore.service
|
||||
install -Dpm0640 ./build/tools/edgecore.service %{buildroot}%{_sysconfdir}/kubeedge/edgecore.service
|
||||
# crd yamls for kubernetes
|
||||
cd ./build && find ./crds -type f -exec install -Dm0644 {} %{buildroot}%{_sysconfdir}/kubeedge/{} \; && cd -
|
||||
# tool for certificate generation
|
||||
install -Dpm0550 ./build/tools/certgen.sh %{buildroot}%{_sysconfdir}/kubeedge/tools/certgen.sh
|
||||
# construct tarball used for keadm
|
||||
%global tarball_name %{name}-v%{version}-linux-%{gohostarch}
|
||||
install -Dpm0550 ./_output/local/bin/cloudcore %{tarball_name}/cloud/cloudcore/cloudcore
|
||||
install -Dpm0550 ./_output/local/bin/admission %{tarball_name}/cloud/admission/admission
|
||||
install -Dpm0550 ./_output/local/bin/csidriver %{tarball_name}/cloud/csidriver/csidriver
|
||||
install -Dpm0550 ./_output/local/bin/edgecore %{tarball_name}/edge/edgecore
|
||||
# like cp -r, but have filemode control here
|
||||
cd ./build && find ./crds -type f -exec install -Dpm0644 {} ../%{tarball_name}/{} \; && cd -
|
||||
echo "v%{version}" > %{tarball_name}/version
|
||||
tar zcf %{tarball_name}.tar.gz %{tarball_name}
|
||||
# checksum for tarball
|
||||
sha512sum %{tarball_name}.tar.gz | awk '{print $1}' > checksum_%{tarball_name}.tar.gz.txt
|
||||
# install tarball
|
||||
install -Dpm0550 %{tarball_name}.tar.gz %{buildroot}%{_sysconfdir}/kubeedge/%{tarball_name}.tar.gz
|
||||
install -Dpm0550 checksum_%{tarball_name}.tar.gz.txt %{buildroot}%{_sysconfdir}/kubeedge/checksum_%{tarball_name}.tar.gz.txt
|
||||
|
||||
%files keadm
|
||||
%license LICENSE
|
||||
%{_prefix}/local/bin/keadm
|
||||
%{_sysconfdir}/kubeedge/cloudcore.service
|
||||
%{_sysconfdir}/kubeedge/edgecore.service
|
||||
%{_sysconfdir}/kubeedge/%{tarball_name}.tar.gz
|
||||
%{_sysconfdir}/kubeedge/checksum_%{tarball_name}.tar.gz.txt
|
||||
|
||||
%files cloudcore
|
||||
%license LICENSE
|
||||
%{_prefix}/local/bin/cloudcore
|
||||
%{_prefix}/local/bin/admission
|
||||
%{_prefix}/local/bin/csidriver
|
||||
%{_unitdir}/cloudcore.service
|
||||
%{_sysconfdir}/kubeedge/crds
|
||||
%{_sysconfdir}/kubeedge/tools/certgen.sh
|
||||
%config(noreplace) %{_sysconfdir}/kubeedge/config/cloudcore.example.yaml
|
||||
|
||||
%files edgecore
|
||||
%license LICENSE
|
||||
%{_prefix}/local/bin/edgecore
|
||||
%{_unitdir}/edgecore.service
|
||||
%config(noreplace) %{_sysconfdir}/kubeedge/config/edgecore.example.yaml
|
||||
|
||||
%files edgesite
|
||||
%license LICENSE
|
||||
%{_prefix}/local/bin/edgesite-agent
|
||||
%{_prefix}/local/bin/edgesite-server
|
||||
|
||||
%changelog
|
||||
* Thu Sep 18 2021 Poorunga<2744323@qq.com> - 1.8.0-1
|
||||
- Package init
|
||||
BIN
v1.8.0.tar.gz
Normal file
BIN
v1.8.0.tar.gz
Normal file
Binary file not shown.
Loading…
x
Reference in New Issue
Block a user