"Li-Epics tse Ncha". Re ja tlou ka likaroloana

"Li-Epics tse Ncha". Re ja tlou ka likaroloana

Sehloohong sena, ke tla theha sebaka sa ho sebetsa bakeng sa ho ntlafatsa papali "Epics", hape ke tla senya papali ka boeona hore e be likarolo tse loketseng ho sebelisoa ho OpenFaaS. Ke tla etsa maqheka ohle ho Linux, ke tla tsamaisa Kubernetes ka minikube ke sebelisa VirtualBox. Mochini oa ka oa mosebetsi o na le li-processor cores tse 2 le 12GB ea RAM; Ke sebelisa SSD joalo ka disk ea sistimi. Ke tla sebelisa debian 8 e le sistimi ea ka ea mantlha ea nts'etsopele, e kentsoeng liphutheloana tsa emacs, sudo, git le virtualbox, tse ling kaofela li tla kenngoa ka ho khoasolla ho tsoa GitHub le mehloling e meng. Re tla kenya lits'ebetso tsena ho /usr/local/bin ntle le ha ho boletsoe ka tsela e ngoe. A re qaleng!

Ho lokisa tikoloho ea mosebetsi

E kenya Go

Re latela litaelo tse tsoang webosaeteng ea semmuso:

$ 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

Ho hlahloba tšebetso:

$ 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

Ho kenya faas-cli

Re latela litaelo tse tsoang webosaeteng ea semmuso:

$ 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

Ho ekelletsa moo, o ka thusa bash-completion:

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

Ho kenya le ho lokisa Kubernetes

Bakeng sa nts'etsopele, minikube e lekane, kahoo e kenye le kubelet ho / usr/local/bin, 'me u kenye helm ho kenya lits'ebetso:

$ 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

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

Re hlahloba:

$ 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

Ho kenya OpenFaaS

Bahlahisi ba khothaletsa ho theha libaka tse 2 tsa mabitso ho sebetsa le tsona:

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

Kenya sebaka sa polokelo bakeng sa helm:

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

Chate e na le bokhoni ba ho beha phasewete pele e kenya, ha re e sebeliseng 'me re boloke data ea phihlello e le lekunutu la 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

Ha re sebeliseng:

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

Kamora nako e itseng, re tsamaisa taelo e reriloeng:

$ 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

Ho hlahloba tšebetso:

$ 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

Ho kenya Mongodb

Re kenya tsohle re sebelisa 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

Re hlahloba:

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

Tobetsa ctrl+D ho tsoa ka setshelo.

Ho theha emacs

Ha e le hantle, ntho e 'ngoe le e' ngoe e ne e se e hlophisitsoe ho latela sehlooho sena, kahoo nke ke ka kena ka botlalo.

Ho arola papali hore e be mesebetsi

Ho sebelisana le mesebetsi ho etsoa ka protocol ea http, netefatso ea ho qetela pakeng tsa mesebetsi e fapaneng e fanoa ke JWT. Mongodb e sebelisoa ho boloka li-tokens, hammoho le boemo ba papali, data ea libapali, tatellano ea metsamao ea lipapali tsohle le lintlha tse ling. A re hlahlobisiseng likarolo tse thahasellisang ka ho fetisisa.

ngodiso

Kenyelletso ea ts'ebetso ena ke JSON e nang le lebitso la bosoasoi le password. Ha ts'ebetso ena e bitsoa, ​​ho hlahlojoa hore lebitso lena ha le teng ka har'a database; haeba cheke e atlehile, li-alias le password hash li kenngoa polokelong ea litaba. Ho ngolisoa hoa hlokahala ho kenya letsoho papaling ka mafolofolo.

kena

Kenyelletso ea ts'ebetso ke JSON e nang le lebitso la bosoasoi le password; haeba ho na le lebitso la bosoasoi sebakeng sa polokelo ea litaba mme phasewete e netefalitsoe ka katleho le e bolokiloeng sebakeng sa polokelo ea litaba, JWT e khutlisoa, e tlamehang ho fetisetsoa mesebetsing e meng ha e le teng. bitsetsoa. Lirekoto tse fapaneng tsa lits'ebeletso li boetse li kentsoe polokelong ea litaba, mohlala, nako ea ho qetela ea ho kena, joalo-joalo.

Sheba lenane la lipapali

Mosebelisi ofe kapa ofe ea sa lumelloeng a ka kopa lethathamo la lipapali tsohle ntle le tse sebetsang. Mosebelisi ea lumelletsoeng o boetse o bona lethathamo la lipapali tse sebetsang. Sephetho sa ts'ebetso ke JSON e nang le manane a lipapali (ID ea papali, lebitso le baloang ke motho, jj.).

Tlhahiso ea lipapali

Mosebetsi ona o sebetsa feela le basebelisi ba lumelletsoeng; palo e phahameng ea libapali e amoheloa ha o kenya, hammoho le liparamente tsa papali (mohlala, hore na ke libapali life tse ka kenyang tšebetsong papaling ena, palo e kholo ea libapali, joalo-joalo). Parameter e arohaneng ea papali ke ho ba teng ha password bakeng sa ho kopanya, e leng se u lumellang hore u thehe lipapali tse seng tsa sechaba. Ka ho sa feleng, ho etsoa papali ea sechaba. Sephetho sa ts'ebetso ke JSON, e nang le lebala la katleho ea pōpo, sekhetho se ikhethileng sa papali, le likarolo tse ling.

Ho kena papaling

Mosebetsi o sebetsa feela le basebelisi ba nang le tumello, ho kenya letsoho ke ID ea papali le password ea eona, haeba ena e le papali e seng ea sechaba, tlhahiso ke JSON e nang le lipapali tsa papali. Mosebelisi ea lumelletsoeng ea keneng papaling, hammoho le moetsi oa papali, ba tla bitsoa bankakarolo ba papali.

Ho shebella liketsahalo tsa papali

Mosebedisi ofe kapa ofe ya sa dumellwang a ka kopa lenane la diketsahalo bakeng sa dipapadi tse sa sebetseng, mme mosebedisi ya dumelletsweng a ka fumana lenane la diketsahalo bakeng sa papadi efe kapa efe e bapalang. Paramethara e eketsehileng mosebetsing e ka ba nomoro ea ketsahalo eo mosebelisi a seng a ntse a e-na le eona. Tabeng ena, ke liketsahalo tse etsahetseng hamorao feela tse tla khutlisoa lethathamong. Ka ho qala ts'ebetso ena nako le nako, mosebelisi ea lumelletsoeng o shebella se etsahalang papaling. Ts'ebetso ena e boetse e khutlisa kopo ea ketso, eo mosebelisi a ka e arabang a sebelisa ts'ebetso ea ho romella ketsahalo ea papali.

Ho romella ketsahalo ea papali

Mosebetsi o sebetsa feela bakeng sa barupeluoa ba papali: hoa khoneha ho qala papali, ho falla, ho vouta, ho ngola molaetsa oa mongolo o bontšitsoeng lethathamong la liketsahalo tsa papali, joalo-joalo.
Mosebedisi ya dumelletsweng ya entseng papadi o qala ho abela bankakarolo bohle ba papadi, ho kenyeletswa le bona, ba tlameha ho netefatsa karolo ya bona ba sebedisa tshebetso e tshwanang. Hang ha likarolo tsohle li netefalitsoe, papali e fetohela ho mokhoa oa bosiu.

Lipalopalo tsa papali

Mosebetsi o sebetsa feela bakeng sa barupeluoa ba papali; e bonts'a boemo ba papali, lenane le palo ea libapali (mabitso a bosoasoi), mesebetsi le boemo ba bona (ho sisinyeha ho entsoe kapa che), hammoho le lintlha tse ling. Joalo ka ts'ebetso e fetileng, ntho e 'ngoe le e' ngoe e sebetsa feela ho barupeluoa ba papali.

Nako le nako e qala mesebetsi

Haeba papali e sa qalisoa ka nako e itseng e boletsoeng ha ho etsoa papali, e tla tlosoa ka ho toba lethathamong la lipapali tse sebetsang ho sebelisa mosebetsi o hlakileng.

Mosebetsi o mong oa nakoana ke ho fetola mokhoa oa papali ho tloha bosiu ho ea ho mots'eare le ho khutlela morao bakeng sa lipapali tseo sena se sa kang sa etsahala nakong ea nako (mohlala, sebapali se lokelang ho itšoara ketsahalong ea papali ha sea ka sa romela tharollo ea sona ka lebaka le itseng. ).

Phatlalatso

  • Selelekela
  • Ho theha tikoloho ea nts'etsopele, ho arola mosebetsi ka mesebetsi
  • Mosebetsi oa morao-rao
  • Mosebetsi oa pele
  • Ho theha CICD, ho hlophisa liteko
  • Qala karolo ea papali ea teko
  • Liphello

Source: www.habr.com

Eketsa ka tlhaloso