我有以下VirtualService:
#include <stdio.h>
/*Define structure
------------------*/
struct date
{
int month;
int day;
int year;
};
/*Declare function prototypes
-----------------------------*/
struct date get_date (struct date);
void calc_date_number (struct date);
void main (void)
{
struct date udate, calc_date;
printf("Welcome to the Date to Day-of-the-Week program.\n\nThe program will give the day of the
for any date from 1/1/1900.\n\n");
get_date (udate);
calc_date_number (calc_date);
}
/*Define functions get_date
----------------------------*/
struct date get_date (struct date udate)
{
do
{
printf ("Enter the date (mm/dd/yyyy): ");
scanf ("%d/%d/%d", &udate.month, &udate.day, &udate.year);
if (udate.month < 1 || udate.month > 12)
printf ("Invalid month. Please re-enter date.\n\n");
else if (udate.day <1 || udate.day > 31)
printf ("Invalid day. Please re-enter date.\n\n");
else if (udate.year < 1900)
printf ("Invalid year. Please re-enter date.\n\n");
else if (udate.month ==2 && udate.day == 29 && (udate.year !=0 && (udate.year == 0 ||
udate.year % 400 != 0)))
printf ("Invalid date. Not a leap year. Please re-enter date.\n\n");
}while (udate.month < 1 || udate.month > 12 || udate.day < 1 || udate.day > 31 || udate.year <
1900);
return udate;
} /*End get_date*/
/*Define function calc_date_number
----------------------------------*/
void calc_date_number (struct date calc_date)
{
printf("calc_date is %i %i %i\n\n", calc_date.month, calc_date.day, calc_date.year);
long int n;
if (calc_date.month <= 2)
{
calc_date.year = calc_date.year - 1;
calc_date.month = calc_date.month + 13;
}
else
{
calc_date.month = calc_date.month + 1;
}
n = 1461 * calc_date.year / 4 + 153 * calc_date.month / 5 + calc_date.day;
}/*End function calc_date_number*/
我希望/ postauth端点的调用将路由到postauth服务,而/ app端点的调用将路由到sa-frontend服务。发生的是,所有呼叫最终都被路由到文件中的第一个路由器,在上述情况下,路由到postauth,但是如果我更改顺序,它将变成sa-frontend
所有服务和部署都在同一个命名空间(dev)中。
这是预期的行为吗?我的解释是,以上内容应只允许调用/ postauth和/ app端点,而不能将其路由到各自的服务。
答案 0 :(得分:0)
根据HTTPMatchRequest中的documentaion for Istio 1.3,您可以找到
字段:名称,类型: string
我在1.1和1.3版本之间比较了这些设置: 在版本1.3.4中,该伞兵正常工作,并且路由使用以下名称传播:
{}
在1.1版中,它无法正常工作。在这种情况下,请使用适当的release验证您的设置。
此外,请参阅Troubleshooting部分。
您可以验证集群中已应用的配置(更改),例如: Envoy实例的配置方式:
[
{
"name": "http.80",
"virtualHosts": [
{
"name": "*:80",
"domains": [
"*",
"*:80"
],
"routes": [
{
"name": "ala1",
"match": {
"prefix": "/hello1",
"caseSensitive": true
},
"route": {
"cluster": "outbound|9020||hello1.default.svc.cluster.local",
.
.
.
{
"name": "ala2",
"match": {
"prefix": "/hello2",
"caseSensitive": true
},
"route": {
"cluster": "outbound|9030||hello2.default.svc.cluster.local",
验证服务的路由配置和虚拟主机:
istioctl proxy-config cluster -n istio-system your_istio-ingressgateway-name
希望获得帮助。