Closed jinjianming closed 1 year ago
这个并不是airgap功能的目标场景,并不会从代码层面去支持,我将issue的label修改为 help wanted
。
从你的描述里面没有看到修改checksum的具体内容,但大概率是这一步出问题。所以你可以把生成checksum的shell步骤贴出来看看。
@orangedeng 抱歉是我没有描述完整、以下是我完整过程; 1、首先我通过airgap创建名为0428的v1.20.15+k3s1离线包
[root@HK-ChatGPT-Proxy01 ~]# autok3s airgap create 0428 --arch amd64 --k3s-version 'v1.20.15+k3s1'
airgap package 0428 record created, prepare to download
INFO[2023-04-28T09:24:28+08:00] generating version file package=0428 version=v1.20.15+k3s1
INFO[2023-04-28T09:24:28+08:00] download amd64 resources package=0428 version=v1.20.15+k3s1
INFO[2023-04-28T09:24:29+08:00] downloading k3s-airgap-images.tar.gz for amd64 package=0428 version=v1.20.15+k3s1
WARN[2023-04-28T09:24:29+08:00] failed to download resource k3s-airgap-images.tar.gz for amd64, skip this resource, failed to download resource https://github.com/k3s-io/k3s/releases/download/v1.20.15%2Bk3s1/k3s-airgap-images-amd64.tar.gz, Not Found package=0428 version=v1.20.15+k3s1
INFO[2023-04-28T09:24:29+08:00] downloading k3s-airgap-images.tar for amd64 package=0428 version=v1.20.15+k3s1
INFO[2023-04-28T09:24:47+08:00] downloading sha256sum.txt for amd64 package=0428 version=v1.20.15+k3s1
INFO[2023-04-28T09:24:47+08:00] downloading k3s for amd64 package=0428 version=v1.20.15+k3s1
INFO[2023-04-28T09:24:51+08:00] all downloaded files are validated for amd64 package=0428 version=v1.20.15+k3s1
INFO[2023-04-28T09:24:51+08:00] k3s resource for amd64 downloaded. package=0428 version=v1.20.15+k3s1
airgap package 0428 created and stored in path /root/.autok3s/package/0428
2、进到 离线目录下进行添加镜像
cd /root/.autok3s/package/0428/amd64
[root@HK-ChatGPT-Proxy01 amd64]# ll
total 500032
-rw-r--r-- 1 root root 47284224 Apr 28 09:24 k3s
-rw-r--r-- 1 root root 464734208 Apr 28 09:24 k3s-airgap-images.tar
-rw-r--r-- 1 root root 327 Apr 28 09:24 k3s-images.txt
-rw-r--r-- 1 root root 245 Apr 28 09:24 sha256sum.txt
[root@HK-ChatGPT-Proxy01 amd64]# rm -rf k3s-airgap-images.tar
[root@HK-ChatGPT-Proxy01 amd64]#docker save \
registry:2.7.1 \
docker.io/rancher/coredns-coredns:1.8.3 \
docker.io/rancher/klipper-helm:v0.6.6-build20211022 \
docker.io/rancher/klipper-lb:v0.2.0 \
docker.io/rancher/library-busybox:1.32.1 \
docker.io/rancher/library-traefik:1.7.19 \
docker.io/rancher/local-path-provisioner:v0.0.19 \
docker.io/rancher/metrics-server:v0.3.6 \
docker.io/rancher/pause:3.1 \
-o k3s-airgap-images.tar
3、处理镜像文件;
我将新增镜像添加到k3s-images.txt
文件中
[root@HK-ChatGPT-Proxy01 amd64]# cat k3s-images.txt
registry:2.7.1
docker.io/rancher/coredns-coredns:1.8.3
docker.io/rancher/klipper-helm:v0.6.6-build20211022
docker.io/rancher/klipper-lb:v0.2.0
docker.io/rancher/library-busybox:1.32.1
docker.io/rancher/library-traefik:1.7.19
docker.io/rancher/local-path-provisioner:v0.0.19
docker.io/rancher/metrics-server:v0.3.6
docker.io/rancher/pause:3.1
4、处理256校验文件
[root@HK-ChatGPT-Proxy01 amd64]# rm -rf sha256sum.txt
[root@HK-ChatGPT-Proxy01 amd64]#
[root@HK-ChatGPT-Proxy01 amd64]# rm -rf sha256sum.txt
[root@HK-ChatGPT-Proxy01 amd64]# sha256sum k3s k3s-airgap-images.tar k3s-images.txt > sha256sum.txt
[root@HK-ChatGPT-Proxy01 amd64]# cat sha256sum.txt
a3f06b4e0f3c677bc9780185ad7bc9d58b622a9811701d1ce07938d4c63962c6 k3s
37e126bf14e5df38a28612c3e19112cf2c9a6d440ecd2a1124dafb95ded3f755 k3s-airgap-images.tar
4f264dba3825f28851ae1f0ca3c02815dcafdbea81252cc37c7ab8d9592f5a99 k3s-images.txt
[root@HK-ChatGPT-Proxy01 amd64]# sha256sum -c sha256sum.txt
k3s: OK
k3s-airgap-images.tar: OK
k3s-images.txt: OK
5、导出名为04280-registry.tar.gz
的离线包
[root@HK-ChatGPT-Proxy01 amd64]# autok3s airgap export 0428 /root/04280-registry.tar.gz
package 0428 export to /root/04280-registry.tar.gz succeed
6、将/root/04280-registry.tar.gz
导入,提示checksum失败;
[root@HK-ChatGPT-Proxy01 amd64]# autok3s airgap import /root/04280-registry.tar.gz --debug
DEBU[2023-04-28T09:32:55+08:00] Reporting metrics
? Please input the package name 04280-registry
2023/04/28 09:32:57 /go/src/github.com/cnrancher/autok3s/pkg/common/package.go:39 record not found
[0.138ms] [rows:0] SELECT * FROM `packages` WHERE name = "04280-registry" ORDER BY `packages`.`name` LIMIT 1
? Please input the package name 04280-registry
Error: checksum for file amd64/k3s-airgap-images.tar mismatch
Usage:
autok3s airgap import <path> [name] [flags]
Flags:
-h, --help help for import
Global Flags:
-d, --debug Enable log debug level
@orangedeng 有什么建议么~
找到问题了,校验的时候没有使用文件txt里面的文件名称而是自己拼接的.
filepath.Join(basePath, arch)
sha的txt里面必须叫 k3s-airgap-images-amd64.tar.gz
,即使我的文件并不叫这个。
确实是这个问题,当时设计的时候是这样处理的: 为了保证scp文件时比较容易的能把source path和target path处理好,在本地存储airgap资源时统一了存储名称:
.
├── .done
├── amd64
│ ├── .done
│ ├── k3s
│ ├── k3s-airgap-images.tar.gz
│ ├── k3s-images.txt
│ └── sha256sum.txt
├── arm64
│ ├── .done
│ ├── k3s
│ ├── k3s-airgap-images.tar.gz
│ ├── k3s-images.txt
│ └── sha256sum.txt
└── version.json
但实际上验证文件的时候,会读取sha256sum的内容进行拆分并识别到对应资源的hash进行对比。 不过这个确实不是我当时设计的目标场景,谢谢反馈并给出workaround
@orangedeng 你好 我想将
registry:2.7.1
镜像也封装到k3s-airgap-images.tar
离线镜像里面2、修改sha256sum.txt里面的sha值; 3、导出并导入
应该怎么才能将其他镜像加到离线包中。