6.5. 在每个网格中部署应用程序工作负载
要部署应用程序工作负载,请将每个工作负载分配给单独的命名空间。
步骤
运行以下命令,创建一个名为
app-ns-1
的应用程序命名空间:oc create namespace app-ns-1
$ oc create namespace app-ns-1
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 要确保命名空间由第一个 control plane 发现,请运行以下命令添加
istio-discovery=mesh-1
标签:oc label namespace app-ns-1 istio-discovery=mesh-1
$ oc label namespace app-ns-1 istio-discovery=mesh-1
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 要在默认启用 sidecar 注入所有 pod,同时确保此命名空间中的 pod 映射到第一个 control plane,请运行以下命令将
istio.io/rev=mesh-1
标签添加到命名空间中:oc label namespace app-ns-1 istio.io/rev=mesh-1
$ oc label namespace app-ns-1 istio.io/rev=mesh-1
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 可选:您可以运行以下命令来验证
mesh-1
修订名称:oc get istiorevisions
$ oc get istiorevisions
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令部署
sleep
和httpbin
应用程序:oc apply -n app-ns-1 \ -f https://raw.githubusercontent.com/openshift-service-mesh/istio/release-1.24/samples/sleep/sleep.yaml \ -f https://raw.githubusercontent.com/openshift-service-mesh/istio/release-1.24/samples/httpbin/httpbin.yaml
$ oc apply -n app-ns-1 \ -f https://raw.githubusercontent.com/openshift-service-mesh/istio/release-1.24/samples/sleep/sleep.yaml \ -f https://raw.githubusercontent.com/openshift-service-mesh/istio/release-1.24/samples/httpbin/httpbin.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令,等待
httpbin
和sleep
pod 使用注入的 sidecar 运行:oc get pods -n app-ns-1
$ oc get pods -n app-ns-1
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
NAME READY STATUS RESTARTS AGE httpbin-7f56dc944b-kpw2x 2/2 Running 0 2m26s sleep-5577c64d7c-b5wd2 2/2 Running 0 91m
NAME READY STATUS RESTARTS AGE httpbin-7f56dc944b-kpw2x 2/2 Running 0 2m26s sleep-5577c64d7c-b5wd2 2/2 Running 0 91m
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令,创建名为
app-ns-2
的第二个应用程序命名空间:oc create namespace app-ns-2
$ oc create namespace app-ns-2
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令,创建名为
app-ns-3
的第三个应用程序命名空间:oc create namespace app-ns-3
$ oc create namespace app-ns-3
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令,将标签
istio-discovery=mesh-2
添加到命名空间和修订标签mesh-2
中,以匹配第二个 control plane 的发现选择器:oc label namespace app-ns-2 app-ns-3 istio-discovery=mesh-2 istio.io/rev=mesh-2
$ oc label namespace app-ns-2 app-ns-3 istio-discovery=mesh-2 istio.io/rev=mesh-2
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令,将
sleep
和httpbin
应用程序部署到app-ns-2
命名空间:oc apply -n app-ns-2 \ -f https://raw.githubusercontent.com/openshift-service-mesh/istio/release-1.24/samples/sleep/sleep.yaml \ -f https://raw.githubusercontent.com/openshift-service-mesh/istio/release-1.24/samples/httpbin/httpbin.yaml
$ oc apply -n app-ns-2 \ -f https://raw.githubusercontent.com/openshift-service-mesh/istio/release-1.24/samples/sleep/sleep.yaml \ -f https://raw.githubusercontent.com/openshift-service-mesh/istio/release-1.24/samples/httpbin/httpbin.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令,将
sleep
和httpbin
应用程序部署到app-ns-3
命名空间:oc apply -n app-ns-3 \ -f https://raw.githubusercontent.com/openshift-service-mesh/istio/release-1.24/samples/sleep/sleep.yaml \ -f https://raw.githubusercontent.com/openshift-service-mesh/istio/release-1.24/samples/httpbin/httpbin.yaml
$ oc apply -n app-ns-3 \ -f https://raw.githubusercontent.com/openshift-service-mesh/istio/release-1.24/samples/sleep/sleep.yaml \ -f https://raw.githubusercontent.com/openshift-service-mesh/istio/release-1.24/samples/httpbin/httpbin.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 可选:使用以下命令等待部署可用:
oc wait deployments -n app-ns-2 --all --for condition=Available
$ oc wait deployments -n app-ns-2 --all --for condition=Available
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
在部署应用程序后,使用
istioctl ps
命令验证每个应用程序工作负载是否由分配的 control plane 管理:运行以下命令,验证工作负载是否已分配给
istio-system-1
中的 control plane:istioctl ps -i istio-system-1
$ istioctl ps -i istio-system-1
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
NAME CLUSTER CDS LDS EDS RDS ECDS ISTIOD VERSION httpbin-7f56dc944b-vwfm5.app-ns-1 Kubernetes SYNCED (11m) SYNCED (11m) SYNCED (11m) SYNCED (11m) IGNORED istiod-mesh-1-b69646b6f-kxrwk 1.23.0 sleep-5577c64d7c-d675f.app-ns-1 Kubernetes SYNCED (11m) SYNCED (11m) SYNCED (11m) SYNCED (11m) IGNORED istiod-mesh-1-b69646b6f-kxrwk 1.23.0
NAME CLUSTER CDS LDS EDS RDS ECDS ISTIOD VERSION httpbin-7f56dc944b-vwfm5.app-ns-1 Kubernetes SYNCED (11m) SYNCED (11m) SYNCED (11m) SYNCED (11m) IGNORED istiod-mesh-1-b69646b6f-kxrwk 1.23.0 sleep-5577c64d7c-d675f.app-ns-1 Kubernetes SYNCED (11m) SYNCED (11m) SYNCED (11m) SYNCED (11m) IGNORED istiod-mesh-1-b69646b6f-kxrwk 1.23.0
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令,验证工作负载是否已分配给
istio-system-2
中的 control plane:istioctl ps -i istio-system-2
$ istioctl ps -i istio-system-2
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
NAME CLUSTER CDS LDS EDS RDS ECDS ISTIOD VERSION httpbin-7f56dc944b-54gjs.app-ns-3 Kubernetes SYNCED (3m59s) SYNCED (3m59s) SYNCED (3m59s) SYNCED (3m59s) IGNORED istiod-mesh-2-8666fdfc6-mqp45 1.23.0 httpbin-7f56dc944b-gnh72.app-ns-2 Kubernetes SYNCED (4m1s) SYNCED (4m1s) SYNCED (3m59s) SYNCED (4m1s) IGNORED istiod-mesh-2-8666fdfc6-mqp45 1.23.0 sleep-5577c64d7c-k9mxz.app-ns-2 Kubernetes SYNCED (4m1s) SYNCED (4m1s) SYNCED (3m59s) SYNCED (4m1s) IGNORED istiod-mesh-2-8666fdfc6-mqp45 1.23.0 sleep-5577c64d7c-m9hvm.app-ns-3 Kubernetes SYNCED (4m1s) SYNCED (4m1s) SYNCED (3m59s) SYNCED (4m1s) IGNORED istiod-mesh-2-8666fdfc6-mqp45 1.23.0
NAME CLUSTER CDS LDS EDS RDS ECDS ISTIOD VERSION httpbin-7f56dc944b-54gjs.app-ns-3 Kubernetes SYNCED (3m59s) SYNCED (3m59s) SYNCED (3m59s) SYNCED (3m59s) IGNORED istiod-mesh-2-8666fdfc6-mqp45 1.23.0 httpbin-7f56dc944b-gnh72.app-ns-2 Kubernetes SYNCED (4m1s) SYNCED (4m1s) SYNCED (3m59s) SYNCED (4m1s) IGNORED istiod-mesh-2-8666fdfc6-mqp45 1.23.0 sleep-5577c64d7c-k9mxz.app-ns-2 Kubernetes SYNCED (4m1s) SYNCED (4m1s) SYNCED (3m59s) SYNCED (4m1s) IGNORED istiod-mesh-2-8666fdfc6-mqp45 1.23.0 sleep-5577c64d7c-m9hvm.app-ns-3 Kubernetes SYNCED (4m1s) SYNCED (4m1s) SYNCED (3m59s) SYNCED (4m1s) IGNORED istiod-mesh-2-8666fdfc6-mqp45 1.23.0
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
验证应用程序连接是否仅限于其对应网格中的工作负载:
运行以下命令,将来自
app-ns-1
中的sleep
pod 的请求发送到app-ns-2
中的httpbin
服务,以检查通信是否失败:oc -n app-ns-1 exec deploy/sleep -c sleep -- curl -sIL http://httpbin.app-ns-2.svc.cluster.local:8000
$ oc -n app-ns-1 exec deploy/sleep -c sleep -- curl -sIL http://httpbin.app-ns-2.svc.cluster.local:8000
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 之前创建的
PeerAuthentication
资源在每个网格中以STRICT
模式实施 mutual TLS (mTLS)流量。每个网格使用自己的 root 证书,由istio-ca-root-cert
配置映射管理,这可防止网格之间的通信。输出显示通信失败,如下例所示:输出示例
HTTP/1.1 503 Service Unavailable content-length: 95 content-type: text/plain date: Wed, 16 Oct 2024 12:05:37 GMT server: envoy
HTTP/1.1 503 Service Unavailable content-length: 95 content-type: text/plain date: Wed, 16 Oct 2024 12:05:37 GMT server: envoy
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 确认通信的工作原理是:从
sleep
pod 发送请求到app-ns-2
命名空间中的httpbin
服务,该服务由mesh-2
管理。运行以下命令:oc -n app-ns-2 exec deploy/sleep -c sleep -- curl -sIL http://httpbin.app-ns-3.svc.cluster.local:8000
$ oc -n app-ns-2 exec deploy/sleep -c sleep -- curl -sIL http://httpbin.app-ns-3.svc.cluster.local:8000
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow