将配置文件夹(200+ MB)加载到容器中的最佳方法是什么

时间:2019-05-14 18:17:07

标签: kubernetes azure-kubernetes azure-aks kubernetes-security kubernetes-pvc

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

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

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

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

您能指导我哪个是最佳选择?还有其他更好的方法吗?

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

5 个答案:

答案 0 :(得分:1)

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

您必须考虑一些注意事项: -那里有多少写 -多少读 -通常的文件大小是什么

我建议您不要使用启动脚本来下载它,因为这会使您的容器启动起来的速度变慢,通常来说,容器在启动时应准备好为流量提供服务。您可以在Azure https://docs.microsoft.com/en-us/azure/storage/blobs/storage-how-to-mount-container-linux

上执行类似的操作

答案 1 :(得分:1)

如果使用的是AKS,则可以使用Azure File持久卷声明创建配置,还可以以更多的只读方式使用文件共享,这样可以提供更好的安全性。

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

答案 2 :(得分:1)

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

答案 3 :(得分:0)

我认为我们可以采用简单的方法。您可以将头盔与hookScript一起使用,我的想法是

  1. 在使用带配额的空PVC进行部署时
  2. 然后通过Configmap或环境变量或Helm variable
  3. 应用URL
  4. 之后,在执行钩子操作时,只需使用FILE_DOWNLOAD_GIT_REPO到您的PVC挂接的git clone。那个:)

摆脱不必要的步骤,可以重复使用。对 ? :) 对不起,我很困了,无法为您编写示例头盔。但是希望您有个好主意。 :)

答案 4 :(得分:0)

我会使用git sync image(那里有很多)。这样,您应该使用只读访问权限(您提到的PAT令牌不应提供对存储库的写访问权限)。它支持从不同分支读取数据,只需要将值传递给它即可(轻松通过舵图)。 好处是您可以进一步同步配置(如果您的微服务支持的话)。

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