Using Dev Clusters

Using Dev Clusters

Uffizzi dev clusters let you code locally in your favorite IDE and see your changes automatically reflected in your deployed services in real-time.

Dev clusters provide many benefits compared to traditional local development environments, including standardizing developer workflows and offloading compute to remote servers.

💡

Feature Spotlight
One of the primary benefits of using Uffizzi Dev Clusters is the option to use the Uffizzi Ingress service. With this option enabled, Uffizzi will provision for your dev environment its own URL (with a unique domain and TLS certificate), allowing you to test your application with HTTPS and enforce a more production-like configuration.

Requirements

To create a dev cluster, you'll need two things:

  1. A skaffold.yaml (opens in a new tab) file
  2. Your application's configuration files - typically Helm Charts, kustomizations or Kubernetes manifests

Setup

Dev clusters can be easily created from the Uffizzi Cloud dashboard or from the CLI by running uffizzi dev start, passing your skaffold.yaml file as an argument:

uffizzi dev start /path/to/skaffold.yaml

This command will also save the location of your skaffold file in the CLI configuration .config/uffizzi/config_default.json.

Create a Skaffold file

Uffizzi dev clusters require a skaffold.yaml (opens in a new tab) configuration file that defines how your build artifacts are managed and where to find your application configuration files, such as Helm Charts or kustomizations.

If you've never used Skaffold before, don't worry. Despite the many configuration options available, most skaffold.yaml files are pretty simple. You can see an example Skaffold file here.

Start the dev cluster

Once you have a valid skaffold file, you can create a dev clustering by running:

Stopping and deleting the dev cluster

To stop the skaffold process, you can press Ctrl+C, or if you started the dev cluser in quiet mode, run uffizzi dev stop in another terminal. If you stop the skaffold process, it will halt file synchronization, but it will not delete the dev cluster. To do that you can run uffizzi dev delete, which will destroy the entire dev cluster and all of its resources, including any persistent volumes you've created.

Comparison to Skaffold Dev

The uffizzi dev command is a convenience wrapper around uffizzi cluster and skaffold dev (opens in a new tab) commands. It manages the lifecycle of Uffizzi virutal clusters (creates, updates, and deletes necessary resources) and automatically configures Skaffold for use with Uffizzi. Additionally, uffizzi dev provides sensible default configurations, such as using Uffizzi Cloud's ephemeral registry registry.uffizzi.com to temporarily store build artifacts. For a full list of command options, see the CLI reference.

Example Skaffold File

Skaffold files are relatively simple files that at a minimum define build and manifest components. Most of the configuration happens in your Charts or manifests, not in the skaffold.yaml file itself. For example, this is the skaffold file we use for developing the Uffizzi Cloud platform, which despite being comprised of a half a dozen services, is only about 20 lines of YAML:

skaffold.yaml
apiVersion: skaffold/v4beta6
kind: Config
build:
  artifacts:
  - image: uffizzi-platform
    context: .
    docker:
      dockerfile: Dockerfile
    sync:
      infer:
      - "**/*"
manifests:
  helm:
    releases:
      - name: uffizzi
        chartPath: "charts/uffizzi-platform"
        skipBuildDependencies: true
        valuesFiles:
          - ".helm_values.yaml"