Hele? Bash! E hui me ka mea hoʻohana shell (nānā a me ka hōʻike wikiō mai KubeCon EU'2020)

I kēia makahiki, ʻo ka hui nui ʻo Kubernetes ʻEulopa - KubeCon + CloudNativeCon Europe 2020 - he virtual. Eia naʻe, ʻaʻole ʻo ia ʻano hoʻololi i kaohi iā mākou mai ka hāʻawi ʻana i kā mākou hōʻike lōʻihi i hoʻolālā ʻia "E hele? Bash! E hui me ka Shell-operator" i hoʻolaʻa ʻia i kā mākou papahana Open Source mea hoʻohana pūpū.

ʻO kēia ʻatikala, i hoʻoulu ʻia e ke kamaʻilio, e hōʻike ana i kahi ala e hoʻomaʻamaʻa i ke kaʻina hana o ka hana ʻana i nā mea hoʻohana no Kubernetes a hōʻike i ke ʻano e hiki ai iā ʻoe ke hana iā ʻoe iho me ka hoʻoikaika liʻiliʻi me ka hoʻohana ʻana i ka shell-operator.

Hele? Bash! E hui me ka mea hoʻohana shell (nānā a me ka hōʻike wikiō mai KubeCon EU'2020)

Hoʻolauna wikiō o ka hōʻike (~ 23 mau minuke ma ka ʻōlelo Pelekania, ʻoi aku ka ʻike ma mua o ka ʻatikala) a me ka unuhi nui mai ia mea ma ke ʻano kikokikona. Hele!

Ma Flant mākou e hoʻomaʻamaʻa mau a hoʻomaʻamaʻa i nā mea āpau. I kēia lā e kamaʻilio mākou e pili ana i kekahi manaʻo hoihoi. Hui: palapala ʻōpuʻu ʻōiwi maoli!

Eia naʻe, e hoʻomaka kākou me ka pōʻaiapili i loaʻa ai kēia mau mea a pau: Kubernetes.

Kubernetes API a me nā mea hoʻoponopono

Hiki ke hōʻike ʻia ka API ma Kubernetes ma ke ʻano he kikowaena waihona me nā papa kuhikuhi no kēlā me kēia ʻano mea. Hōʻike ʻia nā mea (nā kumuwaiwai) ma kēia kikowaena e nā faila YAML. Eia kekahi, loaʻa i ka server kahi API kumu e hiki ai iā ʻoe ke hana i ʻekolu mau mea:

  • e apo waiwai ma kona ʻano a me kona inoa;
  • hoʻololi punawai (i kēia hihia, mālama ka server i nā mea "pololei" wale nō - hoʻolei ʻia nā mea i hana hewa ʻole a i manaʻo ʻia no nā papa kuhikuhi ʻē aʻe);
  • alahele no ka punawai (ma kēia hihia, loaʻa koke i ka mea hoʻohana kāna mana o kēia manawa/hōʻano hou).

No laila, hana ʻo Kubernetes e like me ke ʻano o ka faila faila (no nā hōʻike YAML) me ʻekolu mau ʻano kumu (ʻae, ʻoiaʻiʻo aia kekahi, akā e haʻalele mākou iā lākou i kēia manawa).

Hele? Bash! E hui me ka mea hoʻohana shell (nānā a me ka hōʻike wikiō mai KubeCon EU'2020)

ʻO ka pilikia, hiki i ke kikowaena ke mālama i ka ʻike. No ka hana ʻana e pono ai ʻoe ke kikowaena - ka lua o ka manaʻo koʻikoʻi a koʻikoʻi i ka honua o Kubernetes.

ʻElua ʻano nui o nā mea hoʻoponopono. Lawe ka mea mua i ka ʻike mai nā Kubernetes, hoʻoponopono iā ia e like me ka loiloi pūnana, a hoʻihoʻi iā K8s. Lawe ka lua i ka ʻike mai Kubernetes, akā, ʻaʻole like me ka ʻano mua, hoʻololi i ke kūlana o kekahi mau kumuwaiwai o waho.

E nānā pono kākou i ke kaʻina hana o ka hoʻokumu ʻana i kahi Deployment ma Kubernetes:

  • Mea hoʻoponopono hoʻolālā (i loko o kube-controller-manager) loaʻa ka ʻike e pili ana i ka Deployment a hana i kahi ReplicaSet.
  • Hoʻokumu ʻo ReplicaSet i ʻelua replicas (ʻelua pods) e pili ana i kēia ʻike, akā ʻaʻole i hoʻonohonoho ʻia kēia mau pods.
  • Hoʻonohonoho ka mea hoʻonohonoho i nā pods a hoʻohui i ka ʻike node i kā lākou YAML.
  • Hoʻololi nā Kubelets i kahi kumuwaiwai waho (e ʻōlelo ʻo Docker).

A laila e hana hou ʻia kēia kaʻina holoʻokoʻa ma ka ʻaoʻao hope: nānā ke kubelet i nā ipu, helu i ke kūlana o ka pod a hoʻihoʻi iā ia. Loaʻa i ka mea hoʻoponopono ReplicaSet ke kūlana a hōʻano hou i ke kūlana o ka set replica. Hana ʻia ka mea like me ka Deployment Controller a loaʻa i ka mea hoʻohana ke kūlana hou (i kēia manawa).

Hele? Bash! E hui me ka mea hoʻohana shell (nānā a me ka hōʻike wikiō mai KubeCon EU'2020)

Mea hoʻohana pū

ʻIke ʻia ua hoʻokumu ʻia ʻo Kubernetes ma ka hana hui o nā mea hoʻokele like ʻole (ʻo nā mea hoʻokele Kubernetes kekahi). Ke kū nei ka nīnau, pehea e hana ai i kāu mea hoʻohana ponoʻī me ka hoʻoikaika liʻiliʻi? A eia ka mea a mākou i kūkulu ai e hoʻopakele mea hoʻohana pūpū. Hāʻawi ia i nā luna ʻōnaehana e hana i kā lākou mau ʻōlelo me ka hoʻohana ʻana i nā ʻano maʻamau.

Hele? Bash! E hui me ka mea hoʻohana shell (nānā a me ka hōʻike wikiō mai KubeCon EU'2020)

Laʻana maʻalahi: kope kope

E nānā kākou i kahi laʻana maʻalahi.

E ʻōlelo kākou he pūʻulu Kubernetes kā mākou. He wahi inoa kona default me kekahi mea huna mysecret. Eia kekahi, aia nā inoa inoa ʻē aʻe i ka hui. ʻO kekahi o lākou he lepili kikoʻī i hoʻopili ʻia iā lākou. ʻO kā mākou pahuhopu ke kope ʻana i ka Secret i loko o nā inoa inoa me kahi lepili.

Paʻakikī ka hana ma muli o ka ʻike ʻia ʻana o nā inoa inoa hou i ka pūpū, a loaʻa paha i kekahi o lākou kēia lepili. Ma ka ʻaoʻao ʻē aʻe, ke hoʻopau ʻia ka lepili, pono e holoi ʻia ʻo Secret. Ma waho aʻe o kēia, hiki ke hoʻololi i ka mea huna: i kēia hihia, pono e kope ʻia ka mea huna hou i nā inoa inoa āpau me nā lepili. Inā holoi ʻia ʻo Secret ma kekahi inoa inoa, pono e hoʻihoʻi koke kā mākou mea hoʻohana.

I kēia manawa ua hoʻokumu ʻia ka hana, ʻo ia ka manawa e hoʻomaka ai e hoʻokō me ka hoʻohana ʻana i ka shell-operator. Akā ʻo ka mea mua, pono e ʻōlelo i kekahi mau huaʻōlelo e pili ana i ka shell-operator ponoʻī.

Pehea e hana ai ka shell-operator

E like me nā haʻahaʻa hana ʻē aʻe ma Kubernetes, holo ka shell-operator i kāna pod ponoʻī. Ma keia pod i ka papa kuhikuhi /hooks mālama ʻia nā faila hoʻokō. Hiki i kēia mau palapala ma Bash, Python, Ruby, etc. Kapa mākou i nā faila hiki ke hoʻokō ʻia he makau (lou).

Hele? Bash! E hui me ka mea hoʻohana shell (nānā a me ka hōʻike wikiō mai KubeCon EU'2020)

Kākoʻo ʻo Shell-operator i nā hanana Kubernetes a holo i kēia mau makau i pane i kēlā mau hanana e pono ai mākou.

Hele? Bash! E hui me ka mea hoʻohana shell (nānā a me ka hōʻike wikiō mai KubeCon EU'2020)

Pehea e ʻike ai ka mea hoʻohana shell i ka makau e holo ai a i ka manawa hea? ʻO ka manaʻo o kēlā me kēia makau he ʻelua pae. I ka hoʻomaka ʻana, hoʻokele ka mea hana shell i nā makau a pau me ka hoʻopaʻapaʻa --config ʻO kēia ka pae hoʻonohonoho. A ma hope o ia, hoʻomaka ʻia nā makau ma ke ʻano maʻamau - i ka pane ʻana i nā hanana i hoʻopili ʻia ai lākou. I ka hihia hope, loaʻa i ka makau ka pōʻaiapili paʻa (pōʻaiapili paʻa) -ʻikepili i ka JSON format, a mākou e kamaʻilio e pili ana i nā kikoʻī ma lalo.

Ke hana nei i mea hoʻohana ma Bash

I kēia manawa ua mākaukau mākou no ka hoʻokō. No ka hana ʻana i kēia, pono mākou e kākau i ʻelua mau hana (ma ke ala, paipai mākou ka hale waihona puke shell_lib, ka mea maʻalahi i ke kākau ʻana i nā makau ma Bash):

  • pono ka mea mua no ka pae hoʻonohonoho - hōʻike i ka pōʻaiapili paʻa;
  • aia ka lua i ka manaʻo nui o ka makau.

#!/bin/bash

source /shell_lib.sh

function __config__() {
  cat << EOF
    configVersion: v1
    # BINDING CONFIGURATION
EOF
}

function __main__() {
  # THE LOGIC
}

hook::run "$@"

ʻO ka hana aʻe e hoʻoholo i nā mea e pono ai mākou. I kā mākou hihia, pono mākou e hahai:

  • kumu huna no nā loli;
  • nā inoa inoa a pau i loko o ka pūʻulu, i ʻike ʻoe i nā inoa i hoʻopili ʻia iā lākou;
  • nā mea huna e hoʻopaʻa pono i ka hui pū ʻana me ka mea huna kumu.

E kau inoa i ke kumu huna

ʻO ka hoʻonohonoho paʻa ʻana no ia mea maʻalahi loa. Hōʻike mākou makemake mākou iā Secret me ka inoa mysecret ma ka papa inoa default:

Hele? Bash! E hui me ka mea hoʻohana shell (nānā a me ka hōʻike wikiō mai KubeCon EU'2020)

function __config__() {
  cat << EOF
    configVersion: v1
    kubernetes:
    - name: src_secret
      apiVersion: v1
      kind: Secret
      nameSelector:
        matchNames:
        - mysecret
      namespace:
        nameSelector:
          matchNames: ["default"]
      group: main
EOF

ʻO ka hopena, e hoʻomaka ka makau ke hoʻololi ke kumu huna (src_secret) a loaʻa i ka pōʻaiapili paʻa penei:

Hele? Bash! E hui me ka mea hoʻohana shell (nānā a me ka hōʻike wikiō mai KubeCon EU'2020)

E like me kāu e ʻike ai, aia ka inoa a me ka mea holoʻokoʻa.

Ka mālama ʻana i nā papa inoa

I kēia manawa pono ʻoe e kau inoa i nā inoa inoa. No ka hana ʻana i kēia, hōʻike mākou i ka hoʻonohonoho paʻa ʻana:

- name: namespaces
  group: main
  apiVersion: v1
  kind: Namespace
  jqFilter: |
    {
      namespace: .metadata.name,
      hasLabel: (
       .metadata.labels // {} |  
         contains({"secret": "yes"})
      )
    }
  group: main
  keepFullObjectsInMemory: false

E like me kāu e ʻike ai, ua ʻike ʻia kahi kahua hou i ka hoʻonohonoho me ka inoa jqFilter. E like me kona inoa, jqFilter kānana i nā ʻike pono ʻole āpau a hana i kahi mea JSON hou me nā kahua hoihoi iā mākou. E loaʻa i kahi makau me kahi hoʻonohonoho like i ka pōʻaiapili paʻa penei:

Hele? Bash! E hui me ka mea hoʻohana shell (nānā a me ka hōʻike wikiō mai KubeCon EU'2020)

Loaʻa iā ia kahi laha filterResults no kēlā me kēia papa inoa ma ka pūʻulu. Hoʻololi Boolean hasLabel hōʻike inā pili ʻia kahi lepili i kahi inoa inoa. Mea koho keepFullObjectsInMemory: false hōʻike ʻaʻole pono e mālama i nā mea piha i ka hoʻomanaʻo.

Ke hahai nei i nā mea huna

Hoʻopaʻa inoa mākou i nā mea huna a pau i hōʻike ʻia i kahi annotation managed-secret: "yes" (ʻo kēia kā mākou pahuhopu dst_secrets):

- name: dst_secrets
  apiVersion: v1
  kind: Secret
  labelSelector:
    matchLabels:
      managed-secret: "yes"
  jqFilter: |
    {
      "namespace":
        .metadata.namespace,
      "resourceVersion":
        .metadata.annotations.resourceVersion
    }
  group: main
  keepFullObjectsInMemory: false

Ma kēia hihia jqFilter kānana i nā ʻike a pau koe wale nō ka inoa inoa a me ka ʻāpana resourceVersion. Ua hāʻawi ʻia ka ʻāpana hope i ka annotation i ka wā e hana ai i ka mea huna: hiki iā ʻoe ke hoʻohālikelike i nā mana o nā mea huna a mālama iā lākou i kēia lā.

ʻO kahi makau i hoʻonohonoho ʻia ma kēia ala, ke hoʻokō ʻia, e loaʻa i nā pōʻaiapili paʻa ʻekolu i wehewehe ʻia ma luna. Hiki ke noʻonoʻo ʻia he ʻano kiʻi kiʻi (kope kēia) pūʻulu.

Hele? Bash! E hui me ka mea hoʻohana shell (nānā a me ka hōʻike wikiō mai KubeCon EU'2020)

Ma muli o kēia ʻike a pau, hiki ke kūkulu ʻia kahi algorithm kumu. Hoʻololi ia ma luna o nā inoa inoa āpau a:

  • inā hasLabel mau mea true no ka papa inoa o kēia manawa:
    • hoʻohālikelike i ka mea huna honua me ka mea kūloko:
      • ina ua like laua, aole ia e hana;
      • inā ʻokoʻa lākou - hoʻokō kubectl replace ai ole ia, create;
  • inā hasLabel mau mea false no ka papa inoa o kēia manawa:
    • e hōʻoia ʻaʻole ʻo Secret i ka inoa inoa i hāʻawi ʻia:
      • inā aia ka mea huna kūloko, e holoi iā ia me ka hoʻohana ʻana kubectl delete;
      • inā ʻaʻole ʻike ʻia ka mea huna kūloko, ʻaʻole ia e hana.

Hele? Bash! E hui me ka mea hoʻohana shell (nānā a me ka hōʻike wikiō mai KubeCon EU'2020)

Ka hoʻokō ʻana i ka algorithm ma Bash hiki iā ʻoe ke hoʻoiho ma kā mākou waihona me nā laʻana.

Pēlā i hiki ai iā mākou ke hana i kahi mea hoʻoponopono Kubernetes maʻalahi me ka hoʻohana ʻana i nā laina 35 o YAML config a e pili ana i ka nui o ka helu Bash! ʻO ka hana a ka shell-operator ka hoʻopili ʻana iā lākou.

Eia naʻe, ʻaʻole ʻo ka kope kope ʻana i nā mea huna wale nō ka wahi o ka noi o ka pono. Eia kekahi mau hiʻohiʻona hou e hōʻike i kona hiki.

Laʻana 1: Hoʻololi i ka ConfigMap

E nānā kākou i kahi Deployment i ʻekolu pods. Hoʻohana nā Pods i ka ConfigMap e mālama i kekahi hoʻonohonoho. I ka hoʻokuʻu ʻia ʻana o nā pods, aia ʻo ConfigMap i kahi kūlana (e kapa mākou iā v.1). No laila, hoʻohana nā pods i kēia mana kūikawā o ConfigMap.

I kēia manawa, e manaʻo kākou ua loli ka ConfigMap (v.2). Eia naʻe, e hoʻohana nā pods i ka mana mua o ConfigMap (v.1):

Hele? Bash! E hui me ka mea hoʻohana shell (nānā a me ka hōʻike wikiō mai KubeCon EU'2020)

Pehea e hiki ai iaʻu ke hoʻololi iā lākou i ka ConfigMap hou (v.2)? He mea maʻalahi ka pane: e hoʻohana i kahi template. E hoʻohui i kahi hōʻike checksum i ka ʻāpana template Nā hoʻonohonoho hoʻolālā:

Hele? Bash! E hui me ka mea hoʻohana shell (nānā a me ka hōʻike wikiō mai KubeCon EU'2020)

ʻO ka hopena, e hoʻopaʻa inoa ʻia kēia checksum i nā pods āpau, a e like ia me ka Deployment. I kēia manawa pono ʻoe e hōʻano hou i ka annotation ke hoʻololi ka ConfigMap. A hiki mai ka mea hana shell i kēia hihia. ʻO ka polokalamu wale nō kāu e hana ai kahi makau e kau inoa i ka ConfigMap a hoʻololi i ka checksum.

Inā hoʻololi ka mea hoʻohana i ka ConfigMap, e ʻike ka mea hana shell iā lākou a helu hou i ka checksum. Ma hope o ka hoʻomaka ʻana o ka hana kilokilo o Kubernetes: e pepehi ka mea hoʻokani i ka pod, e hana i kahi hou, e kali a lilo ia. Ready, a neʻe aku i ka mea aʻe. ʻO ka hopena, e hoʻonohonoho ka Deployment a hoʻololi i ka mana hou o ConfigMap.

Hele? Bash! E hui me ka mea hoʻohana shell (nānā a me ka hōʻike wikiō mai KubeCon EU'2020)

Laʻana 2: Ka hana ʻana me nā wehewehe kumu waiwai maʻamau

E like me kou ʻike, ʻae ʻo Kubernetes iā ʻoe e hana i nā ʻano mea maʻamau. No ka laʻana, hiki iā ʻoe ke hana i ke ʻano MysqlDatabase. E ʻōlelo kākou he ʻelua mau ʻāpana metadata kēia ʻano: name и namespace.

apiVersion: example.com/v1alpha1
kind: MysqlDatabase
metadata:
  name: foo
  namespace: bar

Loaʻa iā mākou kahi pūʻulu Kubernetes me nā inoa inoa like ʻole e hiki ai iā mākou ke hana i nā waihona MySQL. I kēia hihia, hiki ke hoʻohana ʻia ka shell-operator e hahai i nā kumuwaiwai MysqlDatabase, hoʻohui iā lākou i ka server MySQL a hoʻonohonoho i nā mokuʻāina makemake a nānā ʻia o ka hui.

Hele? Bash! E hui me ka mea hoʻohana shell (nānā a me ka hōʻike wikiō mai KubeCon EU'2020)

Laʻana 3: Mākaʻikaʻi ʻana i ka Pūnaewele

E like me kāu e ʻike ai, ʻo ka hoʻohana ʻana i ka ping ke ala maʻalahi loa e nānā i kahi pūnaewele. Ma kēia hiʻohiʻona e hōʻike mākou pehea e hoʻokō ai i ia nānā me ka hoʻohana ʻana i ka shell-operator.

ʻO ka mea mua, pono ʻoe e kau inoa i nā nodes. Pono ka mea hoʻohana shell i ka inoa a me ka helu IP o kēlā me kēia node. Me kā lākou kōkua, e ping ʻo ia i kēia mau nodes.

configVersion: v1
kubernetes:
- name: nodes
  apiVersion: v1
  kind: Node
  jqFilter: |
    {
      name: .metadata.name,
      ip: (
       .status.addresses[] |  
        select(.type == "InternalIP") |
        .address
      )
    }
  group: main
  keepFullObjectsInMemory: false
  executeHookOnEvent: []
schedule:
- name: every_minute
  group: main
  crontab: "* * * * *"

ʻO ka pākuhi executeHookOnEvent: [] pale i ka makau i ka holo ʻana i ka pane ʻana i kekahi hanana (ʻo ia hoʻi, i ka pane ʻana i ka hoʻololi ʻana, hoʻohui, holoi i nā nodes). Eia naʻe, ʻo ia e holo (a hōʻano hou i ka papa inoa o nā nodes) Hoʻonohonoho ʻia - i kēlā me kēia minuke, e like me ka mea i kuhikuhi ʻia e ke kahua schedule.

Ke kū nei ka nīnau, pehea lā mākou e ʻike ai e pili ana i nā pilikia e like me ka poho packet? E nānā kākou i ke code:

function __main__() {
  for i in $(seq 0 "$(context::jq -r '(.snapshots.nodes | length) - 1')"); do
    node_name="$(context::jq -r '.snapshots.nodes['"$i"'].filterResult.name')"
    node_ip="$(context::jq -r '.snapshots.nodes['"$i"'].filterResult.ip')"
    packets_lost=0
    if ! ping -c 1 "$node_ip" -t 1 ; then
      packets_lost=1
    fi
    cat >> "$METRICS_PATH" <<END
      {
        "name": "node_packets_lost",
        "add": $packets_lost,
        "labels": {
          "node": "$node_name"
        }
      }
END
  done
}

Hoʻololi mākou i ka papa inoa o nā nodes, kiʻi i ko lākou mau inoa a me nā helu IP, ping iā lākou a hoʻouna i nā hopena i Prometheus. Hiki i ka Shell-operator ke hoʻokuʻu aku i nā metric i Prometheus, e mālama iā lākou i kahi faila i loaʻa e like me ke ala i kuhikuhi ʻia i loko o ka mea hoʻololi kaiapuni $METRICS_PATH.

Eia nō hiki iā ʻoe ke hana i mea hoʻohana no ka nānā ʻana i ka pūnaewele maʻalahi i kahi hui.

Mekani laina

ʻAʻole paʻa kēia ʻatikala me ka wehewehe ʻole ʻana i kekahi mīkini koʻikoʻi i kūkulu ʻia i loko o ka shell-operator. E noʻonoʻo e hoʻokō ʻo ia i kekahi ʻano makau i ka pane ʻana i kahi hanana i loko o ka hui.

  • He aha ka hopena inā, i ka manawa like, i kekahi mea i loko o ka hui? ʻO kekahi hanana?
  • E holo anei ka mea hoʻohana shell i kekahi laʻana o ka makau?
  • He aha inā, e ʻōlelo, ʻelima mau hanana i ka hui i ka manawa hoʻokahi?
  • E hana like anei ka mea hana shell iā lākou?
  • Pehea e pili ana i nā kumuwaiwai i pau e like me ka hoʻomanaʻo a me ka CPU?

ʻO ka mea pōmaikaʻi, loaʻa i ka shell-operator kahi hana queuing i kūkulu ʻia. Hoʻopili ʻia nā hanana āpau a hana ʻia ma ke kaʻina.

E hōʻike kākou i kēia me nā laʻana. E ʻōlelo kākou he ʻelua makau. Hele ka hanana mua i ka makau mua. Ke pau kāna hana ʻana, neʻe ka pila i mua. Hoʻihoʻi ʻia nā hanana ʻekolu aʻe i ka makau ʻelua - ua wehe ʻia lākou mai ka pila a komo i loko o kahi "puʻupuʻu". ʻo ia Loaʻa ka hook i nā hanana hanana - a i ʻole, ʻoi aku ka pololei, kahi ʻano o nā pōʻaiapili paʻa.

Eia kekahi hiki ke hoʻohui ʻia nā hanana i hoʻokahi nui. ʻO ka parameter ke kuleana no kēia group i ka hoʻonohonoho paʻa.

Hele? Bash! E hui me ka mea hoʻohana shell (nānā a me ka hōʻike wikiō mai KubeCon EU'2020)

Hiki iā ʻoe ke hana i kekahi helu o nā queues/hooks a me kā lākou hui like ʻole. No ka laʻana, hiki ke hana i hoʻokahi queue me ʻelua makau, a i ʻole.

Hele? Bash! E hui me ka mea hoʻohana shell (nānā a me ka hōʻike wikiō mai KubeCon EU'2020)

ʻO nā mea a pau āu e hana ai, ʻo ka hoʻonohonoho ʻana i ke kahua e like me ia queue i ka hoʻonohonoho paʻa. Inā ʻaʻole i kuhikuhi ʻia kahi inoa pila, holo ka makau ma ka pila paʻamau (default). ʻO kēia ʻano laina laina hiki iā ʻoe ke hoʻoponopono piha i nā pilikia hoʻokele waiwai āpau i ka wā e hana ai me nā makau.

hopena

Ua wehewehe mākou i ke ʻano o ka shell-operator, hōʻike i ke ʻano e hiki ai ke hoʻohana ʻia e hana wikiwiki a hoʻoikaika ʻole i nā mea hoʻohana Kubernetes, a hāʻawi i kekahi mau hiʻohiʻona o kona hoʻohana ʻana.

Loaʻa ka ʻike kikoʻī e pili ana i ka shell-operator, a me kahi aʻoaʻo wikiwiki e pili ana i ka hoʻohana ʻana iā ia. nā waihona ma GitHub. Mai kānalua e hoʻokaʻaʻike mai iā mākou me nā nīnau: hiki iā ʻoe ke kūkākūkā iā lākou ma kahi kūikawā Hui Telegram (ma ka Lūkini) a i ʻole kēia ʻaha kūkā (ma ka ʻōlelo Pelekania).

A inā makemake ʻoe, hauʻoli mau mākou e ʻike i nā pilikia hou/PR/hōkū ma GitHub, kahi, ma ke ala, hiki iā ʻoe ke loaʻa i nā mea ʻē aʻe. nā papahana hoihoi. I waena o lākou he mea pono ke hoʻohālikelike mea hoʻohana addon, ʻo ia ke kaikunāne nui o ka shell-operator. Hoʻohana kēia mea hoʻohana i nā palapala Helm no ka hoʻokomo ʻana i nā mea hoʻohui, hiki ke hāʻawi i nā mea hou a nānā i nā ʻāpana ʻokoʻa/nā waiwai, hoʻomalu i ke kaʻina hana o nā pakuhi, a hiki ke hoʻololi iā lākou i ka pane ʻana i nā hanana i ka hui.

Hele? Bash! E hui me ka mea hoʻohana shell (nānā a me ka hōʻike wikiō mai KubeCon EU'2020)

Nā wikiō a me nā paheʻe

Video mai ka hana (~ 23 minuke):


Hōʻike i ka hōʻike:

PS

E heluhelu pū ma kā mākou blog:

Source: www.habr.com

Pākuʻi i ka manaʻo hoʻopuka