"Sabbin Almara". Muna cin giwar a sassa

"Sabbin Almara". Muna cin giwar a sassa

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!

Shirya yanayin aiki

Shigar da Go

Muna bin umarnin daga gidan yanar gizon hukuma:

$ curl -L0 https://dl.google.com/go/go1.13.5.linux-amd64.tar.gz -o go.tar.gz
$ sudo tar -C /usr/local -xzf go.tar.gz
$ echo 'export PATH=$PATH:/usr/local/go/bin' >> ~/.profile

Duba ayyuka:

$ mkdir -p ~/go/src/hello && cd ~/go/src/hello
$ echo 'package main

import "fmt"

func main() {
fmt.Printf("hello, worldn")
}' > hello.go
$ go build
$ ./hello
hello, world

Shigar da faas-cli

Muna bin umarnin daga gidan yanar gizon hukuma:

$ curl -sSL https://cli.openfaas.com | sudo -E sh
x86_64
Downloading package https://github.com/openfaas/faas-cli/releases/download/0.11.3/faas-cli as /tmp/faas-cli
Download complete.

Running with sufficient permissions to attempt to move faas-cli to /usr/local/bin
New version of faas-cli installed to /usr/local/bin
Creating alias 'faas' for 'faas-cli'.
  ___                   _____           ____
 / _  _ __   ___ _ __ |  ___|_ _  __ _/ ___|
| | | | '_  / _  '_ | |_ / _` |/ _` ___ 
| |_| | |_) |  __/ | | |  _| (_| | (_| |___) |
 ___/| .__/ ___|_| |_|_|  __,_|__,_|____/
      |_|

CLI:
 commit:  73004c23e5a4d3fdb7352f953247473477477a64
 version: 0.11.3

Bugu da ƙari, za ku iya kunna bash-completion:

faas-cli completion --shell bash | sudo tee /etc/bash_completion.d/faas-cli

Shigarwa da Sanya Kubernetes

Don haɓakawa, minikube ya isa, don haka shigar da shi kuma kubelet a /usr/local/bin, kuma shigar da helm don shigar da aikace-aikace:

$ curl https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64 -o minikube && chmod +x minikube && sudo mv minikube /usr/local/bin/
$ curl https://storage.googleapis.com/kubernetes-release/release/$(curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt)/bin/linux/amd64/kubectl -o kubectl && chmod +x kubectl && sudo mv kubectl /usr/local/bin/
$ curl https://get.helm.sh/helm-v3.0.2-linux-amd64.tar.gz | tar -xzvf - linux-amd64/helm --strip-components=1; sudo mv helm /usr/local/bin

Kaddamar minikube:

$ minikube start
  minikube v1.6.2 on Debian 8.11
  Automatically selected the 'virtualbox' driver (alternates: [])
  Downloading VM boot image ...
    > minikube-v1.6.0.iso.sha256: 65 B / 65 B [--------------] 100.00% ? p/s 0s
    > minikube-v1.6.0.iso: 150.93 MiB / 150.93 MiB [-] 100.00% 5.67 MiB p/s 27s
  Creating virtualbox VM (CPUs=2, Memory=8192MB, Disk=20000MB) ...
  Preparing Kubernetes v1.17.0 on Docker '19.03.5' ...
  Downloading kubeadm v1.17.0
  Downloading kubelet v1.17.0
  Pulling images ...
  Launching Kubernetes ...  Waiting for cluster to come online ...
  Done! kubectl is now configured to use "minikube"

Binciken:

$ kubectl get pods --all-namespaces
NAMESPACE     NAME                               READY   STATUS    RESTARTS   AGE
kube-system   coredns-6955765f44-knlcb           1/1     Running   0          29m
kube-system   coredns-6955765f44-t9cpn           1/1     Running   0          29m
kube-system   etcd-minikube                      1/1     Running   0          28m
kube-system   kube-addon-manager-minikube        1/1     Running   0          28m
kube-system   kube-apiserver-minikube            1/1     Running   0          28m
kube-system   kube-controller-manager-minikube   1/1     Running   0          28m
kube-system   kube-proxy-hv2wc                   1/1     Running   0          29m
kube-system   kube-scheduler-minikube            1/1     Running   0          28m
kube-system   storage-provisioner                1/1     Running   1          29m

Shigar da OpenFaaS

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:

$ PASSWORD=verysecurerandompasswordstring
$ kubectl -n openfaas create secret generic basic-auth --from-literal=basic-auth-user=admin --from-literal=basic-auth-password="$PASSWORD"
secret/basic-auth created

Mu tura:

$ 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 -n openfaas get deployments -l "release=openfaas, app=openfaas"
NAME                READY   UP-TO-DATE   AVAILABLE   AGE
alertmanager        1/1     1            1           114s
basic-auth-plugin   1/1     1            1           114s
faas-idler          1/1     1            1           114s
gateway             1/1     1            1           114s
nats                1/1     1            1           114s
prometheus          1/1     1            1           114s
queue-worker        1/1     1            1           114s

Duba ayyuka:

$ 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. ).

Sanarwa

  • Gabatarwar
  • Kafa yanayin ci gaba, rushe aikin zuwa ayyuka
  • Aikin baya
  • Aikin gaba
  • Kafa CICD, shirya gwaji
  • Fara zaman wasan gwaji
  • Sakamakon

source: www.habr.com

Add a comment