返回

Docker 容器中的 Azure Arc 标识终结点:从配置到验证

Linux

在 Docker 容器中公开 Azure Arc 标识终结点

问题

在将 Docker 容器部署到 Azure Arc 集群后,如何公开 Azure Arc 标识终结点以允许容器访问 Azure 资源?

解决方法

1. 创建自定义网络

在 Docker 集群中,创建新的自定义网络,将容器连接到 Azure Arc 标识终结点。此网络将充当容器和终结点之间的桥梁。

docker network create --driver overlay my-custom-network

2. 运行容器

使用 --network 标志运行容器,将其连接到新创建的自定义网络。此外,使用 --env 标志设置环境变量 IMDS_ENDPOINTIDENTITY_ENDPOINT,这些变量将指向 Azure Arc 标识终结点。

docker run --network my-custom-network -e IMDS_ENDPOINT=http://10.0.0.1:40342 -e IDENTITY_ENDPOINT=http://10.0.0.1:40342/metadata/identity/oauth2/token my-image

3. 确认连接

从容器内,使用 curl 命令验证连接。如果成功,你将收到类似于以下内容的响应:

{"access_token":"...","expires_in":3600,"expires_on":"1658035733","not_before":"1658031833","resource":"https://management.azure.com/","token_type":"Bearer"}

注意事项

  • 确保 Docker 主机具有与 Azure Arc 标识终结点通信所需的防火墙规则。
  • 如果你使用 AKS,可以使用 AKS 引擎附加组件为容器公开 Azure Arc 标识终结点。

结论

通过遵循这些步骤,你可以成功地在 Docker 容器中公开 Azure Arc 标识终结点,从而使你的应用程序能够使用托管标识访问 Azure 资源。

常见问题解答

Q1:为什么需要创建一个自定义网络?
A1:自定义网络充当容器和 Azure Arc 标识终结点之间的通信渠道。

Q2:IMDS_ENDPOINTIDENTITY_ENDPOINT 环境变量有什么作用?
A2:这些变量指向 Azure Arc 标识终结点,允许容器请求和使用托管标识。

Q3:如何验证从容器到终结点的连接?
A3:使用 curl 命令,连接成功将返回包含访问令牌的响应。

Q4:是否存在其他方法来公开 Azure Arc 标识终结点?
A4:是的,对于 AKS 集群,可以使用 AKS 引擎附加组件。

Q5:是否有任何防火墙配置限制?
A5:是的,确保 Docker 主机具有与 Azure Arc 标识终结点通信所需的防火墙规则。