
ΠΡΠΈ ΠΈΠ·Π³ΡΠ°ΠΆΠ΄Π°Π½Π΅ΡΠΎ Π½Π° ΠΏΡΠΎΡΠ΅ΡΠ° CI/CD Ρ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° Kubernetes ΠΏΠΎΠ½ΡΠΊΠΎΠ³Π° Π²ΡΠ·Π½ΠΈΠΊΠ²Π° ΠΏΡΠΎΠ±Π»Π΅ΠΌ Ρ Π½Π΅ΡΡΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΡΡΡΠ° Π½Π° ΠΈΠ·ΠΈΡΠΊΠ²Π°Π½ΠΈΡΡΠ° Π½Π° Π½ΠΎΠ²Π°ΡΠ° ΠΈΠ½ΡΡΠ°ΡΡΡΡΠΊΡΡΡΠ° ΠΈ ΠΏΡΠ΅Π½Π°ΡΠ΅Π½ΠΎΡΠΎ Π² Π½Π΅Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅. Π ΡΠ°ΡΡΠ½ΠΎΡΡ, Π½Π° Π΅ΡΠ°ΠΏΠ° Π½Π° ΠΈΠ·Π³ΡΠ°ΠΆΠ΄Π°Π½Π΅ Π½Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ Π΅ Π²Π°ΠΆΠ½ΠΎ Π΄Π° ΡΠ΅ ΠΏΠΎΠ»ΡΡΠΈ Π΅Π΄ΠΈΠ½ ΠΎΠ±ΡΠ°Π·, ΠΊΠΎΠΉΡΠΎ ΡΠ΅ Π±ΡΠ΄Π΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½ Π² Π²ΡΠΈΡΠΊΠΈ ΡΡΠ΅Π΄ΠΈΡΠ΅ ΠΈ ΠΊΠ»ΡΡΡΠ΅ΡΠΈΡΠ΅ Π½Π° ΠΏΡΠΎΠ΅ΠΊΡΠ°. Π’ΠΎΠ·ΠΈ ΠΏΡΠΈΠ½ΡΠΈΠΏ Π΅ Π² ΠΎΡΠ½ΠΎΠ²Π°ΡΠ° Π½Π° ΠΏΡΠ°Π²ΠΈΠ»Π½ΠΎΡΠΎ (Π½Π΅Π²Π΅Π΄Π½ΡΠΆ Π΅ ΡΡΠ°Π²Π°Π»ΠΎ Π΄ΡΠΌΠ° Π·Π° ΡΠΎΠ²Π° Π² Π½Π°ΡΠΈΡ ΡΠ΅Ρ
Π½ΠΈΡΠ΅ΡΠΊΠΈ ΠΎΡΠ΄Π΅Π»). ΠΈ Π½Π°ΡΠΈΡΡ ΡΠ΅Ρ
Π½ΠΈΡΠ΅ΡΠΊΠΈ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡ).
ΠΡΠΏΡΠ΅ΠΊΠΈ ΡΠΎΠ²Π°, Π½ΡΠΌΠ° Π΄Π° Π²ΠΈΠ΄ΠΈΡΠ΅ ΡΠΈΡΡΠ°ΡΠΈΠΈ, Π² ΠΊΠΎΠΈΡΠΎ Π² ΠΊΠΎΠ΄Π° Π½Π° ΡΠ°ΠΉΡΠ° ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π³ΠΎΡΠΎΠ² ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊ, ΡΠΈΠΉΡΠΎ ΡΠΏΠΎΡΡΠ΅Π±Π° Π½Π°Π»Π°Π³Π° ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ Π½Π° ΡΠ°Π·ΡΠΈΡΠ΅Π½Π°ΡΠ° ΠΌΡ Π΅ΠΊΡΠΏΠ»ΠΎΠ°ΡΠ°ΡΠΈΡ. Π Π°ΠΊΠΎ Π² Β«ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½Π° ΡΡΠ΅Π΄Π°Β» Ρ ΡΠΎΠ²Π° Π΅ Π»Π΅ΡΠ½ΠΎ Π΄Π° ΡΠ΅ ΡΠΏΡΠ°Π²ΠΈΡΠ΅, Π² Kubernetes ΡΠ°ΠΊΠΎΠ²Π° ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΎΠΊΠ°ΠΆΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌ, ΠΎΡΠΎΠ±Π΅Π½ΠΎ ΠΊΠΎΠ³Π°ΡΠΎ ΡΠ΅ ΡΠ±Π»ΡΡΠΊΠ²Π°ΡΠ΅ Ρ Π½Π΅Π³ΠΎ Π·Π° ΠΏΡΡΠ² ΠΏΡΡ. ΠΡΠΏΡΠ΅ΠΊΠΈ ΡΠ΅ ΠΈΠ·ΠΎΠ±ΡΠ΅ΡΠ°ΡΠ΅Π»Π½ΠΈΡΡ ΡΠΌ ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠΈ ΠΈΠ½ΡΡΠ°ΡΡΡΡΠΊΡΡΡΠ½ΠΈ ΡΠ΅ΡΠ΅Π½ΠΈΡ, ΠΊΠΎΠΈΡΠΎ ΠΈΠ·Π³Π»Π΅ΠΆΠ΄Π°Ρ ΠΎΡΠ΅Π²ΠΈΠ΄Π½ΠΈ ΠΈ Π΄ΠΎΡΠΈ Π΄ΠΎΠ±ΡΠΈ Π½Π° ΠΏΡΡΠ² ΠΏΠΎΠ³Π»Π΅Π΄β¦ Π΅ Π²Π°ΠΆΠ½ΠΎ Π΄Π° Π·Π°ΠΏΠΎΠΌΠ½ΠΈΡΠ΅, ΡΠ΅ ΠΏΠΎΠ²Π΅ΡΠ΅ΡΠΎ ΡΠΈΡΡΠ°ΡΠΈΠΈ ΠΌΠΎΠ³Π°Ρ ΠΈ ΡΡΡΠ±Π²Π° Π΄Π° Π±ΡΠ΄Π°Ρ ΡΠ΅ΡΠ°Π²Π°Π½ΠΈ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ½ΠΎ.
ΠΠ΅ΠΊΠ° ΡΠ°Π·Π³Π»Π΅Π΄Π°ΠΌΠ΅ ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΠΈ workaround ΡΠ΅ΡΠ΅Π½ΠΈΡ Π·Π° ΡΡΡ ΡΠ°Π½Π΅Π½ΠΈΠ΅ Π½Π° ΡΠ°ΠΉΠ»ΠΎΠ²Π΅, ΠΊΠΎΠΈΡΠΎ ΠΌΠΎΠ³Π°Ρ Π΄Π° Π΄ΠΎΠ²Π΅Π΄Π°Ρ Π΄ΠΎ Π½Π΅ΠΏΡΠΈΡΡΠ½ΠΈ ΠΏΠΎΡΠ»Π΅Π΄ΠΈΡΠΈ ΠΏΡΠΈ Π΅ΠΊΡΠΏΠ»ΠΎΠ°ΡΠ°ΡΠΈΡΡΠ° Π½Π° ΠΊΠ»ΡΡΡΠ΅ΡΠ°, Π° ΡΡΡΠΎ ΡΠ°ΠΊΠ° ΡΠ΅ ΠΏΠΎΡΠΎΡΠΈΠΌ ΠΏΠΎ-ΠΏΡΠ°Π²ΠΈΠ»Π½ΠΈΡ ΠΏΡΡ.
Π‘ΡΡ ΡΠ°Π½Π΅Π½ΠΈΠ΅ Π½Π° ΡΡΠ°ΡΠΈΠΊΠ°
ΠΠ° ΠΈΠ»ΡΡΡΡΠ°ΡΠΈΡ Π½Π΅ΠΊΠ° ΡΠ°Π·Π³Π»Π΅Π΄Π°ΠΌΠ΅ ΡΠ΅Π± ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, ΠΊΠΎΠ΅ΡΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π½ΡΠΊΠ°ΠΊΡΠ² Π³Π΅Π½Π΅ΡΠ°ΡΠΎΡ Π½Π° ΡΡΠ°ΡΠΈΠΊΠ° Π·Π° ΠΏΠΎΠ»ΡΡΠ°Π²Π°Π½Π΅ Π½Π° Π½Π°Π±ΠΎΡ ΠΎΡ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ, ΡΡΠΈΠ»ΠΎΠ²Π΅ ΠΈ Π΄ΡΡΠ³ΠΈ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π² PHP ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠ° Yii ΠΈΠΌΠ° Π²Π³ΡΠ°Π΄Π΅Π½ ΠΌΠ΅Π½ΠΈΠ΄ΠΆΡΡ Π½Π° Π°ΠΊΡΠΈΠ²ΠΈΡΠ΅, ΠΊΠΎΠΉΡΠΎ Π³Π΅Π½Π΅ΡΠΈΡΠ° ΡΠ½ΠΈΠΊΠ°Π»Π½ΠΈ Π½Π°ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΡ Π½Π° Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΠΈ. Π‘ΡΠΎΡΠ²Π΅ΡΠ½ΠΎ, Π½Π° ΠΈΠ·Ρ ΠΎΠ΄Π° ΠΏΠΎΠ»ΡΡΠ°Π²Π°ΠΌΠ΅ Π½Π°Π±ΠΎΡ ΠΎΡ ΠΏΡΡΠΈΡΠ° Π·Π° ΡΡΠ°ΡΠΈΠΊΠ° Π½Π° ΡΠ°ΠΉΡΠ°, ΠΊΠΎΠΈΡΠΎ ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΡΠ½ΠΎ Π½Π΅ ΡΠ΅ ΠΏΡΠ΅ΡΠΈΡΠ°Ρ (ΡΠΎΠ²Π° Π΅ Π½Π°ΠΏΡΠ°Π²Π΅Π½ΠΎ ΠΏΠΎ Π½ΡΠΊΠΎΠ»ΠΊΠΎ ΠΏΡΠΈΡΠΈΠ½ΠΈ β Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π·Π° Π΄Π° ΡΠ΅ ΠΈΠ·Π±Π΅Π³Π½Π°Ρ Π΄ΡΠ±Π»ΠΈΠΊΠ°ΡΠΈ ΠΏΡΠΈ ΡΠΏΠΎΡΡΠ΅Π±Π°ΡΠ° Π½Π° Π΅Π΄ΠΈΠ½ ΠΈ ΡΡΡ ΡΠ΅ΡΡΡΡ ΠΎΡ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΈ). Π’Π°ΠΊΠ°, ΠΏΠΎ ΠΏΠΎΠ΄ΡΠ°Π·Π±ΠΈΡΠ°Π½Π΅, ΠΏΡΠΈ ΠΏΡΡΠ²ΠΎΡΠΎ ΠΎΠ±ΡΡΡΠ΅Π½ΠΈΠ΅ ΠΊΡΠΌ ΠΌΠΎΠ΄ΡΠ»Π° Π½Π° ΡΠ΅Π± ΡΠ΅ΡΡΡΡΠ°, ΡΠ΅ ΡΠΎΡΠΌΠΈΡΠ° ΠΈ ΡΠ°Π·ΠΏΡΠ΅Π΄Π΅Π»Ρ ΡΡΠ°ΡΠΈΠΊΠ°ΡΠ° (Π² Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»Π½ΠΎΡΡ β ΡΠ΅ΡΡΠΎ ΡΠΈΠΌΠ²ΠΎΠ»ΠΈΡΠ½ΠΈ Π»ΠΈΠ½ΠΊΠΎΠ²Π΅, Π½ΠΎ Π·Π° ΡΠΎΠ²Π° ΠΏΠΎ-ΠΊΡΡΠ½ΠΎ) Ρ ΡΠ½ΠΈΠΊΠ°Π»Π΅Π½ Π·Π° ΡΠΎΠ²Π° ΡΠ°Π·Π³ΡΡΡΠ°Π½Π΅ ΠΎΠ±Ρ ΠΊΠΎΡΠ΅Π½ ΠΊΠ°ΡΠ°Π»ΠΎΠ³:
-
webroot/assets/2072c2df/css/β¦ -
webroot/assets/2072c2df/images/β¦ -
webroot/assets/2072c2df/js/β¦
Π‘ ΠΊΠ°ΠΊΠ²ΠΈ ΠΏΠΎΡΠ»Π΅Π΄ΡΡΠ²ΠΈΡ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΡΠ±Π»ΡΡΠΊΠ°ΡΠ΅ Π² ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ° Π½Π° ΠΊΠ»ΡΡΡΠ΅ΡΠ°?
ΠΡΠΎΡΡ ΠΏΡΠΈΠΌΠ΅Ρ
ΠΠ΅ΠΊΠ° Π²Π·Π΅ΠΌΠ΅ΠΌ Π΄ΠΎΡΡΠ° ΡΠ°Π·ΠΏΡΠΎΡΡΡΠ°Π½Π΅Π½ ΡΠ»ΡΡΠ°ΠΉ, ΠΊΠΎΠ³Π°ΡΠΎ ΠΏΡΠ΅Π΄ PHP ΡΡΠΎΠΈ nginx Π·Π° ΡΠ°Π·Π΄Π°Π²Π°Π½Π΅ Π½Π° ΡΡΠ°ΡΠΈΠΊΠ° ΠΈ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° Π½Π° ΠΏΡΠΎΡΡΠΈ Π·Π°ΡΠ²ΠΊΠΈ. ΠΠ°ΠΉ-ΠΏΡΠΎΡΡΠΈΡΡ Π½Π°ΡΠΈΠ½ Π΅ Deployment Ρ Π΄Π²Π° ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ°:
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 ΠΏΠΎΡΠ²Π»ΡΡΡΡΡ Π°ΡΡΠ΅ΡΡ. ΠΠΎ Π² ΡΠ»ΡΡΠ°Π΅ Ρ Π΄Π²ΡΠΌΡ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ°ΠΌΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ podβΠ΅ β nginx Π½Π΅ Π·Π½Π°Π΅Ρ ΠΎ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΡ
ΡΠ°ΠΉΠ»Π°Ρ
, ΠΊΠΎΡΠΎΡΡΠ΅ (ΡΠΎΠ³Π»Π°ΡΠ½ΠΎ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ) Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡΡΡ ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΈΠΌ. Π ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ Π½Π° Π²ΡΠ΅ Π·Π°ΠΏΡΠΎΡΡ ΠΊ CSS- ΠΈ JS-ΡΠ°ΠΉΠ»Π°ΠΌ ΠΊΠ»ΠΈΠ΅Π½Ρ ΠΏΠΎΠ»ΡΡΠ°Π΅Ρ ΠΎΡΠΈΠ±ΠΊΡ 404. ΠΡΠΎΡΡΠΎΠ΅ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ β ΡΠΎΠ·Π΄Π°ΡΡ ΠΎΠ±ΡΡΡ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡ Π΄Π»Ρ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΎΠ². ΠΡΠΈΠΌΠΈΡΠΈΠ²Π½ΡΠΉ Π²Π°ΡΠΈΠ°Π½Ρ β ΠΎΠ±ΡΠΈΠΉ 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, Π·Π° Π΄Π° ΡΡΠ°ΡΡΠΈΡΠ° Π³Π΅Π½Π΅ΡΠΈΡΠ°Π½Π΅ΡΠΎ Π½Π° Π½ΠΎΠ²ΠΈ. ΠΡΠΏΡΠ΅ΠΊΠΈ ΡΠΎΠ²Π°, Π΄ΠΎΡΠΈ ΠΈ ΡΠ»Π΅Π΄ ΡΠΎΠ²Π°, Π²ΡΡΠ·ΠΊΠΈΡΠ΅ ΠΊΡΠΌ ΡΡΠ°ΡΠ°ΡΠ° ΡΡΠ°ΡΠΈΡΠ½ΠΎΡΡ ΡΠ΅ Π±ΡΠ΄Π°Ρ Π½Π΅Π°ΠΊΡΡΠ°Π»Π½ΠΈ, ΠΊΠΎΠ΅ΡΠΎ ΡΠ΅ Π΄ΠΎΠ²Π΅Π΄Π΅ Π΄ΠΎ Π³ΡΠ΅ΡΠΊΠΈ Π² ΠΏΠΎΠΊΠ°Π·Π²Π°Π½Π΅ΡΠΎ Π½Π° ΡΡΠ°ΡΠΈΠΊΠ°ΡΠ°.
ΠΡΠ²Π΅Π½ ΡΠΎΠ²Π°, Π½Π°ΠΉ-Π²Π΅ΡΠΎΡΡΠ½ΠΎ ΠΈΠΌΠ°ΠΌΠ΅ ΡΡΠ°Π²Π½ΠΈΡΠ΅Π»Π½ΠΎ Π½Π°ΡΠΎΠ²Π°ΡΠ΅Π½ ΠΏΡΠΎΠ΅ΠΊΡ, Π° ΡΠΎΠ²Π° ΠΎΠ·Π½Π°ΡΠ°Π²Π°, ΡΠ΅ Π΅Π΄Π½Π° ΠΊΠΎΠΏΠΈΡ Π½Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ Π½ΡΠΌΠ° Π΄Π° Π΅ Π΄ΠΎΡΡΠ°ΡΡΡΠ½Π°:
- ΠΠ°ΡΡΡΠ°Π±ΠΈΡΠ°Π½Π΅ Deployment Π΄ΠΎ Π΄Π²Π΅ ΡΠ΅ΠΏΠ»ΠΈΠΊΠΈ.
- ΠΡΠΈ ΠΏΡΡΠ²ΠΎΡΠΎ ΠΎΠ±ΡΡΡΠ΅Π½ΠΈΠ΅ ΠΊΡΠΌ ΡΠ°ΠΉΡΠ° Π² Π΅Π΄Π½Π° ΡΠ΅ΠΏΠ»ΠΈΠΊΠ° Π±ΡΡ Π° ΡΡΠ·Π΄Π°Π΄Π΅Π½ΠΈ Π°ΠΊΡΠΈΠ²ΠΈ.
- Π ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ ΠΌΠΎΠΌΠ΅Π½Ρ ingress ΡΠ΅ΡΠΈ (Π² ΠΈΠΌΠ΅ΡΠΎ Π½Π° Π±Π°Π»Π°Π½ΡΠΈΡΠ°Π½Π΅ΡΠΎ Π½Π° Π½Π°ΡΠΎΠ²Π°ΡΠ²Π°Π½Π΅ΡΠΎ) Π΄Π° ΠΈΠ·ΠΏΡΠ°ΡΠΈ Π·Π°ΡΠ²ΠΊΠ° ΠΊΡΠΌ Π²ΡΠΎΡΠ° ΡΠ΅ΠΏΠ»ΠΈΠΊΠ°, Π° ΡΠ°ΠΌ ΡΠ΅Π·ΠΈ Π°ΠΊΡΠΈΠ²ΠΈ ΠΎΡΠ΅ Π³ΠΈ Π½ΡΠΌΠ°. ΠΠ»ΠΈ ΠΌΠΎΠΆΠ΅ Π±ΠΈ ΡΠ°ΠΌ Π²Π΅ΡΠ΅ Π³ΠΈ Π½ΡΠΌΠ°, Π·Π°ΡΠΎΡΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅
RollingUpdateΠΈ Π² ΠΌΠΎΠΌΠ΅Π½ΡΠ° ΠΏΡΠ°Π²ΠΈΠΌ Π΄Π΅ΠΏΠ»ΠΎΠΉ.
ΠΠ±ΡΠΎ Π²Π·Π΅ΡΠΎ, ΡΠ΅Π·ΡΠ»ΡΠ°ΡΡΡ Π΅ ΠΎΡΠ½ΠΎΠ²ΠΎ Π³ΡΠ΅ΡΠΊΠΈ.
ΠΠ° Π΄Π° Π½Π΅ Π·Π°Π³ΡΠ±ΠΈΠΌ ΡΡΠ°ΡΠΈΡΠ΅ Π°ΠΊΡΠΈΠ²ΠΈ, ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° ΠΏΡΠΎΠΌΠ΅Π½ΠΈΠΌ emptyDir Π½Π° hostPath, ΠΊΠ°ΡΠΎ ΡΠΈΠ·ΠΈΡΠ΅ΡΠΊΠΈ ΡΠΊΠ»Π°Π΄ΠΈΡΠ°ΠΌΠ΅ ΡΡΠ°ΡΠΈΠΊΠ°ΡΠ° Π½Π° Π²ΡΠ·Π΅Π»Π° Π² ΠΊΠ»ΡΡΡΠ΅ΡΠ°. Π’ΠΎΠ·ΠΈ ΠΏΠΎΠ΄Ρ
ΠΎΠ΄ Π΅ Π»ΠΎΡ, Π·Π°ΡΠΎΡΠΎ Π² Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»Π½ΠΎΡΡ ΡΡΡΠ±Π²Π° Π΄Π° ΡΠ΅ ΡΠ²ΡΡΠΆΠ΅ΠΌ Ρ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ΅Π½ Π²ΡΠ·Π΅Π» Π½Π° ΠΊΠ»ΡΡΡΠ΅ΡΠ° Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ ΡΠΈ, ΡΡΠΉ ΠΊΠ°ΡΠΎ ΠΏΡΠΈ ΠΏΡΠ΅Π½ΠΎΡ Π½Π° Π΄ΡΡΠ³ΠΈ Π²ΡΠ·Π»ΠΈ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡΡΠ° Π½ΡΠΌΠ° Π΄Π° ΡΡΠ΄ΡΡΠΆΠ° Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΈΡΠ΅ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅. ΠΠ»ΠΈ Π΅ Π½ΡΠΆΠ½Π° Π½ΡΠΊΠ°ΠΊΠ²Π° ΡΠΎΠ½ΠΎΠ²Π° ΡΠΈΠ½Ρ
ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΡ Π½Π° Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡΡΠ° ΠΌΠ΅ΠΆΠ΄Ρ Π²ΡΠ·Π»ΠΈΡΠ΅.
ΠΠ°ΠΊΠ²ΠΈ ΡΠ° Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΈΡΠ΅ ΡΠ΅ΡΠ΅Π½ΠΈΡ?
- ΠΠΊΠΎ Ρ Π°ΡΠ΄ΡΠ΅ΡΡΡ ΠΈ ΡΠ΅ΡΡΡΡΠΈΡΠ΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π°Ρ, ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ Π·Π° ΠΎΡΠ³Π°Π½ΠΈΠ·ΠΈΡΠ°Π½Π΅ Π½Π° ΡΠ°Π²Π½ΠΎΠ΄ΠΎΡΡΡΠΏΠ½Π° Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡ Π·Π° Π½ΡΠΆΠ΄Π°ΡΠ° ΠΎΡ ΡΡΠ°ΡΠΈΠΊΠ°ΡΠ°. ΠΏΡΠ΅ΠΏΠΎΡΡΡΠ²Π° SSD Π΄ΠΈΡΠΊΠΎΠ²Π΅, ΠΌΠΈΠ½ΠΈΠΌΡΠΌ ΡΡΠΈΠΊΡΠ°ΡΠ½Π° ΡΠ΅ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡ ΠΈ Π½Π°Π΄Π΅ΠΆΠ΄Π½ΠΎ "Π΄Π΅Π±Π΅Π»ΠΎ" ΡΠ²ΡΡΠ·Π²Π°Π½Π΅ ΠΌΠ΅ΠΆΠ΄Ρ Π²ΡΠ·Π»ΠΈΡΠ΅ Π½Π° ΠΊΠ»ΡΡΡΠ΅ΡΠ°.
- ΠΠΎ-ΠΌΠ°Π»ΠΊΠΎ Π²Π·ΠΈΡΠΊΠ°ΡΠ΅Π»Π΅Π½ Π²Π°ΡΠΈΠ°Π½Ρ Π±ΠΈ Π±ΠΈΠ» ΠΎΡΠ³Π°Π½ΠΈΠ·ΠΈΡΠ°Π½Π΅ΡΠΎ Π½Π° NFS ΡΡΡΠ²ΡΡ. ΠΡΠΏΡΠ΅ΠΊΠΈ ΡΠΎΠ²Π°, ΡΡΡΠ±Π²Π° Π΄Π° ΡΠ΅ ΠΈΠΌΠ° ΠΏΡΠ΅Π΄Π²ΠΈΠ΄ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΠΎ ΠΏΠΎΠ²ΠΈΡΠ°Π²Π°Π½Π΅ Π½Π° Π²ΡΠ΅ΠΌΠ΅ΡΠΎ Π·Π° ΠΎΡΠ³ΠΎΠ²ΠΎΡ ΠΏΡΠΈ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° Π½Π° Π·Π°ΡΠ²ΠΊΠΈ ΠΎΡ ΡΠ΅Π± ΡΡΡΠ²ΡΡΠ°, Π° ΠΈ ΡΡΡΠΎΠΉΡΠΈΠ²ΠΎΡΡΡΠ° ΠΏΡΠΈ ΠΎΡΠΊΠ°Π· ΡΠ΅ ΠΎΡΡΠ°Π½Π΅ ΠΆΠ΅Π»Π°ΡΠ΅Π»Π½Π°. ΠΠΎΡΠ»Π΅Π΄ΡΡΠ²ΠΈΡΡΠ° ΠΎΡ ΠΎΡΠΊΠ°Π·Π° ΡΠ° ΠΊΠ°ΡΠ°ΡΡΡΠΎΡΠ°Π»Π½ΠΈ: Π·Π°Π³ΡΠ±Π°ΡΠ° Π½Π° mount'Π° ΠΎΠ±ΡΠΈΡΠ° ΠΊΠ»ΡΡΡΠ΅ΡΠ° Π½Π° Π³ΠΈΠ±Π΅Π» ΠΏΠΎΠ΄ Π½Π°ΡΠΈΡΠΊΠ° Π½Π° Π½Π°ΡΠΎΠ²Π°ΡΠ²Π°Π½Π΅ΡΠΎ LA, ΡΡΡΠ΅ΠΌΡΡΠΎ ΡΠ΅ ΠΊΡΠΌ Π½Π΅Π±Π΅ΡΠΎ.
ΠΡΠ²Π΅Π½ Π²ΡΠΈΡΠΊΠΎ Π΄ΡΡΠ³ΠΎ, Π·Π° Π²ΡΠΈΡΠΊΠΈ Π²Π°ΡΠΈΠ°Π½ΡΠΈ Π·Π° ΡΡΠ·Π΄Π°Π²Π°Π½Π΅ Π½Π° ΠΏΠΎΡΡΠΎΡΠ½Π½ΠΎ Ρ
ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ ΡΠ΅ Π΅ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠ° ΡΠΎΠ½ΠΎΠ²Π° ΡΠΈΡΡΠΊΠ° Π½Π° ΠΎΡΡΠ°ΡΠ΅Π»ΠΈ Π½Π°Π±ΠΎΡΠΈ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅, Π½Π°ΡΡΡΠΏΠ°Π½ΠΈ Π·Π° ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ ΠΏΠ΅ΡΠΈΠΎΠ΄ ΠΎΡ Π²ΡΠ΅ΠΌΠ΅. ΠΡΠ΅Π΄ΠΈ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΈΡΠ΅ Ρ PHP ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° ΠΏΠΎΡΡΠ°Π²ΠΈΠΌ DaemonSet ΠΊΠ΅ΡΠΈΡΠ°ΡΠΈ nginx, ΠΊΠΎΠΈΡΠΎ ΡΠ΅ ΡΡΡ
ΡΠ°Π½ΡΠ²Π°Ρ ΠΊΠΎΠΏΠΈΡΡΠ° Π½Π° Π°ΠΊΡΠΈΠ²ΠΈΡΠ΅ Π·Π° ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ ΠΏΠ΅ΡΠΈΠΎΠ΄ ΠΎΡ Π²ΡΠ΅ΠΌΠ΅. Π’ΠΎΠ²Π° ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π»Π΅ΡΠ½ΠΎ ΡΠ΅ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠ° Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° proxy_cache Ρ Ρ Π΄ΡΠ»Π±ΠΎΡΠΈΠ½Π° Π½Π° ΡΡΡ
ΡΠ°Π½Π΅Π½ΠΈΠ΅ Π² Π΄Π½ΠΈ ΠΈΠ»ΠΈ Π³ΠΈΠ³Π°Π±Π°ΠΉΡΠΈ Π΄ΠΈΡΠΊΠΎΠ²ΠΎ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²ΠΎ.
ΠΠΎΠΌΠ±ΠΈΠ½ΠΈΡΠ°Π½Π΅ΡΠΎ Π½Π° ΡΠΎΠ·ΠΈ ΠΌΠ΅ΡΠΎΠ΄ Ρ ΠΏΠΎΡΠΎΡΠ΅Π½ΠΈΡΠ΅ ΠΏΠΎ-Π³ΠΎΡΠ΅ ΡΠ°Π·ΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈ ΡΠ°ΠΉΠ»ΠΎΠ²ΠΈ ΡΠΈΡΡΠ΅ΠΌΠΈ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Ρ ΠΎΠ³ΡΠΎΠΌΠ½ΠΎ ΠΏΠΎΠ»Π΅ Π·Π° Π²ΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅, ΠΊΠ°ΡΠΎ Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½ΠΎΡΠΎ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠ΅ Π΅ Π±ΡΠ΄ΠΆΠ΅ΡΡΡ ΠΈ ΡΠ΅Ρ Π½ΠΈΡΠ΅ΡΠΊΠΈΡΠ΅ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ Π½Π° ΠΎΠ½Π΅Π·ΠΈ, ΠΊΠΎΠΈΡΠΎ ΡΠ΅ Π³ΠΎ ΡΠ΅Π°Π»ΠΈΠ·ΠΈΡΠ°Ρ ΠΈ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ°Ρ. ΠΠ°ΠΊΡΠ°ΡΠΊΠΎ, ΠΊΠΎΠ»ΠΊΠΎΡΠΎ ΠΏΠΎ-ΠΏΡΠΎΡΡΠ° Π΅ ΡΠΈΡΡΠ΅ΠΌΠ°ΡΠ°, ΡΠΎΠ»ΠΊΠΎΠ²Π° ΠΏΠΎ-ΡΡΠ°Π±ΠΈΠ»Π½ΠΎ ΡΠ°Π±ΠΎΡΠΈ. ΠΠΎΠ±Π°Π²ΡΠ½Π΅ΡΠΎ Π½Π° ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΈ ΡΠ»ΠΎΠ΅Π²Π΅ ΠΏΡΠ°Π²ΠΈ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ°ΡΠ° Π½Π° ΠΈΠ½ΡΡΠ°ΡΡΡΡΠΊΡΡΡΠ°ΡΠ° ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎ-ΡΡΡΠ΄Π½Π°, Π° Ρ ΡΠΎΠ²Π° ΡΠ²Π΅Π»ΠΈΡΠ°Π²Π° ΠΈ Π²ΡΠ΅ΠΌΠ΅ΡΠΎ, Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π·Π° Π΄ΠΈΠ°Π³Π½ΠΎΡΡΠΈΠΊΠ° ΠΈ Π²ΡΠ·ΡΡΠ°Π½ΠΎΠ²ΡΠ²Π°Π½Π΅ ΠΏΡΠΈ Π²ΡΡΠΊΠ°ΠΊΠ²ΠΈ Π½Π΅ΠΈΠ·ΠΏΡΠ°Π²Π½ΠΎΡΡΠΈ.
ΠΡΠ΅ΠΏΠΎΡΡΠΊΠ°
ΠΠΊΠΎ ΡΠ΅Π°Π»ΠΈΠ·ΠΈΡΠ°Π½Π΅ΡΠΎ Π½Π° ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΡΠ΅ Π²Π°ΡΠΈΠ°Π½ΡΠΈ Π·Π° Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ° Π²ΠΈ ΠΈΠ·Π³Π»Π΅ΠΆΠ΄Π° Π½Π΅ΠΎΠΏΡΠ°Π²Π΄Π°Π½ΠΎ (ΡΠ»ΠΎΠΆΠ½ΠΎ, ΡΠΊΡΠΏΠΎ...), Π·Π°ΡΠ»ΡΠΆΠ°Π²Π° Π΄Π° ΠΏΠΎΠ³Π»Π΅Π΄Π½Π΅ΡΠ΅ ΡΠΈΡΡΠ°ΡΠΈΡΡΠ° ΠΎΡ Π΄ΡΡΠ³ ΡΠ³ΡΠ». Π ΠΈΠΌΠ΅Π½Π½ΠΎ β Π΄Π° ΡΠ΅ Π·Π°Π΄ΡΠ»Π±ΠΎΡΠΈΡΠ΅ Π² Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ°ΡΠ° Π½Π° ΠΏΡΠΎΠ΅ΠΊΡΠ° ΠΈ Π΄Π° ΠΏΡΠ΅ΠΌΠ°Ρ Π½Π΅ΡΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° ΠΎΡ ΠΊΠΎΠ΄Π°, ΡΠ²ΡΡΠ·Π²Π°ΠΉΠΊΠΈ ΡΠ΅ Ρ Π½ΡΠΊΠ°ΠΊΠ²Π° ΡΡΠ°ΡΠΈΡΠ½Π° ΡΡΡΡΠΊΡΡΡΠ° ΠΎΡ Π΄Π°Π½Π½ΠΈ Π² ΠΎΠ±ΡΠ°Π·Π°, Π½Π΅Π΄Π²ΡΡΠΌΠΈΡΠ»Π΅Π½ΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ½Π΅ Π½Π° ΡΡΠ΄ΡΡΠΆΠ°Π½ΠΈΠ΅ΡΠΎ ΠΈΠ»ΠΈ ΠΏΡΠΎΡΠ΅Π΄ΡΡΠ°ΡΠ° Π½Π° "ΠΏΠΎΠ΄Π³ΡΡΠ²Π°Π½Π΅" ΠΈ/ΠΈΠ»ΠΈ ΠΏΡΠ΅ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠ°Π½Π΅ Π½Π° Π°ΠΊΡΠΈΠ²ΠΈΡΠ΅ Π½Π° Π΅ΡΠ°ΠΏΠ° Π½Π° ΠΈΠ·Π³ΡΠ°ΠΆΠ΄Π°Π½Π΅ Π½Π° ΠΎΠ±ΡΠ°Π·Π°. Π’Π°ΠΊΠ° ΠΏΠΎΠ»ΡΡΠ°Π²Π°ΠΌΠ΅ Π°Π±ΡΠΎΠ»ΡΡΠ½ΠΎ ΠΏΡΠ΅Π΄ΡΠΊΠ°Π·ΡΠ΅ΠΌΠΎ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΈ Π΅Π΄Π½Π°ΠΊΡΠ² Π½Π°Π±ΠΎΡ ΠΎΡ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ Π·Π° Π²ΡΠΈΡΠΊΠΈ ΡΡΠ΅Π΄ΠΈ ΠΈ ΡΠ΅ΠΏΠ»ΠΈΠΊΠΈ Π½Π° Π°ΠΊΡΠΈΠ²ΠΈΡΠ°Π½ΠΎΡΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅.
ΠΠΊΠΎ ΡΠ΅ Π²ΡΡΠ½Π΅ΠΌ ΠΊΡΠΌ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΈΡ ΠΏΡΠΈΠΌΠ΅Ρ Ρ ΡΡΠ΅ΠΉΠΌΡΡΡΠΊΠ° Yii ΠΈ Π½Π΅ ΡΠ΅ Π·Π°Π΄ΡΠ»Π±ΠΎΡΠ°Π²Π°ΠΌΠ΅ Π² Π½Π΅Π³ΠΎΠ²Π°ΡΠ° ΡΡΡΡΠΊΡΡΡΠ° (ΡΠΎ Π½Π΅ Π΅ ΡΠ΅Π»ΡΠ° Π½Π° ΡΡΠ°ΡΠΈΡΡΠ°), Π΄ΠΎΡΡΠ°ΡΡΡΠ½ΠΎ Π΅ Π΄Π° ΠΏΠΎΡΠΎΡΠΈΠΌ Π΄Π²Π° ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΠΈ ΠΏΠΎΠ΄Ρ ΠΎΠ΄Π°:
- ΠΠ° ΡΠ΅ ΠΏΡΠΎΠΌΠ΅Π½ΠΈ ΠΏΡΠΎΡΠ΅ΡΡΡ Π½Π° ΠΈΠ·Π³ΡΠ°ΠΆΠ΄Π°Π½Π΅ Π½Π° ΠΎΠ±ΡΠ°Π·Π°, Π·Π° Π΄Π° ΡΠ΅ ΠΏΠΎΡΡΠ°Π²ΡΡ Π°ΠΊΡΠΈΠ²ΠΈΡΠ΅ Π½Π° ΠΏΡΠ΅Π΄ΡΠΊΠ°Π·ΡΠ΅ΠΌΠΎ ΠΌΡΡΡΠΎ. Π’Π°ΠΊΠ° ΠΏΡΠ΅Π΄Π»Π°Π³Π°Ρ/ΡΠ΅Π°Π»ΠΈΠ·ΠΈΡΠ°Ρ Π² ΡΠ°Π·ΡΠΈΡΠ΅Π½ΠΈΡ ΠΊΠ°ΡΠΎ .
- ΠΠ° ΡΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΈ Ρ Π΅ΡΠΎΠ²Π΅ Π·Π° Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΠΈΡΠ΅ Π½Π° Π°ΠΊΡΠΈΠ²ΠΈΡΠ΅, ΠΊΠ°ΠΊΡΠΎ ΡΠ΅ ΠΎΠΏΠΈΡΠ²Π°, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π² (Π·Π°ΠΏΠΎΡΠ²Π°ΠΉΠΊΠΈ ΠΎΡ ΡΠ»Π°ΠΉΠ΄ β35). ΠΠ΅ΠΆΠ΄Ρ Π΄ΡΡΠ³ΠΎΡΠΎ, Π°Π²ΡΠΎΡΡΡ Π½Π° Π΄ΠΎΠΊΠ»Π°Π΄Π° Π² ΠΊΡΠ°ΠΉΠ½Π° ΡΠΌΠ΅ΡΠΊΠ° (ΠΈ Π½Π΅ Π±Π΅Π· ΠΎΡΠ½ΠΎΠ²Π°Π½ΠΈΠ΅!) ΠΏΡΠ΅ΠΏΠΎΡΡΡΠ²Π° ΡΠ»Π΅Π΄ ΠΈΠ·Π³ΡΠ°ΠΆΠ΄Π°Π½Π΅ Π½Π° Π°ΠΊΡΠΈΠ²ΠΈΡΠ΅ Π½Π° build-ΡΡΡΠ²ΡΡΠ° Π΄Π° Π³ΠΈ Π·Π°ΡΠ΅Π΄ΠΈ Π² ΡΠ΅Π½ΡΡΠ°Π»Π½ΠΎ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ (ΠΊΠ°ΡΠΎ S3), ΠΏΡΠ΅Π΄ ΠΊΠΎΠ΅ΡΠΎ Π΄Π° ΠΏΠΎΡΡΠ°Π²ΠΈ CDN.
ΠΠ°ΡΠ΅ΠΆΠ΄Π°Π΅ΠΌΠΈ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅
ΠΡΡΠ³ ΡΠ»ΡΡΠ°ΠΉ, ΠΊΠΎΠΉΡΠΎ Π·Π°Π΄ΡΠ»ΠΆΠΈΡΠ΅Π»Π½ΠΎ ΡΠ΅ ΠΈΠ·ΡΡΡΠ΅Π»Ρ ΠΏΡΠΈ ΠΏΡΠ΅Ρ Π²ΡΡΠ»ΡΠ½Π΅ Π½Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ Π² ΠΊΠ»Π°ΡΡΠ΅Ρ Kubernetes, Π΅ ΡΡΡ ΡΠ°Π½Π΅Π½ΠΈΠ΅ΡΠΎ Π½Π° ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΡΠΊΠΈ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ Π² ΡΠ°ΠΉΠ»ΠΎΠ²Π°ΡΠ° ΡΠΈΡΡΠ΅ΠΌΠ°. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΎΡΠ½ΠΎΠ²ΠΎ ΠΈΠΌΠ°ΠΌΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π° PHP, ΠΊΠΎΠ΅ΡΠΎ ΠΏΡΠΈΠ΅ΠΌΠ° ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ ΡΡΠ΅Π· ΡΠΎΡΠΌΠ° Π·Π° ΠΊΠ°ΡΠ²Π°Π½Π΅, ΠΈΠ·Π²ΡΡΡΠ²Π° Π½Π΅ΡΠΎ Ρ ΡΡΡ ΠΏΠΎ Π²ΡΠ΅ΠΌΠ΅ Π½Π° ΡΠ°Π±ΠΎΡΠ° ΠΈ Π³ΠΈ Π²ΡΡΡΠ° ΠΎΠ±ΡΠ°ΡΠ½ΠΎ.
ΠΡΡΡΠΎΡΠΎ, ΠΊΡΠ΄Π΅ΡΠΎ ΡΠ΅Π·ΠΈ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ ΡΡΡΠ±Π²Π° Π΄Π° ΡΠ΅ ΠΏΠΎΡΡΠ°Π²ΡΡ, Π² ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ° Π½Π° Kubernetes ΡΡΡΠ±Π²Π° Π΄Π° Π΅ ΠΎΠ±ΡΠΎ Π·Π° Π²ΡΠΈΡΠΊΠΈ ΡΠ΅ΠΏΠ»ΠΈΠΊΠΈ Π½Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ. Π Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ ΠΎΡ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΡΠ° Π½Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ ΠΈ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΡΠ° ΠΎΡ ΠΎΡΠ³Π°Π½ΠΈΠ·ΠΈΡΠ°Π½Π΅ Π½Π° ΠΏΠ΅ΡΡΠΈΡΡΠ΅Π½ΡΠ½ΠΎΡΡ Π½Π° ΡΠ΅Π·ΠΈ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅, ΡΠ°ΠΊΠΎΠ²Π° ΠΌΡΡΡΠΎ ΠΌΠΎΠ³Π°Ρ Π΄Π° Π±ΡΠ΄Π°Ρ ΡΠΏΠΎΠΌΠ΅Π½Π°ΡΠΈΡΠ΅ ΠΏΠΎ-Π³ΠΎΡΠ΅ Π²Π°ΡΠΈΠ°Π½ΡΠΈ Π·Π° shared ΡΡΡΡΠΎΠΉΡΡΠ²Π°, Π½ΠΎ, ΠΊΠ°ΠΊΡΠΎ Π²ΠΈΠΆΠ΄Π°ΠΌΠ΅, ΡΠ΅ ΠΈΠΌΠ°Ρ ΡΠ²ΠΎΠΈΡΠ΅ Π½Π΅Π΄ΠΎΡΡΠ°ΡΡΡΠΈ.
ΠΡΠ΅ΠΏΠΎΡΡΠΊΠ°
ΠΠ΄ΠΈΠ½ ΠΎΡ Π²Π°ΡΠΈΠ°Π½ΡΠΈΡΠ΅ Π·Π° ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ Π΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ΡΠΎ Π½Π° S3-ΡΡΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ (Π΄ΠΎΡΠΈ ΠΈ Π½ΡΠΊΠ°ΠΊΡΠ² Π²Π°ΡΠΈΠ°Π½Ρ ΠΎΡ ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΡ self-hosted ΠΊΠ°ΡΠΎ minio). ΠΡΠ΅Ρ ΠΎΠ΄ΡΡ ΠΊΡΠΌ ΡΠ°Π±ΠΎΡΠ° Ρ S3 ΡΠ΅ ΠΈΠ·ΠΈΡΠΊΠ²Π° ΠΏΡΠΎΠΌΠ΅Π½ΠΈ Π½Π° Π½ΠΈΠ²ΠΎ ΠΊΠΎΠ΄, Π° ΠΊΠ°ΠΊ ΡΠ΅ ΠΏΡΠΎΡΠΈΡΠ° Π΄ΠΎΡΡΠ°Π²ΠΊΠ°ΡΠ° Π½Π° ΡΡΠ΄ΡΡΠΆΠ°Π½ΠΈΠ΅ Π½Π° ΡΡΠΎΠ½ΡΠ΅Π½Π΄Π°, Π²Π΅ΡΠ΅ .
ΠΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΡΠΊΠΈ ΡΠ΅ΡΠΈΠΈ
ΠΡΠ΄Π΅Π»Π½ΠΎ ΡΡΡΠ±Π²Π° Π΄Π° ΡΠ΅ ΠΎΡΠ±Π΅Π»Π΅ΠΆΠΈ ΠΎΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΈΡΡΠ° Π½Π° ΡΡΡ ΡΠ°Π½Π΅Π½ΠΈΠ΅ Π½Π° ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΡΠΊΠΈ ΡΠ΅ΡΠΈΠΈ. Π§Π΅ΡΡΠΎ ΡΠΎΠ²Π° ΡΡΡΠΎ ΡΠ° ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ Π½Π° Π΄ΠΈΡΠΊΠ°, ΠΊΠΎΠ΅ΡΠΎ Π² ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ° Π½Π° Kubernetes ΡΠ΅ Π΄ΠΎΠ²Π΅Π΄Π΅ Π΄ΠΎ ΠΏΠΎΡΡΠΎΡΠ½Π½ΠΈ Π·Π°ΡΠ²ΠΊΠΈ Π·Π° Π°Π²ΡΠΎΡΠΈΠ·Π°ΡΠΈΡ ΠΎΡ ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»Ρ, Π°ΠΊΠΎ Π½Π΅Π³ΠΎΠ²Π°ΡΠ° Π·Π°ΡΠ²ΠΊΠ° ΠΏΠΎΠΏΠ°Π΄Π½Π΅ Π² Π΄ΡΡΠ³ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ.
ΠΡΡΠ°ΡΡΠΈ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡΡ ΡΠ΅ ΡΠ΅ΡΠ°Π²Π° Ρ Π°ΠΊΡΠΈΠ²ΠΈΡΠ°Π½Π΅ΡΠΎ Π½Π° stickySessions Π½Π° ingress (ΡΡΠ½ΠΊΡΠΈΡΡΠ° ΡΠ΅ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ° Π²ΡΠ² Π²ΡΠΈΡΠΊΠΈ ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΠΈ ΠΊΠΎΠ½ΡΡΠΎΠ»Π΅ΡΠΈ ingress β ΠΏΠΎ-ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎ Π²ΠΈΠΆΡΠ΅ Π² ), Π·Π° Π΄Π° ΡΠ΅ ΡΠ²ΡΡΠΆΠ΅ ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΡΡ Ρ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ΅Π½ pod Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ:
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 ΠΈ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΈ ΡΠ΅ΡΠ΅Π½ΠΈΡ β ΠΏΠΎ ΠΏΡΠΈΠ½ΡΠΈΠΏ, Π½Π°ΠΏΡΠ»Π½ΠΎ Π΄Π° ΡΠ΅ ΠΎΡΠΊΠ°ΠΆΠ΅ ΠΎΡ ΡΠ°ΠΉΠ»ΠΎΠ²ΠΈΡΠ΅ Π²Π°ΡΠΈΠ°Π½ΡΠΈ.
ΠΠ°ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅
Π Π°Π·Π³Π»Π΅ΠΆΠ΄Π°Π½ΠΈΡΠ΅ Π² ΡΠ΅ΠΊΡΡΠ° ΠΈΠ½ΡΡΠ°ΡΡΡΡΠΊΡΡΡΠ½ΠΈ ΡΠ΅ΡΠ΅Π½ΠΈΡ Π·Π°ΡΠ»ΡΠΆΠ°Π²Π°Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΡΠ°ΠΌΠΎ Π² ΡΠΎΡΠΌΠ°ΡΠ° Π½Π° Π²ΡΠ΅ΠΌΠ΅Π½Π½ΠΈ "ΠΊΠΎΡΡΠΈΠ»" (ΠΊΠΎΠ΅ΡΠΎ Π·Π²ΡΡΠΈ ΠΏΠΎ-ΠΊΡΠ°ΡΠΈΠ²ΠΎ Π½Π° Π°Π½Π³Π»ΠΈΠΉΡΠΊΠΈ ΠΊΠ°ΡΠΎ workaround). Π’Π΅ ΠΌΠΎΠ³Π°Ρ Π΄Π° Π±ΡΠ΄Π°Ρ Π°ΠΊΡΡΠ°Π»Π½ΠΈ Π² ΡΠ°Π½Π½ΠΈΡΠ΅ Π΅ΡΠ°ΠΏΠΈ Π½Π° ΠΌΠΈΠ³ΡΠ°ΡΠΈΡΡΠ° Π½Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ Π² Kubernetes, Π½ΠΎ Π½Π΅ ΡΡΡΠ±Π²Π° Π΄Π° "ΠΏΡΡΠ½Π°Ρ ΠΊΠΎΡΠ΅Π½ΠΈ".
ΠΠ±ΡΠΈΡΡ ΠΏΡΠ΅ΠΏΠΎΡΡΡΠΈΡΠ΅Π»Π΅Π½ ΠΏΡΡ Π΅ Π΄Π° ΡΠ΅ ΠΎΡΠΊΠ°ΠΆΠ΅ΡΠ΅ ΠΎΡ ΡΡΡ Π² ΠΏΠΎΠ»Π·Π° Π½Π° Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ½ΠΎ Π°Π΄Π°ΠΏΡΠΈΡΠ°Π½Π΅ Π½Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ Π² ΡΡΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠ΅ Ρ Π²Π΅ΡΠ΅ Π΄ΠΎΠ±ΡΠ΅ ΠΈΠ·Π²Π΅ΡΡΠ½ΠΈΡ Π½Π° ΠΌΠ½ΠΎΠ³ΠΎ Ρ ΠΎΡΠ° . ΠΡΠΏΡΠ΅ΠΊΠΈ ΡΠΎΠ²Π° β Π°Π΄Π°ΠΏΡΠΈΡΠ°Π½Π΅ΡΠΎ Π½Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ ΠΊΡΠΌ stateless Π²ΠΈΠ΄ β Π½Π΅ΠΈΠ·Π±Π΅ΠΆΠ½ΠΎ ΠΎΠ·Π½Π°ΡΠ°Π²Π°, ΡΠ΅ ΡΠ΅ ΡΠ° Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΈ ΠΏΡΠΎΠΌΠ΅Π½ΠΈ Π² ΠΊΠΎΠ΄Π°, ΠΈ ΡΡΠΊ Π΅ Π²Π°ΠΆΠ½ΠΎ Π΄Π° ΡΠ΅ Π½Π°ΠΌΠ΅ΡΠΈ Π±Π°Π»Π°Π½Ρ ΠΌΠ΅ΠΆΠ΄Ρ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈΡΠ΅/ΠΈΠ·ΠΈΡΠΊΠ²Π°Π½ΠΈΡΡΠ° Π½Π° Π±ΠΈΠ·Π½Π΅ΡΠ° ΠΈ ΠΏΠ΅ΡΡΠΏΠ΅ΠΊΡΠΈΠ²ΠΈΡΠ΅ Π·Π° ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΈ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π½Π° ΠΈΠ·Π±ΡΠ°Π½ΠΈΡ ΠΏΡΡ.
P.S.
ΠΡΠΎΡΠ΅ΡΠ΅ΡΠ΅ ΡΡΡΠΎ Π² Π½Π°ΡΠΈΡ Π±Π»ΠΎΠ³:
- «»;
- «»;
- «» (ΠΎΡ Red Hat);
- «».
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: habr.com
