OpenShift 4.2 Service Mesh

1.和社区版Istio的区别

OpenShift 4.2的Service Mesh和upstream的Istio项目的增强,除了产品化之外,借用官方文档,区别在于:

Red Hat OpenShift Service Mesh differs from Istio in ways that help resolve issues, provide additional features, and ease deployment on OpenShift Container Platform. An installation of Red Hat OpenShift Service Mesh differs from upstream Istio community installations in multiple ways:

  • OpenShift Service Mesh installs a multi-tenant control plane by default
  • OpenShift Service Mesh extends Role Based Access Control (RBAC) features
  • OpenShift Service Mesh replaces BoringSSL with OpenSSL
  • Kiali and Jaeger are enabled by default in OpenShift Service Mesh

2.架构

各个模块功能不再熬述。

3.安装和部署

  • 基于OperatorHub部署service mesh,部署顺序为:elasticsearch Operator->Jaeger Opeartor->Kiali Operator->OpenShift Service Mesh Operator->OpenShift Service Mesh Controller Plane

详细可以参考

https://docs.openshift.com/container-platform/4.2/service_mesh/service_mesh_install/installing-ossm.html

  • 部署完control plane后,会在istio-system下生成如下Pod
[[email protected] 0 ~]# oc get pods -n istio-system
NAME                                      READY   STATUS    RESTARTS   AGE
grafana-b67df64b6-2kp7h                   2/2     Running   0          2d23h
istio-citadel-79979464d-kxpxw             1/1     Running   0          2d23h
istio-egressgateway-7d897695c4-c868b      1/1     Running   0          2d23h
istio-galley-6bb46858c5-pf476             1/1     Running   0          2d23h
istio-ingressgateway-8465bbf788-j9jgk     1/1     Running   0          2d23h
istio-pilot-54b65495c4-4tg6m              2/2     Running   0          2d23h
istio-policy-5fc74b8697-mk85l             2/2     Running   0          2d23h
istio-sidecar-injector-65cd4c8c6f-cnp5t   1/1     Running   0          2d23h
istio-telemetry-69cb778b9-qlpqj           2/2     Running   0          2d23h
jaeger-57776787bc-ljls5                   2/2     Running   0          2d23h
kiali-6d6f9cf658-kzdwf                    1/1     Running   0          2d1h
prometheus-b8bdc6b77-rbxzs                2/2     Running   0          2d23h

和下面的服务

[[email protected] 0 ~]# oc get svc -n istio-system
NAME                        TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)                                  AGE
grafana                     ClusterIP   172.30.124.97    <none>        3000/TCP                                 2d23h
istio-citadel               ClusterIP   172.30.122.114   <none>        8060/TCP,15014/TCP                       2d23h
istio-egressgateway         ClusterIP   172.30.60.175    <none>        80/TCP,443/TCP,15443/TCP                 2d23h
istio-galley                ClusterIP   172.30.167.213   <none>        443/TCP,15014/TCP,9901/TCP               2d23h
istio-ingressgateway        ClusterIP   172.30.221.247   <none>        15020/TCP,80/TCP,443/TCP,15443/TCP       2d23h
istio-pilot                 ClusterIP   172.30.19.129    <none>        15010/TCP,15011/TCP,8080/TCP,15014/TCP   2d23h
istio-policy                ClusterIP   172.30.99.48     <none>        9091/TCP,15004/TCP,15014/TCP             2d23h
istio-sidecar-injector      ClusterIP   172.30.102.34    <none>        443/TCP                                  2d23h
istio-telemetry             ClusterIP   172.30.229.205   <none>        9091/TCP,15004/TCP,15014/TCP,42422/TCP   2d23h
jaeger-agent                ClusterIP   None             <none>        5775/TCP,5778/TCP,6831/TCP,6832/TCP      2d23h
jaeger-collector            ClusterIP   172.30.66.202    <none>        9411/TCP,14250/TCP,14267/TCP,14268/TCP   2d23h
jaeger-collector-headless   ClusterIP   None             <none>        9411/TCP,14250/TCP,14267/TCP,14268/TCP   2d23h
jaeger-query                ClusterIP   172.30.84.61     <none>        443/TCP                                  2d23h
kiali                       NodePort    172.30.55.80     <none>        20001:31380/TCP                          2d23h
prometheus                  ClusterIP   172.30.122.232   <none>        9090/TCP                                 2d23h
zipkin                      ClusterIP   172.30.189.90    <none>        9411/TCP                                 2d23h

查看对外暴露的路由

[[email protected] 0 ~]# oc get route -n istio-system
NAME                   HOST/PORT                                                                    PATH   SERVICES               PORT    TERMINATION   WILDCARD
grafana                grafana-istio-system.apps.cluster-4674.sandbox580.opentlc.com                       grafana                <all>   reencrypt     None
istio-ingressgateway   istio-ingressgateway-istio-system.apps.cluster-4674.sandbox580.opentlc.com          istio-ingressgateway   8080                  None
jaeger                 jaeger-istio-system.apps.cluster-4674.sandbox580.opentlc.com                        jaeger-query           <all>   reencrypt     None
kiali                  kiali-istio-system.apps.cluster-4674.sandbox580.opentlc.com                         kiali                  <all>   reencrypt     None
prometheus             prometheus-istio-system.apps.cluster-4674.sandbox580.opentlc.com                    prometheus             <all>   reencrypt     None

值得注意的是instio-ingressgateway这个路由是OpenShift Service Mesh暴露给外端访问的路由。也就是通过这个唯一的链接,调用接入到Service Mesh服务网格。

基于Operator的安装和部署确实使得整个过程方便不少,但也封装了很多的架构的细节了,所以我们所需要做的就是对架构更加了解。

4.使用

部署完成sample的bookinfo项目以后,再部署一个自己的简单的tomcat服务。

登录Kiali Console. myproject下面看到mytomcat情况

访问istio config,查看virtualservice mytomcat内容

然后访问发现访问不通。原本的想法是,如果uri是/mytomcat的化,就路由到mytomcat服务,结果出现的结果是:

经过排查发现是virtualservice的路径问题。(因为对架构不熟悉,耗费了4,5小时啊...)

kind: VirtualService
apiVersion: networking.istio.io/v1alpha3
metadata:
  name: mytomcat
  namespace: myproject
  selfLink: >-
    /apis/networking.istio.io/v1alpha3/namespaces/myproject/virtualservices/mytomcat
  uid: 834c4724-0812-11ea-b3a1-0a1bba0ac472
  resourceVersion: ‘1631674‘
  generation: 8
  creationTimestamp: ‘2019-11-16T01:43:39Z‘
spec:
  hosts:
    - ‘*‘
  gateways:
    - mytomcat-gateway
  http:
    - match:
        - uri:
            exact: /
      route:
        - destination:
            host: mytomcat
            port:
              number: 8080

注意这个uri的配置,gateway会拼接uri,也就是/到你的service的路径,如果你填入mytomcat,其实真实访问路径是http://mytomcat:8080/mytomcat,就会出现找不到应用的状况。

再度访问  http://istio-ingressgateway-istio-system.apps.cluster-4674.sandbox580.opentlc.com/  也就是根目录啦

发现图片没有出来。:(

原文地址:https://www.cnblogs.com/ericnie/p/11881229.html

时间: 2024-08-30 02:10:31

OpenShift 4.2 Service Mesh的相关文章

Service Mesh对企业安全而言意味着什么?

你听说过Service Mesh(服务网格)吗? 我相信你听说过.Service Mesh正成为容器生态圈愈发重要的一部分. 本文将简要概述Service Mesh的作用,并深入探讨它们对于企业安全性的意义. Service Meshes是什么?它为何如此重要? 连接问题 要想理解Service Mesh的存在原因,首先考虑一下容器环境中的网络连接. 想象一下当你运行一个云原生应用时会发生什么.但凡它具有一定的规模和复杂性,它通常都需要由大量单独的服务组成,这些服务间为了能够像一个单体桌面应用程

什么是Service Mesh?

转至大佬宋净明的博客:https://jimmysong.io/posts/what-is-a-service-mesh/ Service mesh 又译作 "服务网格",作为服务间通信的基础设施层.Buoyant 公司的 CEO Willian Morgan 在他的这篇文章 WHAT'S A SERVICE MESH? AND WHY DO I NEED ONE? 中解释了什么是 Service Mesh,为什么云原生应用需要 Service Mesh. 如 Willian Morg

consul 1.2 支持service mesh

主要说明: This release supports a major new feature called Connect that automatically turns any existing Consul cluster into a service mesh solution. Connect enables secure service-to-service communication with automatic TLS encryption and identity-based

微服务架构下 Service Mesh 会是闪亮的明天吗?

7月7日,时速云企业级容器 PaaS 技术沙龙第 10 期在上海成功举办,时速云容器架构负责人魏巍为大家详细讲解了 Service Mesh 中代表性的实践方案.并以 Istio 为例详细讲解了 Service Mesh 中的技术关键点,包括 Istio 控制平面.Istio 数据平面等.以下内容根据魏巍分享整编,希望对大家了解 Service Mesh 有所帮助. 魏巍:大家下午好,刚才几位讲师讲了 K8S 的存储.PaaS 在企业的落地实践等,我们接下来要讲的是企业有了 PaaS 平台.并且

什么是 Service Mesh

作者|敖小剑 微服务方兴未艾如火如荼之际,在 spring cloud 等经典框架之外,Service Mesh 技术正在悄然兴起.到底什么是 Service Mesh,它的出现能带来什么,又能改变什么?本文整理自数人云资深架构师敖小剑在 QCon 2017 上海站上的演讲. 简单回顾一下过去三年微服务的发展历程.在过去三年当中,微服务成为我们的业界技术热点,我们看到大量的互联网公司都在做微服务架构的落地.也有很多传统企业在做互联网技术转型,基本上还是以微服务和容器为核心. 在这个技术转型中,我

阿里巴巴中间件团队在 Service Mesh 的实践和探索

摘要: 所有软件最重要的使命不是满足功能要求,而是演进,从而持续成长. 精彩观点导读:? 我们去探索一项技术,并不会仅仅因为其先进性,而是因为我们目前遇到了一些无法解决的问题,而这项技术正好能解决这个问题. ? 所有软件最重要的使命不是满足功能要求,而是演进,从而持续成长. ? 微服务本质是对服务的拆分,微服务架构符合工程领域常用的"分而治之"范式. 近日,在Aliware Open Source?成都站-Apache Dubbo 开发者沙龙上,阿里巴巴中间件高级技术专家李云(至简)向

唯品会的Service Mesh三年进化史

每种架构风格,都会因各公司面临的情况不同而有不同的实现路线,Service Mesh也不例外,比如江南白衣描述的唯品会的服务化体系开放服务平台OSP(Open Service Platform)走的ServiceMesh之路就与流行的Istio不同.但它们要解决的核心问题是相似的,比如服务的注册发现.路由.熔断等如何实现,如何高效的传输与序列化.代理,甚至包括如何更方便的对原有的系统升级改造等. 一.标准服务化体系阶段 如果用两根手指将Local Proxy 和 Remote Proxy的框框按

蚂蚁金服 Service Mesh 实践探索

SOFAMesh是蚂蚁金服在ServiceMesh方向上的探索,下面是它高级技术专家敖小剑在QCon上海2018上的演讲. Service Mesh 是一个 基础设施层,用于处理服务间通讯.现代云原生应用有着复杂的服务拓扑,服务网格负责在这些拓扑中 实现请求的可靠传递. 在实践中,服务网格通常实现为一组 轻量级网络代理,它们与应用程序部署在一起,而 对应用程序透明. 加粗部分是重点: 基础设施层:这是 Service Mesh 的定位,今天内容的最后一个部分我会和大家详细展开这个话题: 服务间通

大家都在说的Service Mesh,你何时需要它?

在对应用程序进行重构和更新的过程中,往往会出现一些挑战.更新应用程序的频率越高,复杂性就越是会增加.让应用程序在容器平台上运行,并且它们之间可以互相通信和连接,是通向模块化的.灵活的微服务架构的必经之路.但是微服务的这种灵活性也让其变得更加复杂.这时就轮到Service Mesh发挥作用了! Service Mesh向企业提供了他们所需要的中心化控制面板,同时依然能够使用灵活的.基于云的应用程序开发方式.我们可以把Service Mesh看成是用于微服务API的专门的第7层网格,它提供身份验证.