Knative 实战:一个微服务应用的部署

发布时间:2020-07-02 10:07:09 作者:阿里系统软件技术
来源:网络 阅读:206

Knative 实战:一个微服务应用的部署cdn.com/ef27762085577f5a3916e783cdc59fbed9379219.png">

作者 | 元毅 阿里云智能事业群高级开发工程师

在 Istio 中提供了一个 Bookinfo 的示例,用于演示微服务之间的调用,那么如何在 Knative 中部署这个示例呢?本文将会给大家介绍一下在 Knative 中部署 Bookinfo 微服务以及查看调用链追踪信息。

背景

Bookinfo 这个示例应用由 4 个微服务组成。 Bookinfo 应用架构图如下:

Knative 实战:一个微服务应用的部署

另外 reviews 微服务目前有 3 个版本:

准备

部署

首先开启 Istio Sidecar 注入,我们在 default 命名空间打上 istio-injection=enabled 的 Label:

kubectl label namespace default istio-injection=enabled

部署 Bookinfo Knative Service 服务, 简单直接通过 yaml 文件一键拉起来,bookinfo.yaml:

apiVersion: serving.knative.dev/v1
kind: Service
metadata:
  name: details-v1
  namespace: default
spec:
  template:
    spec:
      containers:
      - image: registry.cn-hangzhou.aliyuncs.com/knative-sample/examples-bookinfo-details-v1:1.15.0
        ports:
        - containerPort: 9080
---
apiVersion: serving.knative.dev/v1
kind: Service
metadata:
  name: ratings-v1
  namespace: default
spec:
  template:
    spec:
      containers:
      - image: registry.cn-hangzhou.aliyuncs.com/knative-sample/examples-bookinfo-ratings-v1:1.15.0
        ports:
        - containerPort: 9080

---
apiVersion: serving.knative.dev/v1
kind: Service
metadata:
  name: reviews-v1
  namespace: default
spec:
  template:
    spec:
      containers:
      - image: registry.cn-hangzhou.aliyuncs.com/knative-sample/examples-bookinfo-reviews-v1:v1-aliyun
        ports:
        - containerPort: 9080

---
apiVersion: serving.knative.dev/v1
kind: Service
metadata:
  name: reviews-v2
  namespace: default
spec:
  template:
    spec:
      containers:
      - image: registry.cn-hangzhou.aliyuncs.com/knative-sample/examples-bookinfo-reviews-v2:v1-aliyun
        ports:
        - containerPort: 9080
        env:
        - name: SERVICES_DOMAIN
          value: default.svc.cluster.local
        - name: RATINGS_HOSTNAME
          value: ratings-v1
---
apiVersion: serving.knative.dev/v1
kind: Service
metadata:
  name: reviews-v3
  namespace: default
spec:
  template:
    spec:
      containers:
      - image: registry.cn-hangzhou.aliyuncs.com/knative-sample/examples-bookinfo-reviews-v3:v1-aliyun
        ports:
        - containerPort: 9080
        env:
        - name: SERVICES_DOMAIN
          value: default.svc.cluster.local
        - name: RATINGS_HOSTNAME
          value: ratings-v1
---
apiVersion: serving.knative.dev/v1
kind: Service
metadata:
  name: productpage-v1
  namespace: default
spec:
  template:
    spec:
      containers:
      - image: registry.cn-hangzhou.aliyuncs.com/knative-sample/productpage:v1-aliyun
        ports:
        - containerPort: 9080
        env:
        - name: SERVICES_DOMAIN
          value: default.svc.cluster.local
        - name: DETAILS_HOSTNAME
          value: details-v1
        - name: RATINGS_HOSTNAME
          value: ratings-v1
        - name: REVIEWS_HOSTNAME
          value: reviews-v2

这里需要说明几点:

执行命令:

# kubectl apply -f bookinfo.yaml

查看执行结果:

# kubectl get kservice
productpage-v1                  http://productpage-v1.default.knative.kuberun.com                  productpage-v1-s4drn                  productpage-v1-s4drn                  True    
ratings-v1                      http://ratings-v1.default.knative.kuberun.com                      ratings-v1-bsvb2                      ratings-v1-bsvb2                      True    
details-v1                      http://details-v1.default.knative.kuberun.com                      details-v1-dj47j                      details-v1-dj47j                      True    
reviews-v1                      http://reviews-v1.default.knative.kuberun.com                      reviews-v1-q5wz4                      reviews-v1-q5wz4                      True    
reviews-v2                      http://reviews-v2.default.knative.kuberun.com                      reviews-v2-5r7mm                      reviews-v2-5r7mm                      True    
reviews-v3                      http://reviews-v3.default.knative.kuberun.com                      reviews-v3-s2v6j                      reviews-v3-s2v6j                      True

通过页面进行访问,说明服务访问正常:

Knative 实战:一个微服务应用的部署

微服务调用链

一般情况下,用户比×××调用链信息,通过 Tracing Analysis 服务,我们可以方便的查看服务调用链。

首先我们进行一次服务访问,在 productpage 页面,点击 Normal user

Knative 实战:一个微服务应用的部署

可以看到 Book Details  和 Book Reviews 信息。productpage 服务依次会调用:details、reviews 和 ratings 服务。

Knative 实战:一个微服务应用的部署

接下来登录 Tracing Analysis 服务控制台,选择【应用列表】,点击 productpage.default

Knative 实战:一个微服务应用的部署

选择 调用链分析 页签,可以查看服务调用链信息。

Knative 实战:一个微服务应用的部署

结论

通过上面的介绍,我们可以在 Knative 中轻松实现微服务部署,并且结合 Tracing Analysis 服务可以满足部署生产级别服务诉求。

欢迎加入 Knative 交流群

Knative 实战:一个微服务应用的部署

作者简介:元毅,阿里云容器平台高级开发工程师,负责阿里云容器平台 Knative 相关工作。

了解 ACK 容器服务,请查看:https : //www.aliyun.com/product/kubernetes

“ 阿里巴巴云×××icloudnative×××erverless、容器、Service Mesh等技术领域、聚焦云原生流行技术趋势、云原生大规模的落地实践,做最懂云原生开发×××

推荐阅读:
  1. 开放下载 | 《Knative 云原生应用开发指南》开启云原生时代 Serverless 之门
  2. Knative 实战:基于 Kafka 实现消息推送

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

knative kubernetes serverless

上一篇:C#通过编辑距离计算两个字符串的相似度的代码

下一篇:PHP中Session的工作原理是什么

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》