2017-03-22 40 views
0

有沒有辦法在ConfigMap中指定int值?當我嘗試指定端口號時,出現以下錯誤。在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 

這裏是我使用的示例配置文件:

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 

這裏是簡單stg.properties文件我使用使用命令生成ConfigMap:kubectl create configmap stg-config --from-file stg.properties

my-service.port=9513 

回答

1

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

可以使用它的選項(在this guide指定)(使用環境變量)

  • 使用體積插件是

    • 作爲可變
    • 作爲命令行配置標誌的環境。

    如果您希望爲部署/吊艙配置端口,可以考慮使用Helm。 Helm允許您在清單/定義中使用Go模板,然後您可以在調用時覆蓋它們。

    藉此MySQL Chart template as an example,你可以在這裏設定的端口配置選項,如下所示:

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

    ,然後從那裏,將該值設置在values.yaml

  • 相關問題