前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Istio 1.5 部署指南修正版

Istio 1.5 部署指南修正版

作者头像
米开朗基杨
发布2020-04-01 15:47:09
7310
发布2020-04-01 15:47:09
举报
文章被收录于专栏:云原生实验室云原生实验室
前言

本文主要是对上一篇文章 Istio 1.5 部署指南 的修正和补充,由于微信公众号不能修改已经发布的文章,姑且再写一篇吧,本文会直接更新合并到博客中,公众号读者结合上一篇文章一起看吧,不过还是建议直接看博客(点击底部的阅读原文)。

主要有两处改动:

1. HostNetwork

为了暴露 Ingress Gateway,可以使用 HostNetwork 模式运行,上篇文章的方法是直接修改 Deployment,但这种方法还是不太优雅。经过我对 IstioOperator API 文档[1] 的研究,发现了一个更为优雅的方法,那就是直接修改资源对象 IstioOperator 的内容,在 components.ingressGateways 下面加上么一段:

代码语言:javascript
复制
        overlays:
        - apiVersion: apps/v1
          kind: Deployment
          name: istio-ingressgateway
          patches:
          - path: spec.template.spec
            value:
              hostNetwork: true
              dnsPolicy: ClusterFirstWithHostNet

具体含义我就不解释了,请看上篇文章。这里只对 IstioOperator 的语法做简单说明:

  • overlays 列表用来修改对应组件的各个资源对象的 manifest,这里修改的是组件 Ingress Gateway 的 Deployment
  • patches 列表里是实际要修改或添加的字段,我就不解释了,应该很好理解。

2. 只暴露必要端口

从安全的角度来考虑,我们不应该暴露那些不必要的端口,对于 Ingress Gateway 来说,只需要暴露 HTTP、HTTPS 和 metrics 端口就够了。方法和上面一样,直接在 components.ingressGatewaysoverlays 列表下面加上这么一段:

代码语言:javascript
复制
        - apiVersion: v1
          kind: Service
          name: istio-ingressgateway
          patches:
          - path: spec.ports
            value:
            - name: status-port
              port: 15020
              targetPort: 15020
            - name: http2
              port: 80
              targetPort: 80
            - name: https
              port: 443
              targetPort: 443

这个更简单,不用解释了,最终的 IstioOperator 清单文件如下:

代码语言:javascript
复制
apiVersion: install.istio.io/v1alpha1
kind: IstioOperator
metadata:
  namespace: istio-system
  name: example-istiocontrolplane
spec:
  profile: demo
  components:
    cni:
      enabled: true
      namespace: kube-system
    ingressGateways:
    - enabled: true
      k8s:
        service:
          type: ClusterIP
        strategy:
          rollingUpdate:
            maxUnavailable: 100%
            maxSurge: 0%
        nodeSelector:
          kubernetes.io/hostname: sealos02
        overlays:
        - apiVersion: apps/v1
          kind: Deployment
          name: istio-ingressgateway
          patches:
          - path: spec.template.spec
            value:
              hostNetwork: true
              dnsPolicy: ClusterFirstWithHostNet
        - apiVersion: v1
          kind: Service
          name: istio-ingressgateway
          patches:
          - path: spec.ports
            value:
            - name: status-port
              port: 15020
              targetPort: 15020
            - name: http2
              port: 80
              targetPort: 80
            - name: https
              port: 443
              targetPort: 443
  values:
    cni:
      excludeNamespaces:
       - istio-system
       - kube-system
       - monitoring
      logLevel: info

脚注

[1]IstioOperator API 文档: https://istio.io/docs/reference/config/istio.operator.v1alpha1/

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-03-26,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 云原生实验室 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. HostNetwork
  • 2. 只暴露必要端口
    • 脚注
    相关产品与服务
    服务网格
    服务网格(Tencent Cloud Mesh, TCM),一致、可靠、透明的云原生应用通信网络管控基础平台。全面兼容 Istio,集成腾讯云基础设施,提供全托管服务化的支撑能力保障网格生命周期管理。IaaS 组网与监控组件开箱即用,跨集群、异构应用一致发现管理加速云原生迁移。
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档