Faidhlichean ionadail nuair a bhios tu a’ gluasad tagradh gu Kubernetes

Faidhlichean ionadail nuair a bhios tu a’ gluasad tagradh gu Kubernetes

Nuair a bhios tu a’ togail pròiseas CI/CD a’ cleachdadh Kubernetes, uaireannan bidh an duilgheadas ag èirigh a thaobh neo-fhreagarrachd eadar riatanasan a’ bhun-structair ùir agus an t-iarrtas ga ghluasad thuige. Gu sònraichte, aig ìre togail an tagraidh tha e cudromach faighinn один ìomhaigh a thèid a chleachdadh ann an всех àrainneachdan pròiseict agus cruinneachaidhean. Tha am prionnsabal seo mar bhunait air a 'cheart a rèir Google stiùireadh container (barrachd air aon uair mu dheidhinn seo bruidhinn agus an roinn theicnigeach againn).

Ach, chan fhaic thu duine ann an suidheachaidhean far a bheil còd na làraich a’ cleachdadh frèam deiseil, agus tha cleachdadh a’ cur bacadh air tuilleadh cleachdaidh. Agus ged a tha e ann an “àrainneachd àbhaisteach” tha e furasta dèiligeadh ris, ann an Kubernetes faodaidh an giùlan seo a bhith na dhuilgheadas, gu sònraichte nuair a thachras tu air airson a ’chiad uair. Ged a dh'fhaodas inntinn innleachdach fuasglaidhean bun-structair a chruthachadh a tha follaiseach no eadhon math aig a' chiad sealladh ... tha e cudromach cuimhneachadh gum faod agus gum bu chòir don mhòr-chuid de shuidheachaidhean. fuasgladh a thaobh ailtireachd.

Bheir sinn sùil air fuasglaidhean obrach mòr-chòrdte airson stòradh fhaidhlichean a dh’ fhaodadh builean mì-thlachdmhor adhbhrachadh nuair a bhios tu ag obair ann am brabhsair, agus cuideachd comharraich slighe nas ceart.

Stòradh statach

Gus sealltainn, smaoinich air tagradh lìn a bhios a’ cleachdadh gineadair statach de sheòrsa air choreigin gus seata de dh’ ìomhaighean, stoidhlichean agus rudan eile fhaighinn. Mar eisimpleir, tha manaidsear maoin togte aig frèam Yii PHP a ghineas ainmean seòlaidh sònraichte. A rèir sin, tha an toradh na sheata de shlighean airson an làrach statach a tha gu follaiseach nach eil a ’dol an aghaidh a chèile (chaidh seo a dhèanamh airson grunn adhbharan - mar eisimpleir, cuir às do dhùblaidhean nuair a bhios tu a’ cleachdadh an aon ghoireas le mòran phàirtean). Mar sin, a-mach às a’ bhogsa, a’ chiad uair a gheibh thu cothrom air modal goireas lìn, bidh faidhlichean statach (gu dearbh, gu tric symlinks, ach barrachd air sin nas fhaide air adhart) air an cruthachadh agus air an cur a-mach le eòlaire freumh cumanta gun samhail airson an cleachdadh seo:

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

Dè tha seo a’ ciallachadh a thaobh braisle?

An eisimpleir as sìmplidh

Gabhamaid cùis gu math cumanta, nuair a tha nginx air thoiseach air PHP gus dàta statach a sgaoileadh agus iarrtasan sìmplidh a phròiseasadh. An dòigh as fhasa - Cleachdadh le dà shoitheach:

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

Ann an cruth nas sìmplidhe, tha an config nginx a’ goil sìos gu na leanas:

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

Nuair a gheibh thu cothrom air an làrach an toiseach, nochdaidh so-mhaoin anns a’ ghobhar PHP. Ach a thaobh dà shoitheach taobh a-staigh aon pod, chan eil fios aig nginx mu na faidhlichean statach sin, a bu chòir (a rèir an rèiteachaidh) a thoirt dhaibh. Mar thoradh air an sin, chì an neach-dèiligidh mearachd 404 airson a h-uile iarrtas gu faidhlichean CSS agus JS. Is e am fuasgladh as sìmplidh an seo eòlaire cumanta a chuir air dòigh airson soithichean. Prìomh roghainn - coitcheann 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

A-nis tha faidhlichean statach a chaidh a chruthachadh anns a’ bhogsa air an toirt seachad le nginx gu ceart. Ach leig dhomh do chuimhneachadh gur e fuasgladh prìomhadail a tha seo, a tha a 'ciallachadh gu bheil e fada bho bhith air leth freagarrach agus gu bheil nuances agus easbhaidhean aige fhèin, a thèid a dheasbad gu h-ìosal.

Stòradh nas adhartaiche

A-nis smaoinich air suidheachadh far an do thadhail neach-cleachdaidh air an làrach, luchdaich e duilleag leis na stoidhlichean a bha rim faighinn anns a’ ghobhar, agus fhad ‘s a bha e a’ leughadh na duilleige seo, chuir sinn an soitheach a-rithist. Tha an catalog maoin air fàs falamh agus tha feum air iarrtas gu PHP gus tòiseachadh air feadhainn ùra a ghineadh. Ach, eadhon às deidh seo, bidh ceanglaichean gu seann stats neo-iomchaidh, a bheir gu mearachdan ann a bhith a’ taisbeanadh stats.

A bharrachd air an sin, tha e coltach gum bi pròiseact nas luchdaichte no nas lugha againn, a tha a’ ciallachadh nach bi aon leth-bhreac den tagradh gu leòr:

  • Leig leinn a mheudachadh Cleachdadh suas ri dà mhac-samhail.
  • Nuair a chaidh inntrigeadh dhan làrach an toiseach, chaidh maoin a chruthachadh ann an aon mhac-samhail.
  • Aig àm air choreigin, cho-dhùin ingress (airson adhbharan cothromachaidh luchdan) iarrtas a chuir chun dàrna mac-samhail, agus cha robh na maoinean sin ann fhathast. No is dòcha nach eil iad ann tuilleadh oir tha sinn a’ cleachdadh RollingUpdate agus an-dràsta tha sinn a 'dèanamh cleachdadh.

San fharsaingeachd, tha an toradh a-rithist mearachdan.

Gus nach caill thu seann mhaoin, faodaidh tu atharrachadh emptyDir air hostPath, a’ cur statach gu corporra ri nód braisle. Tha an dòigh-obrach seo dona oir feumaidh sinn gu dearbh ceangail ri nód brais sònraichte an tagradh agad, oir - gun fhios nach gluais thu gu nodan eile - cha bhi na faidhlichean riatanach san eòlaire. No tha feum air seòrsa de shioncronachadh eòlaire cùl-fhiosrachaidh eadar nodan.

Dè na fuasglaidhean a th’ ann?

  1. Ma cheadaicheas bathar-cruaidh is goireasan, faodaidh tu a chleachdadh cephfs gus eòlaire a tha a cheart cho ruigsinneach a chuir air dòigh airson feumalachdan statach. Sgrìobhainnean oifigeil a’ moladh draibhearan SSD, ath-riochdachadh co-dhiù trì-fhillte agus ceangal seasmhach “tiugh” eadar nodan cnuasachaidh.
  2. Roghainn nach biodh cho doirbh a bhiodh ann frithealaiche NFS a chur air dòigh. Ach, feumaidh tu an uairsin aire a thoirt don àrdachadh a dh’ fhaodadh a bhith ann san ùine freagairt airson a bhith a ’giullachd iarrtasan bhon t-seirbheisiche lìn, agus fàgaidh fulangas locht mòran ri bhith air a mhiannachadh. Tha builean fàilligeadh uamhasach: tha call an t-sliabh a’ toirt buaidh air a’ bhuidheann gu bàs fo chuideam an luchd LA a’ reubadh a-steach do na speuran.

Am measg rudan eile, bidh feum air a h-uile roghainn airson stòradh seasmhach a chruthachadh glanadh cùl-fhiosrachaidh seann sheata de fhaidhlichean cruinnichte thar ùine shònraichte. Air beulaibh soithichean le PHP faodaidh tu a chuir DaemonSet bho caching nginx, a stòradh lethbhric de mhaoin airson ùine chuingealaichte. Tha an giùlan seo furasta a rèiteachadh le bhith a 'cleachdadh proxy_cache le doimhneachd stòraidh ann an làithean no gigabytes de dh’ àite diosc.

Le bhith a’ cothlamadh an dòigh seo leis na siostaman faidhle sgaoilte a tha air an ainmeachadh gu h-àrd tha raon mòr airson mac-meanmna, air a chuingealachadh a-mhàin le buidseat agus comas teicnigeach an fheadhainn a chuireas an gnìomh agus a bheir taic dha. Bho eòlas, faodaidh sinn a ràdh gu bheil an siostam nas sìmplidhe, nas seasmhaiche a bhios e ag obair. Nuair a thèid na sreathan sin a chur ris, bidh e tòrr nas duilghe am bun-structar a chumail suas, agus aig an aon àm bidh an ùine a thathar a 'cosg air a bhith a' lorg agus a 'faighinn air ais bho fhàilligidhean sam bith ag àrdachadh.

Moladh

Ma tha coltas nach eil buileachadh nan roghainnean stòraidh a tha san amharc dhut (iom-fhillte, daor ...), is fhiach coimhead air an t-suidheachadh bhon taobh eile. Is e sin, cladhach a-steach don ailtireachd pròiseict agus socraich an duilgheadas sa chòd, ceangailte ri cuid de structar dàta statach san ìomhaigh, mìneachadh gun teagamh air susbaint no modh-obrach airson “blàthachadh” agus / no maoin ro-chruinneachadh aig ìre cruinneachaidh ìomhaighean. San dòigh seo gheibh sinn giùlan a tha gu tur ro-innseach agus an aon sheata de fhaidhlichean airson a h-uile àrainneachd agus mac-samhail den tagradh ruith.

Ma thilleas sinn chun eisimpleir shònraichte le frèam Yii agus nach dèan sinn sgrùdadh air an structar aige (nach e adhbhar an artaigil), tha e gu leòr dà dhòigh-obrach mòr-chòrdte a chomharrachadh:

  1. Atharraich am pròiseas togail ìomhaigh gus maoin a chuir ann an àite a tha dùil. Tha seo air a mholadh / air a chuir an gnìomh ann an leudachadh mar yii2-staid-mhaoin.
  2. Mìnich hashes sònraichte airson clàran maoin, mar a chaidh a dheasbad ann an me. an taisbeanadh seo (a 'tòiseachadh bho sleamhnag Àir. 35). Co-dhiù, tha ùghdar na h-aithisg aig a’ cheann thall (agus chan ann gun adhbhar!) A’ comhairleachadh, às deidh dhaibh maoin a chruinneachadh air an t-seirbheisiche togail, an luchdachadh suas gu stòr-stòraidh meadhanach (mar S3), agus CDN air beulaibh an àite sin.

Luchdaich sìos

Is e cùis eile a thig gu cinnteach a-steach nuair a nì thu imrich air tagradh gu buidheann Kubernetes faidhlichean luchd-cleachdaidh a stòradh san t-siostam faidhle. Mar eisimpleir, tha tagradh PHP againn a-rithist a ghabhas ri faidhlichean tro fhoirm luchdaich suas, a nì rudeigin leotha rè obrachadh, agus gan cur air ais.

Ann an Kubernetes, bu chòir an t-àite far am bu chòir na faidhlichean sin a chuir a bhith cumanta airson a h-uile mac-samhail den tagradh. A rèir cho iom-fhillte 'sa tha an tagradh agus an fheum air seasmhachd nam faidhlichean sin a chuir air dòigh, faodaidh na roghainnean inneal co-roinnte gu h-àrd a bhith nan àite, ach, mar a chì sinn, tha na h-eas-bhuannachdan aca.

Moladh

Is e aon fhuasgladh a’ cleachdadh stòradh a tha co-chosmhail ri S3 (eadhon ged a tha e na sheòrsa de roinn fèin-aoigheachd mar minio). Bidh feum air atharraichean airson atharrachadh gu S3 aig ìre còd, agus mar a thèid susbaint a lìbhrigeadh air a 'cheann aghaidh, tha sinn mar-thà sgrìobh.

Seiseanan luchd-cleachdaidh

Air leth, is fhiach a bhith mothachail air eagrachadh seiseanan luchd-cleachdaidh a stòradh. Gu tric tha iad sin cuideachd nam faidhlichean air diosc, a bheir ann an co-theacsa Kubernetes gu iarrtasan ceadachaidh cunbhalach bhon neach-cleachdaidh ma thig an t-iarrtas aige gu crìch ann an soitheach eile.

Tha an duilgheadas air a rèiteachadh gu ìre le bhith a 'tionndadh air stickySessions air teachd a-steach (tha am feart a’ faighinn taic anns a h-uile rianadair inntrigidh mòr-chòrdte - airson tuilleadh fiosrachaidh, faic ar lèirmheas)gus an neach-cleachdaidh a cheangal ri pod sònraichte leis an tagradh:

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

Ach cha chuir seo às do dhuilgheadasan le ath-chleachdadh.

Moladh

Is e dòigh nas ceart an tagradh a ghluasad gu a’ stòradh sheiseanan ann am memcached, Redis agus fuasglaidhean coltach ris - san fharsaingeachd, gu tur trèigsinn roghainnean faidhle.

co-dhùnadh

Tha na fuasglaidhean bun-structair air an deach beachdachadh san teacsa airidh air an cleachdadh a-mhàin ann an cruth “crutches” sealach (a tha nas bòidhche sa Bheurla mar fhuasgladh). Faodaidh iad a bhith buntainneach anns na ciad ìrean de imrich tagradh gu Kubernetes, ach cha bu chòir dhaibh freumhachadh.

Is e an t-slighe a thathar a’ moladh san fharsaingeachd faighinn cuidhteas iad airson atharrachadh ailtireil air an tagradh a rèir na tha mòran eòlach air mar-thà. App 12-Factor. Ach, tha seo - a’ toirt an tagradh gu cruth gun stàit - gu do-sheachanta a’ ciallachadh gum bi feum air atharrachaidhean sa chòd, agus an seo tha e cudromach cothromachadh a lorg eadar comasan / riatanasan a’ ghnìomhachais agus na tha san amharc airson an t-slighe a chaidh a thaghadh a bhuileachadh agus a chumail suas. .

PS

Leugh cuideachd air ar blog:

Source: www.habr.com

Cuir beachd ann