Π›ΠΎΠΊΠ°Π»Π½ΠΈ Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅ ΠΏΡ€ΠΈ ΠΌΠΈΠ³Ρ€ΠΈΡ€Π°Π½Π΅ Π½Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ към Kubernetes

Π›ΠΎΠΊΠ°Π»Π½ΠΈ Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅ ΠΏΡ€ΠΈ ΠΌΠΈΠ³Ρ€ΠΈΡ€Π°Π½Π΅ Π½Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ към Kubernetes

ΠŸΡ€ΠΈ ΠΈΠ·Π³Ρ€Π°ΠΆΠ΄Π°Π½Π΅Ρ‚ΠΎ Π½Π° CI/CD процСс с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° Kubernetes понякога възниква ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡŠΡ‚ с Π½Π΅ΡΡŠΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌΠΎΡΡ‚Ρ‚Π° ΠΌΠ΅ΠΆΠ΄Ρƒ изискванията Π½Π° Π½ΠΎΠ²Π°Ρ‚Π° инфраструктура ΠΈ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ, ΠΊΠΎΠ΅Ρ‚ΠΎ сС ΠΏΡ€Π΅Ρ…Π²ΡŠΡ€Π»Ρ към нСя. По-спСциално, Π½Π° Π΅Ρ‚Π°ΠΏΠ° Π½Π° ΠΈΠ·Π³Ρ€Π°ΠΆΠ΄Π°Π½Π΅ Π½Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ Π΅ Π²Π°ΠΆΠ½ΠΎ Π΄Π° ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅ Π΅Π΄ΠΈΠ½ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅, ΠΊΠΎΠ΅Ρ‚ΠΎ Ρ‰Π΅ сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π² всички ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π½ΠΈ срСди ΠΈ ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€ΠΈ. Π’ΠΎΠ·ΠΈ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ Π΅ Π² основата Π½Π° ΠΏΡ€Π°Π²ΠΈΠ»Π½ΠΎΡ‚ΠΎ спорСд Google ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΈ (ΠΏΠΎΠ²Π΅Ρ‡Π΅ ΠΎΡ‚ вСднъТ Π·Π° Ρ‚ΠΎΠ²Π° Π³ΠΎΠ²ΠΎΡ€Π΅ΡˆΠ΅ ΠΈ нашия тСхничСски ΠΎΡ‚Π΄Π΅Π»).

Π’ΡŠΠΏΡ€Π΅ΠΊΠΈ Ρ‚ΠΎΠ²Π°, няма Π΄Π° Π²ΠΈΠ΄ΠΈΡ‚Π΅ Π½ΠΈΠΊΠΎΠ³ΠΎ Π² ситуации, ΠΊΠΎΠ³Π°Ρ‚ΠΎ ΠΊΠΎΠ΄ΡŠΡ‚ Π½Π° сайта ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π³ΠΎΡ‚ΠΎΠ²Π° Ρ€Π°ΠΌΠΊΠ°, Ρ‡ΠΈΠ΅Ρ‚ΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π°Π»Π°Π³Π° ограничСния Π²ΡŠΡ€Ρ…Ρƒ ΠΏΠΎ-Π½Π°Ρ‚Π°Ρ‚ΡŠΡˆΠ½ΠΎΡ‚ΠΎ ΠΌΡƒ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅. И Π΄ΠΎΠΊΠ°Ρ‚ΠΎ Π² β€žΠ½ΠΎΡ€ΠΌΠ°Π»Π½Π° ΡΡ€Π΅Π΄Π°β€œ Ρ‚ΠΎΠ²Π° Π΅ лСсно Π·Π° справянС, Π² 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 ΡΡŠΡ€Π²ΡŠΡ€. Π‘Π»Π΅Π΄ Ρ‚ΠΎΠ²Π° ΠΎΠ±Π°Ρ‡Π΅ трябва Π΄Π° Π²Π·Π΅ΠΌΠ΅Ρ‚Π΅ ΠΏΡ€Π΅Π΄Π²ΠΈΠ΄ Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡ‚ΠΎ ΡƒΠ²Π΅Π»ΠΈΡ‡Π°Π²Π°Π½Π΅ Π½Π° Π²Ρ€Π΅ΠΌΠ΅Ρ‚ΠΎ Π·Π° ΠΎΡ‚Π³ΠΎΠ²ΠΎΡ€ Π·Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π½Π° заявки ΠΎΡ‚ ΡƒΠ΅Π± ΡΡŠΡ€Π²ΡŠΡ€Π° ΠΈ толСрантността към Π³Ρ€Π΅ΡˆΠΊΠΈ Ρ‰Π΅ остави ΠΌΠ½ΠΎΠ³ΠΎ Π΄Π° сС ΠΆΠ΅Π»Π°Π΅. ΠŸΠΎΡΠ»Π΅Π΄ΡΡ‚Π²ΠΈΡΡ‚Π° ΠΎΡ‚ ΠΏΠΎΠ²Ρ€Π΅Π΄Π°Ρ‚Π° са катастрофални: Π·Π°Π³ΡƒΠ±Π°Ρ‚Π° Π½Π° ΠΌΠΎΠ½Ρ‚ΠΈΡ€Π°Π½Π΅Ρ‚ΠΎ ΠΎΠ±Ρ€ΠΈΡ‡Π° ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€Π° Π½Π° ΡΠΌΡŠΡ€Ρ‚ ΠΏΠΎΠ΄ натиска Π½Π° Ρ‚ΠΎΠ²Π°Ρ€Π° Π½Π° LA, ΠΊΠΎΠΉΡ‚ΠΎ сС Π²Ρ‚ΡƒΡ€Π²Π° към Π½Π΅Π±Π΅Ρ‚ΠΎ.

ОсвСн всичко Π΄Ρ€ΡƒΠ³ΠΎ, всички ΠΎΠΏΡ†ΠΈΠΈ Π·Π° създаванС Π½Π° постоянно Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ Ρ‰Π΅ изискват почистванС Π½Π° Ρ„ΠΎΠ½Π° остарСли Π½Π°Π±ΠΎΡ€ΠΈ ΠΎΡ‚ Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅, Π½Π°Ρ‚Ρ€ΡƒΠΏΠ°Π½ΠΈ Π·Π° ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ ΠΏΠ΅Ρ€ΠΈΠΎΠ΄ ΠΎΡ‚ Π²Ρ€Π΅ΠΌΠ΅. ΠŸΡ€Π΅Π΄ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΈ с PHP ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° поставитС DaemonSet ΠΎΡ‚ ΠΊΠ΅ΡˆΠΈΡ€Π°Π½Π΅ Π½Π° nginx, ΠΊΠΎΠ΅Ρ‚ΠΎ Ρ‰Π΅ ΡΡŠΡ…Ρ€Π°Π½ΡΠ²Π° копия Π½Π° Π°ΠΊΡ‚ΠΈΠ²ΠΈ Π·Π° ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ ΠΏΠ΅Ρ€ΠΈΠΎΠ΄ ΠΎΡ‚ Π²Ρ€Π΅ΠΌΠ΅. Π’ΠΎΠ²Π° ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ сС ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€Π° лСсно с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° proxy_cache с Π΄ΡŠΠ»Π±ΠΎΡ‡ΠΈΠ½Π° Π½Π° ΡΡŠΡ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ Π² Π΄Π½ΠΈ ΠΈΠ»ΠΈ Π³ΠΈΠ³Π°Π±Π°ΠΉΡ‚ΠΈ дисково пространство.

ΠšΠΎΠΌΠ±ΠΈΠ½ΠΈΡ€Π°Π½Π΅Ρ‚ΠΎ Π½Π° Ρ‚ΠΎΠ·ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄ с Ρ€Π°Π·ΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΡ‚Π΅ Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΈ систСми, спомСнати ΠΏΠΎ-Π³ΠΎΡ€Π΅, прСдоставя ΠΎΠ³Ρ€ΠΎΠΌΠ½ΠΎ ΠΏΠΎΠ»Π΅ Π·Π° Π²ΡŠΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅, ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΎ само ΠΎΡ‚ Π±ΡŽΠ΄ΠΆΠ΅Ρ‚Π° ΠΈ тСхничСския ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π» Π½Π° Ρ‚Π΅Π·ΠΈ, ΠΊΠΎΠΈΡ‚ΠΎ Ρ‰Π΅ Π³ΠΎ ΠΏΡ€ΠΈΠ»Π°Π³Π°Ρ‚ ΠΈ ΠΏΠΎΠ΄Π΄ΡŠΡ€ΠΆΠ°Ρ‚. ΠžΡ‚ ΠΎΠΏΠΈΡ‚ ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° ΠΊΠ°ΠΆΠ΅ΠΌ, Ρ‡Π΅ ΠΊΠΎΠ»ΠΊΠΎΡ‚ΠΎ ΠΏΠΎ-проста Π΅ систСмата, Ρ‚ΠΎΠ»ΠΊΠΎΠ²Π° ΠΏΠΎ-стабилна Π΅ тя. ΠšΠΎΠ³Π°Ρ‚ΠΎ сС добавят Ρ‚Π°ΠΊΠΈΠ²Π° слоСвС, става ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎ-Ρ‚Ρ€ΡƒΠ΄Π½ΠΎ Π΄Π° сС ΠΏΠΎΠ΄Π΄ΡŠΡ€ΠΆΠ° инфраструктурата, ΠΊΠ°Ρ‚ΠΎ Π² ΡΡŠΡ‰ΠΎΡ‚ΠΎ Π²Ρ€Π΅ΠΌΠ΅ Π²Ρ€Π΅ΠΌΠ΅Ρ‚ΠΎ, ΠΈΠ·Ρ€Π°Π·Ρ…ΠΎΠ΄Π²Π°Π½ΠΎ Π·Π° диагностика ΠΈ Π²ΡŠΠ·ΡΡ‚Π°Π½ΠΎΠ²ΡΠ²Π°Π½Π΅ ΠΎΡ‚ Π΅Π²Π΅Π½Ρ‚ΡƒΠ°Π»Π½ΠΈ ΠΏΠΎΠ²Ρ€Π΅Π΄ΠΈ, сС ΡƒΠ²Π΅Π»ΠΈΡ‡Π°Π²Π°.

ΠΏΡ€Π΅ΠΏΠΎΡ€ΡŠΠΊΠ°

Ако ΠΏΡ€ΠΈΠ»Π°Π³Π°Π½Π΅Ρ‚ΠΎ Π½Π° ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΡ‚Π΅ ΠΎΠΏΡ†ΠΈΠΈ Π·Π° ΡΡŠΡ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ ΡΡŠΡ‰ΠΎ Π²ΠΈ ΠΈΠ·Π³Π»Π΅ΠΆΠ΄Π° Π½Π΅ΠΎΠΏΡ€Π°Π²Π΄Π°Π½ΠΎ (слоТно, скъпо ...), Ρ‚ΠΎΠ³Π°Π²Π° си струва Π΄Π° ΠΏΠΎΠ³Π»Π΅Π΄Π½Π΅Ρ‚Π΅ ситуацията ΠΎΡ‚ Π΄Ρ€ΡƒΠ³Π°Ρ‚Π° страна. А ΠΈΠΌΠ΅Π½Π½ΠΎ Π΄Π° сС Ρ€Π°Π·Ρ€ΠΎΠ²ΠΈ Π² Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π°Ρ‚Π° Π½Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° ΠΈ ΠΊΠΎΡ€ΠΈΠ³ΠΈΡ€Π°ΠΉΡ‚Π΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Π² ΠΊΠΎΠ΄Π°, ΡΠ²ΡŠΡ€Π·Π°Π½Π° с някаква статична структура ΠΎΡ‚ Π΄Π°Π½Π½ΠΈ Π² ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ, нСдвусмислСно ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π½Π° ΡΡŠΠ΄ΡŠΡ€ΠΆΠ°Π½ΠΈΠ΅Ρ‚ΠΎ ΠΈΠ»ΠΈ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° Π·Π° β€žΠ·Π°Π³Ρ€ΡΠ²Π°Π½Π΅β€œ ΠΈ/ΠΈΠ»ΠΈ ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»Π½ΠΎ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€Π°Π½Π΅ Π½Π° Π°ΠΊΡ‚ΠΈΠ²ΠΈ Π½Π° Π΅Ρ‚Π°ΠΏΠ° Π½Π° сглобяванС Π½Π° ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ. По Ρ‚ΠΎΠ·ΠΈ Π½Π°Ρ‡ΠΈΠ½ ΠΏΠΎΠ»ΡƒΡ‡Π°Π²Π°ΠΌΠ΅ Π°Π±ΡΠΎΠ»ΡŽΡ‚Π½ΠΎ ΠΏΡ€Π΅Π΄Π²ΠΈΠ΄ΠΈΠΌΠΎ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΈ Сднакъв Π½Π°Π±ΠΎΡ€ ΠΎΡ‚ Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅ Π·Π° всички срСди ΠΈ Ρ€Π΅ΠΏΠ»ΠΈΠΊΠΈ Π½Π° Ρ€Π°Π±ΠΎΡ‚Π΅Ρ‰ΠΎΡ‚ΠΎ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅.

Ако сС Π²ΡŠΡ€Π½Π΅ΠΌ към конкрСтния ΠΏΡ€ΠΈΠΌΠ΅Ρ€ с Ρ„Ρ€Π΅ΠΉΠΌΡƒΡŠΡ€ΠΊΠ° Yii ΠΈ Π½Π΅ Π½Π°Π²Π»ΠΈΠ·Π°ΠΌΠ΅ Π² Π½Π΅Π³ΠΎΠ²Π°Ρ‚Π° структура (ΠΊΠΎΠ΅Ρ‚ΠΎ Π½Π΅ Π΅ Ρ†Π΅Π»Ρ‚Π° Π½Π° статията), Π΄ΠΎΡΡ‚Π°Ρ‚ΡŠΡ‡Π½ΠΎ Π΅ Π΄Π° посочим Π΄Π²Π° популярни ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π°:

  1. ΠŸΡ€ΠΎΠΌΠ΅Π½Π΅Ρ‚Π΅ процСса Π½Π° ΠΈΠ·Π³Ρ€Π°ΠΆΠ΄Π°Π½Π΅ Π½Π° ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅, Π·Π° Π΄Π° поставитС Π°ΠΊΡ‚ΠΈΠ²ΠΈ Π½Π° ΠΏΡ€Π΅Π΄Π²ΠΈΠ΄ΠΈΠΌΠΎ място. Π’ΠΎΠ²Π° сС ΠΏΡ€Π΅Π΄Π»Π°Π³Π°/ΠΏΡ€ΠΈΠ»Π°Π³Π° Π² Ρ€Π°Π·ΡˆΠΈΡ€Π΅Π½ΠΈΡ ΠΊΠ°Ρ‚ΠΎ yii2-статични Π°ΠΊΡ‚ΠΈΠ²ΠΈ.
  2. Π”Π΅Ρ„ΠΈΠ½ΠΈΡ€Π°ΠΉΡ‚Π΅ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΈ Ρ…Π΅ΡˆΠΎΠ²Π΅ Π·Π° Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ с Π°ΠΊΡ‚ΠΈΠ²ΠΈ, ΠΊΠ°ΠΊΡ‚ΠΎ Π΅ обсъдСно Π½Π°ΠΏΡ€. Ρ‚Π°Π·ΠΈ прСзСнтация (Π·Π°ΠΏΠΎΡ‡Π²Π°ΠΉΠΊΠΈ ΠΎΡ‚ слайд β„– 35). ΠœΠ΅ΠΆΠ΄Ρƒ Π΄Ρ€ΡƒΠ³ΠΎΡ‚ΠΎ, Π°Π²Ρ‚ΠΎΡ€ΡŠΡ‚ Π½Π° Π΄ΠΎΠΊΠ»Π°Π΄Π° Π² ΠΊΡ€Π°ΠΉΠ½Π° смСтка (ΠΈ Π½Π΅ Π±Π΅Π· ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π°!) ΡΡŠΠ²Π΅Ρ‚Π²Π° слСд сглобяванС Π½Π° Π°ΠΊΡ‚ΠΈΠ²ΠΈ Π½Π° ΡΡŠΡ€Π²ΡŠΡ€Π° Π·Π° ΠΈΠ·Π³Ρ€Π°ΠΆΠ΄Π°Π½Π΅ Π΄Π° Π³ΠΈ ΠΊΠ°Ρ‡ΠΈΡ‚Π΅ Π² Ρ†Π΅Π½Ρ‚Ρ€Π°Π»Π½ΠΎ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ (ΠΊΠ°Ρ‚ΠΎ S3), ΠΏΡ€Π΅Π΄ ΠΊΠΎΠ΅Ρ‚ΠΎ Π΄Π° поставитС CDN.

Π˜Π·Ρ‚Π΅Π³Π»ΡΠ½ΠΈΡ

Π”Ρ€ΡƒΠ³ случай, ΠΊΠΎΠΉΡ‚ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΎ Ρ‰Π΅ Π²Π»Π΅Π·Π΅ Π² дСйствиС ΠΏΡ€ΠΈ ΠΌΠΈΠ³Ρ€ΠΈΡ€Π°Π½Π΅ Π½Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ към ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€ Π½Π° Kubernetes, Π΅ ΡΡŠΡ…Ρ€Π°Π½ΡΠ²Π°Π½Π΅Ρ‚ΠΎ Π½Π° потрСбитСлски Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅ във Ρ„Π°ΠΉΠ»ΠΎΠ²Π°Ρ‚Π° систСма. НапримСр, ΠΎΡ‚Π½ΠΎΠ²ΠΎ ΠΈΠΌΠ°ΠΌΠ΅ PHP ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, ΠΊΠΎΠ΅Ρ‚ΠΎ ΠΏΡ€ΠΈΠ΅ΠΌΠ° Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅ Ρ‡Ρ€Π΅Π· Ρ„ΠΎΡ€ΠΌΠ° Π·Π° ΠΊΠ°Ρ‡Π²Π°Π½Π΅, ΠΏΡ€Π°Π²ΠΈ Π½Π΅Ρ‰ΠΎ с тях ΠΏΠΎ Π²Ρ€Π΅ΠΌΠ΅ Π½Π° Ρ€Π°Π±ΠΎΡ‚Π° ΠΈ Π³ΠΈ ΠΈΠ·ΠΏΡ€Π°Ρ‰Π° ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ.

Π’ Kubernetes мСстополоТСниСто, ΠΊΡŠΠ΄Π΅Ρ‚ΠΎ Ρ‚Π΅Π·ΠΈ Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅ трябва Π΄Π° Π±ΡŠΠ΄Π°Ρ‚ поставСни, трябва Π΄Π° Π΅ ΠΎΠ±Ρ‰ΠΎ Π·Π° всички Ρ€Π΅ΠΏΠ»ΠΈΠΊΠΈ Π½Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ. Π’ зависимост ΠΎΡ‚ слоТността Π½Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ ΠΈ нСобходимостта ΠΎΡ‚ ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΈΡ€Π°Π½Π΅ Π½Π° устойчивостта Π½Π° Ρ‚Π΅Π·ΠΈ Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅, горСспомСнатитС ΠΎΠΏΡ†ΠΈΠΈ Π·Π° сподСлСно устройство ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° Π±ΡŠΠ΄Π°Ρ‚ Ρ‚Π°ΠΊΠΎΠ²Π° място, Π½ΠΎ, ΠΊΠ°ΠΊΡ‚ΠΎ Π²ΠΈΠΆΠ΄Π°ΠΌΠ΅, Ρ‚Π΅ ΠΈΠΌΠ°Ρ‚ своитС Π½Π΅Π΄ΠΎΡΡ‚Π°Ρ‚ΡŠΡ†ΠΈ.

ΠΏΡ€Π΅ΠΏΠΎΡ€ΡŠΠΊΠ°

Π•Π΄Π½ΠΎ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ Π΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΠΊΠΈ S3-ΡΡŠΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌΠΎ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ (Π΄ΠΎΡ€ΠΈ Π°ΠΊΠΎ Ρ‚ΠΎΠ²Π° Π΅ някакъв Π²ΠΈΠ΄ самостоятСлно хоствана катСгория ΠΊΠ°Ρ‚ΠΎ minio). ΠŸΡ€Π΅ΠΌΠΈΠ½Π°Π²Π°Π½Π΅Ρ‚ΠΎ към S3 Ρ‰Π΅ изисква ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈ Π½Π° Π½ΠΈΠ²ΠΎ ΠΊΠΎΠ΄ΠΈ ΠΊΠ°ΠΊ ΡΡŠΠ΄ΡŠΡ€ΠΆΠ°Π½ΠΈΠ΅Ρ‚ΠΎ Ρ‰Π΅ сС доставя Π½Π° прСдния ΠΊΡ€Π°ΠΉ, Π²Π΅Ρ‡Π΅ Π·Π½Π°Π΅ΠΌ писали.

ΠŸΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π»ΡΠΊΠΈ сСсии

ΠžΡ‚Π΄Π΅Π»Π½ΠΎ, заслуТава Π΄Π° сС ΠΎΡ‚Π±Π΅Π»Π΅ΠΆΠΈ организацията Π·Π° ΡΡŠΡ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ Π½Π° потрСбитСлски сСсии. ЧСсто Ρ‚ΠΎΠ²Π° са ΠΈ Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅ Π½Π° диск, ΠΊΠΎΠ΅Ρ‚ΠΎ Π² контСкста Π½Π° Kubernetes Ρ‰Π΅ Π΄ΠΎΠ²Π΅Π΄Π΅ Π΄ΠΎ постоянни заявки Π·Π° оторизация ΠΎΡ‚ потрСбитСля, Π°ΠΊΠΎ заявката ΠΌΡƒ ΠΏΠΎΠΏΠ°Π΄Π½Π΅ Π² Π΄Ρ€ΡƒΠ³ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€.

ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΡŠΡ‚ сС Ρ€Π΅ΡˆΠ°Π²Π° частично Ρ‡Ρ€Π΅Π· Π²ΠΊΠ»ΡŽΡ‡Π²Π°Π½Π΅ stickySessions ΠΏΡ€ΠΈ Π²Π»ΠΈΠ·Π°Π½Π΅ (функцията сС ΠΏΠΎΠ΄Π΄ΡŠΡ€ΠΆΠ° във всички популярни Π²Ρ…ΠΎΠ΄Π½ΠΈ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π΅Ρ€ΠΈ - Π·Π° ΠΏΠΎΠ²Π΅Ρ‡Π΅ подробности Π²ΠΈΠΆΡ‚Π΅ нашия ΠΏΡ€Π΅Π³Π»Π΅Π΄)Π·Π° ΠΎΠ±Π²ΡŠΡ€Π·Π²Π°Π½Π΅ Π½Π° потрСбитСля към ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π΅Π½ 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 ΠΈ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΈ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ - ΠΊΠ°Ρ‚ΠΎ цяло изоставСтС напълно ΠΎΠΏΡ†ΠΈΠΈΡ‚Π΅ Π·Π° Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅.

Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

ΠžΠ±ΡΡŠΠΆΠ΄Π°Π½ΠΈΡ‚Π΅ Π² тСкста инфраструктурни Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ са достойни Π·Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ само във Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° Π½Π° Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΈ β€žΠΏΠ°Ρ‚Π΅Ρ€ΠΈΡ†ΠΈβ€œ (ΠΊΠΎΠ΅Ρ‚ΠΎ Π·Π²ΡƒΡ‡ΠΈ ΠΏΠΎ-красиво Π½Π° английски ΠΊΠ°Ρ‚ΠΎ Π·Π°ΠΎΠ±ΠΈΠΊΠΎΠ»Π½ΠΎ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅). Π’Π΅ ΠΌΠΎΠΆΠ΅ Π΄Π° са ΠΎΡ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π² ΠΏΡŠΡ€Π²ΠΈΡ‚Π΅ Π΅Ρ‚Π°ΠΏΠΈ Π½Π° ΠΌΠΈΠ³Ρ€ΠΈΡ€Π°Π½Π΅ Π½Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ към Kubernetes, Π½ΠΎ Π½Π΅ трябва Π΄Π° сС вкорСняват.

ΠžΠ±Ρ‰ΠΈΡΡ‚ ΠΏΡ€Π΅ΠΏΠΎΡ€ΡŠΡ‡ΠΈΡ‚Π΅Π»Π΅Π½ ΠΏΡŠΡ‚ Π΅ Π΄Π° сС ΠΎΡ‚ΡŠΡ€Π²Π΅Ρ‚Π΅ ΠΎΡ‚ тях Π² ΠΏΠΎΠ»Π·Π° Π½Π° Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π½Π° модификация Π½Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ Π² ΡΡŠΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΠΈΠ΅ с Ρ‚ΠΎΠ²Π°, ΠΊΠΎΠ΅Ρ‚ΠΎ Π²Π΅Ρ‡Π΅ Π΅ Π΄ΠΎΠ±Ρ€Π΅ извСстно Π½Π° ΠΌΠ½ΠΎΠ·ΠΈΠ½Π° 12-Ρ„Π°ΠΊΡ‚ΠΎΡ€Π½ΠΎ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅. Π’ΠΎΠ²Π° ΠΎΠ±Π°Ρ‡Π΅ - ΠΏΡ€ΠΈΠ²Π΅ΠΆΠ΄Π°Π½Π΅Ρ‚ΠΎ Π½Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ във Ρ„ΠΎΡ€ΠΌΠ° Π±Π΅Π· ΡΡŠΡΡ‚ΠΎΡΠ½ΠΈΠ΅ - Π½Π΅ΠΈΠ·Π±Π΅ΠΆΠ½ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π²Π°, Ρ‡Π΅ Ρ‰Π΅ са Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΈ ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈ Π² ΠΊΠΎΠ΄Π° ΠΈ Ρ‚ΡƒΠΊ Π΅ Π²Π°ΠΆΠ½ΠΎ Π΄Π° сС Π½Π°ΠΌΠ΅Ρ€ΠΈ баланс ΠΌΠ΅ΠΆΠ΄Ρƒ Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΠΈΡ‚Π΅/изискванията Π½Π° бизнСса ΠΈ пСрспСктивитС Π·Π° внСдряванС ΠΈ ΠΏΠΎΠ΄Π΄ΡŠΡ€ΠΆΠ°Π½Π΅ Π½Π° избрания ΠΏΡŠΡ‚ .

PS

ΠŸΡ€ΠΎΡ‡Π΅Ρ‚Π΅Ρ‚Π΅ ΡΡŠΡ‰ΠΎ Π² нашия Π±Π»ΠΎΠ³:

Π˜Π·Ρ‚ΠΎΡ‡Π½ΠΈΠΊ: www.habr.com

ДобавянС Π½Π° Π½ΠΎΠ² ΠΊΠΎΠΌΠ΅Π½Ρ‚Π°Ρ€