【问题标题】:What is the best approach to load a configuration folder (200+ MB) into container将配置文件夹(200+ MB)加载到容器中的最佳方法是什么
【发布时间】:2019-05-14 18:17:07
【问题描述】:

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

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

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

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

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

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

【问题讨论】:

标签: azure kubernetes azure-aks kubernetes-pvc


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

    您必须考虑以下几点: - 有多少写 - 读了多少 - 通常的文件大小是多少

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

    上做这样的事情

    【讨论】:

    • 我同意@kevin Simper 的观点,我们应该避免运行启动脚本。容器应该快速启动。 PVC 的方法对我来说听起来不错。
    【解决方案3】:

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

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

    【讨论】:

      【解决方案4】:

      我认为我们可以通过简单的方式做到这一点。你可以使用 helm 和 hookScript 我的想法是

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

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

      【讨论】:

        【解决方案5】:

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

        我发现所有其他解决方案都更加复杂。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2023-03-25
          • 2017-08-22
          • 2019-08-13
          • 2011-10-17
          • 2017-05-29
          • 1970-01-01
          相关资源
          最近更新 更多