Ko nga konae paetata i te wa e heke ana i tetahi tono ki Kubernetes

Ko nga konae paetata i te wa e heke ana i tetahi tono ki Kubernetes

I te wa e hanga ana i te tukanga CI/CD ma te whakamahi i nga Kubernetes, i etahi wa ka puta ake te raruraru o te kore hototahi i waenga i nga whakaritenga o te hanganga hou me te tono e tukuna ana ki a ia. Ina koa, i te waahanga hanga tono he mea nui kia whiwhi один whakaahua ka whakamahia ki roto всех nga taiao kaupapa me nga tautau. Ko tenei maataapono kei raro i te tika e ai ki a Google whakahaere ipu (neke atu i te kotahi mo tenei korero me ta maatau tari hangarau).

Engari, kaore koe e kite i tetahi i roto i nga waahi ka whakamahia e te waehere o te waahi he anga kua oti te hanga, ko te whakamahinga o te whakamahi i nga here mo tana whakamahinga ake. A ahakoa i roto i te "taiao noa" he ngawari tenei ki te mahi, i roto i nga Kubernetes ka raru pea tenei whanonga, ina koa ka tupono koe mo te wa tuatahi. Ahakoa ka taea e te hinengaro auaha te whakaputa i nga otinga hanganga e kitea ana he pai, he pai ranei i te titiro tuatahi... he mea nui kia mahara ko te nuinga o nga ahuatanga ka taea me te tika. kia whakatauhia ma te hoahoanga.

Me titiro ki nga rongoa rongoa rongonui mo te penapena i nga konae ka puta he hua kino i te wa e whakahaere ana i te roopu, me te tohu hoki i te huarahi tika ake.

Te rokiroki pateko

Hei whakatauira, whakaarohia he tono tukutuku e whakamahi ana i etahi momo whakangao pateko ki te tiki huinga whakaahua, ahua, me etahi atu mea. Hei tauira, kei roto i te anga Yii PHP he kaiwhakahaere rawa i roto e whakaputa ingoa whaiaronga ahurei. No reira, ko te putanga he huinga ara mo te waahi pateko e kore e whiti tetahi ki tetahi (he maha nga take i mahia - hei tauira, hei whakakore i nga taarua ina whakamahi nga waahanga maha i te rauemi kotahi). Na, i waho o te pouaka, i te wa tuatahi ka uru koe ki tetahi waahanga rauemi paetukutuku, ka hangaia nga konae pateko (he maha tonu nga symlinks, engari he maha ake i muri mai) ka hangaia me te raarangi pakiaka noa mo tenei tukunga:

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

He aha te tikanga o tenei mo te tautau?

Ko te tauira tino ngawari

Me tango he keehi tino noa, i te wa i mua te PHP i te nginx ki te tohatoha i nga raraunga tuuturu me te tukatuka i nga tono ngawari. Ko te huarahi ngawari - whakamahinga me nga ipu e rua:

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

I roto i te ahua ngawari, ko te whirihora nginx ka heke iho ki nga mea e whai ake nei:

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

Ina uru tuatahi koe ki te pae, ka puta nga rawa ki te ipu PHP. Engari mo nga ipu e rua i roto i te pod kotahi, karekau he mohio a nginx mo enei konae pateko, e tika ana kia hoatu ki a raatau. Ko te mutunga, ka kite te kiritaki i te hapa 404 mo nga tono katoa ki nga konae CSS me JS. Ko te otinga tino ngawari i konei ko te whakarite i tetahi raarangi noa mo nga ipu. Kōwhiringa tuatahi - whānui 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

Inaianei ko nga konae i hangaia i roto i te ipu ka tukuna tika e te nginx. Engari kia whakamahara ahau ki a koe he otinga tawhito tenei, ko te tikanga he tawhiti atu i te pai me ona ake ahuatanga me ona ngoikoretanga, e korerohia ana i raro nei.

Te rokiroki teitei ake

Inaianei whakaarohia he ahuatanga i toro atu te kaiwhakamahi ki te pae, ka utaina he wharangi me nga momo e waatea ana i roto i te ipu, a i a ia e panui ana i tenei wharangi, ka tukuna ano e matou te ipu. Kua noho kau te putumōhio rawa, me tono ki te PHP hei timata ki te whakaputa i nga mea hou. Heoi, ahakoa i muri i tenei, ka kore e whai kiko nga hononga ki nga taatai ​​tawhito, ka puta he he ki te whakaatu i nga taatai.

I tua atu, he nui ake, iti ake ranei te kaupapa kua utaina e matou, ko te tikanga ka kore e ranea tetahi kape o te tono:

  • Kia piki ake whakamahinga kia rua nga tauira.
  • I te wa tuatahi i uru atu ai ki te waahi, i hangaia nga rawa i roto i te tauira kotahi.
  • I etahi wa, ka whakatau a ingress (mo nga kaupapa whakataurite kawenga) ki te tuku tono ki te tauira tuarua, kare ano enei rawa i reira. Ranei pea kua kore ratou i reira no te mea whakamahi tatou RollingUpdate a i tenei wa kei te mahi toha.

I te nuinga o te waa, ko te hua he he ano.

Hei karo i te ngaro o nga rawa tawhito, ka taea e koe te whakarereke emptyDir i runga i hostPath, te taapiri a-tinana ki te node tautau. He kino tenei huarahi na te mea me penei taatau herea ki tetahi node tautau motuhake to tono, na te mea - mena ka neke ki etahi atu pona - karekau nga konae e tika ana i roto i te raarangi. Ka hiahiatia etahi momo tukutahi whaiaronga papamuri i waenga i nga pona.

He aha nga otinga?

  1. Mena ka taea e nga taputapu me nga rauemi, ka taea e koe te whakamahi cephfs ki te whakarite i tetahi whaiaronga e waatea ana mo nga hiahia tuuturu. Tuhinga whaimana e taunaki ana i nga puku SSD, e toru nga waahanga tukurua me te hononga "momona" pumau i waenga i nga kohinga kahui.
  2. Ko te waahanga iti ake ko te whakarite i tetahi tūmau NFS. Heoi, me whai whakaaro koe ki te pikinga pea o te wa whakautu mo te tukatuka i nga tono a te kaimau tukutuku, a, ka nui noa atu te hiahia o te manawanui. Ko nga hua o te kore he tino kino: ko te ngaronga o te maunga ka mate te tautau ki te mate i raro i te pehanga a te LA e rere ana ki te rangi.

I roto i etahi atu mea, ko nga whiringa katoa mo te hanga rokiroki pumau ka hiahiatia horoi papamuri he huinga kōnae tawhito kua whakaemihia i roto i tetahi waa. I mua i nga ipu me te PHP ka taea e koe te whakatakoto Tautuhi Daemon mai i te keteroki nginx, ka penapena kape o nga rawa mo te wa poto. He ngawari te whirihora i tenei whanonga ma te whakamahi proxy_cache me te hohonu o te rokiroki i nga ra, i nga gigabytes ranei o te mokowā kōpae.

Ko te whakakotahi i tenei tikanga me nga punaha konae kua tohatohahia i runga ake nei he waahi nui mo te whakaaro, he iti noa te putea me te kaha hangarau o te hunga ka whakatinana me te tautoko. Mai i nga wheako, ka taea e tatou te kii ko te ngawari o te punaha, ka kaha ake te mahi. Ka taapirihia nga paparanga penei, ka kaha ake te uaua ki te pupuri i nga hanganga, i te wa ano ka piki ake te waa mo te tirotiro me te whakaora mai i nga ngoikoretanga.

Taunakitanga

Mena ko te whakatinanatanga o nga whiringa rokiroki e whakaarohia ana kaore ano kia tika ki a koe (he uaua, he utu nui ...), he pai ki te titiro ki te ahuatanga mai i tera taha. Ara, ki te keri ki te hoahoanga kaupapa me te whakatika te raruraru i roto i te waehere, herea ki etahi hanganga raraunga pateko i roto i te ahua, he whakamaramatanga maramara o nga ihirangi me nga tikanga mo te "whakamahana" me te / ranei te whakahiato i nga rawa i te waahi o te huihuinga whakaahua. Ma tenei ka whiwhi tatou i te whanonga tino matapae me te huinga o nga konae mo nga taiao katoa me nga tauira o te tono whakahaere.

Mena ka hoki ano tatou ki te tauira motuhake me te anga Yii me te kore e uru ki roto i tona hanganga (ehara i te kaupapa o te tuhinga), he nui noa te tohu i nga huarahi rongonui e rua:

  1. Hurihia te tukanga hanga atahanga ki te tuu i nga rawa ki tetahi waahi e matapaehia ana. Kei te whakaaro/whakamahia tenei i roto i nga toronga penei yii2-pateko-taonga.
  2. Tautuhia nga tohu tohu mo nga raarangi rawa, pera i te korero i roto i te tauira. tenei whakaaturanga (timata mai i te kiriata No. 35). Ma te ara, ko te kaituhi o te ripoata i te mutunga (kaore i te kore take!) Ka tohutohu i muri i te whakaemi i nga rawa i runga i te kaimau hanga, tuku atu ki te rokiroki pokapū (penei i te S3), kei mua i te tuu he CDN.

Ko nga konae ka taea te tango

Ko tetahi atu keehi ka uru mai i te wa e heke ana i tetahi tono ki te roopu Kubernetes ko te penapena i nga konae kaiwhakamahi ki te punaha konae. Hei tauira, he tono PHP ano ta matou e whakaae ana i nga konae ma te puka tukuake, ka mahi i tetahi mea ki a raatau i te wa e mahi ana, ka whakahokia mai.

I Kubernetes, ko te waahi ka tuuhia enei konae me noho noa ki nga tauira katoa o te tono. I runga i te uaua o te tono me te hiahia ki te whakarite i te tohenga o enei konae, ko nga whiringa taputapu tiritahi kua whakahuahia ake nei he waahi pera, engari, e kite ana tatou, kei a raatau nga ngoikoretanga.

Taunakitanga

Ko tetahi otinga ko te whakamahi i te rokiroki S3-hototahi (ahakoa he momo momo waahanga manaaki-whaiaro penei i te minio). Ko te huri ki te S3 me whakarereke i te taumata waehere, me te pehea e tukuna ai nga ihirangi ki te pito o mua, kei a maatau i tuhi.

Wātū Kaiwhakamahi

Ma te wehe, he pai ki te tuhi i te whakahaere o te rokiroki o nga waahi kaiwhakamahi. I te nuinga o nga wa he konae ano enei kei runga i te kōpae, i roto i te horopaki o Kubernetes ka arahi ki nga tono whakamana mai i te kaiwhakamahi mena ka mutu tana tono ki tetahi atu ipu.

Ko te raruraru ka whakatauhia tetahi waahanga ma te huri stickySessions i runga i te whakaurunga (Kei te tautokohia te waahanga i roto i nga kaiwhakahaere whakauru rongonui katoa - mo etahi atu taipitopito, tirohia to tatou arotake)ki te here i te kaiwhakamahi ki tetahi putunga motuhake me te tono:

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

Engari kaore tenei e whakakore i nga raruraru me te tuku tonu.

Taunakitanga

Ko te huarahi tika ake ko te whakawhiti i te tono ki te rongoa i nga huihuinga i roto i te memcached, Redis me nga otinga rite - i te nuinga o te waa, whakarerea nga whiringa konae.

mutunga

Ko nga otinga hangahanga e korerohia ana i roto i te tuhinga e tika ana kia whakamahia i roto i te whakatakotoranga o nga "tootoo" rangitahi (he ataahua ake te tangi i te reo Ingarihi hei huarahi mahi). Ka whai take pea i nga waahanga tuatahi o te heke i tetahi tono ki Kubernetes, engari kaua e whai pakiaka.

Ko te huarahi e taunakihia ana ko te whakakore i a raatau mo te whakarereketanga hoahoanga o te tono kia rite ki nga mea kua mohiotia e te tini. 12-Factor App. Heoi, ko tenei - te kawe i te tono ki te ahua kore - ko te tikanga ka hiahiatia nga huringa i roto i te waehere, i konei he mea nui kia kitea he taurite i waenga i nga kaha / whakaritenga o te umanga me nga tumanako mo te whakatinana me te pupuri i te huarahi kua tohua. .

PS

Pānuihia hoki i runga i ta maatau blog:

Source: will.com

Tāpiri i te kōrero