在 Kubernetes ConfigMap 中指定“int”值?

toi*_*diu 5 kubernetes

有没有办法在 ConfigMap 中指定int值?当我尝试指定端口号时,出现以下错误。

error: error validating "my-deployment.yml": error validating data: expected type int, for field spec.template.spec.containers[0].ports[0].containerPort, got string; if you choose to ignore these errors, turn validation off with --validate=false
Run Code Online (Sandbox Code Playgroud)

这是我正在使用的示例配置文件:

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: my-service
spec:
  replicas: 2
  template:
    metadata:
      labels:
        app: poweramp-email-service
    spec:
      containers:
      - name: poweramp-email-service
        env:
          - name: SERVICE_PORT_NUM
            valueFrom:
              configMapKeyRef:
                name: stg-config
                key: poweramp-email-service.port
        image: nginx
        ports:
        - containerPort: my-service.port
Run Code Online (Sandbox Code Playgroud)

这是stg.properties我用来使用以下命令生成 ConfigMap 的简单文件:kubectl create configmap stg-config --from-file stg.properties

my-service.port=9513
Run Code Online (Sandbox Code Playgroud)

jax*_*orm 3

恐怕你不能使用 configmap 值spec.template.spec.containers[0].ports[0].containerPort,它用于配置值。

您可以使用它的选项(在本指南中指定)是

  • 作为环境变量
  • 作为命令行配置标志(使用环境变量)
  • 使用音量插件。

如果您想为您的部署/pod 配置端口,您可以考虑使用Helm。Helm 允许您在清单/定义中使用 Go 模板,然后您可以在调用时覆盖它们。

以此MySQL Chart 模板为例,您可以将此处的端口设置为配置选项,如下所示:

ports:
  - name: mysql
  containerPort: {{ default 3306 .Values.mysqlPort }}
Run Code Online (Sandbox Code Playgroud)

然后从那里,在您的values.yaml中设置这个值