OpenShift Cloud Functionsを試す

こんにちは。平田です。

OpenShiftでサーバレス(Function as a Service)を実現する仕組みであるOpenShift Cloud Functionsを試してみます。

OpenShift Cloud Functionsは、OpenShiftにサーバレス実行環境を追加するもので、オープンソースのサーバレス実行環境であるOpenWhiskを使用します。OpenWhisk on OpenShiftプロジェクトのREADMEを参考に、ローカルのminishift環境に導入します。

  1. minishift環境を起動します。私はRed Hat CDKのものを使いました。
    minishift start --memory 4GB --username <Red Hatアカウント> --password <パスワード>
  2. 試した時点(2018年6月)ではminishiftにバグがあるらしく、ネットワーク設定を変更する手順が記載されているので、これを実行します。
    minishift ssh -- sudo ip link set docker0 promisc on
    minishift openshift config set --patch \
    '{"admissionConfig":
       {"pluginConfig":
         {"openshift.io/ImagePolicy":
           {"configuration":
             {"apiVersion": "v1",
              "kind": "ImagePolicyConfig",
              "resolveImages": "AttemptRewrite"}}}}}'
  3. サーバレス基盤であるOpenWhisk環境を構築するテンプレートを使い、必要なPodを作ります。
    oc login $(minishift console --url) --username admin --password password
    oc new-project openwhisk
    oc process -f https://git.io/openwhisk-template | oc create -f -
  4. Podが起動すれば構築完了です。

構築したOpenWhisk環境で、Node.jsの関数を実行してみます。

  1. READMEの Using wsk を参考に、APIキーをセットします。READMEでは systemというユーザのキーをセットしていますが、手元の環境では動作しませんでした。ここではguestを使用します。
    AUTH_SECRET=$(oc get secret whisk.auth -o yaml | grep "guest:" | awk '{print $2}' | base64 --decode)
    wsk property set --auth $AUTH_SECRET --apihost $(oc get route/openwhisk --template="{{.spec.host}}")
  2. 以下の内容で hello.js を作ります。
    function main(params) {
      var name = params.name || 'World';
      return {payload: 'Hello, ' + name + '!'};
    }
  3. hello.jsを登録します。自己証明書の検証をスキップする -i オプションをつけています。
    wsk action -i create hello hello.js
  4. 実行してみます。
    wsk action -ir -p name Ironman invoke hello
    {
        "payload": "Hello, Ironman!"
    }

 

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です