如何从kubernetes吊舱获取configmap
我在docker容器上运行了一个spring boot微服务,下面是docker文件如何从kubernetes吊舱获取configmap,kubernetes,Kubernetes,我在docker容器上运行了一个spring boot微服务,下面是docker文件 FROM java:8-jre MAINTAINER <> WORKDIR deploy/ #COPY config/* /deploy/config/ COPY ./ms.console.jar /deploy/ CMD chmod +R 777 ./ms.console.jar CMD ["java","-jar","/deploy/ms.console.jar","console"] EXPO
FROM java:8-jre
MAINTAINER <>
WORKDIR deploy/
#COPY config/* /deploy/config/
COPY ./ms.console.jar /deploy/
CMD chmod +R 777 ./ms.console.jar
CMD ["java","-jar","/deploy/ms.console.jar","console"]
EXPOSE 8384
我的部署yml是:
apiVersion: apps/v1 # for versions before 1.8.0 use apps/v1beta1
kind: Deployment
metadata:
name: consoleservice1
spec:
selector:
matchLabels:
app: consoleservice
replicas: 1 # tells deployment to run 3 pods matching the template
template: # create pods using pod definition in this template
metadata:
labels:
app: consoleservice
spec:
containers:
- name: consoleservice
image: ms-console
ports:
- containerPort: 8384
imagePullPolicy: Always
envFrom:
- configMapRef:
name: console-configmap
imagePullSecrets:
- name: regcresd
我的疑问是,我在Dockerfile中注释了config文件夹,所以在运行pods时,它会因为没有配置而引发异常,我将如何将此控制台configmap注入到我的部署中,我已尝试共享的内容,但是也会遇到同样的问题。是否需要从配置文件中加载key:value对作为环境变量,然后使用下面的规范
envFrom:
- configMapRef:
name: console-configmap
如果您需要将配置作为pod中的文件,则将configmap作为卷装载。下面的链接会有帮助
是否需要将配置文件中的键:值对作为环境变量加载,然后使用下面的规范
envFrom:
- configMapRef:
name: console-configmap
如果您需要将配置作为pod中的文件,则将configmap作为卷装载。下面的链接会有帮助
首先,您如何在应用程序中使用.yml文件?如果您将yml文件内容作为环境变量使用,那么您的配置应该可以正常工作。但我怀疑您想要使用容器内配置文件中的内容。如果是这种情况,您必须按如下方式从configmap创建卷:
apiVersion: apps/v1 # for versions before 1.8.0 use apps/v1beta1
kind: Deployment
metadata:
name: consoleservice1
spec:
selector:
matchLabels:
app: consoleservice
replicas: 1 # tells deployment to run 3 pods matching the template
template: # create pods using pod definition in this template
metadata:
labels:
app: consoleservice
spec:
containers:
- name: consoleservice
image: ms-console
ports:
- containerPort: 8384
imagePullPolicy: Always
volumeMounts:
- mountPath: /app/config
name: config
volumes:
- name: config
configMap:
name: console-configmap
imagePullSecrets:
- name: regcresd
该文件将位于路径
/app/config/console server.yml
中。您必须根据需要修改它。首先,您如何在应用程序中使用.yml文件?如果您将yml文件内容作为环境变量使用,那么您的配置应该可以正常工作。但我怀疑您想要使用容器内配置文件中的内容。如果是这种情况,您必须按如下方式从configmap创建卷:
apiVersion: apps/v1 # for versions before 1.8.0 use apps/v1beta1
kind: Deployment
metadata:
name: consoleservice1
spec:
selector:
matchLabels:
app: consoleservice
replicas: 1 # tells deployment to run 3 pods matching the template
template: # create pods using pod definition in this template
metadata:
labels:
app: consoleservice
spec:
containers:
- name: consoleservice
image: ms-console
ports:
- containerPort: 8384
imagePullPolicy: Always
volumeMounts:
- mountPath: /app/config
name: config
volumes:
- name: config
configMap:
name: console-configmap
imagePullSecrets:
- name: regcresd
该文件将位于路径
/app/config/console server.yml
中。您必须根据自己的需要进行修改。您好,请您提供更清晰的说明,这意味着您是说我必须保留带有图像的配置,并且使用configmap我可以在运行时修改配置,是否正确?是的。使用configMap,您可以将应用程序配置与应用程序映像解耦Hi,您是否可以提供更清晰的说明,这意味着您是说我必须使用映像保留配置,使用configMap,我可以在运行时修改配置,是否正确?是的。使用configMap,您可以将应用程序配置与应用程序imageHi Malathi解耦,谢谢,是的,我没有使用env变量,所以我必须像这样注入配置,虽然我的workdir是deploy,所以mountpath将是/deploy/config,您能在config map上帮助我吗,我正在使用下面的命令创建控制台配置映射。kubectl create configmap console configmap--从文件=./config/console-server.yml,此路径是我的本地路径,它将如何动态更改为我的容器映像?创建配置映射后,没有定义任何路径。在部署yaml中定义volumeMount时,需要指定路径。在上面的示例中,我指定了要安装在/app/config
上的卷。因此,该文件在路径/app/config/console server.yml
中可用。在上面的回答中,如果您将mountPath更改为/deploy,则该文件在/deploy/console-server.yml中可用。我们所说的文件路径是我的本地文件路径还是在我的容器路径中?很抱歉,我对此一无所知。这是容器路径。Kubernetes部署收集信息以运行containersHi,现在我在创建容器实例(dockerfile上方)时没有复制我的配置目录,因为我们将使用configmap注入它的运行时,但由于没有配置而出现错误:(您好Malathi,谢谢,是的,我没有使用env变量,所以我必须像这样注入配置,虽然我的workdir是deploy,所以mountpath将是/deploy/config,请您在配置映射上帮助我,我使用下面的命令创建控制台配置映射。kubectl create configmap console configmap--from file=./config/console-server.yml,此路径是我的本地路径,它将如何动态更改为我的容器映像?创建configmap后,没有定义任何路径。在部署yaml中定义volumeMount时,指定路径。在上面的示例中,我指定了要装载在/app/config
上的卷。因此,该文件在路径/app>中可用/config/console server.yml
。在上面的回答中,如果您将mountPath更改为/deploy,则文件将在/deploy/console-server.yml上可用。我们讨论的文件路径是我的本地文件路径还是在我的容器路径内?很抱歉,我对此一无所知。这是容器路径。Kubernetes部署收集信息以运行containersHi,现在我在创建容器实例(dockerfile上方)时没有复制我的配置目录,因为我们将使用configmap在运行时注入它,但由于没有配置而出现错误:(