与Istio一起运行
Istio是一个连接,管理和保护微服务的开放平台。Linkerd是云本机应用程序的开源服务网格。Istio和Linkerd可以一起工作,Istio可作为跨Linkerd实例的控制平面。
Linkerd的Istio集成是实验性的,目前支持 路由规则, 入口, 出口和 指标。即将推出支持 故障注入, 目标策略, 路由策略, ACL和身份验证。
安装Istio
Istio + Linkerd由5个主要组件组成:
- Istio Pilot向服务网格提供路由规则,策略和服务发现信息。
- Istio Mixer从服务网格中提取指标,并将它们传递到Prometheus等后端。
- Linkerd服务网格代理所有服务间通信。
- Linkerd Ingress,作为入口控制器的Linkerd 。
- Linkerd Egress,一个Linkerd,用于处理从集群发出的所有流量。
Linkerd目前支持Istio 0.1.6。要安装Istio,请按照下列步骤操作:
部署您的应用程序
为了让您的应用程序使用Linkerd服务网格,您可以使用名为istio-init
的初始化容器来部署它 。此init容器将iptables规则配置为通过Linkerd服务网格透明地重定向所有传出请求。
要使用此init容器轻松部署您的应用程序,您可以安装该 linkerd-inject
实用程序
go get github.com/linkerd/linkerd-inject
然后用它来部署你的应用程序。
kubectl apply -f <(linkerd-inject -f samples/apps/bookinfo/bookinfo.yaml)
(Minikube用户需要通过linkerd-inject
使用-useServiceVip
标志)
或者,您可以手动添加init容器到您的Kubernetes配置,而不是使用linkerd-inject
:
initContainers:
- name: init-linkerd
image: linkerd/istio-init:v1
env:
- name: NODE_NAME
valueFrom:
fieldRef:
fieldPath: spec.nodeName
args:
- -p
- "4140" # port of the Daemonset Linkerd's incoming router
- -s
- "L5D" # linkerd Daemonset service name, uppercased
- -m
- "false" # set to true if running in minikube
imagePullPolicy: IfNotPresent
securityContext:
capabilities:
add:
- NET_ADMIN
试试看
尝试Istio 请求路由演示 以查看所有正在运行的内容。请注意,要部署BookInfo示例,您需要使用linkerd-inject命令:
kubectl apply -f <(linkerd-inject -f samples/apps/bookinfo/bookinfo.yaml)
而不是istioctl kube-inject
命令:
kubectl apply -f <(istioctl kube-inject -f samples/apps/bookinfo/bookinfo.yaml)
有关Istio + Linkerd集成中特定Istio功能如何工作的更多信息,请继续阅读。
度量
如果您还没有这样做,请安装指标收集组件:
kubectl apply -f install/kubernetes/addons/prometheus.yaml
kubectl apply -f install/kubernetes/addons/grafana.yaml
kubectl apply -f install/kubernetes/addons/servicegraph.yaml
您现在可以按照Istio文档中的描述查看Grafana仪表板 。
请注意,在Linkerd添加对它们的支持之前,有些指标可能会丢失。
入口
如Istio入口指南中所述,可以使用Ingress资源配置 Ingress。请注意,要启用HTTPS,您必须在入站Linkerd配置中启用TLS,如 Linkerd Ingress博客文章 中所述,而不是在Ingress资源中。
出口
所有具有与集群中的任何服务都不匹配的主机/机构标题的请求将被发送到专用出口Linkerd。出口Linkerd将请求转发到集群外的服务(如果指定了端口443,则使用HTTPS)。没有必要创建 ExternalName
服务资源。查看Linkerd Egress博客文章以获取更多详细信息。
结论
以上各节介绍如何将Linkerd与Istio一起使用,包括如何配置入口,出口和度量收集。这种整合目前处于实验状态; Istio正在迅速发展,我们将继续使集成功能集更加具体化。
原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/93955.html