OpenShift4.10 Service Mesh 部署Bookinfo

简介

Service Mesh 基于开源 Istio 项目,为创建部署的服务提供发现、负载均衡、服务对服务身份验证、故障恢复、指标和监控的服务网络提供了便捷的方法。服务网格还提供更复杂的操作功能,其中包括 A/B 测试、canary 发行版本、访问控制以及端到端验证。

核心功能

流量管理 - 控制服务间的流量和 API 调用,提高调用的可靠性,并使网络在条件不好的情况保持稳定。
服务标识和安全性 - 在网格中提供可验证身份的服务,并提供保护服务流量的能力,以便可以通过信任度不同的网络进行传输。
策略强制 - 对服务间的交互应用机构策略,确保实施访问策略,并在用户间分配资源。通过配置网格就可以对策略进行更改,而不需要修改应用程序代码。
遥测 - 了解服务间的依赖关系以及服务间的网络数据流,从而可以快速发现问题。

安装Operator

Red Hat OpenShift Service Mesh 需要使用以下四个 Operator:

OpenShift Elasticsearch -(可选)为使用分布式追踪平台进行追踪和日志记录提供数据库存储。它基于开源 Elasticsearch 项目。
Red Hat OpenShift distributed tracing 平台 - 提供分布式追踪以监控复杂分布式系统中的事务并进行故障排除。它基于开源 Jaeger 项目。
Kiali - 为您的服务网格提供可观察性。允许您在单个控制台中查看配置、监控流量和分析追踪。它基于开源 Kiali 项目。
Red Hat OpenShift Service Mesh - 允许您连接、保护、控制和观察组成应用程序的微服务。Service Mesh Operator 定义并监控管理 ServiceMeshControlPlane 资源,这个资源用来管理 Service Mesh 组件的部署、更新和删除操作。它基于开源 Istio 项目。

进入控制台进行安装

创建 ServiceMeshControlPlane控制层面

1.以具有 cluster-admin 角色的用户身份登录 OpenShift Container Platform CLI。如果使用 Red Hat OpenShift Dedicated,则必须有一个具有 dedicated-admin 角色的帐户。

oc login --token=sha256~JSJuR84lf1joH1XStxuLHQX73RVBh4BU4v1kpGPimIw --server=https://api.crc.testing:6443

2.创建一个名为 istio-system 的项目。

oc new-project istio-system

3.使用以下示例,创建一个名为 istio-installation.yaml 的 ServiceMeshControlPlane 文件。control plane 的版本决定了与 Operator 版本无关的可用功能。
istio-installation.yaml 版本示例

apiVersion: maistra.io/v2
kind: ServiceMeshControlPlane
metadata:
  name: basic
  namespace: istio-system
spec:
  version: v2.1
  tracing:
    type: Jaeger
    sampling: 10000
  addons:
    jaeger:
      name: jaeger
      install:
        storage:
          type: Memory
    kiali:
      enabled: true
      name: kiali
    grafana:
      enabled: true

4.运行以下命令来部署 control plane

 oc create -n istio-system -f istio-installation.yaml 

5.要观察 pod 部署的进度,请运行以下命令:

 oc get pods -n istio-system -w

您应该看到类似如下的输出:

 NAME                                   READY   STATUS    RESTARTS   AGE
grafana-b4d59bd7-mrgbr                 2/2     Running   0          65m
istio-egressgateway-678dc97b4c-wrjkp   1/1     Running   0          108s
istio-ingressgateway-b45c9d54d-4qg6n   1/1     Running   0          108s
istiod-basic-55d78bbbcd-j5556          1/1     Running   0          108s
jaeger-67c75bd6dc-jv6k6                2/2     Running   0          65m
kiali-6476c7656c-x5msp                 1/1     Running   0          43m
prometheus-58954b8d6b-m5std            2/2     Running   0          66m
wasm-cacher-basic-8c986c75-vj2cd       1/1     Running   0          65m

6.使用 CLI 验证 SMCP 安装,运行以下命令验证 control plane 安装,其中 istio-system 是安装服务网格 control plane 的命名空间。

oc get smcp -n istio-syst

当 STATUS 列是 ComponentsReady 时,安装成功完成。

NAME    READY   STATUS            PROFILES      VERSION   AGE
basic   10/10   ComponentsReady   ["default"]   2.1.1     66m

Bookinfo 示例应用程序

Bookinfo 应用程序显示一本书的信息,类似于在线书店的单一目录条目。应用会显示一个页面,其中描述了图书详细信息(ISBN、页数和其他信息)以及图书的评论。
Bookinfo 应用程序由这些微服务组成:

productpage 微服务调用 details 和 reviews 微服务来产生页面信息。
details 微服务包括了书的信息。
review 微服务包括了书的评论。它同时还会调用 ratings 微服务。
ratings微服务包括了带有对本书的评论信息的评分信息。

1.通过 CLI 运行这个命令来创建 bookinfo 项目

oc new-project bookinfo

2.切换到istio-system 项目 因为在这项目安装的SMCP

oc project istio-system

3.创建ServiceMeshMemberRoll (SMMR) 把bookinfo 项目加入到服务网格中。

Bookinfo ServiceMeshMemberRoll 示例 servicemeshmemberroll-default.yaml

apiVersion: maistra.io/v1
kind: ServiceMeshMemberRoll
metadata:
  name: default
spec:
  members:
  - bookinfo

4.创建资源

 oc create -n istio-system -f servicemeshmemberroll-default.yaml

5.运行以下命令,以验证 ServiceMeshMemberRoll 是否已成功创建。

  oc get smmr -n istio-system -o wide

当 STATUS 列为 Configured 时,安装成功完成。

NAME      READY   STATUS       AGE   MEMBERS
default   1/1     Configured   70s   ["bookinfo"]

6.在 CLI 中,通过应用 bookinfo.yaml 文件在 bookinfo 项目中部署 Bookinfo:

oc apply -n bookinfo -f https://raw.githubusercontent.com/Maistra/istio/maistra-2.2/samples/bookinfo/platform/kube/bookinfo.yaml

您应该看到类似如下的输出:

service/details created
serviceaccount/bookinfo-details created
deployment.apps/details-v1 created
service/ratings created
serviceaccount/bookinfo-ratings created
deployment.apps/ratings-v1 created
service/reviews created
serviceaccount/bookinfo-reviews created
deployment.apps/reviews-v1 created
deployment.apps/reviews-v2 created
deployment.apps/reviews-v3 created
service/productpage created
serviceaccount/bookinfo-productpage created
deployment.apps/productpage-v1 created

7.通过应用 bookinfo-gateway.yaml 文件创建入站网关 :

oc apply -n bookinfo -f https://raw.githubusercontent.com/Maistra/istio/maistra-2.2/samples/bookinfo/networking/bookinfo-gateway.yaml

您应该看到类似如下的输出:

gateway.networking.istio.io/bookinfo-gateway created
virtualservice.networking.istio.io/bookinfo created

8.设置 GATEWAY_URL 参数的值:

export GATEWAY_URL=$(oc -n istio-system get route istio-ingressgateway -o jsonpath='{.spec.host}')
  1. 添加默认目的地规则
    要添加目的地规则,请运行以下命令之一:

如果没有启用 mutual TLS:

 oc apply -n bookinfo -f https://raw.githubusercontent.com/Maistra/istio/maistra-2.2/samples/bookinfo/networking/destination-rule-all.yaml

如果启用了 nutual TLS:

 oc apply -n bookinfo -f https://raw.githubusercontent.com/Maistra/istio/maistra-2.2/samples/bookinfo/networking/destination-rule-all-mtls.yaml

您应该看到类似如下的输出:

destinationrule.networking.istio.io/productpage created
destinationrule.networking.istio.io/reviews created
destinationrule.networking.istio.io/ratings created
destinationrule.networking.istio.io/details created 

10.验证 Bookinfo 安装
验证所有 pod 是否都与此命令就绪:

oc get pods -n bookinfo

所有容器集的状态都应为 Running。您应该看到类似如下的输出:

 NAME                              READY   STATUS    RESTARTS   AGE
details-v1-55b869668-jh7hb        2/2     Running   0          12m
productpage-v1-6fc77ff794-nsl8r   2/2     Running   0          12m
ratings-v1-7d7d8d8b56-55scn       2/2     Running   0          12m
reviews-v1-868597db96-bdxgq       2/2     Running   0          12m
reviews-v2-5b64f47978-cvssp       2/2     Running   0          12m
reviews-v3-6dfd49b55b-vcwpf       2/2     Running   0          12m

运行以下命令来检索产品页面的 URL:

echo "http://$GATEWAY_URL/productpage"
http://istio-ingressgateway-istio-system.apps-crc.testing/productpage

访问:http://istio-ingressgateway-istio-system.apps-crc.testing/productpage

在这里插入图片描述

访问 Kiali 进入路由获取地址:https://kiali-istio-system.apps-crc.testing
在这里插入图片描述
登录账号密码默认与OCP集群一样我用的OCP 4.10.22 账号: kubeadmin 密码:openshift

在这里插入图片描述

多次请求bookinfo接口,会现实出来调用链路。
在这里插入图片描述

参考资料:
https://access.redhat.com/documentation/zh-cn/openshift_container_platform/4.11/html-single/service_mesh/index#ossm-tutorial-bookinfo-overview_ossm-create-mesh

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值