使用Azure容器应用/实例部署Azure OpenAI Proxy
  XddnklIqupkK 2023年11月02日 64 0

现在存在许多开源的OpenAI解决方案,为了尽量避免修改源代码,直接接入Azure OpenAI。可以考虑使用Azure OpenAI代理方案,它可以实现以OpenAI的API方式去管理Azure的OpenAI实例。

几乎全部的这种方案,都会提示使用容器来部署。类似下面的命令执行。

由于我本身没有容器相关的知识背景,这篇学习笔记也是为了加强记忆。

docker pull yidadaa/chatgpt-next-web
docker run -d -p 3000:3000 \
   -e OPENAI_API_KEY="sk-xxxx" \
   -e CODE="your-password" \
   yidadaa/chatgpt-next-web

Azure容器应用/实例

考虑到零基础学习,我采用了Azure自带的服务去进行部署。

容器实例(Azure Container Instances)是Azure云平台上的一项服务,用于快速部署和运行容器化应用程序。它提供了一种简单、快速且无服务器的方式来运行单个容器实例,无需管理底层的虚拟机基础结构。

通过使用容器实例,你可以快速部署和运行容器化的应用程序,无需关注底层的基础设施管理,从而提高开发和部署的效率。容器实例还可以与其他Azure服务进行集成,如Azure存储、Azure虚拟网络等,以构建更复杂的应用场景。

容器应用(Azure Container Apps)是Azure云平台上的一项服务,用于部署、管理和运行复杂的容器化应用程序。它提供了完整的容器编排和管理功能,使开发人员和运维团队能够更好地管理多个容器实例,并实现高可用性、弹性伸缩和负载均衡等特性。

容器应用建立在Kubernetes容器编排引擎之上,为用户提供了一种托管式的Kubernetes服务。Kubernetes是一个开源的容器编排平台,它可以自动化地管理和调度容器化应用程序,并提供高可用性、弹性伸缩、自动负载均衡等功能。容器应用提供了一些额外的功能,如自动伸缩、负载均衡、监控和日志等。自动伸缩功能可以根据应用的负载情况自动调整容器实例的数量,以满足不同的流量需求。负载均衡功能可以将流量均匀分发给多个容器实例,提高应用程序的可用性和性能。监控和日志功能可以帮助你监控应用程序的运行状态,并收集和分析容器的日志数据。

粗略来看,两者都是提供容器服务的一种服务,但是实际应用的角度来说,对于初学者而言,容器应用更合适一些。

这是因为容器应用可以图形化的去配置证书、自定义域、cors等信息。基本都可以依靠点点点的方式来处理。

配置过程

下面是一个简单的配置过程,以这一段docker的配置举例,翻译成在容器应用中的操作。

docker pull yidadaa/chatgpt-next-web
docker run -d -p 3000:3000 \
   -e OPENAI_API_KEY="sk-xxxx" \
   -e CODE="your-password" \
   yidadaa/chatgpt-next-web

容器应用(Azure Container App)配置过程:

  1. 登录到Azure门户(https://portal.azure.com)。./)
  2. 在左侧导航栏中,选择“容器应用”。
  3. 点击“+ 创建”按钮,开始创建容器应用。
  4. 在“基本”选项卡中,填写以下信息:
  • 订阅:选择你的订阅。
  • 资源组:选择或创建一个资源组。
  • 应用名称:输入应用的名称。
  • 区域:选择容器应用所在的区域。
  1. 在“映像和标记”选项卡中,填写以下信息:
  • 映像位置:选择“公共”。
  • 映像:输入yidadaa/chatgpt-next-web
  1. 在“环境变量”选项卡中,点击“+ 添加环境变量”按钮,添加一个环境变量。
  • 名称:输入OPENAI_API_KEY
  • 值:输入sk-xxxx
  • 依次输入所有的环境变量
  1. 在“端口”选项卡中,可以添加端口映射。
  2. 在“高级”选项卡中,可以配置容器应用的高级设置,如CPU、内存等。
  3. 点击“下一步: 网络”按钮。
  4. 在“网络”选项卡中,可以配置容器应用的网络设置。
  5. 点击“下一步: 完成”按钮。
  6. 在“查看 + 创建”选项卡中,确认配置信息,并点击“创建”按钮来创建容器应用。

从配置过程来看,容器应用需要配置的过程和直接使用docker相似。但是因为整个应用是自动启动的,所以不需要运行docker run,应用本身也是启动的。

特别注意

特别需要注意,国内用户很可能无法直接使用 容器应用的默认应用程序url,类似https://gptnextxxxxxxxxx。astasia.azurecontainerapps.io 这种地址。国内对此类地址有DNS污染,包括不限于错误的地址引导,错误的证书等。为了解决这个问题,必须要使用自定义域功能,指定到一个自己的域名上。

本身配置比较简单,熟悉流程后操作并不复杂。

  1. 配置自定义域:
  • 在Azure门户中,导航到你的Web App容器实例资源组。
  • 找到你的Web App容器实例资源,点击进入。
  • 在左侧导航栏中,选择"自定义域"。
  • 点击"添加自定义域"按钮。
  • 在弹出窗口中,输入你的自定义域名,并选择"使用SSL"选项。
  • 如果你有SSL证书,可以选择上传证书;否则,可以选择Azure提供的免费SSL证书。
  • 点击"添加"按钮完成自定义域的配置。
  1. 配置DNS解析:
  • 在域名注册商的控制台中,添加DNS解析记录,将域名解析到Azure Web App容器实例的公共IP地址。
  • 此处需要注意,需要添加cname和txt两条记录
  1. 验证配置:
  • 使用浏览器访问你的自定义域名,应该能够正常访问到Azure Web App容器实例。
  • 常规而言,证书生效在10分钟内。

至此,你应该获得了一个类似于https://xxx.xxx.xx的容器应用,根据实际需求进行使用即可。

费用对比

Azure的容器应用(Azure Container App)和容器实例(Azure Container Instances)的计费方式有以下不同点:

  1. 单位:Azure容器应用的计费单位是应用服务计划(App Service Plan),而容器实例的计费单位是每秒钟的实例使用时间。
  2. 预配资源:Azure容器应用需要预先创建应用服务计划,其中包含一定数量的虚拟机实例和资源分配,而容器实例无需预先创建资源,按需分配。
  3. 持续运行:Azure容器应用是持续运行的应用服务,按照应用服务计划的定价进行计费。而容器实例是按照实例的使用时间计费,只在需要时启动和运行。
  4. 容器应用拥有更小的实例(0.25核、0.5G),而容器实例是(1核、1G),因此小规模而言,用容器应用也会更加方便。

作者简介

九叔,《微软SystemCenter2012R2私有云部署实战》图书作者,往届微软MVP,关注云和PowerShell。

免责

本文仅代表个人观点,不代表任何组织、机构或公司的立场。所提供的信息仅供参考和一般性信息之用途。尽管本文力图提供准确、全面的信息,但不能保证其准确性、完整性、及时性或适用性。

读者在采取本文提供的任何行动或依赖所包含的信息时,应自行承担风险。作者和OpenAI不对任何直接或间接引起的损失或损害承担责任。

本文中提到的任何产品、服务、公司或组织的商标、标识、图像等知识产权归其各自所有者所有。

读者应自行进行进一步的研究和咨询,以便做出明智的决策。对于任何与本文相关的具体问题,请咨询相关领域的专业人士或权威机构。

最后,本文的目的是提供一般性信息,并不构成任何形式的专业建议。读者在使用本文提供的信息时应行使谨慎和判断力。

感谢阅读本文,并理解其中的免责声明。


【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

推荐阅读
  oIa1edJoFmXP   2023年11月24日   31   0   0 AppsedVue