Kubernetes集群搭建之企业级环境中基于Harbor搭建自己的私有仓库
搭建背景
企业环境中使用Docker环境,一般出于安全考虑,业务使用的镜像一般不会从第三方公共仓库下载。那么就要引出今天的主题
企业级环境中基于Harbor搭建自己的安全认证仓库
介绍
名称:Harbor
官网:https://github.com/vmware/harbor
简介:Harbor是一个用于存储和分发Docker镜像的企业级Registry服务器,通过添加一些企业必需的功能特性,例如安全、标识和管理等,扩展了开源Docker Distribution。作为一个企业级私有Registry服务器,Harbor提供了更好的性能和安全。提升用户使用Registry构建和运行环境传输镜像的效率。Harbor支持安装在多个Registry节点的镜像资源复制,镜像全部保存在私有Registry中, 确保数据和知识产权在公司内部网络中管控。另外,Harbor也提供了高级的安全特性,诸如用户管理,访问控制和活动审计等。
部署Harbor
Harbor是基于Docker-Compose进行编排的,需要配合Docker和Docker-compose使用。Docker的安装可以看我的另一篇文章
下载Docker-Compose最新稳定版
[root@harbor-01 hub]# pwd/opt/hub[root@harbor-01 hub]# curl -L https://github.com/docker/compose/releases/download/1.23.2/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
ps: 可能会报错Peer reports incompatible or unsupported protocol version.,升级下curl就行
添加可执行权限
[root@harbor-01 hub]# chmod +x /usr/local/bin/docker-compose
验证版本
[root@harbor-01 hub]# docker-compose -vdocker-compose version 1.23.2, build 1110ad01
解压安装包
[root@harbor-01 hub]# ls-rw-r--r-- 1 root root 541535889 Mar 4 18:52 harbor-offline-installer-v1.7.3.tgz[root@harbor-01 hub]# tar xf harbor-offline-installer-v1.7.3.tgz
修改配置
主要修改hostname字段配置
[root@harbor-01 hub]# cd harbor/[root@harbor-01 hub]# vim harbor.cfghostname = hub.test.tech # 本机外网IP或域名,该地址供用户通过UI进行访问,不要使用127.0.0.1ui_url_protocol = http # 用户访问私仓时使用的协议,默认时httpdb_password = root123 # 指定mysql数据库管理员密码harbor_admin_password:Harbor12345 # harbor的管理员账户密码
通过官方一键脚本安装
[root@harbor-01 hub]#./install.sh......[Step 4]: starting Harbor ...Creating network "harbor_harbor" with the default driverCreating harbor-log ... doneCreating harbor-db ... doneCreating registryctl ... doneCreating registry ... doneCreating harbor-adminserver ... doneCreating redis ... doneCreating harbor-core ... doneCreating harbor-portal ... doneCreating harbor-jobservice ... doneCreating nginx ... done✔ ----Harbor has been installed and started successfully.----Now you should be able to visit the admin portal at http://hub.test.tech. For more details, please visit https://github.com/goharbor/harbor .
测试登陆
[root@harbor-01 harbor]# docker login hub.test.techUsername: adminPassword: WARNING! Your password will be stored unencrypted in /root/.docker/config.json.Configure a credential helper to remove this warning. Seehttps://docs.docker.com/engine/reference/commandline/login/#credentials-storeLogin Succeeded
在windows上用域名访问需要绑定下hosts即可
默认账号密码 admin Harbor12345
使用
我这里创建个mytest的公开项目做测试(不使用默认的library)。公开项目pull不需要登录,push需要登录
接下来我们试下推个镜像到Harbor的mytest项目中,这里我以公共镜像goharbor/nginx-photon:v1.7.3镜像为例 ,需要注意的是要往私有仓库推镜像就得打个tag才行 指明要推往哪个仓库并标注标签
注意:我这里使用的这个域名是自定义的,那么需要在需要上传下载镜像的机器上添加hosts绑定,因为我这没开启https所有也要修改docker配置
[root@harbor-01 ~]# cat /etc/docker/daemon.json {"insecure-registries": ["hub.test.tech"]}
重启docker即可
[root@harbor-01 harbor]# docker images|grep nginx-photongoharbor/nginx-photon v1.7.3 9d8222585538 3 weeks ago 35.6MB[root@hub harbor]# docker tag goharbor/nginx-photon:v1.7.3 hub.test.tech/mytest/nginx-photon:v1[root@harbor-01 harbor]# docker push hub.test.tech/mytest/nginx-photon:v1The push refers to repository [hub.test.tech/mytest/nginx-photon]f08bfdb20f6f: Pushed 8e45c790c209: Pushed v1: digest: sha256:03d473217d79c40c3b4e0d6015098f8d16364707980e12b5e7330ac76938d16a size: 739
可以看到push成功,我们去页面上看看
pull演示
点击镜像详情可以看到具体标签版本,鼠标放在"pull命令"图标上可以获取命令
[root@harbor-01 harbor]# docker pull hub.test.tech/mytest/nginx-photon:v1v1: Pulling from mytest/nginx-photonDigest: sha256:03d473217d79c40c3b4e0d6015098f8d16364707980e12b5e7330ac76938d16aStatus: Downloaded newer image for hub.test.tech/mytest/nginx-photon:v1
本篇介绍了Harbor的基本部署和使用,更多高级使用方法后续会分享。下一章介绍部署Etcd集群,敬请期待,谢谢!
往期文章一览
END
如果你觉得文章还不错,请大家点『好看』分享下。你的肯定是我最大的鼓励和支持。
Kubernetes集群搭建之企业级环境中基于Harbor搭建自己的私有仓库的更多相关文章
- 企业运维实践-丢弃手中的 docker build , 使用Kaniko直接在Kubernetes集群或Containerd环境中快速进行构建推送容器镜像
关注「WeiyiGeek」公众号 设为「特别关注」每天带你玩转网络安全运维.应用开发.物联网IOT学习! 希望各位看友[关注.点赞.评论.收藏.投币],助力每一个梦想. 本章目录 目录 首发地址: h ...
- 二,kubernetes集群的安装初始化
目录 部署 集群架构示意图 部署环境 kubernetes集群部署步骤 基础环境 基础配置 安装基础组件 配置yum源 安装组件 初始化 master 设置docker和kubelet为自启动(nod ...
- K8S从入门到放弃系列-(16)Kubernetes集群Prometheus-operator监控部署
Prometheus Operator不同于Prometheus,Prometheus Operator是 CoreOS 开源的一套用于管理在 Kubernetes 集群上的 Prometheus 控 ...
- kubeadm 搭建kubernetes集群环境
需求 kubeadm 搭建kubernetes集群环境 准备条件 三台VPS(本文使用阿里云香港 - centos7.7) 一台能SSH连接到VPS的本地电脑 (推荐连接工具xshell) 安装步骤 ...
- Kubernetes集群搭建过程中遇到的问题
1. 创建Nginx Pod过程中报如下错误: #kubectlcreate -f nginx-pod.yaml Error from server: error when creating &quo ...
- Kubernetes 集群中使用 Helm 搭建 Spinnaker
在我们部署Spinnaker之前,我们需要一个YAML格式的配置文件,它会包含了一些配置信息.可以从Spinnaker Helm Chart repository[2]获得这个文件. $curl -L ...
- Kubernetes — 从0到1:搭建一个完整的Kubernetes集群
准备工作 首先,准备机器.最直接的办法,自然是到公有云上申请几个虚拟机.当然,如果条件允许的话,拿几台本地的物理服务器来组集群是最好不过了.这些机器只要满足如下几个条件即可: 满足安装 Docker ...
- Kubernetes集群搭建之系统初始化配置篇
Kubernetes的几种部署方式 1. minikube Minikube是一个工具,可以在本地快速运行一个单点的Kubernetes,尝试Kubernetes或日常开发的用户使用.不能用于生产环境 ...
- kubernetes集群搭建(2):docker私有仓库
kubernetes集群搭建(1):环境准备 中各节点已经安装好了docker,请确认docker已启动并正常运行 1.通过命令启动私库 docker run -d -p 5000:5000 --pr ...
随机推荐
- 在Java的Condition接口【唤醒全部线程】
在Java的Condition接口中,存在的几个方法跟Synchronized中的wait(),waitall(),wait(time ^),这个几个方法一一对应起来,但是在Lock.newCondi ...
- python基础入门之对文件的操作
**python**文件的操作1.打开文件 打开文件:open(file,mode='r') file:操作文件的路径加文件名 #绝对路径:从根目录开始的 #相对路径:从某个路径开始 mode:操作文 ...
- 字符串API练习三则
(1)按照Ascii码字典的顺序排列字符串.核心API:int compareTo(String),若大于则返回1,小于返回-1,等于返回0. class StringArray { static v ...
- org.apache.commons.httpclient工具类
import org.apache.commons.httpclient.DefaultHttpMethodRetryHandler; import org.apache.commons.httpcl ...
- kettle连接oracle报错oracle.i18n.text.converter.CharacterConverter.OGS.getInstance(I)Loracle/i18n/text/converter/CharacterConverter
问题背景1:需要将一张excel中的数据导入到数据库中,并且还有关联转换和去重的处理问题,且此excel表不是固定的,需要写一个脚本 当新的excel拿来的时候,可以直接导入即可.所以我想用kettl ...
- Linux环境下Flask部署至apache
https://blog.csdn.net/rainbowlemonade/article/details/79725328
- Linux学习---自定义数据类型
struct 结构体 (地址递增) eg:struct myabc{ unsigned int a; unsigned int b; unsigned int c; unsigned int d; ...
- CPU芯片哪家强?电视处理器这么选就对了!
任何智能设备,CPU(Central Processing Unit/中央处理器)都是决定其性能优劣的核心组件,在家电界,最为人们熟知的CPU厂商就是Mstar以及Amlogic这两个品牌了,那两个品 ...
- 解决更新ssh后在/etc/init.d下无sshd的问题
1.将远程服务器的/etc/init.d/ssd 文件拷贝到本地 scp /etc/init.d/ssh root@IP地址:/etc/init.d 2.vi /etc/init.d/sshd 3 ...
- python线程——创建和启动
可以通过实例化一个threading.Thread()对象来创建子线程. import threading import time def listen_music(num): print(" ...