ACME WhatsApp Banking - GKE დაყენება

ეს პოსტი უკავშირდება ACME WhatsApp- ს საბანკო საქმეს, თუ არ წაიკითხეთ საწყისი ნაწილი, გთხოვთ დააჭირეთ აქ, რომ თავიდანვე დაიწყოს.

კლასტერის შექმნა

თქვენ შეგიძლიათ შექმნათ მტევანი სხვადასხვა გზით, აქ წარმოდგენილია რამდენიმე ვარიანტი.

შექმენით კლასტერი Google Cloud კონსოლის გამოყენებით

GKE კლასტერების შექმნა

ახლა, უბრალოდ მოდით შევქმნათ მარტივი გარემო, სტანდარტული პარამეტრები. იმისათვის, რომ შემცირდეს ამ დემოპრესთან დაკავშირებული ხარჯები, მოდით შევქმნათ წინასასუფთავი VM აპარატები.

GKE kubernetes კასეტური კონფიგურაცია

დააჭირეთ შენახვას და შემდეგ შექმენით ღილაკი თქვენი Kubernetes- ის კლასტერის უზრუნველყოფის დასაწყებად.

გამოთვლითი საგნების გამოყენება

მე გადავწყვიტე გამოვიყენო წინასწარი გამწმენდი VM- ები, რომ ავიცილო მაღალი ხარჯები, იმის ცოდნაც კი, რომ ჩემი კლასტერი მხოლოდ რამდენიმე დღის განმავლობაში იქნება ხელმისაწვდომი და ჩემი გამოსავლის გამძლეობის შესამოწმებლად.

Google- ის მიხედვით წინასწარი გამწმენდი ვირტუალური მანქანები (PVMs):

Premptible VM– ები ძალზე ხელმისაწვდომი, ხანმოკლე კომპეტენტური შემთხვევებია, რომლებიც შესაფერისია ჯგუფების სამუშაოების და შეცდომების შემწყნარებელი დატვირთვებისათვის.

ეს ძალიან კარგი იდეაა, ღირს ამის შემოწმება Sandeep Dinesh– ის შესახებ აქ.

PVM- ების გამოყენება ასევე ქმნის ბუნებრივ ქაოსურ მაიმუნს თქვენს სისტემაში

იგივე მახასიათებელი ხელმისაწვდომია ამაზონზე, როგორც EC2 Spot ინსტანციებში და Azure როგორც დაბალი პრიორიტეტული VMs.

K8s კლასტერის შექმნა ბრძანების ხაზით

Google Cloud- ის კონსოლში არსებობს შესაძლებლობა, რომ ნახოთ წარმოებული ბრძანების სტრიქონი და REST ვარიანტი, შეგიძლიათ შეფუთოთ იგი ჭურვი სკრიპტით და შეცვალოთ იგი თქვენი გემოვნების მიხედვით.

REST ბრძანება gcloud k8s კასეტების შესაქმნელად

შექმენით Hashicorp Terraform

ეს ვარიანტი რეკომენდებულია, რადგან თქვენ შეგიძლიათ შეინარჩუნოთ თქვენი ინფრასტრუქტურის მდგომარეობა საორგანიზაციო, იმუნური და დეკლარაციული გზით (არა პროცედურული გზით) გამოყენების გზით, შეგიძლიათ შეინახოთ კონფიგურაცია SCM– ში თქვენი ვერსიით, რაც ხელს შეუწყობს განხორციელებული ცვლილებების მიმდინარეობას. .

Terraform- ის დასაწყებად გთხოვთ, გადახედოთ ამ ბმულს.

შექმენით IAM მომხმარებელი და მიიღეთ მომსახურების ანგარიშის სერთიფიკატი, რომელიც გამოყენებულია თქვენი Terraform სკრიპტის ფაილში.

$ PROJECT_NAME = $ (gcloud კონფიგურაციის ღირებულების პროექტი) $ gcloud iam მომსახურების ანგარიშები ქმნის terraformuser $ gcloud iam მომსახურების-ანგარიშების სიას $ gcloud iam მომსახურების ანგარიშების კლავიშების შექმნა terraformuser.json --iam-ანგარიშის [email protected]$PROJECT_NAME.iam. gserviceaccount.com

მას შემდეგ რაც შექმენით ტერაფორმირებული ფაილი, დროა გამოიტანოთ შემდეგი ბრძანებები თქვენი ინფრასტრუქტურის უზრუნველსაყოფად, გარემოსდაცვით უზრუნველყოფისას პროექტის სახელი დინამიურად გადაეცემა.

$ PROJECT_NAME = $ (gcloud კონფიგურაციის ღირებულების პროექტი)
$ cd 
$ terraform გეგმა -var 'project_name = $ PROJECT_NAME' $ terraform ვრცელდება -var 'project_name = $ PROJECT_NAME'

თქვენი კლასტერი და მასთან დაკავშირებული ყველა რესურსი რომ გაანადგუროთ, უბრალოდ განახორციელეთ შემდეგი ბრძანება:

$ terraform განადგურება

კუბექტლის დაყენება

ქვემოთ მოყვანილი ბრძანება კონფიგურირებს kubectl- ს, რომ აღინიშნოს თქვენი კასეტა, დაამატეთ საჯარო სერთიფიკატები ფაილზე .kube / config.

$ gcloud კონტეინერის მტევანი მიიღებს სერთიფიკატებს - ზონა
# მაგალითი: $ gcloud კონტეინერის მტევანი მიიღებს სერთიფიკატებს Acme- საბანკო-კასეტურით - ზონაში us-central1

თუ არ გაქვთ gcloud CLI დაინსტალირებული და მხოლოდ kubernetes კონფიგურაციის ფაილი გაქვთ, შეგიძლიათ დააკონფიგურიროთ თქვენი kubectl შემდეგი გზით:

$ ექსპორტის KUBECONFIG = ~ / .kube / კონფიგურაცია 

ჰელმის დაყენება

მას შემდეგ რაც გააქვთ თქვენი კუბერნეტი და გაუშვით, დროა თქვენი კონფიგურაციის კლიენტის და სერვერის (დამუშავების) კონფიგურაცია განათავსოთ და მართოთ რელიზები თქვენს კუბერნეტულ გარემოში.

თუ თქვენ არ ხართ ნაცნობი ჩაფხუტი, გთხოვთ, დაიწყოთ აქ შემოწმება.

ახლა, როდესაც თქვენ დააინსტალირეთ Helm, მოდით შევქმნათ RBAC რესურსები (მომსახურების ანგარიში, კასეტური როლის ვალდებულებები და ა.შ.).

შემდეგი ბრძანება გაატარეთ დაყენების კონფიგურაციისთვის და მასზე მიუთითეთ მართებული კლიენტი.

$ helm init - სერვის-ანგარიშის დამუშავება

ეს ნაბიჯი საჭირო არ იქნება მომავალი მართლწერის 3-ე ვერსიაში.

კონტეინერების რეესტრის კონფიგურაცია

ეს ნაბიჯი საჭიროა იმისათვის, რომ Draft- მა შეძლოს კონტეინერის სურათების გადაადგილება ადგილობრივად მათი აშენების შემდეგ. ამის შემდეგ, კუბერნეტები გაიყვანენ კონტეინერის სურათებს რეესტრიდან და დააინსტალირებენ მათ სამუშაო კვანძებზე.

ჯერ მოდით, კონფიგურაცია გავუკეთოთ docker daemon- ს, რომ აღვნიშნოთ Google Cloud რეესტრი:

$ gcloud auth კონფიგურაცია-დოკერი $ gcloud კომპონენტები დააინსტალირეთ docker-credential-gcr $ docker-credential-gcr კონფიგურაცია-დოკერი

Draft Draft არის სკაბების იარაღი, ის თქვენთვის ქმნის მუწუკების ჩარტებს და დოკერის აღწერილ ფაილს, რომელიც იყენებთ პროგრამის ენაზე დაყრდნობით მრავალეტაპიან განლაგებას.

პროექტირება წერია გო-ლენგში და მას იყენებს ბიბლიოთეკა, სახელწოდებით Linguist, ქუდის ქვეშ, რათა გამოირჩეოდეს პროგრამის ენა, რომელიც გამოიყენება თქვენთვის სასურველია დოკერფილის და ჰელმის პერსონალურად მორგებული გრაფიკის შესაქმნელად.

https://github.com/Azure/draft/blob/master/cmd/draft/create.go
  • კონფიგურაციის პროექტი

პროექტი ეყრდნობა Helm და Docker რეესტრს. შეამოწმეთ, აქვს თუ არა მას რეესტრის სახელს Google პროექტის სახელი, თუ ეს არ იმუშავებს.

$ PROJECT_NAME = $ (gcloud კონფიგურაციის მისაღებად ღირებულების პროექტი) $ კონფიგურაციის ნაკრების რეესტრის შედგენა gcr.io/$PROJECT_NAME
$ draft ინიციატივა $ cd $ draft შექმნა
თუ თქვენ ადრე შექმენით Dockerfile, ბრძანების შექმნა შექმნა არ შეცვლის მას.
  • განლაგების შესრულება

ახლა, როდესაც თქვენ კონფიგურაცია გაუკეთეთ ყველა წინადადების შედგენას, განლაგების ამოცანა უნდა იყოს პირდაპირი, ჩვენ უბრალოდ უნდა გამოვიტანოთ ბრძანება ქვემოთ:

$ შედგენა
განლაგების პროექტი

თუ განაცხადის გამოშვებისას დაშვებულია შეცდომა, ეს იმის გამო ხდება, რომ მართვას ვერ შეძლებს გამოშვების განახლება, ამ პრობლემის გადასაჭრელად, განახორციელეთ შემდეგი ბრძანება:

$ helm del - პურჟ 

ინგრესი

ამ ეტაპზე ჩვენ გვაქვს Kubernetes- ის კასეტური და ჩვენ შეგვიძლია განვათავსოთ ჩვენი მიკრო სერვისები, დრეკეტის გამოყენებით, მარტივი გზით. განლაგება შექმნის პოდებისა და მომსახურების რესურსებს. ახლა დროა კონფიგურაცია გავუკეთოთ Ingress კომპონენტს, რომელიც პასუხისმგებელია დატვირთვის გადანაწილებაზე, შემომავალი თხოვნების სხვადასხვა სერვისზე გადაკეთებაზე.

  • Nginx Ingress– ის ინსტალაცია

შემდეგი ბრძანება შექმნის Nginx Controller- ს და უკანა პოდებს.

$ helm ინსტალაცია სტაბილური / nginx-ingress --namespace = default --name = nginx-ingress
  • კონფიგურაციების შექმნა Ingress- ის მარშრუტიზაციის წესებით

თქვენ შეგიძლიათ შექმნათ კონფიგურმის yaml ფაილი ხელით, ან შეგიძლიათ გამოიყენოთ გრაფიკის შექმნის ბრძანების შედეგად შექმნილ ingress.yaml ფაილი. ქვემოთ მოცემულ სურათში, ჩვენ უბრალოდ უნდა შეიცვალოს დირექტივა "ჩართული: ყალბი "დან" ჩართული: მართებული "მნიშვნელობებში.yaml ფაილიდან, რომ გავააქტიუროთ Ingress- ის წესი თქვენი მომსახურებისთვის.

თუ ამას ცრუ დატოვებთ, პროექტი არ შექმნის Ingress– ის წესის კონფიგურაციას.

კონფიგურაციის კონფიგურაცია
  • მომსახურებების განრიგი სხვა სახელების სივრცეში

Nginx– ს ინტერლინგს რამდენიმე ხრიკი აქვს, რომ შეეძლოს მისგან განსხვავებულ სახელთა სივრცეში განთავსებული სერვისის მარშრუტი. მე უნდა შევქმნა გარე მომსახურება, როგორც ეს აღწერილია ქვემოთ:

apiVersion: v1 სახის: მომსახურების მეტამონაცემები: null name: prometheus namespace: მონიტორინგის spec: null ტიპი: ExternalName externalName: prometheus.monitoring.svc.cluster.local

ზემოთ მოყვანილი გარე სერვისი უნდა შეიქმნას თქვენს მიერ არჩეულ ადგილის სახელით. გარე სახელწოდება უნდა დაიცვას კონვენციას:

. .svc.cluster.local
  • ტესტირება Nginx Ingress

Nginx Ingress– ს შეუძლია მარშრუტი განსხვავებული წესების საფუძველზე, მაგრამ მთავარია შეაფასოს მასპინძლის თავსართი, თუ მატჩი არსებობს, მაშინ ხდება მარშრუტი.

$ curl -H 'მასპინძელი: acme-banking.com' http: // კვანძი-პორტი-ip: პორტი / კონტექსტი

ან შეგიძლიათ გამოიყენოთ ქრომის გაფართოება ModHeader, როგორც ქვემოთ მოცემულია:

ModHeaders ქრომის გაფართოება

MongoDB

ნაბიჯი საჭიროა ჩვენი გადაწყვეტისთვის, chatbot საუბრის გასამდიდრებლად, პროდუქტის ინფორმაციის შენახვისა და მოძიებისთვის.

გამოყენებული MongoDB კონფიგურაცია ემყარება StatefulSet და sidecar- ს, როგორც ეს აღწერილია ბლოგ ჩანაწერში Running MongoDB Kubernetes– ზე StatefulSets– ით.

$ git კლონი https://github.com/thesandlord/mongo-k8s-sidecar.git $ cd ./mongo-k8s-sidecar/example/StatefulSet $ ​​kubectl ვრცელდება -f googlecloud_ssd.yaml $ kubectl ვრცელდება -f mongo-statesetset იამლი
  • გარკვეული პრობლემების მოგვარება
  1. თუ მცირე ფაილებთან დაკავშირებული პრობლემები გაქვთ, იგი გადაწყდა მონგო სურათის განახლებით 4 ვერსიამდე (მონგო: 4.0).
  2. თუ შეცდომას მიიღებთ "კოდი: 13435, კოდი სახელი: NotMasterNoSlaveOk"
$ mongo> rs.slaveOk ()
# თუ მეტი რეპლიკა გაქვთ
rs.initiate ({_id: "myReplSet", ვერსია: 1, წევრები: [id _id: 0, მასპინძელი: "mongodb0.example.net:27017"}, {_id: 1, მასპინძელი: "mongodb1.example.net: 27017 "}, {_id: 2, მასპინძელი:" mongodb2.example.net:27017 "}]})

3. თუ შეცდომას დაუშვებთ შეცდომას "შეცდომა: რეპლიკაცია ჯერ არ არის კონფიგურაცია", გამოსავალი შეიძლება შესრულდეს ბრძანებით ქვემოთ.

$ mongo> rs.initiate ()

4. შეცვალეთ Mongo StatefulSet განმარტებით, რომ შეიცვალოს მისამართი 0.0.0.0;

MongoDB სავალდებულოა ნებისმიერ ქსელში
  • MongoDB კოლექციების შექმნა
$ kubectl exec -it mongo-0 / bin / sh $ mongo> გამოყენება > დბ. . ჩადეთ ({id: 1, სახელი: 'პროდუქტი 01'})
სად: * - თქვენი მონაცემთა ბაზის დასახელება, ის შექმნის, თუ არ არსებობს * - თქვენი კოლექციის დასახელება

დაკვირვება პრომეთესთან და გრაფანასთან

დაკვირვებულობა მოიცავს განაწილებულ კვალს, მონიტორინგს / სიგნალიზაციას და ხეების საერთო ჯამში და ანალიზს. ჩვენ ვფარავთ მხოლოდ მონიტორინგის ნაწილს, ინფრასტრუქტურისა და ბიზნესის აქტივობის მონიტორინგს.

# პრომეთეს $ დამხმარე ინსტალაციის ინსტალაცია - სახელი პრომეთეს სტაბილური / პრომეთე - სახელების სივრცის მონიტორინგი - სერვერის დაწყება.persistentVolume.enabled = true
# Grafana $ helm ინსტალაციის ინსტალაცია - სახელი გრაფანა სტაბილური / გრაფანა

შეგიძლიათ უფრო მეტი ვარიანტები თქვენს მართვაში, თუ გსურთ მეტი პერსონალიზაცია პრომეთესა და გრაფანასთვის, შეამოწმეთ დოკუმენტაცია აქ და აქ.

  • პრომეთეს კონფიგურაცია

https://gist.github.com/victorpaulo/9c4399cc4ffb22bd5847a6e9d0a1406b

მნიშვნელოვანი ნაწილი ქვემოთ მოცემულია, სექცია "scrape_configs" და "სამიზნეები", ეს წარმოადგენს სერვისებს, რომელთა საშუალებითაც გსურთ პრომეთე დაეშალოს საბოლოო წერტილზე დაყრდნობით, ნაგულისხმევი არის "/ მეტრიკა".

scrape_configs: - job_name: 'ACME Banking hackathon' სქემა: http static_configs: - სამიზნეები: ["10.0.14.59:8080", "10.0.12.103:8080", "10.0.14.245:8080"]

გირჩევთ, IP მისამართი შეცვალოთ DNS სახელით:

. .svc.cluster.local
  • გრაფანას დაფის კონფიგურაცია

გრაფანა პირდაპირ არის მითითებული დაყენება, ჯერ მონაცემთა ბაზა უნდა დავამატოთ პრომეთეს, შემდეგ კი შევქმნათ დაფა.

გრაფანას მონაცემთა კონფიგურაცია პრომეთესთან

მე ჩამოიტანეთ ჩემი დაფის განმარტება, რომელიც ქვემოთ მოცემულია.

https://gist.github.com/victorpaulo/82daf3f33b5cf4cfe1d74286744eeb46

ჩემი დაფა - უკაცრავად ეკრანის სურათზე :-)

შემდეგი ჩანაწერი აღწერს, თუ როგორ უნდა დააყენოთ chatbot IBM Watson თანაშემწეზე, როგორ გადავთვალოთ მისი პასუხები ხმაზე IBM Watson Text-to-Speech API და როგორ გამოვიყენოთ AWS S3 აუდიო ფაილების შესანახად. გთხოვთ, ნახოთ აქ.

Იხილეთ ასევე

როგორ გადმოვწერო WhatsApp 3?ამ მოწყობილობიდან შემთხვევით ამოვიღე ჩემი Instagram ანგარიში. არსებობს რაიმე საშუალება, რომლითაც შემიძლია დავტოვო ეს წვდომა?არსებობს რაიმე საშუალება სხვა მომხმარებლების მიერ Snapchat- ზე გადაწერილი ვიდეოების ჩამოტვირთვაზე?რატომ ამბობს შემდეგნაირად ჩემი მიმდევრების რამდენიმე სახელი Instagram- ში, მიუხედავად იმისა, რომ მე ყველაზე მეტად მივყვები? ეს არის ხელთათმანი?როგორ უნდა შეხვიდეთ ან დარეგისტრირდეთ ჩემს Snapchat– ში, როდესაც არ მახსოვს ჩემი ელ.ფოსტის მისამართი ან მომხმარებლის სახელი და პაროლი? მე არ წავშალე ან გამორთე ჩემი Snapchat, უბრალოდ წაშალე იგი.გსურთ შეუერთდეთ Quora Kolkata WhatsApp ჯგუფს?რატომ არ უშვებს Instagram– ს ვიდეოების პაუზის გაკეთება?როგორ გამორთოთ WhatsApp Android- ზე?