品尝阿里云容器服务:用nginx镜像创建容器,体验基于域名的路由机制

时间:2023-01-18 22:12:27

在前一篇博文中我们了解了阿里云容器服务的路由机制:

请求 -> 负载均衡80端口 -> 容器主机9080端口 -> acsrouting路由容器80端口 --基于域名--> Web站点容器的80端口

在这篇博文中,我们用nginx镜像创建一个容器实际体验一下。

使用容器服务首先要创建一个集群(Cluster),比如这里我们创建一个名叫websites的集群(使用的是swarm mode):

品尝阿里云容器服务:用nginx镜像创建容器,体验基于域名的路由机制

创建好集群后,点击“管理”,进入集群管理页面 -> “负载均衡” -> “域名设置”,修改为自己的域名(默认域名是alicontainer.com),这样可以通过自己的域名访问容器中的站点。

品尝阿里云容器服务:用nginx镜像创建容器,体验基于域名的路由机制

注:此处有坑,被坑了一个周末的下午,而阿里云帮助文档中只字未提。修改域名设置后一定要在应用列表中“重新部署”acsrouting系统应用:

品尝阿里云容器服务:用nginx镜像创建容器,体验基于域名的路由机制

不然,访问时总是出现下面的错误:

503 Service Unavailable

No server is available to handle this request.

接下来,进入容器服务管理控制台的“镜像与方案” -> “编排模板”(Orchestration Templates)页面,点击“创建”进入“创建编排”页面,填写自己的编排。比如,我们想通过 nginx.cnblogs.com 这个域名访问容器中的站点,我们是这样编排的:

品尝阿里云容器服务:用nginx镜像创建容器,体验基于域名的路由机制

(注:上图中不需要添加aliyun.lb.port_80设置)

编排说明:

  1. 我们的集群用的是swarm mode,所以这里用v3版本模板( version: "3" )。
  2. 镜像用的是nginx
  3. aliyun.routing.port_80 设置的是路由至该容器的域名,比如我们要针对 nginx.cnblogs.com 域名进行路由,只需要写二级域名 nginx ,后缀已经在之前的“负载均衡 -> 域名设置”中设置了。
  4. aliyun.lb.port_80 设置的是所绑定的负载均衡,格式是 tcp://{负载均衡ID}:{负载均衡前端端口} ,这里对应的负载均衡是创建集群时自动创建的负载均衡(如果不是自动创建的,需要在“集群 -> 管理 -> 负载均衡”中绑定负载均衡 )。 aa(后来知道这里不需要添加aliyun.lb.port_80设置,这个设置会自动配置负载均衡,带来的后果是删除应用时,对应的负载均衡配置也会被删除)

创建好编排之后,以此编排创建应用:

品尝阿里云容器服务:用nginx镜像创建容器,体验基于域名的路由机制

应用创建成功后,就可以在应用的“路由列表”中看到应用所绑定的域名:

品尝阿里云容器服务:用nginx镜像创建容器,体验基于域名的路由机制

最后,添加一下域名的dns解析或者hosts解析,就可以通过浏览器访问运行在容器中的nginx站点:

品尝阿里云容器服务:用nginx镜像创建容器,体验基于域名的路由机制

终于搞定!先苦后甜的一次品尝,使用阿里云容器服务进行自动化部署的重要一步。