GitOps实践 | 快速在银河麒麟KylinOS国产系统部署最新Harbor企业私有镜像仓库

2023-10-31 17:24:53 浏览数 (1)

0x00 环境部署

1.在银河麒麟(Kylin V10)国产服务操作系统快速安装Docker最新版本

描述: 此处作者准备了两台银河麒麟国产Linux服务器(PS: 国产化是趋势,作为运维打工人也应该紧跟政策)使用Docker容器来安装Gitlab代码仓库以及Harbor镜像仓库,以满足作者企业中GitOps的基础环境,所以首先第一步就是Docker环境的安装。

温馨提示: 若有不了解Docker容器的朋友可以参考作者的针对学习Docker所记录的学习之路系列笔记,关注【全栈工程师修炼指南】回复【Docker学习之路】

Step 1.安装 Docker 的两台麒麟服务器信息,此处作者已经将此主机进行了安全加固以满足等保三级主机安全的要求,有需求的朋友请在下方自取,加固后的麒麟系统登录界面如下所示:

代码语言:javascript复制
[IP 地址] : 10.20.176.250 、 10.20.176.251
[System Info]
  SYSTEM    : Kylin Linux Advanced Server V10 (Lance)
  KERNEL    : Linux 4.19.90-52.25.v2207.ky10.x86_64
  ARCH      : x86_64
  UPTIME    : 0 days 0 hours 48 minutes 18 seconds
  CPU       : Intel(R) Xeon(R) CPU E7-4820 v4 @ 2.00GHz (8 vCPU)
  MEMORY    : 227 MB / 14749 MB (1.54% Used)
  LOAD AVG  : 0.00 (1m), 0.00 (5m), 0.00 (15m)
  PROCESSES : 194 (root), 3 (user), 197 (total)
  USERS     : 1 users logged in
  BASH      : 5.0.18(1)-release

[Disk Usage]
  Mounted: /                                3.0G / 98G (4% Used)
  [============================================================]
  Mounted: /boot                            280M / 1014M (28% Used)
  [============================================================]

安全加固脚本: 【网安等保-国产Linux操作系统银河麒麟KylinOS-V10SP3常规配置、系统优化与安全加固基线实践文档】 安全加固视频: 【网安等保主机安全之KylinOS服务器配置优化与安全加固视频

Step 2.移除系统中可能已经安装的Docker旧版本及其相关依赖组件包,并将官方安装源加入到yum仓库中。

代码语言:javascript复制
# 移除旧版本及其依赖
sudo yum remove docker 
      docker-client 
      docker-client-latest 
      docker-common 
      docker-latest 
      docker-latest-logrotate 
      docker-logrotate 
      docker-engine

# 官方安装源
sudo yum install -y yum-utils
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

# 使用CentOS8版本源(KylinOS 实际上与CentOS8类似,所以使用其源是没有问题的,作者实测过)
echo "8" > /etc/yum/vars/centos_version
sed -i 's/$releasever/$centos_version/g'  /etc/yum.repos.d/docker-ce.repo

Step 3.安装最新的或者指定版本Docker及相关组件。

代码语言:javascript复制
# 方式1.安装最新版本(根据需求选择)
sudo yum install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

# 方式2.浏览可用版本并安装指定版本(生产环境中推荐)
dnf list [软件名] --showduplicates | sort -r | head -n 2
dnf install docker-ce-3:24.0.4-1.el8 docker-ce-cli-1:24.0.4-1.el8 containerd.io-1.6.9-3.1.el8 -y

温馨提示: 若需在执行安装过程中出现如下相似的依赖错误,可以在 /etc/yum.repos.d/docker-ce.repo 文件中添加若下所示的[centos-extras]片段。 错误信息:

代码语言:javascript复制
- nothing provides slirp4netns >= 0.4 needed by docker-ce-rootless-extras-24.0.3-1.el8.x86_64
- nothing provides fuse-overlayfs >= 0.7 needed by docker-ce-rootless-extras-24.0.4-1.el8.x86_64
- nothing provides slirp4netns >= 0.4 needed by docker-ce-rootless-extras-24.0.4-1.el8.x86_64

解决版本: 将下述片段加入到/etc/yum.repos.d/docker-ce.repo 文件头部,然后执行yum update && yum install slirp4netns fuse-overlayfs即可,如果是使用作者提供的安全加固脚本作系统基础镜像的可使用此方式解决,若出现其他错误请自行Google。

代码语言:javascript复制
[centos-extras]
name=Centos extras - $basearch
baseurl=http://mirror.centos.org/centos/7/extras/x86_64
enabled=1
gpgcheck=0

Step 4.Docker Deamon 配置文件示例。

代码语言:javascript复制
# 配置docker后台守护进程
mkdir -vp /etc/docker/
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"data-root":"/var/lib/docker",
"registry-mirrors": ["https://xlx9erfu.mirror.aliyuncs.com"],
"exec-opts": ["native.cgroupdriver=systemd"],
"storage-driver": "overlay2",
"log-driver": "json-file",
"log-level": "warn",
"log-opts": {
  "max-size": "100m",
  "max-file": "10"
},
"live-restore": true,
"dns": ["223.6.6.6","223.6.6.6"],
"insecure-registries": [ "harbor.weiyigeek.top"]
}
EOF

# 重载守护进程
sudo systemctl daemon-reload

Step 5.启动Docker服务及自启动配置。

代码语言:javascript复制
# 设置自动启动即重启Docker服务
sudo systemctl enable docker.service
sudo systemctl restart docker.service

# 查看Docker服务状态
systemctl status docker.service --no-pager -l

Step 6.启动一个 hello-world 容器,验证docker是否正常工作。

代码语言:javascript复制
# banb
docker info
docker run --rm hello-world

偷偷的告诉你哟?极客全栈修炼】微信小程序已开放

可直接在微信里面直接浏览博主文章哟,后续将上线更多有趣的小工具。


Step 7.此外为了部署后面的项目,我们还需要Docker的另外一个小伙伴Docker-compose,方便我们基于配置清单的方式来部署容器,快速安装最新版本的Docker-compose操作如下

Github 项目地址: https://github.com/docker/compose/releases/

代码语言:javascript复制
# 1.Default New Version v2.20.2 (2023年7月19日 17:11:06)
DOCKER_COMPOSE_VERSION=v2.20.2

# 2.Download、Install Docker-Compose
curl -L https://github.com/docker/compose/releases/download/${DOCKER_COMPOSE_VERSION:="v2.16.0"}/docker-compose-"$(uname -s)"-"$(uname -m)" -o /usr/local/bin/docker-compose
chmod  x /usr/local/bin/docker-compose
ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose

# 3.Verify Install
docker-compose version

在KylinOS银河麒麟使用Docker快速安装最新版本的Harbor

描述: Harbor是一个用于存储和分发Docker镜像的企业级Registry服务器,通过添加一些企业必需的功能特性,例如安全、标识和管理等,扩展了开源Docker Distribution。作为一个企业级私有Registry服务器,Harbor提供了更好的性能和安全, 提升用户使用Registry构建和运行环境传输镜像的效率。

项目官网: https://goharbor.io/docs 项目地址: https://github.com/goharbor/harbor/releases

安装部署流程: Step 1.前置准备工作,首先我们需要准备持久化目录以及在Gitub中提前下载Harbor离线安装包,由于国内环境原因下载直接比较慢,建议使用某雷下载(PS: 终极开会员)。

代码语言:javascript复制
# 创建持久化目录
HARBOR_INSTALL=/srv/harbor
HARBOR_CONFIG=/etc/harbor
HARBOR_DATA=/harbor/data
mkdir -vp ${HARBOR_DATA} ${HARBOR_INSTALL} ${HARBOR_CONFIG}/ssl

# 下载harbor离线安装包
HARBOR_VERSION=v2.8.2; HARBOR_PACKAGE=offline
HARBOR_DOWNLOAD="https://github.com/goharbor/harbor/releases/download/${HARBOR_VERSION}/harbor-${HARBOR_PACKAGE}-installer-${HARBOR_VERSION}.tgz"
wget -L ${HARBOR_DOWNLOAD} -O /tmp/harbor-${HARBOR_PACKAGE}-installer-${HARBOR_VERSION}.tgz

# 解压到指定目录
tar xzvf /tmp/harbor-${HARBOR_PACKAGE}-installer-${HARBOR_VERSION}.tgz -C /srv

Step 2.同样,我们也需要准备私有化部署的harbor证书,你可以选择自签(测试环境推荐没有买域名时)或者在腾讯云、阿里云中申请免费的证书(生产环境推荐,需要有自己的域名)或者购买的泛域名证书(生产环境推荐)都是可以的, 此处作者喜欢不用花钱的简单的所以就选择第二种方式,此处作者已经提前准备好harbor所需的ca证书、SSL证书与私钥

腾讯云免费SSL证书申请地址: https://cloud.tencent.com/act/cps/redirect?redirect=10019&cps_key=b33075ae5a2baf3b47e7456ee5821502

提交申请之后大约5~10分钟的样子即可,签发下来此时在证书后点击下载根证书下载(crt文件)以及 Nginx(适用大部分场景)(pem文件、crt文件、key文件),并上传至服务器使用unzip解压,注意此处与上面安装gitlab时不同需要下载CA证书(根证书)后续在客户端连接仓库认证中会使用到。

代码语言:javascript复制
$ unzip harbor.weiyigeek.top_nginx.zip
$ unzip harbor.weiyigeek.top_root.zip

# 将证书放入到持久化目录中 
cp harbor.weiyigeek.top_root/harbor.weiyigeek.top_root.crt ${HARBOR_CONFIG}/ssl/ca.crt
cp harbor.weiyigeek.top_nginx/harbor.weiyigeek.top_bundle.crt ${HARBOR_CONFIG}/ssl/harbor.crt
cp harbor.weiyigeek.top_nginx/harbor.weiyigeek.top.key ${HARBOR_CONFIG}/ssl/harbor.key

# 证书目录权限设置
sudo chmod 755 ${HARBOR_CONFIG}/ssl

自签证书流程官方文档: https://goharbor.io/docs/2.8.0/install-config/configure-https/

Step 3.根据实际情况进行配置harbor的安装部署清单

代码语言:javascript复制
pwd && ls
  # /srv/harbor
  # common.sh  harbor.v2.8.2.tar.gz  harbor.yml.tmpl  install.sh  LICENSE  prepare

# 拷贝示例文件到harbor.yml
cp harbor.yml.tmpl harbor.yml

# 作者的harbor配置示例,请根据实际情况进行更改域名、证书以及密码等相关参数。
egrep -v "^#|^  #|#" harbor.yml | sed '/^$/d'
hostname: harbor.weiyigeek.top
http:
  port: 80
https:
  port: 443
  certificate: /etc/harbor/ssl/harbor.crt
  private_key: /etc/harbor/ssl/harbor.key
harbor_admin_password: Harbor12345
database:
  password: PostgreSQL12345
  max_idle_conns: 100
  max_open_conns: 900
  conn_max_lifetime: 5m
  conn_max_idle_time: 0
data_volume: /harbor/data
trivy:
  ignore_unfixed: false
  skip_update: false
  offline_scan: false
  security_check: vuln
  insecure: false
jobservice:
  max_job_workers: 10
notification:
  webhook_job_max_retry: 3
log:
  level: info
  local:
    rotate_count: 30
    rotate_size: 200M
    location: /var/log/harbor
_version: 2.8.0
proxy:
  http_proxy:
  https_proxy:
  no_proxy:
  components:
    - core
    - jobservice
    - trivy
metric:
  enabled: false
  port: 9090
  path: /metrics
upload_purging:
  enabled: true
  age: 168h
  interval: 24h
  dryrun: false
cache:
  enabled: false
  expire_hours: 24

Step 3.执行/install.sh脚本并指定安装参数并将Harbor部署到系统中。 在 Harbor 部署v2.8.2时,--with-notary、--with-clair和--with-trivy都是安装Harbor时可以选择的参数,它们的作用如下:

with-notary:启用数字签名验证和证书管理功能,确保软件包和镜像的完整性和安全性。 with-clair:启用容器镜像分析功能,可以帮助用户发现并报告潜在的安全漏洞和错误配置,提高镜像的安全性(已被丢弃,deprecated)。 with-trivy:启用容器镜像扫描功能,可以检测镜像中的潜在漏洞和配置错误,并提供相关的修复建议,提高镜像的安全性和质量。

代码语言:javascript复制
$ sudo ./install.sh --with-trivy
[Step 0]: checking if docker is installed ...
[Step 1]: checking docker-compose is installed ...
[Step 2]: loading Harbor images ...
[Step 3]: preparing environment ...
[Step 4]: preparing harbor configs ...
Note: stopping existing Harbor instance ...

[Step 5]: starting Harbor ...
[ ] Running 11/11
 ✔ Network harbor_harbor        Created   0.1s
 ✔ Container harbor-log         Started   0.4s
 ✔ Container registry           Started   0.7s
 ✔ Container redis              Started   1.0s
 ✔ Container harbor-db          Started   1.0s
 ✔ Container harbor-portal      Started   0.8s
 ✔ Container registryctl        Started   0.9s
 ✔ Container trivy-adapter      Started   1.4s
 ✔ Container harbor-core        Started   1.5s
 ✔ Container harbor-jobservice  Started   1.7s
 ✔ Container nginx              Started   1.9s
✔ ----Harbor has been installed and started successfully.----

Step 4.执行docker ps命令查看Harbor各组件的健康状态。

代码语言:javascript复制
docker ps --format 'table {{.ID}} {{.Names}}     {{.Status}}'
  # CONTAINER ID NAMES     STATUS
  # 1f7214a9e933 nginx     Up 8 minutes (healthy)
  # ce80b2b282dd harbor-jobservice     Up 8 minutes (healthy)
  # 59827eb0a868 harbor-core     Up 8 minutes (healthy)
  # 58158ec9905e trivy-adapter     Up 8 minutes (healthy)
  # fc616e986470 harbor-db     Up 8 minutes (healthy)
  # ce555c4024a8 harbor-portal     Up 8 minutes (healthy)
  # f9038a2dee08 registryctl     Up 8 minutes (healthy)
  # d53dcd2cd8a4 registry     Up 8 minutes (healthy)
  # f832561ab64b redis     Up 8 minutes (healthy)
  # 71df4129859c harbor-log     Up 8 minutes (healthy)

Step 5.使用浏览器访问部署的Harbor代码仓库后台界面,使用 admin/Harbor12345 默认账号密码进行登录访问验证,登录后界面以及版本号(v2.8.2-d4c34dcc)如下所示

至此,在KylinOS中使用docker快速安装Harbor完毕.

本文至此完毕,更多技术文章,尽情等待下篇好文!

原文地址: https://blog.weiyigeek.top

0 人点赞