运维Tips:Docker或K8s集群拉取Harbor私有容器镜像仓库配置指南

news2024/11/25 5:45:02

64ef1dda34f00e5c5fbd0a7826aa782a.gif

[ 知识是人生的灯塔,只有不断学习,才能照亮前行的道路 ]


Docker与Kubernetes集群拉取Harbor私有容器镜像仓库配置

描述:在现在微服务、云原生的环境下,通常我们会在企业中部署Docker和Kubernetes集群,并且会在企业内部搭建Harbor私有镜像仓库以保证开发源码安全,以及加快CI/CD流水线速度,从而实现更快的构建与交付,就以作者公司为例,要迭代一个开发的微服务只需要简短的几分钟即可搞定。

我们知道如果你拉取一个公共的镜像仓库中的镜像,例如,拉取一个最新的nginx镜像,那么你只需要在服务器上执行docker pull nginx 命令,但是若是要拉取一个私有镜像仓库中的镜像,例如,docker pull harbor.weiyigeek.top/project/CMS-SpringBoot:latest 命令,那么你可能会遇到无法拉取镜像的问题,那么如何分别在Docker与Kubernetes集群拉取私有容器镜像仓库Harbor? 这便是本文将要分享的内容,希望对大家有所帮助。

假设,作者搭建部署了一套启用了HTTPS的Harbor私有镜像仓库,其域名是https://harbor.weiyigeek.top,项目名称是project,私有镜像名称是CMS-SpringBoot:lastest

f60348f1eac16d0218149c152391548c.png

Docker 环境

  • 步骤01.在Docker客户端配置中添加Harbor仓库地址

# 新增 insecure-registries 字段,表示允许不安全的仓库。
vim /etc/docker/daemon.json
"insecure-registries": ["harbor.weiyigeek.top","192.168.12.111:5000"]
  • 步骤02. 从官方文档可知客户端要使用tls与Harbor通信使用的还是自签证书,那么必须建立一个目录:/etc/docker/certs.d,如果配置可能会出现x509: certificate signed by unknown authority 错误提示

# 创建证书目录
mkdir -vp /etc/docker/certs.d/harbor.weiyigeek.top

# 将 harbor.pem 证书文件复制到创建的目录中
cp -a /deployapp/harbor/harbor.pem  /etc/docker/certs.d/harbor.weiyigeek.top/harbor.crt

# 将镜像仓库证书文件的所属和所属组设置为root,以及其证书文件的权限设置为600
chown root:root /etc/docker/certs.d/certs.d/harbor.weiyigeek.top/*
chmod -R 600  /etc/docker/certs.d/certs.d/harbor.weiyigeek.top/
  • 步骤03.重载 systemd 以及重启Docker服务

systemctl daemon-reload
systemctl restart docker
  • 步骤04.配置访问私有镜像仓库Harbor的认证信息,验证从私有仓库上传/拉取镜像。

docker login harbor.weiyigeek.top
  # Username: weiyigeek
  # Password:
  # WARNING! Your password will be stored unencrypted in /home/weiyigeek/.docker/config.json.Configure a credential helper to remove this warning. See
  # https://docs.docker.com/engine/reference/commandline/login/#credentials-store
  # Login Succeeded

# 测试上传
$ docker pull nginx
$ docker tag nginx:latest harbor.weiyigeek.top/project/nginx:latest
$ docker push harbor.weiyigeek.top/project/nginx:latest
  # The push refers to repository [harbor.weiyigeek.top/project/nginx:latest]
  # 7b5417cae114: Pushed
  # aee208b6ccfb: Pushed
  # 2f57e21e4365: Pushed
  # 2baf69a23d7a: Pushed
  # d0fe97fa8b8c: Pushed
  # v1.1: digest: sha256:34f3f875e745861ff8a37552ed7eb4b673544d2c56c7cc58f9a9bec5b4b3530e size: 1362

# 测试拉取
$ docker pull harbor.weiyigeek.top/project/nginx:latest

Kubernetes 集群环境

描述:在Kubernetes集群中,我们可以通过部署资源控制器配置的imagePullSecrets 字段,或者使用为serviceaccount 方式来拉取私有镜像仓库中的镜像。

步骤 01.值得注意的是,在Kubernetes集群中不同的容器运行时(CRI)中,配置方式是不同的,例如

  • 若你使用Dockershim作为容器运行时(即Docker环境),那么你需要修改Docekr守护配置文件/etc/docker/daemon.json,按照上一章节步骤进行配置即可。

  • 若你使用Containerd作为容器运行时,修改/etc/containerd/config.toml文件,按照如下方式配置即可。

# 例如, 私有的 harbor.weiyigeek.top 镜像仓库配置
$ mkdir -vp charbor.weiyigeek.top/
$ touch /etc/containerd/certs.d/harbor.weiyigeek.top/hosts.toml
$ vim /etc/containerd/certs.d/harbor.weiyigeek.top/hosts.toml
server = "https://harbor.weiyigeek.top"
[host."https://harbor.weiyigeek.top"]
  capabilities = ["pull", "resolve", "push"]
  skip_verify = true

# 重启containerd服务
systemctl restart containerd

步骤 02.在集群中使用 secret 资源清单存储镜像仓库的认证信息。

# 方式1.docker-configjson 方式来创建 secret,前提是使用dockershim容器运行时
kubectl create secret generic harbor-secret  \
  --from-file=.dockerconfigjson=/root/.docker/config.json \
  --type=kubernetes.io/dockerconfigjson \
  --namespace default

## 方式2.docker-registry 方式来创建 secret(当前主流)
kubectl create secret docker-registry harbor-secret \
  --docker-server=harbor.weiyigeek.top \
  --docker-username=weiyigeek \
  --docker-password=Harbor12345 \
  --docker-email=master@weiyigeek.top \
  --namespace default

之后,在Kubernetes集群中部署资源时,配置imagePullSecrets 字段即可,操作如下:

apiVersion: v1 
kind: Pod 
metadata:
  name: cms-app
spec:
  containers:
    - name: cms-app
      image: harbor.weiyigeek.top/project/CMS-SpringBoot:lastest  # 私有镜像
  imagePullSecrets:   # 关键点
    - name: harbor-secret

或者,你也可以创建并使用serviceaccount 方式来拉取私有镜像仓库中的镜像,操作如下:

# 1.创建一个serviceaccount账户
kubectl create serviceaccount harbor-sa --namespace default

# 2.通过补丁的方式将该服务帐户与 前面创建的 harbor-Secret 关联起来
kubectl patch serviceaccount harbor-sa  -p '{"imagePullSecrets": [{"name": "harbor-secret"}]}'

# 或者,你也可以使用 kubectl edit,或者如下所示手动编辑 YAML 清单,打开 sa.yaml 文件,删除带有键名 resourceVersion 的行,添加带有 imagePullSecrets: 的行,最后保存文件。
$ kubectl get serviceaccounts harbor-sa -o yaml > ./sa.yaml
$ vim sa.yaml
apiVersion: v1
kind: ServiceAccount
metadata:
  creationTimestamp: 2024-08-07T22:02:39Z
  name: harbor-sa 
  namespace: default
  uid: 052fb0f4-3d50-11e5-b066-42010af0d7b6
secrets:
- name: harbor-sa-token-uudge
imagePullSecrets:
- name: harbor-sa
# 最后,用新的更新的 sa.yaml 文件替换服务账号。
kubectl replace serviceaccount harbor-sa -f ./sa.yaml

然后,在创建的资源清单中,配置serviceAccountName: harbor-sa 字段即可,例如

apiVersion: v1 
kind: Pod 
metadata:
  name: cms-app
spec:
  serviceAccountName: harbor-sa   # 关键点

  containers:
    - name: cms-app
      image: harbor.weiyigeek.top/project/CMS-SpringBoot:lastest  # 私有镜像

好了,今天的分享到此结束,如果觉得文章对你有点帮助,请关注我,点赞分享并留言,谢谢。

若文章写得不错,不要吝惜手中转发,点赞、在看,若有疑问的小伙伴,可在评论区留言你想法哟💬!

温馨提示:作者最近10年的工作学习笔记(涉及网络、安全、运维、开发),需要学习实践笔记的看友,可添加作者账号[WeiyiGeeker],当前价格¥199,除了获得从业笔记的同时还可进行问题答疑以及每月远程技术支持,希望大家多多支持,收获定大于付出!

be2bba7b31494e84e7d7fb581cf62cdb.png


如果此篇文章对你有帮助,请你将它转发给更多的人!

 学习推荐 往期文章

  • 🔥【最新】运维必学 | 1.从零开始学Shell脚本编程之基础介绍

  • 🔥【最新】运维必学 | 2.从零开始学Shell脚本编程之变量

  • 💡【相关】GitOps实践 | 快速在银河麒麟KylinOS国产系统部署最新Harbor企业私有镜像仓库

  • 💡【相关】记一次在k8s集群搭建的Harbor私有仓库无法提供服务之镜像迁移恢复实践

3bfc2c0b0a2f5ea492a62449a741fa71.gif

dc98e446c5b92a76537b371f6cc3f630.gif

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2247106.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C语言笔记(自定义类型:结构体、枚举、联合体 )

前言 本文对自定义类型的结构体创建、使用、结构体的存储方式和对齐方式,枚举的定义、使用方式以及联合体的定义、使用和存储方式展开叙述,如有错误,请各位指正。 目录 前言 1 结构体 1.1 结构体的声明 1.2 结构体的自引用 1.3 结构体变…

string的实际应用 -- 大数相加 、大数相乘

前言:哎,做题好难o(╥﹏╥)o,有时候想不到,而有时候则是想到了却没办法理清思路,转化为代码。有必要反思了┓(;_`)┏,是否是做的太少了,或是自己的基础欠缺。 大学总是有些迷茫~ ​​…

STM32-- keil 的option for target使用

keil版本号 1.device界面 如:stm32f103c8t6的工程,可以直接在device这里修改成stm32f103vct6,虽然引脚不一样,但是很多一样的地方,可以直接使用,有些不修改也可以下载程序。 2.target xtal的设置不起作用了…

shell脚本9完结,保姆篇---春不晚

免责声明 学习视频来自 B 站up主泷羽sec,如涉及侵权马上删除文章。 笔记的只是方便各位师傅学习知识,以下代码、网站只涉及学习内容,其他的都与本人无关,切莫逾越法律红线,否则后果自负。 泷羽sec官网:http…

【数据分享】2024年我国省市县三级的住宿服务设施数量(8类住宿设施/Excel/Shp格式)

宾馆酒店、旅馆招待所等住宿服务设施的配置情况是一个城市公共基础设施完善程度的重要体现,一个城市住宿服务设施种类越丰富,数量越多,通常能表示这个城市的公共服务水平越高! 本次我们为大家带来的是我国各省份、各地级市、各区…

RabbitMQ和RocketMQ相关面试题

RabbitMQ和RocketMQ面试题 RabbitMQ1.RabbitMQ各部分角色2.如何确保RabbitMQ消息的可靠性?3.什么样的消息会成为死信?4.死信交换机的使用场景是什么?5.TTL6.延迟队列7.消息堆积问题8.MQ集群 RocketMQ1.RocketMQ各部分角色2.RocketMQ如何保证高…

在kali用msfpc远程控制Windows

本次实验我们将使用msfpc生成windows下的被控端,并使用metasploit渗透工具进行远程控制。 一、实验环境 Windows主机IP: 192.168.167.1 虚拟机Kali IP: 192.168.167.100 二、实验过程 1、安装msfpc apt-get install msfpc 2、生成windows…

SDIO WIFI模组Clock EMC问题

问题: 某产品采用SDIO3.0的WIFI模组,测试3米场地辐射出现333MHz和500MHz频点超标。 分析: 1、一开始分析板子上没有对应333MHz,499.5MHz的频点倍频,因此直接拔掉产品上所有的外部接线,测试还是超标。表明辐射源头出…

MCU(一) 时钟详解 —— 以 GD32E103 时钟树结构为例

微控制器 (MCU) 的时钟系统是系统运行的核心,它提供了各模块所需的时钟信号。本文以 GD32E103 系列 MCU 为例,详细讲解其 时钟树结构(Clock Tree)。通过理解时钟源、分配与预分频器设置,可以灵活配置系统时钟以实现高性…

【方案库】从单张照片快速重建3D场景:Flash3D详解

一、Flash3D是什么? Flash3D 是一项革命性的AI技术,能够从单张普通照片快速重建3D场景。简单来说,你只需要提供一张照片,Flash3D 就能帮你还原出这个场景的立体效果。这项技术在房地产、建筑设计、虚拟现实等多个领域都有着广泛的应用前景。 二、主要特点 一张就够:只需…

QT QFormLayout控件 全面详解

本系列文章全面的介绍了QT中的57种控件的使用方法以及示例,包括 Button(PushButton、toolButton、radioButton、checkBox、commandLinkButton、buttonBox)、Layouts(verticalLayout、horizontalLayout、gridLayout、formLayout)、Spacers(verticalSpacer、horizonta…

如何在 Ubuntu 22.04 上安装 Metabase 数据可视化分析工具

简介 Metabase 提供了一个简单易用的界面,让你能够轻松地对数据进行探索和分析。通过本文的指导,你将能够在 Ubuntu 22.04 系统上安装并配置 Metabase,并通过 Nginx 进行反向代理以提高安全性。本教程假设你已经拥有了一个非 root 用户&…

c#:winform调用bartender实现打印(学习整理笔记)

效果 学习路径 C# winform调用Bartender进行自定义打印、批量打印、检索文件夹中的模板_哔哩哔哩_bilibili 一、初始环境搭建见: c#:winform引入bartender-CSDN博客https://blog.csdn.net/weixin_46001736/article/details/143989473?sharetypeblogdetail&s…

1123--日期类

目录 一 java 1. Date类 2. calendar类 3. 第三代日期类‘ 3.1 常用方法 3.2 格式化操作 一 java 1. Date类 2. calendar类 3. 第三代日期类‘ 3.1 常用方法 3.2 格式化操作

当产业经济插上“数字羽翼”,魔珐有言AIGC“3D视频创作大赛”成功举办

随着AI技术的飞速发展,3D数字人技术已成为驱动各行各业转型升级的重要力量。在这一背景下,2024山东3D数字人视频创作大赛应运而生,并在一番激烈的角逐后圆满落幕,为科技与创意的交融写下浓墨重彩的一笔。 11月20日,一…

InstantStyle容器构建指南

一、介绍 InstantStyle 是一个由小红书的 InstantX 团队开发并推出的图像风格迁移框架,它专注于解决图像生成中的风格化问题,旨在生成与参考图像风格一致的图像。以下是关于 InstantStyle 的详细介绍: 1.技术特点 风格与内容的有效分离 &a…

使用EFK收集k8s日志

首先我们使用EFK收集Kubernetes集群中的日志,本次实验讲解的是在Kubernetes集群中启动一个Elasticsearch集群,如果企业内已经有了Elasticsearch集群,可以直接将日志输出至已有的Elasticsearch集群。 文章目录 部署elasticsearch创建Kibana创建…

Rust 力扣 - 2266. 统计打字方案数

文章目录 题目描述题解思路题解代码题目链接 题目描述 题解思路 这题可以先求按了多少次相同连续的按钮,所有的连续相同按钮表示的方案数的乘积就是本题答案 我们的关键问题就转换成了按n个连续相同按钮表示的方案数 设f(i)表示按i个连续相同按钮表示的方案数 如…

[Redis#0] iredis: linux上redis超好用的环境配置

目录 Features 特征 Install 安装 Pip Brew Linux的 Download Binary 下载 Binary Usage 用法 Using DSN 使用 DSN Change The Default Prompt更改默认提示 Configuration 配置 Keys Development 发展 Release Strategy 发布策略 Setup Environment 设置环境 De…

flutter 专题十七 Flutter Flar动画实战

Flutter Flar动画实战 在Flare动面出现之前,Flare动画大体可以分为使用AnimationController控制的基础动画以及使用Hero的转场动画,如果遇到一些复杂的场景,使用这些动画方案实现起来还是有难度的。不过,随着Flutter开始支持Flar…