Instruere in Kubernetes #2: Argo Rollouts

Nos uti k8s-nativum Argo Rollouts moderatorem instruere et GitlabCI ad currendum Canarias instruere ad Kubernetes.

Instruere in Kubernetes #2: Argo Rollouts

https://unsplash.com/photos/V41PulGL1z0

Articuli in hac serie

Canaria instruere

Speramus te legere prima parsubi breviter quid instruere possint. Ostendimus etiam quomodo vexillum Kubernetes facultatibus utendi ad efficiendum illud.

Argo Rollouts

Argo Rollouts est Kubernetes moderatorem instruere indigena. CRD (Custom Resource Definition) praebet pro Kubernetibus. Propter hanc ens novum possumus uti; Rolloutquod caeruleo-viridis et canariis variis conformationis optionibus instruere procurat.

Argo Rollouts controller usus est per consuetudinem resource Rollout, Permittit ad instruere consilia instruere ut Kubernetes caeruleo-viridis et canariis. Resource Rollout equivalent praebet functionality Deploymentnonnisi addito instruere consilia.
resource Deployments Duo consilia instruere: RollingUpdate и Recreate. Etsi haec consilia pluribus casibus apta sunt, ministrantibus amplissimis rationibus instruere, consilia additamenta adhibentur, ut caeruleo-virides vel canariae, quae in instruere moderatoris praesto non sunt. His rationibus utendi in Kubernetes, usores debebant scripta scribere super instruere suas. Argo Rollouts moderatoris rationes istas parametros simplices, declarativos, configurabiles exponit.
https://argoproj.github.io/argo-rollouts

Est etiam Argo CI, quod commodam interfaciem praebet ad usum cum Rollouts, vide nos quod in proximo articulo videbimus.

Argo installing Rollouts

Servo latus

kubectl create namespace argo-rolloutskubectl apply -n argo-rollouts -f https://raw.githubusercontent.com/argoproj/argo-rollouts/stable/manifests/install.yaml

In rapa infrastructura nostra (vide infra) iam addimus install.yaml ut i/k8s/argo-rollouts/install.yaml. Hoc modo GitlabCI in botrum instituet.

Cliens latus (kubectl plugin)

https://argoproj.github.io/argo-rollouts/features/kubectl-plugin

Exemplum Application

Consuetudo bonum est habere repositoria separata pro schedula codici et infrastructurae.

Repositorium ad applicationem

Kim Wuestkamp/k8s-instruere-exemplum-app

Haec Python+Flask API simplicissima est quae responsionem reddit ut JSON. Faciemus sarcinam utendo GitlabCI et proventum Gitlab Subcriptio ventilabimus. In registro duas versiones varias habemus emissio:

  • wuestkamp/k8s-deployment-exemplum-app:v1
  • wuestkamp/k8s-deployment-exemplum-app:v2

Sola differentia inter eos est file JSON rediit. Hac applicatione ad visualize utimur quam facillime quam cum versione communicamus.

Infrastructure repositio

In hoc promptuario utemur GitlabCI ad instruere Kubernetes, .gitlab-ci.yml hoc simile:

image: traherom/kustomize-dockerbefore_script:
   - printenv
   - kubectl versionstages:
 - deploydeploy test:
   stage: deploy
   before_script:
     - echo $KUBECONFIG
   script:
     - kubectl get all
     - kubectl apply -f i/k8s    only:
     - master

Ad ipsum currendum botro indigebis, Gcloud uti potes;

gcloud container clusters create canary --num-nodes 3 --zone europe-west3-b
gcloud compute firewall-rules create incoming-80 --allow tcp:80

Opus furca https://gitlab.com/wuestkamp/k8s-deployment-example-canary-infrastructure et variabilis creare KUBECONFIG in GitlabCI, quae ad accessum continebit aboutconfig kubectl ad botrum.

est Legere potes quomodo pro botro (Gcloud).

Infrastructure Yaml

Intra repositio infrastructura officium habemus:

apiVersion: v1
kind: Service
metadata:
 labels:
   id: rollout-canary
 name: app
spec:
 ports:
 - port: 80
   protocol: TCP
   targetPort: 5000
 selector:
   id: app
 type: LoadBalancer

ac rollout.yaml:

apiVersion: argoproj.io/v1alpha1
kind: Rollout
metadata:
 name: rollout-canary
spec:
 replicas: 10
 revisionHistoryLimit: 2
 selector:
   matchLabels:
     id: rollout-canary
 template:
   metadata:
     labels:
       id: rollout-canary
   spec:
     containers:
     - name: rollouts-demo
       image: registry.gitlab.com/wuestkamp/k8s-deployment-example-app:v1
       imagePullPolicy: Always
 strategy:
   canary:
     steps:
     - setWeight: 10
     # Rollouts can be manually resumed by running `kubectl argo rollouts promote ROLLOUT`
     - pause: {}
     - setWeight: 50
     - pause: { duration: 120 } # two minutes

Rollout idem quod instruere. Si renovationem belli (sicut hic canarii non constituimus) aget sicut default volvens-renovatio instruere.

Duos gradus in yaml pro canariis instruere definimus:

  1. X% of traffic ad Canarium (expectare manual OK)
  2. L% traffic ad Canarias (expectare II minuta tunc permanere ad C%)

Deployment faciendo initial

Post initia instruere, nostrae facultates hoc modo videbunt;

Instruere in Kubernetes #2: Argo Rollouts

Et responsionem dabimus tantum ex prima applicationis versione;

Instruere in Kubernetes #2: Argo Rollouts

Faciendo Canarias instruere

Gradus I: X% negotiationis

Instruere instruere canariis, iustus opus est mutare imaginem versionis sicut facere cum instruere consuevimus:

apiVersion: argoproj.io/v1alpha1
kind: Rollout
metadata:
 name: rollout-canary
spec:
...
 template:
   metadata:
     labels:
       id: rollout-canary
   spec:
     containers:
     - name: rollouts-demo
       image: registry.gitlab.com/wuestkamp/k8s-deployment-example-app:v2
...

Mutationes dis dis, sic explicamus Gitlab CI et mutationes videmus;

Instruere in Kubernetes #2: Argo Rollouts

Nunc si ad servitium accessimus:

Instruere in Kubernetes #2: Argo Rollouts

Magna! In medio canarii nostri instruere sumus. Progressus cursus videre possumus:

kubectl argo rollouts get rollout rollout-canary

Instruere in Kubernetes #2: Argo Rollouts

Gradus II: L% negotiationis:

Nunc ad gradum proximum transeamus: redirecting 50 of the traffic. Configuramur hunc gradum manually currere:

kubectl argo rollouts promote rollout-canary # continue to step 2

Instruere in Kubernetes #2: Argo Rollouts

Nostra autem applicatio L% responsionum e novis versionibus reversa est:

Instruere in Kubernetes #2: Argo Rollouts

Recensio et rollout:

Instruere in Kubernetes #2: Argo Rollouts

рекрасно.

Gradus II: L% negotiationis:

Nos eam ita constituimus ut post 2 minutas 50 gradus statim desinat et 100% gradus incipiat:

Instruere in Kubernetes #2: Argo Rollouts

Et application output:

Instruere in Kubernetes #2: Argo Rollouts

Recensio et rollout:

Instruere in Kubernetes #2: Argo Rollouts

Integer instruere insnlae.

Plura exempla cum Argo Rollouts

Exempla hic sunt plura, qualia sunt ambitus praevisiones et comparationes in canariis constituere:

https://github.com/argoproj/argo-rollouts/tree/master/examples

Video de Argo Rollouts et Argo CI

Hoc video vere commendare, ostendit quomodo Argo Rollouts et Argo CI cooperantur;

exitum

Ego vere amo notionem CRDs adhibendi, qui creationem procurant additorum generum technicorum seu replicationum, negotiationis redirectae, etc. Eos labore blanditiis. Deinde integrationem probare cum Argo CI.

Sed magna merger esse videtur Argo CI et Flux CI venientes, sic exspectabo donec nova emissio exeat; Argo Flux.

Ecquis cum Argo Rollouts aut Argo CI expertus es?

Legunt etiam alia capitula in nostro diario:

Source: www.habr.com

Add a comment