首页 > 解决方案 > 想要在 K8s 部署后加载一些 XML 文件

问题描述

对于我的项目,我想在需要时在 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"

标签: xmlkuberneteskubernetes-helmkubernetes-cronjob

解决方案


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

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


推荐阅读