Atik sa a fini seri nòt tradui sou OpenWhisk nan men otè a Priti Desai. Jodi a nou pral gade pwosesis pou deplwaye OpenWhisk sou Kubernetes ak kòmandman korije pou travay ak vèsyon aktyèl aplikasyon yo. Li pral kouvri tou pwosesis la nan kouri fonksyon OpenWhisk lè l sèvi avèk Knative ak TektonCD sou Kubernetes lè l sèvi avèk ègzekutabl Nodejs la.
Deplwaye OpenWhisk sou Kubernetes
Pandan kèk jou, mwen te fè eksperyans ak deplwaye OpenWhisk nan Kubernetes pou kreye yon teren tès ki senp epi rapid. Epi kòm mwen nouvo nan Kubernetes, mwen kwè ke yon jou ak yon mwatye te pase sou deplwaman siksè. NAN sa a Repozitwa yo gen enstriksyon trè klè pou deplwaye OpenWhisk sou Kubernetes. Men enstriksyon deplwaman yo te fè pou Mac (Mwen pral fè tou sa sou Linux paske mwen pito Linux. -apeprè tradiktè).
Enstale manadjè pake a asdf, apre sa nou otomatikman korije ~/.bash_profile oswa ekivalan li tankou sa a:
[Ankò, sote etap sa a sou Linux. -apeprè tradiktè]
Enstale minikube ak 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
[vèsyon espesifik yo enstale, men mwen tcheke tout bagay sou dènye vèsyon ki disponib pou Linux; Mwen sispèk ke ou ka san danje enstale dènye. -apeprè tradiktè]
Sou Linux, etap sa a fè yon bagay tankou sa a (tout bagay yo mete nan ~/bin, ki nan lis nan PATH mwen an, nòt tradiktè a):
$ 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
[Sou Linux ak dènye vèsyon yo (v3.0.1 te disponib) li pral yon ti kras diferan. -apeprè tradiktè]
$ wsk property set --apihost 192.168.99.100:31001
$ wsk property set --auth 23bc46b1-71f6-4ed5-8c54-816aa4f8c502:123zO3xZCLrMN6v2BKK1dXYFpXlPkccOFqm12CdAsMgRU4VrNZ9lyGVCGuMDGIwP
Nou tcheke:
$ wsk -i list
Entities in namespace: default
packages
actions
triggers
rules
Pwoblèm ak solisyon yo
getsockopt: koneksyon refize
$ 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
Tcheke ke resipyan yo nan espas non an openwhisk nan estati Running, paske pafwa li aksidan ak erè CreateContainerConfigError.
Invoker toujou inisyalize - Init:1/2
Pwosesis telechaje divès kalite anviwònman ègzekutabl ka pran yon bon bout tan. Pou pi vit bagay yo, ou ka presize yon lis minimòm ki pi kout nan dosye a mycluster.yaml:
whisk:
runtimes: "runtimes-minimal-travis.json"
Veso ki gen non -enstale-pakè- aksidan nan Erè
Jis ogmante timeout yo pou tès liveness.
Enstale OpenWhisk sou Knative
Priti Desai te fè enstalasyon an sou tèt yon gwoup nan nwaj IBM, osi byen ke sou yon minikube regilye, lè l sèvi avèk Knative Build ak BuildTemplates. Mwen pral enstale tou sou tèt minukube, ki baze sou ki jan li te dekri nan blog nou an pi bonè - lè l sèvi avèk dènye vèsyon lojisyèl yo. Depi Knative Build ak BuildTemplates yo te ofisyèlman depreche, mwen pral itilize ranplasman rekòmande a nan fòm Tekton Pipelines. Rès atik la te ekri apre yo fin li dokimantasyon pou Tekton Pipelines, men li baze sou lide Priti. Pou travay, w ap bezwen aksè nan kèk Rejis Docker - Mwen, tankou otè orijinal la, pral sèvi ak DockerHub.
$ sed 's/${DOCKER_USERNAME}/'"$DOCKER_USERNAME"'/' -i taskrun.yaml
Nou aplike:
$ 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
Tcheke travay la konsiste de jwenn non gous la ak gade estati li yo. Ou ka wè tou rejis ekzekisyon chak etap, pou egzanp:
$ 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"}
Apre egzekisyon an, nou pral gen yon imaj nan Rejis la ki ka deplwaye lè l sèvi avèk sèvis piblik kn, ki fèt pou travay ak sèvis Knative, pou egzanp:
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
Si ou itilize Gloo, ou ka tcheke fonksyonalite li yo tankou sa a: