á áá
áááľáŁ ááá á¨á ááŽá á¨áŠá áááľáľ áŽááá¨ááľ - KubeCon + CloudNativeCon Europe 2020 - áááŁá áá áᢠááá áĽáá áĽáá˛á
áŤáá á¨á
áá˝ ááἠâááľ? áŁá˝! ááááľ ááá ááŽáááłá˝á á¨á°ááááá á¨áźá áŚááŹá°áá áŤáá
áá á˝áá á áááአá°ááľáŚ ááŠá áááľáľ áŚááŹá°áŽá˝á á¨ááá á áá°áľá ááááá á ááŤá¨áĽá áŤáááŁá áĽá áźá-áŚááŹá°áá á áá áá á áľáá˝ áĽá¨áľ áĽáá´áľ áĽáŤáľá ááľá¨á áĽáá°áá˝á áŤáłáŤá á˘
á ááľá°ááá
áá
á Flant áááá ááá áŤáááá¨áĽ áĽáááťá˝áłáá áĽá á áŤáľ á°á áĽááááááᢠáᏠáľá áá á áľá°áłá˝ á˝áá°-ááłáĽ áĽáááááŤáá. áááááľ: á°áá-á¤á°á áźá áľááŞááľ!
áááᣠáá áá á áá¨á°áľá áľ á ááľ áĽááááᥠKubernetesá˘
Kubernetes á¤áá á áĽá á°ááŁáŁáŞáá˝
á Kubernetes ááľáĽ áŤáá á¤áá á ááĽáŤááłááą á¨ááá á áááľ áá፠áŤáá áĽáá° á¨ááá á áááá á áááľ ááá¨á áá˝ááᢠá áá á áááá áá áŤá áááŽá˝ (ááĽáśá˝) á YAML áááá˝ ááá¨ááᢠá á°á¨ááŞá á áááአáśáľáľ áááŽá˝á áĽáá˛áŤá°áá á¨ááŤáľá˝áá áá°á¨áłá á¤áá á á ááá˘
- á°áá á ááĽáľ á ááááą áĽá á áľá;
- ááἠááĽáľ (á áá áááł á áááአâáľááááâ áááá˝á áĽáť áŤá¨ááťá - ááá á áľá á°áľ á¨á°á°áŠ ááá ááá áááŤáá˝ á¨áłá°áĄ ááŁáá)á˘
- áľáŤá áááĽáą (á áá á ááŁá á°á ááá áá˛áŤáá á¨á ááá / á¨á°áťáťááá áľáŞáľ ááá áá).
áľááá áŠá áááľáľ áĽáá° ááá á áááá (á YAML ááááŤáá˝) á áśáľáľ áá°á¨áłá áá´áá˝ (á á ᣠá áĽáááą ááá˝á á á ᣠáá áá áá áĽáá°áááá)á˘
á˝áአá áááአáá¨áá áĽáť áá¨áá¸áľ áá˝áá. áĽáá˛á°áŤ áááľá¨á, áŤáľáááááłá áááŁá áŞáŤ - á Kubernetes ááá ááľáĽ ááá°áá á áŁá á áľááá áĽá áá á¨áłá á
áá°-ááłáĽá˘
áááľ áá áá á°ááŁáŁáŞáá˝ á á. á¨ááááŞáŤá á¨áŠá áááľáľ áá¨áá ááľáś á áá á áááᎠáá°á¨áľ áŤáľáŹáłá áĽá áá° K8s ááááłáᢠááá°áá á¨áŠá áááľáľ áá¨áá áááľáłá, áá áĽáá° ááááŞáŤá ááááľ áłááá, á ááłááľ á¨áá ááĽáśá˝á áááł ááááŁá.
á áŠá áááľáľ ááľáĽ áá°ááŤáľá á¨ááá á áá°áąá á áááá áĽáááá¨áľáĄ-
- á¨áá°ááŤáľ á°ááŁáŁáŞ (á ááľáĽ á°áŤáľáˇá
kube-controller-manager
) áľá áá°ááŤáľ áá¨á ááá áá áĽá ReplicaSet áááĽáŤáᢠ- ReplicaSet á áá áá¨á áá á°ááľáá°á áááľ á ááá˝á (áááľ ááśá˝) áááĽáŤáᣠááá áá áĽááá ááśá˝ áĽáľáŤáá áá Ꭰá áá°áŤááá˘
- áááááĽá á ááŞá á¨ááľ áááááĽá áŤááŁá áĽá á¨ááľááá ááááľ áá¨áá áá° YAMLs áŤáááá˘
- áŠá¤ááśá˝ á ááŤá ááá áá áááŚá˝á áŤá°ááá (áśá¨á áá á)á˘
á¨á፠áá á á ááá á á°á á°á¨á°á á á°ááá˘áŚá˝ á á°á á°á¨á°á áá°áááá-áŠá¤ááľ ááŤáŁáášá áááľáťá ᣠá¨ááľ áááłá áŤá°áá áĽá ááá°á ááá¨ááᢠReplicaSet áááŁá áŞáŤá áááłáá ááá áá áĽá á¨á°áŁááá áľáĽáľáĽ áááł áŤáťá˝ááᢠá Deployment Controller á°ááłáłá ááá áá¨á°áłá áĽá á°á ááá á áá¨á¨áť á¨ááááá (á¨á ááá) áááł áŤáááá˘
áźá-áŚááŹá°á
áŠá áááľáľ á á°ááŤáŠ á°ááŁáŁáŞáá˝ á¨á፠áĽáŤ áá á¨á°áá°á¨á° áá (á¨áŠá áááľáľ áŚááŹá°áŽá˝á á°ááŁáŁáŞáá˝ áá¸á)ᢠáĽáŤáá á¨áááłá, á áľáá˝ áĽá¨áľ á¨áŤáľáá áŚááŹá°á áĽáá´áľ ááá á áĽáá°ááťá? áĽá áĽáá
áŤáłá ááá áá° ááłá°á áááŁá
ááá ááłá: ááľá˘áŽá˝á áá áłáľ
á ááľ ááá ááłá áĽáááá¨áľá˘
á¨áŠá áááľáľ áááľá°á á áá áĽáá áᢠá¨áľá áŚáł á ááᢠdefault
á¨á ááłááľ ááľá˘á áá mysecret
. á á°á¨ááŞá, á áááľá°á ááľáĽ ááá˝ á¨áľá áŚáłáá˝ á á. á ááłááśáš á¨ááą áá á¨á°áŤáŤá áአáá፠á áá¸áᢠááŁá˝á ááľáĽáá á áá፠áá° á¨áľá áŚáłáá˝ áá
áłáľ ááá˘
áľáŤá á¨á°ááłá°á áá á á˛áľ á¨áľá áŚáłáá˝ á áááľá°á ááľáĽ ááłáŠ áá˝áá, áĽá á ááłááśášá áá áá፠áááŤá¸á áá˝áá. á áá á áŠá ᣠáááŤá á˛á°á¨á ᣠááľá˘á áĽáá˛á áá°á¨á á áá áľá˘ á¨áá á á°á¨ááŞ, ááľá˘áŠ áĽáŤáą áááἠáá˝áá-á áá áááł, á á˛áą ááľáĽá á ááá áľáŤááá˝ áá° ááá á¨áľá áŚáłáá˝ áá áłáľ á áá áľ. ááľá˘áŠ á áľáááľ á ááááá á¨áľá áŚáł á¨á°á°á¨á á¨áĽá áŚááŹá°á áá˛áŤáá áá°áá á¨á áľ ááááľ á áá áľá˘
á áá áľáŤá á°ááá áˇá, á¨áźá-áŚááŹá°áá á áá áá áá°áá á ááááá ááá áá. áá á ááááŞáŤ áľá áźá-áŚááŹá°á áĽáŤáą áĽááľ áááľá áááá á áá áá.
áźá-áŚááŹá°á áĽáá´áľ áĽáá°áá°áŤ
á áŠá áááľáľ ááľáĽ áĽááłááľ ááá˝ á¨áľáŤ áŤááá˝áŁ áźá-áŚááŹá°á á áŤáą ááľ ááľáĽ áá°áŤáᢠá áááŤá ááľáĽ á áá
ááľ ááľáĽ /hooks
áá°áá አá¨áá˝á áááá˝ á°á¨áá˝á°ááᢠáĽááá
á BashᣠPythonᣠRubyᣠááá° áŤá áľááŞááśá˝ ááá áá˝ááᢠáĽáá°áá
áŤá áá°áá አá¨áá˝á áááá˝á ááá ááá˝ áĽáá áĽáá áŤáááá áááá˝).
áźá-áŚááŹá°á ááŠá áááľáľ ááá
áśá˝ á°áááጠáĽááá
á ááá ááá˝ áááŤáľáááá ááľá°áśá˝ ááá˝ áá°áŁáá˘
áźá-áŚááŹá°áŠ á¨áľááá ááá á áĽá ááź áĽáá°ááŽáĽ áĽáá´áľ áŤááá? ááĽáĄ áĽáŤááłááą ááá á áááľ á°á¨ááá˝ á ááľ. á áááłá áľ áá áźá-áŚááŹá°á áááá ááá ááá˝ á áááá áŤáŤááłá --config
áá
á¨áááá á°á¨á ááᢠáĽá á¨áĽáą á áá, ááá ááá˝ á á°ááá°á ááááľ - áá°áŤáŤááľ ááľá°áśá˝ ááá˝ áá°áŁá. á áááá ááłá áá ááá áá á áľááłá
á ááľ ááá áá (á áľááłá
á ááľ) - ááἠá JSON á
áá¸áľ, á¨áá
á áłá˝ á á áá áááá ááľáĽ áĽáááááŤáá.
á áŁá˝ ááľáĽ áŚááŹá°á ááľá¨á
á áá ááľáá ፠ááá ááᢠáá
áá áááľá¨á áááľ á°ááŁáŤáľá ááťá á ááĽá (á áááŤá˝á áá, áĽááááŤáá á¤á° ááťáááľ
- á¨ááááŞáŤá ááááá á°á¨á áŤáľáááá - á áľááłá á ááľ áŤáłáŤá;
- ááá°áá á¨ááá ááá áá á áááᎠááá.
#!/bin/bash
source /shell_lib.sh
function __config__() {
cat << EOF
configVersion: v1
# BINDING CONFIGURATION
EOF
}
function __main__() {
# THE LOGIC
}
hook::run "$@"
á¨áááĽáá áĽááá á¨áááááá¸áá áĽááá˝ ááá°á áá. á áĽá áá᳠ᣠáĽá áá¨áłá°á á ááĽá-
- ááááŚá˝ ááá ááľáĽá;
- á áááľá°á ááľáĽ áŤá ááá á¨áľá áŚáłáá˝áŁ á¨áľááš áááŤáá˝ á¨ááą áá áĽáá°á°áŤáŤá áĽáá˛áŤáááŁ
- á¨ááá ááľáĽáŽá˝ ááá á¨ááአááľáĽá áá ááľáááłá¸áá ááá¨áááĽá˘
áááľáĽá ááá áááááĄ
ááĽáą á áľááłá
áá
á á áŁá ááá ááᢠá áľá ááľá˘á ááááľ áĽááłáá áĽááááááᢠmysecret
á áľá áŚáł default
:
function __config__() {
cat << EOF
configVersion: v1
kubernetes:
- name: src_secret
apiVersion: v1
kind: Secret
nameSelector:
matchNames:
- mysecret
namespace:
nameSelector:
matchNames: ["default"]
group: main
EOF
á áá¤áąáᣠááá áá á¨ááá°áá°á á¨ááá ááľáĽá á˛áá¨á áá (src_secret
) áĽá á¨áá¨á°ááá á áľááłá
á ááľ á°áá ááĄ
áĽáá°ááłá¨á, áľáá áĽá áááá áĽá ááá.
á¨áľá áŚáłáá˝á áá¨áłá°á
á áá ááľá áŚáłáá˝ ááááἠá ááĽááľá˘ áá áá áááľá¨á, á¨áá¨á°ááá á áľááłá áá á¨áľ áĽááááťáá.
- name: namespaces
group: main
apiVersion: v1
kind: Namespace
jqFilter: |
{
namespace: .metadata.name,
hasLabel: (
.metadata.labels // {} |
contains({"secret": "yes"})
)
}
group: main
keepFullObjectsInMemory: false
áĽáá°áááá¨áąáľ, á á˛áľ ááľá á¨áľá áá á á
áá
áą ááľáĽ áłááˇá jq ááŁáŞáŤ áľá áĽáá°ááŤáááá°á áĽ.á¤.á . jqFilter
áááá á ááľááá áá¨ááá˝á áŤáŁáŤá áĽá á á˛áľ á¨JSON áááá á¨áĽá ááááľ á áá ááľáŽá˝ áááĽáŤáᢠá°ááłáłá áá
á áŤáá ááá á á¨áá¨á°ááá á áľááłá
á ááľ ááá ááá˘
áľááľá ááá filterResults
á áááľá°á ááľáĽ ááá áĽáŤááłááą á¨áľá áŚáłá˘ áĄááŤá á°áááá hasLabel
áá፠á¨á°á°á á á¨áľá áŚáł áá ááŤáŤáá áŤáłáŤáᢠááŤá keepFullObjectsInMemory: false
á¨á°áá áááá˝á á ááľáłááľ ááľáĽ ááľááἠá áŤáľáááá.
á¨ááá ááľáĽáŽá˝á áá¨áłá°á
ááĽáŤáŞáŤ áŤáá¸áá ááľá˘áŽá˝ á áá áĽáááááŁááᢠmanaged-secret: "yes"
(áĽááá
á˘ááá˝á áá¸áᢠ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
á áá
á¨ááľ jqFilter
á¨áľá áŚáł áĽá áááŞáŤ á áľá°áá áááá áá¨á áŤáŁáŤáᢠresourceVersion
. ááľá˘áŠá á áááĽáŠá áľ áá á¨áá¨á¨áťá áá¤áľ áá° ááĽáŤáŞáŤá á°áááá-á¨ááľá˘á áľáŞáśá˝á áááááá áĽá áá
áłá áááľá¨á áŤáľá˝áááłá.
á áá ááááľ á¨á°ááᨠááá á á˛á°áá á á¨áá á¨á°ááášáľá áśáľáľ á áľááłá á ááśá˝ ááá ááᢠáĽáá° á á˝á á°-ááś ááááľ ááá°áą áá˝áá (á á˝á á°-ááś) áááľá°áá˘
á áĽááá
áá áá¨ááá˝ áá á ááááŽá áá°á¨áłá áľáá° ááá áááá
áá˝áá. á ááá á¨áľá áŚáłáá˝ áá áá°áááá áĽááĄ-
- á¨áá
hasLabel
ááłáŽá˝true
áá áá á¨áľá áŚáłáĄ-- á¨á ááá ááľáĽá á¨á áŤáŁá˘á áá áŤááłáľáŤááĄ-
- á°ááłáłá á¨áá ááá á áŤá°ááá;
- á¨áááŤáŠ á¨áá - áŤáľáá˝áá
kubectl replace
ááácreate
;
- á¨á ááá ááľáĽá á¨á áŤáŁá˘á áá áŤááłáľáŤááĄ-
- á¨áá
hasLabel
ááłáŽá˝false
áá áá á¨áľá áŚáłáĄ-- ááľáĽáŠ á á°á°á á á¨áľá áŚáł ááľáĽ á ááááŠá áŤá¨áááŁááĄ-
- á¨á á¨áŁá˘á ááľáĽá áŤá, á°á á
áá áá°áááľ
kubectl delete
; - á¨á á¨áŁá˘á ááľáĽá áŤáá°áá ááá á áŤá°ááá.
- á¨á á¨áŁá˘á ááľáĽá áŤá, á°á á
áá áá°áááľ
- ááľáĽáŠ á á°á°á á á¨áľá áŚáł ááľáĽ á ááááŠá áŤá¨áááŁááĄ-
á áá ááááľ áá 35 ᨠYAML áá á¨áľ ááľááŽá˝á áĽá á°ááłáłá áá á áŤáá ᨠBash áŽáľ á áá áá ááá á¨áŠá áááľáľ áááŁá áŞáŤá ááá á á¨áťááá! á¨áźá-áŚááŹá°á áĽáŤ áĽááąá á ááľ áá áááááľ áá.
ááá ááľá˘áŽá˝á áá áłáľ á¨áááááŤá áĽá¸á áŚáł á áá°ááᢠá˝ááłá áá áĽáá°áá áááłá¨áľ áĽááľ á°á¨á᪠ááłááá˝ áĽááá˘
ááłá 1ᥠConfigMap áá áááŚá˝á ááľá¨á
áśáľáľ ááśá˝á áŤáá áá°ááŤáľá áĽáááá¨áľá˘ Pods á ááłááľ áá á¨áľá ááá¨áá¸áľ ConfigMapá áá áááᢠááľáš á˛áááŠáŁ ConfigMap á á°áá°á áááł áá áá á (á.1 áĽáá áá)ᢠá áá áá á¨áľ ááá ááľáá˝ áá áá áአᨠConfigMap áľáŞáľ áá áááá˘
á áá ConfigMap áĽáá°á°ááá áĽááľáĽ (á.2)ᢠááá ááᣠááľáš á¨áá°ááá á¨ConfigMap áľáŞáľ (á.1) áá áááá˘
áá° á á˛áą ConfigMap (á.2) áĽáá˛ááአáĽáá´áľ áá°ááá¸á áĽá˝ááá? áááą ááá ááᥠá áĽááľ áá ááᢠáá° ááá á¨áźá áľáá ááĽáŤáŞáŤ áĽáá¨áá template
á¨áá°ááŤáľ áá
áŽá˝áĄ-
á áá¤áąá, áá
áźá á ááá ááľáśá˝ ááľáĽ áááááŁá, áĽá áĽáá° áá°ááŤáľ á°ááłáłá áááá. á áá ConfigMap á˛áá¨á ááĽáŤáŞáŤáá áááá áĽáť áŤáľáááááłáᢠáĽá áźá-áŚááŹá°á á áá
ááłá áá á áá áá. á¨ááŤáľáááá
ááŽááŤá áĽáť ááᢠá ConfigMap á¨ááááἠáĽá áźááąá á¨ááŤááá ááá á.
á°á ááá á ConfigMap áá áááŚá˝á áŤá°á¨áᣠáźá-áŚááŹá°á áĽááąá áŤáľá°ááá¸áá áĽá áźá áľááá áĽáá°áá áŤá°ááᢠá¨á፠á áá á¨áŠá áááľáľ á áľááľ áá° á¨ááł áááŁá-á¨áŚááŹáľáľáŤ áŁáááŤá ááľáá áááľáá ᣠá á˛áľ áááĽáŤá ᣠáĽáľáŞáá áľá¨áľ áá áĽáᢠReady
, áĽá áá° ááŁáŠ áááĽáá. á áá¤áąáᣠáá°ááŤáľ áááłá°áá áĽá áá° á á˛áą ᨠConfigMap áľáŞáľ ááá¨áŤáá˘
ááłá 2ᥠá áĽá á¨ááá ááşáá˝ ááľáŤáľ
áĽáá°ááŤáááľ áŠá áááľáľ áĽá á áááľ áááŽá˝á áĽáá˛ááĽáŠ ááá
áľáááłá. áááłá, á áááľ ááá á áá˝áá MysqlDatabase
. áá
á áááľ áááľ ááłáłáł áááŞáŤáá˝ á ááľ áĽáá ááĄ- name
и namespace.
apiVersion: example.com/v1alpha1
kind: MysqlDatabase
metadata:
name: foo
namespace: bar
MySQL áłáłá¤á ááá á á¨ááá˝áá áľ á¨á°ááŤáŠ á¨áľá áŚáłáá˝ áŤáá á¨áŠá áááľáľ áááľá°á á ááᢠá áá
áááł áźá-áŚááŹá°á ááĽáśá˝á ááá¨áłá°á áĽá
á áá ááá áá˝áá MysqlDatabase
, áĽááąá ᨠMySQL á áááá áá á áááááľ áĽá á¨á°ááááá áĽá á¨á°áľá°áá á¨áááľá°á áááśá˝á á áááłá°á.
ááłá 3ᥠá¨áááľá°á ááľááá ááľáľá
áĽáá°ááłááá ááá áá áá ááľáááá ááá¨áłá°á ááá ááááľ ááᢠá áá ááłá ááľáĽ áźá-áŚááŹá°áá á áá áá áĽáá˛á ááááąá ááľáľá áĽáá´áľ áĽáá°áá°áá አáĽááłáŤáá.
á ááááŞáŤ á°á¨á áááśá˝ ááááἠáŤáľáááááłá. á¨áźá áŚááŹá°á á¨áĽáŤááłááą ááľááá ááááľ áľá áĽá á áá á áľáŤáť áŤáľáááááᢠá áĽááą áĽááłáł, áĽááá á á áááá˝ ááá áŤá°ááá.
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: "* * * * *"
áááŞáŤ executeHookOnEvent: []
ááá áá áááááá ááľá°áľ ááá˝ áĽááłáá°áĽ áá¨áá¨áá (áá
á ááááἠᣠááá¨áá ᣠá áááá˝á ááá°á¨á)ᢠááá áĽáą ááŽáŁá (áĽá á¨á áááá˝á áááá á ááá) áááááĽá á°ááááłá - á á¨á°ááá, á ááłá áĽáá°á°ááá¸á schedule
.
á áá áĽáŤáá á¨áááłá, áĽáá° ááŹáľ ááĽááľ áŤá á˝ááŽá˝á á áľááá áĽáá´áľ áĽááááá? ááąáľ áĽááłá áĽáŠ?
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
}
á á áááá˝ áááá ááľáĽ á°áááá áĽáááááá, áľáá¸áá áĽá á áá á áľáŤáťá¸áá á áá, ááá áĽá áá¤áśášá áá° Prometheus áĽáááŤáá. Shell-operator áááŞáŤáá˝á áá° Prometheus ááá áá˝ááá˘, á á á¨áŁá˘á á°áááá ááľáĽ á á°á áá°á ááááľ áá°á¨áľ áá°ááá ááá áŤáľáááŁá¸áá $METRICS_PATH
.
á¨áá¨á áá´
á áźá-áŚááŹá°á ááľáĽ á¨á°ááᣠáá á áľááá áá´á áłáááá˝ áá á˝áá áŤáá°áá áááá. á áááľá°á ááľáĽ ááá ááľá°áľ ááá˝ á¨áá ááááľ ááá áá áĽáá°ááá˝á á áľáĽá˘
- á á°ááłáłá áá á áááľá°á ááľáĽ á¨áá ááá á˘á¨á°áľ áá áá¨á°áłá? á ááľ á°á¨á᪠ááľá°áľ?
- áźá-áŚááŹá°á ááá ááá áá ááłá áŤáľáŹáłá?
- áĽáá áᣠá ááľáľ ááľá°áśá˝ á á ááľ áá á áááľá°á ááľáĽ á˘á¨á°áąáľ?
- áźá-áŚááŹá°áŠ á áľáአáŤáľáŹáłá¸áá?
- áĽáá° áá á°á¨ áľááľáł áĽá á˛áአáŤá á¨á°á ááš ááĽáśá˝áľ?
áĽáá° áĽáľá ááᣠáźá-áŚááŹá°á á áĽáŽ á¨á°á°áŤ á¨áá¨á áá´ á ááᢠááá ááľá°áśá˝ á á á°á á°á¨á°á á°á°ááá áá¨ááááá˘
áá áá á ááłááá˝ áĽááłáᢠáááľ ááá ááá˝ á áá áĽáá áᢠá¨ááááŞáŤá ááľá°áľ áá° ááááŞáŤá ááá á áááłá. áá°áą á¨á°á ááá á áá áá¨áá áá°ááľ áááłáᢠá¨áááĽááľ áśáľáľ ááľá°áśá˝ áá° ááá°áá ááá á ááááŤá - áĽááą á¨áá¨áá áá á°ááá°á á "áĽá á" ááľáĽ áááŁá. áŤáá ááá á á¨ááľá°áśá˝á áľááľá ááá áá - áááᣠáá áἠá áľáááᣠá ááŤáł á áľááłá á ááśá˝á˘
áĽáá˛áá áĽááá
ááľá°áśá˝ áá° á ááľ áľáá
ááŁáአáá˝áá. áááŞáŤá ááá
á°á áŤá áá group
á ááŤáŤá áá
á ááľáĽ.
áááááá á¨áá¨á/ááá á áĽá á¨á°ááŤáŠ áá
á°áśáťá¸áá ááá á áľá˝ááá
ᢠáááłá, á ááľ áá¨á á áááľ ááá ááá˝ áá ፠áá˝áá, ááá á á°ááŤáá.
á¨ááŤáľáááá
ááá á áá áá°á¨áľ ááľáŠá áááá ááᢠqueue
á ááŤáŤá áá
á ááľáĽ. á¨áá¨á áľá áŤáá°ááḠááá áá á ááŁáŞ áá¨á áá áá°áŤá (default
). áá
á¨áá¨á áá´ á¨ááá ááá˝ áá á˛á°áŠ áááá á¨ááĽá¨áľ á áŤáŤá á˝ááŽá˝á áá á áá áĽáá˛ááą áŤáľá˝áááłá.
áá°áá°ááŤ
áźá-áŚááŹá°á áá áĽáá°áá ááá˝áᣠá¨áŠá áááľáľ áŚááŹá°áŽá˝á á ááĽááľ áĽá áŤá ááá áĽá¨áľ áĽáá´áľ ááá á áĽáá°ááťá á áłáá°ááᣠáĽá á á áááá á ááŤáł ááłááá˝á á°áĽá°ááá˘
áľá áźá-áŚááŹá°á áááá áá¨á, áĽáá˛áá áľá á á ááá ááŁá á áἠáľáá á á á°ááá
ááľáĽ áááá.
áĽá á¨áá°áąáľáŁ á áááŤá˝á áá ááá˝á á¨ááŤááá áľ á GitHub áá á áłá˛áľ ááłáŽá˝/PR/áŽá¨áŚá˝á á áá¨áłá˝á áááá á°áľá°áá˝ ááá˘
áŞá˛áŽáá˝ áĽá áľáááśá˝
áŞá˛áŽ á¨á áááá (~ 23 á°áááá˝):
á¨ááá áľ á ááŤá¨áĽá áŞáááľ áŤáľáááĄ
PS
á áĽááá˝á áá áŤááĽáĄáĄ-
- ÂŤ
á¨áŠá áááľáľ áŚááŹá°áŽá˝á á¨áźá-áŚááŹá°á áá á ááá ááá áᥠá¨ááŽáááą áá°áľ á áááą ááľáĽ "; - ÂŤ
áźá-áŚááŹá°áá ááľá°ááá ᥠááŠá áááľáľ áŚááŹá°áŽá˝á ááá á ááá áá "; - ÂŤ
á¨áŠá áááľáľ áááľá°á ááááááľ ááá áĽá ááš áá? á áľáśá áŚááŹá°áá ááľáłáá "; - ÂŤ
Kubernetes ááľáááľ áĽá áááŤ" (á¨áááá áĽá á¨áŞá˛áŽ áááŁ) .
ááá: hab.com