TIP: You can find more information in the Deploy Your CAP Application on SAP BTP Kyma Runtime tutorial and in the Deploy to Kyma/K8s guide of the CAP documentation.
- BTP Subaccount with Kyma Runtime
- BTP Subaccount with Cloud Foundry Space
- HANA Cloud instance available for your Cloud Foundry space
- BTP Entitlements for: HANA HDI Services & Container plan hdi-shared, Launchpad Service plan standard
- Container Registry
- Command Line Tools:
kubectl
,kubectl-oidc_login
,pack
,docker
,helm
,cf
- Logged into Kyma Runtime (with
kubectl
CLI), Cloud Foundry space (withcf
CLI) and Container Registry (withdocker login
) @sap/cds-dk
>= 6.6.0
CAP tooling provides your a Helm chart for deployment to Kyma.
Add the CAP Helm chart with the required features to this project:
cds add helm
cds add html5-repo
-
Export the kubeconfig.yaml
set KUBECONFIG=~/.kube/cap-kyma-app-config
-
Setting the namespace
kubectl config set-context --current --namespace=<<NAMESPACE>>
Create a secret container-registry
with credentials to access the container registry:
bash .github/deployment/kyma/scripts/create-container-registry-secret.sh
The Docker Server is the full-qualified hostname of your container registry.
This step is only required if you're using a BTP Trial account. If you're using a production or a free tier account then you can create HDI Container from Kyma directly by adding a mapping to your Kyma namespace in your HANA Cloud Instance and skip this step.
bash .github/deployment/kyma/scripts/create-db-secret.sh sflight-db
It will create a HDI container sflight-db
instance on your currently targeted Cloud Foundry space and creates a secret sflight-db
with the credentials in your current Kubernetes namespace.
Make the following changes to your chart/values.yaml
.
srv:
bindings:
db:
- serviceInstanceName: hana
+ fromSecret: sflight-db
...
hana-deployer:
bindings:
hana:
- serviceInstanceName: hana
+ fromSecret: sflight-db
...
- hana:
- serviceOfferingName: hana
- servicePlanName: hdi-shared
Make the following changes to your chart/values.yaml
file:
-
Change value of
global.domain
key to your cluster domain. -
Replace
<your-container-registry>
with your container registry. -
Set the value of
SAP_CLOUD_SERVICE
key.
html5-apps-deployer:
env:
- SAP_CLOUD_SERVICE: null
+ SAP_CLOUD_SERVICE: sap.fe.cap.sflight
- Add backend destinations required by HTML5 Apps Deployer.
- backendDestinations: {}
+ backendDestinations:
+ sflight-srv:
+ service: srv
- Add your image registry secret created in Create container registry secret step.
global:
domain: null
- imagePullSecret: {}
+ imagePullSecret:
+ name: container-registry
Do the following steps if you want to deploy the Node.js application.
The CDS_ENV=node
env variable needs to be provided to build for Node.js. The application will be built for Java by default.
CDS_ENV=node cds build --production
Build data base deployer image:
pack build $YOUR_CONTAINER_REGISTRY/sflight-hana-deployer \
--path gen/db \
--buildpack gcr.io/paketo-buildpacks/nodejs \
--builder paketobuildpacks/builder-jammy-base \
--env BP_NODE_RUN_SCRIPTS=""
(Replace $YOUR_CONTAINER_REGISTRY
with the full-qualified hostname of your container registry)
Build image for CAP service:
pack build $YOUR_CONTAINER_REGISTRY/sflight-srv \
--path "gen/srv" \
--buildpack gcr.io/paketo-buildpacks/nodejs \
--builder paketobuildpacks/builder-jammy-base \
--env BP_NODE_RUN_SCRIPTS=""
Do the following steps if you want to deploy the Java application.
Build data base deployer image:
cds build --production
pack build $YOUR_CONTAINER_REGISTRY/sflight-hana-deployer \
--path gen/db \
--buildpack gcr.io/paketo-buildpacks/nodejs \
--builder paketobuildpacks/builder-jammy-base \
--env BP_NODE_RUN_SCRIPTS=""
(Replace $YOUR_CONTAINER_REGISTRY
with the full-qualified hostname of your container registry)
Build image for CAP service:
mvn package
pack build $YOUR_CONTAINER_REGISTRY/sflight-srv \
--path srv/target/*-exec.jar \
--buildpack gcr.io/paketo-buildpacks/sap-machine \
--buildpack gcr.io/paketo-buildpacks/java \
--builder paketobuildpacks/builder-jammy-base \
--env SPRING_PROFILES_ACTIVE=cloud \
--env BP_JVM_VERSION=17
bash .github/deployment/kyma/scripts/build-ui-image.sh
You can push all the docker images to your docker registry, using:
docker push $YOUR_CONTAINER_REGISTRY/sflight-hana-deployer
docker push $YOUR_CONTAINER_REGISTRY/sflight-srv
docker push $YOUR_CONTAINER_REGISTRY/sflight-html5-deployer
helm install sflight ./chart --set-file xsuaa.jsonParameters=xs-security.json
- Create Launchpad Service subscription in the BTP Cockpit
- Create a role collection
sflight
- Add role
admin
ofsflight.tXYZ
application to role collection - Add your user to the role collection
- Goto HTML5 Applications
- Start HTML5 application
sapfecaptravel
Additionally, you can add the UI to a Launchpad Service site like it is described in in the last two steps of this tutorial.