Top Related Projects
Declarative Continuous Deployment for Kubernetes
Easy and Repeatable Kubernetes Development
Pulumi - Infrastructure as Code in any programming language 🚀
Open and extensible continuous delivery solution for Kubernetes. Powered by GitOps Toolkit.
Develop your applications directly in your Kubernetes Cluster
Quick Overview
Waypoint is an open-source tool developed by HashiCorp that provides a consistent workflow for building, deploying, and releasing applications across various platforms. It aims to simplify the deployment process by offering a unified interface for different cloud providers, Kubernetes, and other deployment targets.
Pros
- Consistent workflow across multiple platforms and deployment targets
- Simplified deployment process with a single configuration file
- Built-in support for various build methods and deployment platforms
- Extensible plugin system for custom integrations
Cons
- Relatively new project, still evolving and may have limitations
- Limited documentation and community resources compared to more established tools
- May require additional setup and configuration for complex deployment scenarios
- Learning curve for teams already using established CI/CD pipelines
Getting Started
To get started with Waypoint, follow these steps:
- Install Waypoint on your local machine:
curl -fsSL https://apt.releases.hashicorp.com/gpg | sudo apt-key add -
sudo apt-add-repository "deb [arch=amd64] https://apt.releases.hashicorp.com $(lsb_release -cs) main"
sudo apt-get update && sudo apt-get install waypoint
- Initialize a new Waypoint project in your application directory:
cd your-app-directory
waypoint init
-
Edit the generated
waypoint.hcl
file to configure your build, deploy, and release steps. -
Deploy your application:
waypoint up
For more detailed instructions and advanced usage, refer to the official Waypoint documentation.
Competitor Comparisons
Declarative Continuous Deployment for Kubernetes
Pros of Argo CD
- More mature and widely adopted in the Kubernetes ecosystem
- Supports GitOps workflows out of the box
- Offers a rich UI for visualizing application deployments and their status
Cons of Argo CD
- Primarily focused on Kubernetes deployments, limiting its use for non-Kubernetes environments
- Steeper learning curve for teams not familiar with Kubernetes concepts
Code Comparison
Argo CD Application manifest:
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
name: myapp
spec:
destination:
namespace: default
server: https://kubernetes.default.svc
project: default
source:
path: k8s
repoURL: https://github.com/example/myapp.git
targetRevision: HEAD
Waypoint configuration:
project = "myapp"
app "web" {
build {
use "docker" {}
}
deploy {
use "kubernetes" {
namespace = "default"
}
}
}
While Argo CD focuses on declarative Kubernetes manifests, Waypoint provides a more abstracted configuration for various deployment targets. Argo CD excels in GitOps and Kubernetes-native workflows, whereas Waypoint offers a more flexible approach for different deployment scenarios.
Easy and Repeatable Kubernetes Development
Pros of Skaffold
- More mature project with a larger community and ecosystem
- Supports a wider range of deployment targets and CI/CD integrations
- Offers more granular control over the build and deploy process
Cons of Skaffold
- Steeper learning curve due to more complex configuration options
- Primarily focused on Kubernetes deployments, less versatile for other platforms
- Requires more manual setup and configuration compared to Waypoint's opinionated approach
Code Comparison
Skaffold configuration (skaffold.yaml):
apiVersion: skaffold/v2beta18
kind: Config
build:
artifacts:
- image: my-app
deploy:
kubectl:
manifests:
- k8s-*
Waypoint configuration (waypoint.hcl):
project = "my-app"
app "web" {
build {
use "docker" {}
}
deploy {
use "kubernetes" {}
}
}
Both tools aim to simplify the development and deployment process for containerized applications. Skaffold offers more flexibility and control, making it suitable for complex Kubernetes deployments. Waypoint provides a more streamlined experience with its opinionated approach, making it easier for beginners to get started and supporting a broader range of deployment targets beyond Kubernetes.
Pulumi - Infrastructure as Code in any programming language 🚀
Pros of Pulumi
- Supports multiple programming languages (Python, TypeScript, Go, etc.) for infrastructure as code
- Offers a more flexible and extensible approach to infrastructure management
- Provides strong typing and IDE support for better developer experience
Cons of Pulumi
- Steeper learning curve, especially for those new to programming
- Requires more setup and configuration compared to Waypoint's simpler approach
- May have higher complexity for small-scale projects
Code Comparison
Waypoint:
app "example" {
build {
use "docker" {}
}
deploy {
use "kubernetes" {
namespace = "default"
}
}
}
Pulumi:
import pulumi
from pulumi_kubernetes import apps, core
deployment = apps.v1.Deployment(
"nginx",
spec=apps.v1.DeploymentSpecArgs(
replicas=1,
selector=apps.v1.LabelSelectorArgs(match_labels={"app": "nginx"}),
template=core.v1.PodTemplateSpecArgs(
metadata=core.v1.ObjectMetaArgs(labels={"app": "nginx"}),
spec=core.v1.PodSpecArgs(containers=[
core.v1.ContainerArgs(name="nginx", image="nginx")
])
)
)
)
Open and extensible continuous delivery solution for Kubernetes. Powered by GitOps Toolkit.
Pros of Flux
- Native GitOps approach for Kubernetes, enabling declarative configuration management
- Supports multi-tenancy and fine-grained access control
- Extensive ecosystem with Flux controllers for various use cases
Cons of Flux
- Steeper learning curve for teams new to GitOps and Kubernetes
- Limited support for non-Kubernetes environments
- Requires more manual setup compared to Waypoint's streamlined approach
Code Comparison
Flux manifest example:
apiVersion: source.toolkit.fluxcd.io/v1beta2
kind: GitRepository
metadata:
name: podinfo
namespace: flux-system
spec:
interval: 1m
url: https://github.com/stefanprodan/podinfo
Waypoint configuration example:
project = "example-project"
app "web" {
build {
use "docker" {}
}
deploy {
use "kubernetes" {
namespace = "default"
}
}
}
Flux focuses on declarative GitOps for Kubernetes, while Waypoint provides a more abstracted approach to application deployment across various platforms. Flux excels in Kubernetes-native environments, offering powerful GitOps capabilities, while Waypoint simplifies the deployment process with a unified workflow for different deployment targets.
Develop your applications directly in your Kubernetes Cluster
Pros of Okteto
- Focuses on cloud-native development environments, enabling developers to work directly in Kubernetes clusters
- Provides automatic synchronization of code changes between local and remote environments
- Offers a more seamless integration with existing Kubernetes workflows and tools
Cons of Okteto
- Less emphasis on application deployment and release management compared to Waypoint
- May have a steeper learning curve for developers not familiar with Kubernetes concepts
- Limited support for non-Kubernetes environments
Code Comparison
Okteto:
deploy:
- okteto build -t okteto.dev/hello-world:latest
- kubectl apply -f k8s.yml
Waypoint:
app "hello-world" {
build {
use "docker" {}
}
deploy {
use "kubernetes" {
namespace = "default"
}
}
}
Both tools aim to simplify the development and deployment process, but they approach it differently. Okteto focuses on providing development environments within Kubernetes, while Waypoint offers a more abstracted deployment workflow across various platforms. The code examples show how Okteto relies more on existing Kubernetes tooling, whereas Waypoint provides a higher-level abstraction for build and deploy processes.
Convert designs to code with AI
Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.
Try Visual CopilotREADME
HashiCorp Waypoint Community Edition is no longer actively maintained. For additional information on the new vision of Waypoint, check out this blog post and the HCP Waypoint documentation.
Waypoint
- Website: https://www.waypointproject.io
- Tutorials: HashiCorp Developer
- Forum: Discuss
Waypoint allows developers to define their application build, deploy, and release lifecycle as code, reducing the time to deliver deployments through a consistent and repeatable workflow.
Waypoint supports a number of build methods and target platforms out of the box and more can be easily added via plugins:
- Cloud Native Buildpacks
- Docker
- Kubernetes
- AWS EC2 and ECS
- Azure Container Instances
- Google Cloud Run
- And many more...
Waypoint runs on Linux, Mac OS X, and Windows.
Please note: We take Waypoint's security and our users' trust very seriously. If you believe you have found a security issue in Waypoint, please responsibly disclose by contacting us at security@hashicorp.com.
Quick Start
A quick start guide is available on HashiCorp Developer. You can also find tutorials which cover topics ranging from getting started guides to more advanced usage.
- Getting Started
- Introduction
- Installation
- Docker
- Kubernetes
- Nomad
- Waypoint UI
- AWS ECS
- Azure Container Instance
- Google Cloud Run
Documentation
Full, comprehensive documentation is available on HashiCorp Developer:
https://developer.hashicorp.com/waypoint/docs
Contributing
Thank you for your interest in contributing! Please refer to CONTRIBUTING.md for guidance.
Installing Dependencies
This repository contains a couple of different ways to automate installing the
required Golang packages needed to build Waypoint locally. You can either use
NixOS, or run make tools
to setup the
required packages.
Running the unit tests
To run the entire test suite, you'll want to ensure that you've brought up
all the required containers used for testing. You can do this by leveraging
the existing docker-compose.yml
file that's in the root directory of this
project:
$ docker-compose up
After running this, you should have a local Horizon container along with a few other services needed for running the tests:
$ make test
Running individual tests
If you don't want to run the entire test suite, you can just run a singe test with go. For example, if you wanted to run the tests ListInstances, you would run:
$ go test -run ListInstances -v ./internal/server/singleprocess
Top Related Projects
Declarative Continuous Deployment for Kubernetes
Easy and Repeatable Kubernetes Development
Pulumi - Infrastructure as Code in any programming language 🚀
Open and extensible continuous delivery solution for Kubernetes. Powered by GitOps Toolkit.
Develop your applications directly in your Kubernetes Cluster
Convert designs to code with AI
Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.
Try Visual Copilot