🎹 个人简介:大家好,我是 金鱼哥,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 回忆录
如果这篇【文章】有帮助到你,希望可以给【金鱼哥】点个赞👍,创作不易,相比官方的陈述,我更喜欢用【通俗易懂】的文笔去讲解每一个知识点。
如果有对【运维技术】感兴趣,也欢迎关注❤️❤️❤️ 【金鱼哥】❤️❤️❤️,我将会给你带来巨大的【收获与惊喜】💕💕!