αž€αžΆαžšαžŽαŸ‚αž“αžΆαŸ†αžαŸ’αž›αžΈαŸ—αžŠαžΎαž˜αŸ’αž”αžΈαž”αŸ’αžŠαžΌαžšαžαžΆαž˜αž”αŸ†αžŽαž„

αž…αŸ†αžŽαžΆαŸ†αŸ” αž”αž€αž”αŸ’αžšαŸ‚αŸ– αž’αžαŸ’αžαž”αž‘αž“αŸαŸ‡αžαŸ’αžšαžΌαžœαž”αžΆαž“αžŸαžšαžŸαŸαžšαžŠαŸ„αž™ Scott Lowe αžŠαŸ‚αž›αž‡αžΆαžœαž·αžŸαŸ’αžœαž€αžšαžŠαŸ‚αž›αž˜αžΆαž“αž”αž‘αž–αž·αžŸαŸ„αž’αž“αŸαž™αŸ‰αžΆαž„αž‘αžΌαž›αŸ†αž‘αžΌαž›αžΆαž™αž€αŸ’αž“αž»αž„αž•αŸ’αž“αŸ‚αž€ IT αžŠαŸ‚αž›αž‡αžΆαž’αŸ’αž“αž€αž“αž·αž–αž“αŸ’αž’/αžŸαž αž’αŸ’αž“αž€αž“αž·αž–αž“αŸ’αž’αžŸαŸ€αžœαž—αŸ…αž”αŸ„αŸ‡αž–αž»αž˜αŸ’αž–αž…αŸ†αž“αž½αž“αž”αŸ’αžšαžΆαŸ†αž–αžΈαžš (αž—αžΆαž‚αž…αŸ’αžšαžΎαž“αž“αŸ…αž›αžΎ VMware vSphere)αŸ” αž₯αž‘αžΌαžœαž“αŸαŸ‡αž‚αžΆαžαŸ‹αž’αŸ’αžœαžΎαž€αžΆαžšαž±αŸ’αž™αž€αŸ’αžšαž»αž˜αž αŸŠαž»αž“αž”αž»αžαŸ’αžšαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’ VMware Heptio αžšαž”αžŸαŸ‹αžαŸ’αž›αž½αž“ (αž‘αž‘αž½αž›αž”αžΆαž“αž“αŸ…αž†αŸ’αž“αžΆαŸ† 2016) αžŠαŸ‚αž›αž˜αžΆαž“αž―αž€αž‘αŸαžŸαžαžΆαž„αž€αž»αŸ†αž–αŸ’αž™αžΌαž‘αŸαžšαž›αžΎαž–αž–αž€ αž“αž·αž„ Kubernetes αŸ” αž’αžαŸ’αžαž”αž‘αžαŸ’αž›αž½αž“αžœαžΆαžŠαžΎαžšαžαž½αž‡αžΆαž€αžΆαžšαžŽαŸ‚αž“αžΆαŸ†αžŸαž„αŸ’αžαŸαž” αž“αž·αž„αž„αžΆαž™αž™αž›αŸ‹αž…αŸ†αž–αŸ„αŸ‡αž€αžΆαžšαž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαž„αž€αžΆαžšαž€αŸ†αžŽαžαŸ‹αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’αžŸαž˜αŸ’αžšαžΆαž”αŸ‹ Kubernetes αžŠαŸ„αž™αž”αŸ’αžšαžΎαž”αž…αŸ’αž…αŸαž€αžœαž·αž‘αŸ’αž™αžΆ αž”αŸ’αžŠαžΌαžšαžαžΆαž˜αž”αŸ†αžŽαž„αžŠαŸ‚αž›αžαŸ’αž˜αžΈαŸ—αž“αŸαŸ‡αž”αžΆαž“αž€αŸ’αž›αžΆαž™αž‡αžΆαž•αŸ’αž“αŸ‚αž€αž˜αž½αž™αž“αŸƒ K8s αŸ”

αž€αžΆαžšαžŽαŸ‚αž“αžΆαŸ†αžαŸ’αž›αžΈαŸ—αžŠαžΎαž˜αŸ’αž”αžΈαž”αŸ’αžŠαžΌαžšαžαžΆαž˜αž”αŸ†αžŽαž„

Kustomize αž‚αžΊαž‡αžΆαž§αž”αž€αžšαžŽαŸαžŠαŸ‚αž›αž’αž“αž»αž‰αŸ’αž‰αžΆαžαž±αŸ’αž™αž’αŸ’αž“αž€αž”αŸ’αžšαžΎ "αž”αŸ’αžŠαžΌαžšαžαžΆαž˜αž”αŸ†αžŽαž„αž―αž€αžŸαžΆαžš YAML αžŸαžΆαž˜αž‰αŸ’αž‰ αžŠαŸ„αž™αž‚αŸ’αž˜αžΆαž“αž‚αŸ†αžšαžΌαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž‚αŸ„αž›αž”αŸ†αžŽαž„αž•αŸ’αžŸαŸαž„αž‚αŸ’αž“αžΆ αžŠαŸ„αž™αž‘αž»αž€αž±αŸ’αž™ YAML αžŠαžΎαž˜αž“αŸ…αžŠαžŠαŸ‚αž› αž“αž·αž„αž’αžΆαž…αž”αŸ’αžšαžΎαž”αžΆαž“" (αž€αžΆαžšαž–αž·αž–αžŽαŸŒαž“αžΆαž”αžΆαž“αžαŸ’αž…αžΈαžŠαŸ„αž™αž•αŸ’αž‘αžΆαž›αŸ‹αž–αžΈ αž”αŸ’αžαžΌαžšαžƒαŸ’αž›αžΆαŸ†αž„αž“αŸ…αž›αžΎ GitHub) αž€αžΆαžšαž”αŸ’αžŠαžΌαžšαžαžΆαž˜αž”αŸ†αžŽαž„αž’αžΆαž…αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαžŠαŸ„αž™αž•αŸ’αž‘αžΆαž›αŸ‹ αž¬αž”αŸ’αžšαžΎαž–αžΈ Kubernetes 1.14 kubectl -k αžŠαžΎαž˜αŸ’αž”αžΈαž…αžΌαž›αž”αŸ’αžšαžΎαž˜αž»αžαž„αžΆαžšαžšαž”αžŸαŸ‹αžœαžΆ (αž‘αŸ„αŸ‡αž”αžΈαž‡αžΆ Kubernetes 1.15 αž€αŸαžŠαŸ„αž™ αž”αŸ’αžšαž–αŸαž“αŸ’αž’αž‚αŸ„αž›αž–αžΈαžšαžŠαžΆαž…αŸ‹αžŠαŸ„αž™αž‘αŸ‚αž€αž‚αžΊαžαŸ’αž˜αžΈαž‡αžΆαž„αžŸαž˜αžαŸ’αžαž—αžΆαž–αžŠαŸ‚αž›αž”αžΆαž“αž”αž„αŸ’αž€αžΎαžαž“αŸ…αž€αŸ’αž“αž»αž„ kubectl)αŸ” (αž…αŸ†αžŽαžΆαŸ†αŸ” αž”αž€αž”αŸ’αžšαŸ‚αŸ– αž αžΎαž™αž‡αžΆαž˜αž½αž™αž“αžΉαž„αž€αžΆαžšαž…αŸαž‰αž•αŸ’αžŸαžΆαž™αžαŸ’αž˜αžΈαŸ—αž“αŸαŸ‡ Kubernetes ៑.៑ៀ αž”αŸ’αžŠαžΌαžšαžαžΆαž˜αž”αŸ†αžŽαž„ αž‚αžΆαŸ†αž‘αŸ’αžšαžŠαŸ„αž™ αž•αž„αžŠαŸ‚αžšαž“αŸ…αž€αŸ’αž“αž»αž„αž§αž”αž€αžšαžŽαŸαž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹ kubeadm αŸ” ) αž€αŸ’αž“αž»αž„αž€αžΆαžšαž”αŸ’αžšαž€αžΆαžŸαž“αŸαŸ‡ αžαŸ’αž‰αž»αŸ†αž…αž„αŸ‹αžŽαŸ‚αž“αžΆαŸ†αž’αŸ’αž“αž€αž’αžΆαž“αž’αŸ†αž–αžΈαž˜αžΌαž›αžŠαŸ’αž‹αžΆαž“αž‚αŸ’αžšαžΉαŸ‡αž“αŸƒ kustomize αŸ”

αž“αŸ…αž€αŸ’αž“αž»αž„αž‘αž˜αŸ’αžšαž„αŸ‹/αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžŠαŸαžŸαžΆαž˜αž‰αŸ’αž‰αž”αŸ†αž•αž»αžαžšαž”αžŸαŸ‹αžœαžΆ αž”αŸ’αžŠαžΌαžšαžαžΆαž˜αž”αŸ†αžŽαž„αž‚αŸ’αžšαžΆαž“αŸ‹αžαŸ‚αž‡αžΆαž”αžŽαŸ’αžαž»αŸ†αž“αŸƒαž’αž“αž’αžΆαž“ (αž―αž€αžŸαžΆαžš YAML αžŠαŸ‚αž›αž€αŸ†αžŽαžαŸ‹αžœαžαŸ’αžαž» KubernetesαŸ– αž€αžΆαžšαžŠαžΆαž€αŸ‹αž±αŸ’αž™αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹ αžŸαŸαžœαžΆαž€αž˜αŸ’αž˜αŸ”αž›αŸ”) αž”αžΌαž€αž“αžΉαž„αž”αž‰αŸ’αž‡αžΈαž€αžΆαžšαžŽαŸ‚αž“αžΆαŸ†αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΆαžšαž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžšαžŠαŸ‚αž›αžαŸ’αžšαžΌαžœαž’αŸ’αžœαžΎαž…αŸ†αž–αŸ„αŸ‡αž’αž“αž’αžΆαž“αž‘αžΆαŸ†αž„αž“αŸ„αŸ‡αŸ” αžŠαžΌαž…αž‚αŸ’αž“αžΆαž“αžΉαž„αž€αžΆαžšαž’αŸ’αžœαžΎαž±αŸ’αž™αž”αŸ’αžšαžΎαžŸαŸ†αžŽαž»αŸ†αž€αžΆαžšαžŽαŸ‚αž“αžΆαŸ†αžŠαŸ‚αž›αž˜αžΆαž“αž“αŸ…αž€αŸ’αž“αž»αž„ Makefileαž αžΎαž™ Docker αž”αž„αŸ’αž€αžΎαžαž€αž»αž„αžαžΊαž“αŸαžšαžŠαŸ„αž™αž•αŸ’αž’αŸ‚αž€αž›αžΎαž€αžΆαžšαžŽαŸ‚αž“αžΆαŸ†αž–αžΈ Dockerfile, αž”αŸ’αžŠαžΌαžšαžαžΆαž˜αž”αŸ†αžŽαž„αž€αžΆαžšαž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹ kustomization.yaml αžŠαžΎαž˜αŸ’αž”αžΈαžšαž€αŸ’αžŸαžΆαž‘αž»αž€αž€αžΆαžšαžŽαŸ‚αž“αžΆαŸ†αž’αŸ†αž–αžΈαž€αžΆαžšαž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžšαžŠαŸ‚αž›αž’αŸ’αž“αž€αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αž…αž„αŸ‹αž’αŸ’αžœαžΎαž…αŸ†αž–αŸ„αŸ‡αžŸαŸ†αžŽαž»αŸ†αž“αŸƒαž’αž“αž’αžΆαž“αŸ”

αž“αŸαŸ‡αž‚αžΊαž‡αžΆαž―αž€αžŸαžΆαžšαž§αž‘αžΆαž αžšαžŽαŸ kustomization.yaml:

resources:
- deployment.yaml
- service.yaml
namePrefix: dev-
namespace: development
commonLabels:
  environment: development

αžαŸ’αž‰αž»αŸ†αž“αžΉαž„αž˜αž·αž“αž–αŸ’αž™αžΆαž™αžΆαž˜αž“αž·αž™αžΆαž™αž’αŸ†αž–αžΈαžœαžΆαž›αžŠαŸ‚αž›αž’αžΆαž…αž’αŸ’αžœαžΎαž”αžΆαž“αž‘αžΆαŸ†αž„αž’αžŸαŸ‹αž“αŸ…αž€αŸ’αž“αž»αž„αž―αž€αžŸαžΆαžšαž“αŸ„αŸ‡αž‘αŸαŸ” kustomization.yaml (αž“αŸαŸ‡αžαŸ’αžšαžΌαžœαž”αžΆαž“αžŸαžšαžŸαŸαžšαž™αŸ‰αžΆαž„αž›αŸ’αž’αž’αŸ†αž–αžΈ αž“αŸ…αž‘αžΈαž“αŸαŸ‡) αž”αŸ‰αž»αž“αŸ’αžαŸ‚αžαŸ’αž‰αž»αŸ†αž“αžΉαž„αž•αŸ’αžαž›αŸ‹αž€αžΆαžšαž–αž“αŸ’αž™αž›αŸ‹αžŸαž„αŸ’αžαŸαž”αž’αŸ†αž–αžΈαž§αž‘αžΆαž αžšαžŽαŸαž‡αžΆαž€αŸ‹αž›αžΆαž€αŸ‹αž˜αž½αž™αŸ–

  • αžœαžΆαž› resources αž”αž„αŸ’αž αžΆαž‰αž–αžΈαž’αŸ’αžœαžΈαžŠαŸ‚αž› (αž’αž“αž’αžΆαž“αžŽαžΆαž˜αž½αž™) αž”αŸ’αžŠαžΌαžšαžαžΆαž˜αž”αŸ†αžŽαž„αž“αžΉαž„αž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžšαŸ” αž€αŸ’αž“αž»αž„αž€αžšαžŽαžΈαž“αŸαŸ‡ αžœαžΆαž“αžΉαž„αžŸαŸ’αžœαŸ‚αž„αžšαž€αž’αž“αž’αžΆαž“αž“αŸ…αž€αŸ’αž“αž»αž„αž―αž€αžŸαžΆαžš deployment.yaml ΠΈ service.yaml αž“αŸ…αž€αŸ’αž“αž»αž„αžαžαžšαž”αžŸαŸ‹αž’αŸ’αž“αž€ (αž’αŸ’αž“αž€αž’αžΆαž…αž”αž‰αŸ’αž‡αžΆαž€αŸ‹αž•αŸ’αž›αžΌαžœαž–αŸαž‰αž›αŸαž‰ αž¬αž‘αžΆαž€αŸ‹αž‘αž„αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž…αžΆαŸ†αž”αžΆαž…αŸ‹)αŸ”
  • αžœαžΆαž› namePrefix αžŽαŸ‚αž“αžΆαŸ† αž”αŸ’αžŠαžΌαžšαžαžΆαž˜αž”αŸ†αžŽαž„ αžŠαžΎαž˜αŸ’αž”αžΈαž”αž“αŸ’αžαŸ‚αž˜αž”αž»αž–αŸ’αžœαž”αž‘αž‡αžΆαž€αŸ‹αž›αžΆαž€αŸ‹ (αž€αŸ’αž“αž»αž„αž€αžšαžŽαžΈαž“αŸαŸ‡ - dev-) αžŠαžΎαž˜αŸ’αž”αžΈαž‚αž»αžŽαž›αž€αŸ’αžαžŽαŸˆ name αž’αž“αž’αžΆαž“αž‘αžΆαŸ†αž„αž’αžŸαŸ‹αžŠαŸ‚αž›αž”αžΆαž“αž€αŸ†αžŽαžαŸ‹αž“αŸ…αž€αŸ’αž“αž»αž„αžœαžΆαž› resources. αžŠαžΌαž…αŸ’αž“αŸαŸ‡αž”αŸ’αžšαžŸαž·αž“αž”αžΎ Deployment αž˜αžΆαž“ name αž‡αžΆαž˜αž½αž™αž“αžΉαž„αž’αžαŸ’αžαž“αŸαž™ nginx-deployment, αž”αŸ’αžŠαžΌαžšαžαžΆαž˜αž”αŸ†αžŽαž„αž“αžΉαž„αž’αŸ’αžœαžΎαž±αŸ’αž™αžœαžΆ dev-nginx-deployment.
  • αžœαžΆαž› namespace αžŽαŸ‚αž“αžΆαŸ† αž”αŸ’αžŠαžΌαžšαžαžΆαž˜αž”αŸ†αžŽαž„ αžŠαžΎαž˜αŸ’αž”αžΈαž”αž“αŸ’αžαŸ‚αž˜αž‘αŸ†αž αŸ†αžˆαŸ’αž˜αŸ„αŸ‡αžŠαŸ‚αž›αž”αžΆαž“αž•αŸ’αžαž›αŸ‹αž±αŸ’αž™αž‘αŸ…αž’αž“αž’αžΆαž“αž‘αžΆαŸ†αž„αž’αžŸαŸ‹αŸ” αž€αŸ’αž“αž»αž„αž€αžšαžŽαžΈαž“αŸαŸ‡ αž€αžΆαžšαžŠαžΆαž€αŸ‹αž–αž„αŸ’αžšαžΆαž™ αž“αž·αž„αžŸαŸαžœαžΆαž€αž˜αŸ’αž˜αž“αžΉαž„αž’αŸ’αž›αžΆαž€αŸ‹αž…αžΌαž›αž‘αŸ…αž€αŸ’αž“αž»αž„ namespace development.
  • αž‘αžΈαž”αŸ†αž•αž»αžαžœαžΆαž› commonLabels αž˜αžΆαž“αžŸαŸ†αžŽαž»αŸ†αž“αŸƒαžŸαŸ’αž›αžΆαž€αžŠαŸ‚αž›αž“αžΉαž„αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αž“αŸ’αžαŸ‚αž˜αž‘αŸ…αž’αž“αž’αžΆαž“αž‘αžΆαŸ†αž„αž’αžŸαŸ‹αŸ” αž€αŸ’αž“αž»αž„αž§αž‘αžΆαž αžšαžŽαŸαžšαž”αžŸαŸ‹αž™αžΎαž„ kustomize αž“αžΉαž„αž€αŸ†αžŽαžαŸ‹αžŸαŸ’αž›αžΆαž€αž‘αŸ…αž’αž“αž’αžΆαž“αžŠαŸ‚αž›αž˜αžΆαž“αžˆαŸ’αž˜αŸ„αŸ‡ environment αž“αž·αž„αž’αžαŸ’αžαž“αŸαž™ development.

αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž’αŸ’αž“αž€αž”αŸ’αžšαžΎαž’αŸ’αžœαžΎ kustomize build . αž“αŸ…αž€αŸ’αž“αž»αž„αžαžαž―αž€αžŸαžΆαžš kustomization.yaml αž“αž·αž„αž’αž“αž’αžΆαž“αž…αžΆαŸ†αž”αžΆαž…αŸ‹ (αž§αž‘αžΆαž αžšαžŽαŸαž―αž€αžŸαžΆαžš deployment.yaml ΠΈ service.yaml) αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž˜αž€αž“αŸ…αž›αž‘αŸ’αž’αž•αž› αžœαžΆαž“αžΉαž„αž‘αž‘αž½αž›αž”αžΆαž“αž’αžαŸ’αžαž”αž‘αž‡αžΆαž˜αž½αž™αž“αžΉαž„αž€αžΆαžšαž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžšαžŠαŸ‚αž›αž”αžΆαž“αž”αž‰αŸ’αž‡αžΆαž€αŸ‹αž“αŸ…αž€αŸ’αž“αž»αž„ kustomization.yaml.

αž€αžΆαžšαžŽαŸ‚αž“αžΆαŸ†αžαŸ’αž›αžΈαŸ—αžŠαžΎαž˜αŸ’αž”αžΈαž”αŸ’αžŠαžΌαžšαžαžΆαž˜αž”αŸ†αžŽαž„
αž…αŸ†αžŽαžΆαŸ†αŸ” αž”αž€αž”αŸ’αžšαŸ‚αŸ– αžšαžΌαž”αž—αžΆαž–αž–αžΈαž―αž€αžŸαžΆαžšαž‚αž˜αŸ’αžšαŸ„αž„αžŸαŸ’αžαžΈαž–αžΈαž€αžΆαžšαž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹ "αžŸαžΆαž˜αž‰αŸ’αž‰" αž“αŸƒ kustomize

αž›αž‘αŸ’αž’αž•αž›αž’αžΆαž…αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αž‰αŸ’αž‡αžΌαž“αž”αž“αŸ’αž αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž€αžΆαžšαž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžšαž…αžΆαŸ†αž”αžΆαž…αŸ‹αžαŸ’αžšαžΌαžœαž’αŸ’αžœαžΎ

kustomize build . > custom-config.yaml

αž‘αž·αž“αŸ’αž“αž“αŸαž™αž›αž‘αŸ’αž’αž•αž›αž‚αžΊαž€αŸ†αžŽαžαŸ‹ (αž‘αž·αž“αŸ’αž“αž“αŸαž™αž”αž‰αŸ’αž…αžΌαž›αžŠαžΌαž…αž‚αŸ’αž“αžΆαž“αžΉαž„αž”αž„αŸ’αž€αžΎαžαž›αž‘αŸ’αž’αž•αž›αž›αž‘αŸ’αž’αž•αž›αžŠαžΌαž…αž‚αŸ’αž“αžΆ) αžŠαžΌαž…αŸ’αž“αŸαŸ‡αž’αŸ’αž“αž€αž˜αž·αž“αž…αžΆαŸ†αž”αžΆαž…αŸ‹αžšαž€αŸ’αžŸαžΆαž‘αž»αž€αž›αž‘αŸ’αž’αž•αž›αž‘αŸ…αž€αŸ’αž“αž»αž„αž―αž€αžŸαžΆαžšαž‘αŸαŸ” αž‡αŸ†αž“αž½αžŸαž˜αž€αžœαž·αž‰ αžœαžΆαž’αžΆαž…αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αž‰αŸ’αž‡αžΌαž“αžŠαŸ„αž™αž•αŸ’αž‘αžΆαž›αŸ‹αž‘αŸ…αž–αžΆαž€αŸ’αž™αž”αž‰αŸ’αž‡αžΆαž•αŸ’αžŸαŸαž„αž‘αŸ€αžαŸ–

kustomize build . | kubectl apply -f -

αž˜αž»αžαž„αžΆαžš kustomize αž€αŸαž’αžΆαž…αž…αžΌαž›αž”αŸ’αžšαžΎαž”αžΆαž“αžαžΆαž˜αžšαž™αŸˆ kubectl -k (αž…αžΆαž”αŸ‹αžαžΆαŸ†αž„αž–αžΈ Kubernetes αž€αŸ†αžŽαŸ‚ 1.14) αŸ” αž‘αŸ„αŸ‡αž‡αžΆαž™αŸ‰αžΆαž„αžŽαžΆαž€αŸαžŠαŸ„αž™ αžŸαžΌαž˜αž…αž„αž…αžΆαŸ†αžαžΆαž€αž‰αŸ’αž…αž”αŸ‹ kustomize αžŠαžΆαž…αŸ‹αžŠαŸ„αž™αž‘αŸ‚αž€αžαŸ’αžšαžΌαžœαž”αžΆαž“αž’αŸ’αžœαžΎαž”αž…αŸ’αž…αž»αž”αŸ’αž”αž“αŸ’αž“αž—αžΆαž–αž›αžΏαž“αž‡αžΆαž„αž€αž‰αŸ’αž…αž”αŸ‹ kubectl αžšαž½αž˜αž”αž‰αŸ’αž…αžΌαž›αž‚αŸ’αž“αžΆ (αž™αŸ‰αžΆαž„αž αŸ„αž…αžŽαžΆαžŸαŸ‹αž“αŸαŸ‡αž‡αžΆαž€αžšαžŽαžΈαž‡αžΆαž˜αž½αž™αž“αžΉαž„αž€αžΆαžšαž…αŸαž‰αž•αŸ’αžŸαžΆαž™ Kubernetes 1.15) αŸ”

αž’αŸ’αž“αž€αž’αžΆαž“αž’αžΆαž…αžŸαž½αžšαžαžΆ "αž αŸαžαž»αž’αŸ’αžœαžΈαž”αžΆαž“αž‡αžΆαž—αžΆαž–αžŸαŸ’αž˜αž»αž‚αžŸαŸ’αž˜αžΆαž‰αž‘αžΆαŸ†αž„αž’αžŸαŸ‹αž“αŸαŸ‡αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž’αŸ’αž“αž€αž’αžΆαž…αž€αŸ‚αžŸαž˜αŸ’αžšαž½αž›αž―αž€αžŸαžΆαžšαžŠαŸ„αž™αž•αŸ’αž‘αžΆαž›αŸ‹?" αžŸαŸ†αžŽαž½αžšαžŠαŸαž’αžŸαŸ’αž…αžΆαžšαŸ’αž™αŸ” αž“αŸ…αž€αŸ’αž“αž»αž„αž§αž‘αžΆαž αžšαžŽαŸαžšαž”αžŸαŸ‹αž™αžΎαž„, αž‡αžΆαž€αžΆαžšαž–αž·αž αž’αžΆαž…αž’αŸ’αžœαžΎαž”αžΆαž“ αž€αŸ‚αž”αŸ’αžšαŸ‚αž―αž€αžŸαžΆαžš deployment.yaml ΠΈ service.yaml αžŠαŸ„αž™αž•αŸ’αž‘αžΆαž›αŸ‹ αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž…αž»αŸ‡αž™αŸ‰αžΆαž„αžŽαžΆαž”αžΎαž–αž½αž€αž‚αŸαž‡αžΆαž•αŸ’αž›αžΌαžœαž”αŸ†αž”αŸ‚αž€αž“αŸƒαž‚αž˜αŸ’αžšαŸ„αž„αžšαž”αžŸαŸ‹αž“αžšαžŽαžΆαž˜αŸ’αž“αžΆαž€αŸ‹? αž€αžΆαžšαž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžšαž―αž€αžŸαžΆαžšαžŠαŸ„αž™αž•αŸ’αž‘αžΆαž›αŸ‹αž’αŸ’αžœαžΎαž±αŸ’αž™αž˜αžΆαž“αž€αžΆαžšαž›αŸ†αž”αžΆαž€ (αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž˜αž·αž“αž’αžΆαž…αž‘αŸ…αžšαž½αž…) αž€αŸ’αž“αž»αž„αž€αžΆαžšαž”αž„αŸ’αž€αžΎαžαž•αŸ’αž›αžΌαžœαž”αŸ†αž”αŸ‚αž€αž‘αžΎαž„αžœαž·αž‰ αž“αŸ…αž–αŸαž›αžŠαŸ‚αž›αž€αžΆαžšαž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžšαžαŸ’αžšαžΌαžœαž”αžΆαž“αž’αŸ’αžœαžΎαž‘αžΎαž„αž…αŸ†αž–αŸ„αŸ‡αž”αŸ’αžšαž—αž–αžŠαžΎαž˜/αž”αŸ’αžšαž—αž–αŸ” αž€αžΆαžšαž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹ kustomize αž’αž“αž»αž‰αŸ’αž‰αžΆαžαž±αŸ’αž™αž’αŸ’αž“αž€αž’αŸ’αžœαžΎαž€αžŽαŸ’αžαžΆαž›αž€αžΆαžšαž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžšαž‘αžΆαŸ†αž„αž“αŸαŸ‡αž“αŸ…αž€αŸ’αž“αž»αž„αž―αž€αžŸαžΆαžšαž˜αž½αž™αŸ” kustomization.yamlαžŠαŸ„αž™αž‘αž»αž€αž―αž€αžŸαžΆαžšαžŠαžΎαž˜αž±αŸ’αž™αž“αŸ…αžŠαžŠαŸ‚αž› αž αžΎαž™αž’αŸ’αžœαžΎαž±αŸ’αž™αžœαžΆαž€αžΆαž“αŸ‹αžαŸ‚αž„αžΆαž™αžŸαŸ’αžšαž½αž›αž€αŸ’αž“αž»αž„αž€αžΆαžšαžŠαžΆαž€αŸ‹αž―αž€αžŸαžΆαžšαžŠαžΎαž˜αž‘αžΎαž„αžœαž·αž‰αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž…αžΆαŸ†αž”αžΆαž…αŸ‹αŸ”

αž’αžαŸ’αžαž”αŸ’αžšαž™αŸ„αž‡αž“αŸαž“αŸƒ kustomize αž€αŸ’αž›αžΆαž™αž‡αžΆαž‡αžΆαž€αŸ‹αžŸαŸ’αžαŸ‚αž„αž“αŸ…αž€αŸ’αž“αž»αž„αž€αžšαžŽαžΈαž“αŸƒαž€αžΆαžšαž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αž€αžΆαž“αŸ‹αžαŸ‚αžŸαŸ’αž˜αž»αž‚αžŸαŸ’αž˜αžΆαž‰αŸ” αž“αŸ…αž€αŸ’αž“αž»αž„αž§αž‘αžΆαž αžšαžŽαŸαžαžΆαž„αž›αžΎ kustomization.yaml αž αžΎαž™αž’αž“αž’αžΆαž“αž‚αžΊαžŸαŸ’αžαž·αžαž“αŸ…αž€αŸ’αž“αž»αž„αžαžαžαŸ‚αž˜αž½αž™αŸ” αž‘αŸ„αŸ‡αž™αŸ‰αžΆαž„αžŽαžΆαž€αŸαžŠαŸ„αž™ αž”αŸ’αžαžΌαžšαž‚αžΆαŸ†αž‘αŸ’αžšαž€αžšαžŽαžΈαž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αžŠαŸ‚αž›αž˜αžΆαž“αž€αžΆαžšαž€αŸ†αžŽαžαŸ‹αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’αž˜αžΌαž›αžŠαŸ’αž‹αžΆαž“ αž“αž·αž„αžœαŸ‰αžΆαžšαŸ’αž™αŸ‰αž„αŸ‹αž‡αžΆαž…αŸ’αžšαžΎαž“αžšαž”αžŸαŸ‹αžœαžΆ αžŠαŸ‚αž›αžαŸ’αžšαžΌαžœαž”αžΆαž“αž‚αŸαžŸαŸ’αž‚αžΆαž›αŸ‹αž•αž„αžŠαŸ‚αžšαžαžΆαž‡αžΆ αžαŸ’αžšαž½αžαž›αžΎαž‚αŸ’αž“αžΆαŸ”. αž§αž‘αžΆαž αžšαžŽαŸ αž’αŸ’αž“αž€αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αž…αž„αŸ‹αž™αž€ Deployment and Service αžŸαž˜αŸ’αžšαžΆαž”αŸ‹ nginx αžŠαŸ‚αž›αžαŸ’αž‰αž»αŸ†αž”αžΆαž“αž”αŸ’αžšαžΎαž‡αžΆαž§αž‘αžΆαž αžšαžŽαŸ αž αžΎαž™αž”αž„αŸ’αž€αžΎαžαž€αžΆαžšαž’αž—αž·αžœαžŒαŸ’αžαž“αŸ αžŠαŸ†αžŽαžΆαž€αŸ‹αž€αžΆαž› αž“αž·αž„αž€αŸ†αžŽαŸ‚αž•αž›αž·αž (αž¬αžœαŸ‰αžΆαžšαŸ’αž™αŸ‰αž„αŸ‹) αž“αŸƒαž―αž€αžŸαžΆαžšαž‘αžΆαŸ†αž„αž“αŸ„αŸ‡αŸ” αžŠαžΎαž˜αŸ’αž”αžΈαž’αŸ’αžœαžΎαžŠαžΌαž…αŸ’αž“αŸαŸ‡αž‚αžΆαžαŸ‹αž“αžΉαž„αžαŸ’αžšαžΌαžœαž€αžΆαžšαž€αžΆαžšαžαŸ’αžšαž½αžαž›αžΎαž‚αŸ’αž“αžΆαžŠαŸ‚αž›αž”αžΆαž“αžšαŸ€αž”αžšαžΆαž”αŸ‹αžαžΆαž„αž›αžΎαž αžΎαž™αž‡αžΆαž€αžΆαžšαž–αž·αžαž’αž“αž’αžΆαž“αž˜αžΌαž›αžŠαŸ’αž‹αžΆαž“αžŠαŸ„αž™αžαŸ’αž›αž½αž“αž―αž„αŸ”

αžŠαžΎαž˜αŸ’αž”αžΈαž”αž„αŸ’αž αžΆαž‰αž–αžΈαž‚αŸ†αž“αž·αžαž“αŸƒαž€αžΆαžšαžαŸ’αžšαž½αžαž›αžΎαž‚αŸ’αž“αžΆ αž“αž·αž„αž’αž“αž’αžΆαž“αž˜αžΌαž›αžŠαŸ’αž‹αžΆαž“ (αž’αž“αž’αžΆαž“αž˜αžΌαž›αžŠαŸ’αž‹αžΆαž“)αž§αž”αž˜αžΆαžαžΆ αžαžαž˜αžΆαž“αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’αžŠαžΌαž…αžαžΆαž„αž€αŸ’αžšαŸ„αž˜αŸ–

- base
  - deployment.yaml
  - service.yaml
  - kustomization.yaml
- overlays
  - dev
    - kustomization.yaml
  - staging
    - kustomization.yaml
  - prod
    - kustomization.yaml

αž“αŸ…αž€αŸ’αž“αž»αž„αž―αž€αžŸαžΆαžš base/kustomization.yaml αž’αŸ’αž“αž€αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αžŠαŸ‚αž›αž”αŸ’αžšαžΎαžœαžΆαž› resources αž‚αŸ’αžšαžΆαž“αŸ‹αžαŸ‚αž”αŸ’αžšαž€αžΆαžŸαž’αž“αž’αžΆαž“αžŠαŸ‚αž›αž”αŸ’αžŠαžΌαžšαžαžΆαž˜αž”αŸ†αžŽαž„αž‚αž½αžšαžšαž½αž˜αž”αž‰αŸ’αž…αžΌαž›αŸ”

αž“αŸ…αž€αŸ’αž“αž»αž„αž―αž€αžŸαžΆαžšαž“αžΈαž˜αž½αž™αŸ— overlays/{dev,staging,prod}/kustomization.yaml αž’αŸ’αž“αž€αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αž™αŸ„αž„αž‘αŸ…αž›αžΎαž€αžΆαžšαž€αŸ†αžŽαžαŸ‹αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’αž˜αžΌαž›αžŠαŸ’αž‹αžΆαž“αž“αŸ…αž€αŸ’αž“αž»αž„αžœαžΆαž› resourcesαž αžΎαž™αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž˜αž€αž”αž„αŸ’αž αžΆαž‰αž–αžΈαž€αžΆαžšαž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžšαž‡αžΆαž€αŸ‹αž›αžΆαž€αŸ‹αžŸαž˜αŸ’αžšαžΆαž”αŸ‹ αž”αžšαž·αžŸαŸ’αžαžΆαž“αžŠαŸ‚αž›αž”αžΆαž“αž•αŸ’αžαž›αŸ‹αž±αŸ’αž™. αž§αž‘αžΆαž αžšαžŽαŸαž―αž€αžŸαžΆαžš overlays/dev/kustomization.yaml αž’αžΆαž…β€‹αž˜αžΎαž›β€‹αž‘αŸ…β€‹αžŠαžΌαž…β€‹αž‡αžΆβ€‹αž§αž‘αžΆαž αžšαžŽαŸβ€‹αžŠαŸ‚αž›β€‹αž”αžΆαž“β€‹αž•αŸ’αžŠαž›αŸ‹β€‹αž±αŸ’αž™β€‹αžαžΆαž„β€‹αžŠαžΎαž˜αŸ–

resources:
- ../../base
namePrefix: dev-
namespace: development
commonLabels:
  environment: development

αž€αŸ’αž“αž»αž„αž€αžšαžŽαžΈαž“αŸαŸ‡αž―αž€αžŸαžΆαžš overlays/prod/kustomization.yaml αž’αžΆαž…αžαž»αžŸαž‚αŸ’αž“αžΆαž‘αžΆαŸ†αž„αžŸαŸ’αžšαž»αž„αŸ–

resources:
- ../../base
namePrefix: prod-
namespace: production
commonLabels:
  environment: production
  sre-team: blue

αž“αŸ…αž–αŸαž›αž’αŸ’αž“αž€αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αžŠαŸ†αžŽαžΎαžšαž€αžΆαžš kustomize build . αž“αŸ…αž€αŸ’αž“αž»αž„αž€αžΆαžαžΆαž‘αž»αž€ overlays/devαž”αŸ’αžŠαžΌαžšαžαžΆαž˜αž”αŸ†αžŽαž„αž“αžΉαž„αž”αž„αŸ’αž€αžΎαžαž‡αž˜αŸ’αžšαžΎαžŸαž’αž—αž·αžœαžŒαŸ’αžαž“αŸαŸ” αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž’αŸ’αž“αž€αžšαžαŸ‹ kustomize build . αž“αŸ…αž€αŸ’αž“αž»αž„αž€αžΆαžαžΆαž‘αž»αž€ overlays/prod - αž’αŸ’αž“αž€αž‘αž‘αž½αž›αž”αžΆαž“αž‡αž˜αŸ’αžšαžΎαžŸαž•αž›αž·αžαž€αž˜αŸ’αž˜αŸ” αž αžΎαž™αž‘αžΆαŸ†αž„αž’αžŸαŸ‹αž“αŸαŸ‡ - αžŠαŸ„αž™αž˜αž·αž“αž’αŸ’αžœαžΎαž€αžΆαžšαž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžšαžŽαžΆαž˜αž½αž™αž‘αŸ…αžŠαžΎαž˜ (αž˜αžΌαž›αžŠαŸ’αž‹αžΆαž“) αž―αž€αžŸαžΆαžšαž‘αžΆαŸ†αž„αž’αžŸαŸ‹αž“αŸ…αž€αŸ’αž“αž»αž„αžœαž·αž’αžΈαž”αŸ’αžšαž€αžΆαžŸ αž“αž·αž„αž€αŸ†αžŽαžαŸ‹αŸ” αž’αŸ’αž“αž€αž’αžΆαž…αž’αž“αž»αžœαžαŸ’αžαž€αžΆαžšαž€αŸ†αžŽαžαŸ‹αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’αž˜αžΌαž›αžŠαŸ’αž‹αžΆαž“ αž“αž·αž„αžαžαž‡αžΆαž“αŸ‹αž›αžΎαžŠαŸ„αž™αž•αŸ’αž‘αžΆαž›αŸ‹αž‘αŸ…αž€αžΆαžšαž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαž„αž€αŸ†αžŽαŸ‚ αžŠαŸ„αž™αžŠαžΉαž„αžαžΆαž•αŸ’αž’αŸ‚αž€αž›αžΎαž―αž€αžŸαžΆαžšαž‘αžΆαŸ†αž„αž“αŸαŸ‡ αž’αŸ’αž“αž€αž’αžΆαž…αž”αž„αŸ’αž€αžΎαžαž‘αžΎαž„αžœαž·αž‰αž“αžΌαžœαž€αžΆαžšαž€αŸ†αžŽαžαŸ‹αžŠαŸ‚αž›αž…αž„αŸ‹αž”αžΆαž“αž“αŸ…αž–αŸαž›αžŽαžΆαž€αŸαž”αžΆαž“αŸ”

αž€αžΆαžšαžŽαŸ‚αž“αžΆαŸ†αžαŸ’αž›αžΈαŸ—αžŠαžΎαž˜αŸ’αž”αžΈαž”αŸ’αžŠαžΌαžšαžαžΆαž˜αž”αŸ†αžŽαž„
αž…αŸ†αžŽαžΆαŸ†αŸ” αž”αž€αž”αŸ’αžšαŸ‚αŸ– αžšαžΌαž”αž—αžΆαž–αž–αžΈαž―αž€αžŸαžΆαžšαž‚αž˜αŸ’αžšαŸ„αž„αžŸαŸ’αžαžΈαž–αžΈαž€αžΆαžšαž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αž€αžΆαžšαžαŸ’αžšαž½αžαž›αžΎαž‚αŸ’αž“αžΆαž€αŸ’αž“αž»αž„αž€αžΆαžšαž€αŸ†αžŽαžαŸ‹

αž”αŸ’αžŠαžΌαžšαžαžΆαž˜αž”αŸ†αžŽαž„ αž…αŸ’αžšαžΎαž“ αž…αŸ’αžšαžΎαž“αž‡αžΆαž„αž’αŸ’αžœαžΈαžŠαŸ‚αž›αž˜αžΆαž“αž“αŸ…αž€αŸ’αž“αž»αž„αž’αžαŸ’αžαž”αž‘αž“αŸαŸ‡αŸ” αž‘αŸ„αŸ‡αž™αŸ‰αžΆαž„αžŽαžΆαž€αŸαžŠαŸ„αž™ αžαŸ’αž‰αž»αŸ†αžŸαž„αŸ’αžƒαžΉαž˜αžαžΆαžœαžΆαžŠαžΎαžšαžαž½αž‡αžΆαž€αžΆαžšαžŽαŸ‚αž“αžΆαŸ†αžŠαŸαž›αŸ’αž’αŸ”

αž’αž“αž’αžΆαž“αž”αž“αŸ’αžαŸ‚αž˜

αž˜αžΆαž“αž’αžαŸ’αžαž”αž‘ αž“αž·αž„αž€αžΆαžšαž”αŸ„αŸ‡αž–αž»αž˜αŸ’αž–αž•αŸ’αžŸαžΆαž™αž›αŸ’αž’αŸ—αž‡αžΆαž…αŸ’αžšαžΎαž“αž’αŸ†αž–αžΈ αž”αŸ’αžŠαžΌαžšαžαžΆαž˜αž”αŸ†αžŽαž„αŸ” αž“αŸαŸ‡αž‚αžΊαž‡αžΆαž˜αž½αž™αž…αŸ†αž“αž½αž“αžŠαŸ‚αž›αžαŸ’αž‰αž»αŸ†αž”αžΆαž“αžšαž€αžƒαžΎαž‰αžαžΆαž˜αžΆαž“αž”αŸ’αžšαž™αŸ„αž‡αž“αŸαž‡αžΆαž–αž·αžŸαŸαžŸαŸ–

αž…αŸ†αžŽαžΆαŸ†αŸ” αž”αž€αž”αŸ’αžšαŸ‚αŸ– αž’αŸ’αž“αž€αž€αŸαž’αžΆαž…αžŽαŸ‚αž“αžΆαŸ†αž”αŸ’αž›αž»αž€αž“αŸƒαžαŸ†αžŽαž—αŸ’αž‡αžΆαž”αŸ‹αžŠαŸ‚αž›αž”αžΆαž“αž”αŸ„αŸ‡αž–αž»αž˜αŸ’αž–αž•αŸ’αžŸαžΆαž™αž‡αžΆ αž―αž€αžŸαžΆαžšαž—αŸ’αž‡αžΆαž”αŸ‹ αž“αŸ…αž›αžΎαž‚αŸαž αž‘αŸ†αž–αŸαžšαžšαž”αžŸαŸ‹αž§αž”αž€αžšαžŽαŸαž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹ αž’αž˜αžŠαŸ„αž™αž”αžŽαŸ’αžαž»αŸ†αž“αŸƒαžœαžΈαžŠαŸαž’αžΌαžŠαŸ‚αž›αž˜αžΆαž“αžšαž”αžΆαž™αž€αžΆαžšαžŽαŸαž…αž»αž„αž€αŸ’αžšαŸ„αž™αž”αŸ†αž•αž»αžαž’αŸ†αž–αžΈ αž”αŸ’αžŠαžΌαžšαžαžΆαž˜αž”αŸ†αžŽαž„αŸ”

αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž’αŸ’αž“αž€αž˜αžΆαž“αžŸαŸ†αžŽαž½αžš αž¬αžŸαŸ†αžŽαžΌαž˜αž–αžšαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΆαžšαž€αŸ‚αž›αž˜αŸ’αž’αžŸαž˜αŸ’αž—αžΆαžšαŸˆαž“αŸαŸ‡ αžαŸ’αž‰αž»αŸ†αžαŸ‚αž„αžαŸ‚αž”αžΎαž€αž…αŸ†αž αž…αŸ†αž–αŸ„αŸ‡αž˜αžαž·αž€αŸ‚αž›αž˜αŸ’αž’αŸ” αž’αŸ’αž“αž€αž’αžΆαž…αž‘αžΆαž€αŸ‹αž‘αž„αžαŸ’αž‰αž»αŸ†αž”αžΆαž“αž“αŸ… Twitter ឬ αž†αžΆαž“αŸ‚αž› Kubernetes Slack. αžŸαžΌαž˜αžšαžΈαž€αžšαžΆαž™αž€αŸ’αž“αž»αž„αž€αžΆαžšαž€αŸ‚αž”αŸ’αžšαŸ‚αž€αžΆαžšαž”αž„αŸ’αž αžΆαž‰αžšαž”αžŸαŸ‹αž’αŸ’αž“αž€αž‡αžΆαž˜αž½αž™αž“αžΉαž„ αž”αŸ’αžŠαžΌαžšαžαžΆαž˜αž”αŸ†αžŽαž„!

PS αž–αžΈαž’αŸ’αž“αž€αž”αž€αž”αŸ’αžšαŸ‚

αžŸαžΌαž˜αž’αžΆαž“αž•αž„αžŠαŸ‚αžšαž“αŸ…αž›αžΎαž”αŸ’αž›αž€αŸ‹αžšαž”αžŸαŸ‹αž™αžΎαž„αŸ–

αž”αŸ’αžšαž—αž–: www.habr.com

αž”αž“αŸ’αžαŸ‚αž˜αž˜αžαž·αž™αŸ„αž”αž›αŸ‹