This guide explains how to deploy
SAP HANA Express with a
Spring Boot application on
Kubernetes. Straight to the point.
1. Create Docker Image for Spring Boot
Build the JAR file:
mvn clean package -DskipTests
Create
Dockerfile
:
FROM openjdk:17-jdk-slim
COPY target/app.jar app.jar
ENTRYPOINT ["java","-jar","/app.jar"]
Build and push image:
docker build -t myrepo/spring-boot-hana .
docker push myrepo/spring-boot-hana
2. Run SAP HANA Express in Kubernetes
Create a StatefulSet
hana.yaml
:
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: hana
spec:
serviceName: "hana"
replicas: 1
selector:
matchLabels:
app: hana
template:
metadata:
labels:
app: hana
spec:
containers:
- name: hana
image: saplabs/hana-express:latest
ports:
- containerPort: 39015
Apply it:
kubectl apply -f hana.yaml
3. Configure Spring Boot Deployment
Create
spring-boot.yaml
:
apiVersion: apps/v1
kind: Deployment
metadata:
name: spring-boot-hana
spec:
replicas: 1
selector:
matchLabels:
app: spring-boot-hana
template:
metadata:
labels:
app: spring-boot-hana
spec:
containers:
- name: spring-boot-hana
image: myrepo/spring-boot-hana
ports:
- containerPort: 8080
env:
- name: SPRING_DATASOURCE_URL
value: jdbc:sap://hana:39015/?databaseName=HXE
- name: SPRING_DATASOURCE_USERNAME
value: SYSTEM
- name: SPRING_DATASOURCE_PASSWORD
value: MyPassword
Apply it:
kubectl apply -f spring-boot.yaml
4. Expose Services
apiVersion: v1
kind: Service
metadata:
name: spring-boot-service
spec:
type: LoadBalancer
selector:
app: spring-boot-hana
ports:
- protocol: TCP
port: 80
targetPort: 8080
Apply it and get external IP:
kubectl apply -f service.yaml
kubectl get svc spring-boot-service
5. Test Deployment
Access Spring Boot app via the service external IP.
It will connect to SAP HANA Express running inside Kubernetes automatically.
image quote pre code