Szerver nélküli számítástechnika OpenWhisk segítségével, 4. rész
Ez a cikk befejezi a szerző OpenWhiskről szóló lefordított megjegyzéseinek sorozatát Priti Desai. Ma megvizsgáljuk az OpenWhisk Kubernetes feletti telepítésének folyamatát javított parancsokkal, hogy az alkalmazások jelenlegi verzióival működjön együtt. Leírja továbbá az OpenWhisk függvények Knative és TektonCD használatával történő futtatását Kubernetesen a Nodejs futtatókörnyezet használatával.
OpenWhisk telepítése Kubernetesen
Néhány nap leforgása alatt kísérleteztem az OpenWhisk Kubernetes rendszerbe való telepítésével, hogy egyszerű és gyors tesztelési teret hozzak létre. És mivel új vagyok a Kubernetesben, úgy gondolom, hogy másfél napot töltöttem a sikeres telepítéssel. BAN BEN ezt A tárolók nagyon világos utasításokat tartalmaznak az OpenWhisk Kubernetesen történő telepítéséhez. Íme a Mac-hez készült telepítési utasítások (Én is mindent Linuxon fogok csinálni, mert jobban szeretem a Linuxot. — kb. fordító).
A csomagkezelő telepítése asdf, ami után automatikusan kijavítjuk ~/.bash_profile vagy ennek megfelelője:
[Ismét hagyja ki ezt a lépést Linuxon. — kb. fordító]
A minikube és a kubelet telepítése:
$ asdf install kubectl 1.9.0
$ asdf global kubectl 1.9.0
$ asdf install minikube 0.25.2
$ asdf global minikube 0.25.2
[bizonyos verziók telepítve vannak, de mindent ellenőriztem a Linuxhoz elérhető legújabb verziókon; Gyanítom, hogy nyugodtan telepítheti a legújabbat. — kb. fordító]
Linuxon ez a lépés valahogy így történik (minden a ~/bin mappába kerül, ami a PATH-ban van felsorolva, a fordító megjegyzése):
$ brew install kubernetes-helm
$ helm init # init Helm Tiller, не нужно на Helm v3+
$ kubectl get pods -n kube-system # verify that tiller-deploy is in the running state, не нужно на helm v3+
$ kubectl create clusterrolebinding tiller-cluster-admin --clusterrole=cluster-admin --serviceaccount=kube-system:default
$ helm install ./openwhisk/helm/ --namespace=openwhisk -f mycluster.yaml
[A legújabb verziójú Linuxon (elérhető volt a v3.0.1) ez egy kicsit más lesz. — kb. fordító]
$ wsk property set --apihost 192.168.99.100:31001
$ wsk property set --auth 23bc46b1-71f6-4ed5-8c54-816aa4f8c502:123zO3xZCLrMN6v2BKK1dXYFpXlPkccOFqm12CdAsMgRU4VrNZ9lyGVCGuMDGIwP
Ellenőrizzük:
$ wsk -i list
Entities in namespace: default
packages
actions
triggers
rules
Problémák és megoldások
getsockopt: kapcsolat elutasítva
$ wsk -i list
error: Unable to obtain the list of entities for namespace 'default': Get http://192.168.99.100:31001/api/v1/namespaces/_/actions?limit=0&skip=0: dial tcp 192.168.99.100:31001: getsockopt: connection refused
Annak ellenőrzése, hogy a tárolók a névtérben vannak-e openwhisk állapotában Running, mert néha hibákkal összeomlik CreateContainerConfigError.
A hívó még mindig inicializálva – Init:1/2
A különféle futtatókörnyezetek letöltésének folyamata sokáig tarthat. A folyamat felgyorsítása érdekében megadhat egy rövidített minimumlistát a fájlban mycluster.yaml:
whisk:
runtimes: "runtimes-minimal-travis.json"
Konténer névvel -telepítési csomagok- összeomlik a hiba miatt
Csak növelje az életképességi tesztek időtúllépését.
Az OpenWhisk telepítése a Knative felett
A Priti Desai a telepítést az IBM felhő egy fürtjének tetejére, valamint egy normál minikube-ra hajtotta végre, a Knative Build és BuildTemplates segítségével. A minukube tetejére is telepítem, a hogyan alapján le volt írva blogunkban korábban - a szoftverek legújabb verzióival. Mivel a Knative Build és BuildTemplates hivatalosan elavulttá vált, az ajánlott cserét fogom használni a Tekton Pipelines formájában. A cikk többi része a Tekton Pipelines dokumentációjának elolvasása után készült, de Priti ötletein alapul. A munkához hozzá kell férnie néhány Docker Registry-hez – az eredeti szerzőhöz hasonlóan én is a DockerHub-ot fogom használni.
$ sed 's/${DOCKER_USERNAME}/'"$DOCKER_USERNAME"'/' -i taskrun.yaml
Jelentkezünk:
$ kubectl apply -f taskrun.yaml
pipelineresource.tekton.dev/openwhisk-nodejs-runtime-git created
pipelineresource.tekton.dev/openwhisk-nodejs-helloworld-image created
taskrun.tekton.dev/openwhisk-nodejs-helloworld created
A munka ellenőrzése a pod nevének beszerzéséből és állapotának megtekintéséből áll. Megtekintheti az egyes lépések végrehajtási naplóját is, például:
$ kubectl get taskrun
NAME SUCCEEDED REASON STARTTIME COMPLETIONTIME
openwhisk-nodejs-helloworld True Succeeded 5m15s 44s
$ kubectl get pod openwhisk-nodejs-helloworld-pod-4640d3
NAME READY STATUS RESTARTS AGE
openwhisk-nodejs-helloworld-pod-4640d3 0/6 Completed 0 5m20s
$ kubectl logs openwhisk-nodejs-helloworld-pod-4640d3 -c step-git-source-openwhisk-nodejs-runtime-git-r8vhr
{"level":"info","ts":1576532931.5880227,"logger":"fallback-logger","caller":"logging/config.go:69","msg":"Fetch GitHub commit ID from kodata failed: open /var/run/ko/refs/heads/master: no such file or directory"}
{"level":"info","ts":1576532936.538926,"logger":"fallback-logger","caller":"git/git.go:81","msg":"Successfully cloned https://github.com/apache/openwhisk-runtime-nodejs.git @ master in path /workspace/runtime-git"}
{"level":"warn","ts":1576532936.5395331,"logger":"fallback-logger","caller":"git/git.go:128","msg":"Unexpected error: creating symlink: symlink /tekton/home/.ssh /root/.ssh: file exists"}
{"level":"info","ts":1576532936.8202565,"logger":"fallback-logger","caller":"git/git.go:109","msg":"Successfully initialized and updated submodules in path /workspace/runtime-git"}
A végrehajtás után a rendszerleíró adatbázisban lesz egy képünk, amely a kn segédprogrammal telepíthető, és amely a Knative szolgáltatásokkal való együttműködésre lett kialakítva, például:
kn service create nodejs-helloworld --image docker.io/${DOCKER_USERNAME}/openwhisk-nodejs-helloworld
Service 'nodejs-helloworld' successfully created in namespace 'default'.
Waiting for service 'nodejs-helloworld' to become ready ... OK
Service URL:
http://nodejs-helloworld.default.example.com
Ha Gloo-t használ, a következőképpen ellenőrizheti a működését: