【问题标题】:Want to load some XML files post K8s deployment想要在 K8s 部署后加载一些 XML 文件
【发布时间】:2020-11-29 17:45:24
【问题描述】:

对于我的项目,我想在需要时在 adhoc 上加载一些 XML 的后期部署(不想在每个部署上都运行)。由于 k8s 集群的吞吐量不佳,直接从 Jenkins 或 GITLAB 管道加载它们需要更长的时间。我正在使用 Helm 进行 k8s 部署。有什么更好的方法或步骤可以让我的临时工作运行得更快。?在部署后我被建议不要这样做的可选阶段尝试传递我的服务帐户或我的帐户凭据以运行脚本。

来自 pod 的数据加载任务需要 10 分钟,但来自 Jenkins 或 GITLAB 需要 70-90 分钟。

限制:

  1. 服务帐户在 CLI 部署后受到限制 bash 运行脚本
  2. 将无法按照最佳做法在管道中使用我的个人凭据

现在我在需要时从本地的 shell 脚本中运行此手动步骤,如下所示。但是需要添加这部分管道。有什么帮助/建议吗?

pkstoken -cluster=<cluster> -user=<me> ns=sade_test1                                                                                         

echo "doing dataload import for $1"

 if  [ $1 == sade-t1 ]; then
  Namespace="sade_test1"
  Podname="sade_test_p1"
  
  kubectl -n $Namespace exec -it $Podname -- bash -c "cd /opt/tomcat/webapp/app-1/bin/ && echo import dataload_custom.xml"

【问题讨论】:

  • 你能把它拆分成一个单独的 Kubernetes 作业吗?您可以使用普通的 Helm 模板生成它,并且它可以访问服务帐户和其他集群内资源。编写 kubectl exec 脚本通常不是最佳实践。
  • 它是您的本地环境还是本地环境?这些文件始终相同还是正在更改?
  • @DavidMaze 谢谢或检查大卫。是否可以使用 kubernetes 作业连接到正在运行的 pod 并运行一些命令并退出。?我正在尝试检查,但没有运气
  • @PjoterS 感谢您的检查。这是本地的,这些文件会发生变化,当我构建新的 docker 映像时,我可能几乎一直都在这样做。但我只想在构建/CI-Pipeline 期间加载这些 XML……而不是在每次 pod 重新启动时加载。
  • 您是否考虑过将这些文件放在集群中的 pod 中然后在脚本中使用它的场景,或者它不是一个选项?

标签: xml kubernetes kubernetes-helm kubernetes-cronjob


【解决方案1】:

我唯一想到的是将emptyDir 挂载到应该创建这些XML 文件的位置。稍后您可以使用 nginx(或一些轻量级 Web 服务器)创建一个 sidecar 容器,该容器可以通过 HTTP 从emptyDir 读取此文件。您可以使用service 使用curlwget 下载此文件。

Service 连接到处于Ready 状态的任何 pod,因此在第一个 pod 准备就绪后,文件也将可供下载。

【讨论】:

    猜你喜欢
    • 2012-02-08
    • 2019-02-19
    • 1970-01-01
    • 2012-03-11
    • 1970-01-01
    • 1970-01-01
    • 2017-08-02
    • 1970-01-01
    • 2021-10-09
    相关资源
    最近更新 更多