2024-04-29 17:49:02 +00:00
|
|
|
<h1> Deploying Gateways</h1>
|
|
|
|
|
|
|
|
<h2>Table of Contents</h2>
|
|
|
|
|
|
|
|
- [Introduction](#introduction)
|
|
|
|
- [Gateway Name](#gateway-name)
|
|
|
|
- [Example](#example)
|
|
|
|
- [Gateway FQDN](#gateway-fqdn)
|
|
|
|
- [Example](#example-1)
|
|
|
|
|
|
|
|
***
|
|
|
|
|
|
|
|
## Introduction
|
|
|
|
|
2024-05-13 23:28:23 +00:00
|
|
|
After [deploying a VM](grid3_go_vm.md) you can deploy Gateways to further expose your VM.
|
2024-04-29 17:49:02 +00:00
|
|
|
|
|
|
|
## Gateway Name
|
|
|
|
|
|
|
|
This generates a FQDN for your VM.
|
|
|
|
|
|
|
|
## Example
|
|
|
|
|
|
|
|
```go
|
|
|
|
import (
|
|
|
|
"fmt"
|
|
|
|
|
|
|
|
"github.com/threefoldtech/tfgrid-sdk-go/grid-client/deployer"
|
|
|
|
"github.com/threefoldtech/tfgrid-sdk-go/grid-client/workloads"
|
|
|
|
"github.com/threefoldtech/tfgrid-sdk-go/grid-proxy/pkg/types"
|
|
|
|
"github.com/threefoldtech/zos/pkg/gridtypes/zos"
|
|
|
|
)
|
|
|
|
|
|
|
|
func main() {
|
|
|
|
|
|
|
|
// Create Threefold plugin client
|
|
|
|
tfPluginClient, err := deployer.NewTFPluginClient(mnemonics, "sr25519", network, "", "", true, false)
|
|
|
|
|
|
|
|
// Get a free node to deploy
|
|
|
|
domain := true
|
|
|
|
status := "up"
|
|
|
|
filter := types.NodeFilter{
|
|
|
|
Domain: &domain,
|
|
|
|
Status: &status,
|
|
|
|
}
|
|
|
|
nodeIDs, err := deployer.FilterNodes(tfPluginClient.GridProxyClient, filter)
|
|
|
|
nodeID := uint32(nodeIDs[0].NodeID)
|
|
|
|
|
|
|
|
// Create gateway to deploy
|
|
|
|
gateway := workloads.GatewayNameProxy{
|
|
|
|
NodeID: nodeID,
|
|
|
|
Name: "mydomain",
|
|
|
|
Backends: []zos.Backend{"http://[300:e9c4:9048:57cf:6d98:42c6:a7bf:2e3f]:8080"},
|
|
|
|
TLSPassthrough: true,
|
|
|
|
}
|
|
|
|
err = tfPluginClient.GatewayNameDeployer.Deploy(ctx, &gateway)
|
|
|
|
|
|
|
|
gatewayObj, err := tfPluginClient.State.LoadGatewayNameFromGrid(nodeID, gateway.Name, gateway.Name)
|
|
|
|
fmt.Println(gatewayObj.FQDN)
|
|
|
|
}
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
This deploys a Gateway Name Proxy that forwards requests to your VM. You should see an output like this:
|
|
|
|
|
|
|
|
```bash
|
|
|
|
mydomain.gent01.dev.grid.tf
|
|
|
|
```
|
|
|
|
|
|
|
|
## Gateway FQDN
|
|
|
|
|
|
|
|
In case you have a FQDN already pointing to the node, you can expose your VM using Gateway FQDN.
|
|
|
|
|
|
|
|
## Example
|
|
|
|
|
|
|
|
```go
|
|
|
|
import (
|
|
|
|
"fmt"
|
|
|
|
|
|
|
|
"github.com/threefoldtech/tfgrid-sdk-go/grid-client/deployer"
|
|
|
|
"github.com/threefoldtech/tfgrid-sdk-go/grid-client/workloads"
|
|
|
|
"github.com/threefoldtech/zos/pkg/gridtypes/zos"
|
|
|
|
)
|
|
|
|
|
|
|
|
func main() {
|
|
|
|
|
|
|
|
// Create Threefold plugin client
|
|
|
|
tfPluginClient, err := deployer.NewTFPluginClient(mnemonics, "sr25519", network, "", "", "", 0, true)
|
|
|
|
|
|
|
|
// Create gateway to deploy
|
|
|
|
gateway := workloads.GatewayFQDNProxy{
|
|
|
|
NodeID: 14,
|
|
|
|
Name: "mydomain",
|
|
|
|
Backends: []zos.Backend{"http://[300:e9c4:9048:57cf:6d98:42c6:a7bf:2e3f]:8080"},
|
|
|
|
FQDN: "my.domain.com",
|
|
|
|
TLSPassthrough: true,
|
|
|
|
}
|
|
|
|
err = tfPluginClient.GatewayFQDNDeployer.Deploy(ctx, &gateway)
|
|
|
|
|
|
|
|
gatewayObj, err := tfPluginClient.State.LoadGatewayFQDNFromGrid(nodeID, gateway.Name, gateway.Name)
|
|
|
|
}
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
This deploys a Gateway FQDN Proxy that forwards requests to from node 14 public IP to your VM.
|