Mafayilo am'deralo mukasamutsa pulogalamu kupita ku Kubernetes

Mafayilo am'deralo mukasamutsa pulogalamu kupita ku Kubernetes

Pomanga ndondomeko ya CI / CD pogwiritsa ntchito Kubernetes, nthawi zina vuto limakhala losagwirizana pakati pa zofunikira za zomangamanga zatsopano ndi ntchito yomwe imasamutsidwa kwa izo. Makamaka, pa siteji yomanga ntchito ndikofunikira kupeza ΠΎΠ΄ΠΈΠ½ chithunzi chomwe chidzagwiritsidwe всСх madera a polojekiti ndi magulu. Mfundo imeneyi ndi yolondola malinga ndi Google kasamalidwe ka chidebe (kamodzi pa izi Adatero ndi dipatimenti yathu yaukadaulo).

Komabe, simudzawona aliyense muzochitika zomwe code ya tsambalo imagwiritsa ntchito chimango chokonzekera, chomwe chimayika zoletsa pakugwiritsanso ntchito. Ndipo ngakhale mu "malo abwino" izi ndizosavuta kuthana nazo, ku Kubernetes khalidweli likhoza kukhala vuto, makamaka mukakumana nalo koyamba. Ngakhale malingaliro opanga nzeru amatha kubwera ndi njira zothetsera zomangamanga zomwe zimawoneka zomveka kapena zabwino poyang'ana koyamba ... ndikofunikira kukumbukira kuti zochitika zambiri zimatha ndipo ziyenera. zithetsedwe mwamamangidwe.

Tiyeni tiwone mayankho odziwika bwino osungira mafayilo omwe angayambitse zotsatira zosasangalatsa mukamagwiritsa ntchito masango, ndikuwonetsanso njira yolondola.

Zosungira zosasunthika

Mwachitsanzo, taganizirani za pulogalamu yapaintaneti yomwe imagwiritsa ntchito jenereta yamtundu wina kuti ipeze zithunzi, masitayelo, ndi zinthu zina. Mwachitsanzo, mawonekedwe a Yii PHP ali ndi woyang'anira katundu yemwe amapanga mayina apadera. Chifukwa chake, zotulukazo ndi njira zingapo zamalo osasunthika omwe mwachiwonekere samadutsana wina ndi mnzake (izi zidachitika pazifukwa zingapo - mwachitsanzo, kuthetsa zobwerezedwa pomwe zigawo zingapo zimagwiritsa ntchito chinthu chomwecho). Chifukwa chake, kuchokera m'bokosilo, nthawi yoyamba mukalowa mugawo lazinthu zapaintaneti, mafayilo osasunthika (makamaka, nthawi zambiri amafanana, koma zambiri pambuyo pake) amapangidwa ndikuyalidwa ndi chikwatu chodziwika bwino chomwe chimapangidwira izi:

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

Kodi izi zikutanthauza chiyani pankhani ya masango?

Chitsanzo chosavuta

Tiyeni titenge nkhani wamba, pomwe PHP imatsogozedwa ndi nginx kugawa deta yokhazikika ndikukonza zopempha zosavuta. Njira yosavuta - Kutumizidwa ndi matumba awiri:

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

Mu mawonekedwe osavuta, kasinthidwe ka nginx amafikira motere:

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

Mukayamba kulowa patsambali, katundu amawonekera mu chidebe cha PHP. Koma pakakhala zotengera ziwiri mkati mwa pod imodzi, nginx sadziwa chilichonse chokhudza mafayilo osasunthika, omwe (malinga ndi kasinthidwe) ayenera kuperekedwa kwa iwo. Zotsatira zake, kasitomala adzawona cholakwika cha 404 pazopempha zonse ku mafayilo a CSS ndi JS. Yankho losavuta apa lingakhale kukonza chikwatu chofanana cha zotengera. Njira yoyambirira - yamba 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

Tsopano mafayilo osasunthika opangidwa mu chidebe amatumizidwa ndi nginx molondola. Koma ndiloleni ndikukumbutseni kuti iyi ndi yankho lachikale, lomwe limatanthauza kuti siliri labwino ndipo lili ndi ma nuances ndi zofooka zake, zomwe zafotokozedwa pansipa.

Zosungirako zapamwamba kwambiri

Tsopano lingalirani mkhalidwe womwe wogwiritsa ntchito adayendera tsambali, adakweza tsamba lomwe lili ndi masitaelo omwe ali mu chidebecho, ndipo akuwerenga tsamba ili, tidayikanso chidebecho. Katundu wazinthu alibe kanthu ndipo pempho ku PHP likufunika kuti muyambe kupanga zatsopano. Komabe, ngakhale zitatha izi, maulalo ku ma statics akale sadzakhala ofunikira, zomwe zingayambitse zolakwika pakuwonetsa ma statics.

Kuphatikiza apo, mwina tili ndi projekiti yodzaza kwambiri kapena yocheperako, zomwe zikutanthauza kuti pulogalamu imodzi sikhala yokwanira:

  • Tiyeni tiwonjezere Kutumizidwa mpaka awiri ofananira.
  • Pamene tsambalo lidafikiridwa koyamba, katundu adapangidwa m'chifanizo chimodzi.
  • Panthawi ina, ingress inaganiza (pofuna kulinganiza katundu) kutumiza pempho ku chithunzi chachiwiri, ndipo zinthuzi sizinalipobe. Kapena mwina kulibe chifukwa timagwiritsa ntchito RollingUpdate ndipo pakadali pano tikupanga deployment.

Kawirikawiri, zotsatira zake zimakhalanso zolakwika.

Pofuna kupewa kutaya katundu wakale, mukhoza kusintha emptyDir pa hostPath, kuwonjezera static mwakuthupi ku nodi yamagulu. Njira imeneyi ndi yoipa chifukwa tiyenera kutero kumangirira ku nodi yamagulu enaake ntchito yanu, chifukwa - ngati mutasamukira kumalo ena - chikwatu sichikhala ndi mafayilo ofunikira. Kapena mtundu wina wamalumikizidwe akumbuyo pakati pa ma node amafunikira.

Kodi mayankho ake ndi ati?

  1. Ngati hardware ndi zipangizo zilola, mukhoza kugwiritsa ntchito cephs kukonza chikwatu chopezeka mofanana pazosowa zokhazikika. Zolemba zovomerezeka imalimbikitsa ma drive a SSD, kubwereza katatu ndi kulumikizana kokhazikika "kwakukulu" pakati pa ma cluster node.
  2. Chosankha chocheperako chingakhale kukonza seva ya NFS. Komabe, ndiye kuti muyenera kuganizira kuchuluka kwanthawi yoyankha pakuyankha zopempha ndi seva yapaintaneti, ndipo kulolerana kolakwa kudzasiya zambiri. Zotsatira za kulephera ndizoopsa: kutayika kwa phiri kumawonongetsa tsango kuti life pansi pa kuukira kwa katundu wa LA akuthamangira kumwamba.

Mwa zina, zosankha zonse zopangira zosungirako zosalekeza zidzafunika kuyeretsa maziko mafayilo achikale omwe adasonkhanitsidwa pakapita nthawi. Pamaso pa zotengera ndi PHP mutha kuyika DaemonSet kuchokera ku caching nginx, yomwe idzasungira katundu kwa kanthawi kochepa. Khalidweli ndi losavuta kusinthika pogwiritsa ntchito proxy_cache ndi kuzama kosungirako masiku kapena ma gigabytes a disk space.

Kuphatikizira njira iyi ndi mafayilo ogawidwa omwe atchulidwa pamwambapa kumapereka gawo lalikulu lamalingaliro, ocheperako ndi bajeti ndi kuthekera kwaukadaulo kwa omwe adzagwiritse ntchito ndikuthandizira. Kuchokera pazomwe takumana nazo, tinganene kuti dongosolo losavuta, ndilokhazikika kwambiri. Zigawo zotere zikawonjezeredwa, zimakhala zovuta kwambiri kusunga zomangamanga, ndipo nthawi yomweyo nthawi yomwe imagwiritsidwa ntchito pozindikira ndikuchira ku zolephera zilizonse ikuwonjezeka.

Kuyamikira

Ngati kukhazikitsidwa kwa zosankha zosungirako zomwe zikuperekedwa kumawonekanso kosayenera kwa inu (zovuta, zodula ...), ndiye kuti ndi bwino kuyang'ana mkhalidwewo kuchokera kumbali ina. Ndiko kuti, kukumba mu kamangidwe ka polojekiti ndi konza vuto mu code, zomangirizidwa ku mawonekedwe a data osasunthika pachithunzichi, kutanthauzira kosamvetsetseka kwa zomwe zili mkati kapena njira ya "kuwotha" ndi/kapena katundu wotsogola pagawo la kuphatikiza chithunzi. Mwanjira iyi timakhala ndi machitidwe odziwikiratu komanso mawonekedwe omwewo amitundu yonse ndi zofananira za pulogalamu yomwe ikuyenda.

Ngati tibwereranso ku chitsanzo chenichenicho ndi chimango cha Yii ndipo osayang'ana mu kapangidwe kake (chomwe sichiri cholinga cha nkhaniyi), ndikokwanira kuwonetsa njira ziwiri zodziwika bwino:

  1. Sinthani njira yopangira zithunzi kuti muyike katundu pamalo omwe mungadziwike. Izi zimaperekedwa / kukhazikitsidwa muzowonjezera monga yii2-static-assets.
  2. Tanthauzirani ma hashe enieni a kalozera wazinthu, monga momwe tafotokozera mwachitsanzo. chiwonetsero ichi (kuyambira pa slide Na. 35). Mwa njira, mlembi wa lipoti pamapeto pake (osati popanda chifukwa!) Amalangiza kuti mutatha kusonkhanitsa katundu pa seva yomanga, ikani ku malo osungirako (monga S3), kutsogolo komwe kuli CDN.

Mafayilo otsitsa

Mlandu wina womwe ungachitike mukasamutsa pulogalamu kupita ku gulu la Kubernetes ndikusunga mafayilo amtundu mumafayilo. Mwachitsanzo, tilinso ndi pulogalamu ya PHP yomwe imavomereza mafayilo kudzera mu fomu yotumizira, kuchita nawo kena kake panthawi yogwira ntchito, ndikuwatumizanso.

Ku Kubernetes, malo omwe mafayilowa akuyenera kuyikidwa akuyenera kukhala ofananira ndi onse omwe akugwiritsa ntchito. Malingana ndi zovuta za pulogalamuyi komanso kufunikira kokonzekera kulimbikira kwa mafayilowa, zosankha zomwe tazitchula pamwambapa zikhoza kukhala malo oterowo, koma, monga tikuonera, ali ndi zovuta zawo.

Kuyamikira

Njira imodzi ndiyo pogwiritsa ntchito yosungirako yogwirizana ndi S3 (ngakhale ndi mtundu wina wamtundu wodzipangira nokha ngati minio). Kusintha ku S3 kudzafuna kusintha pa mlingo wa kodi, ndi momwe zokhutira zidzaperekedwa kumapeto, tatero kale analemba.

Zogwiritsa ntchito

Payokha, ndi bwino kuzindikira bungwe la kusungirako magawo ogwiritsira ntchito. Nthawi zambiri awa ndi mafayilo pa disk, omwe m'mawu a Kubernetes adzatsogolera ku pempho lovomerezeka nthawi zonse kuchokera kwa wogwiritsa ntchito ngati pempho lake lithera mu chidebe china.

Vutoli limathetsedwa pang'ono ndikuyatsa stickySessions pa ingress (chinthucho chimathandizidwa ndi olamulira onse otchuka - kuti mumve zambiri, onani ndemanga yathu)kumangiriza wosuta ku pod inayake ndi pulogalamuyi:

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

Koma izi sizingathetse mavuto ndi kutumizidwa mobwerezabwereza.

Kuyamikira

Njira yolondola kwambiri ingakhale kusamutsa pulogalamuyo ku kusunga magawo mu memcached, Redis ndi mayankho ofanana - zambiri, kusiya kwathunthu zosankha za fayilo.

Pomaliza

Mayankho a zomangamanga omwe akufotokozedwa m'mawuwa ndi oyenera kugwiritsidwa ntchito ngati "ndodo" zosakhalitsa (zomwe zimamveka zokongola kwambiri mu Chingerezi ngati ntchito). Zitha kukhala zofunikira m'magawo oyamba osamukira ku Kubernetes, koma zisakhazikike.

Njira yolimbikitsira ambiri ndikuchotsa iwo m'malo mwa kusinthidwa kwa kamangidwe ka ntchito molingana ndi zomwe zimadziwika kale kwa ambiri. 12-Factor App. Komabe, izi - kubweretsa ntchitoyo ku mawonekedwe osawerengeka - mosakayikira kumatanthauza kuti kusintha kwa code kudzafunika, ndipo apa ndikofunikira kupeza mgwirizano pakati pa mphamvu / zofunikira za bizinesi ndi chiyembekezo chokhazikitsa ndi kusunga njira yosankhidwa. .

PS

Werenganinso pa blog yathu:

Source: www.habr.com

Kuwonjezera ndemanga