
рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рдореИрдВ рдЦреЗрд▓ "рдПрдкрд┐рдХреНрд╕" рдХреЗ рд╡рд┐рдХрд╛рд╕ рдХреЗ рд▓рд┐рдП рдПрдХ рдХрд╛рдордХрд╛рдЬреА рд╡рд╛рддрд╛рд╡рд░рдг рд╕реНрдерд╛рдкрд┐рдд рдХрд░реВрдВрдЧрд╛, рд╕рд╛рде рд╣реА рдореИрдВ рдЦреЗрд▓ рдХреЛ рдЦреБрдж рдХреЛ OpenFaaS рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреБрдХреНрдд рднрд╛рдЧреЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░реВрдВрдЧрд╛ред рдореИрдВ рд▓рд┐рдирдХреНрд╕ рдкрд░ рд╕рднреА рдЬреЛрдбрд╝рддреЛрдбрд╝ рдХрд░реВрдБрдЧрд╛, рд╡рд░реНрдЪреБрдЕрд▓ рдмреЙрдХреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХреБрдмреЗрд░рдиреЗрдЯ рдХреЛ рдорд┐рдиреАрдмреНрдпреВрдм рдореЗрдВ рддреИрдирд╛рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдореЗрд░реА рдХрд╛рдордХрд╛рдЬреА рдорд╢реАрди рдореЗрдВ 2 рдкреНрд░реЛрд╕реЗрд╕рд░ рдХреЛрд░ рдФрд░ 12 рдЬреАрдмреА рд░реИрдо рд╣реИрдВ, рдореИрдВ рд╕рд┐рд╕реНрдЯрдо рдбрд┐рд╕реНрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдПрд╕рдПрд╕рдбреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВред рдореИрдВ рд╡рд┐рдХрд╛рд╕ рдХреЗ рд▓рд┐рдП рдореБрдЦреНрдп рдкреНрд░рдгрд╛рд▓реА рдХреЗ рд░реВрдк рдореЗрдВ рдбреЗрдмрд┐рдпрди 8 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реВрдВрдЧрд╛, рдПрдордПрд╕реАрдПрд╕, рд╕реБрдбреЛ, рдЧрд┐рдЯ рдФрд░ рд╡рд░реНрдЪреБрдЕрд▓рдмреЙрдХреНрд╕ рдкреИрдХреЗрдЬ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд╕рд╛рде, рдореИрдВ рдЧрд┐рдЯрд╣рдм рдФрд░ рдЕрдиреНрдп рд╕реНрд░реЛрддреЛрдВ рд╕реЗ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдХреЗ рдмрд╛рдХреА рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░реВрдВрдЧрд╛ред рд╣рдо рдЗрди рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЛ / usr / рд╕реНрдерд╛рдиреАрдп / рдмрд┐рди рдореЗрдВ рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВрдЧреЗ, рдЬрдм рддрдХ рдХрд┐ рдЕрдиреНрдпрдерд╛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рди рд╣реЛред рдЪрд▓реЛ рд╢реБрд░реВ рд╣реЛ рдЬрд╛рдУ!
рдХрд╛рдо рдХреЗ рдорд╛рд╣реМрд▓ рдХреА рддреИрдпрд╛рд░реА
рд╕реНрдерд╛рдкрдирд╛ рдЬрд╛рдУ
рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рд╡реЗрдмрд╕рд╛рдЗрдЯ рд╕реЗ рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХрд╛ рдкрд╛рд▓рди рдХрд░реЗрдВ:
$ 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
рдкреНрд░рджрд░реНрд╢рди рдХреА рдЬрд╛рдБрдЪ рдХрд░реЗрдВ:
$ mkdir -p ~/go/src/hello && cd ~/go/src/hello $ echo 'package main import "fmt" func main() { fmt.Printf("hello, world\n") }' > hello.go $ go build $ ./hello hello, world
Faas-cli рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ
рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рд╡реЗрдмрд╕рд╛рдЗрдЯ рд╕реЗ рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХрд╛ рдкрд╛рд▓рди рдХрд░реЗрдВ:
$ 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
рдЗрд╕рдХреЗ рдЕрддрд┐рд░рд┐рдХреНрдд, рдЖрдк рдмреИрд╢-рдкреВрд░рд╛ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
faas-cli completion --shell bash | sudo tee /etc/bash_completion.d/faas-cli
рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рд╕реНрдерд╛рдкрд┐рдд рдФрд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░реЗрдВ
рдорд┐рдирд┐рдХреНрдпреВрдм рд╡рд┐рдХрд╛рд╕ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдо рдЗрд╕реЗ рдФрд░ рдХреНрдпреВрдмрд▓реЗрдЯ / usr / рд╕реНрдерд╛рдиреАрдп / рдмрд┐рди рдореЗрдВ рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВрдЧреЗ, рд╣рдо рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рднреА рд╣реЗрд▓рдо рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВрдЧреЗ:
$ 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
рд▓реЙрдиреНрдЪ рдХрд░реЗрдВ рдорд┐рдиреАрдмреНрдпреВрдм:
$ 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"
рд╣рдо рдЬрд╛рдБрдЪ рдХрд░рддреЗ рд╣реИрдВ:
$ 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
OpenFaaS рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░реЗрдВ
рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХрд╛рдо рдХреЗ рд▓рд┐рдП 2 рдирд╛рдо рд╕реНрдерд╛рди рдмрдирд╛рдиреЗ рдХреА рд╕рд▓рд╛рд╣ рджреЗрддреЗ рд╣реИрдВ:
$ kubectl apply -f https://raw.githubusercontent.com/openfaas/faas-netes/master/namespaces.yml namespace/openfaas created namespace/openfaas-fn created
рдкрддрд╡рд╛рд░ рдХреЗ рд▓рд┐рдП рднрдВрдбрд╛рд░ рдЬреЛрдбрд╝реЗрдВ:
$ helm repo add openfaas https://openfaas.imtqy.com/faas-netes/ "openfaas" has been added to your repositories
рдЪрд╛рд░реНрдЯ рдореЗрдВ рд╕реНрдерд╛рдкрдирд╛ рд╕реЗ рдкрд╣рд▓реЗ рдПрдХ рдкрд╛рд╕рд╡рд░реНрдб рд╕реЗрдЯ рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рд╣реИ, рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ рдФрд░ 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
рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП:
$ 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"
рдХреБрдЫ рд╕рдордп рдмрд╛рдж, рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рдХрдорд╛рдВрдб рдЪрд▓рд╛рдПрдБ:
$ 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
рдкреНрд░рджрд░реНрд╢рди рдХреА рдЬрд╛рдБрдЪ рдХрд░реЗрдВ:
$ 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
рдореЛрдВрдЧреЛрдбрдм рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ
рд╣рдо рд╣реЗрд▓реНрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рдм рдХреБрдЫ рдбрд╛рд▓рддреЗ рд╣реИрдВ:
$ 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
рд╣рдо рдЬрд╛рдБрдЪ рдХрд░рддреЗ рд╣реИрдВ:
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
рдХрдВрдЯреЗрдирд░ рд╕реЗ рдмрд╛рд╣рд░ рдирд┐рдХрд▓рдиреЗ рдХреЗ рд▓рд┐рдП ctrl + D рдХреЛ рд╣рд┐рдЯ рдХрд░реЗрдВред
Emacs рд╕реЗрдЯрдЕрдк
рд╕рд┐рджреНрдзрд╛рдВрдд рд░реВрдк рдореЗрдВ, рдЗрд╕ рд▓реЗрдЦ рдХреЗ рд▓рд┐рдП рд╕рдм рдХреБрдЫ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдЗрд╕рд▓рд┐рдП рдореИрдВ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рдкреЗрдВрдЯ рдирд╣реАрдВ рдХрд░реВрдВрдЧрд╛ред
рдЧреЗрдо рдХреЛ рдХрд╛рд░реНрдпреЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рдирд╛
рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд╕рд╛рде рд╕рд╣рднрд╛рдЧрд┐рддрд╛ http рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХреА рдЬрд╛рддреА рд╣реИ, рд╡рд┐рднрд┐рдиреНрди рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рдмреАрдЪ рдПрдВрдб-рдЯреВ-рдПрдВрдб рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдЬреЗрдбрдмреНрд▓реНрдпреВрдЯреА рджреНрд╡рд╛рд░рд╛ рдкреНрд░рджрд╛рди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред Mongodb рдХрд╛ рдЙрдкрдпреЛрдЧ рдЯреЛрдХрди рд╕реНрдЯреЛрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд╕рд╛рде рд╣реА рдЦреЗрд▓ рдХреА рд╕реНрдерд┐рддрд┐, рдЦрд┐рд▓рд╛рдбрд╝реА рдбреЗрдЯрд╛, рд╕рднреА рдЧреЗрдо рдХреЗ рдЪрд╛рд▓реЛрдВ рдХреЗ рдЕрдиреБрдХреНрд░рдо рдФрд░ рдЕрдиреНрдп рдЬрд╛рдирдХрд╛рд░реАред рдЖрдЗрдП рд╕рдмрд╕реЗ рджрд┐рд▓рдЪрд╕реНрдк рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдкрд░ рдПрдХ рдирдЬрд╝рд░ рдбрд╛рд▓реЗрдВред
рдкрдВрдЬреАрдХрд░рдг
рдЗрд╕ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдЗрдирдкреБрдЯ рдореЗрдВ JSON рдПрдХ рдЧреЗрдо рдЙрдкрдирд╛рдо рдФрд░ рдкрд╛рд╕рд╡рд░реНрдб рдХреЗ рд╕рд╛рде рд╣реИред рдЬрдм рдпрд╣ рдлрд╝рдВрдХреНрд╢рди рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдЗрд╕ рдЙрдкрдирд╛рдо рдХреА рдЕрдиреБрдкрд╕реНрдерд┐рддрд┐ рдХреА рдЬрд╛рдВрдЪ рдХреА рдЬрд╛рддреА рд╣реИ; рдпрджрд┐ рдпрд╣ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рд╕рддреНрдпрд╛рдкрд┐рдд рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдЙрдкрдирд╛рдо рдФрд░ рдкрд╛рд╕рд╡рд░реНрдб рд╣реИрд╢ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдбрд╛рд▓рд╛ рдЬрд╛рддрд╛ рд╣реИред рдЦреЗрд▓ рдореЗрдВ рд╕рдХреНрд░рд┐рдп рднрд╛рдЧреАрджрд╛рд░реА рдХреЗ рд▓рд┐рдП рдкрдВрдЬреАрдХрд░рдг рдЖрд╡рд╢реНрдпрдХ рд╣реИред
рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐
рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдЗрдирдкреБрдЯ рдкрд░ JSON рдПрдХ рдЧреЗрдо рдЙрдкрдирд╛рдо рдФрд░ рдкрд╛рд╕рд╡рд░реНрдб рдХреЗ рд╕рд╛рде рд╣реИ, рдЕрдЧрд░ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдПрдХ рдЙрдкрдирд╛рдо рд╣реИ рдФрд░ рдкрд╛рд╕рд╡рд░реНрдб рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╕рдВрдЧреНрд░рд╣реАрдд рдкрд╛рд╕рд╡рд░реНрдб рдХреЗ рд╕рд╛рде рд╕рддреНрдпрд╛рдкрд┐рдд рд╣реИ, рддреЛ JWT рд╡рд╛рдкрд╕ рдЖ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕реЗ рдХреЙрд▓ рдХрд░рдиреЗ рдкрд░ рдЕрдиреНрдп рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдкрд╛рд╕ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рд╡рд┐рднрд┐рдиреНрди рд╕реЗрд╡рд╛ рд░рд┐рдХреЙрд░реНрдб рднреА рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдбрд╛рд▓реЗ рдЬрд╛рддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЕрдВрддрд┐рдо рд▓реЙрдЧрд┐рди рдХрд╛ рд╕рдордп рдЖрджрд┐ред
рдЦреЗрд▓ рд╕реВрдЪреА рджреЗрдЦреЗрдВ
рдХреЛрдИ рднреА рдЕрдирдзрд┐рдХреГрдд рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕рдХреНрд░рд┐рдп рдХреЛ рдЫреЛрдбрд╝рдХрд░ рд╕рднреА рдЦреЗрд▓реЛрдВ рдХреА рд╕реВрдЪреА рдХрд╛ рдЕрдиреБрд░реЛрдз рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдПрдХ рдЕрдзрд┐рдХреГрдд рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕рдХреНрд░рд┐рдп рдЦреЗрд▓реЛрдВ рдХреА рд╕реВрдЪреА рднреА рджреЗрдЦрддрд╛ рд╣реИред рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдкрд░рд┐рдгрд╛рдо рдЬреЗрдиреНрд╕рди рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдЧреЗрдо рдХреА рд╕реВрдЪреА (рдЧреЗрдо рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛, рдорд╛рдирд╡-рдкрдардиреАрдп рдирд╛рдо, рдЖрджрд┐) рд╣реИред
рдЦреЗрд▓ рдирд┐рд░реНрдорд╛рдг
рдлрд╝рдВрдХреНрд╢рди рдХреЗрд╡рд▓ рдЕрдзрд┐рдХреГрдд рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдЦрд┐рд▓рд╛рдбрд╝рд┐рдпреЛрдВ рдХреА рдЕрдзрд┐рдХрддрдо рд╕рдВрдЦреНрдпрд╛, рд╕рд╛рде рд╣реА рдЦреЗрд▓ рдкреИрд░рд╛рдореАрдЯрд░ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЬреЛ рдЗрд╕ рдЦреЗрд▓ рдореЗрдВ рд╕рдХреНрд░рд┐рдп рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд░реНрдг, рдЕрдзрд┐рдХрддрдо рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдЦрд┐рд▓рд╛рдбрд╝реА, рдЖрджрд┐) рдЗрдирдкреБрдЯ рдкрд░ рд╕реНрд╡реАрдХрд╛рд░ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред рдЦреЗрд▓ рдХрд╛ рдПрдХ рдЕрд▓рдЧ рдкреИрд░рд╛рдореАрдЯрд░ рдЬреБрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдкрд╛рд╕рд╡рд░реНрдб рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рд╣реИ, рдЬреЛ рдЖрдкрдХреЛ рдЧреИрд░-рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдЧреЗрдо рдмрдирд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, рдПрдХ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдЧреЗрдо рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдлрд╝рдВрдХреНрд╢рди рдирд┐рд╖реНрдкрд╛рджрди рдХрд╛ рдкрд░рд┐рдгрд╛рдо JSON рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдПрдХ рдирд┐рд░реНрдорд╛рдг рд╕рдлрд▓рддрд╛ рдХреНрд╖реЗрддреНрд░ рд╣реИ, рдЦреЗрд▓ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрджреНрд╡рд┐рддреАрдп рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛, рд╕рд╛рде рд╣реА рд╕рд╛рде рдЕрдиреНрдп рдкреИрд░рд╛рдореАрдЯрд░ред
рдЦреЗрд▓ рд╕реЗ рдЬреБрдбрд╝рдирд╛
рдлрд╝рдВрдХреНрд╢рди рдХреЗрд╡рд▓ рдЕрдзрд┐рдХреГрдд рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд╕рд╛рде, рдкреНрд░рд╡реЗрд╢ рджреНрд╡рд╛рд░ рдкрд░ - рдЦреЗрд▓ рдХреЗ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдФрд░ рдЙрд╕рдХреЗ рдкрд╛рд╕рд╡рд░реНрдб рдкрд░ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдЕрдЧрд░ рдпрд╣ рдПрдХ рдЧреИрд░-рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдЧреЗрдо рд╣реИ, рдЖрдЙрдЯрдкреБрдЯ рдкрд░ - рдЧреЗрдо рдХреЗ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рд╕рд╛рде JSONред рдЕрдзрд┐рдХреГрдд рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЬреЛ рдЦреЗрд▓ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реЛ рдЧрдпрд╛ рд╣реИ, рд╕рд╛рде рд╣реА рдЦреЗрд▓ рдХрд╛ рдирд┐рд░реНрдорд╛рддрд╛ рднреА рд╣реИ, рдлрд┐рд░ рдЙрд╕реЗ рдЦреЗрд▓ рдореЗрдВ рднрд╛рдЧ рд▓реЗрдиреЗ рд╡рд╛рд▓реЗ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред
рдЦреЗрд▓ рдХреА рдШрдЯрдирд╛рдУрдВ рдХреЛ рджреЗрдЦреЗрдВ
рдХреЛрдИ рднреА рдЕрдирдзрд┐рдХреГрдд рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдирд┐рд╖реНрдХреНрд░рд┐рдп рдЦреЗрд▓реЛрдВ рдХреА рдШрдЯрдирд╛рдУрдВ рдХреА рдПрдХ рд╕реВрдЪреА рдХрд╛ рдЕрдиреБрд░реЛрдз рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдФрд░ рдПрдХ рдЕрдзрд┐рдХреГрдд рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдШрдЯрдирд╛рдУрдВ рдФрд░ рдХрд┐рд╕реА рднреА рд╕рдХреНрд░рд┐рдп рдЧреЗрдо рдХреА рд╕реВрдЪреА рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдПрдХ рдЕрддрд┐рд░рд┐рдХреНрдд рдкреИрд░рд╛рдореАрдЯрд░ рдЗрд╡реЗрдВрдЯ рдирдВрдмрд░ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдЬреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рдкрд╛рд╕ рдкрд╣рд▓реЗ рд╕реЗ рд╣реИред рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рдмрд╛рдж рдореЗрдВ рд╣реЛрдиреЗ рд╡рд╛рд▓реА рдХреЗрд╡рд▓ рдЙрдиреНрд╣реАрдВ рдШрдЯрдирд╛рдУрдВ рдХреЛ рд╕реВрдЪреА рдореЗрдВ рд╡рд╛рдкрд╕ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдЗрд╕ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рд╕рдордп-рд╕рдордп рдкрд░ рд▓реЙрдиреНрдЪ рдХрд░рдиреЗ рд╕реЗ, рдПрдХ рдЕрдзрд┐рдХреГрдд рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рджреЗрдЦрддрд╛ рд╣реИ рдХрд┐ рдЧреЗрдо рдореЗрдВ рдХреНрдпрд╛ рд╣реЛ рд░рд╣рд╛ рд╣реИред рдпрд╣ рдлрд╝рдВрдХреНрд╢рди рдПрдХ рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрдиреБрд░реЛрдз рднреА рджреЗрддрд╛ рд╣реИ, рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЧреЗрдо рдЗрд╡реЗрдВрдЯ рднреЗрдЬрдиреЗ рдХреЗ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХрд░ рд╕рдХрддрд╛ рд╣реИред
рдЦреЗрд▓ рдШрдЯрдирд╛ рдкреНрд░реЗрд╖рдг
рдлрд╝рдВрдХреНрд╢рди рдХреЗрд╡рд▓ рдЦреЗрд▓ рдкреНрд░рддрд┐рднрд╛рдЧрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ: рдПрдХ рдЧреЗрдо рд▓реЙрдиреНрдЪ рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛, рдПрдХ рдЪрд╛рд▓ рдмрдирд╛рдирд╛, рд╡реЛрдЯ рдХрд░рдирд╛, рдПрдХ рдЯреЗрдХреНрд╕реНрдЯ рд╕рдВрджреЗрд╢ рд▓рд┐рдЦрдирд╛ рдЬреЛ рдЧреЗрдо рдЗрд╡реЗрдВрдЯреНрд╕ рдХреА рд╕реВрдЪреА рдореЗрдВ рджрд┐рдЦрд╛рдИ рджреЗрддрд╛ рд╣реИ, рдЖрджрд┐ рдХреЛ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдЕрдзрд┐рдХреГрдд рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЬрд┐рдиреНрд╣реЛрдВрдиреЗ рдЧреЗрдо рдмрдирд╛рдпрд╛ рд╣реИ, рдЦреЗрд▓ рдореЗрдВ рд╕рднреА рдкреНрд░рддрд┐рднрд╛рдЧрд┐рдпреЛрдВ рдХреЛ рднреВрдорд┐рдХрд╛рдУрдВ рдХрд╛ рд╡рд┐рддрд░рдг рд╢реБрд░реВ рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рд╕реНрд╡рдпрдВ рднреА рд╢рд╛рдорд┐рд▓ рд╣реИрдВ, рдЙрдиреНрд╣реЗрдВ рдПрдХ рд╣реА рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЕрдкрдиреА рднреВрдорд┐рдХрд╛ рдХреА рдкреБрд╖реНрдЯрд┐ рдХрд░рдиреА рдЪрд╛рд╣рд┐рдПред рд╕рднреА рднреВрдорд┐рдХрд╛рдУрдВ рдХреА рдкреБрд╖реНрдЯрд┐ рд╣реЛ рдЬрд╛рдиреЗ рдХреЗ рдмрд╛рдж, рдЧреЗрдо рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рд░рд╛рдд рдореЛрдб рдореЗрдВ рдЪрд▓рд╛ рдЬрд╛рддрд╛ рд╣реИред
рдЦреЗрд▓ рдЖрдБрдХрдбрд╝реЗ
рдлрд╝рдВрдХреНрд╢рди рдХреЗрд╡рд▓ рдЦреЗрд▓ рдореЗрдВ рдкреНрд░рддрд┐рднрд╛рдЧрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдЦреЗрд▓ рдХреА рд╕реНрдерд┐рддрд┐, рдЦрд┐рд▓рд╛рдбрд╝рд┐рдпреЛрдВ рдХреА рд╕реВрдЪреА рдФрд░ рд╕рдВрдЦреНрдпрд╛ (рдЙрдкрдирд╛рдо), рднреВрдорд┐рдХрд╛рдПрдВ рдФрд░ рдЙрдирдХреА рд╕реНрдерд┐рддрд┐ (рдЪрд╛рд▓ рдпрд╛ рдирд╣реАрдВ), рд╕рд╛рде рд╣реА рд╕рд╛рде рдЕрдиреНрдп рдЬрд╛рдирдХрд╛рд░реА рджрд┐рдЦрд╛рддрд╛ рд╣реИред рдкрд┐рдЫрд▓реЗ рд╕рдорд╛рд░реЛрд╣ рдХреЗ рд▓рд┐рдП, рд╕рдм рдХреБрдЫ рдХреЗрд╡рд▓ рдЦреЗрд▓ рдкреНрд░рддрд┐рднрд╛рдЧрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред
рд╕рдордп-рд╕рдордп рдкрд░ рдХрд╛рд░реНрдп рдЪрд▓рд╛рдПрдВ
рдпрджрд┐ рдЧреЗрдо рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЗ рджреМрд░рд╛рди рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХреБрдЫ рд╕рдордп рдХреЗ рд▓рд┐рдП рдЧреЗрдо рд▓реЙрдиреНрдЪ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рддреЛ рдпрд╣ рд╕реНрд╡реАрдк рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рдХреНрд░рд┐рдп рдЧреЗрдо рдХреА рд╕реВрдЪреА рд╕реЗ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
рдПрдХ рдФрд░ рдЖрд╡рдзрд┐рдХ рдХрд╛рд░реНрдп рдЧреЗрдо рдореЛрдб рдХреЗ рд▓рд┐рдП рд░рд╛рдд рд╕реЗ рджрд┐рди рдФрд░ рдкреАрдЫреЗ рдХреЗ рдЦреЗрд▓ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рд╕реНрд╡рд┐рдЪрд┐рдВрдЧ рд╣реИ, рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рдпрд╣ рдореЛрдбрд╝ рдХреЗ рджреМрд░рд╛рди рдирд╣реАрдВ рд╣реБрдЖ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рдЦрд┐рд▓рд╛рдбрд╝реА рдЬрд┐рд╕реЗ рдЧреЗрдо рдЗрд╡реЗрдВрдЯ рдХрд╛ рдЬрд╡рд╛рдм рджреЗрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЙрд╕рдиреЗ рдХрд┐рд╕реА рднреА рдХрд╛рд░рдг рд╕реЗ рдЕрдкрдирд╛ рдирд┐рд░реНрдгрдп рдирд╣реАрдВ рднреЗрдЬрд╛)ред
рдШреЛрд╖рдгрд╛
- рдкрд░рд┐рдЪрдп
- рд╡рд┐рдХрд╛рд╕ рдкрд░реНрдпрд╛рд╡рд░рдг рдХреА рд╕реНрдерд╛рдкрдирд╛, рдХрд╛рд░реНрдп рдХреЛ рдХрд╛рд░реНрдпреЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рдирд╛
- рдмреИрдХрдПрдВрдб рдкрд░ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ
- рд╕рд╛рдордиреЗ рдХрд╛ рдХрд╛рдо
- CI \ CD рд╕реЗрдЯрдЕрдк, рдкрд░реАрдХреНрд╖рдг рд╕рдВрдЧрдарди
- рдЦреЗрд▓ рдкрд░реАрдХреНрд╖рдг рд╕рддреНрд░ рд╢реБрд░реВ рдХрд░рдирд╛
- рдкрд░рд┐рдгрд╛рдо