0

我正在 AKS 群集中部署一个容器。

我想将一个配置文件夹(大小 200+ MB)安装到这个容器中。配置文件夹存在于 git repo 中。每个客户都有自己的配置数据,并存储在同一 repo 的单独分支中。

我正在考虑将配置文件夹加载到容器中的以下选项:

  1. 持久卷声明 - PVC 我将创建一个文件共享并将配置文件夹复制到其中。使用 PVC 将文件共享挂载到容器中。在这种方法中,我需要将存储访问密钥/sas 令牌添加到 kubernetes 机密中。
  2. 压缩配置文件夹并将其复制到 Blob 存储。在容器启动脚本中,从 blob 存储下载 zio 并挂载到所需位置。在这种方法中,我必须使用 SAS 令牌来访问存储帐户。(此令牌将在 kubernetes 中保存为秘密)
  3. 在容器启动脚本中,git clone 包含配置文件夹的 repo,下载并复制到所需位置。在这种方法中,我需要使用 PAT 令牌来克隆 git。
  4. 将 config 文件夹复制到 docker 映像本身。在这种方法中,我不必担心如何在容器中加载配置文件夹。但是,由于配置文件夹是特定于客户的并且有 100 多个客户,因此会产生大约 100 多个图像标签。(我们为客户添加了标签)

你能指导我哪个是最好的选择吗?有没有其他更好的方法。

我已经读到使用 PVC 共享卷存在安全问题,这可能会将节点上的 root 权限授予攻击者。在容器内使用 git 也存在安全问题。您能否提供有关这些安全问题的原因/方式的更多信息?

4

5 回答 5

2

使用 init 容器将配置文件夹从 git repo 加载到 init 容器和主容器之间的共享卷中

于 2019-05-15T06:17:23.480 回答
1

我建议使用某种存储,然后使用某种 NFS 驱动器。

您必须考虑一些注意事项: - 有多少写入 - 有多少读取 - 通常文件大小是多少

我建议不要使用启动脚本来下载它,因为这会使你的容器启动速度慢得多,一般来说,当你启动它时,容器应该准备好为流量提供服务。您可以在 Azure https://docs.microsoft.com/en-us/azure/storage/blobs/storage-how-to-mount-container-linux上执行类似的操作

于 2019-05-14T18:28:29.190 回答
1

如果您使用的是 AKS,您可以使用 Azure 文件持久卷声明来创建配置,您可以在只读模式下使用文件共享,这将提供更好的安全性。

在我看来,所有其他选项都不太方便(并且可以说不太安全)

于 2019-05-14T19:33:18.530 回答
0

我会使用git sync 图像(那里有很多)。这样,您应该使用只读访问权限(您提到的 PAT 令牌不应提供对 repo 的写访问权限)。它支持从不同的分支读取,只需将值传递给它(很容易通过舵图)。好在你可以进一步同步配置(如果你的微服务支持的话)。

我看到所有其他解决方案都更加复杂。

于 2019-05-15T11:29:40.413 回答
0

我想我们可以用简单的方法来做。你可以使用 helm 和hookScript我的想法是

  1. 当您使用具有配额的空 PVC 进行部署时,请指定
  2. 然后通过 Configmap 或环境变量或Helm 变量应用 URL
  3. 之后,当挂钩时,只需使用 git clone 从您FILE_DOWNLOAD_GIT_REPO到您的 PVC 安装。它:)

去掉不必要的步骤,可以重复使用。正确的 ?:)抱歉,我太困了,无法为您编写示例舵。但希望你有一个想法。:)

于 2019-05-14T19:48:36.470 回答