Skip to main content
logoTetrate Service BridgeVersion: 1.14.x

Deploy an Application

You'll now deploy a sample application into your cluster, and verify success using tctl and the TSB UI:

  • Create a namespace for the application, and apply the istio-injection=enabled label
  • Deploy the bookinfo application as normal into the new namespace
  • Create a TSB Workspace container to scope the TSB configuration
  • Verify success
Why Workspaces?

A TSB Workspace spans one or more namespaces across one or more K8s clusters. Configuration applied to a Workspace is applied to services and gateways across these cluster/namespace selectors.

Workspaces allow you to model configuration from an application or gateway-set perspective, without being constrained by the underlying namespace and cluster topology.

Deploy and View the application​

  1. Apply the Configuration​

    Create a new namespace and deploy the application within. Create the Tetrate Workspace resource to scope the Tetrate configuration.

    Edit the ORG (organization), TEN (tenant), NS (namespace) names if needed:

    export NS=bookinfo
    export ORG=tetrate
    export TEN=default

    echo "\nCreate the namespace ..."

    kubectl create namespace ${NS}
    kubectl label namespace ${NS} istio-injection=enabled

    echo "\nDeploy the application ..."

    kubectl apply -n ${NS} -f https://raw.githubusercontent.com/istio/istio/master/samples/bookinfo/platform/kube/bookinfo.yaml

    echo "\nCreate the TSB ${NS}-ws Workspace ..."

    cat <<EOF > ${NS}-workspace.yaml
    apiversion: api.tsb.tetrate.io/v2
    kind: Workspace
    metadata:
    organization: ${ORG}
    tenant: ${TEN}
    name: ${NS}-ws
    spec:
    description: Test ${NS} workspace
    namespaceSelector:
    names:
    - "*/${NS}"
    EOF

    tctl apply -f ${NS}-workspace.yaml

    Note that tctl is used to apply configuration to TSB, and kubectl to apply standard K8s configuration to the cluster.

  2. Verify the Deployment​

    Confirm that the pods are running in the bookinfo namespace. Note the 2/2 status, indicating that two containers (application and Istio sidecar) are running in each pod:

    kubectl get pods -n ${NS}

    NAME READY STATUS RESTARTS AGE
    details-v1-766844796b-tc9mf 2/2 Running 0 53s
    productpage-v1-54bb874995-pbhm5 2/2 Running 0 52s
    ratings-v1-5dc79b6bcd-t6l2g 2/2 Running 0 53s
    reviews-v1-598b896c9d-f2vx6 2/2 Running 0 53s
    reviews-v2-556d6457d-d2tdd 2/2 Running 0 53s
    reviews-v3-564544b4d6-kxhtc 2/2 Running 0 53s

    Confirm that the application is functioning, by sending a request from the ratings pod to the productpage service:

    kubectl exec deploy/ratings-v1 -n ${NS} -- curl -s productpage:9080/productpage | grep -o "<title>.*</title>"

    <title>Simple Bookstore App</title>
  3. View the Services in the TSB Workspace​

    Inspect the newly-created TSB Workspace, named bookinfo-ws or similar:

    Workspace with Services

What have we achieved?​

We have seen how to create and mesh-enable a namespace, and how to create the corresponding Tetrate WorkSpace resource to scope Tetrate configuration for that namespace.