OSM MeshConfig

OSM 部署一个 MeshConfig 资源 osm-mesh-config 作为它的控制平面(同 OSM 控制器 Pod 的在同一命名空间) 的一部分,其能够被网格所有者/操作员在任意时刻更新。这个 MeshConfig 的目的是提供一种能够更新所需的网格配置的能力给网格所有者/运维人员。

在安装的时候,OSM MeshConfig 从一个现成的 MeshConfig (preset-mesh-config) 来部署,其能够在 charts/osm/templates 里面找到。

首先,设置一个环境变量来引用 OSM 被安装所在的命名空间。

  1. export osm_namespace=osm-system # Replace osm-system with the namespace where OSM is installed

要在 CLI 里面查阅 osm-mesh-config,请使用 kubectl get 命令。

  1. kubectl get meshconfig osm-mesh-config -n "$osm_namespace" -o yaml

注意:在 MeshConfig osm-mesh-config 里面的值被持续更新。

配置 OSM MeshConfig

Kubectl 补丁命令

修改 osm-mesh-config,可以使用 kubectl patch 命令。

  1. kubectl patch meshconfig osm-mesh-config -n "$osm_namespace" -p '{"spec":{"traffic":{"enableEgress":true}}}' --type=merge

参考 Config API reference 以获取更多信息。

如果一个不正确的值被使用了,在 MeshConfig CRD 上的验证将阻止修改并给出一个错误信息来解释为什么这个值是无效的。 例如,下面的命令显示了如果我们用 enableEgress 给一个非布尔值打补丁会发生什么。

  1. kubectl patch meshconfig osm-mesh-config -n "$osm_namespace" -p '{"spec":{"traffic":{"enableEgress":"no"}}}' --type=merge
  2. # Validations on the CRD will deny this change
  3. The MeshConfig "osm-mesh-config" is invalid: spec.traffic.enableEgress: Invalid value: "string": spec.traffic.enableEgress in body must be of type boolean: "string"

给每一个键类型的 kubectl 补丁命令

注意:<osm-namespace> 引用了 OSM Control Plane 被安装所在的命名空间。默认的,OSM 的命名空间是 osm-system

类型默认值Kubectl 补丁命令例子
spec.traffic.enableEgressboolfalsekubectl patch meshconfig osm-mesh-config -n $osm_namespace -p ‘{“spec”:{“traffic”:{“enableEgress”:true}}}’ —type=merge
spec.traffic.enablePermissiveTrafficPolicyModeboolfalsekubectl patch meshconfig osm-mesh-config -n $osm_namespace -p ‘{“spec”:{“traffic”:{“enablePermissiveTrafficPolicyMode”:true}}}’ —type=merge
spec.traffic.useHTTPSIngressboolfalsekubectl patch meshconfig osm-mesh-config -n $osm_namespace -p ‘{“spec”:{“traffic”:{“useHTTPSIngress”:true}}}’ —type=merge
spec.traffic.outboundPortExclusionListarray[]kubectl patch meshconfig osm-mesh-config -n $osm_namespace -p ‘{“spec”:{“traffic”:{“outboundPortExclusionList”:6379,8080}}}’ —type=merge
spec.traffic.outboundIPRangeExclusionListarray[]kubectl patch meshconfig osm-mesh-config -n $osm_namespace -p ‘{“spec”:{“traffic”:{“outboundIPRangeExclusionList”:”10.0.0.0/32,1.1.1.1/24”}}}’ —type=merge
spec.certificate.serviceCertValidityDurationstring“24h”kubectl patch meshconfig osm-mesh-config -n $osm_namespace -p ‘{“spec”:{“certificate”:{“serviceCertValidityDuration”:”24h”}}}’ —type=merge
spec.observability.enableDebugServerboolfalsekubectl patch meshconfig osm-mesh-config -n $osm_namespace -p ‘{“spec”:{“observability”:{“serviceCertValidityDuration”:true}}}’ —type=merge
spec.observability.tracing.enablebool“jaeger.<osm-namespace>.svc.cluster.local”kubectl patch meshconfig osm-mesh-config -n $osm_namespace -p ‘{“spec”:{“observability”:{“tracing”:{“address”: “jaeger.<osm-namespace>.svc.cluster.local”}}}}’ —type=merge
spec.observability.tracing.addressstring“/api/v2/spans”kubectl patch meshconfig osm-mesh-config -n $osm_namespace -p ‘{“spec”:{“observability”:{“tracing”:{“endpoint”:”/api/v2/spans”}}}}’ —type=merge’ —type=merge
spec.observability.tracing.endpointstringfalsekubectl patch meshconfig osm-mesh-config -n $osm_namespace -p ‘{“spec”:{“observability”:{“tracing”:{“enable”:true}}}}’ —type=merge
spec.observability.tracing.portint9411kubectl patch meshconfig osm-mesh-config -n $osm_namespace -p ‘{“spec”:{“observability”:{“tracing”:{“port”:9411}}}}’ —type=merge
spec.sidecar.enablePrivilegedInitContainerboolfalsekubectl patch meshconfig osm-mesh-config -n $osm_namespace -p ‘{“spec”:{“sidecar”:{“enablePrivilegedInitContainer”:true}}}’ —type=merge
spec.sidecar.logLevelstring“error”kubectl patch meshconfig osm-mesh-config -n $osm_namespace -p ‘{“spec”:{“sidecar”:{“logLevel”:”error”}}}’ —type=merge
spec.sidecar.maxDataPlaneConnectionsint0kubectl patch meshconfig osm-mesh-config -n $osm_namespace -p ‘{“spec”:{“sidecar”:{“maxDataPlaneConnections”:”error”}}}’ —type=merge
spec.sidecar.envoyImagestring“envoyproxy/envoy-alpine:v1.17.2”kubectl patch meshconfig osm-mesh-config -n $osm_namespace -p ‘{“spec”:{“sidecar”:{“envoyImage”:”envoyproxy/envoy-alpine:v1.17.2”}}}’ —type=merge
spec.sidecar.initContainerImagestring“openservicemesh/init:v0.9.2”kubectl patch meshconfig osm-mesh-config -n $osm_namespace -p ‘{“spec”:{“sidecar”:{“initContainerImage”:”openservicemesh/init:v0.9.2”}}}’ —type=merge
spec.sidecar.configResyncIntervalstring“0s”kubectl patch meshconfig osm-mesh-config -n $osm_namespace -p ‘{“spec”:{“sidecar”:{“configResyncInterval”:”30s”}}}’ —type=merge