自动化完成本地服务到ci上k8s环境服务的请求转发

2019/11/25 其他 共 1905 字,约 6 分钟
梦境迷离

完成映射后可以方便开发。当本地不需要调试的服务而又需要被依赖导致必须启动,此时可以考虑使用k8s测试环境的服务。

以k8s-ads-tracking开头的实例 service1服务为例

基本流程

1.查询所有运行的pods

  • kubectl -n k8s-ads-tracking get pods –kubeconfig=/Users/name/project-conf/k8s-config

查询k8s-ads-tracking开头的 pods 携带kubernetes验证配置文件 /Users/name/project-conf/k8s-conf

2.进入运行的pod 选择service1服务实例

  • kubectl -n k8s-ads-tracking exec -ti k8s-ads-tracking-service1-85f4ff5fcb-9b9bs bash –kubeconfig=/Users/name/project-conf/k8s-config

3.查看service1实例的网络连接

  • netstat -antp | grep 1

找到server-1的端口 19000

4.映射端口到本地

  • kubectl -n k8s-ads-tracking port-forward k8s-ads-tracking-service1-85f4ff5fcb-9b9bs 19000:19000 –kubeconfig=/Users/name/project-conf/k8s-config

完成将本地19000端口映射到k8s环境的k8s-ads-tracking-server1-85f4ff5fcb-9b9bs实例上的19000端口上

5.日志

Forwarding from 127.0.0.1:19000 -> 19000
Forwarding from [::1]:19000 -> 19000
Handling connection for 19000
Handling connection for 19000

实现基本的自动化

#!/bin/bash

set -x


#k8s命名控制
namespace=$1
#你需要转发的服务名
serviceName=$2
instance=`kubectl -n $namespace get pods --kubeconfig=/Users/liguobin/project-conf/k8s-config | grep -w $serviceName | awk '{print $1}' | head -1`

#端口 19000
sourcePort=$3
#19000
targetPort=$4

# 兼容 k8s-master、k8s-ads-tracking两种namespace
array=(${instance//-/ })
if [[ "${#array[*]}" -eq 6 ]];then

	namespace=${array[0]}-${array[1]}-${array[2]}
	serviceName=${array[3]}
	instanceId=${array[4]}-${array[5]}

else

	namespace=${array[0]}-${array[1]}
	serviceName=${array[2]}
	instanceId=${array[3]}-${array[4]}

fi

kubectl -n $namespace port-forward $namespace-$serviceName-$instanceId $sourcePort:$targetPort --kubeconfig=/Users/liguobin/project-conf/k8s-config

  1. 将上述脚本保存为kubectl-forward-port.sh
  2. 打开 vi ~/.bash_profile
  3. 新增 alias kbopm=”bash kubectl-forward-port.sh k8s-ads-tracking opm 19000 19000”,若不是当前目录,kubectl-forward-port.sh前加路径
  4. 刷新 source ~/.bash_profile
  5. 执行 kbopm 完成opm的端口自动转发,本地请求localhost:19000时会被转发到k8s上的k8s-ads-tracking命名空间的存活的opm服务商
  6. 直接使用bash kubectl-forward-port.sh k8s-ads-tracking opm 19000 19000,以方便使用不同的服务

文档信息

Search

    Table of Contents