基于图形化Kube Forwarder工具映射OpenShift
痛点描述
1、在访问openshift的应用时,我们一般通过域名的方式进行访问,域名再解析IP至router节点或router的F5节点,解析的方式要么通过本机的DNS server解析,要么通过本机自己配置的hosts解析。
2、当一个开发在本地调试代码时,需要一个mysql环境,在以前要么在本机搭建一个mysql,要么虚拟机部署一个mysql,太慢了,我们可以直接在openshift上部署一个,多方便;当访问类似像mysql这样tcp访问方式的应用是,openshift的router是不支持的(haproxy是可以配置mode从http调整为tcp,但是openshift我还没找到可以配置的地方),那本机就没法访问到mysql了。
解决方案
接下来介绍下解决上诉问题的工具:Kube Forwarder
a它能够解决啥问题呢?
举个例子,我用openshift的registry-console来说明,正常情况下,我访问registry-console域名是这样的
b
那我用Kube Forwarder来访问,使用本机地址127.0.0.1
c
特点如下
d使用方法
去官网下载:https://kube-forwarder.pixelpoint.io/
有很多种版本,window,Linux,macOS提供下载。安装后开始演示,我的是macOS,以我的为例。
-
会提示你添加OCP集群:
image.png -
会读取本机之前登陆过的OCP信息,可以直接用,不过我选择手动添加
image.png - 这里需要你输入 .kube/config文件的内容,你可以去之前登陆过的节点获取,或者直接去master节点copy出来。
[root@master01 ~]# cat .kube/config
image.png
-
.kube/config其实包含了很多用户的登陆信息,并且还包含了每个用户多次登陆的信息,不过因为openshift的对用户的token是有超时时间的,可能就不能用,所以在选择某个用户前需要先用oc命令登录下openshift,我用之前admin的登录token就没法登录上。我选择用系统默认的system:admin去登录,这个token是不会超时失效的。
image.png -
接下来添加资源,也就是openshift的应用了。
image.png -
选择该openshift集群对应的项目
image.png -
选择该项目的对应资源类型,pod、svc、deployment,有时候需要具体调试某个pod的时候就需要选择pod了。非常有用。
image.png -
选择具体应用
image.png -
指定端口,比如registry-console的svc端口为9000,我映射成本地的9000端口
image.png -
配置好后,默认是没有运行的,点击右边的运行
image.png -
看到已经正在运行了
image.png -
访问127.0.0.1:9000端口就可以访问到registry-console了
image.png - 需要注意的是registry-console是走了openshift的oauth认证的,需要配置下oauthclient,添加下新的域名:127.0.0.1:9000,要不然访问会被拒绝。
[root@master01 ~]# oc get oauthclient
NAME SECRET WWW-CHALLENGE TOKEN-MAX-AGE REDIRECT URIS
cockpit-oauth-client user6Th43Kdpow3DyN4duWUlWSWskrx7V3D1K4UYmgSX003xaUI5E5iMAXKLgdlxup7n FALSE default https://registry-console-default.ocp311.com
openshift-browser-client 1c69_efAfTo84CMvgqqsKt45XaWuqD2diG3LygJwfvg FALSE default https://cluster.ocp311.com:8443/oauth/token/display
openshift-challenging-client TRUE default https://cluster.ocp311.com:8443/oauth/token/implicit
openshift-console 1TY6T42vxacyFDnFSa6HS7pFUhya1AdW FALSE default https://console.ocp311.com/
openshift-web-console FALSE default https://cluster.ocp311.com:8443/console/
[root@master01 ~]# oc edit oauthclient cockpit-oauth-client
oauthclient.oauth.openshift.io/cockpit-oauth-client edited
# Please edit the object below. Lines beginning with a '#' will be ignored,
# and an empty file will abort the edit. If an error occurs while saving this file will be
# reopened with the relevant failures.
#
apiVersion: oauth.openshift.io/v1
kind: OAuthClient
metadata:
annotations:
kubectl.kubernetes.io/last-applied-configuration: |
{"apiVersion":"oauth.openshift.io/v1","kind":"OAuthClient","metadata":{"annotations":{},"labels":{"createdBy":"registry-console-template"},"name":"cockpit-oauth-client","namespace":"","respondWithChallenges":false},"redirectURIs":["https://registry-console-default.ocp311.com"],"secret":"user6Th43Kdpow3DyN4duWUlWSWskrx7V3D1K4UYmgSX003xaUI5E5iMAXKLgdlxup7n"}
creationTimestamp: 2019-03-28T15:14:18Z
labels:
createdBy: registry-console-template
name: cockpit-oauth-client
resourceVersion: "20941760"
selfLink: /apis/oauth.openshift.io/v1/oauthclients/cockpit-oauth-client
uid: 2836c416-516c-11e9-a9dd-005056860b09
redirectURIs:
- https://registry-console-default.ocp311.com
- http://127.0.0.1:9000
secret: user6Th43Kdpow3DyN4duWUlWSWskrx7V3D1K4UYmgSX003xaUI5E5iMAXKLgdlxup7n
其他类似的工具
- kubefwd
这个工具和Kube Forwarder类似,不过没有图形化,并且只能映射到svc,不能映射到pod和deployment。没有图形化管理功能,功能不够多。
image.png
https://github.com/txn2/kubefwd?utm_sq=g3bb5g3o1j - 另外一个就是openshift自带的oc port-forward 命令,同样的没有图形化管理功能,功能不够多。