Загрузка образа личного докера в реестр контейнеров Azure - ErrImagePull - PullRequest
0 голосов
/ 03 ноября 2019

Я создаю небольшой образ докера следующим образом:

В моем 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] 

enter image description here

Итак, у меня есть эти данные в качестве переменных среды, чтобы передать ихкоманда 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?

1 Ответ

1 голос
/ 03 ноября 2019

Как и мой кластер AKS и мой реестр контейнеров Azure, оба уже существуют до установки частного образа, я не осознавал, что мне нужно было связать кластер aks с реестром контейнеров Azure

Здесь говоритсяhttps://docs.microsoft.com/en-us/azure/aks/cluster-container-registry-integration#configure-acr-integration-for-existing-aks-clusters

Итак, это полный рабочий процесс для создания нашего образа частного докера, загруженного в наш реестр личных контейнеров (в моем случае, в реестр контейнеров Azure) и извлечения этого образа из службы Azure Kubernetes:

  • Создание изображения

docker build -t customize_wordpress:5.2.4 .

Создает customize_wordpress:5.2.4 изображение

  • Создание тега: Нам нужно создатьтег для загрузки нашего изображения в наш ACR Мы должны включить в тег наш хост-сервер ACR, в моем случае registryname.azurecr.io Здесь для получения дополнительной информации и здесь
⟩ docker tag customize_wordpress:5.2.4 registryname.azurecr.io/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 
b67d19e65ef6: Pushed 
5.2.4: digest: sha256:dc62844f946a49f2e724fa38bad6e2cab73a4561b22b690876ab5534febd3569 size: 5128

А потом, прежде чем устанавливать мой WordprПриложение ess, в моем случае из команды helm chart (упомянутое выше в моем вопросе), приводит конфигурацию моего ACR для работы с моим кластером AKS

Я выполняю команду aks update:

⟩ az aks update -n MyClusterName -g MyResourceGroup --attach-acr MyACRName

Итак, когда я устанавливаю свою таблицу управления, образ запускается и запускается

Events:
  Type     Reason     Age                   From                                          Message
  ----     ------     ----                  ----                                          -------
  Normal   Scheduled  14m                   default-scheduler                             Successfully assigned default/wordpress-site-4-6565b8c64f-w7xvq to aks-defaultpool-34253081-vmss000000
  Normal   Pulling    14m                   kubelet, aks-defaultpool-34253081-vmss000000  Pulling image "registryname.azurecr.io/customize_wordpress:5.2.4"
  Normal   Pulled     14m                   kubelet, aks-defaultpool-34253081-vmss000000  Successfully pulled image "registryname.azurecr.io/customize_wordpress:5.2.4"
  Normal   Created    14m                   kubelet, aks-defaultpool-34253081-vmss000000  Created container wordpress

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...