Specify an `int` value in Kubernetes ConfigMap?

后端 未结 2 1297
南方客
南方客 2021-01-24 07:11

Is there a way to specify int values in ConfigMap? When I try to specify a port number I get the following error.

error: error validating \"my-deplo         


        
相关标签:
2条回答
  • 2021-01-24 07:40

    You can't use configmap values in spec.template.spec.containers[0].ports[0].containerPort I'm afraid, it's for configuration values.

    The options you can use it for (specified in this guide) are

    • As an environment variable
    • As a command line config flag (using environment variables)
    • Using the volume plugin.

    If you want to make the port configurable for your deployment/pod, you might consider using Helm. Helm allows you to use Go templates in your manifests/definitions, and then you can override them upon invocation.

    Take this MySQL Chart template as an example, you could set the port here as a config option like so:

    ports:
      - name: mysql
      containerPort: {{ default 3306 .Values.mysqlPort }}
    

    and then from there, set this value in your values.yaml

    0 讨论(0)
  • 2021-01-24 07:43

    I was facing a similar issue with setting port number as env variables. I have two services where ServiceB should connect to ServiceA. The error was

    /opt/service/config.yml has an error: * Incorrect type of value at: serviceAPort; is of type: String, expected: Integer My config.yml contains something like this - serviceAPort: "${SERVICEA_PORT!'9091'}"

    Kubernetes was creating an environment variable SERVICEA_PORT in a format which had Protocol:IP:port. This could not be parsed to an int by ServiceB

    I realised this upon using the 'printenv' in ServiceB pod and overrode it with the following config

    env:
      - name : SERVICEA_PORT
        value: 9091
    

    Basically, it was a conflict because of env variables created by k8s out of the box.

    0 讨论(0)
提交回复
热议问题