Palvelimeton tietojenkäsittely OpenWhiskin kanssa, osa 4
Tämä artikkeli päättää kirjoittajan OpenWhiskiä koskevien käännettyjen muistiinpanojen sarjan Priti Desai. Tänään tarkastelemme OpenWhiskin käyttöönottoa Kubernetesin päällä korjatuilla komennoilla toimimaan sovellusten nykyisten versioiden kanssa. Se kattaa myös OpenWhisk-toimintojen suorittamisen Knativella ja TektonCD:llä Kubernetesissa Nodejs-ajonaikaa käyttäen.
OpenWhiskin käyttöönotto Kubernetesissa
Muutaman päivän aikana kokeilin OpenWhiskin käyttöönottoa Kubernetesissa luodakseni yksinkertaisen ja nopean testauskentän. Ja koska olen uusi Kubernetesin käyttäjä, uskon, että puolitoista päivää kului onnistuneeseen käyttöönottoon. SISÄÄN tämä Arkistoissa on erittäin selkeät ohjeet OpenWhiskin käyttöönottoon Kubernetesissa. Tässä ovat Macille tehdyt käyttöönotto-ohjeet (Teen myös kaiken Linuxilla, koska pidän Linuxista. - n. kääntäjä).
Paketinhallinnan asennus asdf, jonka jälkeen korjaamme automaattisesti ~/.bash_profile tai vastaava näin:
[Jälleen ohita tämä vaihe Linuxissa. - n. kääntäjä]
Asenna 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
[tietyt versiot on asennettu, mutta tarkistin kaiken uusimmista saatavilla olevista Linux-versioista; Epäilen, että voit asentaa uusimman turvallisesti. - n. kääntäjä]
Linuxissa tämä vaihe tehdään jotenkin näin (kaikki laitetaan ~/bin-kansioon, joka on lueteltu PATHissani, kääntäjän huomautuksessa):
$ 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
[Linuxissa, jossa on uusimmat versiot (v3.0.1 oli saatavilla), se on hieman erilainen. - n. kääntäjä]
$ wsk property set --apihost 192.168.99.100:31001
$ wsk property set --auth 23bc46b1-71f6-4ed5-8c54-816aa4f8c502:123zO3xZCLrMN6v2BKK1dXYFpXlPkccOFqm12CdAsMgRU4VrNZ9lyGVCGuMDGIwP
tarkista:
$ wsk -i list
Entities in namespace: default
packages
actions
triggers
rules
Ongelmat ja ratkaisut
getsockopt: yhteys evätty
$ 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
Tarkistetaan, että säilöt ovat nimiavaruudessa openwhisk tilassa Running, koska joskus se kaatuu virheiden kanssa CreateContainerConfigError.
Kutsuja alustetaan edelleen — Init:1/2
Erilaisten ajonaikaisten ympäristöjen latausprosessi voi kestää kauan. Asioiden nopeuttamiseksi voit määrittää tiedostoon lyhennetyn vähimmäisluettelon mycluster.yaml:
whisk:
runtimes: "runtimes-minimal-travis.json"
Säiliö, jossa on nimi -asennuspaketit- kaatuu virheeseen
Lisää vain elävyystestien aikakatkaisuja.
OpenWhiskin asentaminen Knativen päälle
Priti Desai suoritti asennuksen klusterin päälle IBM-pilvessä sekä tavalliseen minikubeen käyttämällä Knative Build- ja BuildTemplates-sovelluksia. Asennan myös minukuben päälle, miten se kuvattiin blogissamme aiemmin - käyttämällä uusimpia ohjelmistoversioita. Koska Knative Build ja BuildTemplates on virallisesti vanhentunut, käytän suositeltua korvaavaa Tekton Pipelines -muotoa. Loput artikkelista on kirjoitettu Tekton Pipelinesin dokumentaation lukemisen jälkeen, mutta se perustuu Pritin ideoihin. Toimiaksesi tarvitset pääsyn johonkin Docker-rekisteriin - minä, kuten alkuperäinen kirjoittaja, käytän DockerHubia.
$ sed 's/${DOCKER_USERNAME}/'"$DOCKER_USERNAME"'/' -i taskrun.yaml
Haemme:
$ 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
Teoksen tarkistaminen koostuu podin nimen selvittämisestä ja sen tilan tarkastelusta. Voit myös tarkastella kunkin vaiheen suorituslokia, esimerkiksi:
$ 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"}
Suorituksen jälkeen meillä on rekisterissä kuva, joka voidaan ottaa käyttöön kn-apuohjelmalla ja joka on suunniteltu toimimaan Knative-palveluiden kanssa, esimerkiksi:
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
Jos käytät Glooa, voit tarkistaa sen toimivuuden seuraavasti: