DEV Community

Cover image for Symbiosis: The cloud platform for Kubernetes
Buster Styren
Buster Styren

Posted on

Symbiosis: The cloud platform for Kubernetes

As an engineer, you are faced with many decisions when building a Kubernetes environment.

  • How do I set up GitOps & CI/CD?
  • How do I create application delivery pipelines?
  • How do I keep costs down?
  • How do I quickly boot new prod-like environments?
  • How can I set up self-service for engineering teams?
  • How to avoid maintaining docker-compose files for local development or testing?

For years I've been configuring and maintaining tens of tools on-top of EKS to create an efficient and automated setup for day-2 operations and simplify deployment of new services.

But, maintaining a complicated k8s stack can take considerable effort as infrastructure evolves and changes over time. Moreover, the high costs and sluggishness of EKS or GKE make it harder to use Kubernetes outside of running prod and staging environments.

Symbiosis is a managed Kubernetes service that plugs some of these holes to make it simple for DevOps to manage day-2 operations and for developers to build, test and deploy.

In this guide I will take you through how to create a k8s cluster and add your projects to Symbiosis.

Getting started

Install the CLI with brew install symbiosis-cloud/tap/sym.

Then login with sym login to authenticate to your Symbiosis team. Make sure you have an account set up already.

Creating your first k8s cluster is as easy as issuing sym cluster create -- or use our terraform provider for IaC.

The kube context is automatically installed, so you can access the cluster with kubectl, k9s and other tools that read the kubeconfig file.

Well done! You have a working k8s cluster. If you're new to k8s you might read our guide on how to deploy a container to your cluster.

Let's look into what else Symbiosis can offer!

Projects

With Projects you can link your GitHub repositories to automatically create k8s environments for any occasion. For example in development, testing or as a staging environment in preparation for a release.

The core idea of Projects is to offer the simplicity of PaaS but without any opinionated or limiting abstractions.

Engineers should be able to easily build, test and release on prod-like environments without breaking a sweat.

Projects is currently in closed preview.

The sym.yaml file

The sym.yaml file is placed at the root of your repositories and define the structure of your project.

deploy:
  helm:
  - chart: "./charts"
    values:
      vaultToken: "{{.secret.VAULT_TOKEN}}"
      replicas: 2
test:
- image: "backend:latest"
  command: "go test"
Enter fullscreen mode Exit fullscreen mode

Define and customize your Helm charts or Kustomize manifests to have them wired to your project.

With the file in place we can instantly boot a cluster that runs our project with sym run.

Tests run inside your cluster and can be used to easily define complex end-to-end or integration tests that span across many services.

Running your test suite in the cluster with sym test.

CI/CD

Pipelines are automatically created to build, test and ship your projects. In practice this means a preview cluster is created that will run your tests.

Image description

The preview environment can also be used to help with PR reviews or used to share progress with your team.

GitOps

In the projects settings you can configure a production cluster. Merging a PR will automatically apply any changes to your prod environment.

Image description

Note: Some users may need to use Symbiosis for dev and CI/CD but deploy to a cluster in AWS or Google Cloud. It's on our roadmap to add options to deploy to other providers.

Don't lose sleep over k8s bills

Kubernetes shouldn't have to cost a fortune. At Symbiosis we offer compute at less than half of AWS or DigitalOcean.

We're also committed to making sure our platform is efficient. Did you know that EKS nodes reserve 1.6GiB of memory? Meaning a smaller cluster with 4GB nodes will waste at least 41% of all memory.

Cheap bandwidth reduce the friction when using multiple clouds and services. We're determined to combat vendor lock-in effects by charging $5 per TB of traffic, compared to $92 with AWS.

Going further

To learn more about Symbiosis I recommend reading our docs.

Keep tabs on what we're doing over on twitter.

Happy coding! 🖤

Top comments (2)

Collapse
 
anna_zakipour_6453fc7a8d7 profile image
Anna Zakipour

REALLY cool stuff!

Collapse
 
perthoresson profile image
Per Thoresson

Really cool stuff!