Code Monkey home page Code Monkey logo

hal's Introduction

hal

Table of Contents

Overview

Hal is a CLI tool for developers to simplify the deployment of applications such as Spring Boot on OpenShift and Kubernetes using Dekorate and Halkyon Component Operator. Made with ❤️ by the Halkyon team.

CircleCI

Key features

hal is part of the Halkyon project which aims to simplify the deployment of modern micro-services applications on Kubernetes. We encourage you to take a look to the documentation of Halkyon in order to understand better the context of hal. hal is a tool capable of communicating with the cluster doing the following tasks

  • Scaffold Spring Boot applications
  • Deploy Microservices applications as Components
  • Switch the DeploymentMode of the component from Dev to Build mode
  • Compose & link microservices

Demonstration

To see hal in action where it will compose 2 Spring Boot Applications as microservices with a Database

asciicast

Building hal

  • git clone this project outside of your $GOPATH (since it uses go modules) or set GO111MODULE=on on your environment
  • Build: cd hal;make with Go 1.11+ (currently only 1.12 is tested)
  • Run: ./hal, this will display the inline help
  • Enjoy!

Downloading a snapshot

Deploying a component using hal

After installing hal, the following steps allows to create and deploy a project to a cluster. Note: this assumes that you are connected to a Halkyon-enabled OpenShift/Kubernetes cluster.

1. Scaffold the Spring Boot applications

  • Create a development folder on your laptop mkdir haldemo && cd haldemo

  • Create a new scaffolded component (note that it might make more sense to do this interactively):

hal component create \
    -r spring-boot \
    -i 2.1.6.RELEASE \
    -g me.example \
    -a hello-world \
    -v 1.0.0-SNAPSHOT \
    -p me.example.demo \
    -s true \
    -x true \
    -o 8080 \
    hello-world

2. Deploy the Component

A component represents a micro-service, i.e. part of an application to be deployed. The Component custom resource provides a simpler to fathom abstraction over what's actually required at the Kubernetes level to deploy and optionally expose the micro-service outside of the cluster. In fact, when a component is deployed to a Halkyon-enabled cluster, the Halkyon operator will create these OpenShift/Kubernetes resources such as Deployment, Service, PersistentVolumeClaim, Ingress or Route on OpenShift if the component is exposed.

  • Compile and generate the halkyon descriptors files of the application using the following command:
mvn package -f hello-world
  • Push the hello-world component to the remote cluster you're connected to:
hal component push -c hello-world
  • Check if the component has been correctly installed:
kubectl get components

NAME               RUNTIME       VERSION         AGE       MODE      STATUS    MESSAGE   REVISION
hello-world        spring-boot   2.1.6.RELEASE   7m17s     dev       Ready     Ready     6aadfc1a982fcd68

3. Connect to the REST services

If you deploy on OpenShift, get the route address of the microservice using this command:

oc get routes/hello-world --template={{.spec.host}}

If you deploy on a plain Kubernetes, you can use this command:

kubectl get ingress/hello-world

Copy/paste the address displayed within the terminal in a browser and say Hello world 😉

Additional documentation

Additional documentation can be found below:

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.