Open yhlooo opened 2 years ago
发生了什么:
在我的 minikube 中尝试使用 edgeadm 将其转换为一个具有边缘能力的集群,我执行了以下命令
edgeadm change --ca.cert ./ca.crt --ca.key ./ca.key
其日志输出如下:
看起来并没有成功
我猜测的原因:
从命令执行的输出来看,是往 Kubernetes 创建一个 Secret 报错了,原因是某个值不是一个合法的 base64
找到相关代码:
https://github.com/superedge/edgeadm/blob/d63c731345424cd26e39734144b852784f4245aa/pkg/edgeadm/cmd/change/kubeadm.go#L238-L251
manifests.TunnelCloudYaml
tunnel-cloud-cert
{{.TunnelAnpServerCet}}
{{.TunnelAnpServerKey}}
"TunnelAnpServerCet"
"TunnelAnpServerKey"
<no value>
CreateResourceWithFile
经过我验证,如果在 manifests 中注释掉相关 Secret 中 tunnel-anp-server.crt 和 tunnel-anp-server.key 即可无错误地通过这段逻辑。但是因为不了解这个证书的用途,因此也不确定这样是否会导致其它问题。
tunnel-anp-server.crt
tunnel-anp-server.key
其它信息:
执行 edgeadm version 的输出:
edgeadm version
{ "gitVersion": "v0.8.0", "gitBranch": "release-1.20", "gitCommit": "d63c731345424cd26e39734144b852784f4245aa", "gitTreeState": "dirty", "buildDate": "2022-07-25T14:11:51Z", "goVersion": "go1.17.11", "compiler": "gc", "platform": "linux/amd64" }
发生了什么:
在我的 minikube 中尝试使用 edgeadm 将其转换为一个具有边缘能力的集群,我执行了以下命令
其日志输出如下:
看起来并没有成功
我猜测的原因:
从命令执行的输出来看,是往 Kubernetes 创建一个 Secret 报错了,原因是某个值不是一个合法的 base64
找到相关代码:
https://github.com/superedge/edgeadm/blob/d63c731345424cd26e39734144b852784f4245aa/pkg/edgeadm/cmd/change/kubeadm.go#L238-L251
manifests.TunnelCloudYaml
其中有一个名为tunnel-cloud-cert
的 Secret ,含有变量{{.TunnelAnpServerCet}}
和{{.TunnelAnpServerKey}}
"TunnelAnpServerCet"
和"TunnelAnpServerKey"
两个键,因此生成的最终的 manifests 中这两个变量会被<no value>
替代(这不是个合法的 base64 字符串)CreateResourceWithFile
方法会使用变量填充模版,然后提交到 Kubernetes ,导致了上述报错经过我验证,如果在 manifests 中注释掉相关 Secret 中
tunnel-anp-server.crt
和tunnel-anp-server.key
即可无错误地通过这段逻辑。但是因为不了解这个证书的用途,因此也不确定这样是否会导致其它问题。其它信息:
执行
edgeadm version
的输出: