详情页标题前

阿里云容器服务ACK部署应用示例到包含同VPC多集群的ASM实例-云淘科技

详情页1

通过服务网格ASM,可以将一个应用的服务组件部署在同VPC的多个集群上。本文以Bookinfo应用为例,介绍如何将该应用部署到包含两个集群的ASM实例。

前提条件

  • 在同一VPC下创建两个ACK集群(本例中m1c1和m1c2),详情请参见创建Kubernetes专有版集群。

  • 创建一个ASM实例(本例中mesh1),详情请参见创建ASM实例。

步骤一:修改集群的安全组名称

将两个集群对应的安全组名称修改为易于辨识的名称,本例中为m1c1-sg和m1c2-sg。

  1. 登录ECS管理控制台。
  2. 在左侧导航栏,选择网络与安全 > 安全组
  3. 在页面左侧顶部,选择目标资源所在的地域。阿里云容器服务ACK部署应用示例到包含同VPC多集群的ASM实例-云淘科技
  4. 安全组页面中,找到需要修改的安全组,单击操作列的修改
  5. 在弹出的对话框中,修改安全组名称描述
  6. 单击确定

修改后的名称,如下图所示。阿里云容器服务ACK部署应用示例到包含同VPC多集群的ASM实例-云淘科技

步骤二:配置集群的互访联通性

为了使两个集群能够互相访问,需要为彼此添加安全组访问规则。

  1. 在m1c1-sg安全组配置界面,添加以m1c2-sg为授权对象的访问规则。详情请参见添加安全组规则。阿里云容器服务ACK部署应用示例到包含同VPC多集群的ASM实例-云淘科技

  2. 在m1c2-sg安全组规则配置界面,添加以m1c1-sg为授权对象的访问规则。阿里云容器服务ACK部署应用示例到包含同VPC多集群的ASM实例-云淘科技

步骤三:添加集群到ASM实例并部署集群的入口网关

将两个集群添加到ASM实例后,由于两个集群已实现访问互通,因此只需为一个集群部署入口网关。

  1. 将两个集群添加到ASM实例,详情请参见添加集群到ASM实例。

  2. 为m1c1集群部署入口网关,详情请参见创建入口网关。

步骤四:部署Bookinfo应用

为了演示ASM跨集群的应用部署能力,Bookinfo应用的不同微服务分别部署在两个集群上。

  1. 在m1c2中部署不包含review-v3 deployment的Bookinfo应用,详情请参见部署应用到ASM实例。

    说明

    Review-v3 deployment对应的功能是书评中显示红色星。

    对应的YAML文件内容如下所示:

    # Details service
    apiVersion: v1
    kind: Service
    metadata:
      name: details
      labels:
        app: details
        service: details
    spec:
      ports:
      - port: 9080
        name: http
      selector:
        app: details
    ---
    apiVersion: v1
    kind: ServiceAccount
    metadata:
      name: bookinfo-details
      labels:
        account: details
    ---
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: details-v1
      labels:
        app: details
        version: v1
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: details
          version: v1
      template:
        metadata:
          labels:
            app: details
            version: v1
        spec:
          serviceAccountName: bookinfo-details
          containers:
          - name: details
            image: docker.io/istio/examples-bookinfo-details-v1:1.15.0
            imagePullPolicy: IfNotPresent
            ports:
            - containerPort: 9080
    ---
    # Ratings service
    apiVersion: v1
    kind: Service
    metadata:
      name: ratings
      labels:
        app: ratings
        service: ratings
    spec:
      ports:
      - port: 9080
        name: http
      selector:
        app: ratings
    ---
    apiVersion: v1
    kind: ServiceAccount
    metadata:
      name: bookinfo-ratings
      labels:
        account: ratings
    ---
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: ratings-v1
      labels:
        app: ratings
        version: v1
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: ratings
          version: v1
      template:
        metadata:
          labels:
            app: ratings
            version: v1
        spec:
          serviceAccountName: bookinfo-ratings
          containers:
          - name: ratings
            image: docker.io/istio/examples-bookinfo-ratings-v1:1.15.0
            imagePullPolicy: IfNotPresent
            ports:
            - containerPort: 9080
    ---
    # Reviews service
    apiVersion: v1
    kind: Service
    metadata:
      name: reviews
      labels:
        app: reviews
        service: reviews
    spec:
      ports:
      - port: 9080
        name: http
      selector:
        app: reviews
    ---
    apiVersion: v1
    kind: ServiceAccount
    metadata:
      name: bookinfo-reviews
      labels:
        account: reviews
    ---
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: reviews-v1
      labels:
        app: reviews
        version: v1
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: reviews
          version: v1
      template:
        metadata:
          labels:
            app: reviews
            version: v1
        spec:
          serviceAccountName: bookinfo-reviews
          containers:
          - name: reviews
            image: docker.io/istio/examples-bookinfo-reviews-v1:1.15.0
            imagePullPolicy: IfNotPresent
            ports:
            - containerPort: 9080
    ---
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: reviews-v2
      labels:
        app: reviews
        version: v2
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: reviews
          version: v2
      template:
        metadata:
          labels:
            app: reviews
            version: v2
        spec:
          serviceAccountName: bookinfo-reviews
          containers:
          - name: reviews
            image: docker.io/istio/examples-bookinfo-reviews-v2:1.15.0
            imagePullPolicy: IfNotPresent
            ports:
            - containerPort: 9080
     ---
    # apiVersion: apps/v1
    # kind: Deployment
    # metadata:
    #   name: reviews-v3
    #   labels:
    #     app: reviews
    #     version: v3
    # spec:
    #   replicas: 1
    #   selector:
    #     matchLabels:
    #       app: reviews
    #       version: v3
    #   template:
    #     metadata:
    #       labels:
    #         app: reviews
    #         version: v3
    #     spec:
    #       serviceAccountName: bookinfo-reviews
    #       containers:
    #       - name: reviews
    #         image: docker.io/istio/examples-bookinfo-reviews-v3:1.15.0
    #         imagePullPolicy: IfNotPresent
    #         ports:
    #         - containerPort: 9080
    ---
    # Productpage services
    apiVersion: v1
    kind: Service
    metadata:
      name: productpage
      labels:
        app: productpage
        service: productpage
    spec:
      ports:
      - port: 9080
        name: http
      selector:
        app: productpage
    ---
    apiVersion: v1
    kind: ServiceAccount
    metadata:
      name: bookinfo-productpage
      labels:
        account: productpage
    ---
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: productpage-v1
      labels:
        app: productpage
        version: v1
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: productpage
          version: v1
      template:
        metadata:
          labels:
            app: productpage
            version: v1
        spec:
          serviceAccountName: bookinfo-productpage
          containers:
          - name: productpage
            image: docker.io/istio/examples-bookinfo-productpage-v1:1.15.0
            imagePullPolicy: IfNotPresent
            ports:
            - containerPort: 9080
    ---
  2. 在m1c1中部署review-v3以及rating service(review依赖的服务)。

    对应的YAML文件内容如下所示:

    # Reviews service
    apiVersion: v1
    kind: Service
    metadata:
      name: reviews
      labels:
        app: reviews
        service: reviews
    spec:
      ports:
      - port: 9080
        name: http
      selector:
        app: reviews
    ---
    apiVersion: v1
    kind: ServiceAccount
    metadata:
      name: bookinfo-reviews
      labels:
        account: reviews
    ---
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: reviews-v3
      labels:
        app: reviews
        version: v3
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: reviews
          version: v3
      template:
        metadata:
          labels:
            app: reviews
            version: v3
        spec:
          serviceAccountName: bookinfo-reviews
          containers:
          - name: reviews
            image: docker.io/istio/examples-bookinfo-reviews-v3:1.15.0
            imagePullPolicy: IfNotPresent
            ports:
            - containerPort: 9080
    ---
    # Ratings service
    apiVersion: v1
    kind: Service
    metadata:
      name: ratings
      labels:
        app: ratings
        service: ratings
    spec:
      ports:
      - port: 9080
        name: http
      selector:
        app: ratings

步骤五:添加虚拟服务和Istio网关

  1. 在ASM实例的default命名空间下新建一个虚拟服务,名为bookinfo,详情请参见使用Istio资源实现版本流量路由。

    对应的YAML文件内容如下所示:

    apiVersion: networking.istio.io/v1alpha3
    kind: VirtualService
    metadata:
      name: bookinfo
    spec:
      hosts:
      - "*"
      gateways:
      - bookinfo-gateway
      http:
      - match:
        - uri:
            exact: /productpage
        - uri:
            prefix: /static
        - uri:
            exact: /login
        - uri:
            exact: /logout
        - uri:
            prefix: /api/v1/products
        route:
        - destination:
            host: productpage
            port:
              number: 9080
  2. 在ASM实例的default命名空间下新建一个Istio网关,名为bookinfo-gateway,详情参见使用Istio资源实现版本流量路由。

    对应的YAML文件内容如下所示:

    apiVersion: networking.istio.io/v1alpha3
    kind: Gateway
    metadata:
      name: bookinfo-gateway
    spec:
      selector:
        istio: ingressgateway # use istio default controller
      servers:
      - port:
          number: 80
          name: http
          protocol: HTTP
        hosts:
        - "*"

访问productpage页面,刷新页面时会轮流显示reviews的3个版本。虽然review-v3和其他服务不在同一个集群中,也可以正常显示。

(可选)步骤六:指定reviews总是用v3版本

通过定义目标规则和虚拟服务,可以定义Bookinfo应用的微服务部署策略。本例中将指定Bookinfo总是使用review v3版本。

  1. 在ASM实例的default命名空间下新建一个目标规则,名为reviews。

    YAML文件的内容如下所示:

    apiVersion: networking.istio.io/v1alpha3
    kind: DestinationRule
    metadata:
      name: reviews
    spec:
      host: reviews
      subsets:
      - name: v1
        labels:
          version: v1
      - name: v2
        labels:
          version: v2
      - name: v3
        labels:
          version: v3
  2. 在ASM实例的default命名空间下新建一个虚拟服务,名为reviews。

    对应的YAML文件内容如下所示:

    apiVersion: networking.istio.io/v1alpha3
    kind: VirtualService
    metadata:
      name: reviews
    spec:
      hosts:
        - reviews
      http:
      - route:
        - destination:
            host: reviews
            subset: v3

此时访问productpage页面,reviews将始终使用v3版本,即书评中为红色星。阿里云容器服务ACK部署应用示例到包含同VPC多集群的ASM实例-云淘科技

内容没看懂? 不太想学习?想快速解决? 有偿解决: 联系专家

阿里云企业补贴进行中: 马上申请

腾讯云限时活动1折起,即将结束: 马上收藏

同尘科技为腾讯云授权服务中心。

购买腾讯云产品享受折上折,更有现金返利:同意关联,立享优惠

转转请注明出处:https://www.yunxiaoer.com/157111.html

(0)
上一篇 2023年12月10日
下一篇 2023年12月10日
详情页2

相关推荐

  • 阿里云容器服务ACK删除集群实例-云淘科技

    根据集群ID,删除集群实例,并释放集群所有节点资源。 具体的API描述,请参见删除集群。 API请求响应 请求格式 aliyun cs DELETE /clusters/ 响应结果 无。 内容没看懂? 不太想学习?想快速解决? 有偿解决: 联系专家阿里云企业补贴进行中: 马上申请腾讯云限时活动1折起,即将结束: 马上收藏同尘科技为腾讯云授权服务中心。 购买腾…

    阿里云容器服务 2023年12月10日
  • 阿里云ECS云服务器在七代安全增强型实例中部署PyTorch深度学习模型-云淘科技

    本文介绍如何基于安全增强型实例(Intel® SGX)部署PyTorch深度学习模型的技术架构和使用流程。 背景信息 人工智能模型经由大量训练数据和算力生成,是具有商业价值的知识产权形式之一。PyTorch以其灵活、动态的编程环境、动态图机制、网络构建灵活等优势,深受AI开发者的推崇。该模型通常被部署于云服务供应商提供的云服务器如阿里云ECS。如何确保这些部…

    2023年12月9日
  • 阿里云ECS云服务器CreateDeploymentSet-云淘科技

    调用CreateDeploymentSet在指定的地域内创建一个部署集。 调试 您可以在OpenAPI Explorer中直接运行该接口,免去您计算签名的困扰。运行成功后,OpenAPI Explorer可以自动生成SDK代码示例。 请求参数 名称 类型 是否必选 示例值 描述 Action String 是 CreateDeploymentSet 系统规定…

    阿里云服务器 2023年12月9日
  • 信息流广告,信息流部分建议宽度830px,只针对默认列表样式,顺序随机
  • 阿里云对象存储OSSImpala以EMR集群的方式查询OSS-HDFS服务中的数据-云淘科技

    本文介绍Impala如何以EMR集群的方式查询OSS-HDFS服务中的数据。 前提条件 已创建EMR-3.42.0及以上版本或EMR-5.8.0及以上版本的集群。具体步骤,请参见创建集群。 已开通并授权访问OSS-HDFS服务。具体操作,请参见开通并授权访问OSS-HDFS服务。 操作步骤 登录EMR集群。 登录EMR on ECS控制台。 单击创建的EMR…

    阿里云对象存储 2023年12月10日
  • 阿里云人工智能平台PAI使用PAI Python SDK训练和部署PyTorch模型-云淘科技

    PAI Python SDK是PAI提供的Python SDK,提供了更易用的HighLevel API,支持用户在PAI完成模型的训练和部署。本文档介绍如何使用PAI Python SDK在PAI完成一个PyTorch模型的训练和部署。 背景信息 PyTorch是一个非常流行的深度学习框架,提供了极高的灵活性和优越的性能,能够与Python丰富的生态无缝结…

    阿里云人工智能平台PAI 2023年12月10日

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信
本站为广大会员提供阿里云、腾讯云、华为云、百度云等一线大厂的购买,续费优惠,保证底价,买贵退差。