Как получить диаграммы Skaffold и Helm для работы с локальным репозиторием изображений?
Мы пытаемся настроить локальную среду разработки с несколькими приложениями для микросервисов под Skaffold. Нам удалось сделать это с помощью базового Skaffold, используя (слегка устаревшее) руководство по адресу https://github.com/ahmetb/skaffold-from-laptop-to-cloud. И чтобы Skaffold отправлял изображения в локальный репозиторий без Helm, все, что мне нужно было сделать, это настроить imageName для использования чего-то вроде localhost:5000/image_name.
Но с Helm, хорошо... Я установил очень грубую установку Helm (ОТКАЗ ОТ ОТВЕТСТВЕННОСТИ: Я еще не очень знаком с Helm), просто изменив скаффолд YAML для использования Helm и выгрузив все файлы развертывания и обслуживания.YAML в Каталог рулетки /templates, и это бомбили.
Затем Skaffold успешно создает любые модули, основанные на стандартном внешнем образе (например, redis), но затем всякий раз, когда что-либо использует изображение, которое будет сгенерировано из локального файла Docker, оно застревает и выдает эту ошибку:
Не удалось получить изображение "localhost:5000/k8s-skaffold/php-test": ошибка rpc: code = Unknown desc = Ответ об ошибке от демона: Получить http://localhost:5000/v2/: dial tcp [:: 1]: 5000: соединение: соединение отказано
Насколько я могу судить, это ошибка, которая возникает, когда мы не инициализировали локальный репозиторий образов Docker - но с версией не-Helm нам не нужно запускать локальный репозиторий изображений, Skaffold просто делает эту магию бывает. Что является частью апелляции Скаффолда.
Итак, как нам автоматически заставить Skaffold создать диаграммы Хелма, которые создают и извлекают из локального репозитория? (Как уже отмечалось, это может быть мое незнакомство с Хелмом. Если это так, я прошу прощения.)
Skaffold YAML это:
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 ответ
Вы не можете использовать 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
себя.