ืืื ืืืืจ!
ืืื ืื ืกืืฃ ืคืื ืืืืขืจ, ืืืจ ืืืืื ืฆื ืืขืจืืึธื ืขื ืืืจ ืึทื ืืืจ ืคืึธืจืืขืฆื ืฆื ืึทืจืืขืื ืืืืฃ ืืขืจ ืืขืืข
ืื ืื ืืืืขื ืขื!
ืืื ืืขืจ ืฆืืื ืคืื ืฉืจืืืื ืืขื ืึทืจืืืงื, ืื ืขืืืขืจ ืคืื Kubernetes ืืื ืืขืขืจืขื.
ืงืึทื ืืืื ืขืจื ืื ืืขืืืืื ืืื ืึท ืกืคึผืขืฆืืขื ืคึผืืึทื ืคึฟืึทืจ ืืืกืึทืืืืืื ื ืคึผืจืึทืกืขืกืึทื ืืื ืืื ืืงืก; ืงืึทื ืืืื ืขืจื ืืึธืื ืึทืจืืึทื ืืขืจืขืื ื ืืื ื 2007
ืฆื ืคึผืจืืืืจื ืฆื ืคึฟืึทืจืฉืืืื ืืืึธืก Kubernetes ืืื ืึทืืื ืคืึธืืงืก, ืืึธืืืจ ืคึผืจืืืืจื ืฆื ืขื ืืคึฟืขืจื ืึท ืืืกื ืคืจืืืขืก. ืืืขื ืืื ืืขืืืขื ืื ืืขืฆืืข ืืึธื ืืขืืืขืืึธืคึผืขืจืก ืืขื ืขื ืืืืืืช ืฆื ืฉืืืืขื ืืื ืฆื ืฆืขืืืืงืืขื ืึทืคึผืืึทืงืืืฉืึทื ื ืฆื ืคึผืจืึธืืืงืฆืืข? ืืื ืคืืืข ืืขืืืขืืึธืคึผืขืจืก ืืึธื ืืืจ ืืืืกื ืืืึธืก ื ืืฆื ืื ืืืฉืืจืื ืืื ืืื ืืขื ืขื ืฆืืืขืฉืืขืื ืืืืก ืคืื ืื ืงืขืกืื? ืืื ืคืืืข ืืืึธืืงื ืึทืืืื ืืกืืจืึทืืึธืจืก ืืขื ืขื ืืึธืจื ืืืึทื ื ืืืึธืก ืืึธื ื ืื ืคึฟืึทืจืฉืืืื ืืื ืึทืคึผืืึทืงืืืฉืึทื ื ืึทืจืืขื? ืืืจ ืืืขืื ืงืืงื ืืื ืื ืขื ืืคึฟืขืจืก ืฆื ืื ืคึฟืจืืื ืืื ืืขื ืึทืจืืืงื.
ืื ืคืจืึทืกืืจืึทืงืืฉืขืจ ืืื ืืื
ืืื ืืขืจ ืืืขืื ืืืึธืก ืืื ืืขืืื ืืขื ืคืื ืืืึทืืงืข ืืื ืฉืขืฃ ืฆื ืงืืืขืจื ืขืืขืก, ืืืื ืขืจ ืคืื ืื ืืืืึทืกื ืขื ืืขืจืื ืืขื ืืื ืืขืืืขื ืื ืืึทื ืคืื "ืืื ืคึฟืจืึทืกืืจืึทืงืืฉืขืจ ืืื ืงืึธื" ืฆื "ืืื ืคึฟืจืึทืกืืจืึทืงืืฉืขืจ ืืื ืืึทืื" - ืกืคึผืึทืกืืคืืงืื, ืืื ืืื. ืึทืืข ืจืขืกืืจืกื ืืื Kubernetes, ืืืึธืก ืึทืจืืึทื ื ืขืืขื ืคึผืึธืืก, ืงืึทื ืคืืืืขืจืืืฉืึทื ื, ืืืคึผืืืื ืื ืกืืึทื ืกืื, ืืืึทืืืืื, ืืื"ื ื, ืงืขื ืขื ืืืื ืืืืื ืืืกืงืจืืืื ืืื ืึท YAML ืืขืงืข. ืืืฉื:
apiVersion: v1
kind: Pod
metadata:
name: site
labels:
app: web
spec:
containers:
- name: front-end
image: nginx
ports:
- containerPort: 80
ืืขืจ ืืืื ืื ื ืืืื ืขืก ืืจืื ืืขืจ ืคึฟืึทืจ DevOps ืึธืืขืจ SRE ืคึผืจืึธืคืขืกืกืืึธื ืึทืืก ืฆื ืืึธืจ ืืืืกืืจืืงื ืืืืขืจ ืืืขืจืงืืึธืืื ืึธื ืฆื ืฉืจืืึทืื ืงืึธื ืืื ืฉืคึผืจืึทืื ืืื Python ืึธืืขืจ Javascript.
ืื ืืขืจืข ืึทืืืืึทื ืืืืืฉืื ืคืื ืึธืจืืึทื ืืืืื ื ืื ืคืจืึทืกืืจืึทืงืืฉืขืจ ืืื ืืึทืื ืึทืจืืึทื ื ืขืืขื:
- GitOps ืึธืืขืจ Git Operations ืืืขืจืกืืข ืงืึธื ืืจืึธื. ืืขืจ ืฆืืืึทื ื ืึทืืึทืื ืืืจ ืฆื ืืึทืืื ืึทืืข Kubernetes YAML ืืขืงืขืก ืืื ืืื ืจืืคึผืึทืืึทืืึธืจืื, ืึทืืื ืืืจ ืงืขื ืขื ืฉืคึผืืจ ืคึผืื ืงื ืืืขื ืึท ืขื ืืขืจืื ื ืืื ืืขืืืื, ืืืขืจ ืืขืืืื ืขืก ืืื ืืืึธืก ืคึผืื ืงื ืืขืืืื. ืืึธืก ืื ืงืจืืกืึทื ืื ืืืจืืืขืืงืืึทื ืคืื ืึทืคึผืขืจืืืฉืึทื ื ืืืืขืจ ืืขืจ ืึธืจืืึทื ืืืึทืฆืืข ืืื ืืืคึผืจืืืื ืึทืคึผืขืจืืืฉืึทื ืึทื ืขืคืขืงืืืืืงืืึทื ืืืจื ืืืืืึทื ืืืืื ื ืึทืืืืืืืึทืื, ืกืคึผืขืฆืืขื ืืื ืืื ืขืืคึผืืืืื ืืึธื ืงืืงื ืคึฟืึทืจ ืื ืจืขืกืืจืกื ืืื ืืึทืจืคึฟื. ืืื ืืขืจ ืืขืืืืงืขืจ ืฆืืื, ืขืก ืืืขืจื ืืจืื ืืขืจ ืฆื ืืืืืึธืืึทืืืฉ ืืึทืื ืขื ืืขืจืื ืืขื ืฆื Kubernetes ืจืขืกืืจืกื ืืืจื ืคืฉืื ืฆืื ืืืคืืืกื ืึท ืฆืืขื ืืขืื.
- ืกืงืึทืืึทืืืืืื. ืืืขื ืจืขืกืืจืกื ืืขื ืขื ืืืคืืื ื ืืื YAML, ืขืก ืืืขืจื ืืึธืจ ืืจืื ื ืคึฟืึทืจ ืงื ืืื ืึธืคึผืขืจืืืืขืจื ืฆื ืืืืฉื ืืืื ืึธืืขืจ ืฆืืืื ื ืืืขืจื ืืื ืึท Kubernetes ืืืื, ืืื ืืขืจืืื ืืฉืึทื ืืื ื ืืื ืขืก ืืืึธื. Kubernetes ืืื ืึท ืืขืงืึทื ืืืึทื ืคึฟืึทืจ ืืึธืจืืืึธื ืืึทื ืึทืืืึธืกืงืึทืืื ื ืคืื ืคึผืึธืืก, ืืืึธืก ืงืขื ืขื ืืืื ืืขืืืืื ื ืฆื ืงืึทื ืืืื ืืึทื ืืื ืืึทืฉืืืกื ืืืึธืก ืื ืืื ืืืื ืืื ืืึทืงืกืืืื ื ืืืขืจ ืคืื ืคึผืึธืืก ืืขื ืขื ืคืืจืืื ืื ืืื ืึท ืืึทืืื ืืขืจ ืืืคึผืืืืืึทื ื ืงืึทื ืคืืืืขืจืืืฉืึทื ืฆื ืฉืขืคึผื ื ืืืขืจืืง ืืื ืืืื ืคืึทืจืงืขืจ ืืขืืืขืืก. ืคึฟืึทืจ ืืืึทืฉืคึผืื, ืืืื ืืืจ ืืึธืื ืืืคึผืืืื ืึท ืงืึทื ืคืืืืขืจืืืฉืึทื ืืืึธืก ืจืืงืืืืืขืจื ื ืึธื ืงืึทืคึผืึทืฆืืืขื ืจืขืื ืฆื ืึท ืคึผืืืฆืขืืืืง ืคืึทืจืืจืขืกืขืจื ืืื ืคืึทืจืงืขืจ, maxReplicas ืงืขื ืขื ืืืื ืืฉืืื ืืืฉื ืคืื 10 ืฆื 20:
apiVersion: autoscaling/v2beta2
kind: HorizontalPodAutoscaler
metadata:
name: myapp
namespace: default
spec:
scaleTargetRef:
apiVersion: apps/v1
kind: Deployment
name: myapp-deployment
minReplicas: 1
maxReplicas: 20
metrics:
- type: Resource
resource:
name: cpu
target:
type: Utilization
averageUtilization: 50
- ืืืืขืจืืืึทื ืืื ืคืึทืจืืืึทืืืื ื. YAML ืืื ืืจืืืก ืคึฟืึทืจ ืืืืึทืืืืืืืื ื ืืื ืืื ืื ืืขื ืขื ืืืคึผืืืื ืืื Kubernetes. ืคึฟืึทืจ ืืืึทืฉืคึผืื, ืึท ืืืืคึผื ืืืืขืจืืืื ืืืึทืืข ืงืึทื ืกืขืจื ื ืฆื ืืืื ืืืขืจืงืืึธืืื ืืืืคื ืืื ืึท ื ืื-ืึทืืืื ืืึทื ืืฆืขืจ. ืืื ืืขื ืคืึทื, ืืืจ ืงืขื ืืึทืจืคึฟื ืืืฉืืจืื ืึทืืึท ืืื
ืงืึธื ืคืขืกื , YAML / JSON ืืืึทืืืืึทืืึธืจ, ืคึผืืืกืขืคึฟื ืคึผืึธืืืืืง ืึทืืขื ื , ืึท ืคึผืึธืืืืืง ืืืึทืืึทืืืืืขืจ ืฆื ืขื ืฉืืจ ืึทื ืื ืงืึธื ืืขืงืกืSecurityContext ืืืื ืืืขืจืงืืึธืืื ืงืขื ื ืืฉื ืืึธืื ืืขื ืงืึทื ืืืื ืขืจ ืฆื ืืืืคื ืืื ืึทืืืื ืืกืืจืึทืืึธืจ ืคึผืจืืืืืืึทืืืฉืึทื. ืืืื ืืึธืก ืืื ืคืืจืืื ืื, ื ืืฆืขืจืก ืงืขื ืขื ืฆืืืืืื ืึท ืคึผืฉืื ืคึผืึธืืืืืงืืื ืืืืืขื , ืืืื:
package main
deny[msg] {
input.kind = "Deployment"
not input.spec.template.spec.securityContext.runAsNonRoot = true
msg = "Containers must not run as root"
}
- ืึธืคึผืฆืืขืก ืคึฟืึทืจ ืื ืึทืืจืืืฉืึทื ืืื ืึท ืืืึธืืงื ืฉืคึผืืึทืืขืจ. ืืืื ืขืจ ืคืื ืื ืืขืจืกื ื ืึธืืืึทืืึทื ืืจืขื ืืก ืืื ืืืึทื ื ืก ืืืื ืืขืื ืึธืืึธืืืข ืืื ืฆื ืืืืคื ืืืขืจืงืืึธืืื ืืืืฃ ืฆืืืืจ ืืืึธืืงื ืคึผืจืึทืืืืืืขืจื. ื ืืฆื ืื ืงืึธืืคึผืึธื ืขื ื
ืืืึธืืงื-ืคืึทืจืืึธืจืื Kubernetes ืึทืืึทืื ืงืืื ืงื ืืื ืฆื ืืืกืฉืืืืขื ืืื ืื ืืืึธืืงื ืฉืคึผืืึทืืขืจ ืืืืฃ ืืืึธืก ืขืก ืืืืคื. ืคึฟืึทืจ ืืืึทืฉืคึผืื, ืืืื ืึท ืืึทื ืืฆืขืจ ืืืืคื ืึท ืึทืคึผืืึทืงืืืฉืึทื ืืื Kubernetes ืืืืฃ AWS ืืื ืืืื ืฆื ืืืกืฉืืขืื ืื ืึทืคึผืืึทืงืืืฉืึทื ืืืจื ืึท ืืื ืกื, ืืขืจ ืืืึธืืงื ืฉืคึผืืึทืืขืจ ืืขืืคึผืก ืืืืืึธืืึทืืืฉ ืฉืึทืคึฟื ืื ืืื ืกืLoadBalancer
ืืืึธืก ืืืขื ืืืืืึธืืึทืืืฉ ืฆืืฉืืขืื ืื ืืึทืกืข ืืึทืืึทื ืกืขืจAmazon Elastic Load Balancer ืฆื ืจืืืขืจืขืงื ืคืึทืจืงืขืจ ืฆื ืึทืคึผืืึทืงืืืฉืึทื ืคึผืึธืืก.
ืขืงืกืืขื ืกืืืืืืื
Kubernetes ืืื ืืืืขืจ ืขืงืกืืขื ืกืืืืข ืืื ืืขืืืขืืึธืคึผืขืจืก ืืืืข ืขืก. ืขืก ืืื ืึท ืกืืื ืคืื ืื ืืืฆื ืจืขืกืืจืกื ืึทืืึท ืืื ืคึผืึธืืก, ืืืคึผืืืืืึทื ืฅ, StatefulSets
, ืกืืืืช , ConfigMaps
ืืื"ื ื ืืืช, ืืืืขืจื ืืื ืืขืืืขืืึธืคึผืขืจืก ืงืขื ืขื ืืืืื ืื ืืขืจืข ืจืขืกืืจืกื ืืื ืื ืคืึธืจืขื
ืคึฟืึทืจ ืืืึทืฉืคึผืื, ืืืื ืืืจ ืืืืื ืฆื ืืขืคืื ืืจื ืึท ืืืื CronTab
, ืืขืืึธืื ืืืจ ืงืขื ืืึธื ืขืคึผืขืก ืืื ืืึธืก:
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
name: crontabs.my.org
spec:
group: my.org
versions:
- name: v1
served: true
storage: true
Schema:
openAPIV3Schema:
type: object
properties:
spec:
type: object
properties:
cronSpec:
type: string
pattern: '^(d+|*)(/d+)?(s+(d+|*)(/d+)?){4}$'
replicas:
type: integer
minimum: 1
maximum: 10
scope: Namespaced
names:
plural: crontabs
singular: crontab
kind: CronTab
shortNames:
- ct
ืฉืคึผืขืืขืจ ืืืจ ืงืขื ืขื ืืึทืื ืึท CronTab ืืืื ืขืคึผืขืก ืืื ืืึธืก:
apiVersion: "my.org/v1"
kind: CronTab
metadata:
name: my-cron-object
spec:
cronSpec: "* * * * */5"
image: my-cron-image
replicas: 5
ืื ืื ืืขืจ ืึธืคึผืฆืืข ืคึฟืึทืจ ืขืงืกืืขื ืกืืืืืืื ืืื Kubernetes ืืื ืึทื ืืขืจ ืืขืืืขืืึธืคึผืขืจ ืงืขื ืขื ืฉืจืืึทืื ืืืื ืืืืืขื ืข ืกืืืืืืึทื ืฅ.
ืขืก ืืขื ืขื ืขืืืขืืข ืืืฉืืจืื ืืื ืื ืงืื ืืืึธืก ืืึทืื ืขืก ืืจืื ื ืคึฟืึทืจ ืืขืืืขืืึธืคึผืขืจืก ืฆื ืฉืึทืคึฟื ืืืืขืจ ืืืืืขื ืข ืึธืคึผืขืจืืืืขืจื. ืฆืืืืฉื ืืื -
$ operator-sdk new my-operator --repo github.com/myuser/my-operator
ืืึธืก ืงืจืืืืฅ ืึทืืข ืื ืงืขืกื ืงืึธื ืคึฟืึทืจ ืืืื ืึธืคึผืขืจืึทืืึธืจ, ืึทืจืืึทื ืืขืจืขืื ื YAML ืืขืงืขืก ืืื Golang ืงืึธื:
.
|____cmd
| |____manager
| | |____main.go
|____go.mod
|____deploy
| |____role.yaml
| |____role_binding.yaml
| |____service_account.yaml
| |____operator.yaml
|____tools.go
|____go.sum
|____.gitignore
|____version
| |____version.go
|____build
| |____bin
| | |____user_setup
| | |____entrypoint
| |____Dockerfile
|____pkg
| |____apis
| | |____apis.go
| |____controller
| | |____controller.go
ืืขืจื ืึธื ืืืจ ืงืขื ืขื ืืืืื ืื ืคืืจืืื ืื ืึทืคึผืืก ืืื ืงืึธื ืืจืึธืืืขืจ, ืืื ืืึธืก:
$ operator-sdk add api --api-version=myapp.com/v1alpha1 --kind=MyAppService
$ operator-sdk add controller --api-version=myapp.com/v1alpha1 --kind=MyAppService
ืืขืจื ืึธื, ืืขืกืึธืฃ, ืึทืกืขืืืึทื ืื ืึธืคึผืขืจืึทืืึธืจ ืืื ืฉืืงื ืขืก ืฆื ืื ืจืขืืืกืืจื ืคืื ืืืื ืงืึทื ืืืื ืขืจ:
$ operator-sdk build your.container.registry/youruser/myapp-operator
ืืืื ืืขืจ ืืขืืืขืืึธืคึผืขืจ ืืืื ืืคืืื ืืขืจ ืงืึธื ืืจืึธื, ืื ืงืขืกื ืงืึธื ืืื Go ืืขืงืขืก ืงืขื ืขื ืืืื ืืฉืืื ืืืฉื. ืคึฟืึทืจ ืืืึทืฉืคึผืื, ืฆื ืืึธืืืคืืฆืืจื ืื ืกืคึผืขืกืืคืืงืก ืคืื ืื ืงืึธื ืืจืึธืืืขืจ, ืืืจ ืงืขื ืขื ืืึทืื ืขื ืืขืจืื ืืขื ืฆื ืืขืจ ืืขืงืข controller.go
.
ืื ืื ืืขืจ ืคึผืจืืืขืงื
$ kubectl kudo install zookeeper
$ kubectl kudo install kafka
ืืื ืืขืืึธืื ืงืึทื ืคืืืืขืจ ืขืก ืืื ืื ืื ืืขืจ ืืึทืคึฟืขื:
$ kubectl kudo install kafka --instance=my-kafka-name
-p ZOOKEEPER_URI=zk-zookeeper-0.zk-hs:2181
-p ZOOKEEPER_PATH=/my-path -p BROKER_CPUS=3000m
-p BROKER_COUNT=5 -p BROKER_MEM=4096m
-p DISK_SIZE=40Gi -p MIN_INSYNC_REPLICAS=3
-p NUM_NETWORK_THREADS=10 -p NUM_IO_THREADS=20
ืืืืขืฉ
ืืื ืื ืืขืฆืืข ืืึธืจื, ืื ืืืืคึผื Kubernetes ืจืืืืกืื ืืขื ืขื ืืจืืืก ืืขืืขืจ ืืืกื ืืืฉืื - ืืึธืก ืืื ืืจืื ืฆื ืคืืจ ืืืืคึผื ืจืืืืกืื ืคึผืขืจ ืืึธืจ. ืื ื ืืืขืจ ืคืื ื ืืึท ืคึฟืขืึดืงืืืื ืืึทืงืขื ืขื ืืื ืืขืืขืจ ืคืื ืืื ืืื ื ืืฉื ืคืึทืจืืื ืขืจื. ืืขืจืฆื, ืขืก ืืขื ืขื ืงืืื ืืืืื ืืขืจ ืคืื ืกืืึธืืื ื ืึทืจืึธืคึผ ืืคืืื ืืื ืื ืฉืืืขืจ ืฆืืื - ืงืืง ืืื ืืืึธืก ืื ืกืืืืึทืฆืืข ืืื ืืืฆื
ื ืื ืงืืืคึผืึทืืืืึทืืื ืืึธืื ืืืจ ืฆื ืืขืจ ืคืืขืงืกืึทืืึทื ืงื ืืื ืึทืคึผืขืจืืืฉืึทื ื ืึทืจืืืขืจ ืคืึทืจืฉืืื ืืืขืจืงืืึธืืื. ืืื ืึทืืืฉืึทื, ืคึผืจืึธืืืจืึทืืขืจื ืืขื ืืกื ืืจืขืกืขืจ ืงืึธื ืืจืึธื ืืืขื ืืืคึผืืืืื ื ืึทืคึผืืึทืงืืืฉืึทื ื ืืืืึทื ืฆื ืคึผืจืึธืืืงืฆืืข.
ืงืืืขืฅ
ืื ืื ืืขืจ ืืืืคึผื ืึทืกืคึผืขืงื ืคืื ืื ืคึผืึธืคึผืืืึทืจืืืขื ืคืื Kubernetes ืืื ืื ืฉืืึทืจืงืืื ืคืื ืืืื ืงืื. ืืื 2015, ืืืขื ืจืืืฉืื ื ืืืขืจืกืืข 1.0, Kubernetes ืืื ืืขืืืขื ืืืฆืืืืข ืืืจื
ืขืก ืืขื ืขื ืืืื ืคืืจืืื ืคืืจืฉืืืขื ืข ืงืืืืืช
ืื ืงืืึธืื ื ืึทืืืืืข ืืืืงืืคึผืขืืืข ืืืื ืืึธืกืฅ CloudNativeCon / KubeCon, ืืืึธืก, ืืื ืืขืจ ืฆืืื ืคืื ืฉืจืืืื, ืืื ืื ืืจืขืกืืข ืึธืคึฟื ืืงืืจ ืืืฆืื ื ืืื ืืขืจ ืืืขืื. ืืืคึผืืงืึทืืื ืืขืืืืื ืืจืื ืืึธื ืึท ืืึธืจ, ืขืก ืืจืขื ืื ืฆืืืึทืืขื ืืืืื ืืขืจ ืคืื ืคึผืจืึธืคืขืกืกืืึธื ืึทืืก ืืืึธืก ืืืืื ืฆื ืคึฟืึทืจืืขืกืขืจื Kubernetes ืืื ืืืื ืืงืึธืืกืืกืืึทื, ืืื ืืขืืื ื ืืื ืืขืจื ืขื ื ืืึท ืคึฟืขืึดืงืืืื ืืืึธืก ืืขืจืฉืืึทื ืขื ืืขืืขืจ ืืจืื ืืืฉืื.
ืืขืจืฆื, Cloud Native Foundation ืืื
ืขื ืืืื ืืืืื ืืื ืื ืงืืืขืจื ืขืืขืก ืืืืื ื ืืฉื ืืขืืืขื ืืืื ืืฆืืื ืืื ืขืก ืืื ืื ืื ืืืืืืืกืืืื ืืืข ืืืืืืื ืืขื ืคืื ืืขืจ ืืื ืฆืขืจ ืืขืืืื ืืข, ืืืื ืืขื ืืฉื ืืืืื ืืื ืฆืืืืืขื, ืืืขืจ ืืืืืืฆืืืืืง ืืึทืืจืืกื ื ืืืข ืื ืืขืงืืืขื ืข ืืื ืื ืคืืจืคืืืง.
ืื ืคืืืืฉืขืจ
ืืืื ืขืจ ืคืื ืื ืืืืคึผื ืืฉืึทืืึทื ืืืฉืื ืืืึธืก ืืขืืืขืืึธืคึผืขืจืก ืืืขืื ืืึธืื ืฆื ืืึทื ืืืขื ืืื ืืื ืืขืจ ืฆืืงืื ืคึฟื ืืื ืื ืคืืืืงืืื ืฆื ืคืึธืงืืก ืืืืฃ ืื ืืขืืึทืืืก ืคืื ืื ืงืึธื ืืื, ืืื ื ืืฉื ืืืืฃ ืื ืื ืคืจืึทืกืืจืึทืงืืฉืขืจ ืืื ืืืึธืก ืขืก ืืืืคื. ืขืก ืืืฅ ืื ืืจืขื ืืก
ืืื ืืขื ืึทืจืืืงื, ืืืจ ืืึธืื ืืืืื ืงืจืึทืฆื ืื ืืืืขืจืคืืึทื ืคืื ืื ืงืจืึทื ื ืฉืืึทื ืคืื ืงืืืขืจื ืขืืขืก - ืืื ืคืึทืงื, ืืึธืก ืืื ื ืึธืจ ืืขืจ ืฉืคึผืืฅ ืคืื ืื ืืืกืืขืจื. Kubernetes ืืืืขืจื ืืึธืื ืคืืืข ืื ืืขืจืข ืจืขืกืืจืกื, ืงืืืคึผืึทืืืืึทืืื ืืื ืงืึทื ืคืืืืขืจืืืฉืึทื ื ืฆื ืืืืขืจ ืืึทืืืึทืืืงืื ื.
ืืงืืจ: www.habr.com