Mafaira emunharaunda kana uchifambisa application kuKubernetes

Mafaira emunharaunda kana uchifambisa application kuKubernetes

Paunenge uchivaka CI / CD maitiro uchishandisa Kubernetes, dzimwe nguva dambudziko rinomuka rekusawirirana pakati pezvinodiwa zveiyo nyowani yekuvaka uye application iri kuendeswa kwairi. Kunyanya, padanho rekuvaka rekushandisa zvakakosha kuwana ΠΎΠ΄ΠΈΠ½ mufananidzo unozoshandiswa mukati всСх nharaunda dzeprojekiti uye masumbu. Iyi nheyo inotsigira chokwadi maererano neGoogle mudziyo manejimendi (kanopfuura kamwe pamusoro peizvi akataura uye dhipatimendi redu rehunyanzvi).

Zvisinei, iwe hauzooni chero munhu mumamiriro ezvinhu apo kodhi yesaiti inoshandisa yakagadzirira-yakagadzirirwa hurongwa, kushandiswa kwayo kunoisa zvirambidzo pakuwedzera kwayo kushandiswa. Uye nepo "munzvimbo yakajairika" izvi zviri nyore kubata nazvo, muKubernetes maitiro aya anogona kuve dambudziko, kunyanya kana wasangana nazvo kekutanga. Kunyangwe pfungwa yekuziva inogona kuuya nemhinduro dzezvivakwa zvinoita sezviri pachena uye kunyangwe zvakanaka pakutanga pakuona ... zvakakosha kuyeuka kuti mamiriro mazhinji anogona uye anofanira kugadziriswa nemavakirwo.

Isu tichaongorora yakakurumbira workaround mhinduro dzekuchengeta mafaera anogona kutungamira kune isingafadzi mhedzisiro kana uchishanda sumbu, uye zvakare kuratidza imwe nzira chaiyo.

Static kuchengetedza

Kuenzanisira, funga nezvewebhu application inoshandisa imwe mhando yejenareta kuti uwane seti yemifananidzo, zvitayera, uye zvimwe zvinhu. Semuenzaniso, iyo Yii PHP framework ine yakavakirwa-mukati asset maneja iyo inoburitsa akasiyana edhairekitori mazita. Nekuda kweizvozvo, iyo inoburitsa seti yenzira dzeiyo static saiti izvo zviri pachena kuti hazvipesane (izvi zvakaitwa nezvikonzero zvakati wandei - semuenzaniso, kubvisa zvakapetwa kana uchishandisa sosi imwe chete nezvikamu zvakawanda). Saka, kunze kwebhokisi, kekutanga iwe kuwana webhu resource module, static mafaera (chaizvoizvo, kazhinji symlinks, asi zvimwe pane izvo gare gare) anoumbwa uye akaiswa neyakajairwa midzi dhairekitori yakasarudzika yekutumirwa uku:

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

Izvi zvinorevei maererano neboka?

Muenzaniso wakapfava

Ngatitorei nyaya yakajairika, kana PHP inotungamirwa nenginx kugovera static data uye kugadzirisa zvikumbiro zviri nyore. Nzira iri nyore - Deployment nemidziyo miviri:

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

Mune fomu rakareruka, iyo nginx config inodzika kusvika kune inotevera:

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

Paunotanga kuwana saiti, midziyo inoonekwa muiyo PHP mudziyo. Asi munyaya yemidziyo miviri mukati mepod imwe, nginx hapana chainoziva nezvemafaira aya, ayo (maererano nekugadzirisa) anofanira kupiwa kwavari. Nekuda kweizvozvo, mutengi achaona kukanganisa kwe 404 kune zvese zvikumbiro kuCSS neJS mafaera.Chigadziriswa chiri nyore apa chingave kuronga dhairekitori rakafanana remidziyo. Primitive sarudzo - general 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

Iye zvino static mafaera anogadzirwa mumudziyo anoshandirwa ne nginx nemazvo. Asi rega ndikuyeuchidze kuti iyi ndiyo mhinduro yekutanga, zvinoreva kuti iri kure nekunaka uye ine nuances yayo uye zvikanganiso, izvo zvinokurukurwa pazasi.

More advanced storage

Zvino fungidzira mamiriro ezvinhu apo mushandisi akashanyira saiti, akatakura peji ine masitayipi anowanikwa mumudziyo, uye paaiverenga peji ino, isu takaisa zvakare mudziyo. Iyo kabhuku yemidziyo yave isina uye chikumbiro kuPP chinodiwa kuti utange kugadzira zvitsva. Nekudaro, kunyangwe mushure meizvi, zvinongedzo kune yekare statics zvichange zvisina basa, izvo zvinozotungamira mukukanganisa mukuratidza statics.

Pamusoro pezvo, isu tinogona kunge tine purojekiti yakawedzera kana kushomeka, zvinoreva kuti kopi imwe yechishandiso haizokwani:

  • Ngatizvikudze Deployment anosvika maviri replicas.
  • Pakatanga kuwanikwa saiti, midziyo yakagadzirwa mune imwe replica.
  • Pane imwe nguva, ingress yakasarudza (nekuda kwekuyeresa mutoro) kutumira chikumbiro kune yechipiri replica, uye zvinhu izvi zvanga zvisati zvavepo. Kana kuti pamwe havachipo nekuti isu tinoshandisa RollingUpdate uye parizvino tiri kuita deployment.

Kazhinji, chigumisiro zvakare zvikanganiso.

Kuti urege kurasikirwa nezvinhu zvekare, unogona kuchinja emptyDir pamusoro hostPath, kuwedzera static mumuviri kune cluster node. Iyi nzira yakaipa nekuti isu tinotofanira kudaro sunga kune chaiyo cluster node chikumbiro chako, nekuti - kana uchienda kune dzimwe node - dhairekitori harizove nemafaira anodiwa. Kana imwe mhando yekumashure dhairekitori kuwiriranisa pakati pemanodhi inodiwa.

Ndezvipi zvinogadziriswa?

  1. Kana hardware uye zviwanikwa zvichibvumira, unogona kushandisa cephs kuronga dhairekitori rinowanikwa zvakaenzana kune static zvinodiwa. Zvinyorwa zvepamutemo inokurudzira madhiraivha eSSD, kanenge katatu-kudzokororwa uye yakagadzikana "yakakora" yekubatanidza pakati pemasumbu node.
  2. Sarudzo isinganyanyi kudiwa ingave kuronga sevha yeNFS. Nekudaro, ipapo iwe unofanirwa kufunga nezve iyo inogoneka yekuwedzera munguva yekupindura yekugadzirisa zvikumbiro newebhu server, uye kukanganisa kushivirira kunosiya zvakanyanya kudiwa. Migumisiro yekukundikana injodzi: kurasikirwa kwegomo kunoparadza sumbu kusvika pakufa pasi pekurwiswa kweLA mutoro uchimhanyira mudenga.

Pakati pezvimwe zvinhu, sarudzo dzese dzekugadzira dzisingaperi kuchengetedza dzinoda kuchenesa kumashure echinyakare seti yemafaira akaunganidzwa pane imwe nguva yenguva. Pamberi pemidziyo ine PHP iwe unogona kuisa DaemonSet kubva caching nginx, iyo inochengetedza makopi emidziyo kwenguva shoma. Maitiro aya anogadziriswa zviri nyore kushandisa proxy_cache nekudzika kwekuchengetedza mumazuva kana gigabytes yedhisiki nzvimbo.

Kubatanidza nzira iyi nemafambisirwo emafaira akagoverwa ataurwa pamusoro apa kunopa munda wakakura wekufungidzira, wakaganhurirwa chete nebhajeti uye nehunyanzvi hwekugona kweavo vanozoishandisa nekuitsigira. Kubva pane zvakaitika, tinogona kutaura kuti iyo iri nyore hurongwa, iyo inonyanya kugadzikana inoshanda. Kana zvidimbu zvakadaro zvawedzerwa, zvinova zvakanyanya kuoma kuchengetedza zvivakwa, uye panguva imwechete iyo nguva inoshandiswa pakuongorora uye kupora kubva kune chero kukundikana inowedzera.

Kurudziro

Kana kushandiswa kwezvirongwa zvekuchengetedza zvakasarudzwa zvinoratidzikawo zvisina kukodzera kwauri (zvakaoma, zvinodhura ...), saka zvakakodzera kutarisa mamiriro acho kubva kune rumwe rutivi. Kureva, kuchera mukati meiyo dhizaini yekuvaka uye gadzirisa dambudziko mukodhi, yakasungirirwa kune imwe static data chimiro mumufananidzo, tsanangudzo isina kujeka yezviri mukati kana maitiro e "kudziyisa" uye / kana kugadzirira midziyo pamusangano wemufananidzo. Nenzira iyi tinowana maitiro anonyatso fungidzirika uye yakafanana seti yemafaira kune ese nharaunda uye replicas yeinomhanya application.

Kana tikadzokera kumuenzaniso chaiwo neYii framework uye tikasapinda muchimiro chayo (icho chisiri chinangwa chechinyorwa), zvakakwana kuratidza nzira mbiri dzakakurumbira:

  1. Shandura maitiro ekugadzira mufananidzo kuti uise zvinhu munzvimbo inofanotaurwa. Izvi zvinokurudzirwa / zvinoshandiswa mukuwedzera senge yii2-static-assets.
  2. Tsanangura mahashi chaiwo emadhairekitori emidziyo, sezvakakurukurwa semuenzaniso. mharidzo iyi (kutangira pachisiraidhi Nha. 35). Nenzira, munyori weshumo pakupedzisira (uye kwete pasina chikonzero!) Anopa zano kuti mushure mekuunganidza zvinhu pavhavha yekuvaka, zviise kune imwe nzvimbo yekuchengetedza (seS3), pamberi peiyo nzvimbo CDN.

Vadivelu Comedy Downloads

Imwe nyaya inozonyatso shanda kana uchifambisa application kune Kubernetes cluster iri kuchengeta mafaera emushandisi mufaira system. Semuenzaniso, isu zvakare tine PHP application inogamuchira mafaera kuburikidza nefomu yekurodha, inoita chimwe chinhu navo panguva yekushanda, uye kuvatumira kumashure.

MuKubernetes, nzvimbo iyo mafaera aya anofanirwa kuiswa inofanirwa kuve yakajairika kune ese makopi echishandiso. Zvichienderana nekuoma kwechishandiso uye kudiwa kwekuronga kuenderera kwemafaira aya, izvo zvataurwa pamusoro apa zvakagovaniswa sarudzo dzemidziyo inogona kunge iri nzvimbo yakadaro, asi, sezvatinoona, vane zvipingamupinyi zvavo.

Kurudziro

Imwe mhinduro ndeye uchishandisa S3-inoenderana kuchengetedza (kunyangwe iri imwe mhando yekuzvigashira chikamu senge minio). Kuchinjira kuS3 kunoda shanduko padanho rekodhi, uye kuti zvirimo zvichaunzwa sei kumberi, isu tatove nazvo akanyora.

Zvirongwa zvemushandisi

Kusiyana, zvakakosha kucherechedza sangano rekuchengetedza kwevashandisi. Kazhinji aya zvakare mafaera ari pa diski, ayo ari mumamiriro eKubernetes anozotungamira kune zvikumbiro zvemvumo zvenguva dzose kubva kumushandisi kana chikumbiro chake chapera mune imwe mudziyo.

Dambudziko rinogadziriswa pamwe nekubatidza stickySessions pa ingress (iyo ficha inotsigirwa mune ese anozivikanwa ingress controllers - kuti uwane rumwe ruzivo, ona ongororo yedu)kusungira mushandisi kune chaiyo pod nekushandisa:

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

Asi izvi hazvizobvisi matambudziko nekudzokororwa kutumirwa.

Kurudziro

Imwe nzira chaiyo ndeyekuendesa application kune kuchengetedza zvikamu mune memcached, Redis uye zvakafanana mhinduro - kazhinji, siya zvachose sarudzo dzefaira.

mhedziso

Magadzirirwo ezvivakwa anokurukurwa muzvinyorwa akakodzera kushandiswa chete muchimiro chenguva pfupi "madondoro" (izvo zvinonzwika zvakanyanya kunaka muChirungu sekushanda). Iwo anogona kuve akakosha mumatanho ekutanga ekutamisa application kuKubernetes, asi haafanire kudzika midzi.

Iyo yakajairika nzira inokurudzirwa ndeyekubvisa ivo vachifarira kugadziridzwa kwechishandiso chechishandiso zvinoenderana nezvinotozivikanwa nevakawanda. 12-Factor App. Nekudaro, izvi - kuunza chikumbiro kune chimiro chisina chirevo - zvisingaite zvinoreva kuti shanduko mukodhi ichadikanwa, uye pano zvakakosha kuwana chiyero pakati pezvinogona / zvinodiwa zvebhizinesi uye tarisiro yekushandisa nekuchengetedza nzira yakasarudzwa. .

PS

Verenga zvakare pablog yedu:

Source: www.habr.com

Voeg