使用Istio Sidecar添加部署和服务

前提条件

已在集群层级和命名空间层级安装 Istio。

为已有的工作负载配置 Istio sidecar

在命名空间中启用 Istio 后只会对新增的工作负载自动注入 sidecar。如果要为已有的工作负载启用 sidecar,需要重新部署该工作负载。

  1. Cluster Explorer 进入工作负载,单击 ⋮, 并单击 Redeploy,重新部署工作负载

  2. 在重新部署工作负载的过程中,它将自动注入 sidecar。

  3. 等待几分钟后,工作负载将升级为拥有 istio sidecar。单击它并进入container部分。你应该可以看到istio-proxy和你原来的工作负载一起。

结果:已为现有的工作负载启用的 Istio sidecar。

添加部署和服务

有几种方法可以在你的命名空间中添加新的部署

  1. 集群资源管理器中单击 “工作负载 > 概述”。
  2. 单击创建
  3. 从各种工作负载选项中选择部署
  4. 填写表格,或编辑为 Yaml
  5. 单击创建

或者,您可以进入 “workload > specific workload” ,选择您要部署的特定工作负载,并从那里创建。

在您的命名空间中添加一个服务

  1. 集群资源管理器单击服务发现>服务
  2. 单击创建
  3. 从各种选项中选择要创建的服务类型。
  4. 填写表格,或编辑为 Yaml
  5. 单击创建

您也可以使用 kubectl shell创建部署和服务。

  1. 如果您的文件存储在集群的本地,请运行kubectl create -f <服务/部署文件的名称>.yaml
  2. 或者运行cat<< EOF | kubectl apply -f -,将文件内容粘贴到终端,然后运行EOF完成命令。

部署和服务示例

接下来我们在 Istio 的文档中为 BookInfo 应用的示例部署和服务添加 Kubernetes 资源。

  1. 集群资源管理器,打开 kubectl shell
  2. 运行cat<< EOF | kubectl apply -f -
  3. 将以下资源复制到 shell 中
  4. 运行 EOF

这将设置 Istio 的示例 BookInfo 应用程序中的以下示例资源。

details服务和部署:

  • details Service
  • bookinfo-details 的 ServiceAccount。
  • details-v1部署。

评级服务和部署:

  • 一个 ratingsService
  • bookinfo-ratings的 ServiceAccount。
  • 一个ratings-v1部署

审查服务和部署(三个版本):

  • reviewsService
  • 一个 bookinfo-reviews的 ServiceAccount。
  • 一个 reviews-v1 部署
  • 一个reviews-v2部署
  • 一个reviews-v3部署

产品页面服务和部署:

这是应用程序的主页面,它将从 Web 浏览器中可见。其他服务将从这个页面调用。

  • 一个 productpage 服务
  • 一个bookinfo-productpage的 ServiceAccount
  • 一个productpage-v1 Deployment

资源 YAML

  1. # Copyright 2017 Istio Authors
  2. #
  3. # Licensed under the Apache License, Version 2.0 (the "License");
  4. # you may not use this file except in compliance with the License.
  5. # You may obtain a copy of the License at
  6. #
  7. # http://www.apache.org/licenses/LICENSE-2.0
  8. #
  9. # Unless required by applicable law or agreed to in writing, software
  10. # distributed under the License is distributed on an "AS IS" BASIS,
  11. # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  12. # See the License for the specific language governing permissions and
  13. # limitations under the License.
  14. ##################################################################################################
  15. # Details service
  16. ##################################################################################################
  17. apiVersion: v1
  18. kind: Service
  19. metadata:
  20. name: details
  21. labels:
  22. app: details
  23. service: details
  24. spec:
  25. ports:
  26. - port: 9080
  27. name: http
  28. selector:
  29. app: details
  30. ---
  31. apiVersion: v1
  32. kind: ServiceAccount
  33. metadata:
  34. name: bookinfo-details
  35. ---
  36. apiVersion: apps/v1
  37. kind: Deployment
  38. metadata:
  39. name: details-v1
  40. labels:
  41. app: details
  42. version: v1
  43. spec:
  44. replicas: 1
  45. selector:
  46. matchLabels:
  47. app: details
  48. version: v1
  49. template:
  50. metadata:
  51. labels:
  52. app: details
  53. version: v1
  54. spec:
  55. serviceAccountName: bookinfo-details
  56. containers:
  57. - name: details
  58. image: docker.io/istio/examples-bookinfo-details-v1:1.15.0
  59. imagePullPolicy: IfNotPresent
  60. ports:
  61. - containerPort: 9080
  62. ---
  63. ##################################################################################################
  64. # Ratings service
  65. ##################################################################################################
  66. apiVersion: v1
  67. kind: Service
  68. metadata:
  69. name: ratings
  70. labels:
  71. app: ratings
  72. service: ratings
  73. spec:
  74. ports:
  75. - port: 9080
  76. name: http
  77. selector:
  78. app: ratings
  79. ---
  80. apiVersion: v1
  81. kind: ServiceAccount
  82. metadata:
  83. name: bookinfo-ratings
  84. ---
  85. apiVersion: apps/v1
  86. kind: Deployment
  87. metadata:
  88. name: ratings-v1
  89. labels:
  90. app: ratings
  91. version: v1
  92. spec:
  93. replicas: 1
  94. selector:
  95. matchLabels:
  96. app: ratings
  97. version: v1
  98. template:
  99. metadata:
  100. labels:
  101. app: ratings
  102. version: v1
  103. spec:
  104. serviceAccountName: bookinfo-ratings
  105. containers:
  106. - name: ratings
  107. image: docker.io/istio/examples-bookinfo-ratings-v1:1.15.0
  108. imagePullPolicy: IfNotPresent
  109. ports:
  110. - containerPort: 9080
  111. ---
  112. ##################################################################################################
  113. # Reviews service
  114. ##################################################################################################
  115. apiVersion: v1
  116. kind: Service
  117. metadata:
  118. name: reviews
  119. labels:
  120. app: reviews
  121. service: reviews
  122. spec:
  123. ports:
  124. - port: 9080
  125. name: http
  126. selector:
  127. app: reviews
  128. ---
  129. apiVersion: v1
  130. kind: ServiceAccount
  131. metadata:
  132. name: bookinfo-reviews
  133. ---
  134. apiVersion: apps/v1
  135. kind: Deployment
  136. metadata:
  137. name: reviews-v1
  138. labels:
  139. app: reviews
  140. version: v1
  141. spec:
  142. replicas: 1
  143. selector:
  144. matchLabels:
  145. app: reviews
  146. version: v1
  147. template:
  148. metadata:
  149. labels:
  150. app: reviews
  151. version: v1
  152. spec:
  153. serviceAccountName: bookinfo-reviews
  154. containers:
  155. - name: reviews
  156. image: docker.io/istio/examples-bookinfo-reviews-v1:1.15.0
  157. imagePullPolicy: IfNotPresent
  158. ports:
  159. - containerPort: 9080
  160. ---
  161. apiVersion: apps/v1
  162. kind: Deployment
  163. metadata:
  164. name: reviews-v2
  165. labels:
  166. app: reviews
  167. version: v2
  168. spec:
  169. replicas: 1
  170. selector:
  171. matchLabels:
  172. app: reviews
  173. version: v2
  174. template:
  175. metadata:
  176. labels:
  177. app: reviews
  178. version: v2
  179. spec:
  180. serviceAccountName: bookinfo-reviews
  181. containers:
  182. - name: reviews
  183. image: docker.io/istio/examples-bookinfo-reviews-v2:1.15.0
  184. imagePullPolicy: IfNotPresent
  185. ports:
  186. - containerPort: 9080
  187. ---
  188. apiVersion: apps/v1
  189. kind: Deployment
  190. metadata:
  191. name: reviews-v3
  192. labels:
  193. app: reviews
  194. version: v3
  195. spec:
  196. replicas: 1
  197. selector:
  198. matchLabels:
  199. app: reviews
  200. version: v3
  201. template:
  202. metadata:
  203. labels:
  204. app: reviews
  205. version: v3
  206. spec:
  207. serviceAccountName: bookinfo-reviews
  208. containers:
  209. - name: reviews
  210. image: docker.io/istio/examples-bookinfo-reviews-v3:1.15.0
  211. imagePullPolicy: IfNotPresent
  212. ports:
  213. - containerPort: 9080
  214. ---
  215. ##################################################################################################
  216. # Productpage services
  217. ##################################################################################################
  218. apiVersion: v1
  219. kind: Service
  220. metadata:
  221. name: productpage
  222. labels:
  223. app: productpage
  224. service: productpage
  225. spec:
  226. ports:
  227. - port: 9080
  228. name: http
  229. selector:
  230. app: productpage
  231. ---
  232. apiVersion: v1
  233. kind: ServiceAccount
  234. metadata:
  235. name: bookinfo-productpage
  236. ---
  237. apiVersion: apps/v1
  238. kind: Deployment
  239. metadata:
  240. name: productpage-v1
  241. labels:
  242. app: productpage
  243. version: v1
  244. spec:
  245. replicas: 1
  246. selector:
  247. matchLabels:
  248. app: productpage
  249. version: v1
  250. template:
  251. metadata:
  252. labels:
  253. app: productpage
  254. version: v1
  255. spec:
  256. serviceAccountName: bookinfo-productpage
  257. containers:
  258. - name: productpage
  259. image: docker.io/istio/examples-bookinfo-productpage-v1:1.15.0
  260. imagePullPolicy: IfNotPresent
  261. ports:
  262. - containerPort: 9080
  263. ---

Copy

后续操作

设置 Istio 网关