Pengkomputeran Tanpa Pelayan dengan OpenWhisk, Bahagian 4
Artikel ini menamatkan siri nota terjemahan tentang OpenWhisk daripada pengarang Priti Desai. Hari ini kita akan melihat proses menggunakan OpenWhisk melalui Kubernetes dengan arahan yang diperbetulkan untuk berfungsi dengan versi aplikasi semasa. Ia juga akan meliputi proses menjalankan fungsi OpenWhisk menggunakan Knative dan TektonCD pada Kubernetes menggunakan masa jalan Nodejs.
Menggunakan OpenWhisk pada Kubernetes
Sepanjang beberapa hari, saya bereksperimen dengan menggunakan OpenWhisk ke Kubernetes untuk mencipta medan ujian yang mudah dan pantas. Dan kerana saya baru menggunakan Kubernetes, saya percaya bahawa satu setengah hari telah dibelanjakan untuk penggunaan yang berjaya. DALAM ini Repositori mempunyai arahan yang sangat jelas untuk menggunakan OpenWhisk pada Kubernetes. Berikut ialah arahan penggunaan yang dibuat untuk Mac (Saya juga akan melakukan segala-galanya di Linux kerana saya lebih suka Linux. - lebih kurang penterjemah).
Memasang pengurus pakej asdf, selepas itu kami membetulkan secara automatik ~/.bash_profile atau yang setaraf dengannya seperti ini:
[Sekali lagi, langkau langkah ini pada Linux. - lebih kurang penterjemah]
Pasang minikube dan kubelet:
$ asdf install kubectl 1.9.0
$ asdf global kubectl 1.9.0
$ asdf install minikube 0.25.2
$ asdf global minikube 0.25.2
[versi tertentu dipasang, tetapi saya menyemak segala-galanya pada versi terkini yang tersedia untuk Linux; Saya mengesyaki bahawa anda boleh memasang terbaharu dengan selamat. - lebih kurang penterjemah]
Di Linux, langkah ini dilakukan seperti ini (semuanya dimasukkan ke dalam ~/bin, yang disenaraikan dalam PATH saya, nota penterjemah):
$ wsk property set --apihost 192.168.99.100:31001
$ wsk property set --auth 23bc46b1-71f6-4ed5-8c54-816aa4f8c502:123zO3xZCLrMN6v2BKK1dXYFpXlPkccOFqm12CdAsMgRU4VrNZ9lyGVCGuMDGIwP
Kami menyemak:
$ wsk -i list
Entities in namespace: default
packages
actions
triggers
rules
Masalah dan penyelesaiannya
getsockopt: sambungan ditolak
$ 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
Memeriksa sama ada bekas berada dalam ruang nama openwhisk dalam status Running, kerana kadang-kadang ia ranap dengan ralat CreateContainerConfigError.
Invoker masih memulakan β Init:1/2
Proses memuat turun pelbagai persekitaran masa jalan boleh mengambil masa yang lama. Untuk mempercepatkan perkara, anda boleh menentukan senarai minimum yang dipendekkan dalam fail mycluster.yaml:
whisk:
runtimes: "runtimes-minimal-travis.json"
Bekas dengan nama -pasang-pakej- ranap kepada Ralat
Hanya tambahkan tamat masa untuk ujian keaktifan.
Memasang OpenWhisk melalui Knative
Priti Desai menjalankan pemasangan di atas gugusan dalam awan IBM, serta pada minikube biasa, menggunakan Knative Build dan BuildTemplates. Saya juga akan memasang di atas minukube, berdasarkan bagaimana ia telah diterangkan dalam blog kami tadi - menggunakan versi perisian terkini. Memandangkan Knative Build dan BuildTemplates telah ditamatkan secara rasmi, saya akan menggunakan penggantian yang disyorkan dalam bentuk Talian Paip Tekton. Selebihnya artikel itu ditulis selepas membaca dokumentasi untuk Tekton Pipelines, tetapi berdasarkan idea Priti. Untuk bekerja, anda memerlukan akses kepada beberapa Docker Registry - Saya, seperti pengarang asal, akan menggunakan DockerHub.
$ sed 's/${DOCKER_USERNAME}/'"$DOCKER_USERNAME"'/' -i taskrun.yaml
Kami memohon:
$ 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
Menyemak kerja terdiri daripada mendapatkan nama pod dan melihat statusnya. Anda juga boleh melihat log pelaksanaan setiap langkah, contohnya:
$ 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"}
Selepas pelaksanaan, kami akan mempunyai imej dalam Pejabat Pendaftaran yang boleh digunakan menggunakan utiliti kn, yang direka untuk berfungsi dengan perkhidmatan Knative, contohnya:
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
Jika anda menggunakan Gloo, anda boleh menyemak fungsinya seperti ini: