A cikin wannan labarin, zan kafa yanayin aiki don haɓaka wasan "Epics", kuma zan karya wasan da kansa cikin sassan da suka dace don amfani a cikin OpenFaaS. Zan yi duk magudi akan Linux, zan tura Kubernetes a cikin minikube ta amfani da VirtualBox. Injin aikina yana da core processor 2 da 12GB na RAM; Ina amfani da SSD azaman faifan tsarin. Zan yi amfani da debian 8 a matsayin babban tsarin ci gaba na, tare da shigar da emacs, sudo, git da fakitin Virtualbox, za a shigar da komai ta hanyar zazzagewa daga GitHub da sauran hanyoyin. Za mu shigar da waɗannan aikace-aikacen a /usr/local/bin sai dai in an ƙayyade. Bari mu fara!
Masu haɓakawa suna ba da shawarar ƙirƙirar wuraren suna 2 don aiki da su:
$ kubectl apply -f https://raw.githubusercontent.com/openfaas/faas-netes/master/namespaces.yml
namespace/openfaas created
namespace/openfaas-fn created
Ƙara ma'ajiyar kwalkwali:
$ helm repo add openfaas https://openfaas.github.io/faas-netes/
"openfaas" has been added to your repositories
Taswirar tana da ikon saita kalmar sirri kafin shigarwa, bari mu yi amfani da shi kuma mu adana bayanan shiga azaman sirrin k8s:
$ helm repo update
Hang tight while we grab the latest from your chart repositories...
...Successfully got an update from the "openfaas" chart repository
Update Complete. Happy Helming!
$ helm upgrade openfaas --install openfaas/openfaas --namespace openfaas --set functionNamespace=openfaas-fn --set generateBasicAuth=false
Release "openfaas" does not exist. Installing it now.
NAME: openfaas
LAST DEPLOYED: Fri Dec 25 10:28:22 2019
NAMESPACE: openfaas
STATUS: deployed
REVISION: 1
TEST SUITE: None
NOTES:
To verify that openfaas has started, run:
kubectl -n openfaas get deployments -l "release=openfaas, app=openfaas"
Bayan wani lokaci, muna gudanar da umarnin da aka tsara:
$ kubectl rollout status -n openfaas deploy/gateway
deployment "gateway" successfully rolled out
$ kubectl port-forward -n openfaas svc/gateway 8080:8080 &
[1] 6985
Forwarding from 127.0.0.1:8080 -> 8080
$ echo -n $PASSWORD | faas-cli login --username admin --password-stdin
Calling the OpenFaaS server to validate the credentials...
Handling connection for 8080
WARNING! Communication is not secure, please consider using HTTPS. Letsencrypt.org offers free SSL/TLS certificates.
credentials saved for admin http://127.0.0.1:8080
$ faas-cli list
Function Invocations Replicas
Shigar da Mongodb
Muna shigar da komai ta amfani da helm:
$ helm repo add stable https://kubernetes-charts.storage.googleapis.com/
"stable" has been added to your repositories
$ helm install stable/mongodb --generate-name
NAME: mongodb-1577466908
LAST DEPLOYED: Fri Dec 25 11:15:11 2019
NAMESPACE: default
STATUS: deployed
REVISION: 1
TEST SUITE: None
NOTES:
** Please be patient while the chart is being deployed **
MongoDB can be accessed via port 27017 on the following DNS name from within your cluster:
mongodb-1577466908.default.svc.cluster.local
To get the root password run:
export MONGODB_ROOT_PASSWORD=$(kubectl get secret --namespace default mongodb-1577466908 -o jsonpath="{.data.mongodb-root-password}" | base64 --decode)
To connect to your database run the following command:
kubectl run --namespace default mongodb-1577466908-client --rm --tty -i --restart='Never' --image bitnami/mongodb --command -- mongo admin --host mongodb-1577466908 --authenticationDatabase admin -u root -p $MONGODB_ROOT_PASSWORD
To connect to your database from outside the cluster execute the following commands:
kubectl port-forward --namespace default svc/mongodb-1577466908 27017:27017 &
mongo --host 127.0.0.1 --authenticationDatabase admin -p $MONGODB_ROOT_PASSWORD
Binciken:
kubectl run --namespace default mongodb-1577466908-client --rm --tty -i --restart='Never' --image bitnami/mongodb --command -- mongo admin --host mongodb-1577466908 --authenticationDatabase admin -u root -p $(kubectl get secret --namespace default mongodb-1577466908 -o jsonpath="{.data.mongodb-root-password}" | base64 --decode)
If you don't see a command prompt, try pressing enter.
> db.version();
4.0.14
Latsa ctrl+D don fita daga akwati.
Saita emacs
A ka'ida, an riga an saita komai bisa ga wannan labarin, don haka ba zan yi cikakken bayani ba.
Rage wasan zuwa ayyuka
Ana yin hulɗa tare da ayyuka ta hanyar ka'idar http, tabbatarwa daga ƙarshe zuwa ƙarshe tsakanin ayyuka daban-daban na JWT ne. Ana amfani da Mongodb don adana alamomi, da yanayin wasan, bayanan ɗan wasa, jerin motsi na duk wasanni da sauran bayanai. Bari mu dubi mafi ban sha'awa fasali.
rajista
Shigar da wannan aikin shine JSON tare da sunan barkwanci da kalmar sirri. Idan aka kira wannan aiki, sai a duba cewa wannan lakabin ba ya cikin ma’adanar bayanai, idan cak din ya yi nasara, sai a sanya tambarin alias da kalmar sirri a cikin ma’adanar bayanai. Ana buƙatar rajista don shiga cikin wasan sosai.
shigarwa
Shigar da aikin shine JSON tare da sunan barkwanci da kalmar sirri; idan akwai laƙabi a cikin ma'ajin bayanai kuma aka yi nasarar tabbatar da kalmar sirri tare da wanda aka adana a baya a cikin ma'ajin bayanai, an dawo da JWT, wanda dole ne a wuce zuwa wasu ayyuka idan an gama su. ake kira. Hakanan ana shigar da bayanan sabis daban-daban a cikin ma'ajin bayanai, misali, lokacin shiga na ƙarshe, da sauransu.
Duba jerin wasanni
Duk wani mai amfani mara izini na iya buƙatar jerin duk wasanni banda masu aiki. Mai amfani mai izini kuma yana ganin jerin wasanni masu aiki. Sakamakon aikin shine JSON mai ɗauke da jerin wasannin (ID ɗin wasa, sunan mutum-mai karantawa, da sauransu).
Ƙirƙirar wasa
Ayyukan yana aiki ne kawai tare da masu amfani da izini; ana karɓar matsakaicin adadin 'yan wasa a shigarwar, kazalika da sigogin wasan (misali, waɗanne haruffa don kunna wannan wasan, matsakaicin adadin 'yan wasa, da sauransu). Wani siga daban na wasan shine kasancewar kalmar sirri don shiga, wanda ke ba ku damar ƙirƙirar wasannin da ba na jama'a ba. Ta hanyar tsoho, ana ƙirƙirar wasan jama'a. Sakamakon aikin shine JSON, wanda ya ƙunshi filin nasara na halitta, mai gano wasan musamman, da sauran sigogi.
Shiga wasan
Ayyukan yana aiki ne kawai tare da masu amfani da izini, shigarwar shine ID na wasan da kalmar sirri, idan wannan wasan ba na jama'a bane, fitarwa shine JSON tare da sigogin wasan. Mai amfani da izini wanda ya shiga wasan, da kuma mahaliccin wasan, ana kiransa mahalarta wasan.
Duba abubuwan wasan kwaikwayo
Duk wani mai amfani mara izini na iya buƙatar jerin abubuwan da suka faru don wasanni marasa aiki, kuma mai izini mai izini na iya karɓar jerin abubuwan da suka faru don kowane wasa mai aiki. Ƙarin siga zuwa aikin na iya zama lambar taron da mai amfani ya rigaya yana da shi. A wannan yanayin, waɗancan abubuwan da suka faru daga baya ne kawai za a dawo dasu cikin jerin. Ta hanyar ƙaddamar da wannan aikin lokaci-lokaci, mai amfani mai izini yana kallon abin da ke faruwa a wasan. Wannan aikin kuma yana dawo da buƙatar aiki, wanda mai amfani zai iya amsawa ta amfani da aikin aika taron wasan.
Aika taron wasan
Ayyukan yana aiki ne kawai ga mahalarta wasan: yana yiwuwa a fara wasan, yin motsi, jefa kuri'a, rubuta saƙon rubutu wanda aka nuna a cikin jerin abubuwan wasanni, da dai sauransu.
Mai amfani da izini wanda ya ƙirƙiri wasan ya fara rarraba matsayin ga duk mahalarta wasan, gami da kansu, dole ne su tabbatar da rawarsu ta amfani da aikin iri ɗaya. Da zarar an tabbatar da duk wani matsayi, wasan yana canzawa ta atomatik zuwa yanayin dare.
Kididdigar wasanni
Ayyukan yana aiki ne kawai don mahalarta wasan; yana nuna yanayin wasan, jerin da adadin 'yan wasa (sunan laƙabi), matsayi da matsayinsu (matsar da aka yi ko a'a), da sauran bayanai. Kamar yadda yake tare da aikin da ya gabata, komai yana aiki ne kawai ga mahalarta wasan.
Ayyukan ƙaddamarwa lokaci-lokaci
Idan ba a ƙaddamar da wasan na ɗan lokaci da aka ƙayyade lokacin ƙirƙirar wasan ba, za a cire shi ta atomatik daga jerin wasanni masu aiki ta amfani da aikin bayyananne.
Wani aiki na lokaci-lokaci shine tilasta canza yanayin wasan daga dare zuwa rana da dawowa don wasannin da hakan bai faru ba yayin juyawa (misali, ɗan wasan da ke buƙatar amsawa game da taron wasan bai aika da mafita ba saboda wasu dalilai. ).