繁体   English   中英

Ansible,k8s和变量

[英]Ansible, k8s and variables

我正在使用Ansible和k8s模块将应用程序部署到OpenShift集群。 总的来说,这真的很好。

但是,当我尝试在部署配置中使用变量中的值设置端口值时,事情就不那么令人满意了。

我以下面的ansible任务为例:

- name: Create app service
      k8s:
        name: "{{ name | lower }}"
        state: present
        definition:
          apiVersion: v1
          kind: Service
          metadata:
            annotations:
            labels:
              app: "{{ name | lower }}"
            name: "{{ name | lower }}"
            namespace: "{{ name | lower }}"
          spec:
            ports:
              - name: "{{ port }}-tcp"
                port: "{{ port  }}"
                protocol: TCP
                targetPort: "{{ port | int }}" <--- the problem!
            selector:
              deploymentconfig: "{{ name | lower }}"
            sessionAffinity: None
            type: ClusterIP
          status:
            loadBalancer: {}

变量设置在yaml文件中,该文件被读入剧本,并且变量设置为port: "5000"

如果我将其更改为port: 5000那么它可以解决问题,但是我在其他几个地方和其他剧本中使用了此变量,因此我宁愿保持该变量不变。

我尝试使用以下方法来解决此问题: "{{ port | int }}"

我得到的错误的一个例子是:

fatal: [localhost]: FAILED! => {"changed": false, "error": 422, "msg": "Failed to patch object: {\"kind\":\"Status\",\"apiVersion\":\"v1\",\"metadata\":{},\"status\":\"Failure\",\"message\":\"Service \\\"myapp\\\" is invalid: spec.ports[0].targetPort: Invalid value: \\\"7001\\\": must contain at least one letter or number (a-z, 0-9)\",\"reason\":\"Invalid\",\"details\":{\"name\":\"usdt-wallet\",\"kind\":\"Service\",\"causes\":[{\"reason\":\"FieldValueInvalid\",\"message\":\"Invalid value: \\\"5000\\\": must contain at least one letter or number (a-z, 0-9)\",\"field\":\"spec.ports[0].targetPort\"}]},\"code\":422}\n", "reason": "Unprocessable Entity", "status": 422}

根据发布的错误消息,您的问题不是|int|string -尽管我同意错误消息具有误导性:

“ message”:“服务\\” usdt-wallet \\“无效:spec.ports [0] .targetPort:无效值:\\” 70001 \\“:必须至少包含一个字母或数字(az,0-9) ,

但这是由于尝试将70001用作目标端口而导致的,但TCP端口必须在1到65535(包括1和65535)之间,如精细手册所述

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM