先进的概念

Citrix Cloud Native Networking for Red Hat OpenShift 3.11验证参考设计

Citrix ADC栈满足了应用程序可用性特性(ADC)、安全特性隔离(WAF)、敏捷应用程序拓扑(SSL和GSLB)的伸缩和主动可观察性(服务图)的基本需求,使之成为高度协调的云原生时代环境。

数字化转型推动了将现代应用程序部署转移到基于微服务的体系结构的需求。这些云原生架构利用了应用程序容器、微服务和Kubernetes。

现代应用程序的Cloud Native方法还改变了开发生命周期,包括敏捷工作流、自动化部署工具集以及开发语言和平台。

现代应用程序部署的新时代还改变了传统的数据中心业务模型规程,包括每月和每年的软件发布和合同、竖井计算资源和预算以及供应商消费模型。

虽然所有这些现代化都发生在生态系统中,但对于应用程序可用性特性(ADC)、安全特性隔离(WAF)、敏捷应用程序拓扑的伸缩(SSL和GSLB)和主动可观察性(服务图),仍然有一些基本的需求,需要将它们放到高度编排的环境中。

为什么Citrix用于现代应用程序交付

现代应用程序部署的Citrix软件方法需要跨组织内许多团队合并敏捷工作流。敏捷应用程序开发和交付的优点之一是称为CI/CD的框架。

CI/CD是一种为现代应用程序生命周期提供速度、安全性和可靠性的方法。

持续集成(Continuous Integration, CI)允许一个公共代码库,该代码库可以每天实时更新几次,并集成到自动构建平台中。持续集成的三个阶段是推送、测试和修复。

持续交付(CD)将部署管道直接集成到CI开发过程中,从而为现代应用程序优化和改进软件交付模型。

Citrix adc通过实现自动金丝雀分析逐步推出,与连续交付过程相结合。

为所有利益相关者提供解决方案

Citrix创建了一个专用的基于软件的解决方案,在部署现代应用程序时解决跨功能需求,并集成了可观察性堆栈、安全框架和CI/CD基础设施的各种组件。

采用CI/CD技术部署现代应用程序的传统组织已经认识到,需要向CI/CD中涉及的所有成员提供通用的交付和可用性框架,这些资源通常被定义为业务单元“涉众”,虽然每个涉众都致力于组织的整体成功,但每个涉众通常有不同的需求和差异。

利益相关者在现代交付活动中的一些常见例子包括:

  • 平台团队部署数据中心基础设施,如IaaS, PaaS, SDN, ADC, WAF
  • 开发和维护统一的代码库、自动化工具、软件架构
  • 服务可靠性工程(SRE)团队减少组织的竖井、错误管理、部署自动化和度量
  • 安全运营团队主动的安全策略,事件管理,补丁部署,组合加固

Citrix软件栈解释

单代码库——它为你提供了所有相同的代码——内部部署,公共云部署,私有云部署,政府云部署

  • 平台的选择——为了满足任何敏捷需求,选择任何Citrix ADC模型

    • CPX - Citrix ADC CPX是一个以容器形式交付的Citrix ADC
    • VPX - Citrix ADC VPX产品是一种虚拟设备,可以托管在各种虚拟化和云平台上,提供从10 Mb/s到100 Gb/s的性能。
    • MPX - Citrix ADC MPX是一种基于硬件的应用程序交付设备,提供从500 Mb/s到200 Gb/s的性能。
    • SDX——Citrix ADC SDX设备是一个多租户平台,您可以在该平台上提供和管理多个虚拟Citrix ADC机器(实例)。
    • BLX - Citrix ADC BLX设备是Citrix ADC的一个软件形式因子。它被设计为在商用现成服务器(COTS)的集装箱化环境上的裸金属linux上本机运行——创建覆盖并自动配置Citrix ADC
    • Citrix入口控制器-围绕Kubernetes Ingress构建,并根据Ingress资源配置自动配置一个或多个Citrix ADC
    • Citrix节点控制器-在Kubernetes节点和Ingress Citrix ADC之间创建一个基于vxlan的覆盖网络
    • Citrix IPAM控制器-在Citrix ADC上自动分配负载均衡虚拟服务器,使用IP地址(虚拟IP地址或VIP)池容量许可—一个全局license
    • 无处不在的全球许可池分离了平台和许可,为设计和性能提供了完全的灵活性
    • 管理车队,编排策略和应用程序,实时监控和排除故障
      灵活的拓扑——传统的数据中心或现代云
    • 单层,双层,和服务网格lite

Citrix ADC值

  • Kubernetes与CNCF开源工具集成
  • 完美的代理-一个经过验证的Layer7应用程序交付控制器的现代应用程序
    • Pod或Sidecar部署中的高性能ADC容器
    • 低延迟访问Kubernetes集群使用多个选项
  • 功能丰富的API -轻松实现和编排安全功能,没有限制
  • 用于CI/CD的高级流量引导和Canary部署
  • 通过TLS/SSL, WAF, DoS和API保护证明安全
  • 富Layer 7功能
  • 对遗留和现代应用程序部署的集成监视
  • 可操作的洞察力和服务图的可见性

Citrix ADC的好处

  • 移动遗留应用程序,而不必重写它们
  • 开发者可以使用Kubernetes api(使用crd -开发者友好)保护Citrix ADC策略的应用程序。
  • 为南北和服务网格部署高性能的微服务
  • 为所有微服务使用一个应用程序服务图
  • 解决微服务问题更快跨TCP, UDP, HTTP/S, SSL
  • 安全接口,使用Kubernetes接口进行配置
  • 为金丝雀部署增强CICD流程

架构组件

Citrix云本地应用解决方案组合

Citrix ADC套件优势

Citrix是选择。无论您使用的是遗留数据中心和组件,还是已经推出了新的云原生现代应用程序,Citrix ADC都可以无缝集成到您可能拥有的任何平台需求中。我们为基于订阅的云平台和工具提供云原生ADC功能,允许通过轻松的入口控制器编排将流量引导和编排到您的Kubernetes集群,并解决从简单到复杂的服务网格体系结构。

Citrix验证。经过验证的设计模板和样例应用程序允许容易地引用所需的状态和业务需求,以便快速和完整地处理。我们在一个中心位置记录并发布了配置示例,以方便DevOps、SecOps和平台团队之间的参考。

思杰是敏捷和现代的。创建基础架构,以便客户使用Citrix云原生堆栈的新特性,使用现有的ADC和新模块(CNC、IPAM等)

Citrix是开着的。帮助客户理解我们与合作伙伴生态系统的集成。在本文档中,我们使用了开源CNCF工具和Citrix企业级产品。

合作伙伴生态系统

本主题详细介绍了Cloud-Native部署中支持的各种Kubernetes平台、部署拓扑、特性和cni,包括Citrix ADC和Citrix入口控制器。

Citrix Ingress Controller支持以下平台:

  • 裸金属上的Kubernetes v1.10,或在AWS、GCP或Azure等公共云上的自托管。
  • 谷歌Kubernetes Engine (GKE)
  • 弹性库伯内特服务(EKS)
  • Azure Kubernetes服务(AKS)
  • Red Hat OpenShift版本3.11及更高版本
  • 枢纽集装箱服务(PKS)
  • Diamanti企业Kubernetes平台

我们的合作伙伴生态系统还包括以下内容:

  • Prometheus -用于度量、警报和洞察的监视工具
  • Grafana -分析和监控平台
  • 三角帆-一个多云连续交付和金丝雀分析的工具
  • Elasticsearch -一个应用程序或网站搜索服务
  • 一个用于弹性搜索数据和弹性堆栈导航工具的可视化工具
  • Fluentd—数据收集器工具

下一节的重点是OpenShift的设计/架构。

OpenShift概述

Red Hat OpenShift是一个Kubernetes的部署平台,专注于使用微服务和容器来更快地构建和扩展应用程序。通过自动化、安装、升级和管理容器栈,OpenShift简化了Kubernetes并简化了日常DevOps任务。

  • 开发人员提供的应用程序可以访问经过验证的解决方案和合作伙伴,这些合作伙伴通过简化的工作流程被推到生产中。
  • 操作人员可以使用Web Console和内置的日志记录和监视来管理和扩展环境。

图1-6:OpenShift高级架构。

OpenShift的更多优点和组件包括:

  • 选择的基础设施
  • 主节点和工作节点
  • 图像注册表
  • 路由和服务层
  • 开发人员操作(已介绍,但超出了本文档的范围)

集成Red Hat OpenShift与Citrix原生堆栈的用例包括:

  • 遗留应用程序支持
  • 重写作为api部署的/Responder策略
  • Microservices故障排除
  • 使用安全补丁和功能增强的日常操作

在本文档中,我们将介绍Citric ADC如何提供可靠的路由/服务层集成。

OpenShift项目

OpenShift添加的第一个新概念是项目,它有效地包装了一个名称空间,通过项目控制对名称空间的访问。通过基于用户和组的身份验证和授权模型控制访问。因此,OpenShift中的项目在名称空间之间提供了隔离墙,确保用户或应用程序只能看到和访问他们被允许访问的内容。

OpenShift名称空间

Kubernetes中主要的分组概念是名称空间。名称空间也是在多个用途之间划分集群资源的一种方法。也就是说,Kubernetes中的名称空间之间不存在安全性。如果您是Kubernetes集群中的“用户”,则可以看到所有不同的名称空间和其中定义的资源。

示例:YAML文件创建名为“tier-2-adc”的命名空间。

OpenShift软件定义网络(SDN)

OpenShift容器平台使用软件定义网络(SDN)方法提供统一的集群网络,使跨OpenShift容器平台集群的pod之间能够通信。该pod网络由OpenShift SDN建立和维护,该SDN使用Open vSwitch (OVS)配置覆盖网络。

OpenShift SDN提供了三个SDN插件,用于配置pod网络:

  •  ovs-subnet 插件是最初的插件,它提供了一个“扁平的”pod网络,在这个网络中,每个pod都可以与其他pod和服务进行通信。
  •  ovs-multitenant 插件为pods和服务提供了项目级别的隔离。每个项目都接收一个唯一的虚拟网络ID (VNID),它标识分配给项目的豆荚的流量。来自不同项目的pod不能向不同项目的pod和服务发送或接收数据包。
  • 然而,接收VNID 0的项目更有特权,因为它们被允许与所有其他豆荚通信,而所有其他豆荚也可以与它们通信。在OpenShift容器平台集群中, 默认的 项目具有VNID 0。这有助于某些服务(如负载平衡器)与集群中的所有其他吊舱通信,反之亦然。
  •  ovs-networkpolicy 插件允许项目管理员使用NetworkPolicy对象配置自己的隔离策略。

OpenShift路由和插件

OpenShift管理员可以访问 部署路由器在OpenShift集群中使用 ,启用路线 由开发人员 创建,供外部客户端使用。OpenShift中的路由层是可插入的,还有两个可用的 路由器的插件默认情况下提供并支持 。

OpenShift路由器为 提供外部主机名映射和负载均衡服务 通过协议直接向路由器传递区分信息;主机名必须出现在协议中,以便路由器确定将其发送到哪里。

路由器插件假设它们可以绑定到主机端口80和443。这是为了允许外部流量路由到主机,然后通过路由器。路由器还假设网络已经配置好,可以访问集群中的所有pod。

的OpenShift 路由器 是指向 的所有外部流量的入口点服务 在您的OpenShift安装。OpenShift提供并支持以下路由器插件:

  •  的HAProxy模板路由器 是默认插件。它使用 openshift3/ose-haproxy-routerimage在OpenShift的容器中与模板路由器插件一起运行HAProxy实例。它目前通过SNI支持HTTP(S)流量和支持tls的流量。路由器的容器监听主机网络接口,不像大多数容器只监听私有ip。路由器将路由名称的外部请求代理给与路由相关的服务识别的实际pods的ip。
  • Citrix入口控制器可以作为路由器插件部署在OpenShift集群中,以与部署在您的环境中的Citrix adc集成。Citrix入口控制器使您能够在OpenShift集群中使用Citrix ADC的高级负载平衡和流量管理功能。看到将Citrix入口控制器部署为OpenShift集群中的路由器插件

OpenShift路由和入口方法

在OpenShift集群中,外部客户端需要一种方式来访问pods提供的服务。OpenShift提供了两个用于与集群中运行的服务通信的资源: 路线 和 入口

路线

在OpenShift集群中,路由公开给定域名上的服务,或者将域名与服务关联。OpenShift路由器根据路由中指定的规则将外部请求路由到OpenShift集群内的服务。在使用OpenShift路由器时,还必须配置外部DNS,以确保流量在路由器上登陆。

Citrix入口控制器可以作为路由器插件部署在OpenShift集群中,以与部署在您的环境中的Citrix adc集成。Citrix入口控制器使您能够在OpenShift集群中使用Citrix ADC的高级负载平衡和流量管理功能。OpenShift路由可以是安全的,也可以是不安全的。安全路由指定路由的TLS终止。

Citrix入口控制器支持以下OpenShift路由:

  • 无担保的路线:对于不安全路由,HTTP流量不加密。
  • 边缘终止:对于边缘终止,在路由器上终止TLS协议。从路由器到内部网络端点的流量不加密。
  • 透传终止:直通终端时,路由器不参与TLS卸载,加密流量直接发送到目的地。
  • Re-encryption终止:重加密终止时,路由器先终止TLS连接,然后与终端建立另一个TLS连接。

根据您想如何使用Citrix ADC,有两种方法可以将Citrix Ingress Controller部署为OpenShift集群中的路由器插件:集群内的Citrix ADC CPX或集群外的Citrix ADC MPX/VPX。

将Citrix ADC CPX部署为OpenShift集群中的路由器

Citrix Ingress控制器与Citrix ADC CPX容器部署在同一吊舱中,作为侧车部署。该模式下,由Citrix入口控制器配置Citrix ADC CPX。看到将Citrix ADC CPX部署为OpenShift集群中的路由器

将Citrix ADC MPX/VPX部署为OpenShift集群外的路由器

Citrix入口控制器作为一个独立的pod部署,允许您从OpenShift集群外部控制Citrix ADC MPX或VPX设备。看到将Citrix ADC MPX/VPX部署为OpenShift集群外的路由器

入口

Kubernetes 入口提供一种基于请求主机或路径将请求路由到服务的方法,将许多服务集中到单个入口点。

Citrix Ingress控制器是围绕Kubernetes Ingress构建的,可以根据Ingress资源自动配置一个或多个Citrix ADC设备。

带入口的路由可以通过以下方式完成:

  • 基于主机名的路由
  • 基于路径的路由
  • 基于通配符的路由
  • 具体路径匹配
  • Non-Hostname路由
  • 违约后端

看到导入配置获取示例和更多信息。

将Citrix入口控制器部署为OpenShift路由器插件

根据您想使用Citrix ADC的方式,有两种方法可以将Citrix Ingress Controller部署为OpenShift集群中的路由器插件:

我们建议客户在设计微服务架构时采用以下架构:

  • Citrix统一入口
  • Citrix两层的入口
  • Citrix Service Mesh Lite

图1-2:架构的范围从相对简单到更复杂和功能丰富。

Citrix统一入口

在统一入口部署中,Citrix ADC MPX或VPX设备将南北通信从客户端代理到作为集群内微服务部署的企业级应用程序。Citrix入口控制器作为一个吊舱或侧车部署在Kubernetes集群中,以根据对微服务或入口资源的更改自动化配置Citrix ADC设备(MPX或VPX)。

当您的应用程序仍然是一块巨石时,您就可以开始实现统一入口模型了。只需将Citrix ADC定位为应用服务器前面的反向代理,并实现后面描述的特性。然后,您就可以将应用程序转换为微服务了。

微服务之间的通信是通过您选择的机制处理的(kube-proxy、IPVS等等)。

使用Citrix ADC VPX/MPX的统一入口图

不同类别提供的功能

Unified Ingress体系结构的功能分为三组。

第一组中的特性优化了性能:

  • 负载平衡
  • 低-延迟连接
  • 高可用性

第二组中的特性提高了安全性,使应用程序管理更容易:

  • 速度限制
  • SSL / TLS终止
  • HTTP / 2的支持
  • 健康检查

最后一组特性是特定于微服务的:

  • 服务的中央通信点
  • API网关功能

总结

统一入口模型的特性包括健壮的服务负载平衡、中央通信点、动态服务发现、低延迟连接、高可用性、速率限制、SSL/TLS终止、HTTP/2等。

统一入口模型使管理流量、负载平衡请求和动态响应后端微服务应用程序中的更改变得容易。

优势包括:

  • 南北交通流具有良好的可扩展性,便于观察和监控,并通过Spinnaker和Citrix ADM等工具提供持续交付
  • 单层将管理网络和平台服务的基础架构团队统一起来,并减少跳转以降低延迟
  • 适合不需要Web应用程序防火墙和SSL卸载,但可以稍后添加的内部应用程序

缺点包括:

  • 没有东西安全与kube-proxy,但可以添加Calico为L4分割
  • Kube-proxy的可伸缩性未知
  • 由于kube-proxy不提供可见性、控制或日志,因此东西向通信的可见性受到限制,从而减少了开放工具集成和持续交付
  • 平台团队还必须精通网络

Citrix两层的入口

2-Tier Ingress体系结构模型对于云原生新手来说是一个很好的解决方案。在此模型中,第1层中的Citrix ADC管理传入流量,但将请求发送到由开发人员管理的2层ADC,而不是直接发送到服务实例。Tier-2 Ingress模型将平台和开发人员团队编写的策略仅应用于入站流量,并支持云规模和多租户。

图1-4:使用一级Citrix ADC VPX/MPX和二级Citrix ADC CPX容器的Citrix 2层入口模型示意图。

Tier-1提供的功能

第一层ADC由传统的网络团队管理,提供L4负载平衡、Citrix Web应用程序防火墙、SSL卸载和反向代理服务。第1层的Citrix ADC MPX或VPX设备代理从客户端到第2层的Citrix ADC cpx的流量(南北)。

默认情况下,Citrix入口控制器将在Tier-1上编程以下配置:

  • 应用程序对用户的反向代理:
  • 交换虚拟服务器
  • 虚拟服务器(前端,面向用户)
  • 服务团体
  • SSL卸载
  • NetScaler日志/调试
  • 服务的运行状况监视

由Tier-2提供的功能

第一层ADC提供反向代理服务,第二层ADC由平台团队管理,作为微服务的通信点,提供:

  • 动态服务发现
  • 负载平衡
  • 可见性和丰富的度量

第2层Citrix ADC CPX然后将流量路由到Kubernetes集群中的微服务。作为独立的pod部署的Citrix入口控制器配置Tier-1设备。并且,一个或多个Citrix ADC CPX吊舱中的侧车控制器在同一吊舱中配置相关的Citrix ADC CPX。

总结

2层模型中微服务的网络体系结构使用为不同角色配置的两个adc。第一级ADC充当面向用户的代理服务器,第二级ADC充当微服务的代理。

将不同类型的功能划分到两个不同的层可以提供速度、控制和优化安全性的机会。在第二层中,负载平衡快速、健壮且可配置。

有了这个模型,ADC管理员和开发人员之间就有了明确的区分。这是开发者的BYOL。

优势包括:

  • 南北交通流具有良好的可扩展性,便于观察和监控,并通过Spinnaker和Citrix ADM等工具提供持续交付
  • 为网络和平台团队提供最简单、更快的云原生新手部署,并提供有限的新知识

缺点包括:

  • 没有东西安全与kube-proxy,但可以添加Calico为L4分割
  • Kube-proxy的可伸缩性未知
  • 由于kube-proxy不提供可见性、控制或日志,因此东西向通信的可见性受到限制,从而减少了开放工具集成和持续交付。

Citrix Service Mesh Lite

Service Mesh Lite是三种模型中功能最丰富的。它在内部是安全的、快速的、高效的和有弹性的,并且可以用于执行入站和跨容器通信的策略。

Service Mesh Lite模型适用于以下几个用例:

  • 健康和金融应用程序——监管和用户要求金融和健康应用程序必须兼顾安全性和速度,这将涉及数十亿美元的财务和声誉价值。
  • 电子商务应用——对于电子商务来说,用户信任是一个巨大的问题,而速度是一个关键的竞争差异。因此,将速度和安全性结合起来至关重要。

使用一级Citrix ADC VPX/MPX和二级Citrix ADC CPX容器进行东西代理的Citrix Service Mesh Lite模型示意图。

总结

优势包括:

  • 使用负载均衡器的更健壮的组网方法CPX将策略应用于入站和容器间流量,部署完整的L7策略
  • 为南北和东西交通提供更丰富的可观察性、分析性、持续交付和安全性
  • 金丝雀为每个容器与嵌入式Citrix ADC
  • 单层将管理网络和平台服务的基础架构团队统一起来,并减少跳转以降低延迟

缺点包括:

  • 部署更复杂的模型
  • 平台团队必须精通网络

架构选择总结

Citrix统一入口

  • 南北(NS)应用流量-一个Citrix ADC负责L4和L7 NS的流量、安全以及K8s集群外的外部负载均衡。

  • 东西(EW)应用程序流量—kube-proxy负责L4 EW流量。

  • 安全—ADC负责NS流量的安全和用户认证。Kube-proxy负责L4 EW流量。

  • 可伸缩性和性能—NS流量扩展性好,可以选择集群。EW流量和kube-proxy可伸缩性是未知的。

  • 可观察性ADC为NS流量提供了良好的可观察性,但对EW流量没有可观察性。

Citrix两层的入口

  • 南北(NS)应用流量—一级ADC负责SSL卸载、Web应用防火墙和L4 NS流量。它可用于整体应用程序和CN应用程序。二级CPX管理k8和L7 NS流量的快速变化。

  • 东西(EW)应用程序流量—kube-proxy负责L4 EW流量。

  • 安全—一级ADC负责NS流量的安全。身份验证可以在任意一个ADC上进行。EW流量不被kube-proxy保护。添加Calico为L4分割。

  • 可伸缩性和性能—NS流量扩展性好,可以选择集群。EW流量和kube-proxy可伸缩性是未知的。

  • 可观察性一级ADC为NS流量提供了优秀的可观察性,但对EW流量没有可观察性。

Citrix Service Mesh Lite

  • 南北(NS)应用流量—一级ADC负责SSL卸载、Web应用防火墙和L4 NS流量。它可用于整体应用程序和CN应用程序。二级CPX管理k8和L7 NS流量的快速变化。

  • 东西(EW)应用程序流量-第2层CPX或任何开源代理负责L4 EW流量。客户可以选择哪些应用程序使用CPX,哪些应用程序使用kube-proxy。

  • 安全—一级ADC负责NS流量的安全。身份验证可以在任意一个ADC上进行。Citrix CPX负责身份验证、SSL卸载和保护EW流量。加密可以应用于应用程序级别。

  • 可伸缩性和性能NS和EW流量是可扩展的,但它增加了一个内跳。

  • 可观察性-一级ADC提供了NS流量的良好可观察性。Tier-2中的CPX提供了EW流量的可观察性,但可以禁用它以减少CPX内存或CPU占用。

如何部署

Citrix统一入口

要使用OpenShift验证Citrix统一入口部署,请使用带有Citrix ADC VPX或MPX的示例“hello-world”应用程序。OpenShift的默认名称空间“default”用于此部署。

  1. Citrix ADC实例是手工构建的,并使用NSIP/SNIP配置。可以找到在XenServer上安装Citrix ADC在这里

  2. 将下面的YAML文件示例复制到一个OpenShift目录,并将其命名为application.yaml。

    apiVersion: apps/v1 kind: Deployment metadata: name: hello-world spec: selector: matchLabels: run: load-balancer-example replicas: 2 template: metadata: labels: run: load-balancer-example spec: containers:—name: hello-world image: gcr.io/google-samples/node-hello:1.0 ports:—containerPort: 8080 protocol: TCP 
  3. 部署应用程序。Oc apply -f application.yaml

  4. 确保吊舱运行正常。oc得到豆荚

  5. 将下面的YAML文件示例复制到一个OpenShift目录,并将其命名为service.yaml。

    apiVersion: v1 kind: Service metadata: name: hello-world-service spec: type: NodePort ports:—port: 80 targetPort: 8080 selector: run: load-balancer-example 
  6. 通过带有服务的NodePort公开应用程序。Oc应用-f service.yaml

  7. 验证服务是否已创建。oc得到服务

  8. 将下面的YAML文件示例复制到一个OpenShift目录并将其命名为ingress. YAML .您必须将注释“ingress.citrix.com/frontend-ip”更改为Citrix ADC上的VIP的空闲IP地址。

    apiVersion: extensions/v1beta1 kind: Ingress metadata: name: hello-world-ingress annotations: kubernetes.io/ Ingress .class: "vpx" ingress.citrix.com/insecure-termination: "redirect" ingress.citrix.com/frontend-ip: "10.217.101.183" spec: rules: - host: helloworld.com http: paths: - path: backend: serviceName: hello-world-service servicePort: 80 
  9. 部署Ingress YAML文件。Oc应用-f ingress.yaml

  10. 现在我们已经使用服务公开了一些应用程序舱,并且可以使用Ingress将流量路由到它们。安装Citrix输入控制器(CIC)将这些配置推到我们的Tier 1 ADC VPX。Before deploying the CIC, deploy an RBAC file that gives the CIC the correct permissions to run.

    注意:

    rbac yaml文件指定了名称空间,必须更改名称空间,等待使用哪个名称空间。

    apiVersion: rbac.authorization.k8s. type: ClusterRole- apiGroups:[""]资源:["services", "endpoints", "ingress ", "pods", "secrets", "nodes", "routes", "routes/status", "tokenreviews", "subjectaccessreviews"]动词:["*"]- apiGroups: ["extensions"]资源:["ingress ", "ingress /status"]动词:["*"]- apiGroups: ["citrix.com"]资源:["rewritepolicies"]动词:["*"]- apiGroups: ["apps"]资源:["部署"]动词:["*"]
    类:ClusterRoleBinding apiVersion: rbac.authorization.k8s。roleRef: apiGroup: rbac.authorization.k8s. io/v1beta1 metadata: name: cpx—kind: ServiceAccount name: cpx namespace: default 
    apiVersion: v1 kind: ServiceAccount元数据:name: cpx namespace: default 
  11. 部署RBAC文件。Oc应用-f rbac.yaml

  12. 在部署CIC之前,编辑YAML文件。根据规范,只要在一级ADC的SNIP上启用管理,就可以添加NSIP或SNIP。注意,参数“ingress-classes”与ingress YAML文件中指定的ingress类注释相同。

    apiVersion: v1:豆荚元数据:名称:hello-world-cic标签:应用:hello-world-cic规范:serviceAccountName: cpx容器:-名称:hello-world-cic形象:“quay.io / citrix / citrix-k8s-ingress-controller: 1.1.3“env: #集NetScaler NSIP /剪,剪断的HA(管理必须启用)名称:“NS_IP”价值:“10.217.101.193”#为硝基#设置日志级别设置用户名-名称:“NS_ENABLE_MONITORING”价值:“不”,名字:“NS_USER”价值:“nsroot”——名字:“NS_PASSWORD”价值:“nsroot”——名称:"EULA"值:"yes" - name: "LOGLEVEL"值:"DEBUG"参数:-——ingress-classes vpx -——feature-node-watch false imagePullPolicy: IfNotPresent 
  13. 部署中投。Oc应用-f cci .yaml

  14. 确认所有舱都在运行。oc得到豆荚

  15. 使用helloworld.com和Ingress YAML文件中指定的Citrix ADC上的VIP条目编辑本地机器上的hosts文件。

  16. 在浏览器中导航到helloworld.com。”你好Kubernetes !“应该出现。

注意:下面是删除命令

  • Oc删除pods (pod名称)-n(命名空间名称)
  • 删除部署(部署名称)-n(命名空间名称)
  • Oc delete service(服务名称)-n(命名空间名称)
  • 删除ingress (ingress名称)-n (namespace名称)
  • Oc delete serviceaccounts (serviceaccounts name) -n (namespace name)

Citrix两层的入口

要使用OpenShift验证Citrix 2-Tier Ingress部署,请使用带有Citrix ADC VPX或MPX的示例“hello-world”应用程序。默认的名称空间“tier-2-adc”用于此部署。**注意:When deploying pods, services, and Ingress, the namespace must be specified using the parameter “-n (namespace name)”.

  1. Citrix ADC实例是手工构建的,并使用NSIP/SNIP配置。在XenServer上安装Citrix ADC可以在这里找到。如果实例已经配置,则清除负载平衡或内容交换中推送到ADC的所有虚拟服务器,以免将hello-world部署为Unified Ingress。

  2. 创建名为“tier-2-adc”的命名空间。Oc创建命名空间tier-2-adc

  3. 将下面的YAML文件示例复制到一个OpenShift目录并命名它application-2t.yaml

    apiVersion: apps/v1 kind: Deployment metadata: name: hello-world spec: selector: matchLabels: run: load-balancer-example replicas: 2 template: metadata: labels: run: load-balancer-example spec: containers:—name: hello-world image: gcr.io/google-samples/node-hello:1.0 ports:—containerPort: 8080 protocol: TCP 
  4. 在命名空间中部署应用程序。Oc apply -f application-2t。yaml - n tier-2-adc

  5. 确保吊舱运行正常。oc得到豆荚

  6. 将下面的YAML文件示例复制到一个OpenShift目录并命名它service-2t.yaml

    apiVersion: v1 kind: Service metadata: name: hello-world-service-2 spec: type: NodePort ports: -port: 80 targetPort: 8080 selector: run: load-balancer-example 
  7. 通过带有服务的NodePort公开应用程序。Oc应用-f service-2t。yaml - n tier-2-adc

  8. 验证服务是否已创建。Oc获取服务-n tier-2-adc

  9. 将下面的YAML文件示例复制到一个OpenShift目录并命名它ingress-2t.yaml

    apiVersion: extensions/v1beta1 kind: Ingress metadata: name: hello-world-ingress-2 annotations: kubernetes.io/ Ingress .class: "cpx" spec: backend: serviceName: hello-world-service-2 servicePort: 80 
  10. 部署Ingress YAML文件。Oc应用-f ingress-2t。yaml - n tier-2-adc

  11. 部署一个RBAC文件,为CIC和CPX提供运行的正确权限。

    注意:

    rbac yaml文件指定了名称空间,必须更改名称空间,等待使用哪个名称空间。

    apiVersion: rbac.authorization.k8s. type: ClusterRoleio/v1beta1元数据:name: cpx rules: -apiGroups: [""] resources: ["services", "endpoints", "ingress ", "pods", "secrets", "nodes", "routes", "routes/status", "tokenreviews", "subjectaccessreviews"] verbs: ["*"] -apiGroups: ["extensions"] resources: ["ingress ", "ingress /status"] verbs: ["*"] -apiGroups: ["citrix.com"] resources: ["rewritepolicies"] verbs: ["*"] -apiGroups: ["apps"] resources:["部署"]verbs:["*"]——kind: ClusterRoleBinding apiVersion: rbac.authoriz.k8s . aspx . apigroups: ["*"]roleRef: apiGroup: rbac.authorization.k8s. io/v1beta1 metadata: name: cpx- kind: ServiceAccount name: cpx namespace: tier-2-adc——apiVersion: v1 kind: ServiceAccount metadata: name: cpx namespace: tier-2-adc 
  12. 部署RBAC文件。Oc应用-f rbac-2t.yaml

  13. 服务帐户需要提升权限才能创建CPX。Oc adm policy add-sc -to-user特权系统:serviceaccount:tier-2-adc:cpx

  14. 编辑CPX YAML文件并调用它cpx-2t.yaml.这将部署CPX和公开它的服务。方法中的注释匹配入接口类的参数ingress-2t.yaml文件。

    apiVersion: extensions/v1beta1 kind: Deployment metadata: name: hello-world-cpx-2 spec: replicas: 1 template: metadata: name: hello-world-cpx-2 labels: app: hello-world-cpx-2 app1: exports注解:NETSCALER_AS_APP: "True" spec: serviceAccountName: cpx containers: - name: hello-world-cpx-2 image: " queue .io/citrix/citrix-k8s-cpx-ingress:13.0-36.28" securityContext: privilege: True env: - name: "EULA"值:"yes" - name: "KUBERNETES_TASK_ID"值:"" imagePullPolicy: "总是#添加cic作为侧车- name: cic image: " queue .io/citrix/citrix-k8s-ingress-controller:1.1.3" env: - name: "EULA"值:"yes" - name: "NS_IP"值:"127.0.0.1" - name: "NS_PROTOCOL"值:"HTTP" - name: "NS_PORT"值:"80" - name: "NS_DEPLOYMENT_MODE"值:" sidecar " - name: "NS_ENABLE_MONITORING"值:"yes" - name: POD_NAME valueFrom: fieldRef: apiVersion: v1 fieldPath: metadata.name - name: POD_NAMESPACE valueFrom: fieldRef: apiVersion: v1 fieldPath: metadata.namespace args:-——ingess -classes cpx imagePullPolicy: Always apiVersion: v1 kind: Service metadata: name: lb-service-cpx labels: app: lb-service-cpx spec: type: NodePort ports:—port: 80 protocol: TCP name: http targetPort: 80 selector: app: hello-world-cpx-2 
  15. 部署CPX。Oc应用-f cpx-2t。yaml - n tier-2-adc

  16. 验证pod正在运行并且服务已创建。Oc得到pod -n tier-2-adcOc获取服务-n tier-2-adc

  17. 创建一个Ingress从VPX路由到CPX。前端IP应该是ADC上的空闲IP。给文件起一个名字:ingress-cpx-2t.yaml

    apiVersion: extensions/v1beta1 kind: Ingress metadata: name: hello-world-ingress-vpx-2 annotations: kubernetes.io/ Ingress .class: "helloworld" ingress.citrix.com/insecure-termination: "redirect" ingress.citrix.com/frontend-ip: "10.217.101.183" spec: rules: - host: helloworld.com http: paths: - path: backend: serviceName: lb-service-cpx servicePort: 80 
  18. 部署入口。Oc应用-f ingress-cpx-2t。yaml - n tier-2-adc

  19. 在部署CIC之前,编辑YAML文件。根据规范,只要在一级ADC的SNIP上启用管理,就可以添加NSIP或SNIP。

    apiVersion: v1:豆荚元数据:名称:hello-world-cic标签:应用:hello-world-cic规范:serviceAccountName: cpx容器:-名称:hello-world-cic形象:“quay.io / citrix / citrix-k8s-ingress-controller: 1.1.3“env: #集NetScaler NSIP /剪,剪断的HA(管理必须启用)名称:“NS_IP”价值:“10.217.101.176”#为硝基#设置日志级别设置用户名-名称:“NS_ENABLE_MONITORING”价值:“不”,名字:“NS_USER”价值:“nsroot”——名字:“NS_PASSWORD”价值:“nsroot”——名称:"EULA"值:"yes" - name: "LOGLEVEL"值:"DEBUG"参数:-——ingress-classes helloworld -——feature-node-watch false imagePullPolicy: IfNotPresent 
  20. 部署中投。Oc应用-f cic-2t。yaml - n tier-2-adc

  21. 确认所有舱都在运行。Oc得到pod -n tier-2-adc

  22. 编辑本地机器上的hosts文件,使用helloworld.com的条目和Citrix ADC上的VIP,该VIP在从VPX路由到CPX的Ingress YAML文件中指定。

  23. 在浏览器中导航到helloworld.com。”你好Kubernetes !“应该出现。

Citrix Service Mesh Lite

Service Mesh Lite允许引入CPX(或其他Citrix ADC设备)作为内置HAProxy功能的替换。这使我们能够扩展Kubernetes中的N/S功能,并提供E/W流量负载平衡、路由和可观察性。Citrix ADC (MPX, VPX或CPX)可以为E-W流量提供如下好处:

  • 双向TLS或SSL卸载
  • 基于内容的路由允许或阻止基于HTTP或HTTPS头参数的流量
  • 高级负载平衡算法(例如,最少的连接、最少的响应时间等)。
  • 通过测量黄金信号(误差、延迟、饱和度或交通量)来观察东西方向的交通。Citrix ADM的服务图是一个监视和调试微服务的可观察性解决方案。
  • 在这个部署场景中,我们部署Bookinfo应用程序,并观察它在默认情况下的功能。然后我们通过rip替换默认的Kubernetes服务,并使用CPX和VPX代理我们的E/W流量。

Citrix Service Mesh Lite与CPX

要使用OpenShift验证Citrix统一入口部署,请使用带有Citrix ADC VPX或MPX的示例“hello-world”应用程序。OpenShift的默认名称空间“default”用于此部署。

  1. Citrix ADC实例是手工构建的,并使用NSIP/SNIP配置。可以找到在XenServer上安装Citrix ADC在这里

  2. 为这个部署创建一个名称空间。在这个例子中,sml使用。Oc创建命名空间SML

  3. 复制以下YAML,为Bookinfo创建部署和服务。它bookinfo.yaml名称。

################################################################################################## # 细节服务  ################################################################################################## apiVersion: v1:服务元数据:名称:细节标签:应用:细节服务:细节规范:港口:-端口:9080姓名:http选择器:应用:细节——apiVersion:扩展/ v1beta1:部署元数据:名称:details-v1标签:应用程序:详细版:v1规范:副本:1 .模板:元数据:注解:sidecar.istio。io /注入:“false”标签:应用程序:详细版:v1规范:容器:-名称:细节图片:docker.io / maistra examples-bookinfo-details-v1:0.12.0 imagePullPolicy: IfNotPresent港口:——containerPort: 9080  --- ################################################################################################## # 评级服务  ################################################################################################## apiVersion: v1:服务元数据:名称:评级标签:应用程序:ratings service: ratings spec: ports: - port: 9080 name: http selector: app: ratings——apiVersion: extensions/v1beta1 kind: Deployment metadata: name: ratings-v1 labels: app: ratings version: v1 spec: replicas: 1 template: metadata: annotations: sidecar.istio. propertiesio /注入:“false”标签:应用:评级版本:v1规范:容器:-名称:评级图片:docker.io / maistra examples-bookinfo-ratings-v1:0.12.0 imagePullPolicy: IfNotPresent港口:——containerPort: 9080  --- ################################################################################################## # 评价服务  ################################################################################################## apiVersion: v1:服务元数据:名称:评论标签:应用程序:reviews service: reviews spec: ports: - port: 9080 name: http selector: app: reviews——apiVersion: extensions/v1beta1 kind: Deployment metadata: name: reviews-v1 labels: app: reviews version: v1 spec: replicas: 1 template: metadata: annotations: sidecar.istio. propertiesio/inject: "false" labels: app: reviews version: v1 spec: containers: - name: reviews image: docker.io/maistra/examples-bookinfo-reviews-v1:0.12.0 imagePullPolicy: IfNotPresent ports:—containerPort: 9080——apiVersion: extensions/v1beta1 kind: Deployment metadata: name: reviews-v2 labels: app: reviews version: v2 spec: replicas: 1 template: metadata: annotations: sidecar.istio. propertiesio/inject: "false" labels: app: reviews version: v2 spec: containers: - name: reviews image: docker.io/maistra/examples-bookinfo-reviews-v2:0.12.0 imagePullPolicy: IfNotPresent ports:—containerPort: 9080——apiVersion: extensions/v1beta1 kind: Deployment metadata: name: reviews-v3 labels: app: reviews version: v3 spec: replicas: 1 template: metadata: annotations: sidecar.istio. propertiesio /注入:“false”标签:应用:评论版:v3规范:容器:-名称:评论图片:docker.io / maistra examples-bookinfo-reviews-v3:0.12.0 imagePullPolicy: IfNotPresent港口:——containerPort: 9080  --- ################################################################################################## # Productpage服务  ################################################################################################## apiVersion: v1:服务元数据:名称:productpage-service规范:type: NodePort ports: - port: 80 targetPort: 9080 selector: app: productpage——apiVersion: extensions/v1beta1 kind:部署元数据:name: productpage-v1 labels: app: productpage version: v1 spec: replicas: 1 template: metadata: annotation: sidecar.istio. properties。application: productpage version: v1 spec: containers: - name: productpage image: docker.io/maistra/examples-bookinfo-productpage-v1:0.12.0 imagePullPolicy: IfNotPresent ports: - containerPort: 9080——
  1. 部署bookinfo。SML命名空间中的Yaml。Oc应用-f bookinfo。yaml - n sml

  2. 复制并部署映射到产品页面服务的Ingress文件。该文件可以命名ingress-productpage.yaml.前端IP应该是Citrix ADC VPX/MPX上的免费VIP。

    apiVersion: extensions/v1beta1 kind: Ingress metadata: name: productpage-ingress annotations: kubernets .io/ Ingress .class: "bookinfo" ingress.citrix.com/insecure-termination: "redirect" ingress.citrix.com/frontend-ip: "10.217.101.182" spec: rules: - host: bookinfo.com http: paths: - path: backend: serviceName: productpage-service servicePort: 80 

Oc应用-f ingress-productpage。yaml - n sml

  1. 在sml命名空间中为RBAC文件复制以下YAML并部署它。名字的文件rbac-cic-pp.yaml因为它是用于CIC前面的产品页面微服务。

    apiVersion: rbac.authorization.k8s. type: ClusterRoleio/v1beta1元数据:name: cpx规则:—apiGroups:[""]资源:["services", "endpoints", "ingress ", "pods", "secrets", "routes", "routes/status", "nodes", "namespaces"]动词:["*"]—apiGroups: ["extensions"]资源:["ingress ", "ingress /status"]动词:["*"]—apiGroups: ["citrix.com"]资源:["rewritepolicies", "vips"]动词:["*"]—apiGroups: ["apps"]资源:["部署"]动词:["*"]["customresourcedefinitions"]动词:["get", "list", "watch"]——kind: ClusterRoleBinding apiVersion: rbac.authorization.k8s. io"]资源:["customresourcedefinitions"]roleRef: apiGroup: rbac.authorization.k8s. io/v1beta1 metadata: name: cpx—kind: ServiceAccount name: cpx namespace: sml apiVersion: rbac.authorization.k8s. io type: ClusterRole name: cpx subjects:—kind: ServiceAccount name: cpx namespace: smlio/v1——apiVersion: v1 kind: ServiceAccount metadata: name: cpx namespace: sml 

Oc应用-f rbac-cic-pp。yaml - n sml

  1. 提升服务帐户权限,部署CIC和CPX。Oc adm policy add-sc -to-user privilege system:serviceaccount:sml:cpx

  2. 将bookinfo.com映射到中指定的前端IP,在本地机器上编辑hosts文件ingress-productpage.yaml

  3. 复制并部署带有CIC的产品页面。名字的文件cic-productpage.yaml. NS_IP应该是Tier 1 ADC的NS_IP。

    apiVersion: v1:豆荚元数据:名称:productpage-cic标签:应用:productpage-cic规范:serviceAccountName: cpx容器:-名称:productpage-cic形象:“quay.io / citrix / citrix-k8s-ingress-controller: 1.1.3“env: #集NetScaler NSIP /剪,剪断的HA(管理必须启用)名称:“NS_IP”价值:“10.217.101.176”#为硝基#设置日志级别设置用户名-名称:“NS_ENABLE_MONITORING”价值:“不”,名字:“NS_USER”价值:“nsroot”——名字:“NS_PASSWORD”价值:“nsroot”——名称:EULA值:yes—name: LOGLEVEL值:DEBUG—name: NS_APPS_NAME_PREFIX值:BI- args:———ingress-classes bookinfo -——feature-node-watch false imagePullPolicy: IfNotPresent 

Oc应用-f cic-productpage。yaml - n sml

  1. 导航到bookinfo.com并单击普通用户。产品页面应该包含细节、评论和评级,这些都是其他的微服务。HAProxy负责在微服务(东西)之间路由通信。

  2. 删除详细信息前面的服务。刷新Bookinfo网页,注意到产品页面无法拉出微服务以获取详细信息。Oc删除服务详细信息-n SML

  3. 复制并部署一个无头服务,以便从产品页面到详细信息的流量通过CPX。将此文件命名为detailsheadless.yaml。

    apiVersion: v1 kind: Service metadata: name: details spec: ports:—port: 9080 name: http selector: app: cpx 

Oc应用-f detailheadless。yaml - n sml

  1. 复制并部署一个新的详细信息服务,它应该是names detailsservice。Yaml,坐在前面的细节微服务。

    apiVersion: v1 kind:服务元数据:name: details- Service labels: app: details- Service Service: details- Service spec: clusterIP: None ports: - port: 9080 name: http selector: app: details 

Oc应用-f detailsservice。yaml - n sml

  1. 使用入口公开detail -service并部署它。调用这个文件detailsingress.yaml。

    apiVersion: extensions/v1beta1 kind: Ingress metadata: name: details- Ingress annotations: kubernets .io/ Ingress .class: "cpx" ingress.citrix.com/insecure-port: "9080" spec: rules:—host: details http: paths:—path: backend: serviceName: details-service servicePort: 9080 

Oc应用-f detailsingress。yaml - n sml

  1. 复制并部署CPXEastWest。yaml文件。

    apiVersion: extensions/v1beta1 kind: Deployment metadata: name: cpx labels: app: cpx service: cpx spec: replicas: 1 template: metadata: name: cpx labels: app: cpx service: cpx注解:NETSCALER_AS_APP: "True" spec: serviceAccountName: cpx containers: - name: views-cpx image: " queue .io/citrix/citrix-k8s-cpx-ingress:13.0-36.28" securityContext: privilege: True env: - name: "EULA"值:"yes" - name: "KUBERNETES_TASK_ID"值:"" - name: "MGMT_HTTP_PORT"值:"9081" ports: - name:http containerPort: 9080 -名称:https containerPort: 443 -名称:nitro-http containerPort: 9081 -名称:nitro-https containerPort: 9443 imagePullPolicy:总是#添加中投的双轮马车,名称:中投公司形象:“quay.io / citrix / citrix-k8s-ingress-controller: 1.2.0“env: -名称:“EULA”价值:“是的”,名字:“NS_IP”价值:“127.0.0.1”——名字:“NS_PROTOCOL”价值:“http”——名字:“NS_PORT”价值:“80”,名字:“NS_DEPLOYMENT_MODE”价值:“双轮马车”——名字:“NS_ENABLE_MONITORING”价值:“是的”,名称:POD_NAME valueFrom: fieldRef: apiVersion: v1 fieldPath: metadata.name - name: POD_NAMESPACE valueFrom: fieldRef: apiVersion: v1 fieldPath: metadata.namespace args: -——ingress-classes cpx imagePullPolicy: Always 

oc apply -f CPXEastWest。yaml - n sml

  1. 刷新bookinfo.com,详细信息将从详细信息微服务中拉出。日志含义CPX部署代理EW流量成功。

Citrix Service Mesh Lite与VPX/MPX

  1. 执行以下命令删除作为EW代理的CPX。部署新文件,将VPX配置为产品页面和详细微服务之间的EW代理。Oc delete -f detailheadless。yaml - n smlOc删除-f detailsservice。yaml - n sml删除-f detailsingress。yaml - n smloc delete -f CPXEastWest。yaml - n sml

  2. 复制并部署一个服务,将该文件命名为detailstoVPX。yaml,将流量从产品页面发送回VPX。IP参数应该是Citrix ADC VPX/MPX上的一个免费VIP。

    ——kind: "Service" apiVersion: "v1" metadata: name: "details" spec: ports: - name: "details" protocol: "TCP" port: 9080——kind: "Endpoints" apiVersion: "v1" metadata: name: "details" subsets: - addresses: - ip: "10.217.101.182" # MPX端口入接口ip: - port: 9080 name: "details" 

oc apply -f detailstoVPX。yaml - n sml

  1. 重新部署detailsservice。Yaml前面的细节微服务。Oc应用-f detailsservice。yaml - n sml

  2. 复制并部署Ingress以向VPX公开细节微服务。这是名字detailsVPXingress.yaml.前端IP应该与第1层ADC上的VIP匹配。

    apiVersion: extensions/v1beta1 kind: Ingress metadata: name: details- Ingress annotations: kubernets .io/ Ingress .class: "vpx" ingress.citrix.com/insecure-port: "9080" ingress.citrix.com/frontend-ip: "10.217.101.182" spec: rules: - host: details http: paths: - path: backend: serviceName: details-service servicePort: 9080 

oc apply -f detailsVPXingress.yaml

  1. 刷新bookinfo.com,详细信息将从详细信息微服务中拉出。日志含义VPX部署代理EW流量成功。

服务迁移到Citrix ADC使用路由或入口类在Openshift

带路由分片的业务迁移

Citrix入口控制器(CIC)充当路由器,并将流量重定向到各个豆荚,以在各个可用豆荚之间分配传入的流量。

这个迁移过程也可以是集群升级过程的一部分,从遗留的Openshift拓扑到使用Citrix CNC、CIC和CPX组件进行集群迁移和升级过程的自动化部署。

此解决方案可通过两种方法实现:

  • CIC路由器插件(Pod)
  • Openshift内部的CPX路由器(Sidecar)

下面将描述这两种方法以及迁移示例。

静态路由(默认)-通过静态路由将Openshift主机子网映射到外部ADC。

静态路由在使用HAProxy的遗留Openshift部署中很常见。当将服务从一个服务代理迁移到另一个服务代理时,静态路由可以与Citrix CNC、CIC和CPX并行使用,而不会中断正在运行的集群中部署的名称空间。

Citrix ADC静态路由配置示例:

获取hostsubnet (Openshift Cluster)代码片段10.x.x 10.128.0.0/2310.x.x 10.130.0.0/2310.x.x 10.129.0.0/23 show route(外部Citrix VPX) snippet 10.128.0.0 255.255.254.010.x.x STATIC 10.129.0.0 255.255.254.010.x.x STATIC 10.130.0.0 255.255.254.0x静态

汽车路线-使用CNC (Citrix节点控制器)自动化外部路由到定义的路由碎片。

可以通过两种方式将Citrix ADC与OpenShift集成,这两种方式都支持OpenShift路由器分片。

路线类型

  • 不安全-外部负载均衡器到CIC路由器,HTTP流量不加密。
  • 安全边缘-向CIC路由器终止TLS的外部负载平衡器。
  • 安全直通—到目的地终止TLS的外部负载平衡器
  • 安全的重加密外部负载均衡器到CIC路由器终止TLS。CIC路由器使用TLS加密到目的地。

部署示例#1:作为OpenShift路由器插件部署的CIC

对于路由,我们使用路由分片的概念。在这里,CIC充当一个Router,并将流量重定向到各个豆荚,在各个可用的豆荚中分配传入的流量。CIC作为Citrix ADC MPX或VPX的路由器插件安装,部署在集群外部。

Citrix组件:

  • VPX—向DNS提供集群服务的入口ADC。
  • CIC -通过CNC路由向外部Citrix ADC提供ROUTE_LABELS和NAMESPACE_LABELS。

路由碎片的YAML文件参数示例:

Citrix Openshift源文件位于Github这里

  1. 添加以下环境变量ROUTE_LABELS和NAMESPACE_LABELS,值为kubernetes label格式。CIC中的路由分片表达式NAMESPACE_LABELS是一个可选字段。如果使用,它必须匹配路由中提到的命名空间标签。yaml文件。

    env:—name: "ROUTE_LABELS"值:"name=apache-web"—name: "NAMESPACE_LABELS"值:"app=hellogalaxy"
  2. 通过route创建的路由。yaml将具有与CIC中的路由分片表达式匹配的标签。

    元数据:名称:apache-route命名空间:hellogalaxy标签:名称:apache-web
  3. 使用service.yaml公开服务。

    metadata: name: apache-service spec: type: NodePort #type=LoadBalancer ports: - port: 80 targetPort: 80 selector: app: apache . type: LoadBalancer
  4. 部署一个简单的web应用程序,它的选择器标签与service.yaml中的选择器标签相匹配。

部署示例#2:将Citrix ADC CPX部署为OpenShift路由器

Citrix ADC CPX可以与集群中的Citrix入口控制器一起部署为OpenShift路由器。有关在集群中部署CPX或CIC作为路由器的更多步骤,请参见在Citrix ADC中启用OpenShift路由分片支持

Citrix组件:

  • VPX—向DNS提供集群服务的入口ADC。
  • CIC——向外部Citrix ADC提供ROUTE_LABELS和NAMESPACE_LABELS来定义路由碎片。
  • CNC -为碎片提供到外部负载均衡器的自动路由配置。
  • CPX——在Openshift集群中提供Openshift路由。

带有入接口类注释的服务迁移

Ingress Classes Annotations使用了Ingress Classes annotation的概念,我们给Ingress添加了带有Ingress class信息的annotation,这将有助于将流量从外部ADC重定向到特定的pod/节点。

入口类的YAML文件参数示例:**

Citrix Ingress源文件位于Github这里

Env: args: -——ingress-classes VPX

Ingress配置文件还应该在元数据中有一个kubernets .io/ Ingress .class注释字段,该字段将在创建时与CIC Ingress -classes args字段匹配。

示例入口VPX部署,其中包含“入口。* *类”例子

输入元数据:name: Ingress -vpx注解:kubernets .io/ Ingress .class: "vpx"

Citrix指标出口国

您可以使用Citrix ADC指标导出器和Prometheus-Operator来监视Citrix ADC VPX或CPX入口设备和Citrix ADC CPX(东西向)设备。看到使用Prometheus和Grafana查看Citrix adc的度量