将 kubeconfig 文件复制到 jenkins 上下文时找不到文件错误
File not found error when copying kubeconfig file to jenkins context
我正在尝试使用 Jenkins 访问 k0s 集群,以便从 Jenkins 管道进行部署。为了在 kubeconfig 文件中 copy/paste 集群凭据,我尝试使用“~/.kube/config”命令访问,但出现“没有这样的文件或目录”的错误,即当我 运行 :
sudo cp ~/.kube/config ~/.jenkins/.kube/
我收到 没有那个文件或目录 错误。似乎配置文件不存在,或者可能位于我不知道的其他地方。
我根据文档 here :
为 root 用户创建了一个 kubeconfig 文件(假设它默认不存在)
k0s kubeconfig create root
但是当我重新尝试复制时,我仍然遇到同样的错误 'No such file or directory'。 kubeconfig 文件 已创建 根据此命令的输出 k0s kubeconfig create root
:
WARN[2022-01-30 17:44:16] no config file given, using defaults
apiVersion: v1
clusters:
cluster:
server: https://10.XXX.XXX.XXX:6443
certificate-authority-data: xxxxxxxx
name: k0s
contexts:
context:
cluster: k0s
user: root
name: k0s
current-context: k0s
kind: Config
preferences: {}
users:
name: root
user:
client-certificate-data: xxxxxxxxxxxx
我可以使用命令 k0s kubectl config view
:
验证文件确实存在
apiVersion: v1
clusters:
cluster:
certificate-authority-data: DATA+OMITTED
server: https://localhost:6443
name: local
contexts:
context:
cluster: local
namespace: default
user: user
name: Default
current-context: Default
kind: Config
preferences: {}
users:
name: user
user:
client-certificate-data: REDACTED
client-key-data: REDACTED
其中一篇帖子建议使用命令 k0s kubectl get pods -v=6
来查看 kubeconfig 文件的确切位置,但是当我 运行 时,k0s 似乎不支持 -v :
Error: unknown shorthand flag: 'v' in -v=6
See 'k0s kubectl get --help' for usage
作为检查,我已经做了 cd ~/.kube/config
,但那里什么也没有
我错过了什么?
您可以使用以下命令将 kubeconfig 复制到位置 /root/.kube/config
:
k0s kubectl config view --raw > ~/.kube/config
创建文件后,您应该不会收到提到的错误 "no such file or directory"
。
我发现我错过了什么:
~/.kube/config 默认情况下根本不会由 k0s 创建。 k0s 默认创建的是位于 /var/lib/k0s/pki/admin.conf
的“break-the-glass”管理 kubeconfig
所以我必须这样做:
cp /var/lib/k0s/pki/admin.conf ~/.kube/config
cp ~/.kube/config/admin.conf /var/lib/jenkins
- 将 jenkins 用户添加到 sudo 用户:
纳米-f /etc/sudoers
然后
jenkins ALL=NOPASSWD: ALL
然而,推荐的方法是使用适当的 RBAC 为 Jenkins 提供专用访问权限,仅允许所需的访问权限,例如服务帐户令牌。下一步我将不得不在另一个 Jenkins 实例上对此进行测试,因为我无法再撤销访问(使用 admin.conf 的缺点)
我正在尝试使用 Jenkins 访问 k0s 集群,以便从 Jenkins 管道进行部署。为了在 kubeconfig 文件中 copy/paste 集群凭据,我尝试使用“~/.kube/config”命令访问,但出现“没有这样的文件或目录”的错误,即当我 运行 :
sudo cp ~/.kube/config ~/.jenkins/.kube/
我收到 没有那个文件或目录 错误。似乎配置文件不存在,或者可能位于我不知道的其他地方。 我根据文档 here :
为 root 用户创建了一个 kubeconfig 文件(假设它默认不存在)k0s kubeconfig create root
但是当我重新尝试复制时,我仍然遇到同样的错误 'No such file or directory'。 kubeconfig 文件 已创建 根据此命令的输出 k0s kubeconfig create root
:
WARN[2022-01-30 17:44:16] no config file given, using defaults
apiVersion: v1
clusters:
cluster:
server: https://10.XXX.XXX.XXX:6443
certificate-authority-data: xxxxxxxx
name: k0s
contexts:
context:
cluster: k0s
user: root
name: k0s
current-context: k0s
kind: Config
preferences: {}
users:
name: root
user:
client-certificate-data: xxxxxxxxxxxx
我可以使用命令 k0s kubectl config view
:
apiVersion: v1
clusters:
cluster:
certificate-authority-data: DATA+OMITTED
server: https://localhost:6443
name: local
contexts:
context:
cluster: local
namespace: default
user: user
name: Default
current-context: Default
kind: Config
preferences: {}
users:
name: user
user:
client-certificate-data: REDACTED
client-key-data: REDACTED
其中一篇帖子建议使用命令 k0s kubectl get pods -v=6
来查看 kubeconfig 文件的确切位置,但是当我 运行 时,k0s 似乎不支持 -v :
Error: unknown shorthand flag: 'v' in -v=6
See 'k0s kubectl get --help' for usage
作为检查,我已经做了 cd ~/.kube/config
,但那里什么也没有
我错过了什么?
您可以使用以下命令将 kubeconfig 复制到位置 /root/.kube/config
:
k0s kubectl config view --raw > ~/.kube/config
创建文件后,您应该不会收到提到的错误 "no such file or directory"
。
我发现我错过了什么:
~/.kube/config 默认情况下根本不会由 k0s 创建。 k0s 默认创建的是位于 /var/lib/k0s/pki/admin.conf
的“break-the-glass”管理 kubeconfig所以我必须这样做:
cp /var/lib/k0s/pki/admin.conf ~/.kube/config
cp ~/.kube/config/admin.conf /var/lib/jenkins
- 将 jenkins 用户添加到 sudo 用户:
纳米-f /etc/sudoers
然后
jenkins ALL=NOPASSWD: ALL
然而,推荐的方法是使用适当的 RBAC 为 Jenkins 提供专用访问权限,仅允许所需的访问权限,例如服务帐户令牌。下一步我将不得不在另一个 Jenkins 实例上对此进行测试,因为我无法再撤销访问(使用 admin.conf 的缺点)