Anyị ga-eji aka na-arụ ọrụ nke Canary site na GitOps na ịmepụta / gbanwee isi ihe Kubernetes. E bu n'obi kee akụkọ a maka mmalite na otu ntinye na-arụ ọrụ na Kubernetes Canary, ebe ọ bụ na e nwere ụzọ dị irè nke akpaaka, nke anyị ga-atụle n'isiokwu ndị na-esonụ.
Site na atụmatụ Canary, a na-ebu ụzọ tinye mmelite maka naanị obere ndị ọrụ. Site na nleba anya, data ndekọ, nyocha akwụkwọ ntuziaka, ma ọ bụ ọwa nzaghachi ndị ọzọ, a na-anwale ntọhapụ tupu ahapụ ya nye ndị ọrụ niile.
Nkwanye Kubernetes (mmelite mpịakọta)
Atụmatụ ndabara maka Kubernetes Deployment bụ emelite, ebe a na-eji ụdị onyonyo ọhụrụ ewelite ụfọdụ pọd. Ọ bụrụ na e kere ha n'enweghị nsogbu, a na-akwụsị pods nwere ụdị ihe oyiyi ochie, a na-emepụta pods ọhụrụ n'otu oge.
GitOps
Anyị na-eji GitOps n'ihe atụ a n'ihi na anyị:
iji Git dị ka otu isi iyi nke eziokwu
anyị na-eji Git Operations maka iwulite na mbugharị (ọ nweghị iwu ọzọ karịa git tag/jikota achọrọ)
Ihe nlele:
Ka anyị were ezigbo omume - inwe otu ebe nchekwa maka koodu ngwa na otu maka akụrụngwa.
Ebe nchekwa ngwa
Nke a bụ Python+Flask API dị mfe nke na-eweghachi nzaghachi dị ka JSON. Anyị ga-ewu ngwugwu ahụ site na GitlabCI wee mee ka nsonaazụ ya gaa na ndekọ Gitlab. N'ime ndekọ ahụ anyị nwere ụdị ntọhapụ abụọ dị iche iche:
wuestkamp/k8s-deployment-example-app:v1
wuestkamp/k8s-deployment-example-app:v2
Naanị ihe dị iche n'etiti ha bụ mgbanwe na faịlụ JSON eweghachiri. Anyị na-eji ngwa a na-ahụ anya ngwa ngwa dị ka o kwere mee ụdị ụdị anyị na-akpakọrịta.
Ebe nchekwa akụrụngwa
Na ntụgharị a, anyị ga-ebuga site na GitlabCI gaa Kubernetes, .gitlab-ci.yml yiri nke a:
Anyị na-agbanye mgbanwe ndị a na ebe nchekwa nke ntinye ga-amalite (site na GitlabCI) wee hụ n'ihi ya:
Ọrụ anyị ga-arụtụ aka na mbugharị abụọ ahụ, ebe ha abụọ nwere ngwa ahọpụtara. N'ihi ndabara nke Kubernetes, anyị kwesịrị ịhụ nzaghachi dị iche iche maka ~ 10% nke arịrịọ:
Ọnọdụ ngwa anyị dị ugbu a (GitOps, nke ewepụtara na Git dị ka otu isi mmalite nke eziokwu) bụ ọnụnọ nke mbugharị abụọ nwere ụdị arụ ọrụ, otu maka ụdị ọ bụla.
~ 10% nke ndị ọrụ mara ụdị ọhụrụ wee nwalee ya n'amaghị ama. Ugbu a bụ oge ịlele njehie na ndekọ na data nlekota ka ịchọta nsogbu.
Kwụpụ 2: Hapụ ndị ọrụ niile ụdị ọhụrụ ahụ
Anyị kpebiri na ihe niile gara nke ọma ma ugbu a anyị kwesịrị iwepụta ụdị ọhụrụ ahụ nye ndị ọrụ niile. Iji mee nke a, anyị na-emelite naanị deploy.yaml na-etinye ụdị onyonyo ọhụrụ na ọnụọgụ nke oyiri hà 10. In deploy-canary.yaml anyị na-edobe ọnụ ọgụgụ nke oyiri azụ na 0. Mgbe ekenyela, ihe ga-esi na ya ga-abụ dị ka ndị a:
Iji chịkọta
Maka m, iji aka na-agba ọsọ a n'ụzọ a na-enyere aka ịghọta ka ọ dị mfe iji k8s hazie ya. Ebe Kubernetes na-enye gị ohere imelite ihe niile site na API, usoro ndị a nwere ike ịmegharị ya site na edemede.
Ihe ọzọ dị mkpa ka e mejuputa bụ ntinye ntinye tester (LoadBalancer ma ọ bụ site na Ingress) nke naanị ụdị ọhụrụ nwere ike ịnweta. Enwere ike iji ya mee ihe nchọgharị aka.
N'isiokwu ndị na-abịa n'ihu, anyị ga-enyocha ihe ngwọta ndị ọzọ na-akpaghị aka na-emejuputa ọtụtụ n'ime ihe anyị mere.