Kubernetes 安装 Harbor 私有镜像仓库完整教程

Kubernetes 安装 Harbor 私有镜像仓库完整教程

在使用Kubernetes(以下简称K8s)进行应用部署时,通常需要使用到Docker镜像。而随着应用数量以及规模的增加,我们需要使用一个私有镜像仓库来管理这些镜像。Harbor是一个开源的私有镜像仓库,可以帮助开发者管理自己的Docker镜像。本文将介绍K8s中使用Harbor进行镜像管理的完整教程。

一、Harbor 简介

Harbor是一个开源的Docker镜像仓库,而且具有企业级别的功能。它允许开发者管理自己的Docker镜像,同时还支持角色控制、LDAP、审计日志、镜像复制、高可用等功能。

二、Kubectl 安装

在使用Kubernetes时,需要使用kubectl进行管理,因此在安装Harbor之前,需要先安装kubectl。

1.从kubectl的下载页中下载相应的版本,下面以v1.15.0为例:

curl -LO https://storage.googleapis.com/kubernetes-release/release/v1.15.0/bin/linux/amd64/kubectl

2.将kubectl二进制文件移动到/usr/local/bin目录下:

sudo mv kubectl /usr/local/bin/

3.配置kubectl的可执行权限:

sudo chmod +x /usr/local/bin/kubectl

4.验证kubectl是否已安装:

kubectl version

执行该命令后,如果出现版本号,则表示kubectl已经安装成功。

三、Docker 安装

在使用Harbor之前,需要先安装Docker。可以按照下面的步骤进行安装:

1.添加Docker的GPG key:

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

2.添加Docker的APT仓库:

sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"

3.更新APT仓库缓存:

sudo apt-get update

4.安装Docker:

sudo apt-get install docker-ce docker-ce-cli containerd.io

5.验证Docker是否已安装:

sudo docker version

执行该命令后,如果出现版本号,则表示Docker已经安装成功。

四、Harbor 安装

安装Harbor分为以下几个步骤:

1.下载安装包:

curl -O https://storage.googleapis.com/harbor-releases/release-1.7.0/harbor-online-installer-v1.7.1.tgz

2.解压安装包:

tar xvfz harbor-online-installer-v1.7.1.tgz

3.修改harbor.cfg文件中的配置项,可以根据需要设置。

4.在解压后的目录中执行以下命令进行安装:

sudo ./install.sh --with-notary --with-clair

执行该命令后,Harbor将会在本地启动。可以在浏览器中访问http://localhost:80来访问Harbor的Web界面。

五、使用 Harbor 进行镜像管理

  1. 登录 Harbor

在浏览器中访问http://localhost,输入管理员用户名和密码进行登录。

  1. 创建项目

进入管理界面后,可以创建一个新的项目。在项目界面中,可以上传、删除、浏览镜像,以及管理项目成员和权限等。

  1. 镜像上传

在项目界面中,可以通过以下步骤上传镜像:

①点击左侧菜单上的“Repositories”选项卡。

②如果还没有镜像库,需要新建一个镜像库。在Repositories页面右上角点击“New Project”按钮,填写项目的名称和描述即可。

③在Repositories页面中,点击“Upload”按钮,选择需要上传的Docker镜像。

  1. K8s中使用 Harbor

在K8s中使用Harbor,需要在K8s中配置imagePullSecrets。在下面的示例中,我们将使用name为harborsecret的secret:

  1. 创建secret

kubectl create secret docker-registry harborsecret --docker-server=http://harbor.example.com --docker-username=admin --docker-password=Harbor12345

其中,--docker-server参数指定Harbor地址,--docker-username和--docker-password参数指定Harbor管理员的用户名和密码。

  1. 使用secret

在使用Harbor中的镜像时,需要在Pod的spec中增加imagePullSecrets字段。例如:

apiVersion: v1 kind: Pod metadata: name: nginx spec: containers:

  • name: nginx image: harbor.example.com/library/nginx:latest imagePullSecrets:
  • name: harborsecret

在上述Pod中,imagePullSecrets指定了需要使用的secret。由于该secret中包含了Harbor的用户名和密码,因此Pod能够通过该secret来拉取Harbor中的镜像。

总结

本文介绍了在K8s中使用Harbor进行镜像管理的完整教程。通过使用Harbor,开发者可以更加方便地管理Docker镜像。通过阅读本文,读者也可以了解到K8s中的镜像管理的一些基本知识,有助于提高应用的可扩展性和可维护性。

来源:JavaScript中文网 ,转载请联系管理员! 本文地址:https://www.javascriptcn.com/post/6482e8f648841e9894245e96


猜你喜欢

  • 如何在 Express.js 中使用 MySQL 来建立 Web 应用程序?

    导言 在建立 Web 应用程序时,我们经常需要将数据存储在关系型数据库中,以便对其进行查询、修改和删除等操作。MySQL 是一种常用的关系型数据库,而 Express.js 是一种常用的 Web 开发...

    1 年前
  • Hapi.js 的插件和扩展点,入门指南

    Hapi.js 是 Node.js 平台的一个轻量级、高度可定制的 Web 应用框架,由 Walmart 技术团队开发和维护。Hapi.js 提供了一组稳健、易于学习的 API,可以帮助开发人员构建可...

    1 年前
  • Node.js下开启Sequelize的自动同步功能

    前言 Sequelize是一个基于Node.js的ORM(Object-Relational Mapping)库,能够通过JavaScript来操作SQL数据库,尤其适用于在Node.js应用中进行开...

    1 年前
  • 使用 Docker Compose 搭建 WordPress 应用实践

    介绍 随着云计算和容器化技术的不断发展,Docker 已成为一个非常流行的容器化解决方案。然而,使用 Docker 构建和运行应用程序仍然需要进行一些复杂的配置。为了解决这个问题,Docker Com...

    1 年前
  • ECMAScript 2015(ES6)中的 map 和 set 数据结构简介

    ECMAScript 2015(ES6)中的 Map 和 Set 数据结构简介 ECMAScript 2015(ES6)是一种JavaScript的一种版本,其中包含了一些新的数据结构,其中就包括了 ...

    1 年前
  • Jest 测试 React 组件传参的几种方式分析

    在 React 中,当我们需要将数据从一个组件传递到另一个组件时,可以使用 Props props 作为传递数据的方式。在前端开发中,测试是非常重要的一环,我们需要确保我们的组件在接收到 Props ...

    1 年前
  • Vue.js 自定义指令开发指南:如何实现双向数据绑定

    Vue.js 是一个目前最火热的前端框架之一。它的许多特性都让我们可以更方便、更快乐地开发 web 应用。在这些特性中,就有我们今天要讨论的自定义指令。 Vue.js 的自定义指令可以让我们通过简单的...

    1 年前
  • Deno 应用中如何处理 HTTP 请求响应

    Deno 是一个现代化的 JavaScript 和 TypeScript 运行时,它的目标是成为一个安全、可靠且有弹性的运行时环境。在使用 Deno 开发应用时,处理 HTTP 请求响应是必不可少的一...

    1 年前
  • ES7 中的 Reflect API 详解及实际应用

    在 ES6 引入了 Proxy 对象之后,ES7 又新增了一种 API,它就是 Reflect API 。它和 Proxy 一样,可以让我们更加优雅和简单地对对象进行操作。

    1 年前
  • webpack 热更新在使用 Babel 编译时的问题及解决方法

    在开发前端应用时,我们经常会使用 webpack 和 Babel 进行代码打包和转译。而其中涉及到热更新的代码修改后的自动刷新问题,是开发过程中的一个重要问题。 然而,在使用 Babel 编译代码时,...

    1 年前
  • SASS 中的 @extend 语句使用技巧

    前言 SASS 是一款 CSS 预处理器,它通过一些特殊的语法扩充了 CSS 的功能,提高了开发效率,让开发者更加灵活的管理样式,其中的 @extend 语句可以使开发者更方便地在样式中进行复用和继承...

    1 年前
  • PM2 常见问题:如何保持应用程序持续运行?

    在前端开发中,我们经常使用 PM2 来管理应用程序。通过 PM2,我们可以轻松地启动、停止、重启和监视应用程序的运行状态。然而,有时候我们发现应用程序会出现意外中断,导致程序无法继续运行,这时候我们该...

    1 年前
  • 解决 Android Studio 中 Material Design 控件无法预览的问题

    在 Android Studio 中,Material Design 是最流行的用户界面设计指南之一。它为 Android 应用提供了一致的外观和使用体验,其中包括丰富的控件库。

    1 年前
  • CSS Grid 如何实现全屏滚动效果?

    在网页设计中,滚动效果是一种常见的交互方式,它可以增强用户体验并使页面更加生动活泼。今天我们将讨论如何使用 CSS Grid 实现一个全屏滚动效果。 什么是 CSS Grid? CSS Grid 是一...

    1 年前
  • 在 TailwindCSS 中使用字体图标的方法

    随着前端技术的发展,字体图标在网页设计中的使用越来越普遍,因为它可以减少图片的使用,提高网页性能,同时也方便了开发者的维护。在使用 TailwindCSS 进行开发的过程中,也需要使用到字体图标。

    1 年前
  • Cypress 错误解决:如何解决测试中的一个类型错误

    引言 Cypress 是一个功能强大的前端测试框架,它可以帮助开发者快速编写、运行和维护端到端测试。但是,我们在使用 Cypress 进行测试的时候,有时候会遭遇各种错误和问题。

    1 年前
  • 利用 ES8 中的 Async/await 优化异步代码,拒绝 callback

    在前端开发中,异步操作是极为常见的。随着 ECMAScript 的不断更新,ES8 中引入了一个优秀的异步编程解决方案:Async/await。这一特性在处理异步代码方面非常便利,可读性强,与 Pro...

    1 年前
  • Socket.io 与 Express 结合使用详解

    引言 在现代 Web 开发中,前端的实时通信需求越来越多,而 WebSocket 提供了一种不同于 Ajax 轮询和长轮询的实时通信方式。但是,实际开发中 WebSocket 的使用不太方便,特别是在...

    1 年前
  • RESTful API 异常处理指南

    在使用 RESTful API 进行开发时,异常处理是非常重要的一项任务。由于 Web 应用程序以及其他软件系统的复杂性和不断变化,意外的异常往往是不可避免的。在本文中,我们将探讨常见的 RESTfu...

    1 年前
  • 详解 Redis 集群环境下的数据备份与恢复

    前言 Redis 是一款多功能、高效的内存数据库(In-Memory Database),其支持各种数据结构(String、Hash、List、Set、Sorted Set),被广泛应用于缓存、存储、...

    1 年前

相关推荐

    暂无文章