hal
October 9, 2019 ยท View on GitHub
Table of Contents
- Overview
- Key features
- Demonstration
- Building hal
- Downloading a snapshot
- Deploying a component using hal
- Additional documentation
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.
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
DeploymentModeof the component fromDevtoBuildmode - Compose & link microservices
Demonstration
To see hal in action where it will compose 2 Spring Boot Applications as microservices with a Database
Building hal
git clonethis project outside of your$GOPATH(since it usesgo modules) or setGO111MODULE=onon your environment- Build:
cd hal;makewith Go 1.11+ (currently only 1.12 is tested) - Run:
./hal, this will display the inline help - Enjoy!
Downloading a snapshot
- Go to https://circleci.com/gh/halkyonio/hal/tree/master and select the build number you are interested in (presumably, one that succeeded! ๐)
- Select the
Artifactstab and navigate the hierarchy to find the artifact you are interested in.
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
halkyondescriptors 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:
