#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
Итак, мои вопросы:
- Как мне зарегистрировать свой local-harbor в качестве репозитория в helm?
- Считается ли мой local-harbor частным или публичным репозиторием?
- Что я должен сделать, чтобы моя диаграмма извлекала изображение из моего репозитория 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