金鱼哥RHCA回忆录:DO280OpenShift网络--创建router

简介: 第三章 OpenShift网络--创建router
🎹 个人简介:大家好,我是 金鱼哥,CSDN运维领域新星创作者,华为云·云享专家,阿里云社区·专家博主
📚个人资质: CCNA、HCNP、CSNA(网络分析师),软考初级、中级网络工程师、RHCSA、RHCE、RHCA、RHCI、ITIL😜
💬格言:努力不一定成功,但要想成功就必须努力🔥

🎈支持我:可点赞👍、可收藏⭐️、可留言📝

@[toc]

📜OpenShift route概述

OpenShift service允许在OpenShift中的pod之间进行网络访问;

OpenShift routes允许从OpenShift外部对pods进行网络访问。

在这里插入图片描述

路由概念上是通过连接公网IP和DNS主机名访问内网service IP。在实践中,为了提高性能和减少延迟,OpenShift route通过OpenShift创建的网络直接连接到pod,使用该服务只查找endpoint,service只是协助查询Pod地址。

OpenShift 路由功能由router service提供,该服务在OpenShift实例中作为一个pod运行,可以像任何其他常规pod一样伸缩和复制。router service基于开源软件HAProxy实现。

OpenShift route配置的公共DNS主机名需要指向运行router的节点的公共IP地址。route pod与常规应用程序pod不同,它绑定到节点的公共IP地址,而不是内部pod网络。这通常使用DNS通配符配置。

- apiVersion: v1
  kind: Route                            # 声明为route类型
  metadata:
    creationTimestamp: null
    labels:
      app: quoteapp
    name: quoteapp                        # 路由器名字
  spec:
    host: quoteapp.apps.lab.example.com    # 与route关联的FQDN,必须预先配置,以解析到OpenShift route pod运行的节点的IP地址
    port:
      targetPort: 8080-tcp
  to:                                    # 一个对象,该对象声明此route指向的资源类型(在本例中是OpenShift service),以及该资源的名称(quoteapp)
    kind: Service
    name: quoteapp

不同资源类型可以使用相同的名称,如一个名为quoteapp的route可以指向一个名为quoteapp的service。

service通过selector与pod的label进行匹配,router通过name与service的name匹配。


📜创建route

创建route最简单和推荐的方法是使用oc expose命令,将service资源名称作为输入参数。--name选项可用于控制route资源的名称,--hostname选项可用于为route提供自定义主机名。

示例:

[user@demo ~]$ oc expose service quote \
--name quote --hostname=quoteapp.apps.lab.example.com

从模板或不带--hostname参数的oc expose命令创建的路由,命名方式为:

<route-name>-<project-name>.<default-domain>

解释

route-name:route的名称,或原始资源的名称;

project-name:包含资源的项目的名称;

default-domain:该值是在OpenShift master上配置的,它对应于作为安装OpenShift先决条件列出的通配符DNS域。


例如,在OpenShift集群中名为test的project中创建一条名为quote的路由,其中子域为apps.example.com,则FQDN为quote-test.apps.example.com

注意:承载通配符域的DNS服务器不知道任何route的主机名,它只将任何名称解析为已配置的ip。只有OpenShift route知道route主机名,将每个主机都当作HTTP虚拟主机。无效的通配符域主机名,即不与任何route对应的主机名,将被OpenShift路由器阻塞。

通过向oc create提供JSON或YAML资源定义文件,也可以像其他OpenShift资源一样创建route资源。

oc new-app命令在从容器镜像、Dockerfiles或应用程序源代码构建pod时不创建route资源。

oc new-app命令不知道pod是否打算从OpenShift实例外部访问。当oc new-app命令从模板创建一组pod时,没有什么可以阻止模板将路由资源包含到应用程序中。


📜查找默认subdomain

默认路由子域是在OpenShift配置文件master-config.yaml中的routingConfig字段中定义,使用关键字subdomain。

routingConfig:
  subdomain: apps.example.com

默认情况下,OpenShift HAProxy route绑定到主机端口80 (HTTP)和443 (HTTPS)。route必须放置在这些端口不使用的节点上。或者,可以通过设置ROUTER_SERVICE_HTTP_PORT和ROUTER_SERVICE_HTTPS_PORT环境变量来配置路由器监听其他端口.

路由器支持以下协议:

  • HTTP
  • HTTPS with SNI
  • WebSockets
  • TLS with SNI

📜routing类型和选项

路由可以是安全的,也可以是非安全的。安全route提供了使用几种类型的TLS方式来向客户端提供证书的能力。不安全路由是最容易配置的,因为它们不需要密钥或证书,但是安全路由会加密进出pod的流量。

在创建安全路由之前,需要生成TLS证书。

示例:如下步骤创建名为test.example.com的路由创建一个简单的自签名证书。

  • 使用openssl命令创建私钥:
[user@demo ~]$ openssl genrsa -out example.key 2048
  • 使用生成的私钥创建证书签名请求(CSR):
[user@demo ~]$ openssl req -new -key example.key -out example.csr -subj "/C=US/ST=CA/L=Los Angeles/O=Example/OU=IT/CN=test.example.com"
  • 使用密钥和CSR生成证书
[user@demo ~]$ openssl x509 -req -days 366 -in example.csr -signkey example.key -out example.crt
  • 当证书准备好时,创建一个edge-terminated的路由
[user@demo ~]$ oc create route edge --service=test \
--hostname=test.example.com \
--key=example.key --cert=example.crt

📜通配符子域

wildcard policy允许用户定义domain中所有主机的route。route可以使用wildcardPolicy字段将wildcard policy指定为其配置的一部分。OpenShift路由器支持通配符路由,通过设置路由器部署配置中的ROUTER_ALLOW_WILDCARD_ROUTES环境变量为true,从而可将wildcardPolicy属性设置为子域的任何route都由路由器提供服务。路由器根据route的通配符策略暴露相关的service。

示例:如下下示例表示对于三个不同的路由,a.lab.example.com、b.lab.example.com和c.lab.example.com,它们应该路由到一个名为test的OpenShift服务,可以使用通配符策略配置路由。

  • 将路由器作为集群管理用户处理通配符路由
[user@demo ~]$ oc scale dc/router --replicas=0
[user@demo ~]$ oc set env dc/router ROUTER_ALLOW_WILDCARD_ROUTES=true
[user@demo ~]$ oc scale dc/router --replicas=1
  • 使用通配符策略创建新路由
[user@demo ~]$ oc expose svc test --wildcard-policy=Subdomain \
--hostname='www.lab.example.com'

📜管理route

在master节点上,在default中查找router

[root@master]# oc project default
[root@master]# oc get pods

在master节点上,检查路由器环境变量,以找到运行在pod中的HAProxy进程的连接参数

root@master]# oc env pod router-1-32toa --list | tail -n 6
ROUTER_SERVICE_NAME=router
ROUTER_SERVICE_NAMESPACE=default
ROUTER_SUBDOMAIN=
STATS_PASSWORD=shRxnWSdn9
STATS_PORT=1936
STATS_USERNAME=admin

提示:当创建路由器时,STATS_PASSWORD变量中的密码是随机生成的。STATS_USERNAME和STATS_PORT变量有固定的默认值,但是它们都可以在路由器创建时更改。


在router运行的节点上,配置firewall-cmd以打开STATS_PORT变量指定的端口。

[root@node ~]# firewall-cmd --permanent --zone=public --add-port=1936
[root@node ~]# firewall-cmd --reload

打开web浏览器并访问HAProxy statistics URL 为 http://nodeIP:STATS_PORT/。

在User Name字段中输入STATS_USERNAME的值,在Password字段中输入STATS_PASSWORD的值,然后单击OK。则会显示的HAProxy metrics页面。


💡总结

RHCA认证需要经历5门的学习与考试,还是需要花不少时间去学习与备考的,好好加油,可以噶🤪。

以上就是【金鱼哥】对 第三章 OpenShift网络--创建router 的简述和讲解。希望能对看到此文章的小伙伴有所帮助。

💾 红帽认证专栏系列:
RHCSA专栏: 戏说 RHCSA 认证
RHCE专栏: 戏说 RHCE 认证
此文章收录在RHCA专栏: RHCA 回忆录

如果这篇【文章】有帮助到你,希望可以给【金鱼哥】点个赞👍,创作不易,相比官方的陈述,我更喜欢用【通俗易懂】的文笔去讲解每一个知识点。

如果有对【运维技术】感兴趣,也欢迎关注❤️❤️❤️ 【金鱼哥】❤️❤️❤️,我将会给你带来巨大的【收获与惊喜】💕💕!

目录
相关文章
|
运维 监控 网络协议
|
JSON 运维 负载均衡
金鱼哥RHCA回忆录:DO280OpenShift网络--创建router练习与章节实验
第三章 OpenShift网络--创建router练习与章节实验
183 0
金鱼哥RHCA回忆录:DO280OpenShift网络--创建router练习与章节实验
|
运维 Kubernetes 负载均衡
金鱼哥RHCA回忆录:DO280OpenShift网络--平台网络实现
第三章 OpenShift网络--平台网络实现
193 0
金鱼哥RHCA回忆录:DO280OpenShift网络--平台网络实现
|
运维 网络协议 测试技术
金鱼哥RHCA回忆录:CL210管理OPENSTACK网络--网络配置选项+章节实验
第六章 管理OPENSTACK网络--网络配置选项+章节实验
504 1
金鱼哥RHCA回忆录:CL210管理OPENSTACK网络--网络配置选项+章节实验
|
9天前
|
网络协议 算法 Linux
【Linux】深入探索:Linux网络调试、追踪与优化
【Linux】深入探索:Linux网络调试、追踪与优化
|
3天前
|
Linux Shell 网络安全
网络安全中Dos和linux常用命令总结
本篇是对网安学习中,常用的命令做一个图文与命令示例,并对一些比较重要的dos和shell命令进行总结,方便自己后续学习进行查询,并希望能够给更多人有一个总结命令和了解命令的地方.
28 5
|
6天前
|
Ubuntu 网络协议 Linux
|
6天前
|
JSON 网络协议 Linux
Linux ip命令:网络的瑞士军刀
【4月更文挑战第25天】
10 1
|
7天前
|
缓存 网络协议 Linux
Linux 网络命令大全,详细归纳!
【4月更文挑战第24天】
34 3
Linux 网络命令大全,详细归纳!
|
8天前
|
网络协议 JavaScript Linux
Linux常用网络指令(下)
Linux常用网络指令(下)
23 0