เบเบงเบเปเบฎเบปเบฒเบเบฐเปเบเป Gitlab CI เปเบฅเบฐเบเบนเปเบกเบท GitOps เปเบเบทเปเบญเบเบฐเบเบดเบเบฑเบเปเบฅเบฐเบเปเบฒเปเบเป Canary deployment เปเบ Kubernetes
เบเบปเบเบเบงเบฒเบกเบเบฒเบเบเบธเบเบเบตเป:
- (เบซเบปเบงโเบเปเปโเบเบตเป)
เบเบฒเบเบเบณเปเบเป Canary เปเบเบเปเบเป ArgoCI - เบเบฒเบเบเบณเปเบเป Canary เปเบเบเปเบเป Istio
- เบเบฒเบเบเบณเปเบเป Canary เปเบเบเปเบเป Jenkins-X Istio Flagger
เบเบงเบเปเบฎเบปเบฒเบเบฐเบเบฐเบเบดเบเบฑเบเบเบฒเบเบเบณเปเบเป Canary เบเปเบงเบเบเบปเบเปเบญเบเบเปเบฒเบ GitOps เปเบฅเบฐเบชเปเบฒเบ/เปเบเปเปเบเบเบฑเบเบเบฐเบเบฒเบเบญเบ Kubernetes เบซเบผเบฑเบ. เบเบปเบเบเบงเบฒเบกเบเบตเปเบกเบตเบเบธเบเบเบฐเบชเบปเบเบเบปเปเบเบเปเบชเปเบฒเบฅเบฑเบเบเบฒเบเปเบเบฐเบเปเบฒ เบเบฑเบเบงเบดเบเบตเบเบฒเบเบเบฐเบเบดเบเบฑเบเบเบฒเบเปเบเปเบเบฒเบเปเบ Kubernetes Canary, เปเบเบทเปเบญเบเบเบฒเบเบงเปเบฒเบกเบตเบงเบดเบเบตเบเบฒเบเบญเบฑเบเบเบฐเปเบเบกเบฑเบเบเบตเปเบกเบตเบเบฐเบชเบดเบเบเบดเบเบฒเบเบซเบผเบฒเบเบเบถเปเบ, เปเบเบดเปเบเบเบงเบเปเบฎเบปเบฒเบเบฐเบเบดเบเบฒเบฅเบฐเบเบฒเปเบเบเบปเบเบเบงเบฒเบกเบเปเปเปเบเบเบตเป.
เบเบฒเบเบเบณเปเบเป Canary
เบเปเบงเบเบเบธเบเบเบฐเบชเบฒเบ Canary, เบเบฒเบเบเบฑเบเบเบธเบเปเบกเปเบเปเบเปเบเบฑเปเบเบเปเบฒเบญเบดเบเบเบฑเบเบเบนเปเปเบเปเบเบธเปเบกเบเปเบญเบเปเบเบปเปเบฒเบเบฑเปเบ. เปเบเบเบเปเบฒเบเบเบฒเบเบเบดเบเบเบฒเบก, เบเปเปเบกเบนเบเบเบฑเบเบเบถเบ, เบเบฒเบเบเบปเบเบชเบญเบเบเปเบงเบเบกเบท, เบซเบผเบทเบเปเบญเบเบเบฒเบเบเบฒเบเบเบญเบเปเบเปเบญเบทเปเบเป, เบเบฒเบเบเปเบญเบเปเบเปเบเบทเบเบเบปเบเบชเบญเบเบเปเบญเบเบเบตเปเบเบฐเบเปเบญเบเบญเบญเบเบกเบฒเปเบซเปเบเบนเปเปเบเปเบเบฑเบเบซเบกเบปเบ.
เบเบฒเบเบเบณเปเบเป Kubernetes (เบเบฒเบเบญเบฑเบเปเบเบเปเบเบเบกเปเบงเบ)
เบเบธเบเบเบฐเบชเบฒเบเปเบฅเบตเปเบกเบเบปเปเบเบชเปเบฒเบฅเบฑเบ Kubernetes Deployment เปเบกเปเบ rolling-update, เบเปเบญเบเบเบตเปเบกเบตเบเปเบฒเบเบงเบ pods เบเบตเปเปเบเปเบเบญเบเปเบเปเบเบทเบเปเบเบตเบเบเบปเบงเบเปเบงเบเบฎเบนเบเบเบฒเบเบฎเบธเปเบเปเบซเบกเป. เบเปเบฒเบเบงเบเบกเบฑเบเบเบทเบเบชเปเบฒเบเบเบทเปเบเปเบเบเบเปเปเบกเบตเบเบฑเบเบซเบฒ, เบเบฑเบเบเบตเปเบกเบตเบฎเบนเบเบเบฒเบเปเบเบปเปเบฒเบเบทเบเบขเบธเบเปเบเบปเบฒ, เปเบฅเบฐเบเบฑเบเปเบซเบกเปเบเปเปเบเบทเบเบชเปเบฒเบเบเบทเปเบเปเบเบเบฐเบซเบเบฒเบ.
GitOps
เบเบงเบเปเบฎเบปเบฒเปเบเป GitOps เปเบเบเบปเบงเบขเปเบฒเบเบเบตเปเปเบเบฒเบฐเบงเปเบฒเบเบงเบเปเบฎเบปเบฒ:
- เบเบฒเบเบเปเบฒเปเบเป Git เปเบเบฑเบเปเบซเบผเปเบเบเบฝเบงเบเบญเบเบเบงเบฒเบกเบเบดเบ
- เบเบงเบเปเบฎเบปเบฒเปเบเป Git Operations เบชเปเบฒเบฅเบฑเบเบเบฒเบเบเปเปเบชเปเบฒเบเปเบฅเบฐเบเบฒเบเบเปเบฒเปเบเป (เบเปเปเบกเบตเบเปเบฒเบชเบฑเปเบเบญเบทเปเบเบเบญเบเปเบซเบเบทเบญเบเบฒเบ git tag / merge เปเบกเปเบเบเปเบฒเปเบเบฑเบ)
เบเบปเบงเบขเปเบฒเบ:
เบเปเปเบซเปเบเบฐเบเบดเบเบฑเบเบเบฒเบเบเบฐเบเบดเบเบฑเบเบเบตเปเบเบต - เบกเบตเบเปเบญเบเปเบเบฑเบเบกเปเบฝเบเบซเบเบถเปเบเบชเปเบฒเบฅเบฑเบเบฅเบฐเบซเบฑเบเบเปเบฒเบฎเปเบญเบเบชเบฐเบซเบกเบฑเบเปเบฅเบฐเบซเบเบถเปเบเบชเปเบฒเบฅเบฑเบเปเบเบเบชเปเบฒเบเบเบทเปเบเบเบฒเบ.
เบเบฑเบโเปเบเบฑเบโเบเปเปโเบกเบนเบโเบเปเบฒโเบฎเปเบญเบโเบชเบฐโเบซเบกเบฑเบโ
เบเบตเปเปเบกเปเบ API Python+Flask เบเบตเปเบเปเบฒเบเบเบฒเบเบซเบผเบฒเบเบเบตเปเบชเบปเปเบเบเบปเบเบเบญเบเปเบเบเปเบเบฑเบ JSON. เบเบงเบเปเบฎเบปเบฒเบเบฐเบชเปเบฒเบเบเบธเบเบเปเบฒเบ GitlabCI เปเบฅเบฐเบเบธเบเบเบฑเบเปเบซเปเบเบปเบเปเบเปเบฎเบฑเบเปเบเบซเบฒ Gitlab Registry. เปเบโเบเบฒเบโเบเบปเบโเบเบฐโเบเบฝเบโเบเบงเบโเปเบฎเบปเบฒโเบกเบตโเบชเบญเบโเบชเบฐโเบเบฑเบโเบญเบญเบโเบเบตเปโเปเบเบโเบเปเบฒเบโเบเบฑเบโ:
wuestkamp/k8s-deployment-example-app:v1
wuestkamp/k8s-deployment-example-app:v2
เบเบงเบฒเบกเปเบเบเบเปเบฒเบเบเบฝเบเปเบเปเบฅเบฐเบซเบงเปเบฒเบเบเบงเบเบกเบฑเบเปเบกเปเบเบเบฒเบเบเปเบฝเบเปเบเบเปเบเปเบเบฅเป JSON เบเบตเปเบชเบปเปเบเบเบทเบ. เบเบงเบโเปเบฎเบปเบฒโเบเปเบฒโเปเบเปโเบเปเบฒโเบฎเปเบญเบโเบชเบฐโเบซเบกเบฑเบโเบเบตเปโเปเบเบทเปเบญโเบชเบฐโเปเบเบโเปเบซเปโเปเบซเบฑเบโเปเบเปโเบขเปเบฒเบโเบเปเบฒเบโเบเบฒเบโเบเบตเปโเปเบเบฑเบโเปเบโเปเบเปโเบงเปเบฒโเบชเบฐโเบเบฑเบโเบเบตเปโเบเบงเบโเปเบฎเบปเบฒโเบเปเบฒโเบฅเบฑเบโเบชเบทเปโเบชเบฒเบโเบเบฑเบโ.
เบเบฑเบโเบเบทเปเบโเบเบฒเบโเปเบเบโเบฅเปเบฒเบโ
เปเบ turnip เบเบตเปเบเบงเบเปเบฎเบปเบฒเบเบฐเบเปเบฒเปเบเปเบเปเบฒเบ GitlabCI เบเบฑเบ Kubernetes, .gitlab-ci.yml
เปเบเบดเปเบเบเบทเบงเปเบฒเบเบตเป:
image: traherom/kustomize-docker
before_script:
- printenv
- kubectl version
stages:
- deploy
deploy test:
stage: deploy
before_script:
- echo $KUBECONFIG
script:
- kubectl get all
- kubectl apply -f i/k8s
only:
- master
เปเบเบทเปเบญเปเบฅเปเบเบกเบฑเบเบเปเบงเบเบเบปเบงเบเปเบฒเบเปเบญเบ, เบเปเบฒเบเบเบฐเบเปเบญเบเบกเบตเบเบธเปเบก, เบเปเบฒเบเบชเบฒเบกเบฒเบเบเปเบฒเปเบเป Gcloud:
gcloud container clusters create canary --num-nodes 3 --zone europe-west3-b
gcloud compute firewall-rules create incoming-80 --allow tcp:80
เบเปเบฒเบเบเปเบฒเปเบเบฑเบเบเปเบญเบเบชเปเบญเบก KUBECONFIG
เปเบ GitlabCI, เปเบเบดเปเบเบเบฐเบเบฐเบเบญเบเบเปเบงเบ config เบชเปเบฒเบฅเบฑเบเบเบฒเบเปเบเบปเปเบฒเปเบเบดเบ kubectl
เบเบฑเบเบเบธเปเบกเบเบญเบเบเปเบฒเบ.
เบเปเบฒเบเบชเบฒเบกเบฒเบเบญเปเบฒเบเบเปเบฝเบงเบเบฑเบเบงเบดเบเบตเบเบฒเบเบฎเบฑเบเบเปเปเบกเบนเบเบเบฐเบเปเบฒเบเบปเบงเบชเปเบฒเบฅเบฑเบเบเบธเปเบก (Gcloud)
เบเบทเปเบเบเบฒเบเปเบเบเบฅเปเบฒเบ Yaml
เปเบเบเบฑเบเปเบเบฑเบเบกเปเบฝเบเปเบเบเบฅเปเบฒเบเบเบงเบเปเบฎเบปเบฒเบกเบตเบเปเบฅเบดเบเบฒเบ:
apiVersion: v1
kind: Service
metadata:
labels:
id: app
name: app
spec:
ports:
- port: 80
protocol: TCP
targetPort: 5000
selector:
id: app
type: LoadBalancer
เปเบฅเบฐโเบเบฒเบโเบเปเบฒโเปเบเปโเปเบโ deploy.yaml
:
apiVersion: apps/v1
kind: Deployment
metadata:
name: app
spec:
replicas: 10
selector:
matchLabels:
id: app
type: main
template:
metadata:
labels:
id: app
type: main
spec:
containers:
- image: registry.gitlab.com/wuestkamp/k8s-deployment-example-app:v1
name: app
resources:
limits:
cpu: 100m
memory: 100Mi
เปเบฅเบฐโเบเบฒเบโเบเปเบฒโเปเบเปโเบญเบตเบโเบเบฐโเบเบฒเบโเบซเบเบถเปเบโเปเบ deploy-canary.yaml
:
kind: Deployment
metadata:
name: app-canary
spec:
replicas: 0
selector:
matchLabels:
id: app
type: canary
template:
metadata:
labels:
id: app
type: canary
spec:
containers:
- image: registry.gitlab.com/wuestkamp/k8s-deployment-example-app:v2
name: app
resources:
limits:
cpu: 100m
memory: 100Mi
เปเบซเปเบชเบฑเบเปเบเบเบงเปเบฒ app-deploy เบเปเปเบกเบต replicas เปเบเบเปเบฒเบเบปเบเปเบเบทเปเบญ.
เบเบฐเบเบดเบเบฑเบเบเบฒเบเบเบฑเบเบเบฑเปเบเบเบฐเบเบดเบเบฑเบเปเบเบทเปเบญเบเบเบปเปเบ
เปเบเบทเปเบญเปเบฅเบตเปเบกเบเบปเปเบเบเบฒเบเปเบเปเบเบฒเบเปเบเบทเปเบญเบเบเบปเปเบ, เบเปเบฒเบเบชเบฒเบกเบฒเบเปเบฅเบตเปเบกเบเบปเปเบเบเปเป GitlabCI เบเปเบงเบเบเบปเบเปเบญเบเปเบเบชเบฒเบเบฒเปเบกเปเบเบปเบ. เบซเบผเบฑเบโเบเบฒเบโเบเบฑเปเบ kubectl
เบเบงเบโเบเบฐโเบญเบญเบโเปเบเบโเบเปเปโเปเบโเบเบตเปโ:
เบเบงเบเปเบฎเบปเบฒเปเบเบดเปเบ app
deployment with 10 replicas and app-canary with 0. เบเบญเบเบเบฒเบเบเบตเปเบเบฑเบเบกเบต LoadBalancer เบเบตเปเบเบงเบเปเบฎเบปเบฒเบชเบฒเบกเบฒเบเปเบเบปเปเบฒเปเบเบดเบเปเบเปเปเบเบเบเปเบฒเบ. curl
เบเปเบฒเบ IP เบเบฒเบเบเบญเบ:
while true; do curl -s 35.198.149.232 | grep label; sleep 0.1; done
เบเบงเบเปเบฎเบปเบฒเปเบซเบฑเบเบงเปเบฒเบเปเบฒเบฎเปเบญเบเบชเบฐเบซเบกเบฑเบเบเบฒเบเบเบปเบเบชเบญเบเบเบญเบเบเบงเบเปเบฎเบปเบฒเบเบฝเบเปเบเปเบเบฑเบเบเบทเบเบกเบฒ "v1".
เบเบฒเบโเบเบฐโเบเบดโเบเบฑเบโเบเบฒเบโเบเปเบฒโเปเบเป Canaryโ
เบเบฑเปเบเบเบญเบเบเบต 1: เบเปเบญเบเปเบงเบตเบเบฑเบเปเบซเบกเปเบชเปเบฒเบฅเบฑเบเบเบนเปเปเบเปเบเบฒเบเบเบปเบ
เบเบงเบเปเบฎเบปเบฒเบเปเบฒเบเบปเบเบเปเบฒเบเบงเบ replicas เปเบเบฑเบ 1 เปเบเปเบเบฅเป deploy-canary.yaml เปเบฅเบฐเบฎเบนเบเบเบฒเบเบชเบฐเบเบฑเบเปเบซเบกเป:
kind: Deployment
metadata:
name: app-canary
spec:
replicas: 1
selector:
matchLabels:
id: app
type: canary
template:
metadata:
labels:
id: app
type: canary
spec:
containers:
- image: registry.gitlab.com/wuestkamp/k8s-deployment-example-app:v2
name: app
resources:
limits:
cpu: 100m
memory: 100Mi
เปเบเปเบเบฅเป deploy.yaml
เบเบงเบโเปเบฎเบปเบฒโเปเบเปโเบเปเบฝเบโเปเบเบโเบเปเบฒโเบเบงเบโเบเบญเบ replicas เบเบฑเบ 9โ:
kind: Deployment
metadata:
name: app
spec:
replicas: 9
selector:
matchLabels:
id: app
...
เบเบงเบเปเบฎเบปเบฒเบเบนเปเบเบฒเบเบเปเบฝเบเปเบเบเปเบซเบผเบปเปเบฒเบเบตเปเปเบเบซเบฒเบเปเบญเบเปเบเบฑเบเบกเปเบฝเบเบเบตเปเบเบฒเบเบเบดเบเบเบฑเปเบเบเบฐเปเบฅเบตเปเบกเบเบปเปเบ (เบเปเบฒเบ GitlabCI) เปเบฅเบฐเปเบเบดเปเบเบเบปเบเปเบเปเบฎเบฑเบ:
เบเบฒเบเบเปเบฅเบดเบเบฒเบเบเบญเบเบเบงเบเปเบฎเบปเบฒเบเบฐเบเบตเปเปเบซเปเปเบซเบฑเบเบเบฑเบเบชเบญเบเบเบฒเบเบเปเบฒเปเบเป, เปเบเบทเปเบญเบเบเบฒเบเบงเปเบฒเบเบฑเบเบชเบญเบเบกเบตเบเบปเบงเปเบฅเบทเบญเบ app. เปเบเบทเปเบญเบเบเบฒเบเบเบฒเบเบชเบธเปเบกเปเบฅเบตเปเบกเบเบปเปเบเบเบญเบ Kubernetes, เบเบงเบเปเบฎเบปเบฒเบเบงเบเบเบฐเปเบซเบฑเบเบเบฒเบเบเบญเบเปเบเปเบเบตเปเปเบเบเบเปเบฒเบเบเบฑเบเบชเปเบฒเบฅเบฑเบ ~10% เบเบญเบเบเปเบฒเบฎเปเบญเบเบเป:
เบชเบฐเบเบฒเบเบฐเบเบฐเบเบธเบเบฑเบเบเบญเบเบเปเบฒเบฎเปเบญเบเบชเบฐเบซเบกเบฑเบเบเบญเบเบเบงเบเปเบฎเบปเบฒ (GitOps, เปเบญเบปเบฒเบกเบฒเบเบฒเบ Git เปเบเบฑเบเปเบซเบผเปเบเบเบงเบฒเบกเบเบดเบเบเบฝเบง) เปเบกเปเบเบเบฒเบเบกเบตเบชเบญเบเบเบฒเบเบเปเบฒเปเบเปเบเบตเปเบกเบต replicas เบเบฒเบเปเบเบทเปเบญเบเปเบซเบง, เบซเบเบถเปเบเบชเปเบฒเบฅเบฑเบเปเบเปเบฅเบฐเบชเบฐเบเบฑเบ.
~10% เบเบญเบโเบเบนเปโเปเบเปโเบเบฒเบโเปเบเบฑเบโเบเบงเบฒเบกโเบเบธเปเบโเปเบเบตเบโเบเบฑเบโเบชเบฐโเบเบฑเบโเปเบซเบกเปโเปเบฅเบฐโเบเปเปโเบเบฑเปเบโเปเบโเบเบปเบโเบชเบญเบโเบกเบฑเบโ. เปเบเบเบฑเบเบเบธเบเบฑเบเปเบกเปเบเปเบงเบฅเบฒเบเบตเปเบเบฐเบเบงเบเบชเบญเบเบเบงเบฒเบกเบเบดเบเบเบฒเบเปเบเบเบฑเบเบเบถเบเปเบฅเบฐเบเบฒเบเบเบดเบเบเบฒเบกเบเปเปเบกเบนเบเปเบเบทเปเบญเบเบญเบเบซเบฒเบเบฑเบเบซเบฒ.
เบเบฑเปเบโเบเบญเบโเบเบต 2โ: เบเปเบญเบโเบชเบฐโเบเบฑเบโเปเบซเบกเปโเบเบฑเบโเบเบนเปโเปเบเปโเบเบฑเบโเบซเบกเบปเบโ
เบเบงเบโเปเบฎเบปเบฒโเปเบเปโเบเบฑเบโเบชเบดเบโเปเบโเบงเปเบฒโเบเบธเบโเบชเบดเปเบโเบเบธเบโเบขเปเบฒเบโเปเบเบฑเบโเปเบโเบเปเบงเบโเบเบตโเปเบฅเบฐโเปเบโเบเบฑเบโเบเบธโเบเบฑเบโเบเบงเบโเปเบฎเบปเบฒโเบเปเบฒโเปเบเบฑเบโเบเปเบญเบโเปเบเปโเบญเบญเบโเบชเบฐโเบเบฑเบโเปเบซเบกเปโเปเบซเปโเบเบนเปโเบเบปเบกโเปเบเปโเบเบฑเบโเบซเบกเบปเบโ. เปเบเบทเปเบญเปเบฎเบฑเบเบชเบดเปเบเบเบตเป, เบเบงเบเปเบฎเบปเบฒเบเบฝเบเปเบเปเบเบฑเบเบเบธเบ deploy.yaml
เบเบฒเบเบเบดเบเบเบฑเปเบเบชเบฐเบเบฑเบเปเบซเบกเปเบเบญเบเบฎเบนเบเบเบฒเบเปเบฅเบฐเบเปเบฒเบเบงเบเบเบญเบ replicas เปเบเบปเปเบฒเบเบฑเบ 10. เปเบ deploy-canary.yaml
เบเบงเบเปเบฎเบปเบฒเบเปเบฒเบเบปเบเบเปเบฒเบเบงเบเบเบญเบ replicas เบเบฑเบเบเบทเบเปเบเบเปเบญเบ 0. เบซเบผเบฑเบเบเบฒเบ deployment, เบเบปเบเปเบเปเบฎเบฑเบเบเบฐเปเบเบฑเบเบเบฑเปเบเบเปเปเปเบเบเบตเป:
เปเบเบทเปเบญเบชเบฐเบซเบผเบธเบ
เบชเบณ เบฅเบฑเบเบเปเบญเบ, เบเบฒเบเปเบฎเบฑเบเบงเบฝเบเบเบฒเบ เบเบณ เปเบเปเบเปเบงเบเบเบปเบเปเบญเบเบเปเบงเบเบงเบดเบเบตเบเบตเปเบเบฐเบเปเบงเบเปเบซเปเปเบเบปเปเบฒเปเบเบงเปเบฒเบกเบฑเบเบชเบฒเบกเบฒเบเบเบฑเปเบเบเปเบฒเปเบเปเบเปเบฒเบเปเบเบเปเบเป k8s. เปเบเบทเปเบญเบเบเบฒเบ Kubernetes เบญเบฐเบเบธเบเบฒเบเปเบซเปเบเปเบฒเบเบญเบฑเบเปเบเบเบเบธเบเบขเปเบฒเบเบเปเบฒเบ API, เบเบฑเปเบเบเบญเบเปเบซเบผเบปเปเบฒเบเบตเปเบชเบฒเบกเบฒเบเบญเบฑเบเบเบฐเปเบเบกเบฑเบเบเปเบฒเบเบชเบฐเบเบฃเบดเบ.
เบชเบดเปเบเบญเบทเปเบเบเบตเปเบเปเบญเบเปเบเปเบฎเบฑเบเบเบฒเบเบเบฐเบเบดเบเบฑเบเปเบกเปเบเบเบธเบเปเบเบปเปเบฒเบเบญเบเบเบฒเบเบเบปเบเบชเบญเบ (LoadBalancer เบซเบผเบทเบเปเบฒเบ Ingress) เปเบเบเบเปเบฒเบเบเบตเปเบกเบตเบเบฝเบเปเบเปเบชเบฐเบเบฑเบเปเบซเบกเปเปเบเบปเปเบฒเบเบฑเปเบเบเบตเปเบชเบฒเบกเบฒเบเปเบเบปเปเบฒเปเบเบดเบเปเบเป. เบกเบฑเบเบชเบฒเบกเบฒเบเบเบทเบเบเปเบฒเปเบเปเบชเปเบฒเบฅเบฑเบเบเบฒเบเบเบญเบเบซเบฒเบเบนเปเบกเบท.
เปเบเบเบปเบเบเบงเบฒเบกเปเบเบญเบฐเบเบฒเบเบปเบ, เบเบงเบเปเบฎเบปเบฒเบเบฐเบเบงเบเปเบเบดเปเบเบงเบดเบเบตเปเบเปเปเบเบญเบฑเบเบเบฐเปเบเบกเบฑเบเบญเบทเปเบเปเบเบตเปเบเบฐเบเบดเบเบฑเบเบชเปเบงเบเปเบซเบเปเบเบญเบเบชเบดเปเบเบเบตเปเบเบงเบเปเบฎเบปเบฒเปเบเปเปเบฎเบฑเบ.
เบญเปเบฒเบเบเบปเบเบเบงเบฒเบกเบญเบทเปเบเปเปเบ blog เบเบญเบเบเบงเบเปเบฎเบปเบฒ:
เบเบฒเบเปเบเบทเปเบญเบเบเปเบฒเบเบเบฒเบ ClickHouse เปเบเบเบเปเปเบกเบตเบเบฒเบเบญเบฐเบเบธเบเบฒเบเปเบเบซเบฒ ClickHouse เบเปเบงเบเบเบฒเบเบญเบฐเบเบธเบเบฒเบเบเปเบฒเปเบเบชเบนเปเบซเบเบฑเบ? เบเบฒเบเบเปเปเบชเปเบฒเบเปเบกเบเบนเบเปเบเบเปเบเบทเปเบญเบเปเบซเบงเบชเปเบฒเบฅเบฑเบ Nginx เบญเบฑเบเปเบเบ nxs-build-tools - เบเบนเปเบเปเบงเบเปเบเบเบฒเบเบชเปเบฒเบเปเบเบฑเบเปเบเบฑเบ deb เปเบฅเบฐ rpm เบเบฒเบเปเบเบฐเบเปเบฒเบเบฒเบเบญเบฐเบเบธเบเบฒเบ Kubernetes เบเบญเบเบเบปเบเบชเบธเบ Hashicorp เบชเบดเปเบเบเบตเปเบเบงเบเปเบฎเบปเบฒเบเปเบญเบเบเบฐเปเบเบตเบเปเบเปเบงเบฅเบฒเบเบตเปเปเบเป Csync2 utility Telegram bot เบชเปเบฒเบฅเบฑเบ Redmine. เบงเบดเบเบตเบเบฒเบเปเบฎเบฑเบเปเบซเปเบเบตเบงเบดเบเบเปเบฒเบเบชเปเบฒเบฅเบฑเบเบเบปเบงเบเปเบฒเบเปเบญเบเปเบฅเบฐเบเบปเบเบญเบทเปเบ
เปเบซเบผเปเบเบเปเปเบกเบนเบ: www.habr.com