Я полностью застрял, пытаясь запустить skaffold в моем проекте. Он продолжает выдавать ошибку при запуске из ingress srv

#node.js #kubernetes #microservices #nginx-ingress #skaffold

#node.js #kubernetes #микросервисы #nginx-ingress #skaffold

Вопрос:

Когда я запускаю skaffold, я получаю эту ошибку. Skaffold генерирует теги, проверяет кеш, запускает развертывание, затем оно очищается.

 - stderr: "error: error parsing C: ~k8s\ingress-srv.yaml: error converting YAML to JSON: yaml: line 20: mapping values are not allowed in this context
n"
 - cause: exit status 1
 

Docker создает контейнер для сервера. Вот файл ingress server yaml:

 apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: ingress-srv
  annotations:
    kubernetes.io/ingress.class: "nginx"
spec:
  rules:
    - host: northernherpgeckosales.dev
      http:
        paths:
          - path: /api/users/?(.*)
            pathType: Prefix
            backend:
              service:
                name: auth-srv
                port:
                  number: 3000
          - path: /?(.*)
              pathType: Prefix
              backend:
                service:
                  name: front-end-srv
                  port:
                    number: 3000 
 

Для хорошей оценки вот файл skaffold:

 apiVersion: skaffold/v2alpha3
kind: Config
deploy:
  kubectl:
    manifests:
      - ./infra/k8s/*
build:
  local:
    push: false
  artifacts:
    - image: giantgecko/auth
      context: auth
      docker:
        dockerfile: Dockerfile
      sync:
        manual:
          - src: 'src/**/*.ts'
            dest: .
    - image: giantgecko/front-end
      context: front-end
      docker:
        dockerfile: Dockerfile
      sync:
        manual:
          - src: '**/*.js'
            dest: .
 

Ответ №1:

Внимательно посмотрите на ваш файл определения входа (начиная со строки 19):

 - path: /?(.*)
    pathType: Prefix
    backend:
      service:
        name: front-end-srv
        port:
          number: 3000
 

У вас есть ненужные отступы от строки 20 ( pathType: Prefix ) до конца файла. Просто правильно отформатируйте свой файл YAML. Для предыдущего path: /api/users/?(.*) все в порядке — никаких ненужных отступов.

Окончательный YAML выглядит так:

 apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: ingress-srv
  annotations:
    kubernetes.io/ingress.class: "nginx"
spec:
  rules:
    - host: northernherpgeckosales.dev
      http:
        paths:
          - path: /api/users/?(.*)
            pathType: Prefix
            backend:
              service:
                name: auth-srv
                port:
                  number: 3000
          - path: /?(.*)
            pathType: Prefix
            backend:
              service:
                name: front-end-srv
                port:
                  number: 3000
 

Комментарии:

1. Такие инструменты, как облачный код (cloud.google.com/code ) проверять ресурсы Kubernetes и отмечать такие ошибки