介绍如何部署服务。

前提条件

在部署服务前,请确保您已经进行以下操作:

背景信息

灰度及蓝绿发布是为新版本创建一个与老版本完全一致的生产环境,在不影响老版本的前提下,按照一定的规则把部分流量切换到新版本,当新版本试运行一段时间没有问题后,将用户的全量流量从老版本迁移至新版本。因此,这里先在集群中部署一个旧版本的服务。

操作步骤

  1. 登录容器服务管理控制台
  2. 在控制台左侧导航栏中,单击集群
  3. 集群列表页面中,单击目标集群名称或者目标集群右侧操作列下的详情
  4. 在集群管理页左侧导航栏中,单击工作负载
  5. 选择命名空间,然后选择无状态页签。
  6. 单击无状态页签右上角的使用模板创建
  7. 选择示例模板使用已有模板,然后单击创建

    本例是一个nginx应用,包含一个Deployment、Service以及Ingress。Deployment通过NodePort对外暴露端口,并且有一个Ingress正在对外提供服务。编排模板如下。

    apiVersion: extensions/v1beta1
    kind: Deployment
    metadata:
      name: old-nginx
    spec:
      replicas: 2
      selector:
        matchLabels:
          run: old-nginx
      template:
        metadata:
          labels:
            run: old-nginx
        spec:
          containers:
          - image: registry.cn-hangzhou.aliyuncs.com/xianlu/old-nginx
            imagePullPolicy: Always
            name: old-nginx
            ports:
            - containerPort: 80
              protocol: TCP
          restartPolicy: Always
    ---
    apiVersion: v1
    kind: Service
    metadata:
      name: old-nginx
    spec:
      ports:
      - port: 80
        protocol: TCP
        targetPort: 80
      selector:
        run: old-nginx
      sessionAffinity: None
      type: NodePort
    ---
    apiVersion: extensions/v1beta1
    kind: Ingress
    metadata:
        name: gray-release
    spec:
      rules:
      - host: www.example.com
        http:
          paths:
          # 老版本服务
          - path: /
            backend:
              serviceName: old-nginx
              servicePort: 80
  8. 创建成功后,单击左侧导航栏中的路由

    您可看到虚拟主机名称指向old-nginx。

  9. 登录Master节点,执行curl命令,查看路由的访问情况。
    curl -H "Host: www.example.com" http://<EXTERNAL_IP> 
    说明 <EXTERNAL_IP>可通过以下两种方式获取。
    • 执行以下命令获取:
      kubectl get ingress
    • 在Kubernetes菜单下,单击集群名称,在集群信息页面左侧导航栏选择路由,进入路由页面,选择目标路由,查看对应的端点信息。