Lifaele tsa lehae ha u fetisetsa sesebelisoa ho Kubernetes

Lifaele tsa lehae ha u fetisetsa sesebelisoa ho Kubernetes

Ha ho etsoa ts'ebetso ea CI / CD ho sebelisa Kubernetes, ka linako tse ling bothata bo hlaha ka ho se lumellane pakeng tsa litlhoko tsa lisebelisoa tse ncha le kopo e fetisetsoang ho eona. Haholo-holo, sethaleng sa ho haha ​​​​kopo ho bohlokoa ho fumana один setšoantšo se tla sebelisoa ho всех libaka tsa morero le lihlopha. Molao-motheo ona o thehile se nepahetseng ho latela Google tsamaiso ea setshelo (hangata ka sena buile le lefapha la rona la tekheniki).

Leha ho le joalo, u ke ke ua bona mang kapa mang maemong ao khoutu ea sebaka sa marang-rang e sebelisang moralo o lokiselitsoeng, oo tšebeliso ea oona e behang lithibelo tšebelisong ea eona e tsoelang pele. 'Me ha u ntse u le "sebakeng se tloaelehileng" sena se bonolo ho sebetsana le sona, ho Kubernetes boitšoaro bona bo ka fetoha bothata, haholo-holo ha u kopana le bona ka lekhetlo la pele. Le ha kelello ea boiqapelo e ka hlahisa litharollo tsa meaho tse bonahalang li hlakile kapa li ntle ha u habanya feela ... ho bohlokoa ho hopola hore maemo a mangata a ka khona ebile a lokela ho etsa joalo. ho rarolloa ka meralo.

Ha re shebeng litharollo tse tsebahalang tsa ho boloka lifaele tse ka lebisang litlamorao tse sa thabiseng ha o sebelisa sehlopha, hape o bonts'a tsela e nepahetseng haholoanyane.

Polokelo e tsitsitseng

Ho etsa mohlala, nahana ka ts'ebeliso ea tepo e sebelisang mofuta o itseng oa jenereithara e sa fetoheng ho fumana sehlopha sa litšoantšo, litaele le lintho tse ling. Mohlala, moralo oa Yii PHP o na le molaoli oa thepa o hahelletsoeng o hlahisang mabitso a li-directory a ikhethang. Ka lebaka leo, tlhahiso ke sete ea litsela bakeng sa sebaka se tsitsitseng seo ho hlakileng hore ha se kopane (sena se entsoe ka mabaka a 'maloa - mohlala, ho felisa tse kopitsoang ha likarolo tse ngata li sebelisa mohloli o le mong). Kahoo, ka ntle ho lebokose, lekhetlo la pele ha u fumana mojule oa mohloli oa marang-rang, lifaele tse tsitsitseng (ha e le hantle, hangata li-symlinks, empa ho feta moo hamorao) li thehoa 'me li behiloe ka buka e tloaelehileng ea metso e ikhethang bakeng sa phepelo ena:

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

Sena se bolela eng mabapi le sehlopha?

Mohlala o bonolo ka ho fetisisa

Ha re nke nyeoe e tloaelehileng, ha PHP e etelloa pele ke nginx ho aba data e tsitsitseng le ho sebetsana le likopo tse bonolo. Mokhoa o bonolo - dulang ka lijana tse peli:

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

Ka mokhoa o nolofalitsoeng, nginx config e theohela ho tse latelang:

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

Ha u qala ho fumana sebaka sa marang-rang, thepa e hlaha ka har'a setshelo sa PHP. Empa tabeng ea lijana tse peli ka har'a pod e le 'ngoe, nginx ha e tsebe letho ka lifaele tsena tse tsitsitseng, tseo (ho ea ka tlhophiso) li lokelang ho fuoa tsona. Ka lebaka leo, mofani o tla bona phoso ea 404 bakeng sa likōpo tsohle ho lifaele tsa CSS le JS. Tharollo e bonolo ka ho fetisisa mona e tla ba ho hlophisa buka e tloaelehileng bakeng sa lijana. Khetho ea khale - ka kakaretso 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

Hona joale lifaele tse tsitsitseng tse hlahisitsoeng ka har'a setshelo li fanoa ke nginx ka nepo. Empa e re ke u hopotse hore ena ke tharollo ea khale, e bolelang hore ha e ntle ebile e na le mefokolo le mefokolo ea eona, e tšohloang ka tlase.

Polokelo e tsoetseng pele haholoanyane

Joale ak'u nahane ka boemo boo mosebelisi a ileng a etela sebaka sena sa marang-rang, a kenya leqephe le nang le litaele tse fumanehang ka har'a setshelo, 'me ha a ntse a bala leqephe lena, re ile ra kenya sets'oants'o hape. Lethathamo la thepa ha le na letho 'me ho hlokahala kopo ho PHP ho qala ho hlahisa tse ncha. Leha ho le joalo, esita le ka mor'a sena, li-link tsa li-statics tsa khale li tla be li se na thuso, tse tla lebisa liphoso ho bonts'a li-statics.

Ntle le moo, re kanna ra ba le projeke e ngata kapa e tlase, ho bolelang hore kopi e le 'ngoe ea kopo e ke ke ea lekana:

  • Ha re e phahamiseng dulang ho fihlela ho likopi tse peli.
  • Ha sebaka sena se qala ho kena, thepa e entsoe ka setšoantšo se le seng.
  • Ka nako e 'ngoe, ingress e ile ea etsa qeto (bakeng sa merero ea ho leka-lekanya mojaro) ho romela kopo ho replica ea bobeli, 'me thepa ena e ne e le sieo. Kapa mohlomong ha ba sa le teng hobane re sebelisa RollingUpdate 'me hajoale re ntse re etsa deployment.

Ka kakaretso, phello ke liphoso hape.

Ho qoba ho lahleheloa ke thepa ea khale, o ka fetoha emptyDir mabapi le hostPath, ho eketsa static 'meleng ho node ea cluster. Mokhoa ona o mpe hobane ha e le hantle re tlameha ho etsa joalo tlama sebakeng se itseng sa cluster kopo ea hau, hobane - ha u fallela ho li-node tse ling - bukana e ke ke ea ba le lifaele tse hlokahalang. Kapa mofuta o mong oa khokahano ea li-directory tsa morao-rao lipakeng tsa li-node lia hlokahala.

Litharollo ke life?

  1. Haeba lisebelisoa le lisebelisoa li u lumella, u ka li sebelisa li-cephfs ho hlophisa bukana e fumanehang ka ho lekana bakeng sa litlhoko tse tsitsitseng. Litokomane tsa molao e khothalletsa li-drive tsa SSD, bonyane ho pheta-pheta ka makhetlo a mararo le khokahanyo e tsitsitseng e "tenya" lipakeng tsa lihlopha tsa lihlopha.
  2. Khetho e sa hlokeng letho e ka ba ho hlophisa seva sa NFS. Leha ho le joalo, joale u lokela ho ela hloko keketseho e ka khonehang ea nako ea ho arabela bakeng sa likōpo tsa ho sebetsana le likopo tsa marang-rang, 'me ho mamella liphoso ho tla siea ho hongata ho lakatsehang. Liphello tsa ho hloleha ke tlokotsi: tahlehelo ea thaba e senya sehlopha ho isa lefung tlas'a khatello ea mojaro oa LA o potlakelang leholimong.

Har'a lintho tse ling, likhetho tsohle tsa ho theha polokelo e tsitsitseng li tla hloka ho hloekisa bokamorao lifaele tse siiloeng ke nako tse bokelletsoeng ka nako e itseng. Ka pel'a lijana tse nang le PHP u ka li beha DaemonSet ho tsoa ho caching nginx, e tla boloka likopi tsa thepa ka nako e lekanyelitsoeng. Mokhoa ona o ka lokisoa habonolo ha o sebelisoa proxy_cache ka botebo ba polokelo ka matsatsi kapa li-gigabytes tsa sebaka sa disk.

Ho kopanya mokhoa ona le litsamaiso tsa faele tse ajoang tse boletsoeng ka holimo ho fana ka sebaka se seholo sa monahano, se lekanyelitsoeng feela ke tekanyetso le bokhoni ba botekgeniki ba ba tla e sebelisa le ho e tšehetsa. Ho tsoa phihlelong, re ka re ha tsamaiso e le bonolo, e sebetsa e tsitsitse haholoanyane. Ha likarolo tse joalo li eketsoa, ​​ho ba thata haholo ho boloka lisebelisoa tsa motheo, 'me ka nako e ts'oanang nako e sebelisoang ho hlahloba le ho hlaphoheloa ho tsoa mefokolong leha e le efe ea eketseha.

Keletso

Haeba ts'ebetsong ea likhetho tse reriloeng tsa polokelo e boetse e bonahala e se na toka ho uena (e rarahaneng, e theko e boima ...), joale ho loketse ho sheba boemo ho tloha ka lehlakoreng le leng. E leng, ho cheka moaho oa morero le lokisa bothata khoutu, e tlamelletsoeng ho sebopeho se itseng sa data se tsitsitseng setšoantšong, tlhaloso e hlakileng ea likahare kapa mokhoa oa ho "futhumala" le / kapa thepa ea pele ho sethaleng sa ho kopanya litšoantšo. Ka tsela ena re fumana boits'oaro bo sa lebelloang le sete e tšoanang ea lifaele bakeng sa libaka tsohle le likopi tsa ts'ebeliso e sebetsang.

Haeba re khutlela mohlaleng o itseng ka moralo oa Yii mme re sa kenelle ka har'a sebopeho sa eona (e seng morero oa sengoloa), ho lekane ho supa mekhoa e 'meli e tsebahalang:

  1. Fetola mokhoa oa ho aha litšoantšo ho beha thepa sebakeng se ka lebelloang. Sena se khothalelitsoe / se kengoa tšebetsong ka likeketso tse kang yii2-static-assets.
  2. Hlalosa li-hashe tse khethehileng bakeng sa libuka tsa thepa, joalo ka ha ho tšohloa ho mohlala. tlhahiso ena (ho qala ho slide No. 35). Ka tsela, mongoli oa tlaleho qetellong (mme eseng ntle le mabaka!) O eletsa hore ka mor'a ho bokella thepa ho seva sa mohaho, u li kenye sebakeng sa polokelo e bohareng (joaloka S3), ka pel'a sebaka seo CDN e leng sona.

Lisebelisoa

Nyeoe e 'ngoe e tla sebetsa ha o fallisetsa kopo ho sehlopha sa Kubernetes ke ho boloka lifaele tsa mosebelisi tsamaisong ea faele. Ka mohlala, re boetse re na le kopo ea PHP e amohelang lifaele ka foromo ea ho kenya, ho etsa ho hong le tsona nakong ea ts'ebetso, ebe e li khutlisetsa.

Ho Kubernetes, sebaka seo lifaele tsena li lokelang ho behoa ho sona se lokela ho ba se tloaelehileng ho likopi tsohle tsa kopo. Ho itšetlehile ka ho rarahana ha kopo le tlhokahalo ea ho hlophisa ho phehella ha lifaele tsena, likhetho tsa lisebelisoa tse arolelanoang ka holimo li ka 'na tsa e-ba sebaka se joalo, empa, joalokaha re bona, li na le mefokolo ea tsona.

Keletso

Tharollo e le 'ngoe ke ho sebelisa polokelo e lumellanang le S3 (leha e le mofuta o itseng oa sehlopha se ikemetseng joalo ka minio). Ho fetohela ho S3 ho tla hloka liphetoho boemong ba khoutu, le hore na litaba li tla fanoa joang karolong e ka pele, re se re ntse re e-na le eona o ngotse.

Likopano tsa basebelisi

Ka thoko, ho bohlokoa ho hlokomela mokhatlo oa polokelo ea mananeo a basebelisi. Hangata tsena ke lifaele tsa disk, tseo moelelong oa Kubernetes li tla lebisa ho likopo tsa tumello tse sa khaotseng ho tsoa ho mosebelisi haeba kopo ea hae e fella ka setshelo se seng.

Bothata bo rarolloa ka ho bulela stickySessions ka ho kena (sebopeho se tšehetsoa ho balaoli bohle ba ingress ba tsebahalang - bakeng sa lintlha tse ling, bona tlhahlobo ea rona)ho tlamella mosebelisi ho pod e itseng ka ts'ebeliso:

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

Empa sena se ke ke sa felisa mathata ka ho romelloa khafetsa.

Keletso

Mokhoa o nepahetseng haholoanyane e ka ba ho fetisetsa kopo ho ho boloka linako ka memcached, Redis le tharollo e tšoanang - ka kakaretso, lahla likhetho tsa faele ka botlalo.

fihlela qeto e

Litharollo tsa meaho tse tšohliloeng sengolong li loketse ho sebelisoa feela ka sebopeho sa "crutches" ea nakoana (e utloahala e le ntle haholo ka Senyesemane joalo ka ha ho sebetsa). E kanna ea ba tsa bohlokoa methating ea pele ea ho fetisetsa kopo ho Kubernetes, empa ha ea lokela ho mela.

Mokhoa o khothaletsoang ka kakaretso ke oa ho li tlosa molemong oa phetoho ea meralo ea kopo ho latela se seng se ntse se tsebahala ho ba bangata. 12-Factor App. Leha ho le joalo, sena - ho tlisa kopo ho foromo e se nang naha - ka mokhoa o ke keng oa qojoa ho bolela hore liphetoho tsa khoutu li tla hlokahala, 'me mona ke habohlokoa ho fumana tekanyo pakeng tsa bokhoni / litlhoko tsa khoebo le menyetla ea ho kenya ts'ebetsong le ho boloka tsela e khethiloeng. .

PES

Bala hape ho blog ea rona:

Source: www.habr.com

Eketsa ka tlhaloso