【kubernetes篇】使用Harbor仓库管理kubernetes镜像

引言

Docker容器应用的开发和运行离不开可靠的镜像管理,在企业级的Docker Registry管理项目中,一般使用Harbor,它包括权限管理(RBAC)、LDAP、日志审核、管理界面、自我注册、镜像复制和中文支持等功能。

今天就将Harbor仓库的安装和使用做一下整理。本次安装过程按照kubernetes使用时的CA证书来安装。

阅读这篇文章之前,你应当已经理解了DNS服务器的搭建:

【网络篇】如何搭建自己的DNS服务器

一、创建相关证书

1. 下载证书工具

mkdir harbor
cd harbor
wget https://pkg.cfssl.org/R1.2/cfssl_linux-amd64
wget https://pkg.cfssl.org/R1.2/cfssljson_linux-amd64
wget https://pkg.cfssl.org/R1.2/cfssl-certinfo_linux-amd64

【kubernetes篇】使用Harbor仓库管理kubernetes镜像_第1张图片

# 放到PATH路径可以直接使用
mv cfssl_linux-amd64 /usr/local/bin/cfssl
mv cfssljson_linux-amd64 /usr/local/bin/cfssljson
mv cfssl-certinfo_linux-amd64 /usr/local/bin/cfssl-certinfo

2. 创建CA证书

# CA证书请求文件
cat > ca-csr.json <<"EOF"
{
  "CN": "kubernetes",
  "key": {
      "algo": "rsa",
      "size": 2048
  },
  "names": [
    {
      "C": "CN",
      "ST": "Beijing",
      "L": "Beijing",
      "O": "jiangxiaonan",
      "OU": "CN"
    }
  ],
  "ca": {
          "expiry": "87600h"
  }
}
EOF
# 创建ca证书
cfssl gencert -initca ca-csr.json | cfssljson -bare ca

【kubernetes篇】使用Harbor仓库管理kubernetes镜像_第2张图片

3. 配置CA证书策略

cat > ca-config.json <<"EOF"
{
  "signing": {
      "default": {
          "expiry": "87600h"
        },
      "profiles": {
          "kubernetes": {
              "usages": [
                  "signing",
                  "key encipherment",
                  "server auth",
                  "client auth"
              ],
              "expiry": "87600h"
          }
      }
  }
}
EOF

4. 创建harbor证书请求文件

cat > harbor-csr.json <<"EOF"
{
  "CN": "harbor",
  "hosts": [
    "127.0.0.1",
    "192.168.189.30",
    "harbor.kubernetes.com"
  ],
  "key": {
    "algo": "rsa",
    "size": 2048
  },
  "names": [{
    "C": "CN",
    "ST": "Beijing",
    "L": "Beijing",
    "O": "jiangxiaonan",
    "OU": "CN"
  }]
}
EOF

5. 生成harbor证书

cfssl gencert -ca=ca.pem -ca-key=ca-key.pem -config=ca-config.json -profile=kubernetes harbor-csr.json | cfssljson  -bare harbor

【kubernetes篇】使用Harbor仓库管理kubernetes镜像_第3张图片

二、安装harbor

本次我们使用docker-compose的方式运行harbor镜像。

1. docker安装及配置

# 下载docker-ce
wget -O /etc/yum.repos.d/docker-ce.repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
yum install -y yum-utils
# 官网使用的为国外镜像仓库,下载速度会比较慢,我们这里使用国内阿里云镜像仓库。
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
yum -y install docker-ce
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://ae38hood.mirror.aliyuncs.com"]
}
EOF
systemctl enable --now docker
# 重启
systemctl restart docker

详细安装步骤可以参考以下链接:

Docker安装,环境配置说明,阿里云镜像加速配置

2. 安装docker compose

wget https://github.com/docker/compose/releases/download/1.25.0/docker-compose-Linux-x86_64
# 放到PATH路径可以直接使用
mv docker-compose-Linux-x86_64 /usr/bin/docker-compose
# 为二进制文件添加可执行权限
chmod +x /usr/bin/docker-compose
# 检查验证
docker-compose version

【kubernetes篇】使用Harbor仓库管理kubernetes镜像_第4张图片

3. 安装harbor

# 下载harbor
wget https://github.com/goharbor/harbor/releases/download/v2.4.1/harbor-offline-installer-v2.4.1.tgz
# 解压完是一个harbor目录
tar xf harbor-offline-installer-v2.4.1.tgz
# 将证书文件移动到harbor目录下
mv harbor*.pem harbor
cd harbor

cp harbor.yml.tmpl harbor.yml
# 修改harbor配置文件
vi harbor.yml
hostname: harbor.kubernetes.com
http:
  port: 80

https:
  port: 443
  certificate: /root/harbor/harbor/harbor.pem
  private_key: /root/harbor/harbor/harbor-key.pem

【kubernetes篇】使用Harbor仓库管理kubernetes镜像_第5张图片

【kubernetes篇】使用Harbor仓库管理kubernetes镜像_第6张图片

从这里我们也可以看出harbor的端口为80。默认账号admin,密码Harbor12345。

# 执行预备脚本
./prepare
# 执行安装脚本
./install.sh

【kubernetes篇】使用Harbor仓库管理kubernetes镜像_第7张图片

4. 检查验证

本地浏览器登录:

【kubernetes篇】使用Harbor仓库管理kubernetes镜像_第8张图片

【kubernetes篇】使用Harbor仓库管理kubernetes镜像_第9张图片

kubernetes集群内登录:

# 登录
docker login harbor.kubernetes.com
# 退出
docker logout harbor.kubernetes.com

【kubernetes篇】使用Harbor仓库管理kubernetes镜像_第10张图片

说明:如果没有DNS服务器就是用ip地址。

5. harbor在kubernetes中的使用

比如新做了一个nginx镜像,设定标签为harbor.kubernetes.com/library/nginx

# 使用nginx最新版本的镜像重新打标签
docker tag nginx:latest harbor.kubernetes.com/library/nginx:1.0

【kubernetes篇】使用Harbor仓库管理kubernetes镜像_第11张图片

上传到harbor仓库中:

docker push harbor.kubernetes.com/library/nginx:1.0

【kubernetes篇】使用Harbor仓库管理kubernetes镜像_第12张图片

拉取harbor仓库中的镜像:

docker pull harbor.kubernetes.com/library/nginx:1.0

【kubernetes篇】使用Harbor仓库管理kubernetes镜像_第13张图片

说明:镜像的上传拉取镜像必须先登录。

k8s中创建pod拉取镜像时,私有仓库未公开的需要指定凭据secrets才可以拉取,后面我们将详细讲解。

你可能感兴趣的:(k8s,kubernetes,harbor)