Kasten K10 实战系列 02 – Kasten K10 搭建私有镜像库

Kasten K10 实战系列 02 - Kasten K10 搭建私有镜像库

1.前言 - gcri.io 的访问

由于一些众所周知的原因, 有些企业在国内无法访问 gcr.io 上的镜像, 在安装 kubernetes 时,很多官方镜像又是都存在 gcr.io 上, Kasten K10 也是如此。当然 Kasten K10 也考虑到用户不能访问 gcr.io 因素,同时把镜像也放到了 Jfrog artifactory 上作为 alternative 的镜像下载站。这对于在线安装的用户来说就简单多了。考虑到国内用户私有化部署的情况比较多,在本文中我们归纳了将 Kasten K10 的 Helm Chart 部署在腾讯 TCR 或是 Harbor上的方法,这样我们就可以直接使用国内的镜像库了。本文将以腾讯的私人镜像库为例进行说明。

文章目录

  1. 前言 - gcri.io 的访问
  2. 腾讯镜像库 TCR 就绪过程
    • 2.1 腾讯镜像库 TCR 介绍
    • 2.2 腾讯镜像库 TCR 新建命名空间
    • 2.3 新建 镜像仓库
    • 2.4 选择使用指引, 了解 登录 docker login 登录所需要的命令
    • 2.5 访问管理 CAM 策略检查
  3. 部署私有镜像库到 TCR
    • 3.1. 使用 Kasten K10 官方的方法部署镜像库
    • 3.2. 使用 Veeam 工程师方法部署镜像库
    • 3.3. 针对无网络环境,使用手动方式部署镜像库
    • 3.4 对于两个特殊镜像的上传 Restorectl 和 k10offline 镜像
  4. 查看部署完成的 TCR 镜像库
  5. 总结
  6. 参考链接
  7. 附录:将 docker images save 再 load 的方法参考

Kasten 实战系列导航

2. 腾讯镜像库 TCR 就绪过程

2.1 腾讯镜像库 TCR 介绍

腾讯容器镜像服务(Tencent Container Registry,TCR)是腾讯云提供的安全独享、高性能的容器镜像托管分发服务,支持 Docker 镜像、Helm Chart 存储分发及镜像安全扫描,为企业级客户提供了细颗粒度的访问权限管理和网络访问控制。

2.2 新建命名空间

首先,我们需要在腾讯云镜像仓库中,新建命名空间,如下图。

20210628145211

然后,输入命名空间的名称, 如 Kasten

20210628145439

2.3 新建镜像仓库

在这里,我们需要新建一个镜像仓库为试做准备,值得说明的是下面的环境将为自动化的建立镜像仓库,这里只是测试功能是否可以非常使用。

20210628152430

名称:填入测试镜像库的名称, 类型,选公有, 命名空间,选择刚刚创建的名空间
20210628152655

2.4 查看镜像仓库指引

在这里,让我们选择使用指引, 以便了解登录,即 docker login 所需要的命令
20210628153347

2.5 访问管理 CAM 策略检查

确保角色 TCR_QCSRole 已经创建
20210628151922

确保如下策略在角色 TCR_QCSRole 中被关联

20210628151948

3. 部署私有镜像库到 TCR

3.1. 使用 Kasten K10 官方的方法部署镜像库

要使用 Kasten K10 官方的方法部署镜像库,请参考如下文档

参考 Kasten 文档 Air-Gapped Install
https://docs.kasten.io/latest/install/offline.html

注意以下操作的主机需要可以接触 gcr.io
建议准备一个 Ubuntu Linux 方便操作

1. 列出 K10 容器镜像

以下命令将列出当前 K10 版本使用的所有 Docker images,如果需要手动标记 K10 Docker images 并将其推送到您的私有存储库,而不是使用下面记录的 Kasten 提供的工具,这会很有帮助。

$ docker run --rm -it gcr.io/kasten-images/k10offline:4.0.5 list-images

2. 将所有 K10 镜像下载到本地机器的 Registry 中
以下命令执行 k10offline 工具并使用 docker -in- docker(通过 docker.sock)将所有 K10 镜像下载到本地机器的 Registry 中。

$ docker run --rm -it -v /var/run/docker.sock:/var/run/docker.sock \
>     gcr.io/kasten-images/k10offline:4.0.5 pull images

3. 将所有 K10 镜像拉入您的本地存储库,并重新标记

最后,为了完全自动化 K10 Docker 映像的下载和重新上传,以下命令会将所有 K10 映像拉入您的本地存储库,并重新标记 repo.example.com 并将它们推送到此指定的 Registry 。请注意,如果私有 Registry 需要身份验证,此工具将使用您的本地 docker 配置。

$ docker login --username=10000******* ccr.ccs.tencentyun.com
$ docker run --rm -ti -v /var/run/docker.sock:/var/run/docker.sock \
    -v ${HOME}/.docker:/root/.docker \
    gcr.io/kasten-images/k10offline:4.0.5 pull images --newrepo repo.example.com

3.2. 使用 Veeam 工程师方法部署镜像库

Veeam SE 团队的 魏磊 已经创造了更方便的方法部署 Kasten K10 镜像库,请参考如下文档

Kasten K10入门系列04 - K10安装包下载
https://mp.weixin.qq.com/s/q87OEm2ktn4QBI-jrD6V_w

3.3. 针对无网络环境,使用手动方式部署镜像库

有些时候,某客户部署 K8S 环境是完全没有网络的,针对这样的用户我们准备通过 Docker Save 导出的 Tar 包是最新的 4.0.5 版本

1. 离线软件包下载
以下软件包是由 Veeam SE 团队的 魏磊 提供的,如果有需要离线下载资源的也可以使用我们已经在中国部署的镜像库,或是联系我们。

请通过如下渠道下载:
https://cloud.189.cn/t/zIVZ3uaIzUr2(访问码:8fbw

2. 离线软件包的查看与命名规则

下载过程结束后,您将得到一个软件包,里面包含24个文件,每个文件文件名由3部分组成(镜像名|版本+镜像ID)。我们需要根据 『-』按照从后到前的顺序将其拆分。

20210628161945

2. 离线软件包的查看与命名规则
下载后把这些文件,用 docker load、docker tag、docker push命令,导入到你的存储库,以下是范例

$ docker load -i jimmidyson--configmap-reload--v0.4.0--37e6075b1356.tar

$ docker images 查看一下导入的情况,注意要进行docker login

$ docker images 
$ docker login --username=10000******* ccr.ccs.tencentyun.com

打 tag, push

$ docker tag 3b6d0bf8e711 ccr.ccs.tencentyun.com/kasten-k10/restorectl:4.0.5
$ docker push ccr.ccs.tencentyun.com/kasten-k10/restorectl:4.0.5

注意:大部分的镜像版本都是 4.0.5,有5个版本不是 原生 kasten images POD 将以 k10 开头

root@ubuntu:/home/mars/Desktop# docker images 
REPOSITORY                                           TAG           IMAGE ID       CREATED         SIZE
ghcr.io/kanisterio/kanister-tools/                   k10-0.61.0    99624811c928   8 days ago      425MB
quay.io/dexidp/dex                                   k10-v2.24.0   bb0b95a82a8a   13 months ago   34.2MB
quay.io/datawire/ambassador                          k10-1.13.6    09ecebfe1767   4 weeks ago     373MB
quay.io/prometheus/prometheus                        k10-v2.26.0   6d6859d1a42a   2 months ago    169MB
jimmidyson/configmap-reload                          k10-v0.5.0    d771cc9785a1   5 months ago    9.99MB
gcr.io/kasten-images/k10offline                      4.0.5         133f5a682ed8   6 days ago      237MB
gcr.io/kasten-images/frontend                        4.0.5         ae95f8a8189f   8 days ago      234MB
gcr.io/kasten-images/auth                            4.0.5         5432edc01c41   8 days ago      194MB
gcr.io/kasten-images/jobs                            4.0.5         81f48f237e5d   8 days ago      188MB
gcr.io/kasten-images/catalog                         4.0.5         9016df63b503   8 days ago      240MB
gcr.io/kasten-images/aggregatedapis                  4.0.5         3150ee79d881   8 days ago      247MB
gcr.io/kasten-images/config                          4.0.5         15b0ccea27d6   8 days ago      244MB
gcr.io/kasten-images/executor                        4.0.5         2baf456fbc25   8 days ago      249MB
gcr.io/kasten-images/dashboardbff                    4.0.5         9bb2eac71054   8 days ago      248MB
gcr.io/kasten-images/metering                        4.0.5         fe8879f15b18   8 days ago      242MB
gcr.io/kasten-images/state                           4.0.5         0d9722ba46ab   8 days ago      189MB
gcr.io/kasten-images/crypto                          4.0.5         ca32ec19516a   8 days ago      197MB
gcr.io/kasten-images/datamover                       4.0.5         348af65fe6cd   8 days ago      905MB
gcr.io/kasten-images/k10tools                        4.0.5         c92a7d2356a4   8 days ago      233MB
gcr.io/kasten-images/upgrade                         4.0.5         87aab37087f7   8 days ago      115MB
gcr.io/kasten-images/restorectl                      4.0.5         3b6d0bf8e711   8 days ago      229MB
gcr.io/kasten-images/logging                         4.0.5         557dfc441841   8 days ago      255MB
gcr.io/kasten-images/kanister                        4.0.5         ea462073460e   8 days ago      371MB
gcr.io/kasten-images/cephtool                        4.0.5         aae661a7ce5f   6 months ago    524MB

3.4 对于两个特殊镜像的上传 Restorectl 和 k10offline 镜像

以下两个软件包,不会出现在镜像库中,但时常会用到。所以我们通过 Docker 命令把它们手动推送到
TCR上

  • Restorectl 用于容灾和异地恢复
  • k10offline 离线工具包
$ docker login --username=10000***** ccr.ccs.tencentyun.com
$ docker tag 3b6d0bf8e711 ccr.ccs.tencentyun.com/kasten-k10/restorectl:4.0.5
$ docker pull gcr.io/kasten-images/k10offline:4.0.5
$ docker push ccr.ccs.tencentyun.com/kasten-k10/restorectl:4.0.5

$ docker pull gcr.io/kasten-images/k10offline:4.0.5
$ docker tag 3b6d0bf8e711 ccr.ccs.tencentyun.com/kasten-k10/restorectl:4.0.5
$ docker push ccr.ccs.tencentyun.com/kasten-k10/restorectl:4.0.5

4. 查看部署完成的 TCR 镜像库

确保 TCR 已经配置完善

20210627200943

5. 总结

将 Kasten K10 的 Helm Chart 部署在 腾讯 TCR 解决我们有时,不能方便访问 gcr.io 的问题,使我们可以更加方便安装Kasten K10。欢迎大家扫描下方二维码申请 K10 免费试用,亲身动手试一试。

20210628171302

6. 参考链接

Jfrog artifactory
https://kb.kasten.io/knowledge/jfrog
参考 Kasten 文档 Air-Gapped Install
https://docs.kasten.io/latest/install/offline.html#preparing-k10-container-images-for-air-gapped-use
Kasten K10入门系列04 - K10安装包下载
https://mp.weixin.qq.com/s/q87OEm2ktn4QBI-jrD6V_w
腾讯云 TCR 文档与资源
https://cloud.tencent.com/document/product/1141
Docker 操作要点
https://docs.docker.com/get-started/
Kasten by Veeam 官网
https://docs.kasten.io/latest/
Complete List of K10 Helm Options
https://docs.kasten.io/latest/install/advanced.html

7.附录:将 docker images save 再 load 的方法参考

#查看 docker images
root@ubuntu:/home/mars/Desktop# docker images |grep jimmi
jimmidyson/configmap-reload                       v0.4.0        37e6075b1356   11 months ago   10.7MB
# docker save images to tar file 
root@ubuntu:/home/mars/Desktop# docker save jimmidyson/configmap-reload:v0.4.0 > jimmidyson--configmap-reload--v0.4.0--37e6075b1356.tar
root@ubuntu:/home/mars/Desktop# ls
jimmidyson--configmap-reload--v0.4.0--37e6075b1356.tar
# 模拟删除 docker images
root@ubuntu:/home/mars/Desktop# docker rmi jimmidyson/configmap-reload:v0.4.0
Untagged: jimmidyson/configmap-reload:v0.4.0
# docker images 已经看不到它了
root@ubuntu:/home/mars/Desktop# docker images |grep jimmi
root@ubuntu:/home/mars/Desktop# 

#查看 docker tar
root@ubuntu:/home/mars/Desktop# ls -lah
total 11M
-rw-r--r--  1 root root  11M Jun 24 23:23 jimmidyson--configmap-reload--v0.4.0--37e6075b1356.tar
# 用 docker load 把镜像读回来
root@ubuntu:/home/mars/Desktop# 
root@ubuntu:/home/mars/Desktop# docker load -i jimmidyson--configmap-reload--v0.4.0--37e6075b1356.tar