使用 minikube 配置 apiserver 以使用加密配置

Configure apiserver to use encryption config using minikube

我正在尝试配置 kube-apiserver 以便它使用加密来配置我的 minikube 集群中的机密。

为此,我遵循了 documentation on kubernetes.io 但卡在了第 3 步

kube-apiserver 上设置 --encryption-provider-config 标志以指向配置文件的位置。

我在 minikube start 上发现了选项 --extra-config 并尝试使用

开始我的设置

minikube start --extra-config=apiserver.encryption-provider-config=encryptionConf.yaml

但自然它不起作用,因为 encryptionConf.yaml 位于我的本地文件系统中,而不是在由 minikube 启动的 pod 中。 minikube log 给我的错误是

error: error opening encryption provider configuration file "encryptionConf.yaml": open encryptionConf.yaml: no such file or directory

将加密配置文件放到 kube-apiserver 上的最佳做法是什么?或者 minikube 可能是尝试这些事情的错误工具?

根据使用的驱动程序,一些目录已安装到您的 minikube VM 上。 检查此 link - https://kubernetes.io/docs/setup/minikube/#mounted-host-folders

另外 ~/.minikube/files 也安装到 VM 的 /files 中。因此,您可以将文件保存在那里并将该路径用于 API 服务器配置

我自己在 this GitHub issue 中找到了解决方案,他们在传递配置文件时遇到了类似的问题。对我有帮助的评论是一个有点老套的解决方案,它利用了 minikube VM 中的目录 /var/lib/localkube/certs/ 被挂载到 apiserver 中这一事实。

所以我最终的解决方案是 运行

minikube mount .:/var/lib/minikube/certs/hack

在当前目录中我有 encryptionConf.yaml 然后像这样启动 minikube

minikube start --extra-config=apiserver.encryption-provider-config=/var/lib/minikube/certs/hack/encryptionConf.yaml

我在 windows 中遇到了关于文件路径位置的类似问题 因为 C:\Users\%USERNAME%\ 默认安装在 minikube VM 中 所以我将文件复制到桌面文件夹(C 盘 下的任何文件夹)

minikube --extra-config=apiserver.encryption-provider-config=/c/Users/%USERNAME%/.../<file-name>  

希望这对在 windows 平台上遇到此问题的人们有所帮助。