前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Harbor1.9 部署并配置https

Harbor1.9 部署并配置https

原创
作者头像
HaydenGuo
修改2020-02-11 11:19:44
1.7K0
修改2020-02-11 11:19:44
举报
文章被收录于专栏:东隅已逝东隅已逝
为什么要使用https协议

因为不用 https 协议的话,docker 客户端需要修改配置,如果 docker 客户端多的话配置起来就很麻烦。

版本信息
  • OS:CentOS Linux 7.6 Release
  • Docker:18.09.6
  • Docker-compose:1.24.1
  • Harbor:harbor-offline-installer-v1.9.0
  • IP:172.0.0.11

1. 安装docker

1.1 配置repository:
代码语言:javascript
复制
yum install -y yum-utils device-mapper-persistent-data lvm2
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
1.2 安装最新版本docker-ce
代码语言:javascript
复制
yum install -y docker-ce
1.3 配置docker加速
代码语言:javascript
复制
curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://f1361db2.m.daocloud.io
systemctl restart docker.service
1.4 启动docker:
代码语言:javascript
复制
systemctl start docker
systemctl enable docker

2. 安装docker-compose

2.1 下载二进制文件
代码语言:javascript
复制
curl -L "https://github.com/docker/compose/releases/download/1.24.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
  • 如果需要安装其他版本的话,请修改上面命令中的版本号。
2.2 赋予二进制文件可执行权限
代码语言:javascript
复制
chmod +x /usr/local/bin/docker-compose
ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
2.3 根据自己的情况决定是否安装命令补全功能
代码语言:javascript
复制
yum install -y bash-completion 
curl -L https://raw.githubusercontent.com/docker/compose/1.24.1/contrib/completion/bash/docker-compose -o /etc/bash_completion.d/docker-compose
2.4 测试是否安装成功
代码语言:javascript
复制
docker-compose --version

3. harbor开启https

3.1 创建 ca 证书
代码语言:javascript
复制
mkdir -p /data/cert
cd /data/cert
3.2 生成 CAkey
代码语言:javascript
复制
cd /data/cert
openssl genrsa -out ca.key 4096
3.3 生成 CAcrt
代码语言:javascript
复制
cd /data/cert
openssl req -x509 -new -nodes -sha512 -days 3650 \
    -subj "/C=CN/ST=Beijing/L=Beijing/O=chinatelecom/OU=ecloudcaas/CN=172.0.0.11" \
    -key ca.key \
    -out ca.crt
3.4 生成自己域名的 key
代码语言:javascript
复制
cd /data/cert
openssl genrsa -out 172.0.0.11.key 4096
3.5 生成自己域名的 csr
代码语言:javascript
复制
cd /data/cert
openssl req -sha512 -new \
    -subj "/C=CN/ST=Beijing/L=Beijing/O=chinatelecom/OU=ecloudcaas/CN=172.0.0.11" \
    -key 172.0.0.11.key \
    -out 172.0.0.11.csr 
3.6 生成一个 openssl 命令需要的外部配置文件
代码语言:javascript
复制
主要是subjectAltName,这里写的IP.1=yourip还可以写DNS.1=yourdomainname
cd /data/cert
cat > v3.ext <<-EOF
authorityKeyIdentifier=keyid,issuer
basicConstraints=CA:FALSE
keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
extendedKeyUsage = serverAuth 
subjectAltName = @alt_names
[alt_names]
IP=172.0.0.11
EOF
3.7 通过 extcsr 生成 crt
代码语言:javascript
复制
cd /data/cert
openssl x509 -req -sha512 -days 3650 \
    -extfile v3.ext \
    -CA ca.crt -CAkey ca.key -CAcreateserial \
    -in 172.0.0.11.csr \
    -out 172.0.0.11.crt
3.8 将服务端的 crt 转换成客户端用的 cert
代码语言:javascript
复制
cd /data/cert
openssl x509 -inform PEM -in 172.0.0.11.crt -out 172.0.0.11.cert
3.9 将带域名的 certkeyca.crt 拷贝到 docker client 所在主机的 /etc/docker/certs.d/yourdomain/ 目录下
代码语言:javascript
复制
mkdir -p /etc/docker/cert/172.0.0.11
cp /data/cert/172.0.0.11.cert /etc/docker/cert/172.0.0.11/
cp /data/cert/172.0.0.11.key /etc/docker/cert/172.0.0.11/
cp /data/cert/ca.crt /etc/docker/cert/172.0.0.11/
3.10 创建 /etc/docker/daemon
代码语言:javascript
复制
cat > /etc/docker/daemon.json << EOF
{ "insecure-registries":["http://172.0.0.11"] }
EOF
3.11 重启 docker
代码语言:javascript
复制
systemctl daemon-reload
systemctl restart docker

4. 安装 Harbor

4.1 下载 harbor 离线包
代码语言:javascript
复制
mkdir -p /home/harbor/
wget -P /home/harbor/ https://storage.googleapis.com/harbor-releases/release-1.9.0/harbor-offline-installer-v1.9.0.tgz
cd /home/harbor/
tar xf harbor-offline-installer-v1.9.0.tgz
cd /home/harbor/harbor
cp harbor.yml harbor.yml.bak
4.2 修改配置文件
  • 其他地方不修改,只改以下几处:
代码语言:javascript
复制
cd /home/harbor/harbor/
[root@harbor harbor]# egrep -v "^#|^$" harbor.yml|grep -v "#"
https:
   port: 443
   certificate: /home/harbor/cert/172.0.0.11.crt
   private_key: /home/harbor/cert/172.0.0.11.key
4.3 更新参数
代码语言:javascript
复制
cd /home/harbor/harbor/
./prepare   
4.4 安装
代码语言:javascript
复制
cd /home/harbor/harbor/ 
./install
4.5 查看
  • Harbor 的日常运维管理是通过 docker-compose 来完成的,Harbor 本身有多个服务进程,都放在 docker 容器之中运行,可以通过 docker ps 或者 docker-compose 来查看:
代码语言:javascript
复制
cd /home/harbor/harbor/
[root@harbor harbor]# docker-compose ps
       Name                     Command                       State                                        Ports                              
----------------------------------------------------------------------------------------------------------------------------------------------
harbor-adminserver   /harbor/start.sh                 Restarting                                                                              
harbor-core          /harbor/start.sh                 Up (health: starting)                                                                   
harbor-db            /entrypoint.sh postgres          Up (healthy)            5432/tcp                                                        
harbor-jobservice    /harbor/start.sh                 Up                                                                                      
harbor-log           /bin/sh -c /usr/local/bin/ ...   Up (healthy)            127.0.0.1:1514->10514/tcp                                       
harbor-portal        nginx -g daemon off;             Up (healthy)            80/tcp                                                          
nginx                nginx -g daemon off;             Up (healthy)            0.0.0.0:443->443/tcp, 0.0.0.0:4443->4443/tcp, 0.0.0.0:80->80/tcp
redis                docker-entrypoint.sh redis ...   Up                      6379/tcp                                                        
registry             /entrypoint.sh /etc/regist ...   Up (healthy)            5000/tcp                                                        
registryctl          /harbor/start.sh                 Up (healthy)                                                                            
[root@harbor harbor]# 

5. 网页登录和创建项目

  • 在浏览器输入: https://172.0.0.11
  • 默认账号密码: admin / Harbor12345
  • 创建一个项目:os

6. 镜像的推送

6.1 下载官方的 centos 镜像
代码语言:javascript
复制
docker pull centos:7.4.1708
6.2 修改 TAG
代码语言:javascript
复制
docker tag centos:7.4.1708 172.0.0.11/os/centos:7.4.1708
docker images | grep centos
172.0.0.11/os/centos           7.4.1708            3afd47092a0e        2 months ago        197MB
centos                           7.4.1708            3afd47092a0e        2 months ago        197MB
6.3 命令行登录 harbor
代码语言:javascript
复制
cat > /etc/docker/daemon.json << EOF
{ "insecure-registries":["http://172.0.0.11"] }
EOF
systemctl daemon-reload
systemctl restart docker
[root@harbor harbor]# docker login 172.0.0.11
Username: admin
Password: Harbor12345
WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credentials-store
Login Succeeded
6.4 推送镜像到harbor(需要login)
代码语言:javascript
复制
docker push 172.0.0.11/os/centos:7.4.1708
6.5 在 harbor 中查看

7. 镜像的拉取

  • 假设是一台没有登录此 harbordocker 客户端
7.1 创建 /etc/docker/daemon.json 文件
代码语言:javascript
复制
{
  "registry-mirrors": ["https:mirror.ccs.tencentyun.com","https://kuamavit.mirror.aliyuncs.com", "https://registry.docker-cn.com", "https://docker.mirrors.ustc.edu.cn"], 
  "insecure-registries" : ["http://172.0.0.11"],
  "max-concurrent-downloads": 10,
  "log-driver": "json-file",
  "log-level": "warn",
  "log-opts": {
    "max-size": "10m",
    "max-file": "3"
    }
}
7.2 重启Docker生效
代码语言:javascript
复制
systemctl daemon-reload
systemctl restart docker
7.3 拉取 harbor 中的镜像
代码语言:javascript
复制
docker login 172.0.0.11
docker pull 172.0.0.11/os/centos:7.4.1708

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 为什么要使用https协议
  • 版本信息
  • 1. 安装docker
    • 1.1 配置repository:
      • 1.2 安装最新版本docker-ce
        • 1.3 配置docker加速
          • 1.4 启动docker:
          • 2. 安装docker-compose
            • 2.1 下载二进制文件
              • 2.2 赋予二进制文件可执行权限
                • 2.3 根据自己的情况决定是否安装命令补全功能
                  • 2.4 测试是否安装成功
                  • 3. harbor开启https
                    • 3.1 创建 ca 证书
                      • 3.2 生成 CA 的 key
                        • 3.3 生成 CA 的 crt
                          • 3.4 生成自己域名的 key
                            • 3.5 生成自己域名的 csr
                              • 3.6 生成一个 openssl 命令需要的外部配置文件
                                • 3.7 通过 ext 和 csr 生成 crt
                                  • 3.8 将服务端的 crt 转换成客户端用的 cert
                                    • 3.9 将带域名的 cert,key 和 ca.crt 拷贝到 docker client 所在主机的 /etc/docker/certs.d/yourdomain/ 目录下
                                      • 3.10 创建 /etc/docker/daemon
                                        • 3.11 重启 docker
                                        • 4. 安装 Harbor
                                          • 4.1 下载 harbor 离线包
                                            • 4.2 修改配置文件
                                              • 4.3 更新参数
                                                • 4.4 安装
                                                  • 4.5 查看
                                                  • 5. 网页登录和创建项目
                                                  • 6. 镜像的推送
                                                    • 6.1 下载官方的 centos 镜像
                                                      • 6.2 修改 TAG
                                                        • 6.3 命令行登录 harbor
                                                          • 6.4 推送镜像到harbor(需要login)
                                                            • 6.5 在 harbor 中查看
                                                            • 7. 镜像的拉取
                                                              • 7.1 创建 /etc/docker/daemon.json 文件
                                                                • 7.2 重启Docker生效
                                                                  • 7.3 拉取 harbor 中的镜像
                                                                  相关产品与服务
                                                                  容器服务
                                                                  腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
                                                                  领券
                                                                  问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档