Gần đây, tôi có thực hiện 1 dự án cho khách hàng tại Nhật bổn, và triển khai quá trình CICD trên azure DevOps,
Thú thực, tôi cũng không giỏi về bộ môn Azure DevOps nên khi gặp 1 số vấn đề phải googling thôi... ( buồn thặc sự)
Và, khách hàng phàn nàn rằng, sao mà deployment 1 image tới cụm Kuber gì mà mất tận hơn 5p vậy bồ tèo
thôi, đành chống chế với KH là em đang bận turning cụm K8S nên chưa có tgian turning cái Pipeline :(( (Buồn tập 2)
Cũng bực mình và đành xem về khái niệm docker lại 1 xíu, và chợt nhớ tới cái docker image layer và, tôi đi theo hướng này và thực sự thành công
và đây 1 phần trong azure pipeline của tôi
- task: Docker@2inputs:containerRegistry: "$(dockerRegistryServiceConnection)"command: "login"displayName: Login registry- script: "docker pull $(containerRegistry)/$(imageRepository):latest"displayName: Pull latest for layer cachingcontinueOnError: true # for first build, no cache- task: Docker@2displayName: Build imageinputs:coơpository)containerRegistry: $(dockerRegistryServiceConnection)Dockerfile: DockerfilebuildContext: ./arguments: "--cache-from=$(containerRegistry)/$(imageRepository):latest"tags: |$(tag)latest- task: Docker@2displayName: Push image to registryinputs:command: pushcontainerRegistry: "$(dockerRegistryServiceConnection)"repository: $(imageRepository)tags: |$(tag)latest- task: Kubernetes@1displayName: dev - deployment new image of ecube to AKSsinputs:connectionType: "Kubernetes Service Connection"kubernetesServiceEndpoint: "$(kubernetestEndpointConnection)"namespace: "$(kubeNamespace)"command: "set"arguments: "image deployment/$(deploymentName) $(containerName)=$(containerRegistry)/$(imageRepository):$(tag)"secretType: "dockerRegistry"containerRegistryType: "Container Registry"dockerRegistryEndpoint: "$(dockerRegistryServiceConnection)"
và kết quả sau khi apply:
trước khi áp dụng
sau khi áp dụng
Tèn ten, giảm tận ~70% tgian, thật là 1 con số yooooomosstttt
với pipeline ở trên thì có 2 tác dụng, 1 là caching tầng local build và 1 tầng caching khi push image lên repositories