ProHoster > Blog > İdarə > OpenWhisk ilə serversiz hesablama, 4-cü hissə
OpenWhisk ilə serversiz hesablama, 4-cü hissə
Bu məqalə müəllifdən OpenWhisk haqqında tərcümə edilmiş qeydlər seriyasını bitirir Priti Desai. Bu gün biz tətbiqlərin cari versiyaları ilə işləmək üçün düzəldilmiş əmrlərlə OpenWhisk-in Kubernetes üzərindən yerləşdirilməsi prosesinə baxacağıq. O, həmçinin Nodejs iş vaxtından istifadə edərək Kubernetes-də Knative və TektonCD-dən istifadə edərək OpenWhisk funksiyalarının icrası prosesini əhatə edəcək.
OpenWhisk-in Kubernetes-də yerləşdirilməsi
Bir neçə gün ərzində mən sadə və sürətli sınaq meydançası yaratmaq üçün OpenWhisk-i Kubernetes-də yerləşdirməyi sınaqdan keçirdim. Mən Kubernetes-də yeni olduğum üçün inanıram ki, uğurlu yerləşdirməyə bir gün yarım sərf olunub. IN bu Anbarlarda OpenWhisk-i Kubernetes-də yerləşdirmək üçün çox aydın təlimatlar var. Mac üçün hazırlanmış yerləşdirmə təlimatları buradadır (Mən də Linux-da hər şeyi edəcəm, çünki Linux-a üstünlük verirəm. - təqribən. tərcüməçi).
Paket menecerinin quraşdırılması asdf, bundan sonra biz avtomatik düzəliş edirik ~/.bash_profile və ya bunun ekvivalenti:
[Yenə Linux-da bu addımı atlayın. - təqribən. tərcüməçi]
Minikube və kubelet quraşdırın:
$ asdf install kubectl 1.9.0
$ asdf global kubectl 1.9.0
$ asdf install minikube 0.25.2
$ asdf global minikube 0.25.2
[xüsusi versiyalar quraşdırılıb, lakin mən Linux üçün ən son mövcud versiyalarda hər şeyi yoxladım; Sonuncunu etibarlı şəkildə quraşdıra biləcəyinizə şübhə edirəm. - təqribən. tərcüməçi]
Linux-da bu addım belə edilir (hər şey mənim PATH-də, tərcüməçinin qeydində qeyd olunan ~/bin-ə qoyulur):
Helm-i quraşdırın və ondan istifadə edərək yerləşdirin:
$ 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
[Ən son versiyaları olan Linux-da (v3.0.1 mövcud idi) bir az fərqli olacaq. - təqribən. tərcüməçi]
$ wsk property set --apihost 192.168.99.100:31001
$ wsk property set --auth 23bc46b1-71f6-4ed5-8c54-816aa4f8c502:123zO3xZCLrMN6v2BKK1dXYFpXlPkccOFqm12CdAsMgRU4VrNZ9lyGVCGuMDGIwP
Yoxlayırıq:
$ wsk -i list
Entities in namespace: default
packages
actions
triggers
rules
Problemlər və Həll Yolları
getsockopt: əlaqə rədd edildi
$ 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
Konteynerlərin ad məkanında olması yoxlanılır openwhisk statusunda Running, çünki bəzən səhvlərlə çökür CreateContainerConfigError.
Invoker hələ də işə salınır - Başlanğıc: 1/2
Müxtəlif iş vaxtı mühitlərinin endirilməsi prosesi uzun müddət çəkə bilər. İşləri sürətləndirmək üçün faylda qısaldılmış minimum siyahı təyin edə bilərsiniz mycluster.yaml:
whisk:
runtimes: "runtimes-minimal-travis.json"
Adı olan konteyner -quraşdırma paketləri- Xəta ilə çökür
Sadəcə canlılıq testləri üçün fasilələri artırın.
Knative üzərində OpenWhisk quraşdırılması
Priti Desai quraşdırmanı Knative Build və BuildTemplates proqramlarından istifadə edərək IBM buludunda, eləcə də adi minikube-də klasterin üstündə həyata keçirib. Mən də minukubenin üstünə quraşdıracağam, necə olduğuna görə təsvir edilmişdir əvvəllər bloqumuzda - ən son proqram versiyalarından istifadə etməklə. Knative Build və BuildTemplates rəsmi olaraq köhnəldiyi üçün, Təkton Boru Kəmərləri şəklində tövsiyə olunan əvəzetmədən istifadə edəcəyəm. Məqalənin qalan hissəsi Tekton Pipelines üçün sənədləri oxuduqdan sonra yazılmışdır, lakin Pritinin ideyalarına əsaslanır. İşləmək üçün sizə bəzi Docker Registry-ə daxil olmaq lazımdır - mən də orijinal müəllif kimi DockerHub-dan istifadə edəcəyəm.
$ sed 's/${DOCKER_USERNAME}/'"$DOCKER_USERNAME"'/' -i taskrun.yaml
Biz müraciət edirik:
$ 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
İşin yoxlanılması podun adını almaq və onun statusuna baxmaqdan ibarətdir. Siz həmçinin hər bir addımın icra jurnalına baxa bilərsiniz, məsələn:
$ 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"}
İcra etdikdən sonra, Reyestrdə Knative xidmətləri ilə işləmək üçün nəzərdə tutulmuş kn yardım proqramından istifadə edərək yerləşdirilə bilən bir şəkilimiz olacaq, məsələn:
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
Gloo istifadə edirsinizsə, onun funksionallığını belə yoxlaya bilərsiniz: