我请求您的支持,您能帮我解释为什么当我在 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
您遇到的错误通常是由 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
实际上,YAML 严重依赖缩进来定义结构。因此,我在
host
之前添加了一个空格,以将其正确格式化为 rules
下的列表项,并修复了 spec
、rules
、http
、paths
和 backend
中每个级别的缩进部分。顺便说一句,您可以使用在线 YAML 验证器或命令行工具(如 yamllint
)来实现此目的。让事情变得更容易。