We use analytics and cookies to understand site traffic. Information about your use of our site is shared with Google for that purpose. Learn more.
Hello World - Scala using Akka HTTP
A microservice which demonstrates how to get set up and running with Knative
Serving when using Scala and Akka
HTTP. It will respond to a HTTP
request with a text specified as an
ENV variable named
Follow the steps below to create the sample code and then deploy the app to your cluster. You can also download a working copy of the sample, by running the following commands:
git clone -b "release-0.12" https://github.com/knative/docs knative-docs cd knative-docs/docs/serving/samples/hello-world/helloworld-scala
Before you begin
- A Kubernetes cluster installation with Knative Serving up and running.
- Docker installed locally, and running, optionally a Docker Hub account configured or some other Docker Repository installed locally.
- Java JDK8 or later installed locally.
- Scala's standard build tool sbt installed locally.
Configuring the sbt build
If you want to use your Docker Hub repository, set the repository to “docker.io/yourusername/yourreponame”.
If you use Minikube, you first need to run:
eval $(minikube docker-env)
If want to use the Docker Repository inside Minikube, either set this to
“dev.local” or if you want to use another repository name, then you need to run
the following command after
docker tag yourreponame/helloworld-scala:<version> dev.local/helloworld-scala:<version>
Otherwise Knative Serving won't be able to resolve this image from the Minikube Docker Repository.
You specify the repository in build.sbt:
dockerRepository := Some("your_repository_name")
You can learn more about the build configuration syntax here.
Configuring the Service descriptor
apiVersion: serving.knative.dev/v1 kind: Service metadata: name: helloworld-scala namespace: default spec: template: spec: containers: - image: "your_repository_name/helloworld-scala:0.0.1" env: - name: MESSAGE value: "Scala & Akka on Knative says hello!" - name: HOST value: "localhost"
Publishing to Docker
In order to build the project and create and push the Docker image, run either:
Which of them to use is depending on whether you are publishing to a remote or a local Docker Repository.
Deploying to Knative Serving
Apply the Service yaml definition:
kubectl apply --filename helloworld-scala.yaml
Then find the service host:
kubectl get ksvc helloworld-scala \ --output=custom-columns=NAME:.metadata.name,URL:.status.url # It will print something like this, the URL is what you're looking for. # NAME URL # helloworld-scala http://helloworld-scala.default.22.214.171.124.xip.io
Finally, to try your service, use the obtained URL:
curl -v http://helloworld-scala.default.126.96.36.199.xip.io
kubectl delete --filename helloworld-scala.yaml
kubetl delete --filename helloworld-scala.yaml
Was this page helpful?
Glad to hear it! Please tell us how we can improve.
Sorry to hear that. Please tell us how we can improve.