Faila fa'apitonu'u pe a fa'asolo atu se talosaga ile Kubernetes

Faila fa'apitonu'u pe a fa'asolo atu se talosaga ile Kubernetes

Pe a fausia se faiga CI / CD e faʻaaoga ai Kubernetes, o nisi taimi e tulaʻi mai ai le faʻafitauli o le le fetaui i le va o manaʻoga o atinaʻe fou ma le talosaga o loʻo tuʻuina atu i ai. Aemaise lava, i le tulaga o le fausiaina o talosaga e taua le mauaina один ata o le a faʻaaogaina i всех siosiomaga galuega faatino ma fuifui. O lenei mataupu faavae e faavae ai le sa'o e tusa ai ma Google pulega o pusa (sili atu ma le tasi e uiga i lenei tautala ma le matou matagaluega faʻapitoa).

Ae ui i lea, e te le vaʻai i se tasi i tulaga o loʻo faʻaogaina ai e le code a le upega tafaʻilagi se faʻatulagaga ua saunia, o le faʻaaogaina e faʻatapulaʻaina ai lona faʻaogaina atili. Ma a o iai i se "siosiomaga masani" e faigofie ona taulimaina, i Kubernetes e mafai ona avea lenei amio ma faʻafitauli, aemaise lava pe a e faʻafeiloaʻi mo le taimi muamua. E ui e mafai e se mafaufau faʻapitoa ona maua ni fofo faʻapitoa e foliga mai e manino pe lelei foi i le tepa muamua ... e taua le manatua o le tele o tulaga e mafai ma e tatau. ia foia faufale.

Sei o tatou vaʻavaʻai i fofo faʻaogaina lauiloa mo le teuina o faila e mafai ona oʻo atu ai i ni taunuuga le lelei pe a faʻaogaina se fuifui, ma faʻasino atu se ala saʻo.

Taofi tumau

Mo se faʻataʻitaʻiga, mafaufau i se 'upega tafaʻilagi e faʻaogaina ai se ituaiga o faʻaputu eletise e maua ai se seti o ata, sitaili, ma isi mea. Mo se faʻataʻitaʻiga, o le Yii PHP framework o loʻo i ai se pule o aseta faʻapipiʻiina e gaosia ai igoa faʻailoga tulaga ese. O le mea lea, o le gaioiga o se seti o auala mo le nofoaga faʻamautu e manino lava e le faʻafesoʻotaʻi le tasi ma le isi (na faia lenei mea mo le tele o mafuaʻaga - mo se faʻataʻitaʻiga, e aveese faʻalua pe a faʻaogaina e le tele o vaega le punaoa tutusa). O lea la, i fafo atu o le atigipusa, o le taimi muamua e te mauaina ai se 'upega tafaʻilagi punaoa, faila faʻamau (i le mea moni, e masani lava symlinks, ae sili atu i lena mea mulimuli ane) e faʻapipiʻiina ma faʻapipiʻi faʻatasi ma se aʻa masani masani mo lenei faʻapipiʻiina:

  • webroot/assets/2072c2df/css/…
  • webroot/assets/2072c2df/images/…
  • webroot/assets/2072c2df/js/…

O le a le uiga o lenei mea e uiga i se fuifui?

O le faʻataʻitaʻiga sili ona faigofie

Sei o tatou faia se tulaga masani, pe a muamua le PHP i le nginx e tufatufa faʻamaumauga faʻamaumauga ma faʻagasolo talosaga faigofie. Le auala sili ona faigofie- Deployment ma ni koneteina e lua:

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

I se faiga faʻafaigofie, o le nginx config e faʻapipiʻi i lalo i mea nei:

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;
        }
    }

O le taimi muamua e te ulufale ai i le saite, e aliali mai aseta i totonu o le pusa PHP. Ae i le tulaga o ni koneteina se lua i totonu o le tasi pod, e le iloa e nginx se mea e uiga i nei faila faila, lea (e tusa ai ma le faʻatulagaga) e tatau ona tuʻuina atu ia i latou. O se taunuuga, o le a vaʻaia e le kalani se mea sese 404 mo talosaga uma i faila CSS ma JS. O le fofo sili ona faigofie iinei o le faʻatulagaina lea o se lisi masani mo pusa. Filifiliga muamua - lautele 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

O le taimi nei o faila faʻapipiʻi na gaosia i totonu o le koneteina o loʻo tautuaina e le nginx saʻo. Ae sei ou faamanatu atu ia te oe o se fofo muamua lea, o lona uiga e mamao ese mai le lelei ma e iai ona lava nuances ma faaletonu, lea o loʻo talanoaina i lalo.

E sili atu le teuina

Va'ai la i se tulaga na asiasi atu ai se tagata fa'aoga i le saite, utaina se itulau i sitaili o lo'o maua i totonu o le atigipusa, ma a'o ia faitauina lenei itulau, sa matou toe fa'aogaina le atigipusa. Ua gaogao le lisi o aseta ma e mana'omia se talosaga ile PHP e amata ai ona fausia ni mea fou. Ae ui i lea, e tusa lava pe a maeʻa lenei mea, o fesoʻotaʻiga i statics tuai o le a le taua, lea o le a taʻitaʻia ai mea sese i le faʻaalia o fuainumera.

E le gata i lea, e foliga mai e sili atu pe itiiti foi le utaina o galuega faatino, o lona uiga e le lava le kopi o le talosaga e tasi:

  • Se'i o tatou fa'ateleina Deployment e oo atu i kopi e lua.
  • Ina ua faatoa maua le saite, sa fausia aseta i se ata e tasi.
  • I se taimi, na filifili le ingress (mo le paleni o uta) e lafo se talosaga i le kopi lona lua, ma e leʻi i ai nei aseta. Pe atonu foi ua le o toe i ai ona ua tatou faaaogaina RollingUpdate ma i le taimi nei o loʻo matou faia le faʻapipiʻiina.

I se tulaga lautele, o le taunuuga o le toe sese.

Ina ia aloese mai le leiloa o aseta tuai, e mafai ona e sui emptyDir i hostPath, fa'aopoopoina fa'aletino i se node fuifui. E leaga lenei faiga ona e tatau lava ona tatou faia fusifusia i se node fuifui faapitoa lau talosaga, aua - i le tulaga o le siitia atu i isi nodes - o le a le maua e le directory faila talafeagai. Po'o se ituaiga o fa'asologa o fa'amaumauga i tua e mana'omia.

O a fofo?

  1. Afai e mafai e meafaigaluega ma punaoa, e mafai ona e faʻaaogaina cephfs e fa'atulaga se lisi tutusa avanoa mo mana'oga tumau. Fa'amaumauga aloa'ia fautuaina le ta'avale SSD, e le itiiti ifo i le tolu fa'asologa fa'alua ma se feso'ota'iga mautu "mafiafia" i le va o nodes fuifui.
  2. O se filifiliga itiiti le mana'omia o le fa'atulagaina lea o se NFS server. Ae ui i lea, ona e manaʻomia lea ona e amanaʻia le faʻatupulaia o le taimi e tali atu ai mo le faʻatulagaina o talosaga a le upega tafaʻilagi, ma o le faʻapalepale sese o le a tele mea e manaʻomia. O iʻuga o le toilalo e mataʻutia: o le leiloa o le mauga e faʻaumatia ai le fuifui i le oti i lalo o le mamafa o le uta LA o loʻo faanatinati atu i le lagi.

Faatasi ai ma isi mea, o filifiliga uma mo le fatuina o le teuina tumau o le a manaʻomia fa'amamaina o tua seti tuai o faila fa'aputuina i se vaitaimi patino. I luma o koneteina ma PHP e mafai ona e tuʻuina DaemonSet mai le caching nginx, lea o le a teuina kopi o aseta mo se taimi faatapulaa. O lenei amio e faigofie ona fa'aoga proxy_cache fa'atasi ai ma le loloto o le teuina i aso po'o gigabytes o avanoa tisiki.

O le tuʻufaʻatasia o lenei metotia ma le tufatufaina atu o faila faila o loʻo taʻua i luga e maua ai se fanua tele mo mafaufauga, faʻatapulaʻaina naʻo le paketi ma tomai faʻapitoa a i latou o le a faʻatinoina ma lagolagoina. Mai le poto masani, e mafai ona tatou fai atu o le faigofie o le faiga, o le sili atu ona mautu e galue. Pe a faʻaopoopoina ia laulau, o le a sili atu ona faigata le tausia o atinaʻe, ma i le taimi lava e tasi o le taimi e faʻaalu i le suʻesuʻeina ma le toe faʻaleleia mai soʻo se toilalo e faʻateleina.

Fautuaga

Afai o le faʻatinoga o filifiliga o le teuina o loʻo faʻatulagaina e foliga mai e le faʻamaonia ia te oe (faigata, taugata ...), ona aoga lea e vaʻai i le tulaga mai le isi itu. O lona uiga, ia eli i totonu o le fausaga o galuega ma faaleleia le faafitauli i le code, nonoa i nisi faʻamaumauga faʻamautu faʻamaumauga i totonu o le ata, o se faʻamatalaga manino o mea o loʻo i totonu poʻo le faʻagasologa mo le "faʻamafanafanaina" ma / poʻo le faʻapipiʻiina o aseta i le tulaga faʻapipiʻi ata. O le auala lea tatou te maua ai le amio faʻamaonia ma le seti tutusa o faila mo siosiomaga uma ma faʻataʻitaʻiga o le faʻaogaina o le talosaga.

Afai tatou te toe foʻi i le faʻataʻitaʻiga faʻapitoa ma le Yii framework ma e le faʻapipiʻi i lona fausaga (e le o le faʻamoemoega o le tusiga), ua lava le faʻasino atu o auala lauiloa e lua:

  1. Suia le fa'agasologa o le fau ata e tu'u ai aseta i se nofoaga e va'aia. E fautuaina/fa'atinoina i fa'aopoopoga pei yii2-static-assets.
  2. Fa'amatala fa'amatalaga fa'apitoa mo fa'atonuga o aseta, e pei ona talanoaina i le fa'ata'ita'iga. lenei fa'aaliga (amata mai le fa'ase'e Nu. 35). I le ala, o le tusitala o le lipoti mulimuli (ae le o le leai o se mafuaaga!) Fautuaina pe a maeʻa ona faʻapipiʻi aseta i luga o le fausiaina o le server, faʻapipiʻi i latou i se nofoaga tutotonu (pei o S3), i luma o le mea e tuʻu ai se CDN.

faila e mafai ona sii mai

O le isi mataupu e mautinoa lava o le a oʻo mai pe a faʻafeiloaʻi se talosaga i le Kubernetes cluster o loʻo teuina faila a tagata i le faila faila. Mo se faʻataʻitaʻiga, ua toe i ai se matou PHP talosaga e talia faila e ala i se pepa faʻapipiʻi, fai se mea ma i latou i le taimi o le taotoga, ma toe faʻafoʻi mai.

I totonu o Kubernetes, o le nofoaga e tatau ona tuʻu ai nei faila e tatau ona masani i kopi uma o le talosaga. Faʻalagolago i le lavelave o le talosaga ma le manaʻoga e faʻatulagaina le faʻaauau pea o nei faila, o le mea o loʻo taʻua i luga e mafai ona avea ma se nofoaga, ae, e pei ona tatou vaʻaia, o loʻo i ai a latou faʻafitauli.

Fautuaga

O le tasi fofo o le fa'aogaina le S3-compatible storage (tusa lava pe o se ituaiga o vaega e talimalo ai le tagata lava ia e pei o le minio). O le sui i le S3 e mana'omia ai suiga i le tulaga code, ma pe faʻafefea ona tuʻuina atu anotusi i le pito i luma, ua uma ona matou faia tusia.

Fa'aoga vasega

Tuʻueseese, e taua le matauina o le faʻatulagaina o le teuina o vasega faʻaoga. E masani lava o faila foi ia i luga o le tisiki, lea i le tulaga o Kubernetes o le a taʻitaʻia ai le faʻatagaina faifaipea talosaga mai le tagata faʻaoga pe a maeʻa lana talosaga i se isi koneteina.

O le faʻafitauli o loʻo foia se vaega e ala i le ki stickySessions i luga o le ulufale (o loʻo lagolagoina le faʻaaliga i taʻutaʻua uma e faʻaogaina - mo nisi faʻamatalaga, vaʻai la matou iloiloga)e fusifusia le tagata faʻaoga i se pod patino ma le talosaga:

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: /

Ae o lenei mea o le a le faʻaumatia ai faʻafitauli i le faʻaaogaina faifaipea.

Fautuaga

O se auala sili atu sa'o o le fa'aliliuina lea o le talosaga i teuina o sauniga i memcached, Redis ma tali tutusa - i se tulaga lautele, lafoai atoa filifiliga faila.

iʻuga

O faʻafitauli faʻapitoa o loʻo talanoaina i totonu o tusitusiga e tatau ona faʻaaogaina i le faatulagaga o "tootoo" le tumau (lea e sili atu le matagofie i le Igilisi e faʻaogaina). Atonu e talafeagai i la'asaga muamua o le femalaga'i o se talosaga i Kubernetes, ae le tatau ona maua'a.

O le auala masani fautuaina o le faʻaumatia lea o latou e fiafia i le faʻaleleia o fausaga o le talosaga e tusa ai ma mea ua leva ona iloa e le toʻatele. 12-Factor App. Ae ui i lea, o lenei - o le aumaia o le talosaga i se tulaga e leai ni setete - o lona uiga o suiga i le tulafono o le a manaʻomia, ma o iinei e taua le sailia o se paleni i le va o gafatia / manaʻoga o le pisinisi ma faʻamoemoega mo le faʻatinoina ma le tausia o le ala filifilia. .

SALA

Faitau foi i la matou blog:

puna: www.habr.com

Faaopoopo i ai se faamatalaga