ืืืฉืจ ืืื ืื ืชืืืื CI/CD ืืืืฆืขืืช Kubernetes, ืืขืืชืื ื ืืฆืจืช ืืขืื ืฉื ืืืกืจ ืืชืืื ืืื ืืจืืฉืืช ืืชืฉืชืืช ืืืืฉื ืืืืคืืืงืฆืื ืืืืขืืจืช ืืืื. ืืคืจื, ืืฉืื ืื ืืืช ืืืคืืืงืฆืื ืืฉืื ืืงืื ืืื ืชืืื ื ืฉืชืฉืืฉ ื ืื ืกืืืืืช ืืืฉืืืืืช ืคืจืืืงืืื. ืขืงืจืื ืื ืขืืื ืืืกืืก ืื ืืื
ืขื ืืืช, ืื ืชืจืื ืืฃ ืืื ืืืฆืืื ืฉืืื ืงืื ืืืชืจ ืืฉืชืืฉ ืืืกืืจืช ืืืื ื, ืฉืืฉืืืืฉ ืื ืืืื ืืืืืืช ืขื ืืืฉื ืืฉืืืืฉ ืื. ืืืขืื ืฉื"ืกืืืื ืจืืืื" ืงื ืืืชืืืื ืขื ืื, ื-Kubernetes ืืืชื ืืืืช ืืื ืืืืื ืืืคืื ืืืขืื, ืืืืืื ืืฉืืชื ื ืชืงื ืื ืืคืขื ืืจืืฉืื ื. ืืขืื ืฉืืื ืืืฆืืชื ืืืื ืืืืฆืื ืคืชืจืื ืืช ืชืฉืชืืช ืฉื ืจืืื ืืจืืจืื ืื ืืคืืื ืืืืื ืืืื ืจืืฉืื... ืืฉืื ืืืืืจ ืฉืจืื ืืืฆืืื ืืืืืื ืืฆืจืืืื ืืืืคืชืจ ืืืืื ื ืืืจืืืืืช.
ืืืื ื ืกืชืื ืขื ืคืชืจืื ืืช ืืขืงืคืื ืคืืคืืืจืืื ืืืืกืื ืงืืฆืื ืฉืขืืืืื ืืืืืื ืืชืืฆืืืช ืื ื ืขืืืืช ืืขืช ืืคืขืืช ืืฉืืื, ืืื ื ืฆืืืข ืขื ื ืชืื ื ืืื ืืืชืจ.
ืืืกืื ืกืืื
ืืฉื ืืืืฉื, ืฉืงืื ืืืฉืื ืืื ืืจื ื ืฉืืฉืชืืฉ ืืกืื ืฉื ืืืืื ืกืืื ืืื ืืืฉืื ืกื ืฉื ืชืืื ืืช, ืกืื ืื ืืช ืืืืจืื ืืืจืื. ืืืืืื, ืืืกืืจืช Yii PHP ืืฉ ืื ืื ื ืืกืื ืืืื ื ืฉืืืฆืจ ืฉืืืช ืกืคืจืืืช ืืืืืืืื. ืืืชืื ืืื, ืืคืื ืืื ืงืืืฆื ืฉื ื ืชืืืื ืืืชืจ ืืกืืื ืฉืืืืื ืืื ื ืืฆืืืืื ืื ืขื ืื (ืืืืจ ื ืขืฉื ืืืื ืกืืืืช - ืืืฉื, ืืื ืืืื ืืคืืืืืืช ืืืฉืจ ืืกืคืจ ืจืืืืื ืืฉืชืืฉืื ืืืืชื ืืฉืื). ืื, ืืืืฅ ืืงืืคืกื, ืืคืขื ืืจืืฉืื ื ืฉืืชื ื ืืืฉ ืืืืืื ืืฉืืื ืืื ืืจื ื, ื ืืฆืจืื ืงืืฆืื ืกืืืืื (ืืืขืฉื, ืืขืชืื ืงืจืืืืช ืงืืฉืืจืื ืกืืืืืื, ืื ืขื ืื ืืืืฉื) ืืคืืจืกืื ืขื ืกืคืจืืืช ืฉืืจืฉ ืืฉืืชืคืช ืืืืืืืช ืืคืจืืกื ืื:
-
webroot/assets/2072c2df/css/โฆ
-
webroot/assets/2072c2df/images/โฆ
-
webroot/assets/2072c2df/js/โฆ
ืื ืื ืืืืจ ืืืื ืืื ืฉื ืืฉืืื?
ืืืืืื ืืคืฉืืื ืืืืชืจ
ื ืืงื ืืงืจื ื ืคืืฅ ืืืื, ืืืฉืจ ืืคื ื PHP ืงืืืืช nginx ืืื ืืืคืืฅ ื ืชืื ืื ืกืืืืื ืืืขืื ืืงืฉืืช ืคืฉืืืืช. ืืืจื ืืงืื ืืืืชืจ - ืคึผึฐืจึดืืกึธื ืขื ืฉื ื ืืืืืื:
apiVersion: apps/v1
kind: Deployment
metadata:
name: site
spec:
selector:
matchLabels:
component: backend
template:
metadata:
labels:
component: backend
spec:
volumes:
- name: nginx-config
configMap:
name: nginx-configmap
containers:
- name: php
image: own-image-with-php-backend:v1.0
command: ["/usr/local/sbin/php-fpm","-F"]
workingDir: /var/www
- name: nginx
image: nginx:1.16.0
command: ["/usr/sbin/nginx", "-g", "daemon off;"]
volumeMounts:
- name: nginx-config
mountPath: /etc/nginx/conf.d/default.conf
subPath: nginx.conf
ืืฆืืจื ืคืฉืืื, ืืชืฆืืจื ืฉื nginx ืืกืชืืืช ืืืืจืื ืืืืื:
apiVersion: v1
kind: ConfigMap
metadata:
name: "nginx-configmap"
data:
nginx.conf: |
server {
listen 80;
server_name _;
charset utf-8;
root /var/www;
access_log /dev/stdout;
error_log /dev/stderr;
location / {
index index.php;
try_files $uri $uri/ /index.php?$args;
}
location ~ .php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
include fastcgi_params;
}
}
ืืืฉืจ ืืชื ื ืืืฉ ืืจืืฉืื ื ืืืชืจ, ื ืืกืื ืืืคืืขืื ืืืืื ื-PHP. ืืื ืืืงืจื ืฉื ืฉื ื ืงืื ืืืื ืจืื ืืชืื ืคืื ืืื, nginx ืื ืืืืข ืืืจ ืขื ืืงืืฆืื ืืกืืืืื ืืืื, ืฉืืืชื (ืืคื ืืชืฆืืจื) ืฆืจืื ืืชืช ืืื. ืืชืืฆืื ืืื, ืืืงืื ืืจืื ืฉืืืื 404 ืขืืืจ ืื ืืืงืฉืืช ืืงืืฆื CSS ื-JS. ืืคืชืจืื ืืคืฉืื ืืืืชืจ ืืื ืืืื ืืืจืื ืกืคืจืืื ืืฉืืชืคืช ืืงืื ืืืื ืจืื. ืืคืฉืจืืช ืคืจืืืืืืืืช - ืืืืืช emptyDir
:
apiVersion: apps/v1
kind: Deployment
metadata:
name: site
spec:
selector:
matchLabels:
component: backend
template:
metadata:
labels:
component: backend
spec:
volumes:
- name: assets
emptyDir: {}
- name: nginx-config
configMap:
name: nginx-configmap
containers:
- name: php
image: own-image-with-php-backend:v1.0
command: ["/usr/local/sbin/php-fpm","-F"]
workingDir: /var/www
volumeMounts:
- name: assets
mountPath: /var/www/assets
- name: nginx
image: nginx:1.16.0
command: ["/usr/sbin/nginx", "-g", "daemon off;"]
volumeMounts:
- name: assets
mountPath: /var/www/assets
- name: nginx-config
mountPath: /etc/nginx/conf.d/default.conf
subPath: nginx.conf
ืืขืช ืงืืฆืื ืกืืืืื ืฉื ืืฆืจื ืืงืื ืืืื ืจ ืืืืฉืื ืขื ืืื nginx ืืฆืืจื ื ืืื ื. ืืื ืืจืฉื ืื ืืืืืืจ ืืื ืฉืืื ืคืชืจืื ืคืจืืืืืืื, ืืืืืจ ืืื ืจืืืง ืืืืืืช ืืืืืืื ืืืฉ ืื ื ืืืื ืกืื ืืืกืจืื ืืช ืืฉืื, ืขืืืื ื ืืื ืืืื.
ืืืกืื ืืชืงืื ืืืชืจ
ืืขืช ืืืืื ื ืืฆื ืฉืื ืืฉืชืืฉ ืืืงืจ ืืืชืจ, ืืขื ืขืืื ืขื ืืกืื ืื ืืช ืืืืื ืื ืืงืื ืืืื ืจ, ืืืืื ืฉืืื ืงืืจื ืืช ืืืฃ ืืื, ืคืจืกื ื ืืืืฉ ืืช ืืงืื ืืืื ืจ. ืงืืืื ืื ืืกืื ืืคื ืจืืง ืื ืืจืฉืช ืืงืฉื ื-PHP ืืื ืืืชืืื ืืืืฆืจ ืืืฉืื. ืขื ืืืช, ืื ืืืืจ ืืื, ืงืืฉืืจืื ืืกืืืืงื ืืฉื ื ืื ืืืื ืจืืืื ืืืื, ืื ืฉืืืืื ืืฉืืืืืช ืืืฆืืช ืกืืืืงื.
ืื ืืกืฃ, ืกืืืจ ืืื ืื ืฉืืฉ ืื ื ืคืจืืืงื ืืขืื ืคืืืช ืื ืืืชืจ, ืื ืฉืืืืจ ืฉืขืชืง ืืื ืฉื ืืืคืืืงืฆืื ืื ืืกืคืืง:
- ืืืื ื ืจืืื ืืช ืื ืคึผึฐืจึดืืกึธื ืขื ืฉื ื ืืขืชืงืื.
- ืืืฉืจ ืืืืฉื ืืืชืจ ืืืืชื ืืจืืฉืื ื, ื ืืฆืจื ื ืืกืื ืืืขืชืง ืืื.
- ืืฉืื ืืกืืื, Ingress ืืืืืื (ืืืืจืืช ืืืืื ืขืืืกืื) ืืฉืืื ืืงืฉื ืืขืืชืง ืืฉื ื, ืืื ืืกืื ืืืื ืขืืืื ืื ืืื ืฉื. ืื ืืืื ืื ืืืจ ืื ืฉื ืื ืื ืื ื ืืฉืชืืฉืื
RollingUpdate
ืืืจืืข ืื ืื ื ืืืฆืขืื ืคืจืืกื.
ืืืืคื ืืืื, ืืชืืฆืื ืืื ืฉืื ืืขืืืืช.
ืืื ืืื ืืข ืืืืื ื ืืกืื ืืฉื ืื, ืืชื ืืืื ืืฉื ืืช emptyDir
ืขื hostPath
, ืืืกืคืช ืกืืื ืคืืืืช ืืฆืืืช ืืฉืืื. ืืืืฉื ืืื ืืจืืขื ืื ืื ืื ื ืืขืฆื ืืืืืื ื ืงืฉืจ ืืฆืืืช ืืฉืืื ืกืคืฆืืคื ืืืืฉืื ืฉืื, ืืืืืื ืฉืืืงืจื ืฉื ืืขืืจ ืืฆืืชืื ืืืจืื - ืืกืคืจืืื ืื ืชืืื ืืช ืืงืืฆืื ืืืจืืฉืื. ืื ืฉืืฉ ืฆืืจื ืืกื ืืจืื ืฉื ืกืคืจืืืช ืจืงืข ืืื ืฆืืชืื.
ืืื ืืคืชืจืื ืืช?
- ืื ืืืืืจื ืืืืฉืืืื ืืืคืฉืจืื, ืืชื ืืืื ืืืฉืชืืฉ
cephfs ืืืจืื ืกืคืจืืื ื ืืืฉื ืืืืชื ืืืื ืืฆืจืืื ืกืืืืื.ืชืืขืื ืจืฉืื ืืืืืฅ ืขื ืืื ื ื SSD, ืฉืืคืื ืืคืืืช ืคื ืฉืืืฉื ืืืืืืจ "ืขืื" ืืฆืื ืืื ืฆืืชื ืืฉืืื. - ืืคืฉืจืืช ืคืืืช ืชืืืขื ืืช ืชืืื ืืืจืื ืฉืจืช NFS. ืขื ืืืช, ืื ืืชื ืฆืจืื ืืงืืช ืืืฉืืื ืืช ืืขืืืื ืืืคืฉืจืืช ืืืื ืืชืืืื ืขืืืจ ืขืืืื ืืงืฉืืช ืขื ืืื ืฉืจืช ืืืื ืืจื ื, ืืกืืืื ืืช ืชืงืืืช ืชืฉืืืจ ืืจืื ืืจืฆืื. ืืืฉืืืืช ืฉื ืืืืฉืืื ืื ืงืืกืืจืืคืืืืช: ืืืืื ืืืจ ืืืืจ ืืืืืช ืืช ืืืงืืฅ ืืืืฅ ืืขืืืก ืฉื ืืืก ืื ื'ืืก ืฉืืืืจ ืืฉืืืื.
ืืื ืืืชืจ, ืื ืืืคืฉืจืืืืช ืืืฆืืจืช ืืืกืื ืืชืืฉื ืืืจืฉื ื ืืงืื ืจืงืข ืกืืื ืืืืฉื ืื ืฉื ืงืืฆืื ืฉืืฆืืืจื ืืืฉื ืคืจืง ืืื ืืกืืื. ืืื ืงืื ืืืื ืจืื ืขื PHP ืืชื ืืืื ืืฉืื DaemonSet ืืืืืืื nginx, ืืฉืจ ืืืืกื ืขืืชืงืื ืฉื ื ืืกืื ืืืื ืืืืื. ืืชื ืืืืช ืื ื ืืชื ืช ืืืืืจื ืืงืืืช ืืืืฆืขืืช proxy_cache
ืขื ืขืืืง ืืืกืื ืืืืื ืื ื'ืืื-ืืืื ืฉื ืฉืื ืืืกืง.
ืฉืืืื ืฉืืื ืื ืขื ืืขืจืืืช ืืงืืฆืื ืืืืืืจืืช ืฉืืืืืจื ืืขืื ืืกืคืง ืฉืื ืขืฆืื ืืืืืื, ืืืืื ืจืง ืืชืงืฆืื ืืืคืืื ืฆืืื ืืืื ื ืฉื ืื ืฉืืืืืข ืืืชืืื ืื. ืื ืืกืืื ื ืืชื ืืืืจ ืฉืืื ืฉืืืขืจืืช ืคืฉืืื ืืืชืจ, ืื ืืื ืคืืขืืช ืืฆืืื ืืืชืจ. ืืืฉืจ ืืืกืืคืื ืฉืืืืช ืืืื, ืงืฉื ืืจืื ืืืชืจ ืืชืืืง ืืช ืืชืฉืชืืช, ืืืืงืืื ืืื ืืืื ืืืืฉืงืข ืืืืืื ืืืืืื ืืชืงืืืช ืืืฉืื.
ืืืืฆื
ืื ืื ืืืฉืื ืืคืฉืจืืืืช ืืืืกืื ืืืืฆืขืืช ื ืจืื ืืื ืื ืืืฆืืง (ืืกืืื, ืืงืจ...), ืื ืืืื ืืืกืชืื ืขื ืืืฆื ืืืฆื ืืฉื ื. ืืืืืจ, ืืืคืืจ ืืชืื ืืจืืืืงืืืจืช ืืคืจืืืงื ื ืืชืงื ืืช ืืืขืื ืืงืื, ืงืฉืืจ ืืืื ื ื ืชืื ืื ืกืืื ืืืฉืื ืืชืืื ื, ืืืืจื ืื ืืฉืืขืืช ืฉื ืืชืืื ืื ืืืืื ื"ืืืืื" ื/ืื ืืืืืจ ืืงืืื ืฉื ื ืืกืื ืืฉืื ืืจืืืช ืืชืืื ื. ืืืจื ืื ืื ื ืืงืืืื ืืชื ืืืืช ืฆืคืืื ืืืืืืื ืืืืชื ืกื ืฉื ืงืืฆืื ืขืืืจ ืื ืืกืืืืืช ืืืขืืชืงืื ืฉื ืืืคืืืงืฆืื ืืคืืขืืช.
ืื ื ืืืืจ ืืืืืื ืืกืคืฆืืคืืช ืขื ืืกืืจืช Yii ืืื ื ืขืืืง ืืืื ื ืฉืื (ืืื ืื ืืืจืช ืืืืืจ), ืื ืืืฆืืืข ืขื ืฉืชื ืืืฉืืช ืคืืคืืืจืืืช:
- ืฉื ื ืืช ืชืืืื ืื ืืืช ืืชืืื ื ืืื ืืืงื ื ืืกืื ืืืืงืื ืฆืคืื. ืื ืืืฆืข/ืืืืฉื ืืืจืืืืช ืืื
yii2-static-assets . - ืืืืจ ืืืืื ืกืคืฆืืคื ืขืืืจ ืกืคืจืืืช ื ืืกืื, ืืคื ืฉื ืืื ืืืฉื.
ืืืฆืืช ืืื (ืืื ืืฉืงืืคืืช ืืก' 35). ืืื, ืืืชื ืืื"ื ืืกืืคื ืฉื ืืืจ (ืืื ืืื ืกืืื!) ืืืืขืฅ ืฉืืืจื ืืจืืืช ื ืืกืื ืขื ืฉืจืช ื-build, ืืขืื ืืืชื ืืืืกืื ืืจืืื (ืืื S3), ืืืื ืชืฆืื CDN.
ืืืจืืืช
ืืงืจื ื ืืกืฃ ืฉืืืืื ืืืื ืืืื ืืืืื ืืขืช ืืขืืจืช ืืคืืืงืฆืื ืืืฉืืื Kubernetes ืืื ืืืกืื ืงืืฆื ืืฉืชืืฉ ืืืขืจืืช ืืงืืฆืื. ืืืืืื, ืฉืื ืืฉ ืื ื ืืคืืืงืฆืืืช PHP ืฉืืงืืืช ืงืืฆืื ืืจื ืืืคืก ืืขืืื, ืขืืฉื ืืืชื ืืฉืื ืืืืื ืืคืขืืื ืืฉืืืืช ืืืชื ืืืืจื.
ื-Kubernetes, ืืืืงืื ืฉืื ืืฉ ืืืงื ืืช ืืงืืฆืื ืืืื ืฆืจืื ืืืืืช ืืฉืืชืฃ ืืื ืืขืชืงืื ืฉื ืืืืฉืื. ืืืชืื ืืืืจืืืืช ืืืืฉืื ืืืฆืืจื ืืืจืื ืืช ืืืชืืื ืฉื ืงืืฆืื ืืื, ืืคืฉืจืืืืช ืืืชืงื ืืืฉืืชืคืืช ืฉืืืืืจื ืืขืื ืขืฉืืืืช ืืืืืช ืืงืื ืืื, ืืื, ืืคื ืฉืื ื ืจืืืื, ืืฉ ืืื ืืกืจืื ืืช.
ืืืืฆื
ืคืชืจืื ืืื ืืื ืืืืฆืขืืช ืืืกืื ืชืืื S3 (ืื ืื ืื ืืืืืฉืื ืงืืืืจืื ืืืืจืื ืขืฆืื ืืื ืืื ืื). ืืืขืืจ ื-S3 ืืืจืืฉ ืฉืื ืืืื ืืจืืช ืืงืื, ืืืืฆื ืืชืืื ืืืขืืจ ืืืืืช ืืงืฆื, ืืืจ ืืื ื
ืืคืขืืืช ืืฉืชืืฉ
ืื ืคืจื, ืจืืื ืืฆืืื ืืช ืืจืืื ืืืืกืื ืฉื ืืคืขืืืช ืืฉืชืืฉ. ืืจืื ืืืืืจ ืื ืืงืืฆืื ืืืืกืง, ืืฉืจ ืืืงืฉืจ ืฉื Kubernetes ืืืืืื ืืืงืฉืืช ืืจืฉืื ืืชืืืืช ืืืืฉืชืืฉ ืื ืืงืฉืชื ืชืืืข ืืืืืื ืืืจืช.
ืืืขืื ื ืคืชืจืช ืืืืงื ืขื ืืื ืืคืขืื stickySessions
ืขื ืื ืืกื (ืืชืืื ื ื ืชืืืช ืืื ืืงืจื ืืื ืืกื ืืคืืคืืืจืืื - ืืคืจืืื ื ืืกืคืื, ืจืื
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
name: nginx-test
annotations:
nginx.ingress.kubernetes.io/affinity: "cookie"
nginx.ingress.kubernetes.io/session-cookie-name: "route"
nginx.ingress.kubernetes.io/session-cookie-expires: "172800"
nginx.ingress.kubernetes.io/session-cookie-max-age: "172800"
spec:
rules:
- host: stickyingress.example.com
http:
paths:
- backend:
serviceName: http-svc
servicePort: 80
path: /
ืืื ืื ืื ืืืื ืืขืืืช ืขื ืคืจืืกืืช ืืืืจืืช ืื ืฉื ืืช.
ืืืืฆื
ืืจื ื ืืื ื ืืืชืจ ืชืืื ืืืขืืืจ ืืช ืืืงืฉื ืื ืืืกืื ืืคืขืืืช ื- memcached, Redis ืืคืชืจืื ืืช ืืืืื - ืืืืคื ืืืื, ืื ืืืฉ ืืืืืืื ืืช ืืคืฉืจืืืืช ืืงืืืฅ.
ืืกืงื ื
ืคืชืจืื ืืช ืืชืฉืชืืช ืื ืืืื ืื ืืืงืกื ืจืืืืื ืืฉืืืืฉ ืจืง ืืคืืจืื ืฉื "ืงืืืื" ืืื ืืื (ืฉื ืฉืืข ืืคื ืืืชืจ ืืื ืืืืช ืืืจื ืขืืงืคืช). ืื ืขืฉืืืื ืืืืืช ืจืืืื ืืืื ืืฉืืืื ืืจืืฉืื ืื ืฉื ืืขืืจืช ืืคืืืงืฆืื ื-Kubernetes, ืื ืื ืืืืจืื ืืืฉืชืจืฉ.
ืืืจื ืืืืืืฆืช ืืืืืืช ืืื ืืืืคืืจ ืืื ืืืืืช ืฉืื ืื ืืืจืืืื ืฉื ืืืคืืืงืฆืื ืืืชืื ืืื ืฉืืืจ ืืืืข ืืจืืื
ื .ื.
ืงืจื ืื ืืืืื ืฉืื ื:
- ยซ
ืืขืืจืช ืงืืฆืื ื-AWS S3 ืืืืฆืขืืช nginx "; - ยซ
7 ืฉืืืืช ืขืืืื ืืืืืฆืืช ืืฉืืืืฉ ืืงืื ืืืื ืจืื ืืคื ืืืื "; - ยซ
7 ืขืงืจืื ืืช ืืขืืฆืื ืืืฉืืืื ืืืืกืกื ืืืื ยป (ืืชืื Red Hat); - ยซ
7 ืืืจืืื ืืกืจืื ืืืคืืืงืฆืืืช 12 ืืืืจืืื ".
ืืงืืจ: www.habr.com