[转帖]搭建私有镜像

搭建,私有,镜像 · 浏览次数 : 0

小编点评

## Summary of the text: This document explains how to build a private cloud using TiUP and how to use the `mirror` command for this purpose. **Key Points:** * By default, TiUP does not allow access to the official mirror due to being isolated in a private network. * To build a private cloud, users can use the `mirror` command to create a local mirror of the TiUP repository. * This can be useful for offline deployments. * The `mirror` command allows users to manage various components, including keys, users, and versions of components or the repository itself. * It also provides several commands for managing published components, such as `init`, `clone`, `merge`, and `set`. **Instructions:** 1. **Create a private repository:** Use the `tiup mirror init` command to create an empty repository on the local machine. 2. **Create a local mirror:** Use the `tiup mirror clone` command to create a local mirror of the TiUP repository. 3. **Manage components:** Use the various `mirror` commands to manage components, such as `genkey`, `set`, `merge`, and `grant`. 4. **Build a custom repository:** Use the `tiup package` command to create a custom package containing the TiDB components. 5. **Create a custom component:** Use the `tiup mirror create` command to create a new custom component from scratch. 6. **Upload the component to TiUP:** Use the `tiup mirror publish` command to upload the custom component to the TiUP repository. 7. **Merge a custom component:** Use the `tiup mirror merge` command to merge a custom component into an existing repository. **Additional Notes:** * Always reset the private repository before creating a new mirror or merging components. * Use the `TIUP_MIRRORS` environment variable to specify the path to the local mirror directory. * This guide assumes you have basic command-line skills. **Overall, this document provides a comprehensive overview of using the `mirror` command with the TiUP repository for building and managing private clouds.**

正文

https://docs.pingcap.com/zh/tidb/stable/tiup-mirror

 

在构建私有云时,通常会使用隔离的网络环境,此时无法访问 TiUP 的官方镜像。因此,TiUP 提供了构建私有镜像的方案,它主要由 mirror 指令来实现,该方案也可用于离线部署。使用私有镜像,你可以使用自己构建和打包的组件。

mirror 指令介绍

mirror 指令的帮助文档如下:

tiup mirror --help
The `mirror` command is used to manage a component repository for TiUP, you can use it to create a private repository, or to add new component to an existing repository. The repository can be used either online or offline. It also provides some useful utilities to help manage keys, users, and versions of components or the repository itself. Usage: tiup mirror <command> [flags] Available Commands: init Initialize an empty repository sign Add signatures to a manifest file genkey Generate a new key pair clone Clone a local mirror from remote mirror and download all selected components merge Merge two or more offline mirrors publish Publish a component show Show the mirror address set Set mirror address modify Modify published component renew Renew the manifest of a published component. grant grant a new owner rotate Rotate root.json Flags: -h, --help help for mirror --repo string Path to the repository Global Flags: --help Help for this command Use "tiup mirror [command] --help" for more information about a command.

克隆镜像

执行 tiup mirror clone 命令,可构建本地地镜像:

tiup mirror clone <target-dir> [global-version] [flags]
  • target-dir:指需要把克隆下来的数据放到哪个目录里。
  • global-version:用于为所有组件快速设置一个共同的版本。

tiup mirror clone 命令提供了很多可选参数,日后可能会提供更多。但这些参数其实可以分为四类:

  1. 克隆时是否使用前缀匹配方式匹配版本

    如果指定了 --prefix 参数,则会才用前缀匹配方式匹配克隆的版本号。例:指定 --prefix 时,填写版本 "v5.0.0" 将会匹配 "v5.0.0-rc", "v5.0.0"

  2. 是否全量克隆

    如果指定了 --full 参数,则会完整地克隆官方镜像。

     
    注意

    如果既不指定 --full 参数,又不指定 global-version 或克隆的 component 版本,那么 TiUP 就只会克隆一些元信息。

  3. 限定只克隆特定平台的包

    如果只想克隆某个平台的包,那么可以使用 --os 和 --arch 来限定:

    • 只想克隆 linux 平台的,则执行 tiup mirror clone <target-dir> [global-version] --os=linux
    • 只想克隆 amd64 架构的,则执行 tiup mirror clone <target-dir> [global-version] --arch=amd64
    • 只想克隆 linux/amd64 的,则执行 tiup mirror clone <target-dir> [global-version] --os=linux --arch=amd64
  4. 限定只克隆组件的特定版本

    如果只想克隆某个组件的某一个版本而不是所有版本,则使用 --<component>=<version> 来限定,例如:

    • 只想克隆 TiDB 的 v7.1.1 版本,则执行 tiup mirror clone <target-dir> --tidb v7.1.1
    • 只想克隆 TiDB 的 v7.1.1 版本,以及 TiKV 的所有版本,则执行 tiup mirror clone <target-dir> --tidb v7.1.1 --tikv all
    • 克隆一个集群的所有组件的 v7.1.1 版本,则执行 tiup mirror clone <target-dir> v7.1.1

克隆完成后,签名密钥会自动设置。

管理私有仓库

你可以通过 SCP 和 NFS 文件共享方式,将 tiup mirror clone 克隆下来的仓库共享给其他主机,也可以通过 HTTP 或 HTTPS 协议来共享。可以使用 tiup mirror set <location> 指定仓库的位置。

tiup mirror set /shared_data/tiup
tiup mirror set https://tiup-mirror.example.com/
 
注意

如果在执行了 tiup mirror clone 的机器上执行 tiup mirror set,下次执行 tiup mirror clone 时,机器会从本地镜像而非远程镜像进行克隆。因此,更新私有镜像前,需要执行 tiup mirror set --reset 来重置镜像。

还可以通过 TIUP_MIRRORS 环境变量来使用镜像。下面是一个使用私有仓库运行 tiup list 的例子。

export TIUP_MIRRORS=/shared_data/tiup tiup list

设置 TIUP_MIRRORS 会永久改变镜像配置,例如 tiup mirror set。详情请参考 tiup issue #651

更新私有仓库

如果使用同样的 target-dir 目录再次运行 tiup mirror clone 命令,机器会创建新的 manifest,并下载可用的最新版本的组件。

 
注意

重新创建 manifest 之前,请确保所有组件和版本(包括之前下载的早期版本)都包含在内。

自定义仓库

你可以创建一个自定义仓库,以使用自己构建的 TiDB 组件,例如 TiDB、TiKV 或 PD。你也可以创建自己的 TiUP 组件。

要创建自己的组件,请执行 tiup package 命令,并按照组件打包的说明进行操作。

创建自定义仓库

以下命令在 /data/mirror 目录下创建一个空仓库:

tiup mirror init /data/mirror

创建仓库时,密钥会被写入 /data/mirror/keys

以下命令在 ~/.tiup/keys/private.json 中创建一个私钥:

tiup mirror genkey

以下命令为 jdoe 授予 /data/mirror 路径下私钥 ~/.tiup/keys/private.json 的所有权:

tiup mirror set /data/mirror tiup mirror grant jdoe

使用自定义组件

  1. 创建一个名为 hello 的自定义组件:

    $ cat > hello.c << END > #include <stdio.h> int main() { printf("hello\n"); return (0); } END $ gcc hello.c -o hello $ tiup package hello --entry hello --name hello --release v0.0.1

    package/hello-v0.0.1-linux-amd64.tar.gz 创建成功。

  2. 创建一个仓库和一个私钥,并为仓库授予所有权:

    $ tiup mirror init /tmp/m $ tiup mirror genkey $ tiup mirror set /tmp/m $ tiup mirror grant $USER
    tiup mirror publish hello v0.0.1 package/hello-v0.0.1-linux-amd64.tar.gz hello
  3. 运行组件。如果组件还没有安装,会先下载安装:

    $ tiup hello
    The component `hello` version is not installed; downloading from repository. Starting component `hello`: /home/dvaneeden/.tiup/components/hello/v0.0.1/hello hello

    执行 tiup mirror merge 命令,可以将自定义组件的仓库合并到另一个仓库中。这一操作假设 /data/my_custom_components 中的所有组件都使用 $USER 签名:

    $ tiup mirror set /data/my_mirror $ tiup mirror grant $USER $ tiup mirror merge /data/my_custom_components

与[转帖]搭建私有镜像相似的内容:

[转帖]搭建私有镜像

https://docs.pingcap.com/zh/tidb/stable/tiup-mirror 在构建私有云时,通常会使用隔离的网络环境,此时无法访问 TiUP 的官方镜像。因此,TiUP 提供了构建私有镜像的方案,它主要由 mirror 指令来实现,该方案也可用于离线部署。使用私有镜像,你

[转帖]搭建私有镜像

https://docs.pingcap.com/zh/tidb/stable/tiup-mirror 在构建私有云时,通常会使用隔离的网络环境,此时无法访问 TiUP 的官方镜像。因此,TiUP 提供了构建私有镜像的方案,它主要由 mirror 指令来实现,该方案也可用于离线部署。使用私有镜像,你

[转帖]tidb 搭建私有镜像库

https://docs.pingcap.com/zh/tidb/stable/tiup-mirror 在构建私有云时,通常会使用隔离的网络环境,此时无法访问 TiUP 的官方镜像。因此,TiUP 提供了构建私有镜像的方案,它主要由 mirror 指令来实现,该方案也可用于离线部署。使用私有镜像,你

[转帖]CentOS7搭建时间服务器-chrony

操作系统:CentOS7防火墙: 关闭防火墙和selinux时间软件:chronyCentOS7我们一直用的ntp时间服务器,虽然到CentOS7上也可以装ntp。chrony与ntp都是时间同步软件,两个软件不能够同时开启,会出现时间冲突.但是由于各种问题,所以建议CentOS7使用chrony同

[转帖]docker 搭建 redis 伪分布式集群

https://www.jianshu.com/p/453a2d70a5de 建议阅读方式 可前往语雀阅读,体验更好:docker 搭建 redis 伪分布式集群 背景介绍 该实验主要来源于《Docker 容器与容器云 第2版》一书的 2.3 节:“搭建你的第一个 Docker 应用栈”中的一小步,

[转帖]kafka搭建kraft集群模式

kafka2.8之后不适用zookeeper进行leader选举,使用自己的controller进行选举 1.准备工作 准备三台服务器 192.168.3.110 192.168.3.111 192.168.3.112,三台服务器都要先安装好jdk1.8,配置好环境变量, 下载好kafka3.0.0

[转帖]Flannel 环境搭建与分析

https://switch-router.gitee.io/blog/flanenl/ 介绍 Flannel是CoreOS团队针对Kubernates设计的跨主机容器网络解决方案, 它可以使集群中不同节点上运行的docker容器都具有全集群唯一的虚拟IP地址。 举个例子,在一个由3台主机节点组成系

[转帖]Flannel 环境搭建与分析

https://switch-router.gitee.io/blog/flanenl/ 介绍 Flannel是CoreOS团队针对Kubernates设计的跨主机容器网络解决方案, 它可以使集群中不同节点上运行的docker容器都具有全集群唯一的虚拟IP地址。 举个例子,在一个由3台主机节点组成系

[转帖]TiKV集群搭建

https://www.cnblogs.com/luohaixian/p/15227788.html 1.准备环境 准备4台ubuntu 16.04虚拟机 部署规划: 节点类型 CPU 内存 存储 部署数量 所在节点IP TiKV 8 core 8 GB 200GB 3 10.10.10.2 10.

[转帖]Ceph简单搭建

https://cloud.tencent.com/developer/article/1643322 Ceph基础介绍 ​ Ceph是一个可靠地、自动重均衡、自动恢复的分布式存储系统,根据场景划分可以将Ceph分为三大块,分别是对象存储、块设备存储和文件系统服务。在虚拟化领域里,比较常用到的是Ce