解析 staging-ingress.yaml 时出错:将 YAML 转换为 JSON 时出错:yaml:第 5 行:此上下文中不允许映射值

问题描述 投票:0回答:1

我请求您的支持,您能帮我解释为什么当我在 Azure AKS 上运行以下脚本时出现以下错误吗?

“解析 staging-ingress.yaml 时出错:将 YAML 转换为 JSON 时出错:yaml:第 5 行:在此上下文中不允许映射值”

目前我的Azure AKS的版本是1.27,nginx Ingress Controller的版本是1.8.3。

这是我正在运行的脚本 api版本:networking.k8s.io/v1 种类: 入口 元数据: 名称:分期入口 命名空间:阶段 规格: 规则: -主机:qa.test.net http: 路径: - 路径:/staging 路径类型:前缀 后端: 服务: 名称:暂存服务 港口: 数量:80

这是我配置的命名空间 adminseguros@AVMSEGURODEVQA:~$ kubectl get ns -A 姓名 状态 年龄 aks-命令活动 21d 默认活动 21 天 发展活跃12天 网守系统活跃 21d 入口基本活跃 12d kube-node-lease 活跃 21d kube-public 活跃 21d kube 系统活跃 21d 阶段活跃11天

我尝试在名为 stage 的空间上安装旧脚本

adminseguros@AVMSEGURODEVQA:~$ kubectl apply -f staging-ingress.yaml -n stage 并在出现此消息后

adminseguros@AVMSEGURODEVQA:~$ kubectl apply -f staging-ingress.yaml -n stage 错误:解析 staging-ingress.yaml 时出错:将 YAML 转换为 JSON 时出错:yaml:第 5 行:此上下文中不允许映射值 adminseguros@AVMSEGURODEVQA:~$

请帮助我!

我已经根据Microsoft文档创建了yaml文件,但出现解析错误。

https://learn.microsoft.com/en-us/azure/aks/ingress-basic?tabs=azure-cli

azure yaml namespaces azure-aks
1个回答
0
投票

您遇到的错误通常是由 YAML 文件中的语法问题引起的。 YAML 对缩进和结构相当严格,即使是很小的错误也可能导致解析错误。让我们根据您的描述更正提供的 Ingress YAML 定义。

这是您提供的脚本内容,为了清晰和正确性而重新格式化:

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: staging-ingress
  namespace: stage
spec:
  rules:
  - host: qa.test.net
    http:
      paths:
      - path: /staging
        pathType: Prefix
        backend:
          service:
            name: staging-service
            port:
              number: 80

使用它

kubectl apply -f staging-ingress.yaml -n stage

enter image description here

实际上,YAML 严重依赖缩进来定义结构。因此,我在

host
之前添加了一个空格,以将其正确格式化为
rules
下的列表项,并修复了
spec
rules
http
paths
backend
中每个级别的缩进部分。顺便说一句,您可以使用在线 YAML 验证器或命令行工具(如
yamllint
)来实现此目的。让事情变得更容易。

© www.soinside.com 2019 - 2024. All rights reserved.