Ịgbasawanye na ịkwado Kubernetes (nleba anya na akụkọ vidiyo)

Ịgbasawanye na ịkwado Kubernetes (nleba anya na akụkọ vidiyo)

Eprel 8 na ogbako Saint HighLoad++ 2019, dị ka akụkụ nke "DevOps na Operations" ngalaba, a kọrọ akụkọ "Ịgbasa na complementing Kubernetes" e nyere, na ihe e kere eke nke atọ ndị ọrụ nke Flant ụlọ ọrụ sonyere. N'ime ya, anyị na-ekwu maka ọtụtụ ọnọdụ nke anyị chọrọ ịgbasa na ịkwado ike nke Kubernetes, ma nke anyị ahụghị ihe ngwọta dị njikere ma dị mfe. Anyị nwere ngwọta ndị dị mkpa n'ụdị ọrụ Open Source, a na-ararakwa okwu a nye ha.

Site na ọdịnala, anyị nwere obi ụtọ iweta vidiyo nke akụkọ (Nkeji 50, ọtụtụ ihe ọmụma karịa akụkọ) na nchịkọta isi na ụdị ederede. Gaba!

Isi na mgbakwunye na K8s

Kubernetes na-agbanwe ụlọ ọrụ na ụzọ maka nchịkwa nke emeberela ogologo oge:

  • Daalụ ya abstractions, anyị anaghịzi arụ ọrụ na echiche dị ka ịtọlite ​​​​config ma ọ bụ na-arụ ọrụ iwu (Chef, Ansible...), kama na-eji nchịkọta nke arịa, ọrụ, wdg.
  • Anyị nwere ike ịkwadebe ngwa n'echeghị echiche banyere nuances nke kpọmkwem saịtị, nke a ga-arụ ọrụ ya: ígwè efu, igwe ojii nke otu n'ime ndị na-enye ya, wdg.
  • Site na K8 ị nwetabeghị ohere karịa omume kacha mma n'ịhazi akụrụngwa: usoro ịkpụcha ihe, ọgwụgwọ onwe onye, ​​nnabata mmejọ, wdg.

Agbanyeghị, n'ezie, ihe niile adịghị mma: Kubernetes wetakwara ihe ịma aka ọhụrụ nke ya.

Kubernetes bụghị bụ ngwakọta nke na-edozi nsogbu niile nke ndị ọrụ niile. Isi Kubernetes na-ahụ maka naanị otu ọrụ kacha nta dị mkpa dị na ya bụla ụyọkọ:

Ịgbasawanye na ịkwado Kubernetes (nleba anya na akụkọ vidiyo)

Isi Kubernetes na-akọwapụta usoro izizi maka ịchịkọta arịa, ijikwa okporo ụzọ, na ihe ndị ọzọ. Anyị na-ekwu banyere ha n'ụzọ zuru ezu na akụkọ 2 afọ gara aga.

Ịgbasawanye na ịkwado Kubernetes (nleba anya na akụkọ vidiyo)

N'aka nke ọzọ, K8 na-enye ohere dị ukwuu iji gbasaa ọrụ dịnụ, nke na-enyere aka imechi ndị ọzọ - kpọmkwem - mkpa onye ọrụ. Mgbakwunye na Kubernetes bụ ọrụ nke ndị nchịkwa ụyọkọ, ndị ga-arụnye na hazie ihe niile dị mkpa iji nweta ụyọkọ ha "n'ụdị ziri ezi" [iji dozie nsogbu ha kpọmkwem]. Kedu ụdị mgbakwunye ndị a? Ka anyị leba anya n’ihe atụ ụfọdụ.

Ọmụmaatụ nke mgbakwunye

Mgbe etinyere Kubernetes, ọ nwere ike iju anyị anya na ịkparịta ụka n'Ịntanet nke dị mkpa maka mmekọrịta nke pọd ma n'ime ọnụ na n'etiti ọnụ anaghị arụ ọrụ n'onwe ya. Kubernetes kernel anaghị ekwe nkwa njikọ dị mkpa, kama ọ na-ekpebi netwọkụ interface (CNI) maka mgbakwunye ndị ọzọ. Anyị ga-etinyerịrị otu n'ime ihe mgbakwunye ndị a, nke ga-ahụ maka nhazi netwọkụ.

Ịgbasawanye na ịkwado Kubernetes (nleba anya na akụkọ vidiyo)

Ihe atụ dị nso bụ ngwọta nchekwa data (disiki mpaghara, ngwaọrụ ngọngọ netwọk, Ceph ...). Na mbụ ha nọ na isi, ma na ọbịbịa CSI ọnọdụ ahụ na-agbanwe na ihe yiri nke a kọwarala: interface dị na Kubernetes, na mmejuputa ya dị na modul ndị ọzọ.

Ọmụmaatụ ndị ọzọ gụnyere:

  • Nje- ndị na-achịkwa (lee nyocha ha na akụkọ anyị na nso nso a).
  • mant njikwa:

    Ịgbasawanye na ịkwado Kubernetes (nleba anya na akụkọ vidiyo)

  • Ndị ọrụ bụ klaasị dum nke tinye-ons (nke gụnyere onye njikwa a kpọtụrụ aha), ha na-akọwapụta (s) na onye njikwa (s). Echiche nke ọrụ ha na-ejedebe naanị site n'echiche anyị ma na-enye anyị ohere ịtụgharị akụrụngwa akụrụngwa emebere (dịka ọmụmaatụ, DBMS) n'ime primitives, nke dị mfe iji rụọ ọrụ na (karịa na otu igbe na ntọala ha). Edewo ọtụtụ ndị na-arụ ọrụ - ọ bụrụgodị na ọtụtụ n'ime ha adịbeghị njikere maka mmepụta, ọ bụ naanị oge:

    Ịgbasawanye na ịkwado Kubernetes (nleba anya na akụkọ vidiyo)

  • Metrics - ihe atụ ọzọ nke otu Kubernetes si kewaa interface (Metrics API) na mmejuputa ya (ihe mgbakwunye ndị ọzọ dị ka ihe nkwụnye Prometheus, onye na-ahụ maka ụyọkọ Datadog ...).
  • Iji nlekota na ọnụ ọgụgụ, ebe na omume ọ bụghị naanị dị mkpa Prometheus na Grafana, kamakwa kube-state-metrics, node-exporter, wdg.

Ma nke a abụghị ndepụta mgbakwunye zuru oke ... Dịka ọmụmaatụ, na ụlọ ọrụ Flant anyị na-etinye ugbu a 29 mgbakwunye (ha niile na-emepụta mkpokọta 249 Kubernetes ihe). N'ikwu ya n'ụzọ dị mfe, anyị enweghị ike ịhụ ndụ ụyọkọ na-enweghị mgbakwunye.

Akpaka

Emebere ndị na-arụ ọrụ ka ha na-arụ ọrụ nke anyị na-ezute kwa ụbọchị. Nke a bụ ọmụmaatụ n'ezie nke onye ọrụ ide ihe ga-abụ ezigbo ngwọta:

  1. Enwere ndekọ nke onwe (ya bụ, chọrọ nbanye) ndekọ nwere onyonyo maka ngwa ahụ. A na-eche na a na-ekenye pod ọ bụla ihe nzuzo pụrụ iche nke na-enye ohere nyocha na ndekọ. Ọrụ anyị bụ ịhụ na a chọtara ihe nzuzo a na oghere aha ka pọd wee budata onyonyo. Enwere ike inwe ọtụtụ ngwa (nke ọ bụla n'ime ha chọrọ ihe nzuzo), ọ bara uru imelite ihe nzuzo onwe ha mgbe niile, ya mere, a na-ewepụ nhọrọ nke ịtọpụ ihe nzuzo site n'aka. Nke a bụ ebe onye ọrụ na-abịa na nnapụta: anyị na-emepụta onye na-ahụ maka njikwa ga-echere ka aha aha pụtara na, dabere na ihe omume a, ga-agbakwunye ihe nzuzo na aha aha.
  2. Ekwechibidoro site na pọd gaa na ịntanetị na ndabara. Ma mgbe ụfọdụ ọ nwere ike ịchọrọ: ọ bụ ihe ezi uche dị na ya na usoro ikike ịnweta ka ọ rụọ ọrụ n'ụzọ dị mfe, na-achọghị nkà ụfọdụ, dịka ọmụmaatụ, site na ọnụnọ nke akara ụfọdụ na aha aha. Kedu ka onye ọrụ ga-esi nyere anyị aka ebe a? A na-emepụta onye njikwa na-eche ka akara ngosi pụta na oghere aha ma gbakwunye iwu kwesịrị ekwesị maka ịnweta ịntanetị.
  3. Ọnọdụ yiri ya: were ya na anyị kwesịrị ịgbakwunye ụfọdụ adịghị ọcha, ma ọ bụrụ na o nwere akara yiri ya (nwere ụdị prefix). Omume ya na onye ọrụ pụtara ìhè...

N'ụyọkọ ọ bụla, a ga-edozirịrị ọrụ oge niile, yana nri enwere ike ime nke a site na iji ndị ọrụ.

N'ịchịkọta akụkọ niile a kọwara, anyị bịara na nkwubi okwu ahụ Maka ọrụ dị mma na Kubernetes ị chọrọ: A) tinye mgbakwunye, b) ịzụlite ndị na-arụ ọrụ (maka idozi ọrụ nchịkwa kwa ụbọchị).

Kedu otu esi ede nkwupụta maka Kubernetes?

N'ozuzu, atụmatụ ahụ dị mfe:

Ịgbasawanye na ịkwado Kubernetes (nleba anya na akụkọ vidiyo)

... ma mgbe ahụ ọ na-apụta na:

  • Kubernetes API bụ ihe na-adịghị mkpa nke na-ewe oge dị ukwuu iji mara;
  • mmemme abụghịkwa maka onye ọ bụla (ahọpụtara asụsụ Go ka ọ bụrụ asụsụ kachasị amasị ya n'ihi na enwere usoro pụrụ iche maka ya - SDK onye ọrụ);
  • Ọnọdụ yiri nke ahụ n'onwe ya.

Ekwu bụ: ide ihe njikwa (onye ọrụ) kwesịrị na-emefu nnukwu ego ịmụ ihe. A ga-akwado nke a maka ndị ọrụ “nnukwu” - sịnụ, maka MySQL DBMS. Ma ọ bụrụ na anyị na-echeta ihe atụ ndị a kọwara n'elu (na-ekpughe ihe nzuzo, ịnweta pods na Ịntanetị ...), nke anyị na-achọkwa ime nke ọma, mgbe ahụ, anyị ga-aghọta na mgbalị a na-etinye ga-akarị nsonaazụ anyị chọrọ ugbu a:

Ịgbasawanye na ịkwado Kubernetes (nleba anya na akụkọ vidiyo)

N'ozuzu, nsogbu na-ebilite: na-emefu ọtụtụ ihe onwunwe ma chọta ngwá ọrụ kwesịrị ekwesị maka ide nkwupụta, ma ọ bụ mee ya n'ụzọ ochie (ma ngwa ngwa). Iji dozie ya - ịchọta nkwekọrịta n'etiti oke ndị a - anyị mepụtara ọrụ nke anyị: shei-arụ ọrụ (leekwa nke ya ọkwa na nso nso a na ulo).

Shell-arụ ọrụ

Kedu ka ọ si arụ ọrụ? Ụyọkọ ahụ nwere pọd nwere Go binary nwere onye na-arụ ọrụ shei. Na-esote ya bụ set nke nko (nkọwa ndị ọzọ gbasara ha - lee n'okpuru). Onye na-arụ ọrụ shei n'onwe ya na-edebanye aha ụfọdụ ihe na Kubernetes API, n'ihe omume nke ọ na-ebupụta nko ndị kwekọrọ.

Kedu ka onye na-arụ ọrụ shei si mara nko ọ ga-akpọ na nke ihe omume? A na-ebufe ozi a na onye na-arụ ọrụ shei site na nko n'onwe ha, ha na-eme ya n'ụzọ dị mfe.

nko bụ script Bash ma ọ bụ faịlụ ọ bụla enwere ike ime nke na-anabata otu arụmụka --config wee jiri JSON zaghachi. Nke ikpeazụ na-ekpebi ihe ndị nwere mmasị na ya na ihe omume (maka ihe ndị a) kwesịrị ịzaghachi:

Ịgbasawanye na ịkwado Kubernetes (nleba anya na akụkọ vidiyo)

M ga-egosipụta mmejuputa atumatu na onye na-arụ ọrụ shei nke otu n'ime ihe atụ anyị - ihe nzuzo na-emebi emebi maka ịnweta ndekọ nzuzo na foto ngwa. Ọ nwere nkebi abụọ.

Omume: 1. Dee nko

Nke mbụ, na nko anyị ga-edozi --config, na-egosi na anyị nwere mmasị na namespaces, na kpọmkwem, oge e kere ha:

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

Kedu ihe mgbagha ahụ ga-adị ka? Ọ dịkwa mfe:

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

Nzọụkwụ mbụ bụ ịchọpụta aha ebe e kere, nke abụọ bụ iji mepụta ya kubectl nzuzo maka aha ebe a.

Omume: 2. Ịchịkọta ihe oyiyi

Naanị ihe fọdụrụ bụ ịfefe nko ekepụtara na onye na-arụ ọrụ shei - otu esi eme nke a? Onye na-arụ ọrụ shei n'onwe ya na-abịa dị ka onyonyo Docker, yabụ ọrụ anyị bụ ịgbakwunye nko na akwụkwọ ndekọ aha pụrụ iche na onyonyo a:

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

Naanị ihe fọdụrụ bụ ịchịkọta ya na ịkwanye ya:

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

Emetụ aka ikpeazụ bụ ibunye onyonyo a na ụyọkọ ahụ. Iji mee nke a, ka anyị dee Ịnye ọrụ:

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

Enwere isi ihe abụọ ị ga-aṅa ntị na:

  1. ihe ngosi nke ihe oyiyi emepụtara ọhụrụ;
  2. Nke a bụ akụkụ sistemu nke (na opekempe) chọrọ ikike ịdenye aha na ihe omume na Kubernetes na ikenye ihe nzuzo na oghere aha, yabụ anyị na-emepụta AccountAccount (na usoro iwu) maka nko.

N'ihi - anyị doziri nsogbu anyị ndị ikwu maka Kubernetes n'ụzọ na-emepụta onye na-arụ ọrụ maka imebi ihe nzuzo.

Akụkụ ndị ọzọ nke shell-operator

Iji kpachie ihe nke ụdị ị họọrọ nke nko ga-arụ ọrụ, enwere ike nzacha ha, na-ahọpụta dịka akara ụfọdụ siri dị (ma ọ bụ iji matchExpressions):

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

Enyere ya usoro mwepụ, nke - iji nzacha jq - na-enye gị ohere ịmegharị nnukwu ihe JSON n'ime obere ihe, ebe naanị paramita ndị ahụ fọdụrụ na anyị chọrọ nyochaa maka mgbanwe.

Mgbe a na-akpọ nko, onye na-arụ ọrụ shei na-agafe ya ihe data, nke enwere ike iji maka mkpa ọ bụla.

Ihe omume na-ebute nko na-ejedebeghị na mmemme Kubernetes: onye na-arụ ọrụ shei na-enye nkwado maka na-akpọ nko site na oge (dị ka crontab na nhazi oge ọdịnala), yana mmemme pụrụ iche na mmalite. Enwere ike jikọta ihe omume ndị a niile ma kenye ya n'otu nko.

Na atụmatụ abụọ ọzọ nke shell-operator:

  1. Ọ na-arụ ọrụ asynchronously. Ebe ọ bụ na enwetara ihe omume Kubernetes (dị ka ihe a na-emepụta), ihe omume ndị ọzọ (dị ka otu ihe a na-ehichapụ) nwere ike ime na ụyọkọ ahụ, nko kwesịrị ịkọwa nke a. Ọ bụrụ na ejiri njehie gbuo nko ahụ, mgbe ahụ na ndabara ọ ga-abụ kpọgharịa ọzọ ruo mgbe emechara nke ọma (omume a nwere ike ịgbanwe).
  2. Ọ na-ebupụ metrik maka Prometheus, nke ị nwere ike ịghọta ma onye na-arụ ọrụ shei na-arụ ọrụ, chọpụta ọnụọgụ nke njehie maka nko ọ bụla na nha kwụ n'ahịrị ugbu a.

Iji chịkọta akụkụ nke akụkọ a:

Ịgbasawanye na ịkwado Kubernetes (nleba anya na akụkọ vidiyo)

Tinye-ons nwụnye

Maka ịrụ ọrụ ntụsara ahụ na Kubernetes, ekwuru mkpa ọ dị ịwụnye mgbakwunye. M ga-agwa gị banyere ya site na iji ihe atụ nke ụzọ ụlọ ọrụ anyị ka anyị si eme ya ugbu a.

Anyị na Kubernetes malitere ịrụ ọrụ na ọtụtụ ụyọkọ, naanị mgbakwunye na ya bụ Ingress. Ọ dị mkpa ka etinye ya dị iche iche na ụyọkọ nke ọ bụla, anyị mekwara ọtụtụ nhazi YAML maka gburugburu dị iche iche: ígwè efu, AWS ...

Dịka enwere ọtụtụ ụyọkọ, enwere ọtụtụ nhazi. Tụkwasị na nke ahụ, anyị na-emeziwanye nhazi ndị a n'onwe ha, n'ihi ya, ha ghọrọ ndị dị iche iche:

Ịgbasawanye na ịkwado Kubernetes (nleba anya na akụkọ vidiyo)

Iji tinye ihe niile n'usoro, anyị malitere site na edemede (install-ingress.sh), nke were dị ka arụmụka ụdị ụyọkọ nke anyị ga-ebuga, mepụta nhazi YAML dị mkpa wee bufee ya na Kubernetes.

Na nkenke, ụzọ anyị gara n'ihu na echiche metụtara ya bụ ndị a:

  • iji rụọ ọrụ na nhazi YAML, achọrọ engine template (na ọkwa mbụ nke a dị mfe sed);
  • na mmụba nke ọnụ ọgụgụ nke ụyọkọ, mkpa maka mmelite akpaka bịara (ihe ngwọta mbụ bụ itinye edemede na Git, melite ya site na iji cron ma mee ya);
  • achọrọ edemede yiri nke ahụ maka Prometheus (install-prometheus.sh), Otú ọ dị, ọ bụ ihe a ma ama n'ihi na ọ chọrọ ọtụtụ data ntinye, yana nchekwa ha (n'ụzọ dị mma - Centralized na na ụyọkọ), na ụfọdụ data (okwuntughe) nwere ike ịmepụta na-akpaghị aka:

    Ịgbasawanye na ịkwado Kubernetes (nleba anya na akụkọ vidiyo)

  • ihe ize ndụ nke iwepụta ihe na-ezighị ezi nye ọnụ ọgụgụ na-arị elu nke ụyọkọ na-eto eto mgbe niile, ya mere anyị ghọtara na ndị installers. (ya bụ edemede abụọ: maka Ingress na Prometheus) achọrọ nhazi (ọtụtụ alaka dị na Git, ọtụtụ cron iji melite ha na nke kwekọrọ: ụyọkọ kwụsiri ike ma ọ bụ nwale);
  • с kubectl apply ọ ghọwo ihe siri ike ịrụ ọrụ na n'ihi na ọ bụghị nkwupụta ma nwee ike ịmepụta naanị ihe, ma ọ bụghị ime mkpebi na ọnọdụ ha / ihichapụ ha;
  • Anyị na-efunahụ ụfọdụ ọrụ ndị anyị na-arụbeghị ọrụ n'oge ahụ:
    • njikwa zuru oke na nsonaazụ mmelite ụyọkọ,
    • Mkpebi akpaka nke ụfọdụ paramita (ntinye maka edemede nrụnye) dabere na data enwere ike nweta site na ụyọkọ (nchọpụta),
    • mmepe ezi uche ya n'ụdị nchọpụta na-aga n'ihu.

Anyị etinyere ahụmịhe niile a gbakọtara n'ime usoro nke ọrụ anyị ndị ọzọ - adon-operator.

Addon-onye ọrụ

Ọ dabere na onye na-arụ ọrụ shei a kpọtụrụ aha. Usoro niile dị ka nke a:

A na-agbakwunye ihe ndị a na nko ndị na-arụ ọrụ shei:

  • ụkpụrụ nchekwa,
  • chaatị Helm,
  • akụrụngwa na Nyochaa ụlọ ahịa ụkpụrụ na - ọ bụrụ na mgbanwe ọ bụla - rịọ Helm ka ọ tụgharịa chaatị ahụ ọzọ.

Ịgbasawanye na ịkwado Kubernetes (nleba anya na akụkọ vidiyo)

Ya mere, anyị nwere ike imeghachi omume na ihe omume na Kubernetes, malite nko, na site na nko a, anyị nwere ike ime mgbanwe na nchekwa, mgbe nke ahụ gasịrị, a ga-ebudata eserese ahụ ọzọ. Na eserese a na-esi na ya pụta, anyị na-ekewa nhazi nko na chaatị ahụ n'ime otu akụkụ, nke anyị na-akpọ modul:

Ịgbasawanye na ịkwado Kubernetes (nleba anya na akụkọ vidiyo)

Enwere ike inwe ọtụtụ modul, na ha anyị na-agbakwunye nko zuru ụwa ọnụ, ụlọ ahịa ụkpụrụ ụwa, na akụkụ nke na-enyocha ụlọ ahịa ụwa a.

Ugbu a, mgbe ihe mere na Kubernetes, anyị nwere ike imeghachi ya site na iji nko zuru ụwa ọnụ ma gbanwee ihe na ụlọ ahịa ụwa. A ga-ahụ mgbanwe a ma mee ka ebupụ modul niile dị na ụyọkọ:

Ịgbasawanye na ịkwado Kubernetes (nleba anya na akụkọ vidiyo)

Atụmatụ a na-egbo ihe niile achọrọ maka ịwụnye mgbakwunye ndị ekwuru n'elu:

  • Helm na-ahụ maka ịnwapụta na nkwupụta.
  • A na-edozi okwu nke imelite onwe ya site na iji nko zuru ụwa ọnụ, nke na-aga na ndekọ na nhazi oge na, ọ bụrụ na ọ hụ ihe oyiyi usoro ọhụrụ n'ebe ahụ, na-atụgharị ya (ya bụ "onwe ya").
  • A na-emejuputa ntọala n'ime ụyọkọ ConfigMap, nke nwere data mbụ maka nchekwa (na mmalite ha na-ebuba n'ime ebe nchekwa).
  • A na-edozi nsogbu na ọgbọ okwuntughe, nchọpụta na nchọpụta na-aga n'ihu site na iji nko.
  • A na-enweta nhazi ọkwa site na mkpado, nke Docker na-akwado na igbe ahụ.
  • A na-enyocha nsonaazụ ya site na iji metrik nke anyị nwere ike isi ghọta ọnọdụ ahụ.

A na-emejuputa usoro a dum n'ụdị ọnụọgụ abụọ na Go, nke a na-akpọ addon-operator. Nke a na-eme ka eserese ahụ dị mfe:

Ịgbasawanye na ịkwado Kubernetes (nleba anya na akụkọ vidiyo)

Isi ihe dị na eserese a bụ otu modul (Edoro ya na isi awọ n'okpuru). Ugbu a, anyị nwere ike dee modul maka ihe mgbakwunye achọrọ na obere mgbalị ma jide n'aka na a ga-etinye ya na ụyọkọ ọ bụla, a ga-emelite ma meghachi omume na ihe omume ọ chọrọ na ụyọkọ.

"Flant" na-eji adon-operator na ụyọkọ Kubernetes 70+. Ọkwa dị ugbu a - ụdị alfa. Ugbu a, anyị na-akwado akwụkwọ iji wepụta beta, mana ugbu a na ebe nchekwa ihe atụ dị, na ndabere nke ị nwere ike ịmepụta addon nke gị.

Ebee ka m nwere ike nweta modul maka addon-operator? Ibipụta ọbá akwụkwọ anyị bụ usoro ọzọ maka anyị; anyị na-eme atụmatụ ime nke a n'oge okpomọkụ.

Vidiyo na slide

Vidiyo sitere na arụmọrụ (~ nkeji 50):

Ngosipụta akụkọ a:

PS

Akụkọ ndị ọzọ na blọọgụ anyị:

Ị nwekwara ike ịmasị akwụkwọ ndị a:

isi: www.habr.com

Tinye a comment