This sample demonstrates how to build and deploy a Scala Based Akka-HTTP microservice as an extension and expose the API in SAP BTP, Kyma runtime.
This sample demonstrates how to:
- Create a development Namespace in the Kyma runtime.
- Create and deploy a Scala AKKA-HTTP microservice in the Kyma runtime.
- Expose the microservice using APIRules.
- Explore the APIs.
- SAP BTP, Kyma runtime instance
- Docker
- make
- kubectl configured to use the
KUBECONFIGfile downloaded from the Kyma runtime - Java 11+
- sbt
The Scala Based Akka-HTTP microservice implements a simple Orders API with CRUD operations.
-
Create a new
devNamespace:kubectl create namespace dev kubectl label namespaces dev istio-injection=enabled
-
Build and push the image to the Docker repository:
DOCKER_ACCOUNT={your-docker-account} make push-image
This section details out deploying the extension using standard Kubernetes resources.
To deploy as Helm chart, please refer to Helm Chart Deployment
-
Update the image name in the Kubernetes Deployment. Refer to the standard Kubernetes Deployment and Service definitions.
-
Deploy the application:
kubectl -n dev apply -f ./k8s/deployment.yaml
-
Verify that the Pods are up and running:
kubectl -n dev get po
The expected result shows that the Pod for the sample-extension-scala Deployment is running:
NAME READY STATUS RESTARTS AGE
sample-extension-scala-76b545f95b-xh6fx 2/2 Running 0 4m10s- Create an APIRule. In the APIRule, specify the Kubernetes Service that is exposed:
apiVersion: gateway.kyma-project.io/v2
kind: APIRule
metadata:
name: sample-extension-scala
spec:
gateway: kyma-system/kyma-gateway
hosts:
- sample-extension-scala
rules:
- noAuth: true
methods:
- GET
- POST
- PUT
- DELETE
path: /*
service:
name: sample-extension-scala
port: 8080This sample snippet exposes the sample-extension-scala Service. The Service is specified in the spec.service.name field.
The sample-extension-scala subdomain is specified in the spec.service.host field.
-
Apply the APIRule:
kubectl -n dev apply -f ./k8s/api-rule.yaml
A Helm Chart definition is also available for developers to try out.
To install the helm chart in dev namespace, run the following command. Change to use your image.
helm install kymaapp ../helm-charts/sample-extension-scala --set image.repository=gabbi/sample-extension-scala:0.0.1 -n devTo verify, the installed chart, run
helm -n dev lsNAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION
kymaapp dev 1 2020-09-25 17:23:36.838647 +0200 CEST deployed sample-extension-scala-0.1.0 1.16.0Access the APIs through this URL: <https://sample-extension-scala.{cluster domain}/orders>
