這
您可以通過以下鏈接下載 PDF 格式的本文以支持我們。
下載 PDF 格式的指南
關
這
這
這
服務網格提供了一種統一的方式來連接、保護和監控 OpenShift / Kubernetes 容器環境中的微服務應用程序。 網格可以描述為一個微服務網絡,它將應用程序組合在分佈式微服務架構中。 本教程將指導您完成在 OpenShift 4.x 集群上安裝 Istio Service Mesh 的步驟。
紅帽 OpenShift 服務網格基於開源峽部項目。 它使創建部署服務網絡變得容易,該網絡提供發現、負載平衡、服務到服務身份驗證、故障恢復、指標和監視。
Istio 服務網格的特點
- 交通管理– 控制服務之間的流程和API調用流程,使調用更可靠,使網絡在不利條件下更健壯。
- 服務身份和安全– 為網狀網絡中的服務提供可驗證的身份,並保護服務流量不流經具有不同可信度的網絡。
- 政策執行– 將組織策略應用於服務之間的交互,以確保訪問策略得到實施並且資源在消費者之間公平分配。 策略更改是通過配置網格進行的,而不是通過應用程序代碼更改。
- 遙測– 了解服務之間的依賴關係以及服務之間流量的性質和流向,以便快速發現問題
Istio 服務網格的組件
Istio 服務網格分為控制平面和數據平面。
控制平面組件:
- 飛行員– 在運行時配置 Envoy Sidecar 代理。
- 混合器– 實施訪問控制和使用政策。 它還負責從 Envoy 代理和其他服務收集遙測數據。
- 堡壘– 對於證書管理 – 發行和輪換。
- 加里– 這將獲取服務網格配置,然後驗證、處理和分發配置。
日期平面:
的約會飛機由一組智能代理(信使) 部署為邊車。 這些代理調解和控制微服務之間的所有網絡通信。 他們還收集並報告所有網狀網絡流量的遙測數據。
Envoy 的內置功能包括:
- 動態服務發現
- 負載均衡
- TLS 終止
- HTTP/2 和 gRPC 代理
- 斷路器
- 健康檢查
- 分階段上線,按百分比分配流量
- 故障注入
- 豐富的指標
Red Hat OpenShift Service Mesh 還提供了更複雜的運行功能,包括:
- A/B測試
- 金絲雀發布
- 速度極限
- 訪問控制
- 端到端認證
在 OpenShift 4.x 上安裝 Istio 服務網格
現在,按照接下來的幾個步驟安裝和配置基於 Istio 的 Red Hat OpenShift Service Mesh。 的組織運營商將用於管理 Istio 控制平面的安裝。
第一步:安裝 Elasticsearch Operator
的彈性搜索Operator 允許您配置和管理 Elasticsearch 集群以使用 Jaeger 進行跟踪和記錄。
登錄到 OpenShift Container Platform Web 控制台並導航到運營商>運營商中心> 搜索彈性搜索 操作員
點擊 ”安裝“。
選擇集群上的所有命名空間(默認)用於安裝模式和自動批准策略。
單擊訂閱開始安裝。
第二步:安裝 Jaeger Operator
積家允許您執行跟踪以監控複雜分佈式系統中的事務並排除故障。
導航運營商>運營商中心> 搜索積家操作員
點擊 ”繼續”, 然後選擇下面的其他設置進行訂閱。
第 3 步:安裝 Kiali Operator
凱利允許您在單個控制台中查看配置、監控流量以及查看和分析跟踪。 要安裝它,請搜索“Kiali 運算符在運營商中心.
選擇安裝方法、更新渠道和批准策略。
現在應該安裝所有三個運算符。
第 4 步:安裝 Red Hat OpenShift Service Mesh Operator
安裝 Jaeger、Kiali 和 Elasticsearch Operator 後,請繼續安裝 Red Hat 提供的 Istio Service Mesh Operator。
導航運營商>運營商中心>紅帽 OpenShift 服務網格
選擇集群上的所有命名空間(默認)在 openshift-operators 項目中安裝 Service Mesh Operator。
請點擊安裝和穩定的使用更新頻道自動的審批策略。
經營者應 openshift-operators
項目。
第五步:配置服務網格控制平面
現在我們可以部署服務網格控制平面,它定義了控制平面安裝的配置。
創建一個新項目:家>項目>創建項目
命名項目組織體系
創建的項目會自動切換到 OpenShift 中的新項目。 導航運營商>安裝運營商>峽部 服務網格控制平面
點擊創建服務網格控制平面
默認的 ServiceMeshControlPlane 模板以 YAML 格式提供。 修改它們以適合您的用例。 你可以參考定制指南了解更多詳細信息。
我自定義瞭如下圖所示的配置。
筆記:請不要復制和粘貼此配置 - 它允許在受污染的基本節點上運行 Istio 服務。 它可能不適合你!
apiVersion: maistra.io/v1
kind: ServiceMeshControlPlane
metadata:
name: full-install
namespace: istio-system
spec:
istio:
global:
proxy:
accessLogFile: "/dev/stdout"
mtls:
enabled: false
disablePolicyChecks: true
policyCheckFailOpen: false
outboundTrafficPolicy:
mode: "REGISTRY_ONLY"
gateways:
istio-ingressgateway:
autoscaleEnabled: true
ior_enabled: true
istio-egressgateway:
autoscaleEnabled: true
nodeSelector:
node-role.kubernetes.io/infra: ""
tolerations:
- key: infra
value: reserved
effect: NoSchedule
- key: infra
value: reserved
effect: NoExecute
mixer:
enabled: true
nodeSelector:
node-role.kubernetes.io/infra: ""
tolerations:
- key: infra
value: reserved
effect: NoSchedule
- key: infra
value: reserved
effect: NoExecute
kiali:
enabled: true
dashboard:
viewOnlyMode: false
ingress:
enabled: true
nodeSelector:
node-role.kubernetes.io/infra: ""
tolerations:
- key: infra
value: reserved
effect: NoSchedule
- key: infra
value: reserved
effect: NoExecute
grafana:
enabled: true
nodeSelector:
node-role.kubernetes.io/infra: ""
tolerations:
- key: infra
value: reserved
effect: NoSchedule
- key: infra
value: reserved
effect: NoExecute
tracing:
enabled: true
jaeger:
template: all-in-one
點擊 ”創造“並且控制面板應該開始安裝。
您可以從 CLI 檢查控制平面安裝的狀態
$ oc get smcp -n istio-system
你可以在創建 Pod 時查看它的進度。
$ oc get pods -n istio-system -w
第 6 步:配置服務網格成員卷
ServiceMeshMemberRoll 列出屬於控制平面的項目。 您需要創建一個名為 ServiceMeshMemberRoll 的資源默認在 istio 系統項目中。
切換到 istio-system 項目:首頁> 項目> istio-system
導航Carrier> 安裝的Carrier> Red Hat OpenShift Service Mesh> Istio Service Mesh Member Volume
向下ServiceMeshMemberRolls單擊創建 ServiceMeshMemberRoll。
添加你想要成為 Istio 服務網格一部分的項目,然後點擊 Create 通過 CLI,ServiceMeshMemberRoll 資源可以在創建後進行更新。
$ oc edit smmr -n istio-system
第 7 步:使用自動 Sidecar 注入部署應用程序
要將應用程序部署到服務網格,您必須指定 sidecar.istio.io/inject
票據的價值 "true"
.
請參見下面的示例。
apiVersion: apps/v1 kind: Deployment metadata: name: sleep spec: replicas: 1 template: metadata: annotations: sidecar.istio.io/inject: "true" labels: app: sleep spec: containers: - name: sleep image: tutum/curl command: ["/bin/sleep","infinity"] imagePullPolicy: IfNotPresent
對於作為項目成員添加到控制平面的現有應用程序,您可以通過添加或修改註釋來更新部署中的 pod 模板:
$ oc patch deployment/
-p '{"spec":{"template":{"metadata":{"annotations":{"kubectl.kubernetes.io/restartedAt": "'`date -Iseconds`'"}}}}}'
你可以閱讀部署 Bookinfo場景。
有關 OpenShift 的更多指南。
在 OpenShift 4.x / OKD 4.x 上配置 Chrony NTP 服務
在 Kubernetes / OpenShift 上為 Rook 運行 Ceph 工具箱
將 Harbor Image Registry Pull Secret 添加到 Kubernetes / OpenShift
使用 HTPasswd 身份提供者管理 OpenShift / OKD 用戶
如何使用oc命令顯示OpenShift節點的日誌
如何在 OpenShift 節點上打開 Shell 提示符
這
您可以通過以下鏈接下載 PDF 格式的本文以支持我們。
下載 PDF 格式的指南
關
這
這
這