istio服务必须根据另一云上运行的knative服务发送的响应标头进行路由。如何实现

时间:2019-05-28 03:44:29

标签: istio

我有2个集群。在一个群集中,knative服务正在运行,而在另一群集中,则配置了istio。 多个提供商会将请求发送给knative,并应相应地获得响应。 Knative服务正在正常工作并返回响应。

问题-> Istio应该监听响应,然后根据响应头将数据包路由到外部提供程序。

我知道,我们可以配置服务条目和虚拟服务以允许数据包外传。但是我怎样才能使istio服务侦听响应和提取头。基于该标头构造通用服务条目和虚拟服务

本地ping服务代码

import os
import json
import time
from flask import Flask , request

app = Flask(__name__)

@app.route('/ping',methods=['POST'])

def ping():
    req_data = request.get_json(force=True)
    ip = req_data["ip"]
    #validate whether user has passed IP string
    if not ip.strip():
        data = {
                 'status': 'ERROR',
                 'msg': 'IP string is empty. Pass the Json with IP value',
                 'ip': ip
        }
        resp = json.dumps(data)
        return '{}\n'.format(resp)
    res = os.system("ping -c 2 " + ip)
    if res == 0:
        data = {
                 'status': 'SUCCESS',
                 'msg': 'HOST is pinging',
                 'ip': ip
        }
        resp = json.dumps(data)
        time.sleep(5)
        return '{}\n'.format(resp)
    else:
        data = {
                 'status': 'ERROR',
                 'msg': 'HOST is not reachable',
                 'ip': ip
        }
        resp = json.dumps(data)
        return '{}\n'.format(resp)

if __name__ == "__main__":
    app.run(debug=True,host='0.0.0.0',port=int(os.environ.get('PORT', 8080)))

执行-> Istio群集,我正在执行curl命令以对在本地群集中运行的ping服务执行命令。我也可以从邮递员或浏览器进行测试。

[root @ svpod7mgmt001〜]#curl -X POST --header“ Host:example.com” http://10.0.41.121/ping -d'{“ ip”:“ 10.0.41.96”}' {“状态”:“成功”,“信息”:“主机正在pinging”,“ ip”:“ 10.0.41.96”}

0 个答案:

没有答案