ΠΡΠΈ ΠΏΠΎΡΡΡΠΎΠ΅Π½ΠΈΠΈ ΠΏΡΠΎΡΠ΅ΡΡΠ° 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
, ΡΠΊΠ»Π°Π΄ΡΠ²Π°Ρ ΡΡΠ°ΡΠΈΠΊΡ ΡΠΈΠ·ΠΈΡΠ΅ΡΠΊΠΈ Π½Π° ΡΠ·Π΅Π» ΠΊΠ»Π°ΡΡΠ΅ΡΠ°. ΠΠ°Π½Π½ΡΠΉ ΠΏΠΎΠ΄Ρ
ΠΎΠ΄ ΠΏΠ»ΠΎΡ
ΡΠ΅ΠΌ, ΡΡΠΎ ΠΌΡ ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΏΡΠΈΠ²ΡΠ·Π°ΡΡΡΡ ΠΊ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠΌΡ ΡΠ·Π»Ρ ΠΊΠ»Π°ΡΡΠ΅ΡΠ° ΡΠ²ΠΎΠΈΠΌ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ β Π² ΡΠ»ΡΡΠ°Π΅ ΠΏΠ΅ΡΠ΅Π΅Π·Π΄Π° Π½Π° Π΄ΡΡΠ³ΠΈΠ΅ ΡΠ·Π»Ρ β Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡ Π½Π΅ Π±ΡΠ΄Π΅Ρ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΡΡ
ΡΠ°ΠΉΠ»ΠΎΠ². ΠΠΈΠ±ΠΎ ΠΆΠ΅ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ Π½Π΅ΠΊΠ°Ρ ΡΠΎΠ½ΠΎΠ²Π°Ρ ΡΠΈΠ½Ρ
ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΡ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΠΈ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠ·Π»Π°ΠΌΠΈ.
ΠΠ°ΠΊΠΈΠ΅ Π΅ΡΡΡ ΠΏΡΡΠΈ ΡΠ΅ΡΠ΅Π½ΠΈΡ?
- ΠΡΠ»ΠΈ ΠΆΠ΅Π»Π΅Π·ΠΎ ΠΈ ΡΠ΅ΡΡΡΡΡ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡ, ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΎΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ
cephfs Π΄Π»Ρ ΠΎΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΈΠΈ ΡΠ°Π²Π½ΠΎΠ΄ΠΎΡΡΡΠΏΠ½ΠΎΠΉ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΠΈ ΠΏΠΎΠ΄ Π½ΡΠΆΠ΄Ρ ΡΡΠ°ΡΠΈΠΊΠΈ.ΠΡΠΈΡΠΈΠ°Π»ΡΠ½Π°Ρ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅Ρ SSD-Π΄ΠΈΡΠΊΠΈ, ΠΊΠ°ΠΊ ΠΌΠΈΠ½ΠΈΠΌΡΠΌ ΡΡΡΡ ΠΊΡΠ°ΡΠ½ΡΡ ΡΠ΅ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡ ΠΈ ΡΡΡΠΎΠΉΡΠΈΠ²ΠΎΠ΅ Β«ΡΠΎΠ»ΡΡΠΎΠ΅Β» ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠ·Π»Π°ΠΌΠΈ ΠΊΠ»Π°ΡΡΠ΅ΡΠ°. - ΠΠ΅Π½Π΅Π΅ ΡΡΠ΅Π±ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΡΠΌ Π²Π°ΡΠΈΠ°Π½ΡΠΎΠΌ Π±ΡΠ΄Π΅Ρ ΠΎΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΈΡ NFS-ΡΠ΅ΡΠ²Π΅ΡΠ°. ΠΠ΄Π½Π°ΠΊΠΎ ΡΠΎΠ³Π΄Π° Π½ΡΠΆΠ½ΠΎ ΡΡΠΈΡΡΠ²Π°ΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΠ΅ ΠΏΠΎΠ²ΡΡΠ΅Π½ΠΈΠ΅ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΠΎΡΠΊΠ»ΠΈΠΊΠ° Π½Π° ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΡ Π·Π°ΠΏΡΠΎΡΠΎΠ² Π²Π΅Π±-ΡΠ΅ΡΠ²Π΅ΡΠΎΠΌ, Π΄Π° ΠΈ ΠΎΡΠΊΠ°Π·ΠΎΡΡΡΠΎΠΉΡΠΈΠ²ΠΎΡΡΡ ΠΎΡΡΠ°Π²ΠΈΡ ΠΆΠ΅Π»Π°ΡΡ Π»ΡΡΡΠ΅Π³ΠΎ. ΠΠΎΡΠ»Π΅Π΄ΡΡΠ²ΠΈΡ ΠΆΠ΅ ΠΎΡΠΊΠ°Π·Π° ΠΊΠ°ΡΠ°ΡΡΡΠΎΡΠΈΡΠ½Ρ: ΠΏΠΎΡΠ΅ΡΡ mountβΠ° ΠΎΠ±ΡΠ΅ΠΊΠ°Π΅Ρ ΠΊΠ»Π°ΡΡΠ΅Ρ Π½Π° Π³ΠΈΠ±Π΅Π»Ρ ΠΏΠΎΠ΄ Π½Π°ΡΠΈΡΠΊΠΎΠΌ Π½Π°Π³ΡΡΠ·ΠΊΠΈ LA, ΡΡΡΡΠ΅ΠΌΠ»ΡΡΡΠ΅ΠΉΡΡ Π² Π½Π΅Π±ΠΎ.
ΠΠΎΠΌΠΈΠΌΠΎ Π²ΡΠ΅Π³ΠΎ ΠΏΡΠΎΡΠ΅Π³ΠΎ, Π΄Π»Ρ Π²ΡΠ΅Ρ
Π²Π°ΡΠΈΠ°Π½ΡΠΎΠ² ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΏΠΎΡΡΠΎΡΠ½Π½ΠΎΠ³ΠΎ Ρ
ΡΠ°Π½ΠΈΠ»ΠΈΡΠ° ΠΏΠΎΡΡΠ΅Π±ΡΠ΅ΡΡΡ ΡΠΎΠ½ΠΎΠ²Π°Ρ ΠΎΡΠΈΡΡΠΊΠ° ΡΡΡΠ°ΡΠ΅Π²ΡΠΈΡ
Π½Π°Π±ΠΎΡΠΎΠ² ΡΠ°ΠΉΠ»ΠΎΠ², Π½Π°ΠΊΠΎΠΏΠ»Π΅Π½Π½ΡΡ
Π·Π° Π½Π΅ΠΊΠΈΠΉ ΠΏΡΠΎΠΌΠ΅ΠΆΡΡΠΎΠΊ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ. ΠΠ΅ΡΠ΅Π΄ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ°ΠΌΠΈ Ρ PHP ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡΡΠ°Π²ΠΈΡΡ DaemonSet ΠΈΠ· ΠΊΡΡΠΈΡΡΡΡΠΈΡ
nginx, ΠΊΠΎΡΠΎΡΡΠ΅ Π±ΡΠ΄ΡΡ Ρ
ΡΠ°Π½ΠΈΡΡ ΠΊΠΎΠΏΠΈΠΈ Π°ΡΡΠ΅ΡΠΎΠ² ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½Π½ΠΎΠ΅ Π²ΡΠ΅ΠΌΡ. ΠΡΠΎ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π»Π΅Π³ΠΊΠΎ Π½Π°ΡΡΡΠ°ΠΈΠ²Π°Π΅ΡΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ proxy_cache
Ρ Π³Π»ΡΠ±ΠΈΠ½ΠΎΠΉ Ρ
ΡΠ°Π½Π΅Π½ΠΈΡ Π² Π΄Π½ΡΡ
ΠΈΠ»ΠΈ Π³ΠΈΠ³Π°Π±Π°ΠΉΡΠ°Ρ
Π΄ΠΈΡΠΊΠΎΠ²ΠΎΠ³ΠΎ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π°.
ΠΠ±ΡΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅ ΡΡΠΎΠ³ΠΎ ΠΌΠ΅ΡΠΎΠ΄Π° Ρ ΡΠΏΠΎΠΌΡΠ½ΡΡΡΠΌΠΈ Π²ΡΡΠ΅ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠΌΠΈ ΡΠ°ΠΉΠ»ΠΎΠ²ΡΠΌΠΈ ΡΠΈΡΡΠ΅ΠΌΠ°ΠΌΠΈ Π΄Π°ΡΡ ΠΎΠ³ΡΠΎΠΌΠ½ΠΎΠ΅ ΠΏΠΎΠ»Π΅ Π΄Π»Ρ ΡΠ°Π½ΡΠ°Π·ΠΈΠΉ, ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠ΅ Π»ΠΈΡΡ Π² Π±ΡΠ΄ΠΆΠ΅ΡΠ΅ ΠΈ ΡΠ΅Ρ Π½ΠΈΡΠ΅ΡΠΊΠΎΠΌ ΠΏΠΎΡΠ΅Π½ΡΠΈΠ°Π»Π΅ ΡΠ΅Ρ , ΠΊΡΠΎ ΡΡΠΎ Π±ΡΠ΄Π΅Ρ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ ΠΈ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡ. ΠΠΎ ΠΎΠΏΡΡΡ ΠΆΠ΅ ΡΠΊΠ°ΠΆΠ΅ΠΌ, ΡΡΠΎ ΡΠ΅ΠΌ ΠΏΡΠΎΡΠ΅ ΡΠΈΡΡΠ΅ΠΌΠ°, ΡΠ΅ΠΌ ΡΡΠ°Π±ΠΈΠ»ΡΠ½Π΅Π΅ ΠΎΠ½Π° ΡΠ°Π±ΠΎΡΠ°Π΅Ρ. ΠΡΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠΈ ΠΏΠΎΠ΄ΠΎΠ±Π½ΡΡ ΡΠ»ΠΎΡΠ² ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡ ΠΈΠ½ΡΡΠ°ΡΡΡΡΠΊΡΡΡΡ ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ Π³ΠΎΡΠ°Π·Π΄ΠΎ ΡΠ»ΠΎΠΆΠ½Π΅Π΅, Π° Π²ΠΌΠ΅ΡΡΠ΅ Ρ ΡΡΠΈΠΌ ΡΠ²Π΅Π»ΠΈΡΠΈΠ²Π°Π΅ΡΡΡ ΠΈ Π²ΡΠ΅ΠΌΡ, Π·Π°ΡΡΠ°ΡΠΈΠ²Π°Π΅ΠΌΠΎΠ΅ Π½Π° Π΄ΠΈΠ°Π³Π½ΠΎΡΡΠΈΠΊΡ ΠΈ Π²ΠΎΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ ΠΏΡΠΈ Π»ΡΠ±ΡΡ ΠΎΡΠΊΠ°Π·Π°Ρ .
Π Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°ΡΠΈΡ
ΠΡΠ»ΠΈ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΏΡΠ΅Π΄Π»Π°Π³Π°Π΅ΠΌΡΡ Π²Π°ΡΠΈΠ°Π½ΡΠΎΠ² Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡ Π²Π°ΠΌ ΡΠΎΠΆΠ΅ ΠΊΠ°ΠΆΠ΅ΡΡΡ Π½Π΅ΠΎΠΏΡΠ°Π²Π΄Π°Π½Π½ΠΎΠΉ (ΡΠ»ΠΎΠΆΠ½ΠΎΠΉ, Π΄ΠΎΡΠΎΠ³ΠΎΠΉβ¦), ΡΠΎ ΡΡΠΎΠΈΡ ΠΏΠΎΡΠΌΠΎΡΡΠ΅ΡΡ Π½Π° ΡΠΈΡΡΠ°ΡΠΈΡ Ρ Π΄ΡΡΠ³ΠΎΠΉ ΡΡΠΎΡΠΎΠ½Ρ. Π ΠΈΠΌΠ΅Π½Π½ΠΎ β ΠΊΠΎΠΏΠ½ΡΡΡ Π² Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΡ ΠΏΡΠΎΠ΅ΠΊΡΠ° ΠΈ ΠΈΡΠΊΠΎΡΠ΅Π½ΠΈΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ Π² ΠΊΠΎΠ΄Π΅, ΠΏΡΠΈΠ²ΡΠ·Π°Π²ΡΠΈΡΡ ΠΊ ΠΊΠ°ΠΊΠΎΠΉ-ΡΠΎ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠΉ ΡΡΡΡΠΊΡΡΡΠ΅ Π΄Π°Π½Π½ΡΡ Π² ΠΎΠ±ΡΠ°Π·Π΅, ΠΎΠ΄Π½ΠΎΠ·Π½Π°ΡΠ½ΠΎΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ³ΠΎ ΠΈΠ»ΠΈ ΠΏΡΠΎΡΠ΅Π΄ΡΡΡ Β«ΠΏΡΠΎΠ³ΡΠ΅Π²Π°Β» ΠΈ/ΠΈΠ»ΠΈ ΠΏΡΠ΅ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ Π°ΡΡΠ΅ΡΠΎΠ² Π½Π° ΡΡΠ°ΠΏΠ΅ ΡΠ±ΠΎΡΠΊΠΈ ΠΎΠ±ΡΠ°Π·Π°. Π’Π°ΠΊ ΠΌΡ ΠΏΠΎΠ»ΡΡΠ°Π΅ΠΌ Π°Π±ΡΠΎΠ»ΡΡΠ½ΠΎ ΠΏΡΠ΅Π΄ΡΠΊΠ°Π·ΡΠ΅ΠΌΠΎΠ΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΈ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΡΠΉ Π½Π°Π±ΠΎΡ ΡΠ°ΠΉΠ»ΠΎΠ² Π΄Π»Ρ Π²ΡΠ΅Ρ ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΠΉ ΠΈ ΡΠ΅ΠΏΠ»ΠΈΠΊ Π·Π°ΠΏΡΡΠ΅Π½Π½ΠΎΠ³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ.
ΠΡΠ»ΠΈ Π²Π΅ΡΠ½ΡΡΡΡΡ ΠΊ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠΌΡ ΠΏΡΠΈΠΌΠ΅ΡΡ Ρ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠΎΠΌ Yii ΠΈ Π½Π΅ ΡΠ³Π»ΡΠ±Π»ΡΡΡΡΡ Π² Π΅Π³ΠΎ ΡΡΡΡΠΎΠΉΡΡΠ²ΠΎ (ΡΡΠΎ Π½Π΅ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠ΅Π»ΡΡ ΡΡΠ°ΡΡΠΈ), Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΡΠΊΠ°Π·Π°ΡΡ Π½Π° Π΄Π²Π° ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΡΡ ΠΏΠΎΠ΄Ρ ΠΎΠ΄Π°:
- ΠΠ·ΠΌΠ΅Π½ΠΈΡΡ ΠΏΡΠΎΡΠ΅ΡΡ ΡΠ±ΠΎΡΠΊΠΈ ΠΎΠ±ΡΠ°Π·Π° Ρ ΡΠ΅ΠΌ, ΡΡΠΎΠ±Ρ ΡΠ°Π·ΠΌΠ΅ΡΠ°ΡΡ Π°ΡΡΠ΅ΡΡ Π² ΠΏΡΠ΅Π΄ΡΠΊΠ°Π·ΡΠ΅ΠΌΠΎΠΌ ΠΌΠ΅ΡΡΠ΅. Π’Π°ΠΊ ΠΏΡΠ΅Π΄Π»Π°Π³Π°ΡΡ/ΡΠ΅Π°Π»ΠΈΠ·ΡΡΡ Π² ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΡΡ
Π²ΡΠΎΠ΄Π΅
yii2-static-assets . - ΠΠΏΡΠ΅Π΄Π΅Π»ΡΡΡ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΡΠ΅ Ρ
ΡΡΠΈ Π΄Π»Ρ ΠΊΠ°ΡΠ°Π»ΠΎΠ³ΠΎΠ² Π°ΡΡΠ΅ΡΠΎΠ², ΠΊΠ°ΠΊ ΡΠ°ΡΡΠΊΠ°Π·ΡΠ²Π°Π΅ΡΡΡ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π²
ΡΡΠΎΠΉ ΠΏΡΠ΅Π·Π΅Π½ΡΠ°ΡΠΈΠΈ (Π½Π°ΡΠΈΠ½Π°Ρ ΡΠΎ ΡΠ»Π°ΠΉΠ΄Π° β35). ΠΡΡΠ°ΡΠΈ, Π°Π²ΡΠΎΡ Π΄ΠΎΠΊΠ»Π°Π΄Π° Π² ΠΊΠΎΠ½Π΅ΡΠ½ΠΎΠΌ ΡΡΡΡΠ΅ (ΠΈ Π½Π΅ Π±Π΅Π· ΠΎΡΠ½ΠΎΠ²Π°Π½ΠΈΠΉ!) ΡΠΎΠ²Π΅ΡΡΠ΅Ρ ΠΏΠΎΡΠ»Π΅ ΡΠ±ΠΎΡΠΊΠΈ Π°ΡΡΠ΅ΡΠΎΠ² Π½Π° build-ΡΠ΅ΡΠ²Π΅ΡΠ΅ Π·Π°Π³ΡΡΠΆΠ°ΡΡ ΠΈΡ Π² ΡΠ΅Π½ΡΡΠ°Π»ΡΠ½ΠΎΠ΅ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ (Π²ΡΠΎΠ΄Π΅ S3), ΠΏΠ΅ΡΠ΅Π΄ ΠΊΠΎΡΠΎΡΡΠΌ ΠΏΠΎΡΡΠ°Π²ΠΈΡΡ CDN.
ΠΠ°Π³ΡΡΠΆΠ°Π΅ΠΌΡΠ΅ ΡΠ°ΠΉΠ»Ρ
ΠΡΡΠ³ΠΎΠΉ ΠΊΠ΅ΠΉΡ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎ Π²ΡΡΡΡΠ΅Π»ΠΈΡ ΠΏΡΠΈ ΠΏΠ΅ΡΠ΅Π½ΠΎΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π² ΠΊΠ»Π°ΡΡΠ΅Ρ Kubernetes, β Ρ ΡΠ°Π½Π΅Π½ΠΈΠ΅ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΡ ΡΠ°ΠΉΠ»ΠΎΠ² Π² ΡΠ°ΠΉΠ»ΠΎΠ²ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΠ΅. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Ρ Π½Π°Ρ ΡΠ½ΠΎΠ²Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π° PHP, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ ΡΠ°ΠΉΠ»Ρ ΡΠ΅ΡΠ΅Π· ΡΠΎΡΠΌΡ Π·Π°Π³ΡΡΠ·ΠΊΠΈ, ΡΡΠΎ-ΡΠΎ Π΄Π΅Π»Π°Π΅Ρ Ρ Π½ΠΈΠΌΠΈ Π² ΠΏΡΠΎΡΠ΅ΡΡΠ΅ ΡΠ°Π±ΠΎΡΡ ΠΈ ΠΎΡΠ΄Π°ΡΡ ΠΎΠ±ΡΠ°ΡΠ½ΠΎ.
ΠΠ΅ΡΡΠΎ, ΠΊΡΠ΄Π° ΡΡΠΈ ΡΠ°ΠΉΠ»Ρ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΏΠΎΠΌΠ΅ΡΠ°ΡΡΡΡ, Π² ΡΠ΅Π°Π»ΠΈΡΡ Kubernetes Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±ΡΡΡ ΠΎΠ±ΡΠΈΠΌ Π΄Π»Ρ Π²ΡΠ΅Ρ ΡΠ΅ΠΏΠ»ΠΈΠΊ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ. Π Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΈ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ ΠΎΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΈΠΈ ΠΏΠ΅ΡΡΠΈΡΡΠΈΠ²Π½ΠΎΡΡΠΈ ΡΡΠΈΡ ΡΠ°ΠΉΠ»ΠΎΠ², ΡΠ°ΠΊΠΈΠΌ ΠΌΠ΅ΡΡΠΎΠΌ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΡΠΏΠΎΠΌΡΠ½ΡΡΡΠ΅ Π²ΡΡΠ΅ Π²Π°ΡΠΈΠ°Π½ΡΡ shared-ΡΡΡΡΠΎΠΉΡΡΠ², Π½ΠΎ, ΠΊΠ°ΠΊ ΠΌΡ Π²ΠΈΠ΄ΠΈΠΌ, Ρ Π½ΠΈΡ Π΅ΡΡΡ ΡΠ²ΠΎΠΈ ΠΌΠΈΠ½ΡΡΡ.
Π Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°ΡΠΈΡ
ΠΠ΄Π½ΠΈΠΌ ΠΈΠ· Π²Π°ΡΠΈΠ°Π½ΡΠΎΠ² ΡΠ΅ΡΠ΅Π½ΠΈΡ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ S3-ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΠ³ΠΎ Ρ
ΡΠ°Π½ΠΈΠ»ΠΈΡΠ° (ΠΏΡΡΡΡ Π΄Π°ΠΆΠ΅ ΠΊΠ°ΠΊΡΡ-ΡΠΎ ΡΠ°Π·Π½ΠΎΠ²ΠΈΠ΄Π½ΠΎΡΡΡ ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΠΈ self-hosted Π²ΡΠΎΠ΄Π΅ minio). ΠΠ΅ΡΠ΅Ρ
ΠΎΠ΄ Π½Π° ΡΠ°Π±ΠΎΡΡ Ρ S3 ΠΏΠΎΡΡΠ΅Π±ΡΠ΅Ρ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π½Π° ΡΡΠΎΠ²Π½Π΅ ΠΊΠΎΠ΄Π°, Π° ΠΊΠ°ΠΊ Π±ΡΠ΄Π΅Ρ ΠΏΡΠΎΠΈΡΡ
ΠΎΠ΄ΠΈΡΡ ΠΎΡΠ΄Π°ΡΠ° ΠΊΠΎΠ½ΡΠ΅Π½ΡΠ° Π½Π° ΡΡΠΎΠ½ΡΠ΅Π½Π΄Π΅, ΠΌΡ ΡΠΆΠ΅
ΠΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΠ΅ ΡΠ΅ΡΡΠΈΠΈ
ΠΡΠ΄Π΅Π»ΡΠ½ΠΎ ΡΡΠΎΠΈΡ ΠΎΡΠΌΠ΅ΡΠΈΡΡ ΠΎΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΈΡ Ρ ΡΠ°Π½Π΅Π½ΠΈΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΡ ΡΠ΅ΡΡΠΈΠΉ. ΠΠ΅ΡΠ΅Π΄ΠΊΠΎ ΡΡΠΎ ΡΠΎΠΆΠ΅ ΡΠ°ΠΉΠ»Ρ Π½Π° Π΄ΠΈΡΠΊΠ΅, ΡΡΠΎ Π² ΡΠ°Π·ΡΠ΅Π·Π΅ Kubernetes ΠΏΡΠΈΠ²Π΅Π΄ΡΡ ΠΊ ΠΏΠΎΡΡΠΎΡΠ½Π½ΡΠΌ Π·Π°ΠΏΡΠΎΡΠ°ΠΌ Π°Π²ΡΠΎΡΠΈΠ·Π°ΡΠΈΠΈ Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ, Π΅ΡΠ»ΠΈ Π΅Π³ΠΎ Π·Π°ΠΏΡΠΎΡ ΠΏΠΎΠΏΠ°Π΄ΡΡ Π² Π΄ΡΡΠ³ΠΎΠΉ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ.
ΠΡΡΠ°ΡΡΠΈ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° ΡΠ΅ΡΠ°Π΅ΡΡΡ Π²ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ΠΌ stickySessions
Π½Π° ingress (ΡΠΈΡΠ° ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΡΡΡ Π²ΠΎ Π²ΡΠ΅Ρ
ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΡΡ
ΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΠ°Ρ
ingress β ΠΏΠΎΠ΄ΡΠΎΠ±Π½Π΅Π΅ ΡΠΌ. Π²
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, Π½ΠΎ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ Β«ΠΏΡΡΡΠΈΡΡ ΠΊΠΎΡΠ½ΠΈΒ».
ΠΠ±ΡΠΈΠΉ ΠΆΠ΅ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΠΌΡΠΉ ΠΏΡΡΡ ΡΠ²ΠΎΠ΄ΠΈΡΡΡ ΠΊ ΡΠΎΠΌΡ, ΡΡΠΎΠ±Ρ ΠΈΠ·Π±Π°Π²ΠΈΡΡΡΡ ΠΎΡ Π½ΠΈΡ
Π² ΠΏΠΎΠ»ΡΠ·Ρ Π°ΡΡ
ΠΈΡΠ΅ΠΊΡΡΡΠ½ΠΎΠΉ Π΄ΠΎΡΠ°Π±ΠΎΡΠΊΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π² ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠΈ Ρ ΡΠΆΠ΅ Ρ
ΠΎΡΠΎΡΠΎ ΠΌΠ½ΠΎΠ³ΠΈΠΌ ΠΈΠ·Π²Π΅ΡΡΠ½ΡΠΌ
P.S.
Π§ΠΈΡΠ°ΠΉΡΠ΅ ΡΠ°ΠΊΠΆΠ΅ Π² Π½Π°ΡΠ΅ΠΌ Π±Π»ΠΎΠ³Π΅:
- Β«
ΠΡΠΎΠΊΡΠΈΡΡΠ΅ΠΌ ΡΠ°ΠΉΠ»Ρ ΠΈΠ· AWS S3 ΡΡΠ΅Π΄ΡΡΠ²Π°ΠΌΠΈ nginx Β»; - Β«
7 Π»ΡΡΡΠΈΡ ΠΏΡΠ°ΠΊΡΠΈΠΊ ΠΏΠΎ ΡΠΊΡΠΏΠ»ΡΠ°ΡΠ°ΡΠΈΠΈ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΎΠ² ΠΏΠΎ Π²Π΅ΡΡΠΈΠΈ Google Β»; - Β«
7 ΠΏΡΠΈΠ½ΡΠΈΠΏΠΎΠ² ΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, ΠΎΡΠ½ΠΎΠ²Π°Π½Π½ΡΡ Π½Π° ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ°Ρ Β» (ΠΎΡ Red Hat); - Β«
7 Π½Π΅Π΄ΠΎΡΡΠ°ΡΡΠΈΡ ΡΠ°ΠΊΡΠΎΡΠΎΠ² Π² ΠΏΠΎΠ΄Ρ ΠΎΠ΄Π΅ 12 Factor App Β».
ΠΡΡΠΎΡΠ½ΠΈΠΊ: habr.com