Deploy any application quickly with Waypoint



We decided to add an analysis of a new project to the author's articles and translated materials about life hacks / interesting finds published in our blog. Waypoint is an open source project that provides developers with a consistent workflow for building, deploying and releasing applications on any platform. Waypoint allows developers to host their applications from development to production environments in a single file, and deploy applications with a single command: waypoint up. Waypoint supports Kubernetes, HashiCorp Nomad, Amazon ECS, Google Cloud Run, Azure Container Instances, Docker, Buildpacks and more out of the box. Read on to see a small example, to learn more about Waypoint's features, and the problems the tool solves.






Waypoint is fully extensible and based on a plugin system to work with any tool or platform. Once deployed, Waypoint provides logging and more to test and debug any deployments. It is software that you download and host yourself to manage the deployment of applications that run on your infrastructure or platforms. Further, the founder of HashiCorp himself will tell you more about Waypoint.



Simplify deployment



Waypoint was created by us for one simple reason: developers just want to deploy applications. HashiCorp has the ability to work with all types of organizations and individuals in our community, which presents us with the challenges developers face in deploying applications and in terms of user accessibility. We communicate with dozens of individual users every day via GitHub Issues, discussion forums, email, and more. Every week we meet with over 500 companies to discuss their current developments and operational issues.



Through the interaction, we saw that developers, especially in midsize to large organizations, are overwhelmed with complexity: containers, schedulers, YAML files, serverless and more. Complexity has made the applications better in many ways, but the cost seen in the learning curve is required to simply deploy the first application.



Another problem we saw depends on the application, because the tools are often very different: Docker and kubectl for Kubernetes, HashiCorp Packer and Terraform for virtual machines, different tools for each serverless platform, etc. This fragmentation again creates a learning problem for the individual. For teams, these are problems of consistency and complexity.



With Waypoint, we aim to address these two issues. Waypoint provides one simple command for deploying any application: "waypoint up". The workflow is the same for any platform: Kubernetes, Nomad, EC2, Google Cloud Run and more than a dozen others will be supported by launch. Waypoint is extensible with plugins for any build, deployment, and release logic. Developers just want to deploy applications. Waypoint just does it.



Functionality



Waypoint offers a number of features that provide a workflow for deploying applications and validating and debugging deployments. These features make Waypoint a powerful tool for deploying any application on any platform.



  • waypoint up: , . Waypoint , , , . Waypoint Waypoint.

  • URL- : Waypoint URL waypoint.run TLS, Let's Encrypt. , .

  • : waypoint exec. exec , , . waypoint exec.

  • : Waypoint . , . , Datadog Splunk. CLI -. .

  • -: CLI, Waypoint -, , . - . . , ,

  • : , . Waypoint , Waypoint, .







Let's show by example the various features of Waypoint. Some setup steps are skipped, so if you'd like to try out the full example yourself, please check out our getting started guides . In this example, we will deploy the application to Kubernetes. Hcl file next to the application. This file describes all stages of the application life cycle.



project = "HashiCorp Waypoint"
app "waypoint-up" {
    build {
        use "docker" {}
        registry {
            use "docker" {
                image = "hashicorp/wpmini"
                tag = gitrefpretty()
            }
         }        
      }
    deploy {
        use "kubernetes" {
            probe_path="/"
            service_port=80
        }
     }
    release {
        use "kubernetes" {
            load_balancer=true
            port=80
         }
     }
}


Build, deploy, release



The Waypoint configuration file describes the three main phases of an application's life cycle: build, deployment, and release.



  • The assembly takes the application source code and converts it to an artifact. The build process can include optional registry configuration to push the built artifact to the registry so that it is available to deployment platforms. For example, this step converts the source code to a Docker image, EC2 AMI, etc.



  • Deployment takes the artifact collected in the previous step and places it on the target deployment platform, making the deployment available via a URL or other internal methods



The release activates the deployment and opens it to mainstream traffic. In the future, we will add support to Waypoint for moving applications between environments, rolling back deployments and releases, and gradually moving traffic between servers after release.



Raising Waypoint



The waypoint up team builds, deploys and releases the application. At the end, one or more addresses are displayed where the application is available. It doesn't matter which application it is and for which platform, you can always type waypoint up into the terminal to deploy.







You can perform lifecycle stages separately from each other. This is useful when interacting with Github Actions and CI / CD tools like CricleCI and Jenkins. Learn more about automating your application workflow with Waypoint here .



Application and deployment addresses



Applications deployed with Waypoint get a public URL like waypoint.run with a valid TLS certificate automatically generated by Let's Encrypt . Use this address to quickly view and share deployed apps. We provide this URL through a free public service from HashiCorp. This feature is optional and can be disabled. In the example above, our URL recently-pleasant-duck--v1.waypoint.run . Please note that this URL is no longer working, the application was only executed for this blog post. You can see a specific version of the deployment at a link like recently-pleasant-duck--vN.waypoint.runwhere N is the version number of the deployment. This feature is very useful for sharing a pre-release version of your app with your team.







Waypoint Logging



Waypoint gives you access to real-time snapshot of application logs. These logs are useful when you need to debug the behavior of a developing application. However, they do not replace complex logging solutions. Logs are aggregated and available for viewing through the command line interface and the web interface. This logging feature works regardless of platform. Whether you are using Kubernetes, EC2, Google Cloud Run, or another platform, you can view the logs consistently. Using the user interface, you can view the logs of multiple applications deployed on different platforms.







Waypoint exec



You can execute commands in the context of the deployed application using the waypoint exec command. This feature allows you to open a shell, run scripts, and do whatever else you want to do with your deployments. Like logging, waypoint exec works on all platforms supported by Waypoint.







Other possibilities



This list is just a quick overview of some of Waypoint's features. Waypoint can be used to manage application configuration through environment variables, integrates with your CI or Github. Workspaces are used to create separate environments for separate branches. Alternatively, you can write a plugin and that's not all. Waypoint is the brand of the new project. We look forward to continuing to add new functionality in the coming months.



Waypoint and existing applications



If you already have an application and a deployment workflow, you may feel doubtful whether you can use…. We don't expect development teams to immediately rebuild and rebuild their workflow for Waypoint from scratch. But we do have a docker pull plugin and a local execution capability to adapt Waypoint for an application with a workflow already configured. In addition, we have documentation that describes the integration of Waypoint into other CIs: CircleCI or Jenkins... This feature allows you to view the deployment history in the Waypoint interface, execute exec command, logging, application configuration and more. With a little effort, you get the benefits of Waypoint while you consider whether you want to upgrade to a more manageable plugin. When you have many applications, this approach allows you to combine workflows and compare them.



Fully extensible by plugins



The lifecycle logic is fully extensible. Waypoint runs on the same plugin system as Terraform. we believe that writing a plugin for Waypoint is as easy (if not simpler) than for Terraform. Waypoint has over a dozen plugins built right from the start. We hope and expect that over time, with the help of the open source community, this number will increase dramatically. Terraform had about 6 providers at launch. Today Terraform has 300 providers. We believe this is possible for application deployment too. If you are interested in writing a plugin, please read our guide for plugin authors and see the source code for built-in Waypoint 0.1 plugins on Github.



Project links
  • Waypoint, , , NodeJS, Python, Ruby, Java , . 

  • . Waypoint , HashiCorp. , .

  • . Waypoint. Waypoint, GitHub Waypoint HashiCorp.

  • . Waypoint, , , URL- Waypoint, Twitter #WaypointUp HashiCorp. , , URL Waypoint. .




Especially for Habrovites, we have made a promo code HABR , which gives an additional 10% discount to the discount indicated on the banner.



image




  • Teaching the Data Science profession from scratch
  • Online bootcamp for Data Science
  • Training the Data Analyst profession from scratch
  • Data Analytics Online Bootcamp
  • Python for Web Development Course


More courses
  • DevOps
  • -
  • iOS-
  • Android-
  • Java-
  • JavaScript
  • Machine Learning
  • « Machine Learning Data Science»
  • «Machine Learning Pro + Deep Learning»




Recommended articles



  • Data Within Us: What Do Bioinformatics Do?
  • Machine Learning and Computer Vision in the Mining Industry



All Articles