この記事は SAP Advent Calendar 2021 の13日分の記事として執筆しています。
Advent Calendarは初めての執筆です。
今回はKymaを使ってみようと思います。
#Kymaとは
SAP BTPのランタイム環境はCloud Foundry、Kyma、ABAPの3つがあります。
KymaはSAPのKubernetesをベースとした開発プラットフォームです。
サーバレス、マイクロサービスを使用したアプリケーションの開発を容易にすることが出来ます。
##Kubernetes
https://kubernetes.io/ja/docs/home/
#前提条件
・SAP BTPのトライアルアカウントを取得済
・PCのOSはWindow10を使用
#今回の流れ
・SAP BTPのKyma Runtime環境を有効化
・ローカルにコマンドライン環境を作成
・ネームスペースを作成
・Functionを作成
本当はローカルのアプリをKymaに上げるところまでやりたかったですが長くなるのでFunctionを作って終わりとしています
kubectlのインストールを手順にはさみますが、今回やりたいことをやるだけなら画面から操作するだけで可能です。(必要に応じて読み飛ばしてください)
ローカルで作ったアプリなどをkymaに上げるとき、kubectlがあると便利だと思うのでまとめて準備してしまいました。
#SAP BTPに Kyma Runtimeを有効化する
こちらの記事に従ってBTPにKyma Runtimeを有効化してください
もしロールの割当後、エラーになる場合はキャッシュのクリア等行ってください
#ローカルにコマンドライン環境を作成
こちらからcluster をインストール
cmdからKubernetesのコマンドラインツールをインストール
curl -LO "https://dl.k8s.io/release/v1.23.0/bin/windows/amd64/kubectl.exe"
ちゃんとインストールできたか確認
kubectl version --client
Client Version: version.Info{Major:"1", Minor:"23", GitVersion:"v1.23.0", GitCommit:"ab69524f795c42094a6630298ff53f3c3ebab7f4", GitTreeState:"clean", BuildDate:"2021-12-07T18:16:20Z", GoVersion:"go1.17.3", Compiler:"gc", Platform:"windows/amd64"}
Kymaの右上のGet Kubeconfigからconfigファイルをダウンロード
Kubeconfigを設定して設定が反映されているか確認
"configファイルのファイルパス"はローカルにダウンロードしたkubeconfig.ymlのパスを設定
$ENV:KUBECONFIG="configファイルのファイルパス"
kubectl config get-contexts
CURRENT NAME CLUSTER AUTHINFO NAMESPACE
* fad45d7.kyma.shoot.live.k8s-hana.ondemand.com fad45d7.kyma.shoot.live.k8s-hana.ondemand.com OIDCUser
#ネームスペースを作成
devって名前のnamespace を作成
kubectl create namespace dev
namespace/dev created
devが作成されていることを確認
画面右上のAdd new namespaceからも同じように追加できます
#Functionを作成
ネームスペースのdevを選択して左のWorkloadsからFunctionを開く
Create Functionを押下
Edit Environment Variablesを押下
Add Environment Variablesから環境変数を追加
今回はMESSAGEを追加
!が多くなっています
Souceを以下の通り変更してSaveを押下
module.exports = {
main: function (event, context) {
return "Hello " + process.env["MESSAGE"];
}
}
ConfigurationタブからExpose Functionを押してAPI Rulesを追加
Name、Hostname、Access strategiesを設定
HostしたのURLリンクをクリックするとプラウザに**Hello World!!!!**が表示されると思います