αα
ααααααααΎαααααΎαααΆα CI/CD αααααααΎ Kubernetes ααααααααααα αΆααΎαα‘αΎαααααΆααα·ααααΈααααΆαααΆααααααΌαααΆαααα αααααΆαα
ααΆααααααααααααΈ αα·ααααααα·ααΈαααααααΌαααΆαααααααα
ααΆα ααΆαα·ααααα
ααααΆααααΆααααααΎααααααα·ααΈααΆααΆαααΆααααααΆαααααα»αααΆαααα½αααΆα ΠΎΠ΄ΠΈΠ½ ααΌαααΆααααααΉαααααΌαααΆαααααΎ Π²ΡΠ΅Ρ
ααα·ααααΆααααααα αα·ααααα»αα αααααΆαααβαααβαααααΆααβααΈβααΆαααααΉαααααΌα
αααααΆαααΆαααΆααααα α’αααααΉααα·αααΎαααααΆααααΆαααα αααα»αααααΆαααΆααααααΌαααααααα αααααααααΎααααΆααααααααααααααααααααα½α ααΆααααα ααααα ααΆαααααΎααααΆαααααααΆααααααα·αααΎααΆαααααΎααααΆαααααααααααααααααΆα α αΎαααααααααααα αααα»α "ααα·ααΆααΆαααααααΆ" ααΆααΆααααα½ααααα»αααΆααααααααΆααα αααα»α Kubernetes α₯αα·ααΆαααααα’αΆα ααααΆαααΆαααα αΆ ααΆαα·ααααα ααααααα’ααααα½ααααααααΆααΆααΎαααααΌαα ααααααααααααα·αα αααααααα·αα’αΆα αααααΎααααααααααΆαα αααααΆαα ααΆαααααααααααααΎααα ααΆααααααα α¬ααΌααααΈααααα’αα glance ααααΌα ... ααΆααΆααΆαααααΆαααααααααΌαα αα αΆαααΆααααΆαααΆαααΆαα αααΎαα’αΆα αα·ααα½α ααααΌαααΆααααααααΆαααΆαααααΆαααααααα.
ααΌααααα‘ααααΎααααααααααΆααααααααααΆαααααααα·αααααααΆααααΆααααααΆαα»αα―αααΆααααα’αΆα
ααΆαα±ααααΆααααα·ααΆααα·αααα’αα
αααααααΎαααΆαα
ααααα α αΎααααααΆααα
ααα’α»ααααα αΆαααααΌαααααΉαααααΌαααααααααααααααα
ααΆααααα»ααα·αα·αααα
ααΎααααΈαααα αΆα ααΌααα·α αΆαααΆαααααα·ααΈαααααΆααααααααΎαααααααααΆαααΈαααααΎααα·αα·αααα ααΎααααΈααα½αααΆααααα»αααΌαααΆα αα ααΆααααα αα·αα’αααΈαααααααααα α§ααΆα ααα ααααααααα Yii PHP ααΆααααααα·ααΈααααααααααααααααααααααααααααΎαααΌαααααααααααα½ααααα ααΌα ααααα αΎα ααααααααΊααΆαααα»αααααΌααααααΆααααα ααααααα·αα·αααααααααΆααααααααα·ααααααααααααΆαα αα·ααα αα (αααααααΌαααΆαααααΎαααααΆααα ααα»ααααΆα αααΎα - α§ααΆα ααα ααΎααααΈαα»αααααΆααααΆααααα½αααααΆαα αααααααααΆαααΆαα»ααΆα αααΎαααααΎααααΆαααΌα ααααΆ)α ααΌα αααα α ααααΈαααα’αα ααΆααΎαααααΌααααα’αααα αΌαααααΎαααΌαα»αααααΆαααα ααααα α―αααΆααα·αα·αααα (ααΆααα·α ααΆααΉαααΆαα symlinks ααα»αααααααααααααα) ααααΌαααΆααααααΎαα‘αΎα αα·αααΆααα ααααΆαα½ααα root ααΌαα αααα½αααααααααΆααααΆαααΆαααααααΆααααα
-
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-αα·αα·αααα-ααααααααααα . - ααααααααααΆααΆααααΆαααααααΆαααααααΈααααααααααα ααΌα
αααααΆααα·ααΆααααΆαααα»α α§.
αααααα αΆααααα (α αΆααααααΎαααΈααααΆαααα α£α₯)α αα·ααΆαα’αΈααα αΉα α’ααααα·αααααααααΆαααΆααααα ααΈαααα»α (α αΎααα·αααααααααααΆαα ααα»αααα!) ααααΆαααΆαααααΆααααΈααΆααααα»αααααααααααααα ααΎαααΆαααΈααα αααα»αα‘αΎααα½αααΆαα αααααααααα»ααααααΆα (ααΌα ααΆ S35) αα ααΈαα»αααααααααΆαα CDN α
α―αααΆααααα’αΆα ααΆαααααΆαα
ααααΈαα½αααααααααααΆααααΆααΉαα αΌαααααααα αααααααααααααα·ααΈαα α ααααα Kubernetes ααΊααΆααααααΆαα»αα―αααΆαα’αααααααΎααααΆαααα αααα»αααααααααα―αααΆαα ααΆα§ααΆα ααα ααΎαααΆααααααα·ααΈ PHP ααααααααααααα½αααα―αααΆαααΆαααααααααααααα»αα‘αΎα ααααΎα’αααΈαα½αααΆαα½ααα½αααααα‘α»ααααααααα·ααααα·ααΆα α αΎααααααΌααα½ααααααα·αα
αα αααα»α Kubernetes ααΈααΆαααααα―αααΆαααΆααααααα½αααααααΌαααΆαααΆαααα½αααααΆααΏαααααααΆαααααΆαααααααα·ααΈα ααααααΆααα’αααααααααα·ααΈα α’αΆαααααααΎααΆααααα»αααααΆααααααααα·ααΈ αα·ααααααΌαααΆααααα»αααΆααααα αααΆαααΆααααΆααααα―αααΆαααΆααααα αααααΎαα§ααααααααααΆαα ααααααααααααΆααααααΆααααΆαααΎα’αΆα ααΆαααααααααααα ααα»ααααααΌα αααααΎαααΎααα½αααααΆααα»ααα·ααααα·ααααααΆα
α’αα»ααΆαααα
αααααααααΆααα½αααΊ ααααΎααα ααααα»ααααααααΌαααααΆααΆαα½α S3 (αααααΈααΆααΆααΆαααααααααααααααααα ααααααααα½αα―αααΌα
ααΆ minio ααααα)α ααΆαααααΌααα
S3 ααΉααααααΌαα±ααααΆαααΆαααααΆααααααΌα αα
ααααα·ααααααΌααα·ααααααααααααΉαααΆαααΉαααααΌαααΆαα
ααα
αΆααα
αααααααΆααα»α ααΎαααΆααα½α
α αΎα
ααααα’αααααααΎααααΆαα
αααα‘ααααΈααααΆααΆαα½αα’ααααα α·ααααα»αααΆααα ααααααΆααααα αααΆααααα»αααααα’αααααααΎααααΆααα ααΆααΏααααΆαααααααααΆα―αααΆααα ααΎααΆαααααα ααααα αααα»αααα·αααααα Kubernetes ααΉαααΆααα ααααΆαααααΎαα»αααΆαα’αα»ααααΆαααΆαααα αΆαααΈα’αααααααΎααααΆαα ααααα·αααΎααααΎααααααΆαααααα αααα αααα»ααα»αααΊαααααααααααα
αααα αΆααααΌαααΆααααααααΆααα½αααααααααααΆαααΎα stickySessions
αα
ααΎααΆαα
αΌα (αααααααα·αααααααΌαααΆαααΆαααααα
αααα»αα§ααααααααααΆ 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 αα·ααααααααααΆαααααααααααΆ - ααΆααΌαα αααααααααααΎαα―αααΆαααΆαααααα»αα
ααα ααααΈααααα·ααααΆα
αααααααααΆαα αααααΆαα ααΆαααααααααααααΆααα·ααΆααααΆαα αααα»αα’αααααααΊααααα·αααααα»αααΆαααααΎααααΆαααααααα»αααααααααΆ "ααΎα αααα" ααααααα’αΆααααααα»ααααα (αααααααΆαααα ααΆαααααααααααα’αΆαααΆααΆααΆα’αααααααααΆαααααααααΆα)α αα½αααΆα’αΆα ααΆααααααααααα»αααααΆααααΆαααααΌαααααΆαααααααααααα·ααΈαα Kubernetes ααα»αααααα·ααα½αα αΆααα¬αααα
ααααΌααααααΆαααααΆαααΆααΌαα
ααΊααΎααααΈαααα
αΆαααα½αααΆαα
αααα»αααΆααααα
α·αααααααΆαααααααααααΆαααααααααααααααα·ααΈααααααΆαα’αααΈαααααααΌαααΆαααααααΆαααααΆαα
αααΆαααααααΆααααα»αααααΆα
αααΎαα
PS
ααΌαα’αΆαααααααα ααΎαααααααααααΎαα
- Β«
ααααΌααααΈα―αααΆαααΈ AWS S3 αααααααΎ nginx Β» - Β«
ααΆαα’αα»ααααααα’αααα»αα ααα½α 7 αααααΆααααΆαααααΎααααΆαααα»αααΊαααααααα ααΆα Google Β» - Β«
7 αααααΆααααααααΆααααΆααα ααΆαααααα·ααΈαααααΆαααΌαααααΆαααΎαα»αααΊααα Β» (ααΈ Red Hat); - Β«
αααααΆααΆαααααα½α 7 αα αααα»ααααααα·ααΈ 12 Factor "α
ααααα: www.habr.com