Как получить диаграммы Skaffold и Helm для работы с локальным репозиторием изображений? - PullRequest
1 голос
/ 03 апреля 2019

Мы пытаемся настроить локальную среду разработки с несколькими приложениями для микросервисов под Skaffold.Нам удалось сделать это с помощью базового Skaffold, используя (слегка устаревшее) учебное пособие https://github.com/ahmetb/skaffold-from-laptop-to-cloud.. И чтобы Skaffold отправлял изображения в локальный репозиторий без Helm, все, что мне нужно было сделать, это настроить imageName для использования чего-либокак localhost: 5000 / имя_изображения.

Но с Helm, хорошо .... Я установил очень грубую установку Helm (ОТКАЗ ОТ ОТВЕТСТВЕННОСТИ: Я пока не очень знаком с Helm), просто изменив скаффолд YAML для использования Helm и сбросив все .YAMLфайлы развертывания и обслуживания в директории / templates диаграммы Хелма, и это бомбили.

Затем Skaffold успешно создает любые модули, которые полагаются на стандартное внешнее изображение (например, redis), но затем всякий раз, когда что-либо использует изображение, которое будет сгенерировано из локального файла Dockerfile, оно застревает и выдает эту ошибку:

Не удалось получить изображение "localhost: 5000 / k8s-skaffold / php-test": ошибка rpc: code = Unknown desc = Ответ об ошибке от демона: Get http://localhost:5000/v2/: dial tcp [::1]: 5000: connect: соединение отклонено

Насколько я могу судить, эта ошибка возникает, когда мы не инициализировали локальный репозиторий образов Docker - но с версией без Helm,нам не нужно запускать локальный репозиторий изображений, Скаффолд просто делает это волшебство.Что является частью апелляции Скаффолда.

Итак, как нам автоматически заставить Skaffold создать диаграммы Хелма, которые создают и извлекают из локального репозитория?(Как уже отмечалось, это может быть мое незнакомство с Хелмом. Если это так, я приношу свои извинения.)

YAML Skaffold таков:

apiVersion: skaffold/v1beta7
kind: Config
build:
  tagPolicy:
    sha256: {}
  artifacts:
  - image: localhost:5000/k8s-skaffold/php-test
    context: voting-app/php-test  
deploy:
  helm:
    releases:
    - name: php-help-test
      chartPath: helm
      #wait: true
      #valuesFiles:
      #- helm-skaffold-values.yaml
      values:
        image: localhost:5000/k8s-skaffold/php-test
      #recreatePods will pass --recreate-pods to helm upgrade
      #recreatePods: true
      #overrides builds an override values.yaml file to run with the helm deploy
      #overrides:
      # some:
      #   key: someValue
      #setValues get appended to the helm deploy with --set.  
      #setValues:
        #some.key: someValue

И значения Helm Chart values.yaml по умолчаниюобеспечивается сгенерированной диаграммой.При необходимости я также могу предоставить Dockerfile, но он просто извлекает из этого изображения.

1 Ответ

1 голос
/ 03 апреля 2019

Вы не можете использовать localhost в определении вашего изображения. Для тестирования вы можете попробовать использовать ip хоста, на котором работает ваш личный реестр, например, если у хоста есть адрес 222.0.0.2, тогда используйте image: 222.0.0.2:5000/k8s-skaffold/php-test.

Конечно, нежелательно жестко кодировать адрес, поэтому лучшим способом является полное исключение части «хост»;

  image: k8s-skaffold/php-test:v0.1

В этом случае ваш плагин CRI (Container Runtime Interface) будет использовать последовательность серверов, например docker.io. Серверы настраиваются, но, к сожалению, я не знаю, как настроить его для «докера», так как сам использую cri-o.

...