Skip to content

Latest commit

 

History

History
107 lines (82 loc) · 4.61 KB

README.md

File metadata and controls

107 lines (82 loc) · 4.61 KB

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: