ืงื‘ืฆื™ื ืžืงื•ืžื™ื™ื ื‘ืขืช ื”ืขื‘ืจืช ืืคืœื™ืงืฆื™ื” ืœ-Kubernetes

ืงื‘ืฆื™ื ืžืงื•ืžื™ื™ื ื‘ืขืช ื”ืขื‘ืจืช ืืคืœื™ืงืฆื™ื” ืœ-Kubernetes

ื›ืืฉืจ ื‘ื•ื ื™ื ืชื”ืœื™ืš 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, ื”ื•ืกืคืช ืกื˜ื˜ื™ ืคื™ื–ื™ืช ืœืฆื•ืžืช ืืฉื›ื•ืœ. ื”ื’ื™ืฉื” ื”ื–ื• ื’ืจื•ืขื” ื›ื™ ืื ื—ื ื• ื‘ืขืฆื ื—ื™ื™ื‘ื™ื ื ืงืฉืจ ืœืฆื•ืžืช ืืฉื›ื•ืœ ืกืคืฆื™ืคื™ ื”ื™ื™ืฉื•ื ืฉืœืš, ืžื›ื™ื•ื•ืŸ ืฉื‘ืžืงืจื” ืฉืœ ืžืขื‘ืจ ืœืฆืžืชื™ื ืื—ืจื™ื - ื”ืกืคืจื™ื™ื” ืœื ืชื›ื™ืœ ืืช ื”ืงื‘ืฆื™ื ื”ื“ืจื•ืฉื™ื. ืื• ืฉื™ืฉ ืฆื•ืจืš ื‘ืกื ื›ืจื•ืŸ ืฉืœ ืกืคืจื™ื™ืช ืจืงืข ื‘ื™ืŸ ืฆืžืชื™ื.

ืžื”ื ื”ืคืชืจื•ื ื•ืช?

  1. ืื ื”ื—ื•ืžืจื” ื•ื”ืžืฉืื‘ื™ื ืžืืคืฉืจื™ื, ืืชื” ื™ื›ื•ืœ ืœื”ืฉืชืžืฉ cephfs ืœืืจื’ืŸ ืกืคืจื™ื™ื” ื ื’ื™ืฉื” ื‘ืื•ืชื” ืžื™ื“ื” ืœืฆืจื›ื™ื ืกื˜ื˜ื™ื™ื. ืชื™ืขื•ื“ ืจืฉืžื™ ืžืžืœื™ืฅ ืขืœ ื›ื•ื ื ื™ SSD, ืฉื›ืคื•ืœ ืœืคื—ื•ืช ืคื™ ืฉืœื•ืฉื” ื•ื—ื™ื‘ื•ืจ "ืขื‘ื”" ื™ืฆื™ื‘ ื‘ื™ืŸ ืฆืžืชื™ ืืฉื›ื•ืœ.
  2. ืืคืฉืจื•ืช ืคื—ื•ืช ืชื•ื‘ืขื ื™ืช ืชื”ื™ื” ืœืืจื’ืŸ ืฉืจืช NFS. ืขื ื–ืืช, ืื– ืืชื” ืฆืจื™ืš ืœืงื—ืช ื‘ื—ืฉื‘ื•ืŸ ืืช ื”ืขืœื™ื™ื” ื”ืืคืฉืจื™ืช ื‘ื–ืžืŸ ื”ืชื’ื•ื‘ื” ืขื‘ื•ืจ ืขื™ื‘ื•ื“ ื‘ืงืฉื•ืช ืขืœ ื™ื“ื™ ืฉืจืช ื”ืื™ื ื˜ืจื ื˜, ื•ืกื•ื‘ืœื ื•ืช ืชืงืœื•ืช ืชืฉืื™ืจ ื”ืจื‘ื” ืœืจืฆื•ื™. ื”ื”ืฉืœื›ื•ืช ืฉืœ ื”ื›ื™ืฉืœื•ืŸ ื”ืŸ ืงื˜ืกื˜ืจื•ืคืœื™ื•ืช: ืื•ื‘ื“ืŸ ื”ื”ืจ ื’ื•ื–ืจ ืœืžื•ื•ืช ืืช ื”ืžืงื‘ืฅ ื‘ืœื—ืฅ ื”ืขื•ืžืก ืฉืœ ืœื•ืก ืื ื’'ืœืก ืฉืžืžื”ืจ ืœืฉืžื™ื™ื.

ื‘ื™ืŸ ื”ื™ืชืจ, ื›ืœ ื”ืืคืฉืจื•ื™ื•ืช ืœื™ืฆื™ืจืช ืื—ืกื•ืŸ ืžืชืžืฉืš ื™ื“ืจืฉื• ื ื™ืงื•ื™ ืจืงืข ืกื˜ื™ื ืžื™ื•ืฉื ื™ื ืฉืœ ืงื‘ืฆื™ื ืฉื”ืฆื˜ื‘ืจื• ื‘ืžืฉืš ืคืจืง ื–ืžืŸ ืžืกื•ื™ื. ืžื•ืœ ืงื•ื ื˜ื™ื™ื ืจื™ื ืขื PHP ืืชื” ื™ื›ื•ืœ ืœืฉื™ื DaemonSet ืžื”ืžื˜ืžื•ืŸ nginx, ืืฉืจ ื™ืื—ืกืŸ ืขื•ืชืงื™ื ืฉืœ ื ื›ืกื™ื ืœื–ืžืŸ ืžื•ื’ื‘ืœ. ื”ืชื ื”ื’ื•ืช ื–ื• ื ื™ืชื ืช ืœื”ื’ื“ืจื” ื‘ืงืœื•ืช ื‘ืืžืฆืขื•ืช proxy_cache ืขื ืขื•ืžืง ืื—ืกื•ืŸ ื‘ื™ืžื™ื ืื• ื’'ื™ื’ื”-ื‘ื™ื™ื˜ ืฉืœ ืฉื˜ื— ื“ื™ืกืง.

ืฉื™ืœื•ื‘ ืฉื™ื˜ื” ื–ื• ืขื ืžืขืจื›ื•ืช ื”ืงื‘ืฆื™ื ื”ืžื‘ื•ื–ืจื•ืช ืฉื”ื•ื–ื›ืจื• ืœืขื™ืœ ืžืกืคืง ืฉื“ื” ืขืฆื•ื ืœื“ืžื™ื•ืŸ, ืžื•ื’ื‘ืœ ืจืง ื‘ืชืงืฆื™ื‘ ื•ื‘ืคื•ื˜ื ืฆื™ืืœ ื”ื˜ื›ื ื™ ืฉืœ ืžื™ ืฉื™ื˜ืžื™ืข ื•ื™ืชืžื•ืš ื‘ื”. ืžื ื™ืกื™ื•ืŸ ื ื™ืชืŸ ืœื•ืžืจ ืฉื›ื›ืœ ืฉื”ืžืขืจื›ืช ืคืฉื•ื˜ื” ื™ื•ืชืจ, ื›ืš ื”ื™ื ืคื•ืขืœืช ื™ืฆื™ื‘ื” ื™ื•ืชืจ. ื›ืืฉืจ ืžื•ืกื™ืคื™ื ืฉื›ื‘ื•ืช ื›ืืœื”, ืงืฉื” ื”ืจื‘ื” ื™ื•ืชืจ ืœืชื—ื–ืง ืืช ื”ืชืฉืชื™ืช, ื•ื‘ืžืงื‘ื™ืœ ื’ื“ืœ ื”ื–ืžืŸ ื”ืžื•ืฉืงืข ื‘ืื‘ื—ื•ืŸ ื•ื”ื—ืœืžื” ืžืชืงืœื•ืช ื›ืœืฉื”ืŸ.

ื”ืžืœืฆื”

ืื ื’ื ื™ื™ืฉื•ื ืืคืฉืจื•ื™ื•ืช ื”ืื—ืกื•ืŸ ื”ืžื•ืฆืขื•ืช ื ืจืื” ืœื›ื ืœื ืžื•ืฆื“ืง (ืžืกื•ื‘ืš, ื™ืงืจ...), ืื– ื›ื“ืื™ ืœื”ืกืชื›ืœ ืขืœ ื”ืžืฆื‘ ืžื”ืฆื“ ื”ืฉื ื™. ื›ืœื•ืžืจ, ืœื—ืคื•ืจ ืœืชื•ืš ืืจื›ื™ื˜ืงื˜ื•ืจืช ื”ืคืจื•ื™ืงื˜ ื• ืœืชืงืŸ ืืช ื”ื‘ืขื™ื” ื‘ืงื•ื“, ืงืฉื•ืจ ืœืžื‘ื ื” ื ืชื•ื ื™ื ืกื˜ื˜ื™ ื›ืœืฉื”ื• ื‘ืชืžื•ื ื”, ื”ื’ื“ืจื” ื—ื“ ืžืฉืžืขื™ืช ืฉืœ ื”ืชื•ื›ืŸ ืื• ื”ื”ืœื™ืš ืœ"ื—ื™ืžื•ื" ื•/ืื• ื”ื™ื“ื•ืจ ืžืงื“ื™ื ืฉืœ ื ื›ืกื™ื ื‘ืฉืœื‘ ื”ืจื›ื‘ืช ื”ืชืžื•ื ื”. ื‘ื“ืจืš ื–ื• ืื ื• ืžืงื‘ืœื™ื ื”ืชื ื”ื’ื•ืช ืฆืคื•ื™ื” ืœื—ืœื•ื˜ื™ืŸ ื•ืื•ืชื• ืกื˜ ืฉืœ ืงื‘ืฆื™ื ืขื‘ื•ืจ ื›ืœ ื”ืกื‘ื™ื‘ื•ืช ื•ื”ืขื•ืชืงื™ื ืฉืœ ื”ืืคืœื™ืงืฆื™ื” ื”ืคื•ืขืœืช.

ืื ื ื—ื–ื•ืจ ืœื“ื•ื’ืžื ื”ืกืคืฆื™ืคื™ืช ืขื ืžืกื’ืจืช Yii ื•ืœื ื ืขืžื™ืง ื‘ืžื‘ื ื” ืฉืœื” (ื•ื–ื” ืœื ืžื˜ืจืช ื”ืžืืžืจ), ื“ื™ ืœื”ืฆื‘ื™ืข ืขืœ ืฉืชื™ ื’ื™ืฉื•ืช ืคื•ืคื•ืœืจื™ื•ืช:

  1. ืฉื ื” ืืช ืชื”ืœื™ืš ื‘ื ื™ื™ืช ื”ืชืžื•ื ื” ื›ื“ื™ ืœืžืงื ื ื›ืกื™ื ื‘ืžื™ืงื•ื ืฆืคื•ื™. ื–ื” ืžื•ืฆืข/ืžื™ื•ืฉื ื‘ื”ืจื—ื‘ื•ืช ื›ืžื• yii2-static-assets.
  2. ื”ื’ื“ืจ ื’ื™ื‘ื•ื‘ ืกืคืฆื™ืคื™ ืขื‘ื•ืจ ืกืคืจื™ื•ืช ื ื›ืกื™ื, ื›ืคื™ ืฉื ื“ื•ืŸ ืœืžืฉืœ. ื”ืžืฆื’ืช ื”ื–ื• (ื”ื—ืœ ืžืฉืงื•ืคื™ืช ืžืก' 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, ืืš ืœื ืืžื•ืจื™ื ืœื”ืฉืชืจืฉ.

ื”ื“ืจืš ื”ืžื•ืžืœืฆืช ื”ื›ืœืœื™ืช ื”ื™ื ืœื”ื™ืคื˜ืจ ืžื”ื ืœื˜ื•ื‘ืช ืฉื™ื ื•ื™ ืื“ืจื™ื›ืœื™ ืฉืœ ื”ืืคืœื™ืงืฆื™ื” ื‘ื”ืชืื ืœืžื” ืฉื›ื‘ืจ ื™ื“ื•ืข ืœืจื‘ื™ื ืืคืœื™ืงืฆื™ื™ืช 12 ื’ื•ืจืžื™ื. ืื•ืœื ื”ื“ื‘ืจ - ื”ื‘ืืช ื”ื‘ืงืฉื” ืœืฆื•ืจื” ื—ืกืจืช ืžื“ื™ื ื” - ืžืฉืžืข ื‘ื”ื›ืจื— ืฉื™ื“ืจืฉื• ืฉื™ื ื•ื™ื™ื ื‘ืงื•ื“, ื•ื›ืืŸ ื—ืฉื•ื‘ ืœืžืฆื•ื ืื™ื–ื•ืŸ ื‘ื™ืŸ ื”ื™ื›ื•ืœื•ืช/ื“ืจื™ืฉื•ืช ืฉืœ ื”ืขืกืง ืœื‘ื™ืŸ ื”ืกื™ื›ื•ื™ื™ื ืœื™ื™ืฉื•ื ื•ืชื—ื–ื•ืงืช ื”ื“ืจืš ื”ื ื‘ื—ืจื”. .

ื .ื‘.

ืงืจื ื’ื ื‘ื‘ืœื•ื’ ืฉืœื ื•:

ืžืงื•ืจ: www.habr.com

ื”ื•ืกืคืช ืชื’ื•ื‘ื”