"Epics vaovao". Mizarazara ny elefanta izahay

"Epics vaovao". Mizarazara ny elefanta izahay

Ato amin'ity lahatsoratra ity dia hametraka tontolo iasana amin'ny fampivoarana ny lalao "Epics" aho, ary hanapaka ny lalao ho ampahany mety hampiasaina amin'ny OpenFaaS ihany koa. Hanao ny fanodinkodinana rehetra amin'ny Linux aho, hametraka Kubernetes amin'ny minikube amin'ny fampiasana VirtualBox. Ny masiniko miasa dia manana core processeur 2 sy 12GB an'ny RAM; SSD no ampiasaiko ho kapila rafitra. Hampiasa ny debian 8 aho ho rafitra fampivoarana lehibe ahy, miaraka amin'ireo fonosana emacs, sudo, git ary virtualbox napetraka, ny zavatra hafa rehetra dia hapetraka amin'ny alΓ lan'ny fampidinana avy amin'ny GitHub sy loharano hafa. Hametraka ireo fampiharana ireo ao amin'ny /usr/local/bin izahay raha tsy misy fepetra hafa. Andeha isika hanomboka!

Fanomanana ny tontolon'ny asa

Fametrahana ny Go

Manaraka ny torolΓ lana avy amin'ny tranokala ofisialy izahay:

$ 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

Fanamarinana fiasa:

$ 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

Fametrahana faas-cli

Manaraka ny torolΓ lana avy amin'ny tranokala ofisialy izahay:

$ 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 fanampin'izany, azonao atao ny manatontosa bash:

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

Fametrahana sy fanamboarana Kubernetes

Ho an'ny fampandrosoana dia ampy ny minikube, ka apetraho ary kubelet ao amin'ny /usr/local/bin, ary asio helm hametrahana rindranasa:

$ 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

Alefaso ny 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"

Hamarininay:

$ 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

Fametrahana OpenFaaS

Manoro hevitra ny mpamorona hamorona sehatra anarana 2 hiasa miaraka:

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

Manampia tahiry ho an'ny familiana:

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

Ny tabilao dia manana fahafahana mametraka tenimiafina alohan'ny fametrahana, andao hampiasa izany ary tehirizo ny angon-drakitra fidirana ho tsiambaratelo 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

Andao haparitaka:

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

Rehefa afaka kelikely, dia mihazakazaka ny baiko natolotra izahay:

$ 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

Fanamarinana fiasa:

$ 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

Fametrahana Mongodb

Mametraka ny zava-drehetra amin'ny alΓ lan'ny familiana izahay:

$ 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

Hamarininay:

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

Tsindrio ctrl+D raha hivoaka ny container.

Fametrahana emacs

Amin'ny ankapobeny, ny zava-drehetra dia efa namboarina araka ny ity lahatsoratra ity, ka tsy hidirako amin'ny antsipiriany.

Fandravana ny lalao ho asa

Ny fifandraisana amin'ny asa dia atao amin'ny alΓ lan'ny protocol http, ny fanamarinana faran'ny farany eo anelanelan'ny fiasa samihafa dia omen'ny JWT. Mongodb dia ampiasaina hitahiry famantarana, ary koa ny toetry ny lalao, angon-drakitra mpilalao, ny filaharan'ny lalao rehetra ary ny fampahalalana hafa. Andeha hojerentsika akaiky ireo endri-javatra mahaliana indrindra.

fisoratana anarana

Ny fidirana amin'ity fiasa ity dia JSON miaraka amin'ny anaram-bositra sy ny tenimiafina. Rehefa antsoina io asa io, dia voamarina fa tsy ao anaty angon-drakitra io alias io; raha mahomby ny fanamarinana dia ampidirina ao anaty angon-drakitra ny tenimiafina sy ny tenimiafina. Ny fisoratana anarana dia takiana mba handray anjara mavitrika amin'ny lalao.

teny

Ny fampidirana fampiasa dia JSON miaraka amin'ny anaram-bositra sy tenimiafina; raha misy anaram-bositra ao amin'ny angon-drakitra ary voamarina tsara ny tenimiafina miaraka amin'ilay voatahiry taloha tao amin'ny tahiry, dia averina ny JWT, izay tsy maintsy ampitaina amin'ny fiasa hafa rehefa voatahiry izy ireo. antsoina. Ampidirina ao anatin'ny angon-drakitra ihany koa ny firaketana serivisy isan-karazany, ohatra, ny fotoana fidirana farany, sns.

Jereo ny lisitry ny lalao

Izay mpampiasa tsy nahazoana alalana dia afaka mangataka lisitry ny lalao rehetra afa-tsy ny lalao mavitrika. Ny mpampiasa nahazo alalana koa dia mahita lisitry ny lalao mavitrika. Ny vokatry ny fiasa dia JSON misy lisitry ny lalao (ID lalao, anarana azo vakiana, sns.).

Famoronana lalao

Ny fiasa dia tsy miasa afa-tsy amin'ny mpampiasa nahazo alalana; ny isan'ny mpilalao ambony indrindra dia ekena amin'ny fampidirana, ary koa ny mari-pamantarana lalao (ohatra, izay tarehin-tsoratra hohetsika amin'ity lalao ity, ny isan'ny mpilalao ambony indrindra, sns.). Ny mari-pamantarana miavaka amin'ny lalao dia ny fisian'ny tenimiafina ho an'ny fidirana, izay ahafahanao mamorona lalao tsy ho an'ny daholobe. Amin'ny alΓ lan'ny default dia misy lalao ho an'ny daholobe noforonina. Ny vokatry ny asa dia JSON, izay misy saha fahombiazana amin'ny famoronana, famantarana lalao tokana ary marika hafa.

Manatevin-daharana lalao

Ny fiasa dia tsy miasa afa-tsy amin'ny mpampiasa nahazo alalana, ny fidirana dia ny ID lalao sy ny tenimiafina, raha lalao tsy ho an'ny besinimaro ity, ny vokatra dia JSON miaraka amin'ny mari-pamantarana lalao. Ny mpampiasa nahazo alalana izay nanatevin-daharana ny lalao, ary koa ny mpamorona ny lalao, dia antsoina hoe mpandray anjara lalao.

Mijery hetsika lalao

Izay mpampiasa tsy nahazo alalana dia afaka mangataka lisitry ny hetsika ho an'ny lalao tsy mavitrika, ary ny mpampiasa nahazo alalana dia afaka mahazo lisitry ny hetsika ho an'ny lalao mavitrika. Ny paramètre fanampiny amin'ilay fiasa dia mety ny laharan'ny hetsika efa ananan'ny mpampiasa. Amin'ity tranga ity, ireo tranga niseho taty aoriana ihany no haverina ao anaty lisitra. Amin'ny alàlan'ny fandefasana tsindraindray ity fiasa ity, ny mpampiasa nahazo alalana dia mijery ny zava-mitranga amin'ny lalao. Ity asa ity dia mamerina fangatahana hetsika, izay azon'ny mpampiasa valiana amin'ny fampiasana ny fiasan'ny fandefasana hetsika amin'ny lalao.

Mandefa hetsika lalao

Ny fiasa dia miasa ho an'ny mpandray anjara amin'ny lalao ihany: azo atao ny manomboka ny lalao, mihetsika, mifidy, manoratra hafatra an-tsoratra izay aseho amin'ny lisitry ny hetsika lalao, sns.
Ny mpampiasa nahazo alalana namorona ny lalao dia manomboka mizara andraikitra amin'ny mpandray anjara rehetra amin'ny lalao, anisan'izany ny tenany, dia tsy maintsy manamafy ny anjara asany amin'ny fampiasana ny asa mitovy. Rehefa voamarina avokoa ny andraikitra rehetra dia mivadika ho azy amin'ny fomba alina ny lalao.

Statistika lalao

Ny asa dia miasa ho an'ny mpandray anjara amin'ny lalao ihany; mampiseho ny toetry ny lalao, ny lisitra sy ny isan'ny mpilalao (anaram-bositra), ny anjara asany sy ny sata misy azy (mihetsiketsika na tsia), ary koa ny fampahalalana hafa. Toy ny tamin'ny asa teo aloha, ny zava-drehetra dia miasa ho an'ny mpandray anjara lalao ihany.

Asa natomboka tsindraindray

Raha toa ka tsy natomboka nandritra ny fotoana voafaritra ny lalao rehefa namorona ny lalao, dia hesorina ho azy amin'ny lisitry ny lalao mavitrika amin'ny fampiasana ny fiasa mazava.

Ny asa ara-potoana iray hafa dia ny famadihana an-tery ny fomba lalao amin'ny alina ka hatramin'ny andro sy miverina amin'ny lalao izay tsy nitranga nandritra ny fihodinana (ohatra, ny mpilalao iray izay mila mihetsika amin'ny hetsika lalao dia tsy nandefa ny vahaolana noho ny antony iray. ).

fanambarana

  • fampidirana
  • Fametrahana ny tontolon'ny fampandrosoana, manapaka ny asa ho asa
  • Asa any aoriana
  • Asa aloha
  • Fametrahana CICD, fikarakarana fitiliana
  • Manomboha fotoam-pitsapana lalao
  • vokatra

Source: www.habr.com

Add a comment