Expanding et complent Kubernetes (recensio et video fama)

Expanding et complent Kubernetes (recensio et video fama)

VIII Aprilis in colloquio Sanctus HighLoad ++ MMXIX, ut pars sectionis "DevOpum et Operationum", relatio "Explicandi et completiva Kubernetes" data est, in cuius creatione tres socii de comitatu Flant participaverunt. In ea loquimur de pluribus condicionibus in quibus Kubernetes facultates ampliare et complere voluimus, sed pro quibus solutionem promptam ac simplicem non invenimus. Solutiones necessarias habemus in forma Open Source inceptis, quae oratio iis etiam dedicata est.

Ex traditione libentissime exhibere video de fama (50 minuta, multo magis informativus quam articulus) et summa summa in textu forma. Perge!

Core et additamentis in K8s

Kubernetes industriam mutat et aditus administrationi iam diu institutus est;

  • Gratias ei abstractiones, non amplius cum conceptibus operamur ut praepositionem config vel currentem mandatum (Chef, Ansible...), sed utamur coagmentatio vasorum, servitiorum, etc.
  • Parare possumus applicationes sine cogitatione de nuances specifica situin quo deducetur: nudum metallum, nubem provisorum, etc.
  • Cum K8s te numquam expeditior maxime practica on organizing infrastructure: artes scandendi, sanationis sui, tolerantiae culpae, etc.

Quamquam omnia sane non ita levia sunt: ​​Kubernetes etiam suas novas provocationes intulit.

Kubernetes non est compositio quae solvit omnes quaestiones omnium utentium. core Kubernetes solum est pro statuto functionum minimarum necessariarum quae in praesenti sunt quisque botrus;

Expanding et complent Kubernetes (recensio et video fama)

Core Kubernetes fundamentalem statum primitivorum definit pro vasis copulandis, mercatura administrandis, et sic de aliis. De his fusius locuti sumus in referre II annos.

Expanding et complent Kubernetes (recensio et video fama)

Ex altera parte, K8s magnas praebet opportunitates ad functiones promptas dilatandas, quae adiuvant ut alios claudant -. specifica - user necessitates. Additiones ad Kubernetes responsales sunt administratorum botri, qui instituere et conformare debent omnia necessaria ut glomerantur "in recta figura" [ad solvendas proprias difficultates]. Quales additamenta haec sunt? Exempla inspiciamus.

Exempla additiones addendi

Cum Kubernetes constituto, mirari possumus reticulum quod tam necessarium est ad commercium siliquarum tam intra nodi quam inter nodi per se non operari. Kubernetes nucleus necessarios nexus non praestat, sed retiaculum determinat interface (CNI) pro tertia parte additiones. Unum ex his additionibus addendi instituere debemus, quae figurae retis erit responsabilis.

Expanding et complent Kubernetes (recensio et video fama)

Arctum exemplum est solutiones repositionis datae (orbis localis, fabrica retis, Ceph...). Primo erant in medio, sed in adventu CSI res mutat ad simile quod iam descriptum est: interface in Kubernetes est, et exsecutio eius in tertia parte modulorum est.

Alia exempla includunt:

  • Ingress-controllers (Vide eorum recensionem in nostri recentis articulum).
  • cert-amet:

    Expanding et complent Kubernetes (recensio et video fama)

  • operators totum genus additionum est (quae nominat cert-procurator) primitivam(s) et moderatoris definiunt. Logica laboris eorum solum ab imaginatione nostra circumscribitur ac nobis permittit ut paratae factae infrastructurae (exempli gratia, DBMS) in primitivas convertantur, quae multo facilius sunt laborare (quam cum vasis et eorum occasus). Ingens numerus operariorum inscriptus est - etsi multi eorum ad productionem nondum parati sunt, res tantum temporis est:

    Expanding et complent Kubernetes (recensio et video fama)

  • Metrics - Alia illustratio quomodo Kubernetes interfaciem (Metrics API) ab exsecutione separavit (partem tertiam additiones addunt sicut Prometheus adaptor, Datadog botrus agens...).
  • Ad magna et mutant, ubi in praxi non solum opus est Prometheus et Grafanased etiam kube-statu-metrica, nodi-exportator, etc.

Et hoc non est integrum indicem additionum... Eg, in comitatu Flant nunc installamus 29 additiones (quae omnia summa 249 Kubernetes obiecti creant). Simpliciter posito, vitam botri sine additamentis videre non possumus.

automation

Operatores destinantur operationes exercitationis automatariae quas cotidie convenimus. Exempla hic sunt verae vitae, quibus operans solutionem optimam fore scribens;

  1. Est tabula privata (i.e. a login) registra cum imaginibus applicandis. Sumitur vasculum singulare assignari secretum quod authenticas in registro concedit. Nostrum est curare ut hoc arcanum in spatio nominali inveniatur ut siliquae imagines extrahere possint. Multum applicationes esse possunt (quodlibet arcanum opus est), et utile est ad ipsa arcana regulariter renovare, sic optio secretorum per manum eximitur. Hic est ubi auctor subvenit: moderatorem creamus qui exspectabit nomen spatii ut appareat et, ex hoc eventu, nomen spatii secretam addet.
  2. Accessus de siliquis per default ad Interreti prohibetur. Aliquando tamen requiri potest: logicum est ut accessus licentiae mechanismum ad operandum simpliciter, non exigat specificas artes, exempli gratia, praesentia cuiusdam pittacii in spatio nominali. Quomodo auctor hic nos adiuvat? Moderator creatus est qui pittacium exspectat ut in spatio nominali compareat et aptum consilium accessum interretialem addit.
  3. Similis condicio: si quid opus est addere labemsi similem titulum habet (cum praepositione aliqua). Actiones cum operatore sunt manifestae...

In quolibet botro, exercitationes functiones solvendae sunt, et recte Hoc fieri potest utens operariorum.

Quas omnes narrationes descriptas ad conclusionem venimus pro comfortable opere in Kubernetes indigetis: A) install additiones addendi, b) develop operators (Pro solvendo cotidiana admin munia).

Quomodo scribere dicitur pro Kubernetes?

In universum schema simplex est;

Expanding et complent Kubernetes (recensio et video fama)

... sed postea evenit ut;

  • API Kubernetes res non-trivial magis est quae multum temporis ad dominum obtinet;
  • programmatio etiam non omnibus est (In lingua Go electa est lingua praelata quia peculiaris compages pro eo est - Operator SDK);
  • Simile est cum ipso compage.

Bottom linea: scribere controller (Operator) habet habe significantes facultates studere materia. Hoc iustificari posset pro operariis "magnis" - nempe pro MySQL DBMS. Sed si exempla supra scripta meminerimus (explicatio secretorum, accessus siliquarum ad Interreti...), quae etiam recte facere volumus, tunc intellegemus impensas operas praeponderare effectum quo nunc opus est;

Expanding et complent Kubernetes (recensio et video fama)

In universum oritur dilemma: multum facultatum expende et instrumentum rectum inveniendi ad enuntiationes scribendas, aut viam antiquam (sed cito). Ut eam solvere β€” ut compromissum inter haec extrema invenias β€” nostrum proprium consilium creavimus; testa-operator (vide etiam eius recens denuntiatio in centrum).

Testa operator

Quomodo operatur? Botrus habet vasculum continens Go binarium cum concha. Proximum ei est statutum hami (de his plura singula vide infra). Testimonium ipsum quibusdam subscribit certe in Kubernetes API, cuius occursus immittit respondentium hamis.

Quomodo scit concha, quos hamos nominat ad quos eventus? Haec notitia ab ipsis uncinis ad testarum transmittitur, et id ipsum simpliciter faciunt.

Hamus est scriptor Bash vel quaelibet alia documenta exsecutabilis quae unum argumentum accipit --config et respondet apud JSon. In eis rebus, quae sint earum rerum, quas earum rerum esse dicendum, iudicat;

Expanding et complent Kubernetes (recensio et video fama)

Exsequendam in testudine operantis unius exemplorum nostrorum illustrabo - secreta corrupta pro registro privato cum applicatione imaginum accessu. Constat duobus gradibus.

Usu: 1. scribe hamo

Imprimis in hamo procedemus --configsignificans nos interesse spatiis nominatim, momentum creationis suae;

[[ $1 == "--config" ]] ; then
  cat << EOF
{
  "onKubernetesEvent": [
    {
      "kind": "namespace",
      "event": ["add"]
    }
  ]
}
EOF
…

Quid logica simile? Item satis simplex;

…
else
  createdNamespace=$(jq -r '.[0].resourceName' $BINDING_CONTEXT_PATH)
  kubectl create -n ${createdNamespace} -f - << EOF
Kind: Secret
...
EOF
fi

Primus gradus est scire quem spatii nominandi causa creatum sit, secundus utens creare kubectl secretum huic spatio.

Exercere: 2. Concurrentes imaginem

Reliquum est ut hamum creatum ad testa- torem transeat β€” quid hoc facere potest? Testa-neator ipse tamquam Docker imago venit, itaque munus nostrum est uncum speciali presul in hac imagine addere:

FROM flant/shell-operator:v1.0.0-beta.1
ADD my-handler.sh /hooks

Reliquum est, id convenire et abigere;

$ docker build -t registry.example.com/my-operator:v1 .
$ docker push registry.example.com/my-operator:v1

Ultimus tactus est imago ad botri explicandam. Ad hoc quod scribimus instruere:

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: my-operator
spec:
  template:
    spec:
      containers:
      - name: my-operator
        image: registry.example.com/my-operator:v1 # 1
      serviceAccountName: my-operator              # 2

Circa primum duo sunt attendenda;

  1. indicatio novae imaginis creatae;
  2. Haec ratio componentis est quae (minimum) iura indiget ut rebus in Kubernetibus subscribere et secreta nomina spatiis collocare, ita ServiceAccount (et statuto regulae) ad hamum creamus.

Consequuntur - problema solvimus nostrum propinqui nam Kubernetes eo modo quo operator efficit secreta retexenda.

Alia features testudo-operatoris

Objecta electi generis finire, ut hamus laboret; possunt percolanturDiligens secundum quosdam pittacia (vel utens matchExpressions):

"onKubernetesEvent": [
  {
    "selector": {
      "matchLabels": {
        "foo": "bar",
       },
       "matchExpressions": [
         {
           "key": "allow",
           "operation": "In",
           "values": ["wan", "warehouse"],
         },
       ],
     }
     …
  }
]

dummodo deduplicatio mechanism, quae - usus jq colum - permittit te magnas JSON res in parvas convertere, ubi tantum parametri illae manent ut monitorem mutationum velimus.

Cum hamus appellatur, transit concha object notitiaquae pro quacumque necessitate adhiberi potest.

Eventus uncinorum felium ad Kubernetes eventus non limitantur: operator testarum subsidium praebet vocatis uncinis in tempore (Similis crontab in traditional scheduler), tum specialis res onStartup. Omnia haec eodem hamo componi et assignari possunt.

Et duo plura lineamenta conchae operantis;

  1. Laborat asynchronously. Cum eventus Kubernetes (ut objectum creatum) receptum est, aliae eventus (ut idem objectum deletum) in botro evenire potuerunt, et hami rationem ad hoc opus habent. Si hamo percussus est errore, tum defalta erit rursus voca usque ad perfectionem (hoc mores mutari possunt).
  2. Is exportantur metrics nam Prometheus, quo potes intelligere, an operarius conchyliorum laborat, numerum errorum in unoquoque hamo et vena queue magnitudine cognosce.

Summam hanc partem auditionis;

Expanding et complent Kubernetes (recensio et video fama)

Installing additiones

Ad opus commodae cum Kubernetes, necessitas addendi additiones instituendi etiam facta est. Dicam tibi de illo utens exemplo viae societatis nostrae quo modo id facimus.

Cum pluribus racemis Kubernetes laborare coepimus, cui unica erat Ingress. In unoquoque botro aliter institui oportuit, et varias figurationes YAML pro diversis ambitibus fecimus: metallum nudum, AWS...

Cum plures erant racemi, plures erant configurationes. Praeterea ipsas figurationes emendavimus, ex quibus factae sunt heterogeneae;

Expanding et complent Kubernetes (recensio et video fama)

Omnia ordine ponere, cum scripto incepimus.install-ingress.sh) quod argumentum accepit genus botri ad quod explicabimus, necessariam YAML configurationem generavit et ad Kubernetes evolvit.

Denique nostra ulterior via et ratiocinatio haec fuit;

  • ad operari cum YAML configurationibus, a template engine requiritur (primis gradibus sed simplex est);
  • crescente numero botri, necessitas adaequationis latae advenit (prima solutio erat ut scriptionem in Git poneret, eam uti cron et curreret);
  • Similis littera Prometheo requirenda est.install-prometheus.sh) notabile tamen est eo quod multo magis notitias inputationis requirit, ac eorum repositiones (bono modo - centralizatae et in botro), et nonnulla notitia (passwords) automatice generari possunt;

    Expanding et complent Kubernetes (recensio et video fama)

  • periculum evolutionis alicuius iniuriae in numerum botri crescentem constanter crescere, ut intelleximus installatores nam Ingress et Prometheus (i.e. duo scripta) choragi opus erat (plures rami in Git, plures croces ad renovandum eas in correspondente: stabulum vel racemi test);
  • с kubectl apply difficilis laborando facta est, quia declarativa non est nec solum obiecta creare potest, sed non statuere de eorum statu / ea delere;
  • Desiderabamus aliqua munera quae eo tempore minime implevimus;
    • plena potestas effectus botri updates;
    • latae sententiae nonnullorum parametrorum (input pro scriptorum institutionum) innixa notitia quae ex botro (inventio) obtineri potest;
    • eiusque logicae progressiones in forma continuae inventionis.

Haec omnia cumulata experientia intra ambitum alterius consilii complevimus. addon operator.

Addon-operator

Fundatur in iam dicto testaceo operante. Tota ratio haec similis est:

Sequentia additur testudinis uncinis;

  • values ​​​​repono,
  • Galea chart,
  • componentes quod monitores ad bona copia et β€” si quis mutaverit β€” rogat Helm, ut revolvant chart.

Expanding et complent Kubernetes (recensio et video fama)

Sic ad eventum in Kubernetes agere possumus, hamum immittere, et ex hoc hamo mutationes repositionis facere possumus, postquam chartula re-download erit. In schemate consequens separamus uncinos et chartulam in unum componentium, quod vocamus modulus:

Expanding et complent Kubernetes (recensio et video fama)

Multi moduli esse possunt, iisque addimus uncinos globales, valores globalis promptuarium et componentium monitores huius globalis copiae.

Nunc, cum in Kubernetes aliquid acciderit, agere possumus ei utendo hamo globali et aliquid in copia globali mutare. Haec mutatio animadvertenda erit, et omnes modulos in botro evolvendos faciam;

Expanding et complent Kubernetes (recensio et video fama)

Quae res omnibus requisitis satisfacit ad additiones insertas quae supra dictae sunt:

  • Helm spectat ad templationem et declarativum.
  • Eventus auto- renovationis certus est utens hamo globali, quod subcriptio in schedula accedit et, si novam illic imaginem systematis videt, evolvit (i.e. "se").
  • Occasus recondere in botro est implemented usura ConfigMapquae continet primariam datam pro storonibus (satutino onerata sunt in storatorio).
  • Problemata cum password generationis, inventionis et inventionis continuae utentes hamis solvuntur.
  • Choragium fit gratias tags quod Docker ex archa sustinet.
  • Effectus adhibendi metricos monitores per quos status intelligere possumus.

Tota haec ratio in unius binarii specie perducitur in Go, quae addon-operator appellatur. Ex quo schemate simpliciorem aspectum facit:

Expanding et complent Kubernetes (recensio et video fama)

Praecipua pars in hoc schemate est copia modulorum (Extulit in griseo infra). Nunc modulum scribere possumus pro exiguo labore addendi requisito ac cave ut in unoquoque botro instituatur, renovabitur et respondebit eventibus quibus opus est in botro.

"Flant" usus addon operator on 70+ Botri Kubernetes. Status Current - alpha version. Nunc documenta paramus betam dimittere, nunc in promptuario exempla praestoex eo quod potes tuum addon.

Unde mihi modulos ado-operantis accipiam? Bibliotheca nostra proximus nobis scaena est: id aestate facere cogitamus.

Videos et labitur

Vide a perficiendi (~ 50 minuta);

Exhibitio relationis;

PS

Aliae relationes in nostro blog:

Etiam in sequentibus publicationibus interesse potes:

Source: www.habr.com