鲲鹏服务器 ARMV8架构Harbor-2.3.0编译部署
在X86上部署的是Harbor2.3.0,在鲲鹏服务器测试环境上想部署Harbor发现只有1.10.2以下的资料。
拉了Harbor源码跑了一遍之后发现2.X版本后Harbor引入spectral组件,spectral查看源码部署脚本和Dockerfile发现都是下载git上编译好的二进制文件,该文件是X86的,和ARM不兼容,导致2.3.0以上版本无法在鲲鹏服务器上运行。
以下是编译spectral和部署harbor-V2.3.0版本过程,如果没有再引入新的组件同理可编译至2.6.1版本。
觉得编译麻烦的可以看这篇快速在线安装版本:https://bbs.huaweicloud.com/blogs/384259
一、安装docker-19.03.10
在线获取安装
wget https://download.docker.com/linux/static/stable/aarch64/docker-19.03.10.tgz
tar zxf docker-19.03.10.tgz
cp docker/* /usr/bin
配置docker.service启动文件
编辑docker.service文件
vim /usr/lib/systemd/system/docker.service
添加以下内容
[Unit]
Description=Docker Application Container Engine
Documentation=https://docs.docker.com
After=network-online.target firewalld.service
Wants=network-online.target
[Service]
Type=notify
ExecStart=/usr/bin/dockerd
ExecReload=/bin/kill -s HUP $MAINPID
LimitNOFILE=infinity
LimitNPROC=infinity
TimeoutStartSec=0
Delegate=yes
KillMode=process
Restart=on-failure
StartLimitBurst=3
StartLimitInterval=60s
[Install]
WantedBy=multi-user.target
启动Docker服务进程。
systemctl start docker
查看安装情况,验证是否安装成功。
docker version
二、安装ARM版本的docker-compose-1.22.0
mkdir -p /opt/tools/installed/docker-compose/bin
# 下载
cd /opt/tools/installed/docker-compose/bin
wget https://github.com/ubiquiti/docker-compose-aarch64/releases/download/1.22.0/docker-compose-Linux-aarch64
ln -s docker-compose-Linux-aarch64 docker-compose
chmod u+x docker-compose-Linux-aarch64
更新环境配置
vim /etc/profile
将下面的代码插入到最后一行,并保存退出
DOCKER_COMPOSE_HOME=/opt/tools/installed/docker-compose
PATH=$DOCKER_COMPOSE_HOME/bin:$PATH
export DOCKER_COMPOS
刷新环境变量
source /etc/profile
查看安装情况,验证是否安装成功.
docker-compose -v
Buildx安装
第一步、下载并安装命令
mkdir -pv ~/.docker/cli-plugins/
wget -O ~/.docker/cli-plugins/docker-buildx \
https://github.com/docker/buildx/releases/download/v0.5.1/buildx-v0.5.1.linux-arm64
chmod a+x ~/.docker/cli-plugins/docker-buildx
第二步、设置 experimental 参数
vim ~/.docker/config.json # 如果没有的该文件就创建下
{
"experimental": "enabled"
}
三、编译spectral:
1、环境准备:
1、1安装node:
cd /usr/local/src
wget https://nodejs.org/download/release/v16.0.0/node-v16.0.0-linux-arm64.tar.gz
tar -zxvf node-v10.16.0-linux-arm64.tar.gz
1、2安装yarn:
cd /usr/local/src
wget https://github.com/yarnpkg/yarn/releases/download/v1.22.19/yarn-v1.22.19.tar.gz
tar -xvf yarn-v1.22.19.tar.gz
1.3更新环境配置
vim /etc/profile
将下面的代码插入到最后一行,并保存退出
export PATH=$PATH:/usr/local/src/yarn-v1.22.19/bin:/usr/local/src/node-v16.0.0-linux-arm64/bin
刷新环境配置
source /etc/profile
2、编译ARM版本的spectral:
git clone https://github.com/stoplightio/spectral.git
#切换到harbor依赖的版本,我这是harborV2.3.0,需要spectralv5.9.1
git checkout -b v5.9.1 v5.9.1
cd spectral
yarn
yarn build
yarn workspace @stoplight/spectral-cli pkg . --public --targets node16-linux-arm64 --output ./binaries/spectral
编译完成后在路径
四、编译Redis-5.0.4-2
编译redis-5.0.4-2.aarch64.rpm文件
通过YUM源安装GCC相关软件。
yum -y install gcc gcc-c++ gcc-gfortran.aarch64 libgcc.aarch64 make cmake libtool autoconf automake ant wget git vim
解决-fsigned-char问题(修改gcc)。
- 寻找gcc所在路径(一般位于“/usr/bin/gcc”)。
command -v gcc - 更改原gcc文件的名字(例如改成gcc-impl)。
mv /usr/bin/gcc /usr/bin/gcc-impl - 新建gcc文件。
vi /usr/bin/gcc
填入如下内容保存。
#! /bin/sh
/usr/bin/gcc-impl -fsigned-char “$@” - 给gcc文件添加执行权限。
chmod +x /usr/bin/gcc - 确认GCC是否可用。
gcc --version
解决-fsigned-char问题(修改g++)。
- 寻找g++所在路径(一般位于“/usr/bin/g++”)。
command -v g++ - 更改原g++文件的名字(例如改成g+±impl)。
mv /usr/bin/g++ /usr/bin/g+±impl - 新建g++文件。
vi /usr/bin/g++
填入如下内容保存。
#! /bin/sh
/usr/bin/g+±impl -fsigned-char “$@” - 给g++文件添加执行权限。
chmod +x /usr/bin/g++ - 确认g++是否可用。
g++ --version
步骤1 安装rpmbuild工具。
yum install rpmdevtools
步骤2 创建编译rpm包所需的目录。
mkdir -p ~/rpmbuild/{SOURCES,SPECS}
步骤3 下载redis 5.0.4源码tar包,并放入到的SOURCES目录中。
cd ~/rpmbuild/SOURCES
wget http://download.redis.io/releases/redis-5.0.4.tar.gz
步骤4 进入SPECS路径下,新建spec文件。
cd ~/rpmbuild/SPECS
vi redis.spec
输入i使得文本处于可插入状态,将下述spec文件内容拷贝进redis.spec中,然后按esc
后输入:wq保存退出。
Name: redis
Version: 5.0.4
Release: 2
Summary: A persistent key-value database
License: BSD and MIT
URL: https://redis.io
Source: http://download.redis.io/releases/%{name}-%{version}.tar.gz
%description
Redis is an advanced key-value store. It is often referred to as a dattructure server since keys can contain
strings, hashes
,lists, sets anorted sets.
%prep
%autosetup
sed -i 's/daemonize no/daemonize yes/g' redis.conf
sed -i 's#usr/local#usr#g' ./utils/redis_init_script
sed -i 's#/${REDISPORT}##g' ./utils/redis_init_script
%build
make
%install
%make_install PREFIX=%{buildroot}%{_prefix}
mkdir -p %{buildroot}%{_unitdir}
install -pDm640 %{name}.conf %{buildroot}%{_sysconfdir}/%{name}.conf
%files
%{_bindir}/%{name}-*
%attr(0755, redis, root) %config(noreplace) %{_sysconfdir}/%{name}.conf
%changelog
* Fri Jul 24 2020 -5.0.4-2
- Add service
* Tue Jul 21 2020 -5.0.4-1
- Package init
进入到“rpmbuild/SPECS”路径下执行编译rpm包。
rpmbuild -ba --target=aarch64 redis.spec
编译完成的rpm安装包在“~/rpmbuild/RPMS”目录下。
2)在centos上编译成功的redis-5.0.4-2.aarch64.rpm放在 make/photon/redis目录下。然后修改基础镜像文件Dockerfile.base。
cp ~/rpmbuild/RPMS/aarch64/redis-5.0.4-2.aarch64.rpm make/photon/redis/
vim make/photon/redis/Dockerfile.base
FROM photon:4.0
COPY redis-5.0.4-2.aarch64.rpm /home/
RUN tdnf install -y createrepo_c sudo \
&& createrepo_c /home/ \
&& echo -e "[ph3]\nname=ph3\nbaseurl=file:///home/\ngpgcheck=0\nenabled=1" > /etc/yum.repos.d/ph3.repo \
&& sed -i 's/enabled=1/enabled=0/g' /etc/yum.repos.d/photon-updates.repo \
&& tdnf install -y redis \
&& sed -i 's/enabled=0/enabled=1/g' /etc/yum.repos.d/photon-updates.repo \
&& rm -rf /home/* /etc/yum.repo.d/ph3.repo
五、安装harbor-2.3.0版本
git clone https://github.com/goharbor/harbor-arm.git
cd harbor-arm && make download
刷新配置
make prepare_arm_data
make pre_update
Compile harbor 组件和修改配置内的版本号:
make compile COMPILETAG=compile_golangimage
sed -i ‘s#:dev-arm#:v2.3.0#g’ make/photon/prepare/version
build harbor arm版本镜像:
make build GOBUILDTAGS=“include_oss include_gcs” BUILDBIN=true NOTARYFLAG=true TRIVYFLAG=true CHARTFLAG=true GEN_TLS=true PULL_BASE_FROM_DOCKERHUB=false
安装harbor
cd src/github.com/goharbor/harbor/make
cp harbor.yml.tmpl harbor.yml
配置harbor域名或相关配置,我这关闭https注释相关配置
vim harbor.yml
hostname: 190.XXX.123.97
···
https:
# https port for harbor, default is 443
#port: 443
# The path of cert and key files for nginx
#certificate: /your/certificate/path
#private_key: /your/private/key/path
执行安装
sh install.sh
导出离线安装包(可选)
make package_offline GOBUILDTAGS=“include_oss include_gcs” BUILDBIN=true NOTARYFLAG=true TRIVYFLAG=true CHARTFLAG=true GEN_TLS=true PULL_BASE_FROM_DOCKERHUB=false
完成后会在当前目录下生成harbor_offline_installer_xxx.tgz离线安装包,解压执行安装脚本即可部署harbor
tar -xvf harbor_offline_installer_xxx.tgz && cd harbor
sh install.sh
浏览器输入IP就能访问harbor了
至此教程结束
参考文档:
Docker安装:https://www.hikunpeng.com/document/detail/zh/kunpengcpfs/ecosystemEnable/Docker/kunpengdocker_03_0004.html
docker-compose安装:https://github.com/ubiquiti/docker-compose-aarch64/releases/tag/1.22.0
Redis安装:https://ic-openlabs.huawei.com/chat/download/Redis 5.0.4 移植指南(CentOS 7.6 & openEuler 20.03).pdf
harbor安装:https://blog.51cto.com/u_7075695/5214498#harborarm__6
- 点赞
- 收藏
- 关注作者
评论(0)