แฐแแ แฐแแแ !
แแแคแฎแฃแแแก แแแแแก แแแแแแ แจแแแแฎแกแแแแ, แ แแ แแแแ แซแแแแแ แแแแแแ แแฃแจแแแแแก
แแกแแแแแแแแ แแแแฎแแ!
แแ แกแขแแขแแแก แแแฌแแ แแก แแ แแก แแฃแแแ แแแขแแแแก แแกแแแ แแแแฎแ.
แแแแขแแแแแ แแแ แแแแฌแงแ แ แแแแ แช แกแแแชแแแแฃแ แ แแแแแแแ แแแแฃแฅแกแแก แแ แแชแแกแแแแก แแแแแแ แแแแกแแแแก; แแแแขแแแแแ แแแ แจแแแแก 2007 แฌแแแแแ
แแแแกแแแแแก, แ แแ แแแแแแแ, แ แแขแแ แแ แแก Kubernetes แแกแ แแแแฃแแแ แฃแแ, แจแแแแชแแแแ แแฃแแแกแฃแฎแแ แ แแแแแแแแ แแแแฎแแแก. แแแแแก แ แแแแก แจแแซแแแก แแแแแแแแแ แแแแ แจแแแแแฎแแแแแ, แ แแแแ แแแแแแแแกแแ แแแแแแแชแแแแ แฌแแ แแแแแแจแ? แ แแแแแ แแแแแแแแแ แก แแชแแแแ, แ แแแแแแแช แแงแแแแแแ แแแกแขแ แฃแแแแขแแแก, แ แแแแแ แแกแแแ แแแฌแแแแแฃแแแ แงแฃแแจแ? แ แแแแแแ แฆแ แฃแแแแก แแแแแแแกแขแ แแขแแ แแ แแฆแแก, แ แแแแแแกแแช แแ แแกแแแ แ แแแแ แแฃแจแแแแก แแแแแแแชแแแแ? แแ แแแแฎแแแแแ แแแกแฃแฎแแแก แแ แกแขแแขแแแจแ แแแแแแฎแแแแแ.
แแแคแ แแกแขแ แฃแฅแขแฃแ แ, แ แแแแ แช YAML
แแกแแคแแแแจแ, แ แแแแแแช แแแฏแแแแแแกแ แแ แจแแค-แแแแ แแฃแแแแแ Kubernetes-แแแ แแแแแแแแ, แแ แ-แแ แแ แงแแแแแแ แแแแ แชแแแแแแแ แแงแ แแแแแกแแแ โแแแคแ แแกแขแ แฃแฅแขแฃแ แแแแ แ แแแแ แช แแแแแแแโ โแแแคแ แแกแขแ แฃแฅแขแฃแ แ, แ แแแแ แช แแแแแชแแแแแโ - แแแแแ แแขแฃแแแ, แ แแแแ แแชแแ YAML. 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 แแแแ แแชแแแแแก แแแ แกแแแก แแแแขแ แแแ. แแก แแแแแแแ แกแแจแฃแแแแแแก แแแซแแแแ แจแแแแแฎแแ แงแแแแ Kubernetes YAML แคแแแแ git แกแแชแแแแแจแ, แแกแ แ แแ แแฅแแแ แจแแแแซแแแแ แแแแแงแฃแ แ แแแแแแแ แแฃแกแขแแ แ แแแแก แแแแฎแแ แชแแแแแ แชแแแแแแแ, แแแ แแแแแแแ แแ แ แ แจแแแชแแแแ. แแก แแ แแแก แแแแ แแชแแแแแก แแแแญแแแ แแแแแแแก แแแแแก แแ แแแแแแแชแแแจแ แแ แแฃแแฏแแแแกแแแก แแแแ แแชแแฃแ แแคแแฅแขแฃแ แแแแก แแแฃแ แแแแแแแแแก แแฆแแแคแฎแแ แแก แแแแ, แแแแกแแแฃแแ แแแแ แแฅ, แกแแแแช แแแแแแจแ แแแแแแแ แฃแแแ แแซแแแแ แกแแญแแ แ แ แแกแฃแ แกแแแ. แแแแแแ แแฃแแแ, แฃแคแ แ แแแแแแ แฎแแแแ 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 แแแแแแแขแแ แ, แแแฃแกแแแฎแกแแแแ แแแแแขแแแแก แแแแแขแ , แแแแแขแแแแก แแแแแแแขแแ แ, แ แแแแแแช แฃแแ แฃแแแแแงแแคแก แแแแขแแฅแกแขแกแฃแกแแคแ แแฎแแแแแก แแแแขแแฅแกแขแ แแฅแแแแ แกแแแฃแจแแ แแแขแแแ แแแ แแ แแซแแแแ แแแแขแแแแแ แก แแแแแแแกแขแ แแขแแ แแก แแ แแแแแแแแแแแ แแแจแแแแแก แกแแจแฃแแแแแแก. แแฃ แแก แกแแญแแ แแ, แแแแฎแแแ แแแแแแก แจแแฃแซแแแแ แแแแแแงแแแแ แแแ แขแแแ แแแแแขแแแแ แแแ , แแแแแแ แแ:
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
แ แแแแแแช แแแขแแแแขแฃแ แแ แฃแแ แฃแแแแแงแแคแก แแแขแแแ แแแแก แแแแแแกแแ แกแแแแแแแแก แแแแกแขแแฃแ แ แแแขแแแ แแแแก แแแแแแกแแ แ แขแ แแคแแแแก แแแแแแแกแแแแ แแแแ แแแแแแแชแแแก แแแแแแแ.
แแแคแแ แแแแแแแแแ
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
แจแแแแแ แจแแแแซแแแแ แแแแแแขแแ แกแแญแแ แ API-แแแ แแ แแแแขแ แแแแ แ, แแกแ:
$ 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 แคแแแแแแจแ boilerplate แแแแ แจแแแซแแแแ แจแแแชแแแแแก. แแแแแแแแแ, แแแแขแ แแแแ แแก แกแแแชแแคแแแแก แจแแกแแชแแแแแแ, แจแแแแซแแแแ แจแแแขแแแแ แชแแแแแแแแแ แคแแแแจแ 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-แแก แซแแ แแแแแ แแแแแจแแแแแแ แแแแแแแก แงแแแแ แ แแแแแแแแ แแแแจแ - แแแฃ แฌแแแแฌแแแจแ แกแแแแแแ แแแฎ แซแแ แแแแ แแแแแชแแแแจแ. แแแแแแฃแ แแแแแแแจแ แแแแแ แแแแ แแฎแแแ แคแฃแแฅแชแแแแแก แ แแแแแแแแ แแ แแชแแ แแแแ. แฃแคแ แ แแแขแแช, แแ แ แแฃแ แแ แแกแแช แแ แจแแแแแแแแก แแแจแแแแ แแ แแ แแก - แแแฎแแ, แ แ แแแแแแแ แแแแแ แแฎแแ
แแฎแแแ แจแแกแแซแแแแแแแแแ แกแแจแฃแแแแแแก แแแซแแแแ แฃแคแ แ แแแฅแแแแแ แแแแฌแงแแ แแแแ แแชแแแแ แกแฎแแแแแกแฎแแ แแแขแแแ แแแแแ. แแแ แแ แแแแกแ, แแ แแแ แแแแกแขแแแ แกแแ แแแแแแแแ แฃแคแ แ แแแแ แแแแขแ แแแแ แแแแแแแชแแแแแก แฃแจแฃแแแแ แฌแแ แแแแแแจแ แแแแแแแแแแกแแก.
Community
Kubernetes-แแก แแแแฃแแแ แแแแก แแแแแ แแ แแ แแแแแแ แ แแกแแแฅแขแแ แแแกแ แกแแแแแแแแแแแก แกแแซแแแแ แ. 2015 แฌแแแก, 1.0 แแแ แกแแแก แแแฆแฌแแแแก แจแแแแแ, Kubernetes แแแคแแแแแกแแแฃแแ แแงแ
แแกแแแ แแ แแก แกแฎแแแแแกแฎแแ แแแแแแ
Cloud Native Foundation แแกแแแ แแแกแแแแซแแแแก CloudNativeCon/KubeCon-แก, แ แแแแแแช แฌแแ แแก แแแแแแขแแกแแแแก แแ แแก แแกแแคแแแแจแ แงแแแแแแ แแแแ แฆแแ แแแแแก แแแแคแแ แแแชแแ. แ แแแแ แช แฌแแกแ, แฌแแแแฌแแแจแ แกแแแฏแแ แขแแ แแแแ, แแก แแแ แแแแแแแก แแแแกแแแแ แแ แแคแแกแแแแแแก, แ แแแแแแแช แกแฃแ แ Kubernetes-แแก แแ แแแกแ แแแแกแแกแขแแแแก แแแฃแแฏแแแแกแแแ, แแกแแแ แแฎแแแ แคแฃแแฅแชแแแแแก แกแฌแแแแ, แ แแแแแแแช แงแแแแ แกแแ แแแแจแ แฉแแแแแ.
แฃแคแ แ แแแขแแช, Cloud Native Foundation-แก แแฅแแก
แแ แแแแแก, แแ แแฏแแ แ, แ แแ Kubernetes แแ แแฅแแแแแแ แแกแแแ แฌแแ แแแขแแแฃแแ, แ แแแแ แช แแก แแ แแก แแแแแ แกแแแแแแแแแแแก แจแแแแแแฃแแ แซแแแแกแฎแแแแแก แแแ แแจแ, แกแแแแช แฎแแแฎแ แแ แแแ แแงแ แแก แแแแก, แแแแ แแ แแแแแแ แแฃแแแ แแแแกแแแแแแ แแฎแแแฌแแแฃแแแแก.
แแแแแแแแ
แแ แ-แแ แแ แแแแแแ แ แแแแแฌแแแแ, แ แแแแแแแแแช แแแแแแแแแ แแแก แแแแแแแแจแ แแแฃแฌแแแ แแแแแแแแแแ, แแ แแก แแแแ แแแแแก แแแขแแแแแแ แคแแแฃแกแแ แแแแก แจแแกแแซแแแแแแแ แแ แแ แ แแแคแ แแกแขแ แฃแฅแขแฃแ แแแ, แ แแแแแจแแช แแก แแฃแจแแแแก. แแก แแแแแงแแคแแแแแก แแ แขแแแแแแชแแแแก
แแ แกแขแแขแแแจแ แฉแแแ แแฎแแแแ แแฃแแแ แแแขแแกแแก แแแแแแแแแแแ แแแแแแแ แแแแแก แแแแแแแ แ แแแแคแฎแแแแ - แคแแฅแขแแแ แแแแ, แแก แแฎแแแแ แแแกแแแ แแแก แแฌแแแ แแแแแ. Kubernetes แแแแฎแแแ แแแแแแก แแฅแแ แกแฎแแ แแ แแแแแ แ แแกแฃแ แกแ, แจแแกแแซแแแแแแแแแ แแ แแแแคแแแฃแ แแชแแ.
แฌแงแแ แ: www.habr.com