Workspace Setting
Workspace setting allows configuring the default traffic, security and east-west gateway settings for all the workloads in the namespaces owned by the workspace. Any namespace in the workspace that is not part of a traffic or security group with specific settings will use these default settings.
This is a global object that uniquely configures the workspace, and there can be only one workspace setting object defined for each workspace.
The following example sets the default security policy to accept
either mutual TLS or plaintext traffic, and only accept connections
at a proxy workload from services within the same namespace. The default
traffic policy allows unknown traffic from a proxy workload to be
forwarded via an egress gateway tsb-egress
in the perimeter
namespace in the same cluster.
apiVersion: api.tsb.tetrate.io/v2
kind: WorkspaceSetting
metadata:
name: w1-settings
workspace: w1
tenant: mycompany
organization: myorg
spec:
defaultSecuritySetting:
authenticationSettings:
trafficMode: REQUIRED
defaultTrafficSetting:
outbound:
egress:
host: bookinfo-perimeter/tsb-egress
In order to set all the proxies in a workspace to use a specific load balancer
algorithm such as LEAST_REQUEST
for all outbound requests, the defaultTrafficSetting
resource can be defined as following.
apiVersion: api.tsb.tetrate.io/v2
kind: WorkspaceSetting
metadata:
name: w1-settings
workspace: w1
tenant: mycompany
organization: myorg
spec:
defaultTrafficSetting:
outbound:
upstreamTrafficSettings:
- hosts:
- '*' // asterisk '*' selects all upstream hosts
settings:
loadBalancer:
simple: LEAST_REQUEST
The above traffic settings are for outbound requests from proxies in the workspace. The inbound traffic can also be configured for proxies at a workspace level. For example the following configures the tcp keep alive for all downstream connections to workloads in this workspace with 300 seconds idle time.
apiVersion: api.tsb.tetrate.io/v2
kind: WorkspaceSetting
metadata:
name: w1-settings
workspace: w1
tenant: mycompany
organization: myorg
spec:
defaultTrafficSetting:
inbound:
resilience:
connectionPool:
tcp:
keepAlive:
idleTime: 300s
Similarly other traffic setting properties can be set at a workspace level. Refer
to TrafficSettings
documentation for more information. Note that a workspace level
traffic configuration can be overwritten by more granular configuration such as
TrafficSettings
or ServiceTrafficSettings
.
The next example sets the defaults for east-west traffic configuring gateways
for two different app groups.
The first setting configures the gateway from the namespace platinum
to manage the traffic
for all those workloads with the labels tier: platinum
and critical: true
.
The second one configures the gateway from the namespace internal
to manage the traffic
for all those workloads with the labels app: eshop
or internal-critical: true
.
Setting up multiple east-west gateways allows isolating also the cross-cluster traffic.
apiVersion: api.tsb.tetrate.io/v2
kind: WorkspaceSetting
metadata:
name: w1-settings
workspace: w1
tenant: mycompany
organization: myorg
spec:
defaultEastWestGatewaySettings:
- workloadSelector:
namespace: platinum
labels:
app: eastwest-gw
exposedServices:
- serviceLabels:
tier: platinum
critical: "true"
- workloadSelector:
namespace: internal
labels:
app: eastwest-gw
exposedServices:
- serviceLabels:
app: eshop
- serviceLabels:
internal-critical: "true"
The next example configures workspace settings for different workspaces with a list of gateway hosts that they can reach.
The first one configures the hostname echo-1.tetrate.io
which is reachable
from workspace w1.
apiVersion: api.tsb.tetrate.io/v2
kind: WorkspaceSetting
metadata:
name: w1-settings
workspace: w1
tenant: mycompany
organization: myorg
spec:
hostsReachability:
hostnames:
- exact: echo-1.tetrate.io
The second one configures the hostnames echo-1.tetrate.io
and
echo-2.tetrate.io
which are reachable from workspace w2.
apiVersion: api.tsb.tetrate.io/v2
kind: WorkspaceSetting
metadata:
name: w2-settings
workspace: w2
tenant: mycompany
organization: myorg
spec:
hostsReachability:
hostnames:
- exact: echo-1.tetrate.io
- exact: echo-2.tetrate.io
The third configures nothing.
apiVersion: api.tsb.tetrate.io/v2
kind: WorkspaceSetting
metadata:
name: w3-settings
workspace: w3
tenant: mycompany
organization: myorg
spec:
The last one configures an empty hostname list.
apiVersion: api.tsb.tetrate.io/v2
kind: WorkspaceSetting
metadata:
name: w4-settings
workspace: w4
tenant: mycompany
organization: myorg
spec:
hostsReachability:
hostnames: []
In summary, the previous example makes:
- The host
echo-1.tetrate.io
to be reachable from namespaces configured in workspacesw1
,w2
andw3
. - The host
echo-2.tetrate.io
to be reachable from namespaces configured in workspacesw2
and `w3``. - All hosts to be reachable from namespaces configured in workspace
w3
. - Workspace
w4
cannot reach any hosts.
WorkspaceSetting
Default security and traffic settings for all proxy workloads in the workspace.
Field | Description | Validation Rule |
---|---|---|
defaultSecuritySetting | tetrateio.api.tsb.security.v2.SecuritySetting
| – |
defaultTrafficSetting | tetrateio.api.tsb.traffic.v2.TrafficSetting
| – |
regionalFailover | List of tetrateio.api.tsb.types.v2.RegionalFailover Explicitly specify the region traffic will land on when endpoints in local region becomes unhealthy. Should be used together with OutlierDetection to detect unhealthy endpoints. Note: if no OutlierDetection specified, this will not take effect. | – |
defaultEastWestGatewaySettings | List of tetrateio.api.tsb.gateway.v2.EastWestGateway | – |
hostsReachability | tetrateio.api.tsb.gateway.v2.HostsReachability | – |
failoverSettings | tetrateio.api.tsb.types.v2.FailoverSettings | – |