kubenix/tests/istio/bookinfo.nix

118 lines
2.3 KiB
Nix
Raw Normal View History

2021-05-06 16:07:24 -04:00
{ config, kubenix, ... }:
2019-02-27 14:18:38 +01:00
{
imports = with kubenix.modules; [ test k8s istio ];
2019-02-27 14:18:38 +01:00
test = {
name = "istio-bookinfo";
description = "Simple istio bookinfo application (WIP)";
};
kubernetes.api."networking.istio.io"."v1alpha3" = {
Gateway."bookinfo-gateway" = {
spec = {
selector.istio = "ingressgateway";
servers = [{
port = {
number = 80;
name = "http";
protocol = "HTTP";
};
2021-05-13 17:27:08 -04:00
hosts = [ "*" ];
2019-02-27 14:18:38 +01:00
}];
};
};
VirtualService.bookinfo = {
spec = {
2021-05-13 17:27:08 -04:00
hosts = [ "*" ];
gateways = [ "bookinfo-gateway" ];
2019-02-27 14:18:38 +01:00
http = [{
match = [{
uri.exact = "/productpage";
2021-05-13 17:27:08 -04:00
}
{
uri.exact = "/login";
}
{
uri.exact = "/logout";
}
{
uri.prefix = "/api/v1/products";
}];
2019-02-27 14:18:38 +01:00
route = [{
destination = {
host = "productpage";
port.number = 9080;
};
}];
}];
};
};
DestinationRule.productpage = {
spec = {
host = "productpage";
subsets = [{
name = "v1";
labels.version = "v1";
}];
};
};
DestinationRule.reviews = {
spec = {
host = "reviews";
subsets = [{
name = "v1";
labels.version = "v1";
2021-05-13 17:27:08 -04:00
}
{
name = "v2";
labels.version = "v2";
}
{
name = "v3";
labels.version = "v3";
}];
};
};
DestinationRule.ratings = {
spec = {
host = "ratings";
subsets = [{
name = "v1";
labels.version = "v1";
2021-05-13 17:27:08 -04:00
}
{
name = "v2";
labels.version = "v2";
}
{
name = "v2-mysql";
labels.version = "v2-mysql";
}
{
name = "v2-mysql-vm";
labels.version = "v2-mysql-vm";
}];
};
};
DestinationRule.details = {
spec = {
host = "details";
subsets = [{
name = "v1";
labels.version = "v1";
2021-05-13 17:27:08 -04:00
}
{
name = "v2";
labels.version = "v2";
}];
};
};
2019-02-27 14:18:38 +01:00
};
}