$ oc get deployment -n <namespace>
将包含服务的命名空间添加到网格后,下一步是在应用程序的 Deployment 资源中启用自动 sidecar 注入。必须为每个部署启用自动 sidecar 注入。
如果已安装 Bookinfo 示例应用程序,则该应用程序已部署,并且 sidecar 在安装过程中已注入。如果使用的是您自己的项目和服务,请在 OpenShift Dedicated 上部署您的应用程序。
默认情况下,由 Init Container(在 Pod 中的应用程序容器之前运行的专用容器)启动的流量无法离开服务网格。Init Container 执行的任何需要建立网格外部网络流量连接的操作都会失败。 有关将 Init Container 连接到服务的更多信息,请参阅 Red Hat 知识库解决方案 pod 中注入 Service Mesh sidecar 后 initContainer 处于 CrashLoopBackOff 状态 |
部署到网格的服务,例如 Bookinfo 示例应用程序。
一个 Deployment 资源文件。
部署应用程序时,必须通过在 deployment
对象的 spec.template.metadata.labels
中将标签 sidecar.istio.io/inject
配置为 true
来选择加入注入。选择加入可确保 sidecar 注入不会干扰其他 OpenShift Dedicated 功能,例如 OpenShift Dedicated 生态系统中众多框架使用的构建器 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。