直达 Istio 1.0 | 使用 Helm 部署 Istio 服务

栏目: 数据库 · 发布时间: 5年前

内容简介:「技术直达」系列 道客船长「技术直达」系列,关注国内外云原生领域的技术和前沿趋势,为开发者和企业提供最新的理论和实践干货。近期我们将视角放到业界炙手可热的北京时间 2018 年 8 月 1 日凌晨 0 点,

「技术直达」系列 道客船长「技术直达」系列,关注国内外云原生领域的技术和前沿趋势,为开发者和企业提供最新的理论和实践干货。近期我们将视角放到业界炙手可热的 微服务管理工具 Istio 之上 ,将持续更新系列干货文章。

北京时间 2018 年 8 月 1 日凌晨 0 点, Istio 宣布推出 1.0 正式版本 ,并表示已可用于生产环境。这距离最初的 0.1 版本发布已过去一年多的时间。Istio 是一个由谷歌、IBM 与 Lyft 共同开发的开源项目,旨在提供一种统一化的微服务连接、安全保障、管理与监控方式。

直达 Istio 1.0 | 使用 Helm 部署 Istio 服务

Istio 项目能够为微服务架构提供流量管理机制,同时亦为其它增值功能(包括安全性、监控、路由、连接管理与策略等)创造了基础。这款软件利用久经考验的 Lyft Envoy 代理进行构建,可在无需对应用程序代码作出任何发动的前提下实现可视性与控制能力。Istio 项目是一款强大的工具,可帮助 CTO/CIO 们立足企业内部实施整体性安全、政策与合规性要求。

Istio 至今已经开发了一年多的时间。直至今天,Istio 才推出了 1.0 版本,这是一个重要的里程碑,意味着所有的核心功能现在都可以用于生产环境。与两个月前发布的 0.8 版本相比,1.0 版本只新增了一些新功能,大部分工作主要还是用于修复错误和提升性能,将许多现有的功能标记为 Beta 状态 —— 表明可用于生产环境。

这个项目的组件相对比较复杂,原有的一些选项是靠 ConfigMap 以及 istioctl 分别调整的,现在通过重新设计的 Helm Chart ,安装选项用 values.yml 或者 helm 命令行的方式来进行集中管理了。

在安装 Istio 之前要确保 Kubernetes 集群(仅支持 v1.9 及以后版本)已部署并配置好本地的 kubectl 客户端。

1. 下载 Istio

$ wget https://github.com/istio/istio/releases/download/1.0.0/istio-1.0.0-linux.tar.gz
$ tar zxf istio-1.0.0-linux.tar.gz
$ cp istio-1.0.0/bin/istioctl /usr/local/bin/

2. 使用 Helm 部署 Istio 服务

克隆 Istio 仓库:

$ git clone https://github.com/istio/istio.git
$ cd istio

安装包内的 Helm 目录中包含了 Istio 的 Chart,官方提供了两种方法:

istio.yaml
Tiller

很明显,两种方法并没有什么本质区别,这里我们采用第一种方法来部署。

$ helm template install/kubernetes/helm/istio --name istio --namespace istio-system --set sidecarInjectorWebhook.enabled=true --set ingress.service.type=NodePort --set gateways.istio-ingressgateway.type=NodePort --set gateways.istio-egressgateway.type=NodePort --set tracing.enabled=true --set servicegraph.enabled=true --set prometheus.enabled=true --set tracing.jaeger.enabled=true --set grafana.enabled=true > istio.yaml

$ kubectl create namespace istio-system
$ kubectl create -f istio.yaml

这里说的是使用 install/kubernetes/helm/istio 目录中的 Chart 进行渲染,生成的内容保存到  ./istio.yaml 文件之中。将  sidecarInjectorWebhook.enabled 设置为 true,从而使自动注入属性生效。

部署完成后,可以检查 isotio-system namespace 中的服务是否正常运行:

$ kubectl -n istio-system get pods -o go-template='{{range .items}}{{.metadata.name}}{{"\n"}}{{end}}'

istio-citadel-f5779fbbb-brbxd
istio-cleanup-secrets-jjqg5
istio-egressgateway-6c5cc7dd86-l2c82
istio-galley-6bf8f6f4b7-twvzl
istio-ingressgateway-fbfdfc5c7-fg9xh
istio-pilot-85df58955d-g5bfh
istio-policy-74c48c8ccb-wd6h6
istio-sidecar-injector-cf5999cf8-h9smx
istio-statsd-prom-bridge-55965ff9c8-2hmzf
istio-telemetry-cb49594cc-gfd84
istio-tracing-77f9f94b98-9xvzs
prometheus-7456f56c96-xcdh4
servicegraph-5b8d7b4d5-lzhth
  1. 过去的 istio-ca 现已更名  istio-citadel
  2. istio-cleanup-secrets  是一个 job,用于清理过去的 Istio 遗留下来的 CA 部署(包括 sa、deploy 以及 svc 三个对象)。
  3. egressgatewayingress  以及  ingressgateway ,可以看出边缘部分的变动很大,以后会另行发文。

3. Prometheus、Grafana、Servicegraph 和 Jaeger

等所有 Pod 启动后,可以通过 NodePort、Ingress 或者 kubectl proxy 来访问这些服务。比如可以通过 Ingress 来访问服务。

首先为 Prometheus、Grafana、Servicegraph 和 Jaeger 服务创建 Ingress:

$ cat ingress.yaml

---
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: prometheus
  namespace: istio-system
spec:
  rules:
  - host: prometheus.istio.io
    http:
      paths:
      - path: /
        backend:
          serviceName: prometheus
          servicePort: 9090
---
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: grafana
  namespace: istio-system
spec:
  rules:
  - host: grafana.istio.io
    http:
      paths:
      - path: /
        backend:
          serviceName: grafana
          servicePort: 3000
---
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: servicegraph
  namespace: istio-system
spec:
  rules:
  - host: servicegraph.istio.io
    http:
      paths:
      - path: /
        backend:
          serviceName: servicegraph
          servicePort: 8088
---
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: tracing
  namespace: istio-system
spec:
  rules:
  - host: tracing.istio.io
    http:
      paths:
      - path: /
        backend:
          serviceName: tracing
          servicePort: 80
$ kubectl create -f ingress.yaml

然后在你的本地电脑上添加四条 hosts

$Ingree_host prometheus.istio.io
$Ingree_host grafana.istio.io
$Ingree_host servicegraph.istio.io
$Ingree_host tracing.istio.io

$Ingree_host 替换为 Ingress Controller 运行节点的 IP。

通过 http://grafana.istio.io 访问 Grafana 服务:

直达 Istio 1.0 | 使用 Helm 部署 Istio 服务

直达 Istio 1.0 | 使用 Helm 部署 Istio 服务

通过 http://servicegraph.istio.io 访问 ServiceGraph 服务,展示服务之间调用关系图。

  • http://servicegraph.istio.io/force/forcegraph.html  : As explored above, this is an interactive  D3.js visualization.

直达 Istio 1.0 | 使用 Helm 部署 Istio 服务

  • http://servicegraph.istio.io/dotviz  : is a static  Graphviz  visualization.

直达 Istio 1.0 | 使用 Helm 部署 Istio 服务

  • http://servicegraph.istio.io/dotgraph  : provides a [DOT]( https://www.wikiwand.com/en/DOT_(graph_description_language ) serialization.
  • http://servicegraph.istio.io/d3graph  : provides a JSON serialization for D3 visualization.
  • http://servicegraph.istio.io/graph  : provides a generic JSON serialization.

通过 http://tracing.istio.io/ 访问 Jaeger 跟踪页面:

直达 Istio 1.0 | 使用 Helm 部署 Istio 服务

通过 http://prometheus.istio.io/ 访问 Prometheus 页面:

直达 Istio 1.0 | 使用 Helm 部署 Istio 服务

Note:

如果你已经部署了 Prometheus-operator ,可以不必部署 Grafana,直接将  addons/grafana/dashboards 目录下的 Dashboard 模板复制出来放到 Prometheus-operator 的 Grafana 上,然后添加 istio-system 命名空间中的 Prometheus 数据源就可以监控 Istio 了。

4. Mesh Expansion

Istio 还支持管理非 Kubernetes 管理的应用。此时,需要在应用所在的 VM 或者物理中部署 Istio,具体步骤请参考 Mesh Expansion

部署好后,就可以向 Istio 注册应用,如:

# istioctl register servicename machine-ip portname:port
$ istioctl -n onprem register mysql 1.2.3.4 3306
$ istioctl -n onprem register svc1 1.2.3.4 http:7000

5. 参考


以上所述就是小编给大家介绍的《直达 Istio 1.0 | 使用 Helm 部署 Istio 服务》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

玻璃笼子

玻璃笼子

[美]尼古拉斯·卡尔 / 杨柳 / 中信出版社 / 2015-11 / 49.00元

这是一本关于自动化的书,它提醒我们自动化对人类的影响,人们心安理得享受技术带来的便利却忽视了,它已经渗透进了生活和工作改变了我们的思维和认知方式。商家在设计程序和应用时,早就把他们的想法埋入了编程和APP中。 卡尔的作品无疑是给我们这个时代灌入了的一剂清醒药。他独特的思考问题角度,犀利甚至略为偏激 的言论再加上丰富的*前沿的科技案例会让人读起来畅快淋漓,且醍醐灌顶,意识到自动化等高科技潜移默......一起来看看 《玻璃笼子》 这本书的介绍吧!

CSS 压缩/解压工具
CSS 压缩/解压工具

在线压缩/解压 CSS 代码

图片转BASE64编码
图片转BASE64编码

在线图片转Base64编码工具

MD5 加密
MD5 加密

MD5 加密工具