Creating HTTP router for gRPC traffic
To create an HTTP router and add a route to it:
-
In the left-hand menu, select HTTP routers.
-
Click Create HTTP router.
-
Enter the router name.
-
Under Virtual hosts, click Add virtual host.
-
Enter Name.
-
In the Authority field, type
*
or specify the IP address of the load balancer. -
Click Add route and select Type:
gRPC
.-
Enter Name.
-
Under FQMN, select one of the options:
Starts with
to route all requests starting with a specific FQMN. In the input field, specify the/<first_word_in_service_name>
, e.g.,/helloworld
.Matches
to route all requests that match the specified FQMN.Regular expression
to route all requests that match a RE2 regular expression .
Warning
The FQMN must start with a slash
/
and contain part of the name of the service that the procedure call is redirected to. -
In the Action field, select one of the options:
Routing
orResponse
. Depending on the selected option:-
Routing
:-
In the Backend group list, select the backend group name from the same folder where you create the router.
-
(Optional) In the Host header rewrite field, select one of the options:
none
: Do not rewrite.rewrite
: Rewrite the header to the specified value.auto
: Automatically rewrite the header to the target VM address.
-
(Optional) In the Timeout, s field, specify the maximum connection time.
-
(Optional) In the Idle timeout, seconds field, specify the maximum connection keep-alive time without data transmission.
-
-
Response
:- In the gRPC status code field, select the code to be used for response.
-
-
-
Click Create.
If you don't have the Nebius Israel command line interface yet, install and initialize it.
The folder specified in the CLI profile is used by default. You can specify a different folder using the --folder-name
or --folder-id
parameter.
-
View a description of the CLI command to create an HTTP router:
yc alb http-router create --help
-
Run the following command:
yc alb http-router create <HTTP_router_name>
Result:
id: a5dcsselagj4******** name: <HTTP_router_name> folder_id: aoerb349v3h4******** created_at: "2022-06-16T21:04:59.438292069Z"
-
View a description of the CLI command for creating a virtual host:
yc alb virtual-host create --help
-
Create a virtual host, specifying the name of the HTTP router and the virtual host settings:
yc alb virtual-host create <virtual_host_name> \ --http-router-name <HTTP_router_name> \ --authority *
Where
--authority
: Domains for the Host and:authority
headers that will be associated with this virtual host. Wildcards are supported, for example,*.foo.com
or*-bar.foo.com
.Result:
done (1s) name: <virtual_host_name> authority: - *
-
View a description of the CLI command for adding a host:
yc alb virtual-host append-grpc-route --help
-
Add a route, indicating the router ID or name and the routing parameters:
yc alb virtual-host append-grpc-route <route_name> \ --virtual-host-name <virtual_host_name> \ --http-router-name <HTTP_router_name> \ --prefix-fqmn-match / \ --backend-group-name <backend_group_name> \ --request-max-timeout 60s
Where:
-
--virtual-host-name
: Virtual host name. -
--http-router-name
: HTTP router name. -
--prefix-fqmn-match
: Parameter for routing all requests with a given prefix. The parameter should be followed with FQMN/
.To specify a condition for routing, you can also use the following options:
--exact-fqmn-match
to route all requests that match the specified FQMN. The parameter should be followed with/<FQMN>/
.--regex-fqmn-match
to route all requests that match a RE2 regular expression . The parameter should be followed with/<regular_expression>
.
-
--backend-group-name
: Name of the backend group. -
--request-max-timeout
: Maximum request idle timeout, seconds.
For more information about the
yc alb virtual-host append-grpc-route
command parameters, see the CLI reference.Result:
done (1s) name: <virtual_host_name> authority: - * routes: - name: <route_name> grpc: match: fqmn: prefix_match: /helloworld route: backend_group_id: ds7snban2dvn******** max_timeout: 60s
-
With Terraform
For more information about the provider resources, see the documentation on the Terraform
If you change the configuration files, Terraform automatically determines which part of your configuration is already deployed and what should be added or removed.
If you do not have Terraform yet, install it and configure the Nebius Israel provider.
-
In the configuration file, specify the parameters of the HTTP router and virtual host:
resource "yandex_alb_http_router" "tf-router" { name = "<HTTP_router_name>" labels = { tf-label = "tf-label-value" empty-label = "" } } resource "yandex_alb_virtual_host" "my-virtual-host" { name = "<virtual_host_name>" http_router_id = yandex_alb_http_router.tf-router.id route { name = "<route_name>" grpc_route { grpc_route_action { backend_group_id = "<backend_group_ID>" max_timeout = "60s" } } } }
Where:
yandex_alb_http_router
: HTTP router description:-
name
: HTTP router name. The name format is as follows:- The length can be from 3 to 63 characters.
- It may contain lowercase Latin letters, numbers, and hyphens.
- The first character must be a letter. The last character can't be a hyphen.
-
labels
: HTTP router labels. Set a key-value pair.
-
yandex_alb_virtual_host
: Virtual host description:-
name
: Virtual host name. The name format is as follows:- The length can be from 3 to 63 characters.
- It may contain lowercase Latin letters, numbers, and hyphens.
- The first character must be a letter. The last character can't be a hyphen.
-
http_router_id
: HTTP router ID. -
grpc_route
: Description of the route for gRPC traffic:name
: Route name.grpc_route_action
: Parameter to indicate an action on gRPC traffic.backend_group_id
: Backend group ID.max_timeout
: Maximum request idle timeout, seconds.
-
For more information about the parameters of resources used in Terraform, see the provider documentation:
- Yandex_alb_http_router
resource - Yandex_alb_virtual_host
resource
-
Create resources
-
In the terminal, change to the folder where you edited the configuration file.
-
Make sure the configuration file is correct using the command:
terraform validate
If the configuration is correct, the following message is returned:
Success! The configuration is valid.
-
Run the command:
terraform plan
The terminal will display a list of resources with parameters. No changes are made at this step. If the configuration contains errors, Terraform will point them out.
-
Apply the configuration changes:
terraform apply
-
Confirm the changes: type
yes
in the terminal and press Enter.
Terraform will create all the required resources. You can check the new resources and their configuration using the management console
or this CLI command:yc alb http-router get <HTTP_router_name>
-
Use the create REST API method for the HttpRouter resource or the HttpRouterService/Create gRPC API call.