Создание рулевой диаграммы с использованием изображения из локальной гавани

#image #kubernetes-helm #minikube #harbor

#изображение #kubernetes-руль #мини-куб #гавань

Вопрос:

Я создал NestJs приложение, упаковал его в bin-файл, используя pkg , контейнеризовал его с помощью docker image и назвал его projectABC . Все они были развернуты в Ubuntu20, и файл bin работает отлично.

Затем я хотел попробовать harbor repository. Следуя руководству, я создал локальный репозиторий порта с самозаверяющим сертификатом с помощью этого tut. Я использую minikube для развертывания гавани на своей машине.

После того, как гавань запущена, я создал проект с именем «project», затем вставил в projectABC него изображение с Project registry установленным значением Public . Все хорошо от docker login , docker tag , до docker push . Тестируя недавно загруженное изображение, я могу docker pull и проверить projectABC запуск, как задумано.

Итак, теперь я хочу развернуть с помощью диаграммы руля. До сих пор я успешно вошел в реестр и запустил пустой проект диаграммы.

 helm create projectABC
export HELM_EXPERIMENTAL_OCI=1
helm chart save ./projectABC 192.168.1.69/project/ABC
helm registry login https://192.168.1.69 --insecure
helm chart push 192.168.1.69/project/ABC:0.0.1
 

Затем я изменил values.yaml , чтобы извлечь изображение из репозитория гавани

 image:
  repository: 192.168.1.69/project/ABC:0.0.1
  pullPolicy: Always
 

Но это не удалось с результатом:
container in pod is waiting to start: trying and failing to pull image

Итак, мои вопросы:

  1. Как мне зарегистрировать свой local-harbor в качестве репозитория в helm?
  2. Считается ли мой local-harbor частным или публичным репозиторием?
  3. Что я должен сделать, чтобы моя диаграмма извлекала изображение из моего репозитория local-harbor?

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

1. я попытался добавить репозиторий с помощью helm repo add local https://192.168.1.69/project --insecure-skip-tls-verify , не удалось с сообщением об ошибке: looks like "https://192.168.1.69/project" is not a valid chart repository or cannot be reached: error unmarshaling JSON: while decoding JSON: json: cannot unmarshal string into Go value of type repo.IndexFile . используя url 1.69/project / ABC, результат тот же

2. Если вы получаете сообщение об ошибке «контейнер в модуле …», значит, все части руля верны; ваш кластер Kubernetes не может извлечь изображение. Вам вообще нужно проходить аутентификацию в репозитории?

3. @DavidMaze под аутентификацией вы подразумеваете использование имени пользователя: пароля? я попытался создать secret, поскольку kubernetes предлагает извлекать изображение из частного репозитория. Но это не решает проблему. Проблема связана с мини-кубом с самозаверяющим сертификатом

Ответ №1:

Попытался создать secret и следовать этому обсуждению, но не удалось. пока:

Раньше я kubectl describe проверял, что происходит с моим модулем. Оказывается, не удалось извлечь изображение из-за того, что сертификат подписан неизвестным органом.

Нашел это обсуждение в reddit, в котором показано, что minikube должен иметь копию сертификата в своем собственном каталоге. После предоставления сертификата и перезапуска minikube он работает правильно.

Источник

 # create the dir if it is not exist
mkdir -p ~/.minikube/files/etc/ssl/certs

# copy the cert
cp ~/your.crt ~/.minikube/files/etc/ssl/certs/your-crt.pem