【问题标题】:Trouble understanding YAML file无法理解 YAML 文件
【发布时间】:2021-01-22 17:43:03
【问题描述】:

我是 YAML 新手,我想了解以下 .yaml 文件:

version: "3.7"
services:
    influxdb:
        image: influxdb:alpine
        environment:
            INFLUXDB_DB: ft_services
            INFLUXDB_ADMIN_USER: admin
            INFLUXDB_ADMIN_PASSWORD: admin
        volumes:
            - datainfluxdb:/var/lib/influxdb
        deploy:
            restart_policy:
                condition: on-failure

据我所知,.yaml 文件中可以使用 3 种类型的数据:标量、序列和映射。例如,version: "3.7" 是一个标量。但我不确定以下是什么:

volumes:
            - datainfluxdb:/var/lib/influxdb
environment:
            INFLUXDB_DB: ft_services
            INFLUXDB_ADMIN_USER: admin
            INFLUXDB_ADMIN_PASSWORD: admin

我不太明白这些是什么类型的数据以及它们是如何工作的,谁能给我一个提示?

【问题讨论】:

  • 除了下面的答案,我可以推荐我的short YAML tutorial吗?它通过一些典型的例子。欢迎反馈:)

标签: kubernetes yaml


【解决方案1】:

但我不确定以下是什么:

  • 地图列表

    volumes:
      - datainfluxdb:/var/lib/influxdb
    

    相等的json:

    {
      "volumes": [
        {"datainfluxdb": "/var/lib/influxdb"}
      ]
    }
    
  • 地图

    environment:
      INFLUXDB_DB: ft_services
      INFLUXDB_ADMIN_USER: admin
      INFLUXDB_ADMIN_PASSWORD: admin
    

    相等的json:

    {
      "environment": {
        "INFLUXDB_DB": "ft_services",
        "INFLUXDB_ADMIN_USER": "admin",
        "INFLUXDB_ADMIN_PASSWORD": "admin"
      }
    }
    
  • 在你的问题中没有提到,而是一个简单的字符串列表

    accessModes:
      - ReadWriteOnce
    

    相等的json:

    {
      "accessModes": [
        "ReadWriteOnce"
      ]
    }
    

这 3 个是 Kubernetes 中最常见的。

在我看来,一开始,当您有嵌套结构时,YAML 会变得最令人困惑。为了更容易理解,我建议使用类似https://onlineyamltools.com/convert-yaml-to-json 的smth 转换为JSON,它具有更明确的结构语法。

【讨论】:

    【解决方案2】:

    列表

    例子

    volumes:
       - data: /var/lib
         other-field: "example"
       - data: /etc
    

    上面每个以- 开头的缩进行都是列表项的开始。示例中的列表中有两个项目,整个列表命名为volumes。该示例是 Map 列表,但标量列表也是有效的。

    地图

    例子

    environment:
        INFLUXDB_DB: ft_services
        INFLUXDB_ADMIN_USER: admin
        INFLUXDB_ADMIN_PASSWORD: admin
    

    正如您所写,这是一个包含键值对的 Map,整个 Map 被命名为 environment

    标量

    正如您所写,还有各种类型的标量。像"3.7" 这样的引号内的值是string

    【讨论】:

    • Lists - 提供的示例实际上是 List of Maps,我认为它应该在 yaml 中非常流行,但作为一个单独的示例
    猜你喜欢
    • 1970-01-01
    • 2019-01-04
    • 2021-01-28
    • 2021-08-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-19
    相关资源
    最近更新 更多