我有一个从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