Я создаю небольшой образ докера следующим образом:
В моем Dockerfile
я добавляю определенную конфигурацию в etc/apache2/apache2.conf
о перенаправлении http в правило https:
В частности, этоrule
<VirtualHost *:80>
RewriteEngine On
RewriteCond %{HTTP:X-Forwarded-Proto} =http
RewriteRule .* https://%{HTTP:Host}%{REQUEST_URI} [L,R=permanent]
</VirtualHost>
Итак, мой Dockerfile
равен
FROM wordpress:5.2.4
RUN apt-get update && apt-get install -y \
nano wget
COPY etc/apache2/apache2.conf /etc/apache2/apache2.conf
Итак, когда он закончится, я получил два изображения в своей локальной среде докера
REPOSITORY TAG
customize_wordpress 5.2.4
wordpress 5.2.4
Будучи customize_wordpress:5.2.4
моим личным изображением и wordpress:5.2.4
базовым общедоступным изображением, которое я использовал в инструкции FROM
выше в Dockerfile
Как моя цель - загрузить свое собственное изображение customize_wordpress:5.2.4
в реестр Azure Container, яЯ следую этой статье , чтобы сделать это
Я выполняю команду docker tag
таким образом
docker tag customize_wordpress:5.2.4 registryname.azurecr.io/customize_wordpress:5.2.4
И это работает. Также я нажимаю на изображение, и оно также работает
⟩ docker push registryname.azurecr.io/customize_wordpress:5.2.4
The push refers to repository [registryname.azurecr.io/customize_wordpress]
b63469233da6: Pushed
b032b61b15b2: Pushed
12fe3564ccac: Pushed
4e9b2aba858c: Pushed
b67d19e65ef6: Pushed
5.2.4: digest: sha256:dc62844f946a49f2e724fa38bad6e2cab73a4561b22b690876ab5534febd3569 size: 5128
[I]
Итак, у меня есть эти данные в качестве переменных среды, чтобы передать ихкоманда helm
export acr_login_server=registryname.azurecr.io
export acr_repository=customize_wordpress
export image_tag=5.2.4
Но когда я выполнил команду helm
⟩ helm3 install wordpress-site-4 ./Deployments/Kubernetes/HelmCharts/wordpress/ --set image.registry=$acr_login_server,image.repository=$acr_repository,image.tag=$image_tag,image.pullPolicy=Always,wordpressUsername=$wordpressUsername,wordpressPassword=$wordpressPassword,wordpressEmail=$wordpressEmail,mariadb.enabled=false,externalDatabase.host=$database_host,externalDatabase.user=$database_user,externalDatabase.password=$database_password,externalDatabase.database=$database_name,externalDatabase.port=3306
, я мог видеть в своей среде kubernetes, что модуль говорит, что изображение не вытягивается. Я получил
Error response from daemon: pull access denied for customize_wordpress, repository does not exist or may require 'docker login': denied: requested access to the resource is denied
Warning Failed 2m20s (x4 over 3m39s) kubelet, aks-defaultpool-34253081-vmss000001 Error: ErrImagePull
Normal Pulling 2m21s (x4 over 3m40s) kubelet, aks-defaultpool-34253081-vmss000001 Pulling image "customize_wordpress:5.2.4"
Warning Failed 2m20s (x4 over 3m39s) kubelet, aks-defaultpool-34253081-vmss000001 Failed to pull image "customize_wordpress:5.2.4": rpc error: code = Unknown desc = Error response from daemon: pull access denied for customize_wordpress, repository does not exist or may require 'docker login': denied: requested access to the resource is denied
Warning Failed 2m20s (x4 over 3m39s) kubelet, aks-defaultpool-34253081-vmss000001 Error: ErrImagePull
Normal BackOff 114s (x6 over 3m38s) kubelet, aks-defaultpool-34253081-vmss000001 Back-off pulling image "customize_wordpress:5.2.4"
Warning Failed 103s (x7 over 3m38s) kubelet, aks-defaultpool-34253081-vmss000001 Error: ImagePullBackOff
Я делаю эту команду helm от Azure Devops, и ранее я вошел в свой ACR несколькими способами, такими как:
echo "Log in to an Azure Container Registry"
# docker login $(acr_login_server) --username $(service_principal_name_ci-cd-app-id) --password $(service_principal_name_ci-cd-password)
az acr login --name $(acr_name)
Но результатто же самое из стручка, я не могу вытащить изображение
Вот почему я считаю, что мне не нужно ссылаться на секреты реестра докера внутри kubernetes и в атрибуте imagePullSecrets
в таблице управления values.yaml
,
Несмотря на все, я пытаюсь создать секрет реестра Docker с моими данными acr, но результат такой же.
Как я могу загрузить свое настроенное изображение и вытащить его из Kubernetes?