《Elastic Stack 实战手册》——三、产品能力——3.4.入门篇——3.4.1.Elastic Stack 安装部署——3.4.1.8. ECK 安装(19) https://developer.aliyun.com/article/1231261
部署 Elasticsearch 集群
默认情况下,Istio 会为具有 Istio Sidecar 代理的工作负载之间的所有流量启用双向 TLS,需要对 Elasticsearch 资源文件进行以下修改才能确保 Elasticsearch 集群正常工作:
l 1.禁用 elastic operator 使用自签名证书加密 Elasticsearch 集群的 HTTPS 流量,之后会在 Istio Gateway 加密 HTTPS 流量。
l 2.将 Elasticsearch 集群节点之前的传输端口 9300 排除在代理之外,目前 ECK 不支持关闭 Elasticsearch 传输端口的 X-Pack Security 和 TLS。如果允许 Istio 代理传输端口,则流量会被加密两次,会导致 Elasticsearch 节点之间的通信会中断。
l 3.可选,仅当 Kubernetes 集群不支持发布第三方安全令牌时才需要设置 automountServiceAccountToken 为 true。
apiVersion: elasticsearch.k8s.elastic.co/v1 kind: Elasticsearch metadata: name: istio-elasticsearch namespace: istio-demo spec: #禁用 elaticsearch 本身的 https,通过 istio 管理 tls http: tls: selfSignedCertificate: disabled: true version: 7.14.0 nodeSets: #master节点 - name: master count: 3 config: node.roles: ["master"] podTemplate: metadata: annotations: #将传输端口 9300 排除在代理之外 traffic.sidecar.istio.io/includeInboundPorts: "*" traffic.sidecar.istio.io/excludeOutboundPorts: "9300" traffic.sidecar.istio.io/excludeInboundPorts: "9300" spec: #仅当 Kubernetes 集群不支持发布第三方安全令牌时才需要设置 #automountServiceAccountToken: true containers: - name: elasticsearch resources: #限制资源使用 limits: memory: 1Gi cpu: 1 volumeClaimTemplates: - metadata: name: elasticsearch-data spec: accessModes: - ReadWriteOnce resources: requests: storage: 20Gi storageClassName: alicloud-disk-efficiency #data 节点 - name: data count: 3 config: node.roles: ["data"] podTemplate: metadata: annotations: traffic.sidecar.istio.io/includeInboundPorts: "*" traffic.sidecar.istio.io/excludeOutboundPorts: "9300" traffic.sidecar.istio.io/excludeInboundPorts: "9300" spec: containers: - name: elasticsearch resources: limits: memory: 2Gi cpu: 2 volumeClaimTemplates: - metadata: name: elasticsearch-data spec: accessModes: - ReadWriteOnce resources: requests: storage: 20Gi storageClassName: alicloud-disk-efficiency #ingest 节点 - name: ingest count: 3 config: node.roles: ["ingest"] podTemplate: metadata: annotations: traffic.sidecar.istio.io/includeInboundPorts: "*" traffic.sidecar.istio.io/excludeOutboundPorts: "9300" traffic.sidecar.istio.io/excludeInboundPorts: "9300" spec: containers: - name: elasticsearch resources: limits: memory: 2Gi cpu: 1 volumeClaimTemplates: - metadata: name: elasticsearch-data spec: accessModes: - ReadWriteOnce resources: requests: storage: 20Gi storageClassName: alicloud-disk-efficiency #coordinating 节点 - name: coordinating count: 3 config: node.roles: [] podTemplate: metadata: annotations: traffic.sidecar.istio.io/includeInboundPorts: "*" traffic.sidecar.istio.io/excludeOutboundPorts: "9300" traffic.sidecar.istio.io/excludeInboundPorts: "9300" spec: containers: - name: elasticsearch resources: limits: memory: 2Gi cpu: 1 volumeClaimTemplates: - metadata: name: elasticsearch-data spec: accessModes: - ReadWriteOnce resources: requests: storage: 20Gi storageClassName: alicloud-disk-efficiency
使用以下命令应用资源文件部署 Elasticsearh 集群。
kubectl create ns istio-demo kubectl label namespace istio-demo istio-injection=enabled kubectl apply -f elasticsearch.yaml
获取 Elasticsearch 集群密码:
PASSWORD=$(kubectl get secret -n istio-demo \ istio-elasticsearch-es-elastic-user \ -o go-template='{{.data.elastic | base64decode}}') echo $PASSWORD #elastic 用户密码 L733hU98Y467IZMft4DzLq5m
Istio 可视化组件部署
Istio 和几个遥测应用做了集成,遥测能帮你了解服务网格的结构、展示网络的拓扑结构、分析网格的健康状态。使用下面命令部署 Kiali 仪表板,以及 Prometheus、Grafana、Jaeger。
kubectl apply -f istio/istio-1.11.1/samples/addons
通过 kubectl port-forward 的方式将 Kiali Service 服务转发到本地 20001 端口,便于我们本地访问测试。
kubectl port-forward -n istio-system service/kiali 20001
浏览器输入 http://localhost:20001 访问 Kiali 页面。
《Elastic Stack 实战手册》——三、产品能力——3.4.入门篇——3.4.1.Elastic Stack 安装部署——3.4.1.8. ECK 安装(21) https://developer.aliyun.com/article/1231259