Azure应用服务-本地部署Docker Registry

jgovgodb  于 2023-10-22  发布在  Docker
关注(0)|答案(3)|浏览(161)

我有个简单的问题我需要配置我的应用程序服务,以便能够连接到本地Artifactory。
在AppService中,我将部署中心设置为屏幕截图(URL和图像名称已更改)
Deployment Center settings
此外,我启用了VNet集成到VNet,它可以访问本地环境。例如,同一子网中的VM可以从Artifactory中拉取Docker镜像,但App Service不能。下面是错误日志。
023-08-07T07:35:20.683Z INFO - Attempting to pull image *URL_ARTIFACTORY_ONPREMIES/IMAGE_NAME*:latest from VNET. 2023-08-07T07:35:52.219Z ERROR - Image pull for *URL_ARTIFACTORY_ONPREMIES/IMAGE_NAME*:latest failed. UnexpectedFaliure 2023-08-07T07:35:52.221Z ERROR - Pulling docker image *URL_ARTIFACTORY_ONPREMIES/IMAGE_NAME*:latest over VNET failed. 2023-08-07T07:35:52.222Z WARN - Image pull failed. Defaulting to local copy if present. 2023-08-07T07:35:52.906Z ERROR - Image pull failed: Verify docker image configuration and credentials (if using private repository)
我将WEBSITE_PULL_IMAGE_OVER_VNET设置为True。
我的问题是:默认情况下,应用程序服务尝试通过公共ip地址连接?(出站流量)
Networking tab
请提供任何提示或建议。谢谢.

dpiehjr4

dpiehjr41#

默认情况下,应用程序服务尝试通过公共ip地址连接?(出站流量)
Azure应用服务示例启动出站请求时,它使用分配给Azure区域的出站网络基础结构的公共IP地址。

  • 此问题是因为涉及到网络、连接和身份验证因素的组合。

2023-08- 07 T07:35:52.906Z错误-图像提取失败:验证docker镜像配置和凭据(如果使用私有存储库)
选择私有注册表时使用以下格式模板:

# Use a base image that supports your application (e.g., node, python, etc.)
FROM node:18

# Set the working directory
WORKDIR /app

# Install any dependencies your application needs
# For example, if you're using Node.js, you might copy package.json and run npm install
COPY package*.json ./
RUN npm install

# Set environment variables if needed
# ENV EXAMPLE_VARIABLE=value

# Specify the private repository's URL, image name, and tag
ARG REPOSITORY_URL=<REPOSITORY_URL>
ARG IMAGE_NAME=<IMAGE_NAME>
ARG IMAGE_TAG=<IMAGE_TAG>

# Authenticate to your private repository (if required)
# For example, if using a private Artifactory repository, you might use an authentication token
# RUN echo "<AUTH_TOKEN>" | docker login -u <USERNAME> --password-stdin <REPOSITORY_URL>

# Pull the image from the private repository
RUN docker pull ${REPOSITORY_URL}/${IMAGE_NAME}:${IMAGE_TAG}

# Copy your application's source code
COPY . .

# Start your application
CMD [ "npm", "start" ]
  • 您启用了VNet集成并将WEBSITE_PULL_IMAGE_OVER_VNET应用程序设置设置为True,因此默认情况下Azure App Service将公共IP地址用于出站流量。
  • App Service将尝试通过VNet拉取映像。但是,请从您的终端清除是否可以通过VNet访问Artifactory。

检查您是否已如上所述选择了网络安全组,并在应用程序服务中转到设置<身份<系统分配应该是“开”。

yk9xbfzb

yk9xbfzb2#

是的,我认为App Service默认会尝试通过公共网络。您可以从App Service -> Development Tools -> Advanced Tools转到App Service Kudu调试控制台,并尝试nslookup repositoryurlorendpoint命令(如果您正在部署到Linux App Service)。
在我们的例子中,这个错误(*'UnexpectedFaliure'**)发生是因为它解析到了应用服务内部的公共IP(从Kudu中可以看到),而不是虚拟网络IP(例如10.x.x.x)。即DNS设置不正确(需要自定义DNS服务器,而不是vnet设置中的 Default(Azure提供的)

j2datikz

j2datikz3#

通过全球CA为Artifactory(内部部署)颁发证书,解决了该问题。

相关问题