Faylasha maxalliga ah markaad u guurayso codsiga Kubernetes

Faylasha maxalliga ah markaad u guurayso codsiga Kubernetes

Marka la dhisayo habka CI / CD iyadoo la adeegsanayo Kubernetes, mararka qaarkood dhibaatadu waxay soo baxdaa iswaafajin la'aanta u dhaxaysa shuruudaha kaabayaasha cusub iyo codsiga loo wareejinayo. Gaar ahaan, heerka dhismaha codsiga waa muhiim in la helo ΠΎΠ΄ΠΈΠ½ sawirka loo isticmaali doono всСх deegaanka mashruuca iyo kooxaha. Mabda'aani wuxuu hoosta ka xariiqayaa saxda ah sida laga soo xigtay Google maaraynta weelka (in ka badan hal mar tan hadlay iyo waaxdayada farsamada).

Si kastaba ha ahaatee, ma arki doontid qofna xaaladaha meesha code-ka goobta uu isticmaalo qaab-dhismeed diyaarsan, isticmaalka kaas oo soo rogaya xaddidaad isticmaalka dheeraadka ah. Iyo inta ku jirta "deegaan caadi ah" tani way fududahay in wax laga qabto, Kubernetes habdhaqankani wuxuu noqon karaa dhibaato, gaar ahaan markaad la kulanto markii ugu horeysay. In kasta oo maskaxda hal-abuurka leh ay la imaan karto xalalka kaabayaasha kuwaas oo u muuqda kuwo muuqda ama xitaa wanaagsan jaleecada hore... waxaa muhiim ah in la xasuusto in xaaladaha badankood ay awoodaan oo ay tahay in qaab dhismeed lagu xalliyo.

Aynu eegno xalalka caanka ah ee xalinta kaydinta faylalka kuwaas oo u horseedi kara cawaaqib xumo marka la shaqaynayo koox, iyo sidoo kale tilmaan waddo sax ah.

Kaydinta taagan

Si aad u muujiso, tixgeli arji mareegaha adeegsada nooc ka mid ah koronto-dhaliye taagan si loo helo sawirro, qaabab, iyo waxyaabo kale. Tusaale ahaan, qaabka Yii PHP wuxuu leeyahay maareeye hanti ku dhex dhisan oo soo saara magacyo hagitaan gaar ah. Sidaas awgeed, wax-soo-saarku waa dariiqyo loogu talagalay goobta taagan ee iska cad in aan is-dhexgalin midba midka kale (tan waxaa loo sameeyay dhowr sababood - tusaale ahaan, si loo tirtiro nuqullada marka qaybo badan ay isticmaalaan kheyraad isku mid ah). Marka, sanduuqa ka baxsan, marka ugu horeysa ee aad gasho moduleka kheyraadka webka, feylasha taagan (dhab ahaantii, inta badan symlinks, laakiin inbadan oo intaas ka dib) ayaa la sameeyay oo la dejiyay hagaha xididka caadiga ah ee u gaarka ah geyntan:

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

Maxay tani ka dhigan tahay koox ahaan?

Tusaalaha ugu fudud

Aynu soo qaadano kiis caadi ah oo caadi ah, marka PHP uu ka horeeyo nginx si loo qaybiyo xogta taagan loona habeeyo codsiyada fudud. Habka ugu fudud - Bixitaan oo leh laba weel:

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

Qaab la fududeeyay, qaabka nginx wuxuu hoos ugu dhacayaa kuwa soo socda:

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

Marka ugu horeysa ee aad gasho goobta, hantidu waxay ku soo baxaysaa weelka PHP. Laakiin kiiska laba weel oo ku dhex jira hal boodh, nginx waxba kama oga faylalkan taagan, taas oo (sida ku cad qaabeynta) waa in la siiyaa iyaga. Natiijo ahaan, macmiilku wuxuu arki doonaa qaladka 404 ee dhammaan codsiyada CSS iyo faylasha JS. Xalka ugu fudud halkan wuxuu noqon doonaa in la abaabulo hagaha guud ee weelasha. Doorashada asaasiga ah - guud 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

Hadda faylalka aan caadiga ahayn ee ku jira weelka waxaa u adeega nginx si sax ah. Laakin aan idin xasuusiyo in kani yahay xal hore oo macneheedu yahay mid ka fog rajada laga qabo oo uu leeyahay nusqaan iyo dhaliilo u gaar ah, kuwaas oo hoos lagu falanqeynayo.

Kaydinta horumarsan oo badan

Hadda qiyaas xaalad uu isticmaale booqday goobta, ku shubay bog leh qaababka laga heli karo weelka, iyo inta uu akhrinayay boggan, waxaan dib u dhignay weelka. Buug-yaraha hantida ayaa noqday faaruq, waxaana codsiga PHP looga baahan yahay inuu bilaabo soo saarista kuwa cusub. Si kastaba ha noqotee, xitaa tan ka dib, isku xirka statics-ka hore ayaa noqon doona mid aan khusayn, taas oo u horseedi doonta khaladaad muujinta statics.

Intaa waxaa dheer, waxay u badan tahay inaynu haysano mashruuc badan ama ka yar, taas oo macnaheedu yahay in hal nuqul oo codsigu aanu ku filnaan doonin:

  • Aan kor u qaadno Bixitaan ilaa laba nuqul.
  • Markii ugu horeysay ee goobta la galay, hantida waxaa lagu abuuray hal nuqul.
  • Halkaa marka ay marayso, soo galitaanka ayaa go'aansaday (ujeedooyinka isu dheelitirka culeyska) in loo diro codsi nuqulka labaad, hantidaasna wali may jirin. Mise waxaa laga yaabaa in aysan halkaas joogin sababtoo ah waan isticmaalnaa RollingUpdate wakhtigan xaadirka ah waxaanu wadnaa hawlgelin.

Guud ahaan, natiijadu waa mar kale khaladaad.

Si looga fogaado luminta hantida hore, waad bedeli kartaa emptyDir on hostPath, ku darida taagan jidh ahaan udubka rucubka Habkani waa mid xun sababtoo ah dhab ahaantii waa inaan ku xidh nood koox gaar ah Codsigaaga, sababtoo ah - haddii aad u guurto qanjidhada kale - buuggu kuma jiri doono faylasha lagama maarmaanka ah. Ama nooc ka mid ah habraaca tusaha asalka ee u dhexeeya noodhka ayaa loo baahan yahay.

Maxaa xal ah?

  1. Haddii qalabka iyo agabku oggolaadaan, waad isticmaali kartaa cephfs si loo abaabulo hagaha si siman loo heli karo ee baahiyaha taagan. Dukumeenti rasmi ah waxay ku talinaysaa darawallada SSD, ugu yaraan saddex-laab ku celcelin ah iyo xidhiidh deggan oo "qararan" oo u dhexeeya qanjidhada kooxda.
  2. Ikhtiyaar yar oo dalbanaya ayaa ah in la habeeyo server-ka NFS. Si kastaba ha ahaatee, markaa waxaad u baahan tahay inaad tixgeliso korodhka suurtagalka ah ee wakhtiga jawaabta ee codsiyada ka shaqeynta server-ka webka, iyo dulqaadashada qaladku waxay ka tagi doontaa wax badan oo la rabo. Cawaaqibta guul-darradu waa masiibo: luminta buurtu waxay ku dambaynaysaa kutlada ilaa dhimasho iyadoo la raacayo cadaadiska rarka LA ee cirka ku yaacaya.

Waxyaabaha kale, dhammaan xulashooyinka abuurista kaydinta joogtada ah waxay u baahan doonaan nadiifinta asalka faylal duugoobay oo la ururiyay muddo cayiman. Weelka hortooda waxaad ku dhejin kartaa PHP DaemonSet ka caching nginx, kaas oo kaydin doona koobiyada hantida wakhti xadidan. Dhaqankan si fudud ayaa loo habeyn karaa iyadoo la isticmaalayo proxy_cache oo leh qoto dheer kaydinta maalmo ama gigabytes ee booska diskka.

Isku-darka habkan iyo nidaamyada faylasha la qaybiyay ee kor ku xusan waxay siinaya beer weyn oo mala-awaal ah, oo xaddidan oo kaliya miisaaniyadda iyo awoodda farsamada ee kuwa fulin doona oo taageeraya. Laga soo bilaabo waayo-aragnimada, waxaan dhihi karnaa in nidaamka fudud, si aad u xasilloon uu u shaqeeyo. Marka lakabyadan oo kale lagu daro, aad bay u adkaanaysaa in la ilaaliyo kaabayaasha, isla markaana wakhtiga lagu bixiyo ogaanshaha iyo ka soo kabashada guuldarrooyinka ayaa kordha.

Talo soo jeedin

Haddii hirgelinta doorashooyinka kaydinta ee la soo jeediyay ay sidoo kale u muuqdaan kuwo aan xaq ahayn (qalalan, qaali ah ...), markaa waxaa habboon in la eego xaaladda dhinaca kale. Kuwaas oo kala ah, in la qodo dhismaha mashruuca iyo dhibaatada koodka ku hagaaji, ku xidhan qaab-dhismeedka xogta taagan ee sawirka, qeexid aan madmadow lahayn oo ku saabsan waxa ku jira ama nidaamka "kulaylinta" iyo/ama diyaarinta hantida ee marxaladda isu imaatinka sawirka. Sidan ayaanu ku helnaa habdhaqan la saadaalin karo iyo isku nooc oo faylal ah oo loogu talagalay dhammaan bay'ada iyo nuqullada codsiga socda.

Haddii aan ku soo laabanno tusaalaha gaarka ah ee qaabka Yii oo aynaan u daadegin qaab-dhismeedkeeda (oo aan ahayn ujeeddada maqaalka), waxaa ku filan in la tilmaamo laba hab oo caan ah:

  1. Beddel habka dhisidda sawirka si aad hantida u dhigto meel la saadaalin karo. Tan waxaa lagu soo jeediyay/fuliyaa kordhinta sida yii2-hati-joog.
  2. Qeex hashes gaar ah oo loogu talagalay hagaha hantida, sida looga hadlay tusaale. bandhigan (laga bilaabo slide No. 35). By habka, qoraaga warbixinta ugu dambeyntii (oo ma aha sabab la'aan!) Waxay ku talinaysaa in ka dib markii la ururiyo hantida on server dhismaha, u geliyaan kaydinta dhexe (sida S3), kaas oo hortiisa meel CDN ah.

Faylasha la soo dajin karo

Kiis kale oo si dhab ah u ciyaari doona marka codsiga loo guurayo kutlada Kubernetes waa kaydinta faylasha isticmaalaha nidaamka faylka. Tusaale ahaan, waxaan mar kale haysanaa codsi PHP ah kaas oo ku aqbala faylasha iyada oo loo marayo foom wax la geliyo, wax la sameeyo inta lagu jiro hawlgalka, dibna u soo dira.

Kubernetes dhexdeeda, goobta faylalkan la dhigo waa inay ka siman yihiin dhammaan nuqullada codsiga. Iyada oo ku xidhan kakanaanta codsiga iyo baahida loo qabo in la habeeyo joogteynta faylalkaas, xulashada qalabka la wadaago ee kor ku xusan waxay noqon kartaa meel noocaas ah, laakiin, sida aan aragno, waxay leeyihiin cilladahooda.

Talo soo jeedin

Hal xal waa iyadoo la isticmaalayo kaydinta ku habboon S3 (xitaa haddii ay tahay nooc ka mid ah qaybta is-martigeliyay sida minio). U beddelashada S3 waxay u baahan doontaa isbedel heerka koodhka, iyo sida nuxurka loogu gudbin doono dhinaca hore, waxaanu hore u haynay qoray.

Kulamada isticmaalaha

Si gooni ah, waxaa habboon in la xuso abaabulka kaydinta fadhiyada isticmaalaha. Badanaa kuwani sidoo kale waa faylal ku yaal diskka, taas oo ku jirta macnaha Kubernetes waxay u horseedi doontaa codsiyada oggolaanshaha joogtada ah ee isticmaalaha haddii codsigiisu uu ku dhammaado weel kale.

Dhibaatada qayb ahaan waxaa lagu xalliyaa shid stickySessions soo galitaanka (sifada waxaa lagu taageeraa dhamaan kantaroolayaasha soo galitaanka caanka ah - wixii faahfaahin dheeraad ah, eeg dib u eegistayada)si loogu xidho isticmaalaha boodh gaar ah codsiga:

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

Laakiin tani ma baabi'in doonto dhibaatooyinka soo noqnoqda.

Talo soo jeedin

Dariiqa saxda ah ayaa ah in codsiga lagu wareejiyo Ku kaydinta fadhiyada memcached, Redis iyo xalalka la midka ah - guud ahaan, gabi ahaanba iska dhaaf xulashooyinka faylka.

gunaanad

Xalalka kaabayaasha ah ee looga hadlay qoraalka ayaa u qalma in la isticmaalo oo keliya qaabka ku-meel-gaadhka ah ee "curyaamada" (taas oo u muuqata mid aad u qurux badan oo Ingiriisi ah sida shaqada). Waxa laga yaabaa inay khuseeyaan marxaladaha ugu horreeya ee u haajiridda codsiga Kubernetes, laakiin waa inaanay xidid qaadan.

Jidka guud ee lagu taliyay waa in laga takhaluso iyaga oo door bidaaya wax ka beddelka qaab dhismeedka codsiga iyada oo la raacayo waxa horeba loo yaqaan dad badan 12-Factor App. Si kastaba ha ahaatee, tani - keenista codsiga qaab aan dawlad lahayn - lama huraan waxay ka dhigan tahay in isbeddelka koodka loo baahan doono, halkanna waxaa muhiim ah in la helo dheelitirka u dhexeeya awoodaha / shuruudaha ganacsiga iyo rajada laga qabo hirgelinta iyo ilaalinta waddada la doortay. .

PS

Sidoo kale ka akhri boggayaga:

Source: www.habr.com

Add a comment