Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何从kubernetes吊舱获取configmap_Kubernetes - Fatal编程技术网

如何从kubernetes吊舱获取configmap

如何从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

我在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"]
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在运行时注入它,但由于没有配置而出现错误:(