赞
踩
官网参考:KubeSphere Container Platform
需安装servicemesh组件,参考《16.云原生之kubesphere组件安装卸载》
下面是对istiod、jaeger-operator-metrics、jaeger-collector、jaeger-query、kiali和jaeger-collector-headless的简要介绍的表格输出:
组件名称 | 描述 |
---|---|
istiod | Istio控制平面的核心组件,集成了Pilot、Citadel、Galley和Mixer等功能,提供统一的管理接口和服务。 |
jaeger-operator-metrics | Jaeger Operator Metrics是Jaeger Operator的一个组件,用于收集和存储Jaeger Operator的指标数据。 |
jaeger-collector | Jaeger Collector负责接收和处理来自应用程序的跟踪数据,并将其存储到后端存储系统中,以供查询和分析。 |
jaeger-query | Jaeger Query提供了查询和检索跟踪数据的接口,用户可以使用它来搜索和分析应用程序在服务网格中的请求路径和性能。 |
kiali | Kiali是一个可视化工具,用于展示和监控服务网格的拓扑图、流量图和指标数据,帮助用户理解和调试服务网格的运行状况。 |
jaeger-collector-headless | Jaeger Collector Headless是Jaeger Collector的一种部署方式,它提供无头(headless)服务的访问接口。 |
在https://github.com/istio/istio/releases中查找istioctl 响应版本
tar -xvf istioctl-1.11.2-linux-amd64.tar.gz
mv istioctl /usr/local/bin
# 验证
istioctl version
istioctl x uninstall --purge
kubectl -n istio-system delete kiali kiali
helm -n istio-system delete kiali-operator
kubectl -n istio-system delete jaeger jaeger
helm -n istio-system delete jaeger-operator
# kubectl get all -n istio-system
No resources found in istio-system namespace.
编辑 master 节点的 /etc/kubernetes/manifests/kube-apiserver.yaml 文件,添加MutatingAdmissionWebhook
--enable-admission-plugins=NodeRestriction,MutatingAdmissionWebhook
- NodeRestriction:
NodeRestriction 插件是一个安全性插件,用于增强 Kubernetes 集群的安全性。它限制了 kube-apiserver 接受的请求,确保只有经过身份验证的 kubelet 节点才能进行请求。它通过验证请求中的证书和节点名称来实现这一目的。启用 NodeRestriction 可以防止未经授权的节点访问 Kubernetes API,提高集群的安全性。- MutatingAdmissionWebhook:
MutatingAdmissionWebhook 插件是一个 Admission 控制器,用于在创建或修改资源对象之前对其进行自动修改。它可以拦截请求并对其进行自定义的修改操作,然后将修改后的请求发送给 kube-apiserver 进行处理。这个插件通常用于实现自动化任务,例如自动注入 Sidecar 容器、自动添加标签等。启用 MutatingAdmissionWebhook 可以在资源对象创建或修改时自动执行一些操作,以便满足特定的需求或策略。
# kubectl get pods -n kube-system
kube-apiserver-ksmaster21 1/1 Running 28 (7h59m ago) 39d
kube-apiserver-ksmaster22 1/1 Running 25 (4h55m ago) 39d
kube-apiserver-ksmaster23 1/1 Running 28 (11h ago) 39d
# 删除apiserver后会自动恢复
kubectl delete pod/kube-apiserver名称 -n kube-system
# 查看pod对应的yaml验证配置是否修改
kubectl get pods -n kube-system -l component=kube-apiserver
kubectl get pod kube-apiserver-ksmaster21 -o yaml -n kube-system
istio-sidecar-injector-1-11-2 的配置字典,修改其中的policy 值为 enabled。注意修改ks-installer中servicemesh组件,policy 值会重置disabled
通过配置 policy,istio-sidecar-injector 可以根据规则自动注入 Sidecar 代理并应用所需的功能和策略,从而实现对应用程序的流量管理和安全控制。
kubectl -n istio-system edit MutatingWebhookConfiguration istio-sidecar-injector-1-11-2
默认策略配置如下:
namespaceSelector: # (命名空间选择器):指定要应用自动注入策略的命名空间。
# 此部分的意思是选择具有标签 istio.io/rev=1-11-2 的命名空间
matchExpressions: # (匹配表达式):定义命名空间选择的条件列表。
- key: istio.io/rev # 选择具有指定标签 istio.io/rev 的命名空间。
operator: In # 使用 In 操作符表示匹配标签值等于列表中的任何一个值。
values:
- 1-11-2
- key: istio-injection
operator: DoesNotExist
# 此部分的意思是选择所有没有设置注解 sidecar.istio.io/inject 值为 "false" 的对象
objectSelector: # (对象选择器):指定要应用自动注入策略的对象。
matchExpressions: # (匹配表达式):定义对象选择的条件列表。
- key: sidecar.istio.io/inject # 选择具有指定注解 sidecar.istio.io/inject 的对象。
operator: NotIn # 使用 NotIn 操作符表示不匹配注解值等于列表中的任何一个值
values: # 指定要不匹配的注解值列表,这里是 "false"。
- "false"
综合起来,上述配置的含义是:选择具有标签 istio.io/rev=1-11-2 的命名空间,并对所有没有设置注解 sidecar.istio.io/inject 值为 “false” 的对象应用自动注入策略。换句话说,这个配置将自动注入 Sidecar 容器到具有特定标签的命名空间中的所有对象,但排除了那些设置了注解 sidecar.istio.io/inject: “false” 的对象。
修改配置如下:
name: rev.namespace.sidecar-injector.istio.io
namespaceSelector:
matchExpressions:
- key: istio.io/rev
operator: In
values: # 用于选择具有特定 Istio 版本的命名空间
- 1-11-2
- key: istio-injection
operator: In
values: # 启用了注入的命名空间将被选择
- enabled
objectSelector:
matchExpressions:
- key: sidecar.istio.io/inject
operator: NotIn
values:
- "false"
# kubectl get namespace <namespace> --show-labels
NAME STATUS AGE LABELS
spring-cloud Active 4h52m kubernetes.io/metadata.name=spring-cloud,kubesphere.io/namespace=spring-cloud,kubesphere.io/workspace=yxym-workspace
kubectl label namespace <namespace> istio-injection=enabled
kubectl label namespace <namespace> istio.io/rev=1-11-2
https://blog.csdn.net/qq_36464836/article/details/123500983
kubectl -n spring-cloud get destinationrules.networking.istio.io -o yaml
让我逐步解释这个命令的各个部分:
cicd发布项目如何使用Istio?灰度发布我们可以通过自制应用发布项目来应用,但是感觉不够智能,能否在cicd中项目自动发布就应用上?在资源清单项目中预先定义好istio相关资源,资源清单项目参考23.云原生之ArgoCD CICD实战。要学弄明白需先学习Istio官网Bookinfo 应用,小编将在接下来章节实战介绍。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。