Mongodb 如何将本地文件复制到helm部署中
我正试图在Kubernetes中使用mongo映像部署几个pod,其中包含一个初始化脚本。我正在使用头盔进行部署。因为我是从官方的Mongo docker映像开始的,所以我尝试在/docker entrypoint initdb.d添加一个脚本,以便在开始时执行它来初始化Mongo的一些参数 我不知道的是如何插入脚本,也就是说,在我的本地机器中,使用helm在/docker entrypoint initdb.d中插入脚本Mongodb 如何将本地文件复制到helm部署中,mongodb,docker,kubernetes,kubernetes-helm,Mongodb,Docker,Kubernetes,Kubernetes Helm,我正试图在Kubernetes中使用mongo映像部署几个pod,其中包含一个初始化脚本。我正在使用头盔进行部署。因为我是从官方的Mongo docker映像开始的,所以我尝试在/docker entrypoint initdb.d添加一个脚本,以便在开始时执行它来初始化Mongo的一些参数 我不知道的是如何插入脚本,也就是说,在我的本地机器中,使用helm在/docker entrypoint initdb.d中插入脚本 我试图做一些类似docker run-v hostfile:mongof
我试图做一些类似docker run-v hostfile:mongofile的事情,但我需要在helm中使用等效的工具,因此这将在部署的所有POD中完成,您可以使用configmap。让我们通过configmap将nginx配置文件放入容器。我们有一个名为nginx的目录名,具有相同的级别值.yml。在里面我们有实际的配置文件
apiVersion: v1
kind: ConfigMap
metadata:
name: nginx-config-file
labels:
app: ...
data:
nginx.conf: |-
{{ .Files.Get "nginx/nginx.conf" | indent 4 }}
---
apiVersion: apps/v1beta2
kind: Deployment
metadata:
name: SomeDeployment
...
spec:
replicas:
selector:
matchLabels:
app: ...
release: ...
template:
metadata:
labels:
app: ...
release: ...
spec:
volumes:
- name: nginx-conf
configMap:
name: nginx-config-file
items:
- key: nginx.conf
path: nginx.conf
containers:
- name: ...
image: ...
volumeMounts:
- name: nginx-conf
mountPath: /etc/nginx/nginx.conf
subPath: nginx.conf
您还可以通过以下链接检查initContainers概念:
您可以使用configmap。让我们通过configmap将nginx配置文件放入容器。我们有一个名为nginx的目录名,具有相同的级别值.yml。在里面我们有实际的配置文件
apiVersion: v1
kind: ConfigMap
metadata:
name: nginx-config-file
labels:
app: ...
data:
nginx.conf: |-
{{ .Files.Get "nginx/nginx.conf" | indent 4 }}
---
apiVersion: apps/v1beta2
kind: Deployment
metadata:
name: SomeDeployment
...
spec:
replicas:
selector:
matchLabels:
app: ...
release: ...
template:
metadata:
labels:
app: ...
release: ...
spec:
volumes:
- name: nginx-conf
configMap:
name: nginx-config-file
items:
- key: nginx.conf
path: nginx.conf
containers:
- name: ...
image: ...
volumeMounts:
- name: nginx-conf
mountPath: /etc/nginx/nginx.conf
subPath: nginx.conf
您还可以通过以下链接检查initContainers概念:
在这种情况下,我会将文件直接添加到我的自定义图像中。在这种情况下,我会将文件直接添加到我的自定义图像中。非常感谢您的回答!我正试图做到这一点,在helm安装期间添加一个nginx配置文件。nginx.conf文件中的某些字段依赖于此安装运行,您对如何在安装期间设置此值有何建议?e、 g.:
server_name{{{.Values.server.name}代码>我知道这不起作用,因为conf文件不是一个go文件template@Kajsa你可以用多种方法来做。您可以将配置文件直接放入confimap中,并通过helm渲染在其中使用它。或者使用initContainers,您可以通过某种bash脚本更改配置文件。因为initContainers在实际的容器和卷可以共享之前运行。我刚刚意识到,这段代码不一定会启动带有nginx入口控制器的pod,而nginx入口控制器可能会在这个helm安装启动之前运行。我找不到关于这些东西(入口控制器吊舱、入口实例、配置文件等)如何实际结合在一起的好解释。您正在通过ConfigMap导入的配置文件,应该是入口控制器部署的一部分,还是您希望入口将流量发送到的应用程序部署的一部分?@Kajsa不要对此示例感到困惑。Ingress controller是定制的nginx,在kubernetes中具有定制资源。此示例仅显示如何添加一些配置。您可以使用另一个映像代替nginx。不,您不能使用此配置文件,您应该使用k8s入口资源来定义nginx规则,其中包括路径、tls和服务属性。您可以动态地定义许多入口资源,而不是定义静态的单一nginx conf,这些资源可以由kubectl&helm部署。非常感谢您的回答!我正试图做到这一点,在helm安装期间添加一个nginx配置文件。nginx.conf文件中的某些字段依赖于此安装运行,您对如何在安装期间设置此值有何建议?e、 g.:server_name{{{.Values.server.name}代码>我知道这不起作用,因为conf文件不是一个go文件template@Kajsa你可以用多种方法来做。您可以将配置文件直接放入confimap中,并通过helm渲染在其中使用它。或者使用initContainers,您可以通过某种bash脚本更改配置文件。因为initContainers在实际的容器和卷可以共享之前运行。我刚刚意识到,这段代码不一定会启动带有nginx入口控制器的pod,而nginx入口控制器可能会在这个helm安装启动之前运行。我找不到关于这些东西(入口控制器吊舱、入口实例、配置文件等)如何实际结合在一起的好解释。您正在通过ConfigMap导入的配置文件,应该是入口控制器部署的一部分,还是您希望入口将流量发送到的应用程序部署的一部分?@Kajsa不要对此示例感到困惑。Ingress controller是定制的nginx,在kubernetes中具有定制资源。此示例仅显示如何添加一些配置。您可以使用另一个映像代替nginx。不,您不能使用此配置文件,您应该使用k8s入口资源来定义nginx规则,其中包括路径、tls和服务属性。您可以动态地定义许多入口资源,而不是定义静态的单一nginx conf,这些资源可以由kubectl&helm部署。