Faịlụ mpaghara mgbe ị na-ebuga ngwa na Kubernetes

Faịlụ mpaghara mgbe ị na-ebuga ngwa na Kubernetes

Mgbe ị na-ewu usoro CI / CD site na iji Kubernetes, mgbe ụfọdụ, nsogbu na-ebilite nke enweghị nkwekọrịta n'etiti ihe achọrọ nke akụrụngwa ọhụrụ na ngwa a na-ebufe ya. Karịsịa, na ngwa wuo ogbo ọ dị mkpa ịnweta один onyonyo nke a ga-eji na ya всех gburugburu oru ngo na ụyọkọ. Ụkpụrụ a na-adabere na nke ziri ezi dị ka Google si kwuo njikwa akpa (ihe karịrị otu ugboro gbasara nke a kwuru na ngalaba nka nka).

Otú ọ dị, ị gaghị ahụ onye ọ bụla n'ọnọdụ ebe koodu saịtị ahụ na-eji usoro dị njikere, ojiji nke na-etinye ihe mgbochi na iji ya ọzọ. Na mgbe ọ nọ na "ọnọdụ nkịtị" nke a dị mfe ịnagide, na Kubernetes omume a nwere ike ịghọ nsogbu, karịsịa mgbe ị zutere ya na nke mbụ. Ọ bụ ezie na uche na-emepụta ihe nwere ike ịmepụta ihe ngwọta akụrụngwa nke yiri ihe doro anya ma ọ bụ ọbụna dị mma na nlele mbụ ... ọ dị mkpa icheta na ọtụtụ ọnọdụ nwere ike na kwesịrị. a ga-edozi architecturally.

Ka anyị leba anya n'ihe ngwọta na-ewu ewu maka ịchekwa faịlụ nwere ike ibute nsonaazụ na-adịghị mma mgbe ị na-arụ otu ụyọkọ, ma gosikwa ụzọ ziri ezi.

Nchekwa static

Iji maa atụ, tulee ngwa webụ nke na-eji ụdị generator static nweta otu onyonyo, ụdị na ihe ndị ọzọ. Dịka ọmụmaatụ, usoro Yii PHP nwere njikwa akụrụngwa arụnyere na-ewepụta aha ndekọ aha pụrụ iche. N'ihi ya, mmepụta bụ a set nke ụzọ maka static saịtị na o doro anya na ọ dịghị intersect na onye ọ bụla ọzọ (nke a mere n'ihi na ọtụtụ ihe - ihe atụ, ikpochapụ oyiri mgbe otutu components na-eji otu akụ). Yabụ, n'ime igbe ahụ, oge mbụ ị nwetara modul akụrụngwa weebụ, faịlụ static (n'ezie, ọtụtụ mgbe symlinks, mana ndị ọzọ na nke ahụ mechara) na-etolite ma tinye ya na akwụkwọ ndekọ mgbọrọgwụ pụrụ iche maka mbugharị a:

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

Kedu ihe nke a pụtara n'ihe gbasara ụyọkọ?

Ihe atụ kacha mfe

Ka anyị were ikpe a na-ahụkarị, mgbe nginx bu ụzọ PHP kesaa data static na hazie arịrịọ dị mfe. Ụzọ kachasị mfe - Ịnye ọrụ nwere igbe abụọ:

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

N'ụdị dị mfe, nhazi nginx na-agbada na nke a:

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

Mgbe mbụ ị nwetara saịtị ahụ, akụ na-apụta na akpa PHP. Ma n'ihe gbasara akpa abụọ n'ime otu pod, nginx amaghị ihe ọ bụla gbasara faịlụ ndị a static, nke (dị ka nhazi) kwesịrị inye ha. N'ihi ya, onye ahịa ga-ahụ njehie 404 maka arịrịọ niile maka faịlụ CSS na JS. Ngwọta kachasị mfe ebe a bụ ịhazi akwụkwọ ndekọ aha maka arịa. Nhọrọ mbụ - izugbe 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

Ugbu a faịlụ static emepụtara n'ime akpa bụ nginx na-eje ozi nke ọma. Ma ka m chetara gị na nke a bụ ihe ngwọta oge ochie, nke pụtara na ọ dị anya site na mma ma nwee nuances na adịghị ike nke ya, nke a na-atụle n'okpuru ebe a.

Nchekwa dị elu karịa

Ugbu a, were ya na otu onye ọrụ gara na saịtị ahụ, jiri ụdị dị n'ime akpa ahụ dochie ibe ya, mgbe ọ na-agụkwa ibe a, anyị bugharịrị akpa ahụ ọzọ. Katalọgụ akụ aghọọla ihe efu na arịrịọ maka PHP ka a chọrọ ka ịmalite imepụta ndị ọhụrụ. Otú ọ dị, ọbụlagodi mgbe nke a gasịrị, njikọ na statics ochie agaghị adị mkpa, nke ga-eduga ná njehie na-egosipụta statics.

Na mgbakwunye, o yikarịrị ka anyị nwere ọrụ arụrụ arụ ma ọ bụ nke pere mpe, nke pụtara na otu ngwa agaghị ezuru:

  • Ka anyị bulie ya elu Ịnye ọrụ ruo ugboro abụọ.
  • Mgbe mbụ enwetara saịtị ahụ, emepụtara akụ n'otu ụdị.
  • N'oge ụfọdụ, ingress kpebiri (maka ibu itule ebumnobi) iziga arịrịọ na nke abụọ oyiri, na ndị a akụ ndị e nwere ma. Ma ọ bụ ikekwe ha anọghị ebe ahụ n'ihi na anyị na-eji RollingUpdate na ugbu a anyị na-eme nkesa.

N'ozuzu, nsonaazụ bụ mmejọ ọzọ.

Iji zere ịlafu ihe ochie, ị nwere ike ịgbanwe emptyDir on hostPath, na-agbakwunye static n'anụ ahụ na ọnụ ụyọkọ. Ụzọ a dị njọ n'ihi na anyị ga-emerịrị ya kechie n'otu ọnụ ụyọkọ ọnụ ngwa gị, n'ihi na - ọ bụrụ na ịkwaga na ọnụ ụzọ ndị ọzọ - ndekọ ahụ agaghị enwe faịlụ ndị dị mkpa. Ma ọ bụ ụfọdụ ụdị mmekọrịta ndekọ ndabere n'etiti ọnụ ọnụ ka achọrọ.

Gịnị bụ ihe ngwọta ya?

  1. Ọ bụrụ na ngwaike na akụrụngwa kwere, ịnwere ike iji cephfs iji hazie ndekọ aha nwere ike ịnweta maka mkpa kwụ ọtọ. Akwụkwọ gọọmentị na-akwado draịva SSD, opekata mpe mmegharị ugboro atọ yana njikọ siri ike n'etiti ọnụ ụyọkọ.
  2. Nhọrọ dị obere na-achọsi ike bụ ịhazi sava NFS. Otú ọ dị, mgbe ahụ, ị ​​​​kwesịrị iburu n'uche mmụba enwere ike na oge nzaghachi maka nhazi arịrịọ site na sava weebụ, na ntachi obi ga-ahapụ ọtụtụ ihe achọrọ. Nsonaazụ nke ọdịda bụ ọdachi: ọnwụ nke ugwu ahụ na-eme ka ụyọkọ ahụ nwụọ n'okpuru nrụgide nke ibu LA na-agbaba na mbara igwe.

Tinyere ihe ndị ọzọ, nhọrọ niile maka ịmepụta nchekwa na-adịgide adịgide ga-achọ ndabere ihicha chịkọbara faịlụ emechiela n'ime oge ụfọdụ. N'ihu arịa na PHP ị nwere ike tinye DaemonSet site na caching nginx, nke ga-echekwa nnomi nke akụ maka obere oge. Omume a dị mfe ịhazi site na iji proxy_cache na omimi nchekwa na ụbọchị ma ọ bụ gigabytes nke ohere diski.

Ijikọta usoro a na usoro faịlụ ndị a na-ekesa nke a kpọtụrụ aha n'elu na-enye nnukwu ubi maka iche echiche, na-ejedebe naanị site na mmefu ego na ikike nka nke ndị ga-emejuputa ma kwado ya. Site na ahụmahụ, anyị nwere ike ịsị na usoro ahụ dị mfe, ka ọ na-arụ ọrụ nke ọma. Mgbe agbakwunyere akwa akwa ndị dị otú ahụ, ọ na-esiwanye ike ịnọgide na-enwe akụrụngwa, ma n'otu oge ahụ, oge a na-eji na-achọpụta na ịgbake site na ọdịda ọ bụla na-abawanye.

Nkwanye

Ọ bụrụ na mmejuputa nhọrọ nchekwa ndị a na-atụ aro na-adịkwa ka ezighi ezi nye gị (mgbagwoju anya, ọnụ ahịa ...), mgbe ahụ, ọ bara uru ileba anya na ọnọdụ ahụ site n'akụkụ nke ọzọ. Ya bụ, igwu n'ime oru ngo ije na dozie nsogbu ahụ na koodu, ejikọta na ụfọdụ ihe nhazi data static dị na foto a, nkọwa na-enweghị mgbagha nke ọdịnaya ma ọ bụ usoro maka "ịkụ ọkụ" na / ma ọ bụ nchịkọta ihe onwunwe na nhazi mgbakọ foto. N'ụzọ dị otú a anyị na-enweta kpam kpam omume amụma na otu faịlụ maka gburugburu niile na oyiri nke ngwa na-agba ọsọ.

Ọ bụrụ na anyị laghachi na ihe atụ a kapịrị ọnụ na usoro Yii ma ghara ịbanye n'ime usoro ya (nke na-abụghị nzube nke isiokwu ahụ), ọ ga-ezuru ịkọwapụta ụzọ abụọ a ma ama:

  1. Gbanwee usoro iwu ihe onyonyo ka idowe akụ n'ebe enwere ike ịkọ. A tụrụ aro/mejuputa nke a na ndọtị dịka yii2-static-akụ.
  2. Kọwaa kpọmkwem hashes maka akwụkwọ ndekọ aha akụrụngwa, dịka a tụlere na eg. ihe ngosi a (malite na slide No. 35). Site n'ụzọ, onye edemede nke akụkọ ahụ n'ikpeazụ (ma ọ bụghị n'enweghị ihe kpatara ya!) Na-adụ ọdụ na mgbe ịchịkọta akụ na ihe nkesa na-ewu ụlọ, bulite ha na nchekwa etiti (dị ka S3), n'ihu ebe CDN dị.

Nbudata

Okwu ọzọ ga-abata n'ezie mgbe ị na-ebuga ngwa na ụyọkọ Kubernetes na-echekwa faịlụ ndị ọrụ na sistemụ faịlụ. Dịka ọmụmaatụ, anyị nwere ngwa PHP ọzọ nke na-anabata faịlụ site na ụdị bulite, mee ihe na ha mgbe a na-arụ ọrụ, ma na-ezigaghachi ha.

Na Kubernetes, ebe a ga-edobe faịlụ ndị a kwesịrị ịdị na-ahụkarị ụdị ngwa niile. Dabere na mgbagwoju anya nke ngwa ahụ na mkpa ọ dị ịhazi nkwụsi ike nke faịlụ ndị a, nhọrọ ngwaọrụ ndị a kpọtụrụ aha n'elu nwere ike ịbụ ebe dị otú ahụ, ma, dị ka anyị na-ahụ, ha nwere ihe ndọghachi azụ ha.

Nkwanye

Otu ngwọta bụ iji nchekwa dakọtara S3 (ọbụlagodi ma ọ bụrụ na ọ bụ ụdị ụdị nke na-akwado onwe ya dị ka minio). Ịtụgharị na S3 ga-achọ mgbanwe na ọkwa koodu, na otú ọdịnaya ga-anapụta na n'ihu ọgwụgwụ, anyị nwere ugbua dere.

Oge onye ọrụ

Iche iche, ọ bara uru ịkọ nhazi nke nchekwa nke oge onye ọrụ. Ọtụtụ mgbe, ndị a bụkwa faịlụ na diski, nke na ọnọdụ Kubernetes ga-eduga na arịrịọ ikike mgbe niile site n'aka onye ọrụ ma ọ bụrụ na arịrịọ ya ejedebe na akpa ọzọ.

A na-edozi nsogbu ahụ site na ịgbanwuo stickySessions na ntinye (A na-akwado atụmatụ a na ndị njikwa ingress niile ama ama - maka nkọwa ndị ọzọ, lee nyocha anyị)iji ngwa a kechie onye ọrụ na otu pọd akọwapụtara:

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

Mana nke a agaghị ewepụ nsogbu na ntinye ugboro ugboro.

Nkwanye

Ụzọ ziri ezi ga-abụ ibufe ngwa ahụ na na-echekwa oge na memcached, Redis na ngwọta ndị yiri ya - n'ozuzu, hapụ kpamkpam nhọrọ faịlụ.

nkwubi

Ihe ngwọta akụrụngwa a tụlere na ederede kwesịrị iji naanị na usoro nke "crutches" nwa oge (nke na-ada ụda mara mma na Bekee dị ka workaround). Ha nwere ike dị mkpa na ọkwa mbụ nke ịkwaga ngwa na Kubernetes, mana ha ekwesịghị ịgbanye mgbọrọgwụ.

Ụzọ a na-atụ aro n'ozuzu bụ ikpochapụ ha na-akwado nhazi nhazi nke ngwa ngwa dịka ihe ọtụtụ ndị maara nke ọma. Ngwa 12-Factor. Otú ọ dị, nke a - iweta ngwa ahụ na ụdị enweghị obodo - pụtara na a ga-achọ mgbanwe na koodu ahụ, ebe a ọ dị mkpa ịchọta nguzozi n'etiti ikike / ihe ndị a chọrọ nke azụmahịa na atụmanya maka imejuputa na idobe ụzọ a họọrọ. .

PS

Gụọkwa na blọọgụ anyị:

isi: www.habr.com

Tinye a comment