Kini nga artikulo nagtapos sa serye sa gihubad nga mga nota bahin sa OpenWhisk gikan sa tagsulat Priti Desai. Karon atong tan-awon ang proseso sa pag-deploy sa OpenWhisk sa mga Kubernetes nga adunay gitul-id nga mga sugo aron magtrabaho uban sa kasamtangan nga mga bersyon sa mga aplikasyon. Sakup usab niini ang proseso sa pagpadagan sa OpenWhisk function gamit ang Knative ug TektonCD sa Kubernetes gamit ang Nodejs runtime.
Pag-deploy sa OpenWhisk sa Kubernetes
Sulod sa pipila ka mga adlaw, nag-eksperimento ko sa pagdeploy sa OpenWhisk sa Kubernetes aron makahimo og usa ka yano ug paspas nga testing ground. Ug tungod kay bag-o pa ako sa Kubernetes, nagtuo ko nga usa ug tunga ka adlaw ang gigugol sa malampuson nga pagdeploy. SA kini Ang mga repository adunay klaro kaayo nga mga panudlo alang sa pag-deploy sa OpenWhisk sa Kubernetes. Ania ang mga panudlo sa pag-deploy nga gihimo alang sa Mac (Buhaton sab nako ang tanan sa Linux kay mas gusto nako ang Linux. β gibanabana. tighubad).
Pag-instalar sa manager sa package asdf, pagkahuman awtomatiko namong gitul-id ~/.bash_profile o ang katumbas niini sama niini:
[Pag-usab, laktawan kini nga lakang sa Linux. β gibanabana. tighubad]
I-install ang minikube ug 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
[espesipiko nga mga bersyon gi-install, apan akong gisusi ang tanan sa pinakabag-o nga magamit nga mga bersyon alang sa Linux; Nagduda ko nga mahimo nimong luwas nga ma-install ang pinakabag-o. β gibanabana. tighubad]
Sa Linux, kini nga lakang gihimo sama niini (ang tanan gibutang sa ~/bin, nga gilista sa akong PATH, nota sa tighubad):
$ wsk property set --apihost 192.168.99.100:31001
$ wsk property set --auth 23bc46b1-71f6-4ed5-8c54-816aa4f8c502:123zO3xZCLrMN6v2BKK1dXYFpXlPkccOFqm12CdAsMgRU4VrNZ9lyGVCGuMDGIwP
Pagsusi:
$ wsk -i list
Entities in namespace: default
packages
actions
triggers
rules
Mga problema ug ang ilang mga solusyon
getsockopt: koneksyon mibalibad
$ 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
Pagsusi nga ang mga sudlanan naa sa namespace openwhisk sa status Running, kay usahay kini nahagsa uban sa mga sayop CreateContainerConfigError.
Nagsugod pa ang Invoker β Init:1/2
Ang proseso sa pag-download sa nagkalain-laing runtime environment mahimong magdugay. Aron mapadali ang mga butang, mahimo nimong itakda ang usa ka pinamubo nga minimum nga lista sa file mycluster.yaml:
whisk:
runtimes: "runtimes-minimal-travis.json"
Container nga adunay ngalan -instalar-mga pakete- nahagsa sa Error
Dugangi lang ang mga timeout para sa liveness tests.
Pag-instalar sa OpenWhisk sa Knative
Gipatuman ni Priti Desai ang pag-instalar sa ibabaw sa usa ka cluster sa IBM cloud, ingon man sa usa ka regular nga minikube, gamit ang Knative Build ug BuildTemplates. I-install usab nako sa ibabaw sa minukube, base kung giunsa kini gihulagway sa among blog kaniadto - gamit ang pinakabag-o nga bersyon sa software. Tungod kay ang Knative Build ug BuildTemplates opisyal na nga wala na gamita, akong gamiton ang girekomendar nga kapuli sa porma sa Tekton Pipelines. Ang nahabilin sa artikulo gisulat human mabasa ang dokumentasyon alang sa Tekton Pipelines, apan gibase sa mga ideya ni Priti. Aron magtrabaho, kinahanglan nimo ang pag-access sa pipila nga Docker Registry - Ako, sama sa orihinal nga tagsulat, mogamit sa DockerHub.
Among gipadapat ang kasamtangang datos alang niini nga payl:
$ sed 's/${DOCKER_USERNAME}/'"$DOCKER_USERNAME"'/' -i taskrun.yaml
Nag-aplay kami:
$ 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
Ang pagsusi sa trabaho naglangkob sa pagkuha sa ngalan sa pod ug pagtan-aw sa kahimtang niini. Mahimo usab nimong tan-awon ang execution log sa matag lakang, pananglitan:
$ 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"}
Pagkahuman sa pagpatuman, makabaton kami usa ka imahe sa Registry nga mahimong i-deploy gamit ang kn utility, gidisenyo aron magtrabaho sa mga serbisyo sa Knative, pananglitan:
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
Kung mogamit ka sa Gloo, mahimo nimong susihon ang pagpaandar niini sama niini: