FiftyOne Enterprise Helm Chart Documentation

 


Exposing the teams-api Service

There are two methods for SDK access to Fiftyone Teams

The database direct connection requires each user to have root database privileges.

The FiftyOne Teams API provides Role Based Access Control (RBAC) permissions. By default, the API is not exposed. To expose the FiftyOne Teams API, configure a Kubernetes Ingress to route traffic to the Kubernetes teams-api service on port 80 via the WebSocket protocol.

We use WebSockets to maintain connections and enable long-running process execution. Before exposing the teams-api service, validate that your infrastructure supports the WebSockets protocol. (For example, you may need to replace AWS Classic Load Balancers (LB) with AWS Application Load Balancers (ALB) for WebSocket support.)

To expose the teams-api service, chose one of these two routing methods

Host-Based Routing

Add a Second Host to the Ingress Controller

  1. Create or update TLS certificate for the new host by either
    1. Obtaining a new certificate for the new host
    2. Updating an existing certificate by adding the new host to the list of Subject Alternative Names (SAN)
  2. Add a new DNS entry for the new host to route to the Ingress
  3. Update values.yaml
    1. Set apiSettings.dnsName to the hostname to route API requests to (e.g. demo-api.fiftyone.ai)
  4. Upgrade the deployment using the latest Helm chart

     helm repo update voxel51
     helm upgrade fiftyone-teams-app voxel51/fiftyone-teams-app \
       -f ./values.yaml
    

Path-Based Routing

Path based routing doesn’t require additional DNS entries and TLS certificates. In values.yaml, remove apiSettings.dnsName. This routes traffic to the API paths to the teams-api service.

Every Ingress Controller implementation is different. Consult your ingress controller documentation.

To use this chart’s ingress object

  1. Update values.yaml
    1. Set ingress.enabled to true
    2. Set the other ingress values
    3. Configure the Ingress paths to include

       # values.yaml
       ingress:
         paths:
           - path: /_pymongo
             pathType: Prefix
             serviceName: teams-api
             servicePort: 80
           - path: /health
             pathType: Prefix
             serviceName: teams-api
             servicePort: 80
           - path: /graphql/v1
             pathType: Prefix
             serviceName: teams-api
             servicePort: 80
           - path: /file
             pathType: Prefix
             serviceName: teams-api
             servicePort: 80
           - path: /cas
             pathType: Prefix
             serviceName: teams-cas
             servicePort: 80
           # Note: the ordering matters. This root path must be last.
           - path: /
             pathType: Prefix
             serviceName: teams-app
             servicePort: 80
      
  2. Upgrade the deployment using the latest Helm chart

     helm repo update voxel51
     helm upgrade fiftyone-teams-app voxel51/fiftyone-teams-app \
       -f ./values.yaml
    

Configure your SDK

  1. In ~/.fiftyone/config.json, set

     {
       "api_uri": "https://<DEPOY_URL>",
       "api_key": "<REDACTED>"
     }
    

For more information, see API Connection.

Validation

  1. Verify the connectivity by accessing the FiftyOne Teams API’s the health endpoint

     $ curl https://<DEPOY_URL>/health
     {"status":"available"}