$ oc get deployment -n <namespace>
将包含您的服务的命名空间添加到您的网格后,下一步是在应用程序的Deployment资源中启用自动sidecar注入。您必须为每个部署启用自动sidecar注入。
如果您已安装Bookinfo示例应用程序,则该应用程序已部署,并且sidecar作为安装过程的一部分被注入。如果您使用的是您自己的项目和服务,请在OpenShift Container Platform上部署您的应用程序。
更多信息,请参见OpenShift Container Platform文档,理解部署。
默认情况下,由Init容器(在Pod中的应用程序容器之前运行的专用容器)启动的流量无法离开服务网格。Init容器执行的任何需要建立网格外部网络流量连接的操作都将失败。 有关将Init容器连接到服务的更多信息,请参见Red Hat知识库解决方案注入Service Mesh sidecar的Pod上initContainer处于CrashLoopBackOff状态 |
部署到网格的服务,例如Bookinfo示例应用程序。
一个Deployment资源文件。
部署应用程序时,必须通过在deployment
对象中的spec.template.metadata.labels
中将标签sidecar.istio.io/inject
配置为true
来选择加入注入。选择加入可确保sidecar注入不会干扰其他OpenShift Container Platform功能,例如OpenShift Container Platform生态系统中众多框架使用的构建器Pod。
确定属于您的服务网格的命名空间以及需要自动sidecar注入的部署。
要查找您的部署,请使用oc get
命令。
$ oc get deployment -n <namespace>
例如,要查看bookinfo
命名空间中'ratings-v1'微服务的Deployment
YAML文件,请使用以下命令以YAML格式查看资源。
oc get deployment -n bookinfo ratings-v1 -o yaml
在编辑器中打开应用程序的Deployment
YAML文件。
将spec.template.metadata.labels.sidecar.istio/inject
添加到您的Deployment YAML文件,并将sidecar.istio.io/inject
设置为true
,如下例所示。
apiVersion: apps/v1
kind: Deployment
metadata:
name: ratings-v1
namespace: bookinfo
labels:
app: ratings
version: v1
spec:
template:
metadata:
labels:
sidecar.istio.io/inject: 'true'
启用自动sidecar注入时使用 |
保存Deployment
YAML文件。
将包含您的应用程序的文件添加回项目中。
$ oc apply -n <namespace> -f deployment.yaml
在此示例中,bookinfo
是包含 ratings-v1
应用程序的项目名称,而 deployment-ratings-v1.yaml
是您编辑的文件。
$ oc apply -n bookinfo -f deployment-ratings-v1.yaml
要验证资源是否已成功上传,请运行以下命令。
$ oc get deployment -n <namespace> <deploymentName> -o yaml
例如:
$ oc get deployment -n bookinfo ratings-v1 -o yaml
Kiali 控制台提供了多种方法来验证您的应用程序、服务和工作负载是否具有 sidecar 代理。
图表页面显示一个节点徽章,指示以下图表上缺少 Sidecar
应用程序图表
版本化应用程序图表
工作负载图表
应用程序页面在详细信息列中显示缺少 Sidecar图标,用于命名空间中任何没有 sidecar 的应用程序。
工作负载页面在详细信息列中显示缺少 Sidecar图标,用于命名空间中任何没有 sidecar 的应用程序。
服务页面在详细信息列中显示缺少 Sidecar图标,用于命名空间中任何没有 sidecar 的应用程序。当服务存在多个版本时,您可以使用服务详细信息页面查看缺少 Sidecar图标。
工作负载详细信息页面具有一个特殊的统一日志选项卡,允许您查看和关联应用程序和代理日志。您可以查看 Envoy 日志,作为验证应用程序工作负载的 sidecar 注射的另一种方法。
对于任何作为 Envoy 代理或已注入 Envoy 代理的工作负载,工作负载详细信息页面也具有一个Envoy选项卡。此选项卡显示一个内置的 Envoy 仪表板,其中包括用于集群、侦听器、路由、引导程序、配置和指标的子选项卡。
有关启用 Envoy 访问日志的信息,请参见故障排除部分。
有关查看 Envoy 日志的信息,请参见在 Kiali 控制台中查看日志
Envoy sidecar 代理的配置由ServiceMeshControlPlane
管理。
您可以通过向injection-template.yaml
文件中的部署添加 pod 注释来为 sidecar 代理设置应用程序的环境变量。环境变量将注入到 sidecar 中。
apiVersion: apps/v1
kind: Deployment
metadata:
name: resource
spec:
replicas: 7
selector:
matchLabels:
app: resource
template:
metadata:
annotations:
sidecar.maistra.io/proxyEnv: "{ \"maistra_test_env\": \"env_value\", \"maistra_test_env_2\": \"env_value_2\" }"
创建您自己的自定义资源时,绝不应包含 |
为了更新 sidecar 代理的配置,应用程序管理员必须重新启动应用程序 pod。
如果您的部署使用自动 sidecar 注射,您可以通过添加或修改注释来更新部署中的 pod 模板。运行以下命令以重新部署 pod:
$ oc patch deployment/<deployment> -p '{"spec":{"template":{"metadata":{"annotations":{"kubectl.kubernetes.io/restartedAt": "'`date -Iseconds`'"}}}}}'
如果您的部署不使用自动 sidecar 注射,则必须通过修改部署或 pod 中指定的 sidecar 容器映像来手动更新 sidecar,然后重新启动 pod。