"New Epics". Tinodya nzou nezvidimbu

"New Epics". Tinodya nzou nezvidimbu

Muchinyorwa chino, ini ndichamisa nharaunda yekushanda yekuvandudza mutambo "Epics", uye zvakare ndichatyora mutambo wacho kuita zvikamu zvakakodzera kushandiswa muOpenFaaS. Ndichaita zvese manipulations paLinux, ini ndichaendesa Kubernetes mu minikube uchishandisa VirtualBox. Muchina wangu webasa une 2 processor cores uye 12GB ye RAM; Ini ndinoshandisa SSD seyo system disk. Ini ndichashandisa debian 8 seyangu huru yekuvandudza system, ine emacs, sudo, git uye virtualbox mapakeji akaiswa, zvimwe zvese zvichaiswa nekurodha kubva kuGitHub uye mamwe masosi. Isu tichaisa aya maapplication mukati /usr/local/bin kunze kwekunge zvataurwa neimwe nzira. Ngatitangei!

Kugadzirira nzvimbo yekushanda

Kuisa Go

Isu tinotevedzera mirairo kubva kune yepamutemo webhusaiti:

$ 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

Kuongorora kushanda:

$ 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

Kuisa faas-cli

Isu tinotevedzera mirairo kubva kune yepamutemo webhusaiti:

$ 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

Uyezve, iwe unogona kugonesa bash-kupedzisa:

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

Kuisa uye Kugadzirisa Kubernetes

Nekusimudzira, minikube yakakwana, saka isa iyo uye kubelet mu / usr / yemunharaunda / bin, uye isa helm yekuisa maapplication:

$ 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

Tanga 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"

Tinotarisa:

$ 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

Kuisa OpenFaaS

Vagadziri vanokurudzira kugadzira maviri mazita ekushanda nawo:

$ kubectl apply -f https://raw.githubusercontent.com/openfaas/faas-netes/master/namespaces.yml
namespace/openfaas created
namespace/openfaas-fn created

Wedzera repository yehelm:

$ helm repo add openfaas https://openfaas.github.io/faas-netes/
"openfaas" has been added to your repositories

Iyo chati ine kugona kuseta password isati yaiswa, ngatiishandise uye tichengetedze data rekuwana sechakavanzika chek8s:

$ 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

Ngatitumire:

$ 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"

Pashure penguva yakati, tinomhanya murairo wakarongwa:

$ 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

Kuongorora kushanda:

$ 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

Kuisa Mongodb

Isu tinoisa zvese tichishandisa 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

Tinotarisa:

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

Dzvanya ctrl+D kuti ubude mugaba.

Kugadzika emacs

In musimboti, zvinhu zvose zvakanga zvatogadzirwa maererano ichi chinyorwa, saka handisi kuzoenda mune zvakadzama.

Kuputsa mutambo kuita mabasa

Kudyidzana nemabasa kunoitwa kuburikidza ne http protocol, kupera-kusvika-kumagumo kuvimbiswa pakati pemabasa akasiyana kunopihwa neJWT. Mongodb inoshandiswa kuchengetedza zviratidzo, pamwe nemamiriro emutambo, data yevatambi, kutevedzana kwekufamba kwemitambo yese uye rumwe ruzivo. Ngatitarisei zvakanyanya kunakidza maficha.

kunyoresa

Iko kupinza kwebasa iri ndiJSON ine mutambo wezita uye password. Kana basa iri richinge radanwa, rinotariswa kuti iri alias haisi mudhatabhesi; kana cheki ikabudirira, iyo alias uye password hash inoiswa mudhatabhesi. Kunyoresa kunodiwa kuti utore chikamu mumutambo.

kupinda

Iyo yekupinza basa ndeye JSON ine mutambo wezita uye password; kana paine zita remadunhurirwa mudhatabhesi uye password yakasimbiswa zvinobudirira neiyo yakambochengetwa mudhatabhesi, JWT inodzoserwa, iyo inofanirwa kupfuudzwa kune mamwe mabasa kana yave. akadaidzwa. Akasiyana-siyana masevhisi marekodhi akaiswawo mudhatabhesi, semuenzaniso, yekupedzisira nguva yekupinda, nezvimwe.

Ona rondedzero yemitambo

Chero mushandisi asina mvumo anogona kukumbira runyorwa rwemitambo yese kunze kweanoshanda. Mushandisi ane mvumo anoonawo runyoro rwemitambo inoshanda. Mhedzisiro yebasa iri JSON ine zvinyorwa zvemitambo (ID yemutambo, zita rinoverengwa nevanhu, nezvimwewo).

Kusikwa kwemutambo

Iro basa rinoshanda chete nevashandisi vane mvumo; iyo yakanyanya nhamba yevatambi inogamuchirwa pakuiswa, pamwe nemutambo paramita (semuenzaniso, ndeapi mavara ekuita mumutambo uyu, huwandu hwevatambi, nezvimwewo). Iyo yakaparadzana parameter yemutambo kuvepo kwepassword yekujoinha, iyo inobvumidza iwe kugadzira isiri yeruzhinji mitambo. Nekutadza, mutambo weveruzhinji unogadzirwa. Mhedzisiro yebasa iri JSON, iyo ine budiriro yekugadzira munda, yakasarudzika mutambo identifier, uye mamwe ma paramita.

Kujoinha mutambo

Basa racho rinoshanda chete nevashandisi vane mvumo, iyo inopinza ndiyo ID yemutambo uye password yayo, kana iyi isiri yeruzhinji mutambo, inobuda iJSON ine maparamita emutambo. Mushandisi ane mvumo akabatana nemutambo, pamwe nemusiki wemutambo, vanozonzi vatori vechikamu.

Kuona zviitiko zvemitambo

Chero mushandisi asina mvumo anogona kukumbira runyorwa rwezviitiko zvemitambo isingaite, uye mushandisi ane mvumo anogona kugamuchira runyorwa rwezviitiko zvechero mutambo unoshanda. Imwe paramende yekuwedzera kune basa inogona kunge iri nhamba yechiitiko iyo mushandisi anotova nayo. Muchiitiko ichi, izvo chete zviitiko zvakazoitika gare gare ndizvo zvinodzoserwa murondedzero. Nekupota achitanga basa iri, mushandisi ane mvumo anotarisa zviri kuitika mumutambo. Iri basa rinodzosawo chikumbiro chekuita, icho mushandisi anogona kupindura achishandisa mutambo wechiitiko chekutumira basa.

Kutumira chiitiko chemutambo

Basa racho rinoshanda chete kune vatori vechikamu vemutambo: zvinokwanisika kutanga mutambo, kufamba, kuvhota, kunyora meseji inoratidzwa mune rondedzero yezviitiko zvemitambo, nezvimwe.
Mushandisi ane mvumo akagadzira mutambo anotanga kugovera mabasa kune vese vatori vechikamu mumutambo, kusanganisira ivo pachavo, vanofanirwa kusimbisa basa ravo vachishandisa basa rimwe chete. Kana mabasa ese asimbiswa, mutambo wacho unochinja woita husiku modhi.

Nhamba dzemutambo

Basa racho rinoshanda chete kune vatori vechikamu vemutambo; inoratidza mamiriro emutambo, rondedzero uye nhamba yevatambi (mazita emadunhurirwa), mabasa uye chimiro chavo (kufamba kwakaitwa kana kwete), pamwe nerumwe ruzivo. Sezvakaita nebasa rekare, zvese zvinoshanda chete kune vatori vechikamu.

Nguva nenguva yakatangwa mabasa

Kana mutambo wacho usina kutangwa kwenguva yakatsanangurwa paunenge uchigadzira mutambo, unozobviswa otomatiki kubva pakurongwa kwemitambo inoshanda uchishandisa basa rakajeka.

Rimwe basa renguva nenguva nderekumanikidza kuchinjika kweiyo mutambo modhi kubva husiku kuenda masikati uye kudzoka kumitambo iyo isina kuitika panguva yekutendeuka (semuenzaniso, mutambi anoda kuita chiitiko chemutambo haana kutumira mhinduro yake nekuda kwechimwe chikonzero. )

Chiziviso

  • Nhanganyaya
  • Kumisikidza nharaunda yekusimudzira, kuputsa basa kuita mabasa
  • Backend basa
  • Frontend basa
  • Kumisikidza CICD, kuronga kuyedzwa
  • Tanga chirongwa chemutambo wekuedza
  • Migumisiro

Source: www.habr.com

Voeg