首頁>Server>source
赏金在7天內過期 span>.此問题的答案有資格获得 + 50 声誉奖励。 Vassily 正在尋找该問题的更详细的答案
最新回復
  • 6月前
    1 #

    圖像參考和清單

    Kubernetes管理部署,例如 每当您的 kind: Deployment使用滚動部署策略 清單已更改。

    Now after pushing a commit with dev-* tag, dockerhub creates new image tagged as dev-latest

    主要問题是,每个圖像都使用same標簽名.這意味着你的 kind: Deployment 清單更新時清單未更新,因為清單没有變化,所以Kubernetes不会啟動新的滚動部署。

    一个好的做法是,每次推送圖像時都使用唯一的圖像標簽,然後更新 kind: Deployment 清單使用這个新的圖像標簽名稱,因此Kubernetes会自動觸發新的滚動部署。

    可以將某些圖像登錄檔配置為使用"不可變標簽名稱",這意味着您被強製執行,始终為每个構建的圖像使用唯一的標簽名稱.或者,您可以在 kind: Deployment中使用完整的圖像摘要 清單,這樣即使標簽名稱相同(Image Digest是內容的雜湊),您也可以拥有唯一的圖像引用。

    总結:

      Use unique image tag names for every build

      Update the kind: Deployment 帶有新標簽名稱的清單

      保持 kind: Deployment 清單(以及其他yaml清單)在版本控製中,例如 Git

      參考圖片時,請在清單中使用完整的圖片摘要

      過程与自動化

      可以通過几種不同的方式来更新清單並將其應用於集群,但是建議在每次更改之後,始终將更新的清單儲存在Git儲存庫中,然後再將其應用於集群.這樣,您可以很好地跟蹤已更改的內容,並且如果出現故障,更容易返迴到工作版本。

      通過上述必要的步骤,另一个重要的實践是為此使用automation.在對Git儲存庫进行每次更改之後,最好觸發一个自動化流程来完成工作,最好不要執行任何手動步骤.从歷史上看,Jenkins一直是實現此目的的流行工具,但是它具有悠久的歷史,並且在容器環境中不能很好地執行.我現在建議使用GitHub Actions,Google Cloud Build之類的工具或Kubernetes集群中的現代系統(如Tekton Pipelines)

      使用Tekton構建和部署管道

      如果您選擇在Kubernetes集群中使用Tekton,則可以按以下方式構建專案:

      Git將代碼更改推送到代碼儲存庫

      Tekton觸發器从Git系統接收事件並啟動新的 PipelineRun .

      Tekton管道包含git-clone,構建代碼,執行測試以及構建和推送映像的步骤.結果是圖像摘要或標簽.然後,您在管道中有最後一个任務,如果所有先前任務都成功,則更新 kind: Deployment 使用新的圖片摘要和git-push到清單的迴购清單中。

      觸發了將清單應用到群集的部署管道(可能使用選擇的部署策略,滚動部署或逐步部署或Canary部署)

      Book recommendations

        Kubernetes Up & Running 2nd edition (from 2019) - it contains a new chapter: 18. Organizing Your Application 描述了如何使用清單和版本控製来管理部署。

        连續交付-關於如何使用構建和部署管道和自動化的经典书籍。

        替代品

        I've discovered some project of CD Foundation: Jenkins X, Spinnaker and Tekton and I guess some of them can help me to implement my idea but I would be great to implement it without one more pet in my zoo.

        在Kubernetes上进行部署可以不使用宣告性清單,而可以使用命令式命令进行,而無需任何版本控製的更改,但這是非常不受欢迎的>在专業環境中.尽管自動管道需要花费一些時間来設置和配置,但以宣告性和可複製的方式執行此操作很重要。

  • amazon web services:您為什麼要让工作节點流量离開VPC? (AwS EKS)
  • 帶有隨機日期的Docker容器