OKD与Harbor的集成 电脑版发表于:2021/8/8 10:39 ![](https://img.tnblog.net/arcimg/hb/6070b5726c184417b10c0c4ca6546931.png) >#OKD 与Harbor的集成 [TOC] tn>为什么需要安装Harbor呢?因为在我们安装时并没有存储库,所以环境镜像也无法安装到本地存储库中来。 安装docker-compose ------------ tn2>我这里准备了一台okd和一台harbor环境 | 应用 | ip | | ------------ | ------------ | | harbor | 10.211.55.8 | | okd | 10.211.55.9 | tn2>在`10.211.55.8`需要进行关闭防火墙。 ```bash service iptables stop chkconfig iptables off systemctl stop firewalld.service systemctl disable firewalld.service ``` tn2>在`10.211.55.8`上我们已经安装好了docker。 ![](https://img.tnblog.net/arcimg/hb/7b65e63e9e014e3db2856a4bc7f7ca96.png) tn2>接下来我们安装docker-compose ```bash sudo curl -L https://github.com/docker/compose/releases/download/1.29.2/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose chmod +x /usr/local/bin/docker-compose docker-compose --version ``` ![](https://img.tnblog.net/arcimg/hb/cdb4197f8404471fb82ed08fa1c687f0.png) 安装harbor ------------ tn2>这里我们使用的版本是`1.6.2`的,大家下载的时候也可以下载高一点。 ```bash wget https://storage.googleapis.com/harbor-releases/release-1.6.0/harbor-offline-installer-v1.6.2.tgz tar -zxvf harbor-offline-installer-v1.6.2.tgz cd harbor ``` tn2>修改配置harbor.cfg,我就修改了hostname,并且指定端口为`8060` ```bash vim harbor.cfg # hostname = 10.211.55.8:8060 ``` ![](https://img.tnblog.net/arcimg/hb/a74b135ff15940819d4504ee358ec9a6.png) tn2>在docker-compose.yml中修改,将端口映射修改为`8060`,并且需要检查`443`端口是否被占用的情况。 ```bash networks: - harbor ports: - 8060:80 - 443:443 - 4443:4443 ``` ![](https://img.tnblog.net/arcimg/hb/aa1194e905d2479ea6400e017a4cbc67.png) ```bash netstat -anp | grep 443 ``` tn2>接着我们正式安装执行如下命令。 ```bash ./prepare ./install.sh ``` tn2>最后验证是否安装成功。 ```bash docker-compose ps ``` ![](https://img.tnblog.net/arcimg/hb/3838383d91c54a4689dac3df807d8ac7.png) tn2>登录10.211.55.8:8060, admin/Harbor12345 ![](https://img.tnblog.net/arcimg/hb/17b2fd37732f410c947b08477549a76b.png) OKD登录harbor ------------ tn2>我们在`10.211.55.9`OKD上需要对docker做一些修改。 ```bash vim /etc/sysconfig/docker ``` ```bash # 就是设置一下不安全的存储库 OPTIONS=' --selinux-enabled -l warn --ipv6=false --insecure-registry=10.211.55.8:8060 --registry-mirror=https://r03u9tep.mirror.aliyuncs.com --log-opt max-size=1M --log-opt max-file=3 --live-restore=true --signature-verification=False' ADD_REGISTRY='--add-registry 10.211.55.8:8060' INSECURE_REGISTRY='--insecure-registry=10.211.55.8:8060' ``` ![](https://img.tnblog.net/arcimg/hb/d3501ec93ffc42a4bcdb9966a756484f.png) ```bash # 修改好后重启 systemctl daemon-reload systemctl restart docker.service ``` tn2>再在harbor界面上,我们进行创建一个用户`aidasi`,以后上传镜像与下载镜像的时候我们需要用这个用户进行登录。密码为:`Hmy123456789` ![](https://img.tnblog.net/arcimg/hb/c121f92d5a564b85863cf10ad624e153.png) tn2>然后我们通过该用户在`10.211.55.9`OKD这台机子上通过docker进行登录。 ```bash docker login ``` tn2>设置/etc/origin/master/master-config.yaml设置镜像库,找到这一句,后面添加上我们自己的镜像库。 tn>每个节点都要进行配置这个 ```bash imagePolicyConfig: internalRegistryHostname: docker-registry.default.svc:5000 externalRegistryHostname: 10.211.55.8:8060 ``` tn2>重新启动master与controllers ```bash master-restart api master-restart controllers ``` 将 Harbor注册表Secret添加到OpenShift ------------ >### 第一种方式 tn2>.dockercfg `$HOME/.docker/config.json` Docker 客户端的文件是一个 Docker 凭证文件,如果您之前已登录到安全或不安全的注册表,它会存储您的身份验证信息。 ```bash cat ~/.docker/config.json ``` ![](https://img.tnblog.net/arcimg/hb/b8e3d197d9d9457ba612b12f6b9fcd23.png) ```bash # 复制该文件到当前目录下 cp ~/.docker/config.json k8s-docker.json # 添加到全局secret oc create secret generic harborkey --from-file=.dockerconfigjson=./k8s-docker.json --type=kubernetes.io/dockerconfigjson ``` >### 第二种方式 tn2>直接以用户登录的方式进行存到secret中 ```bash # 邮箱是在harbor上创建aidasi时创建的那个邮箱地址 oc create secret docker-registry harborkey \ --docker-server=10.211.55.8:8060 \ --docker-username=aidasi \ --docker-password=Hmy123456789 \ --docker-email=86382516@qq.com ``` >### 添加到服务账户 tn2>我们将harbor密钥添加到您的服务帐户,当我们需要进行生成项目时是需要将项目上传到harbor中的,所以我们这里就需要进行绑定builder。 ```bash # pull 有拉取权限,mount有上传权限 oc secrets link builder harborkey --for=pull,mount ``` tn>其他参考:https://docs.openshift.com/container-platform/4.5/openshift_images/managing_images/using-image-pull-secrets.html