ΠΡΠΈ ΠΈΠ·Π³ΡΠ°ΠΆΠ΄Π°Π½Π΅ΡΠΎ Π½Π° 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 ΡΡΡΠ²ΡΡ. Π‘Π»Π΅Π΄ ΡΠΎΠ²Π° ΠΎΠ±Π°ΡΠ΅ ΡΡΡΠ±Π²Π° Π΄Π° Π²Π·Π΅ΠΌΠ΅ΡΠ΅ ΠΏΡΠ΅Π΄Π²ΠΈΠ΄ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΠΎ ΡΠ²Π΅Π»ΠΈΡΠ°Π²Π°Π½Π΅ Π½Π° Π²ΡΠ΅ΠΌΠ΅ΡΠΎ Π·Π° ΠΎΡΠ³ΠΎΠ²ΠΎΡ Π·Π° ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° Π½Π° Π·Π°ΡΠ²ΠΊΠΈ ΠΎΡ ΡΠ΅Π± ΡΡΡΠ²ΡΡΠ° ΠΈ ΡΠΎΠ»Π΅ΡΠ°Π½ΡΠ½ΠΎΡΡΡΠ° ΠΊΡΠΌ Π³ΡΠ΅ΡΠΊΠΈ ΡΠ΅ ΠΎΡΡΠ°Π²ΠΈ ΠΌΠ½ΠΎΠ³ΠΎ Π΄Π° ΡΠ΅ ΠΆΠ΅Π»Π°Π΅. ΠΠΎΡΠ»Π΅Π΄ΡΡΠ²ΠΈΡΡΠ° ΠΎΡ ΠΏΠΎΠ²ΡΠ΅Π΄Π°ΡΠ° ΡΠ° ΠΊΠ°ΡΠ°ΡΡΡΠΎΡΠ°Π»Π½ΠΈ: Π·Π°Π³ΡΠ±Π°ΡΠ° Π½Π° ΠΌΠΎΠ½ΡΠΈΡΠ°Π½Π΅ΡΠΎ ΠΎΠ±ΡΠΈΡΠ° ΠΊΠ»ΡΡΡΠ΅ΡΠ° Π½Π° ΡΠΌΡΡΡ ΠΏΠΎΠ΄ Π½Π°ΡΠΈΡΠΊΠ° Π½Π° ΡΠΎΠ²Π°ΡΠ° Π½Π° LA, ΠΊΠΎΠΉΡΠΎ ΡΠ΅ Π²ΡΡΡΠ²Π° ΠΊΡΠΌ Π½Π΅Π±Π΅ΡΠΎ.
ΠΡΠ²Π΅Π½ Π²ΡΠΈΡΠΊΠΎ Π΄ΡΡΠ³ΠΎ, Π²ΡΠΈΡΠΊΠΈ ΠΎΠΏΡΠΈΠΈ Π·Π° ΡΡΠ·Π΄Π°Π²Π°Π½Π΅ Π½Π° ΠΏΠΎΡΡΠΎΡΠ½Π½ΠΎ Ρ
ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ ΡΠ΅ ΠΈΠ·ΠΈΡΠΊΠ²Π°Ρ ΠΏΠΎΡΠΈΡΡΠ²Π°Π½Π΅ Π½Π° ΡΠΎΠ½Π° ΠΎΡΡΠ°ΡΠ΅Π»ΠΈ Π½Π°Π±ΠΎΡΠΈ ΠΎΡ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅, Π½Π°ΡΡΡΠΏΠ°Π½ΠΈ Π·Π° ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ ΠΏΠ΅ΡΠΈΠΎΠ΄ ΠΎΡ Π²ΡΠ΅ΠΌΠ΅. ΠΡΠ΅Π΄ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΈ Ρ PHP ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΏΠΎΡΡΠ°Π²ΠΈΡΠ΅ DaemonSet ΠΎΡ ΠΊΠ΅ΡΠΈΡΠ°Π½Π΅ Π½Π° nginx, ΠΊΠΎΠ΅ΡΠΎ ΡΠ΅ ΡΡΡ
ΡΠ°Π½ΡΠ²Π° ΠΊΠΎΠΏΠΈΡ Π½Π° Π°ΠΊΡΠΈΠ²ΠΈ Π·Π° ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ ΠΏΠ΅ΡΠΈΠΎΠ΄ ΠΎΡ Π²ΡΠ΅ΠΌΠ΅. Π’ΠΎΠ²Π° ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΡΠ΅ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠ° Π»Π΅ΡΠ½ΠΎ Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° proxy_cache
Ρ Π΄ΡΠ»Π±ΠΎΡΠΈΠ½Π° Π½Π° ΡΡΡ
ΡΠ°Π½Π΅Π½ΠΈΠ΅ Π² Π΄Π½ΠΈ ΠΈΠ»ΠΈ Π³ΠΈΠ³Π°Π±Π°ΠΉΡΠΈ Π΄ΠΈΡΠΊΠΎΠ²ΠΎ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²ΠΎ.
ΠΠΎΠΌΠ±ΠΈΠ½ΠΈΡΠ°Π½Π΅ΡΠΎ Π½Π° ΡΠΎΠ·ΠΈ ΠΌΠ΅ΡΠΎΠ΄ Ρ ΡΠ°Π·ΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡΠ΅ ΡΠ°ΠΉΠ»ΠΎΠ²ΠΈ ΡΠΈΡΡΠ΅ΠΌΠΈ, ΡΠΏΠΎΠΌΠ΅Π½Π°ΡΠΈ ΠΏΠΎ-Π³ΠΎΡΠ΅, ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Ρ ΠΎΠ³ΡΠΎΠΌΠ½ΠΎ ΠΏΠΎΠ»Π΅ Π·Π° Π²ΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅, ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΎ ΡΠ°ΠΌΠΎ ΠΎΡ Π±ΡΠ΄ΠΆΠ΅ΡΠ° ΠΈ ΡΠ΅Ρ Π½ΠΈΡΠ΅ΡΠΊΠΈΡ ΠΏΠΎΡΠ΅Π½ΡΠΈΠ°Π» Π½Π° ΡΠ΅Π·ΠΈ, ΠΊΠΎΠΈΡΠΎ ΡΠ΅ Π³ΠΎ ΠΏΡΠΈΠ»Π°Π³Π°Ρ ΠΈ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ°Ρ. ΠΡ ΠΎΠΏΠΈΡ ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° ΠΊΠ°ΠΆΠ΅ΠΌ, ΡΠ΅ ΠΊΠΎΠ»ΠΊΠΎΡΠΎ ΠΏΠΎ-ΠΏΡΠΎΡΡΠ° Π΅ ΡΠΈΡΡΠ΅ΠΌΠ°ΡΠ°, ΡΠΎΠ»ΠΊΠΎΠ²Π° ΠΏΠΎ-ΡΡΠ°Π±ΠΈΠ»Π½Π° Π΅ ΡΡ. ΠΠΎΠ³Π°ΡΠΎ ΡΠ΅ Π΄ΠΎΠ±Π°Π²ΡΡ ΡΠ°ΠΊΠΈΠ²Π° ΡΠ»ΠΎΠ΅Π²Π΅, ΡΡΠ°Π²Π° ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎ-ΡΡΡΠ΄Π½ΠΎ Π΄Π° ΡΠ΅ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ° ΠΈΠ½ΡΡΠ°ΡΡΡΡΠΊΡΡΡΠ°ΡΠ°, ΠΊΠ°ΡΠΎ Π² ΡΡΡΠΎΡΠΎ Π²ΡΠ΅ΠΌΠ΅ Π²ΡΠ΅ΠΌΠ΅ΡΠΎ, ΠΈΠ·ΡΠ°Π·Ρ ΠΎΠ΄Π²Π°Π½ΠΎ Π·Π° Π΄ΠΈΠ°Π³Π½ΠΎΡΡΠΈΠΊΠ° ΠΈ Π²ΡΠ·ΡΡΠ°Π½ΠΎΠ²ΡΠ²Π°Π½Π΅ ΠΎΡ Π΅Π²Π΅Π½ΡΡΠ°Π»Π½ΠΈ ΠΏΠΎΠ²ΡΠ΅Π΄ΠΈ, ΡΠ΅ ΡΠ²Π΅Π»ΠΈΡΠ°Π²Π°.
ΠΏΡΠ΅ΠΏΠΎΡΡΠΊΠ°
ΠΠΊΠΎ ΠΏΡΠΈΠ»Π°Π³Π°Π½Π΅ΡΠΎ Π½Π° ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΡΠ΅ ΠΎΠΏΡΠΈΠΈ Π·Π° ΡΡΡ ΡΠ°Π½Π΅Π½ΠΈΠ΅ ΡΡΡΠΎ Π²ΠΈ ΠΈΠ·Π³Π»Π΅ΠΆΠ΄Π° Π½Π΅ΠΎΠΏΡΠ°Π²Π΄Π°Π½ΠΎ (ΡΠ»ΠΎΠΆΠ½ΠΎ, ΡΠΊΡΠΏΠΎ ...), ΡΠΎΠ³Π°Π²Π° ΡΠΈ ΡΡΡΡΠ²Π° Π΄Π° ΠΏΠΎΠ³Π»Π΅Π΄Π½Π΅ΡΠ΅ ΡΠΈΡΡΠ°ΡΠΈΡΡΠ° ΠΎΡ Π΄ΡΡΠ³Π°ΡΠ° ΡΡΡΠ°Π½Π°. Π ΠΈΠΌΠ΅Π½Π½ΠΎ Π΄Π° ΡΠ΅ ΡΠ°Π·ΡΠΎΠ²ΠΈ Π² Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ°ΡΠ° Π½Π° ΠΏΡΠΎΠ΅ΠΊΡΠ° ΠΈ ΠΊΠΎΡΠΈΠ³ΠΈΡΠ°ΠΉΡΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° Π² ΠΊΠΎΠ΄Π°, ΡΠ²ΡΡΠ·Π°Π½Π° Ρ Π½ΡΠΊΠ°ΠΊΠ²Π° ΡΡΠ°ΡΠΈΡΠ½Π° ΡΡΡΡΠΊΡΡΡΠ° ΠΎΡ Π΄Π°Π½Π½ΠΈ Π² ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ, Π½Π΅Π΄Π²ΡΡΠΌΠΈΡΠ»Π΅Π½ΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π½Π° ΡΡΠ΄ΡΡΠΆΠ°Π½ΠΈΠ΅ΡΠΎ ΠΈΠ»ΠΈ ΠΏΡΠΎΡΠ΅Π΄ΡΡΠ° Π·Π° βΠ·Π°Π³ΡΡΠ²Π°Π½Π΅β ΠΈ/ΠΈΠ»ΠΈ ΠΏΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»Π½ΠΎ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠ°Π½Π΅ Π½Π° Π°ΠΊΡΠΈΠ²ΠΈ Π½Π° Π΅ΡΠ°ΠΏΠ° Π½Π° ΡΠ³Π»ΠΎΠ±ΡΠ²Π°Π½Π΅ Π½Π° ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ. ΠΠΎ ΡΠΎΠ·ΠΈ Π½Π°ΡΠΈΠ½ ΠΏΠΎΠ»ΡΡΠ°Π²Π°ΠΌΠ΅ Π°Π±ΡΠΎΠ»ΡΡΠ½ΠΎ ΠΏΡΠ΅Π΄Π²ΠΈΠ΄ΠΈΠΌΠΎ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΈ Π΅Π΄Π½Π°ΠΊΡΠ² Π½Π°Π±ΠΎΡ ΠΎΡ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ Π·Π° Π²ΡΠΈΡΠΊΠΈ ΡΡΠ΅Π΄ΠΈ ΠΈ ΡΠ΅ΠΏΠ»ΠΈΠΊΠΈ Π½Π° ΡΠ°Π±ΠΎΡΠ΅ΡΠΎΡΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅.
ΠΠΊΠΎ ΡΠ΅ Π²ΡΡΠ½Π΅ΠΌ ΠΊΡΠΌ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΈΡ ΠΏΡΠΈΠΌΠ΅Ρ Ρ ΡΡΠ΅ΠΉΠΌΡΡΡΠΊΠ° Yii ΠΈ Π½Π΅ Π½Π°Π²Π»ΠΈΠ·Π°ΠΌΠ΅ Π² Π½Π΅Π³ΠΎΠ²Π°ΡΠ° ΡΡΡΡΠΊΡΡΡΠ° (ΠΊΠΎΠ΅ΡΠΎ Π½Π΅ Π΅ ΡΠ΅Π»ΡΠ° Π½Π° ΡΡΠ°ΡΠΈΡΡΠ°), Π΄ΠΎΡΡΠ°ΡΡΡΠ½ΠΎ Π΅ Π΄Π° ΠΏΠΎΡΠΎΡΠΈΠΌ Π΄Π²Π° ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΠΈ ΠΏΠΎΠ΄Ρ ΠΎΠ΄Π°:
- ΠΡΠΎΠΌΠ΅Π½Π΅ΡΠ΅ ΠΏΡΠΎΡΠ΅ΡΠ° Π½Π° ΠΈΠ·Π³ΡΠ°ΠΆΠ΄Π°Π½Π΅ Π½Π° ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅, Π·Π° Π΄Π° ΠΏΠΎΡΡΠ°Π²ΠΈΡΠ΅ Π°ΠΊΡΠΈΠ²ΠΈ Π½Π° ΠΏΡΠ΅Π΄Π²ΠΈΠ΄ΠΈΠΌΠΎ ΠΌΡΡΡΠΎ. Π’ΠΎΠ²Π° ΡΠ΅ ΠΏΡΠ΅Π΄Π»Π°Π³Π°/ΠΏΡΠΈΠ»Π°Π³Π° Π² ΡΠ°Π·ΡΠΈΡΠ΅Π½ΠΈΡ ΠΊΠ°ΡΠΎ
yii2-ΡΡΠ°ΡΠΈΡΠ½ΠΈ Π°ΠΊΡΠΈΠ²ΠΈ . - ΠΠ΅ΡΠΈΠ½ΠΈΡΠ°ΠΉΡΠ΅ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΈ Ρ
Π΅ΡΠΎΠ²Π΅ Π·Π° Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΠΈ Ρ Π°ΠΊΡΠΈΠ²ΠΈ, ΠΊΠ°ΠΊΡΠΎ Π΅ ΠΎΠ±ΡΡΠ΄Π΅Π½ΠΎ Π½Π°ΠΏΡ.
ΡΠ°Π·ΠΈ ΠΏΡΠ΅Π·Π΅Π½ΡΠ°ΡΠΈΡ (Π·Π°ΠΏΠΎΡΠ²Π°ΠΉΠΊΠΈ ΠΎΡ ΡΠ»Π°ΠΉΠ΄ β 35). ΠΠ΅ΠΆΠ΄Ρ Π΄ΡΡΠ³ΠΎΡΠΎ, Π°Π²ΡΠΎΡΡΡ Π½Π° Π΄ΠΎΠΊΠ»Π°Π΄Π° Π² ΠΊΡΠ°ΠΉΠ½Π° ΡΠΌΠ΅ΡΠΊΠ° (ΠΈ Π½Π΅ Π±Π΅Π· ΠΏΡΠΈΡΠΈΠ½Π°!) ΡΡΠ²Π΅ΡΠ²Π° ΡΠ»Π΅Π΄ ΡΠ³Π»ΠΎΠ±ΡΠ²Π°Π½Π΅ Π½Π° Π°ΠΊΡΠΈΠ²ΠΈ Π½Π° ΡΡΡΠ²ΡΡΠ° Π·Π° ΠΈΠ·Π³ΡΠ°ΠΆΠ΄Π°Π½Π΅ Π΄Π° Π³ΠΈ ΠΊΠ°ΡΠΈΡΠ΅ Π² ΡΠ΅Π½ΡΡΠ°Π»Π½ΠΎ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ (ΠΊΠ°ΡΠΎ S3), ΠΏΡΠ΅Π΄ ΠΊΠΎΠ΅ΡΠΎ Π΄Π° ΠΏΠΎΡΡΠ°Π²ΠΈΡΠ΅ CDN.
ΠΠ·ΡΠ΅Π³Π»ΡΠ½ΠΈΡ
ΠΡΡΠ³ ΡΠ»ΡΡΠ°ΠΉ, ΠΊΠΎΠΉΡΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΎ ΡΠ΅ Π²Π»Π΅Π·Π΅ Π² Π΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ ΠΏΡΠΈ ΠΌΠΈΠ³ΡΠΈΡΠ°Π½Π΅ Π½Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΊΡΠΌ ΠΊΠ»ΡΡΡΠ΅Ρ Π½Π° Kubernetes, Π΅ ΡΡΡ ΡΠ°Π½ΡΠ²Π°Π½Π΅ΡΠΎ Π½Π° ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΡΠΊΠΈ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ Π²ΡΠ² ΡΠ°ΠΉΠ»ΠΎΠ²Π°ΡΠ° ΡΠΈΡΡΠ΅ΠΌΠ°. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΎΡΠ½ΠΎΠ²ΠΎ ΠΈΠΌΠ°ΠΌΠ΅ PHP ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, ΠΊΠΎΠ΅ΡΠΎ ΠΏΡΠΈΠ΅ΠΌΠ° ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ ΡΡΠ΅Π· ΡΠΎΡΠΌΠ° Π·Π° ΠΊΠ°ΡΠ²Π°Π½Π΅, ΠΏΡΠ°Π²ΠΈ Π½Π΅ΡΠΎ Ρ ΡΡΡ ΠΏΠΎ Π²ΡΠ΅ΠΌΠ΅ Π½Π° ΡΠ°Π±ΠΎΡΠ° ΠΈ Π³ΠΈ ΠΈΠ·ΠΏΡΠ°ΡΠ° ΠΎΠ±ΡΠ°ΡΠ½ΠΎ.
Π Kubernetes ΠΌΠ΅ΡΡΠΎΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ, ΠΊΡΠ΄Π΅ΡΠΎ ΡΠ΅Π·ΠΈ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ ΡΡΡΠ±Π²Π° Π΄Π° Π±ΡΠ΄Π°Ρ ΠΏΠΎΡΡΠ°Π²Π΅Π½ΠΈ, ΡΡΡΠ±Π²Π° Π΄Π° Π΅ ΠΎΠ±ΡΠΎ Π·Π° Π²ΡΠΈΡΠΊΠΈ ΡΠ΅ΠΏΠ»ΠΈΠΊΠΈ Π½Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ. Π Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ ΠΎΡ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΡΠ° Π½Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ ΠΈ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΡΠ° ΠΎΡ ΠΎΡΠ³Π°Π½ΠΈΠ·ΠΈΡΠ°Π½Π΅ Π½Π° ΡΡΡΠΎΠΉΡΠΈΠ²ΠΎΡΡΡΠ° Π½Π° ΡΠ΅Π·ΠΈ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅, Π³ΠΎΡΠ΅ΡΠΏΠΎΠΌΠ΅Π½Π°ΡΠΈΡΠ΅ ΠΎΠΏΡΠΈΠΈ Π·Π° ΡΠΏΠΎΠ΄Π΅Π»Π΅Π½ΠΎ ΡΡΡΡΠΎΠΉΡΡΠ²ΠΎ ΠΌΠΎΠ³Π°Ρ Π΄Π° Π±ΡΠ΄Π°Ρ ΡΠ°ΠΊΠΎΠ²Π° ΠΌΡΡΡΠΎ, Π½ΠΎ, ΠΊΠ°ΠΊΡΠΎ Π²ΠΈΠΆΠ΄Π°ΠΌΠ΅, ΡΠ΅ ΠΈΠΌΠ°Ρ ΡΠ²ΠΎΠΈΡΠ΅ Π½Π΅Π΄ΠΎΡΡΠ°ΡΡΡΠΈ.
ΠΏΡΠ΅ΠΏΠΎΡΡΠΊΠ°
ΠΠ΄Π½ΠΎ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ Π΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΠΊΠΈ S3-ΡΡΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎ Ρ
ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ (Π΄ΠΎΡΠΈ Π°ΠΊΠΎ ΡΠΎΠ²Π° Π΅ Π½ΡΠΊΠ°ΠΊΡΠ² Π²ΠΈΠ΄ ΡΠ°ΠΌΠΎΡΡΠΎΡΡΠ΅Π»Π½ΠΎ Ρ
ΠΎΡΡΠ²Π°Π½Π° ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΡ ΠΊΠ°ΡΠΎ minio). ΠΡΠ΅ΠΌΠΈΠ½Π°Π²Π°Π½Π΅ΡΠΎ ΠΊΡΠΌ 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, Π½ΠΎ Π½Π΅ ΡΡΡΠ±Π²Π° Π΄Π° ΡΠ΅ Π²ΠΊΠΎΡΠ΅Π½ΡΠ²Π°Ρ.
ΠΠ±ΡΠΈΡΡ ΠΏΡΠ΅ΠΏΠΎΡΡΡΠΈΡΠ΅Π»Π΅Π½ ΠΏΡΡ Π΅ Π΄Π° ΡΠ΅ ΠΎΡΡΡΠ²Π΅ΡΠ΅ ΠΎΡ ΡΡΡ
Π² ΠΏΠΎΠ»Π·Π° Π½Π° Π°ΡΡ
ΠΈΡΠ΅ΠΊΡΡΡΠ½Π° ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΈΡ Π½Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ Π² ΡΡΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠ΅ Ρ ΡΠΎΠ²Π°, ΠΊΠΎΠ΅ΡΠΎ Π²Π΅ΡΠ΅ Π΅ Π΄ΠΎΠ±ΡΠ΅ ΠΈΠ·Π²Π΅ΡΡΠ½ΠΎ Π½Π° ΠΌΠ½ΠΎΠ·ΠΈΠ½Π°
PS
ΠΡΠΎΡΠ΅ΡΠ΅ΡΠ΅ ΡΡΡΠΎ Π² Π½Π°ΡΠΈΡ Π±Π»ΠΎΠ³:
- Β«
ΠΡΠΎΠΊΡΠΈΡΠ°Π½Π΅ Π½Π° ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ ΠΎΡ AWS S3 Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° nginx Β»; - Β«
7-ΡΠ΅ Π½Π°ΠΉ-Π΄ΠΎΠ±ΡΠΈ ΠΏΡΠ°ΠΊΡΠΈΠΊΠΈ Π·Π° ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΈ Π½Π° Google Β»; - Β«
7 ΠΏΡΠΈΠ½ΡΠΈΠΏΠ° Π·Π° ΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠ°Π½Π΅ Π½Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, Π±Π°Π·ΠΈΡΠ°Π½ΠΈ Π½Π° ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΈ Β» (ΠΎΡ Red Hat); - Β«
7 Π»ΠΈΠΏΡΠ²Π°ΡΠΈ ΡΠ°ΠΊΡΠΎΡΠ° Π² ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ Ρ 12 ΡΠ°ΠΊΡΠΎΡΠ° ".
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: www.habr.com