See artikkel lõpetab autori tõlgitud märkmete sarja OpenWhiski kohta Priti Desai. Täna vaatleme OpenWhiski juurutamise protsessi Kubernetesi kaudu parandatud käskudega, et töötada rakenduste praeguste versioonidega. See hõlmab ka OpenWhiski funktsioonide käitamise protsessi Kubernetesis Knative'i ja TektonCD abil, kasutades Nodejs'i käitusaega.
OpenWhiski juurutamine Kubernetesis
Mõne päeva jooksul katsetasin OpenWhiski juurutamist Kubernetesesse, et luua lihtne ja kiire testimiskeskkond. Ja kuna olen Kubernetes uus, usun, et poolteist päeva kulus edukale kasutuselevõtule. IN see Hoidlates on väga selged juhised OpenWhiski juurutamiseks Kubernetes. Siin on Maci jaoks tehtud juurutusjuhised (Teen kõike ka Linuxis, sest eelistan Linuxit. — ca. tõlkija).
Paketihalduri installimine asdf, mille järel parandame automaatselt ~/.bash_profile või selle ekvivalent selline:
[Jällegi jätke see samm Linuxis vahele. — ca. tõlkija]
Installige minikube ja 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
[konkreetsed versioonid on installitud, kuid ma kontrollisin kõike Linuxi uusimate saadaolevate versioonide puhul; Ma kahtlustan, et saate uusima turvaliselt installida. — ca. tõlkija]
Linuxis tehakse see samm umbes nii (kõik asetatakse kausta ~/bin, mis on loetletud minu PATH-is, tõlkija märkus):
$ 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
[Uusimate versioonidega Linuxis (v3.0.1 oli saadaval) on see veidi erinev. — ca. tõlkija]
$ wsk property set --apihost 192.168.99.100:31001
$ wsk property set --auth 23bc46b1-71f6-4ed5-8c54-816aa4f8c502:123zO3xZCLrMN6v2BKK1dXYFpXlPkccOFqm12CdAsMgRU4VrNZ9lyGVCGuMDGIwP
Kontrollime:
$ wsk -i list
Entities in namespace: default
packages
actions
triggers
rules
Probleemid ja lahendused
getsockopt: ühendamisest keelduti
$ 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
Kontrollige, kas konteinerid on nimeruumis openwhisk olekus Running, sest mõnikord jookseb see vigadega kokku CreateContainerConfigError.
Invoker initsialiseerub endiselt — Init:1/2
Erinevate käituskeskkondade allalaadimine võib võtta kaua aega. Asjade kiirendamiseks saate failis määrata lühendatud miinimumloendi mycluster.yaml:
whisk:
runtimes: "runtimes-minimal-travis.json"
Nimega konteiner -installi-paketid- jookseb kokku veaga
Lihtsalt suurendage elujõulisuse testide ajalõpu.
OpenWhiski installimine üle Knative'i
Priti Desai teostas installimise nii IBMi pilve klastri peale kui ka tavalisele minikube, kasutades Knative Build ja BuildTemplates. Paigaldan ka minukube peale, kuidas seda kirjeldati meie ajaveebis varem - kasutades uusimaid tarkvaraversioone. Kuna Knative Build ja BuildTemplates on ametlikult aegunud, kasutan soovitatud asendust Tektoni torujuhtmete kujul. Ülejäänud artikkel on kirjutatud pärast Tekton Pipelinesi dokumentatsiooni lugemist, kuid põhineb Priti ideedel. Töötamiseks vajate juurdepääsu mõnele Dockeri registrile – mina, nagu algne autor, kasutan DockerHubi.
$ sed 's/${DOCKER_USERNAME}/'"$DOCKER_USERNAME"'/' -i taskrun.yaml
Rakendame:
$ 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
Töö kontrollimine seisneb kauna nime hankimises ja selle oleku vaatamises. Samuti saate vaadata iga sammu täitmislogi, näiteks:
$ 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"}
Pärast täitmist on meil registris pilt, mida saab juurutada utiliidi kn abil, mis on loodud töötama näiteks Knative'i teenustega:
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
Kui kasutate Glood, saate selle funktsionaalsust kontrollida järgmiselt: