• 容器镜像仓库harbor部署

1. 主机基础配置

[root@localhost ~]# hostnamectl set-hostname harbor && bash

关闭三件套

2. docker-ce安装

  1. 安装并设置启动及开机自启动:

[root@harbor ~]# yum -y install docker-ce-20.10.20

  1. 启动并设置开机自启:

[root@harbor ~]# systemctl start docker

[root@harbor ~]# systemctl enable docker

  1. 查看docker版本:

[root@harbor ~]# docker version

sudo tee /etc/docker/daemon.json <<EFO

{

 "registry-mirrors": [

       "https://2a6bf1988cb6428c877f723ec7530dbc.mirror.swr.myhuaweicloud.com",

     "https://docker.m.daocloud.io",

     "https://hub-mirror.c.163.com",

     "https://mirror.baidubce.com",

     "https://your_preferred_mirror",

     "https://dockerhub.icu",

     "https://docker.registry.cyou",

     "https://docker-cf.registry.cyou",

     "https://dockercf.jsdelivr.fyi",

     "https://docker.jsdelivr.fyi",

     "https://dockertest.jsdelivr.fyi",

     "https://mirror.aliyuncs.com",

     "https://dockerproxy.com",

     "https://mirror.baidubce.com",

     "https://docker.m.daocloud.io",

     "https://docker.nju.edu.cn",

     "https://docker.mirrors.sjtug.sjtu.edu.cn",

     "https://docker.mirrors.ustc.edu.cn",

     "https://mirror.iscas.ac.cn",

     "https://docker.rainbond.cc",

     "http://hub-mirror.c.163.com"

   ]

}

EFO

[root@harbor ~]# systemctl daemon-reload

[root@harbor ~]# systemctl restart docker

3. 下载一个docker-compose工具

拖入docker-compose-linux-x86_64包到linux主机

[root@harbor ~]# mv  docker-compose-linux-x86_64  /usr/local/bin/docker-compose

[root@harbor ~]# chmod +x /usr/local/bin/docker-compose

[root@harbor ~]# docker-compose -v

4. harbor安装

  1. 拖入harbor-offline-installer-v2.8.3.tgz包到linux主机,解压缩

[root@harbor ~]# tar  xf harbor-offline-installer-v2.8.3.tgz -C /usr/local/

  1. 拷贝文件,并修改文件:

[root@harbor ~]# cd /usr/local/harbor/

[root@harbor harbor]# cp harbor.yml.tmpl harbor.yml

[root@harbor harbor]# vim harbor.yml

  1. 修改:5行,8行,10行;注释13行,15行,17行,18行

下翻可以看到harbor仓库的登录密码!!!

保存退出

  1. 安装harbor,安装完成自行启动:

[root@harbor harbor]# docker load -i harbor.v2.8.3.tar.gz

  1. 准备:[root@harbor harbor]# ./prepare

  1. 安装:[root@harbor harbor]# ./install.sh

访问地址和账号密码: http://192.168.10.14/

另外可以自行启动:

[root@harbor harbor]# docker-compose up -d        //后台运行

不做:--停止:docker-compose stop

不做:--重启:docker-compose restart

访问harbor ui界面:

  • Kubernetes集群使用harbor仓库

1. 通过secret使用harbor仓库

新建一个harbor私有仓库

Kubernetes集群所有节点配置访问harbor仓库

[root@harbor harbor]# vim /etc/docker/daemon.json

添加:

,

     "insecure-registries": ["http://192.168.10.14"]

保存退出

[root@harbor ~]# systemctl restart docker

多窗口测试:登录私有仓库:(确保四台主机都可以连接到私有仓库)

[root@harbor harbor]# docker login 192.168.10.14

上传nginx测试镜像到harbor仓库(harbor主机):

拖入nginx1u20.tar包到linux主机

[root@harbor ~]# docker load -i nginx1u20.tar

给镜像重新打标签并上传到私有仓库:(必须重新打标签,明确ip地址)

[root@harbor harbor]# docker tag nginx:1.20 192.168.10.14/test/nginx:1.20

[root@harbor harbor]# docker push 192.168.10.14/test/nginx:1.20

应用场景:运维人员在不知道harbor用户名和密码的情况下,直接调用创建 docker-registry 类型的 Secret(Secret 来存储 Docker 镜像仓库的认证信息。这在你需要从私有镜像仓库拉取镜像时非常有用。)来运行一个pod。避免泄露harbor仓库的密码!!!

方法一:

1. 创建docker-registry类型secret:

[root@master01 ~]# kubectl create secret docker-registry harbor-secret --docker-server=192.168.10.14 --docker-username=admin --docker-password=Harbor12345

验证查看:[root@master01 ~]# kubectl get secret

[root@master01 ~]# kubectl describe secrets harbor-secret

创建pod直接使用secret:

[root@master01 ~]# vim pod-harbor.yml

添加:

apiVersion: v1

kind: Pod

metadata:

  name: pod-harbor

spec:

  containers:

  - name: c1

    image: 192.168.10.14/test/nginx:1.20

  imagePullSecrets:                    # 定义镜像下载使用的secrets

  - name: harbor-secret         # 与上面的secret名称一致

保存退出

应用:[root@master01 ~]# kubectl apply -f pod-harbor.yml

验证pod:[root@master01 ~]# kubectl get pod -o wide

查看pod详细信息:[root@master01 ~]# kubectl describe pod pod-harbor

可以看到是从192.168.10.14/test/nginx:1.20拉取的镜像

方法二:安全性更高一点

2. 通过serviceaccout使用secret访问harbor仓库

编写yaml文件时添加imagePullSecrets的这2行配置,可以把secret配置到serviceAccount中进行调用也可以。

  1. 创建serviceAccount(服务账号):

[root@master01 ~]# vim serviceaccount-harbor-sa.yaml

添加:

apiVersion: v1

kind: ServiceAccount

metadata:

  name: harbor-sa

  namespace: default

保存退出

应用:[root@master01 ~]# kubectl apply -f serviceaccount-harbor-sa.yaml

[root@master01 ~]# kubectl describe serviceaccount harbor-sa

  1. 修改serviceaccount添加使用harbor-secret的权限

[root@master01 ~]# kubectl patch serviceaccount harbor-sa -n default  -p '{"imagePullSecrets": [{"name": "harbor-secret"}]}'

[root@master01 ~]# kubectl describe serviceaccount harbor-sa

[root@master01 ~]# kubectl get serviceaccount harbor-sa -o yaml

  1. 修改yaml使用serviceAccount

[root@master01 ~]# vim pod-harbor.yml

apiVersion: v1

kind: Pod

metadata:

  name: pod-harbor

spec:

  serviceAccount: harbor-sa   # 原来的2句换成使用harbor-sa这个serviceAccount

  containers:

  - name: c1

    image: 192.168.10.14/test/nginx:1.20

保存退出

  1. 删除先前的重新创建pod验证:

[root@master01 ~]# kubectl delete pod pod-harbor

[root@master01 ~]# kubectl apply -f pod-harbor.yml

[root@master01 ~]# kubectl get pods

[root@master01 ~]# kubectl describe pods pod-harbor

Logo

北京人形旗下天工造物具身智能开源社区,聚焦具身天工与慧思开物两大平台

更多推荐