Hierdie artikel eindig die reeks vertaalde notas oor OpenWhisk van die skrywer Priti Desai. Vandag sal ons kyk na die proses om OpenWhisk oor Kubernetes te ontplooi met gekorrigeerde opdragte om met huidige weergawes van toepassings te werk. Dit sal ook die proses dek om OpenWhisk-funksies uit te voer deur Knative en TektonCD op Kubernetes te gebruik deur die Nodejs-looptyd te gebruik.
Ontplooi OpenWhisk op Kubernetes
In die loop van 'n paar dae het ek geëksperimenteer met die implementering van OpenWhisk na Kubernetes om 'n eenvoudige en vinnige toetsgrond te skep. En aangesien ek nuut by Kubernetes is, glo ek dat 'n dag en 'n half aan suksesvolle ontplooiing bestee is. IN hierdie Die bewaarplekke het baie duidelike instruksies vir die implementering van OpenWhisk op Kubernetes. Hier is die ontplooiingsinstruksies gemaak vir Mac (Ek sal ook alles op Linux doen, want ek verkies Linux. — ongeveer. vertaler).
Installeer die pakketbestuurder asdf, waarna ons outomaties regstel ~/.bash_profile of sy ekwivalent soos volg:
[Slaan weer hierdie stap op Linux oor. — ongeveer. vertaler]
Installeer minikube en 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
[spesifieke weergawes is geïnstalleer, maar ek het alles nagegaan oor die nuutste beskikbare weergawes vir Linux; Ek vermoed dat u die nuutste veilig kan installeer. — ongeveer. vertaler]
Op Linux word hierdie stap so iets gedoen (alles word in ~/bin geplaas, wat in my PATH gelys is, vertaler se nota):
Installeer Helm en ontplooi dit deur dit te gebruik:
$ 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
[Op Linux met die nuutste weergawes (v3.0.1 was beskikbaar) sal dit 'n bietjie anders wees. — ongeveer. vertaler]
$ wsk property set --apihost 192.168.99.100:31001
$ wsk property set --auth 23bc46b1-71f6-4ed5-8c54-816aa4f8c502:123zO3xZCLrMN6v2BKK1dXYFpXlPkccOFqm12CdAsMgRU4VrNZ9lyGVCGuMDGIwP
Ons kyk na:
$ wsk -i list
Entities in namespace: default
packages
actions
triggers
rules
Probleme en hul oplossings
getsockopt: verbinding geweier
$ 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
Kontroleer dat die houers in die naamruimte is openwhisk in status Running, omdat soms crash dit met foute CreateContainerConfigError.
Invoker initialiseer steeds — Init:1/2
Die proses om verskeie looptydomgewings af te laai, kan lank neem. Om dinge te bespoedig, kan jy 'n verkorte minimum lys in die lêer spesifiseer mycluster.yaml:
whisk:
runtimes: "runtimes-minimal-travis.json"
Houer met naam -installeer-pakkette- omval na Fout
Verhoog net die tydsduur vir lewendheidstoetse.
Installeer OpenWhisk oor Knative
Priti Desai het die installasie bo-op 'n groepering in die IBM-wolk uitgevoer, sowel as op 'n gewone minikube, met behulp van Knative Build en BuildTemplates. Ek sal ook bo-op minukube installeer, gebaseer op hoe dit is beskryf in ons blog vroeër - met behulp van die nuutste sagteware weergawes. Aangesien Knative Build and Build Templates amptelik afgekeur is, sal ek die aanbevole vervanging in die vorm van Tekton Pipelines gebruik. Die res van die artikel is geskryf nadat die dokumentasie vir Tekton Pipelines gelees is, maar is gebaseer op die idees van Priti. Om te werk, sal jy toegang tot een of ander Docker Registry nodig hê - ek, soos die oorspronklike skrywer, sal DockerHub gebruik.
$ sed 's/${DOCKER_USERNAME}/'"$DOCKER_USERNAME"'/' -i taskrun.yaml
Ons pas toe:
$ 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
Om die werk na te gaan, bestaan uit die kry van die peul se naam en kyk na sy status. U kan ook die uitvoeringslogboek van elke stap sien, byvoorbeeld:
$ 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"}
Na uitvoering sal ons 'n prent in die register hê wat ontplooi kan word met die kn-hulpprogram, wat ontwerp is om met Knative-dienste te werk, byvoorbeeld:
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
As jy Gloo gebruik, kan jy die funksionaliteit daarvan soos volg nagaan: