本页面介绍如何在代管式 Anthos Service Mesh 控制平面上启用可选功能。如需了解集群内控制平面,请参阅在集群内控制平面上启用可选功能。
预配代管式 Anthos Service Mesh 时,默认启用的功能因平台而异。如果您当前正在使用基于 IstioOperator
的配置,从 IstioOperator 迁移工具可帮助转换为代管式控制平面支持的配置。
Envoy 访问日志
运行以下命令以启用 Envoy 访问日志记录:
运行以下命令以添加
accessLogFile: /dev/stdout
:cat <<EOF | kubectl apply -f - apiVersion: v1 data: mesh: |- accessLogFile: /dev/stdout kind: ConfigMap metadata: name: istio-release-channel namespace: istio-system EOF
其中,release-channel 是您的发布渠道(
asm-managed
、asm-managed-stable
或asm-managed-rapid
)。运行以下命令以查看 configmap:
kubectl get configmap istio-release-channel -n istio-system -o yaml
如需验证访问日志记录是否已启用,请确保
mesh:
部分中显示accessLogFile: /dev/stdout
行。... apiVersion: v1 data: mesh: | .... accessLogFile: /dev/stdout ...
启用 Cloud 跟踪
运行以下命令以启用 Cloud Trace:
运行以下命令:
cat <<EOF | kubectl apply -f - apiVersion: v1 data: mesh: |- defaultConfig: tracing: stackdriver: {} kind: ConfigMap metadata: name: istio-release-channel namespace: istio-system EOF
其中,release-channel 是您的发布渠道(
asm-managed
、asm-managed-stable
或asm-managed-rapid
)。运行以下命令以查看 configmap:
kubectl get configmap istio-release-channel -n istio-system -o yaml
如需验证 Cloud Trace 是否已启用,请确保
mesh:
部分中显示以下行。... apiVersion: v1 data: mesh: | .... defaultConfig: tracing: stackdriver:{} ...
重启代理。
请注意,跟踪器配置目前是代理引导配置的一部分,因此每个 pod 需要重启并重新注入才能获取跟踪器更新。例如,您可以使用以下命令重启属于某个部署的 pod:
kubectl rollout restart deployment -n NAMESPACE DEPLOYMENT_NAME
如需详细了解受支持的跟踪标头,请参阅访问跟踪记录。
Distroless 代理映像
最佳做法是将容器运行时的内容限制为仅包含必要的软件包。此方法可提高常见漏洞和披露 (CVE) 扫描程序的安全性和信噪比。Istio 提供基于 Distroless 基础映像的代理映像。
以下配置可为整个 Anthos Service Mesh 启用 Distroless 映像。映像类型更改要求每个 pod 重启并重新注入才能生效。
apiVersion: v1
kind: ConfigMap
metadata:
name: istio-release-channel
namespace: istio-system
data:
mesh: |-
defaultConfig:
image:
imageType: distroless
Distroless 映像不包含代理以外的任何二进制文件。因此,无法使用 exec
shell 或使用容器中的 curl
、ping
或其他调试实用程序。如果您需要为特定部署访问这些工具,则可以使用以下 Pod 注解替换 imageType
。
sidecar.istio.io/proxyImageType: debug
通过注解更改部署的映像类型后,部署应重启。
kubectl rollout restart deployment -n NAMESPACE DEPLOYMENT_NAME
对于大多数代理调试类型,应使用 istioctl proxy-cmd
,它无需调试基础映像。
出站流量政策
默认情况下,outboundTrafficPolicy
设置为 ALLOW_ANY
。在此模式下,允许发送到任何外部服务的所有流量。如需控制流量并将流量限制为仅定义了服务条目的外部服务,您可以将默认行为 ALLOW_ANY
更改为 REGISTRY_ONLY
以下配置会将
outboundTrafficPolicy
配置为REGISTRY_ONLY
apiVersion: v1 kind: ConfigMap metadata: name: istio-release-channel namespace: istio-system data: mesh: |- outboundTrafficPolicy: mode: REGISTRY_ONLY
其中,release-channel 是您的发布渠道(
asm-managed
、asm-managed-stable
或asm-managed-rapid
)。您可以使用以下命令在 configmap 中进行必要的上述配置更改
kubectl edit configmap istio-release-channel -n istio-system -o yaml
运行以下命令以查看 configmap:
kubectl get configmap istio-release-channel -n istio-system -o yaml
如需验证
outboundTrafficPolicy
是否已启用REGISTRY_ONLY
,请确保mesh:
部分中显示以下行。... apiVersion: v1 data: mesh: | outboundTrafficPolicy: mode: REGISTRY_ONLY ...
最终用户身份验证
您可以为基于浏览器的最终用户身份验证和对已部署工作负载的访问权限控制配置代管式 Anthos Service Mesh 用户身份验证。如需了解详情,请参阅配置 Anthos Service Mesh 用户身份验证。
为您的工作负载配置最低的 TLS 版本
您可以使用 minProtocolVersion
字段指定工作负载中 TLS 连接的最低 TLS 版本。 如需详细了解如何设置最低 TLS 版本并检查工作负载的 TLS 配置,请参阅 Istio 工作负载最低 TLS 版本配置。
下面的示例显示将工作负载的最低 TLS 版本设置为 1.3 的 ConfigMap
:
apiVersion: v1
kind: ConfigMap
metadata:
name: istio-release-channel
namespace: istio-system
data:
mesh: |-
meshMTLS:
minProtocolVersion: TLSV1_3