Clusters
Each Kubernetes cluster managed by Service Bridge should be onboarded first before configurations can be applied to the services in the cluster. Onboarding a cluster is a two step process. First, create a cluster object under the appropriate tenant. Once a cluster object is created, its status field should provide the set of join tokens that will be used by the Service Bridge agent on the cluster to talk to Service Bridge management plane. The second step is to deploy the Service Bridge agent on the cluster with the join tokens and deploy Istio on the cluster. The following example creates a cluster named c1 under the tenant mycompany, indicating that the cluster is deployed on a network "vpc-01" corresponding to the AWS VPC where it resides.
apiVersion: api.tsb.tetrate.io/v2
kind: Cluster
metadata:
name: c1
organization: myorg
labels:
env: uat-demo
spec:
tokenTtl: "1h"
network: vpc-01
Note that configuration profiles such as traffic, security and gateway groups will flow to the Bridge agents in the cluster as long their requested cluster exists in the Service Bridge hierarchy.
Cluster
A Kubernetes cluster managing both pods and VMs.
Field | Description | Validation Rule |
---|---|---|
tokenTtl | google.protobuf.Duration | – |
network | string | – |
tier1Cluster | google.protobuf.BoolValue Indicates whether this cluster is hosting a tier1 gateway or not. Tier1 clusters cannot host other gateways or workloads. Defaults to false if not specified. | – |
locality | tetrateio.api.tsb.v2.Locality Location information about the cluster which can be used for routing. | – |
trustDomain | string | – |
namespaceScope | tetrateio.api.tsb.v2.NamespaceScoping | – |
state | tetrateio.api.tsb.v2.Cluster.State | – |
serviceAccount | tetrateio.api.tsb.v2.ServiceAccount | – |
installTemplate | tetrateio.api.tsb.v2.Cluster.InstallTemplate | – |
InstallTemplate
InstallTemplate provides templates ready to be used in the ControlPlane (cluster onboard) installation.
Field | Description | Validation Rule |
---|---|---|
message | string | – |
helm | tetrateio.api.install.helm.controlplane.v1alpha1.Values | – |
State
State represents the cluster info learned from the onboarded cluster
Field | Description | Validation Rule |
---|---|---|
lastSyncTime | google.protobuf.Timestamp | – |
provider | string | – |
istioVersions | List of string | – |
xcpVersion | string | – |
tsbCpVersion | string | – |
discoveredLocality | tetrateio.api.tsb.v2.Locality | – |
mode | tetrateio.api.tsb.types.v2.ControlPlaneMode | – |
istioRevisions | List of tetrateio.api.tsb.v2.Cluster.State.IstioRevision | – |
IstioRevision
IstioRevision represents the Istio revisions in the ControlPlane Cluster.
Field | Description | Validation Rule |
---|---|---|
revision | string | – |
version | string | – |
distribution | tetrateio.api.tsb.v2.Cluster.State.IstioRevision.Distribution | – |
ClusterOnboardingConfig
Configuration for onboarding a cluster.
Field | Description | Validation Rule |
---|---|---|
namespaces | List of tetrateio.api.tsb.v2.ClusterOnboardingConfig.NamespaceConfig | repeated = { |
NamespaceConfig
Configuration for a namespace.
Field | Description | Validation Rule |
---|---|---|
name | string | string = { |
desiredState | tetrateio.api.tsb.v2.NamespaceDesiredState | – |
ClusterOnboardingStatus
The onboarding status for a cluster.
Field | Description | Validation Rule |
---|---|---|
namespaces | List of tetrateio.api.tsb.v2.ClusterOnboardingStatus.NamespaceStatus | – |
NamespaceStatus
The status of the namespaces in the cluster.
Field | Description | Validation Rule |
---|---|---|
name | string | – |
desiredState | tetrateio.api.tsb.v2.NamespaceDesiredState | – |
currentState | tetrateio.api.tsb.v2.NamespaceCurrentState | – |
currentStateDetails | string | – |
ClusterStatus
The status message for a cluster resource contains the set of join tokens that should be used by Service Bridge's agents on the cluster.
Field | Description | Validation Rule |
---|---|---|
tokens | – |
IstioStatus
IstioStatus provides information about the Istio injection status of the namespace.
Field | Description | Validation Rule |
---|---|---|
istioInjection | tetrateio.api.tsb.v2.IstioStatus.IstioInjection | – |
istioRevision | string | – |
Locality
The region the cluster resides. Used for failover based routing when configured in the workspace or global settings.
Field | Description | Validation Rule |
---|---|---|
region | string | string = { |
NamespaceScoping
Configure the default scoping of namespaces in this cluster.
Field | Description | Validation Rule |
---|---|---|
scope | tetrateio.api.tsb.v2.NamespaceScoping.Scope | – |
exceptions | List of string | – |
Port
Field | Description | Validation Rule |
---|---|---|
number | uint32 | – |
name | string | – |
kubernetesNodePort | uint32 | – |
Workload
Info about individual workload implementing the service.
Field | Description | Validation Rule |
---|---|---|
address | string | – |
name | string | – |
isVm | bool | – |
proxy | tetrateio.api.tsb.v2.Workload.Proxy | – |
Proxy
Info about proxy attached to a workload.
Field | Description | Validation Rule |
---|---|---|
controlPlaneAddress | string | – |
envoyVersion | string | – |
istioVersion | string | – |
status | map<string, string> | – |
Distribution
Type of distribution for the Istio version
Field | Number | Description |
---|---|---|
UNKNOWN | 0 | Unknown Istio distribution |
TSB | 1 | TSB istio distribution |
TID | 2 | TID istio distribution |
IstioInjection
Istio injection status for the namespace.
Field | Number | Description |
---|---|---|
ISTIO_INJECTION_UNDEFINED | 0 | The TSB CP is not able to determine the Istio injection status of the namespace. |
ISTIO_INJECTION_ENABLED | 1 | The namespace is configured with Istio injection. |
ISTIO_INJECTION_DISABLED | 2 | The namespace is not configured with Istio injection. |
NamespaceCurrentState
The current state of a namespace.
Field | Number | Description |
---|---|---|
CURRENT_UNDEFINED | 0 | Undefined state. |
CURRENT_UNKNOWN | 1 | The TSB CP is not able to determine the state of the namespace. |
CURRENT_SYSTEM | 2 | The namespace has been detected as TSB system namespace, as cloud provider system namespace, or
as a namespace with system components specified in the Cluster Onboarding Config as
|
CURRENT_DISABLED | 3 | The namespace has been detected with no sidecars injected and is not configured with Istio injection.
Check the |
CURRENT_ENABLED | 4 | The namespace has been detected with sidecars injected and is configured with Istio injection. |
NamespaceDesiredState
The desired state of a namespace.
Field | Number | Description |
---|---|---|
DESIRED_UNDEFINED | 0 | Undefined state. |
DESIRED_UNASSIGNED | 1 | The user did not specify a desired state for the namespace. |
DESIRED_DISABLED | 2 | The namespace should have no sidecars injected and don't be configured with Istio injection. |
DESIRED_IGNORED | 3 | TSB should not modify the Istio injection. |
DESIRED_ONBOARDED | 4 | The namespace should have a sidecars injected and be configured with Istio injection. |
DESIRED_SYSTEM | 5 | The namespace should be considered as a system namespace. Which means that the namespace
contain system components and should not have sidecars injected and don't be
configured with Istio injection.
It is similar in terms of sidecar injection to |
Scope
Field | Number | Description |
---|---|---|
GLOBAL | 0 | Global configures namespaces in this cluster to be considered global. Namespaces that exist in other clusters with the same name will be considered to be the same logical namespace. |
LOCAL | 1 | Configures local scoping for namespaces, so that namespaces with the same name in different clusters will not be considered the same logical namespace. |
State
State denotes the interactions the service can have with the mesh. A service can exist in one of the states which represents the set of interactions(Observability and Control) the mesh can have with these services.
Field | Number | Description |
---|---|---|
INVALID_STATE | 0 | |
EXTERNAL | 1 | An external service is a service that is known, but that cannot be observed (we can't get metrics for it) and cannot be controlled. |
OBSERVED | 2 | An observed service is a known service that we can have metrics for. For example, a service running the Skywalking agents. |
CONTROLLED | 3 | A controlled service is a service that is part of the mesh, has a proxy we can configure and can be observed with Skywalking agents. |