通过kubernetes中的YML将蝗虫文件复制到卷中



我有一个从github存储库中获取的yml文件。

apiVersion: v1
kind: ConfigMap
metadata:
name: scripts-cm
data:
locustfile.py: |
from locust import HttpLocust, TaskSet, task

class UserTasks(TaskSet):
@task
def index(self):
self.client.get("/")
@task
def stats(self):
self.client.get("/stats/requests")

class WebsiteUser(HttpLocust):
task_set = UserTasks

但我不想将我的配置管理设置为这样做,因为我有一个单独的locostfile.py,它相当大。有没有办法复制数据属性中的文件?或者我必须使用cat命令?

是否有方法将文件复制到数据属性中?

是的。您可以从文件创建configMap,并将此configMap作为卷装载到Pod。我准备了一个例子向你展示整个过程。

让我们假设您的locustfile.py只有Python脚本:

from locust import HttpLocust, TaskSet, task

class UserTasks(TaskSet):
@task
def index(self):
self.client.get("/")
@task
def stats(self):
self.client.get("/stats/requests")

class WebsiteUser(HttpLocust):
task_set = UserTasks

您需要使用以下命令从此文件创建configMap

  • $ kubectl create configmap scripts-cm --from-file=locustfile.py

之后,您可以将此configMap安装为Volume,如下例所示:

apiVersion: v1
kind: Pod
metadata:
name: ubuntu
spec:
containers:
- name: ubuntu
image: ubuntu
command: 
- sleep 
- "infinity" 
volumeMounts:
- name: config-volume
mountPath: /app/ # <-- where you would like to mount your files from a configMap 
volumes:
- name: config-volume
configMap:
name: scripts-cm # <-- name of your configMap
restartPolicy: Never

然后,您可以检查文件是否正确放置在/app目录中:

  • $ kubectl exec -it ubuntu -- ls /app/
locustfile.py

提示!

您可以通过将多个文件添加到configMap

  • --from-file=one.py --from-file=two.py ...

您还可以运行--from-file=.(使用目录中的所有文件(。


其他资源:

  • Kubernetes.io:配置pod容器:配置pod配置映射
  • Kubernetes.io:Configmap

最新更新