Skip to content
Merged
Show file tree
Hide file tree
Changes from 8 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
126 changes: 81 additions & 45 deletions from-zero-to-cap-on-kyma/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,11 @@ DOCKER_ACCOUNT?=provide-as-env-var
NAMESPACE?=provide-as-env-var
CLUSTER_DOMAIN?=provide-as-env-var

APP_VERSION=0.0.12
BUILDER=paketobuildpacks/builder-jammy-base:latest
BUILDPACK=paketo-buildpacks/nodejs

APP_VERSION=0.0.13
HELM_RELEASE_NAME=bookshop

HANA_DEPLOYER=bookshop-hana-deployer
HANA_DEPLOYER_IMAGE_REPO=${DOCKER_ACCOUNT}/${HANA_DEPLOYER}
Expand All @@ -12,79 +16,111 @@ CAP_SRV=bookshop-srv
CAP_SRV_IMAGE_REPO=${DOCKER_ACCOUNT}/${CAP_SRV}
CAP_SRV_IMAGE=${CAP_SRV_IMAGE_REPO}:${APP_VERSION}

APPROUTER=bookshop-approuter
APPROUTER_IMAGE_REPO=${DOCKER_ACCOUNT}/${APPROUTER}
APPROUTER_IMAGE=${APPROUTER_IMAGE_REPO}:${APP_VERSION}

init:
cds init bookshop --add tiny-sample,nodejs
cds init bookshop --add tiny-sample
cd bookshop && \
cds add hana,xsuaa --for production && \
cds add approuter && \
cd -

run-local:
cds watch bookshop

add-hana:
cd bookshop && cds add hana --for production && cd -
create-namespace:
kubectl create namespace ${NAMESPACE}

prepare-kyma-for-deployment:
kubectl config set-context --current --namespace=${NAMESPACE}
kubectl label namespace ${NAMESPACE} istio-injection=enabled --overwrite
./create-docker-pull-secret.sh

add-istio-destination-rule:
mkdir -p bookshop/chart/templates && \
./add-destination-rule.sh > bookshop/chart/templates/destination-rule-approuter.yaml

create-helm-chart:
cd bookshop && cds add helm && cd -

add-containerize:
cd bookshop && \
cds add containerize && \
cd -

add-required-libs:
cd bookshop && npm i passport && npm i @sap/xssec && cd -
cds-build-deploy:
cd bookshop && \
cds up -2 k8s && \
cd -

build-hana-deployer:
cds-build:
cds build -in bookshop --production

build-hana-deployer: cds-build
DOCKER_DEFAULT_PLATFORM=linux/amd64 pack build ${HANA_DEPLOYER} --tag ${HANA_DEPLOYER_IMAGE} \
--path bookshop/gen/db \
--buildpack gcr.io/paketo-buildpacks/nodejs \
--builder paketobuildpacks/builder:base \
--buildpack ${BUILDPACK} \
--builder ${BUILDER} \
--env BP_NODE_RUN_SCRIPTS=""

push-hana-deployer:
docker push ${HANA_DEPLOYER_IMAGE}

build-cap-srv:
cds build -in bookshop --production
DOCKER_DEFAULT_PLATFORM=linux/amd64 pack build ${CAP_SRV} --tag ${CAP_SRV_IMAGE}\
build-cap-srv: cds-build
DOCKER_DEFAULT_PLATFORM=linux/amd64 pack build ${CAP_SRV} --tag ${CAP_SRV_IMAGE} \
--path bookshop/gen/srv \
--buildpack gcr.io/paketo-buildpacks/nodejs \
--builder paketobuildpacks/builder:base \
--buildpack ${BUILDPACK} \
--builder ${BUILDER} \
--env BP_NODE_RUN_SCRIPTS=""

push-cap-srv:
docker push ${CAP_SRV_IMAGE}

prepare-kyma-for-deployment:
kubectl create namespace ${NAMESPACE}
kubectl label namespace ${NAMESPACE} istio-injection=enabled

create-helm-chart:
cd bookshop && cds add helm && cd -
build-approuter: cds-build
DOCKER_DEFAULT_PLATFORM=linux/amd64 pack build ${APPROUTER} --tag ${APPROUTER_IMAGE} \
--path bookshop/app/router \
--buildpack ${BUILDPACK} \
--builder ${BUILDER} \
--env BP_NODE_RUN_SCRIPTS=""

deploy-dry-run:
helm template cap-bookshop ./bookshop/chart --namespace ${NAMESPACE} \
--set hana-deployer.image.tag=${APP_VERSION} \
--set hana-deployer.image.repository=${HANA_DEPLOYER_IMAGE_REPO} \
--set srv.image.tag=${APP_VERSION} \
--set srv.image.repository=${CAP_SRV_IMAGE_REPO} \
--set global.domain=${CLUSTER_DOMAIN} \
--values bookshop/chart/values.yaml \
--values ./values-cds.yaml

deploy:
helm upgrade --install cap-bookshop ./bookshop/chart --namespace ${NAMESPACE} \
--set hana-deployer.image.tag=${APP_VERSION} \
--set hana-deployer.image.repository=${HANA_DEPLOYER_IMAGE_REPO} \
--set srv.image.tag=${APP_VERSION} \
--set srv.image.repository=${CAP_SRV_IMAGE_REPO} \
--set global.domain=${CLUSTER_DOMAIN} \
--values bookshop/chart/values.yaml \
--values ./values-cds.yaml

check-pods:
kubectl get po --namespace ${NAMESPACE}
push-approuter:
docker push ${APPROUTER_IMAGE}

deploy-dry-run: cds-build
helm template ${HELM_RELEASE_NAME} ./bookshop/gen/chart \
--namespace ${NAMESPACE} \
--set global.image.tag=${APP_VERSION} \
--set approuter.env.PLATFORM_COOKIE_NAME=KYMA_APP_SESSION_ID \
--values bookshop/gen/chart/values.yaml \
--set-file xsuaa.jsonParameters=bookshop/xs-security.json

deploy: cds-build
helm upgrade --install ${HELM_RELEASE_NAME} ./bookshop/gen/chart \
--namespace ${NAMESPACE} \
--set global.image.tag=${APP_VERSION} \
--set approuter.env.PLATFORM_COOKIE_NAME=KYMA_APP_SESSION_ID \
--values bookshop/gen/chart/values.yaml \
--set-file xsuaa.jsonParameters=bookshop/xs-security.json \
--wait --wait-for-jobs

check-status:
kubectl rollout status deployment bookshop-srv --namespace ${NAMESPACE} --timeout=8m
kubectl rollout status deployment bookshop-approuter --namespace ${NAMESPACE} --timeout=8m

check-hana-deployer-logs:
kubectl -n ${NAMESPACE} logs -l app.kubernetes.io/name=hana-deployer

check-cap-srv-logs:
kubectl -n ${NAMESPACE} logs -l app.kubernetes.io/name=srv

open-deployed-app:
open https://cap-bookshop-srv-${NAMESPACE}.${CLUSTER_DOMAIN}
check-approuter-logs:
kubectl -n ${NAMESPACE} logs -l app.kubernetes.io/name=approuter

undeploy:
helm del cap-bookshop --namespace ${NAMESPACE}
helm del ${HELM_RELEASE_NAME} --namespace ${NAMESPACE} --wait

cleanup:
kubectl delete namespace ${NAMESPACE}
rm -rf bookshop
Loading
Loading