藍綠部署是一個部署模型,使用在 Kubernetes 叢集中以相同方式部署和設定的兩個 Docker 主機。當 Code Stream 中的管線部署應用程式時,藍綠部署模型可縮短環境中出現的停機時間。
部署模型中的藍綠部署執行個體都有不同的用途。一次只能有一個執行個體接受部署應用程式的即時流量,並且每個執行個體都在特定時間接受該流量。藍部署執行個體接收應用程式的第一個版本,而綠部署執行個體接收第二個。
藍綠部署環境中的負載平衡器會確定即時流量在部署應用程式時採用哪一個路由。透過使用藍綠部署模型,您的環境仍可正常運作,使用者不會注意到任何停機時間,並且管線會持續將應用程式整合和部署至生產環境。
Code Stream 中建立的管線代表包含兩個階段的藍綠部署模型。一個階段適用於開發,而另一個階段適用於生產。
Code Stream 管線工作區支援使用 Docker 和 Kubernetes 執行持續整合工作和自訂工作。
如需設定工作區的相關資訊,請參閱設定管線工作區。
工作類型 | 工作 |
---|---|
Kubernetes | 為藍綠部署建立命名空間。 |
Kubernetes | 為 Docker Hub 建立秘密金鑰。 |
Kubernetes | 建立用來部署應用程式的服務。 |
Kubernetes | 建立藍部署。 |
輪詢 | 驗證藍部署。 |
Kubernetes | 移除命名空間。 |
工作類型 | 工作 |
---|---|
Kubernetes | 綠部署會從藍部署取得服務詳細資料。 |
Kubernetes | 取得綠部署複本集的詳細資料。 |
Kubernetes | 建立綠部署,並使用秘密金鑰提取容器映像。 |
Kubernetes | 更新服務。 |
輪詢 | 確認生產 URL 上的部署已成功。 |
Kubernetes | 完成藍部署。 |
Kubernetes | 移除藍部署。 |
若要在您自己的藍綠部署模型中部署應用程式,您可以在 Code Stream 中建立包含兩個階段的管線。第一個階段包括將應用程式部署至藍部署執行個體的藍部署工作,而第二個階段包括將應用程式部署至綠部署執行個體的綠部署工作。
您可以使用 CICD 智慧管線範本來建立您的管線。此範本可以為您建立管線階段和工作,並包含部署選取項目。
如果您手動建立管線,則必須規劃管線階段。如需範例,請參閱手動新增工作前在 Code Stream 中規劃 CICD 原生建置。
在此範例中,您可以使用 CICD 智慧管線範本建立藍綠部署管線。
必要條件
- 確認您可以存取 AWS 上正在運作的 Kubernetes 叢集。
- 確認您已設定藍綠部署環境,並將藍綠部署執行個體設定為完全相同。
- 在 Code Stream 中建立 Kubernetes 端點,將應用程式映像部署到 AWS 上的 Kubernetes 叢集中。
- 自行熟悉使用 CICD 智慧管線範本。請參閱使用智慧管線範本前在 Code Stream 中規劃 CICD 原生建置。
程序
結果
恭喜您!您可以使用智慧管線範本來建立管線,該管線可將應用程式部署至 AWS 上 Kubernetes 生產叢集中的藍綠部署執行個體。
範例: 針對部分藍綠部署工作的範例 YAML 程式碼
在 Kubernetes 管線工作中出現的用於藍綠部署的 YAML 程式碼可能類似於下列建立命名空間、服務及部署的範例。如果需要從專有存放庫下載映像,YAML 檔案必須包含具有 Docker 組態密碼的區段。請參閱使用智慧管線範本前在 Code Stream 中規劃 CICD 原生建置的 CD 部分。
智慧管線範本建立管線後,您可以視需要針對您自己的部署修改工作。
用於建立範例命名空間的 YAML 程式碼:
apiVersion: v1 kind: Namespace metadata: name: codestream-82855 namespace: codestream-82855
用於建立範例服務的 YAML 程式碼:
apiVersion: v1 kind: Service metadata: labels: app: codestream-demo name: codestream-demo namespace: bluegreen-799584 spec: minReadySeconds: 0 ports: - port: 80 selector: app: codestream-demo tier: frontend type: LoadBalancer
用於建立範例部署的 YAML 程式碼:
apiVersion: extensions/v1 kind: Deployment metadata: labels: app: codestream-demo name: codestream-demo namespace: bluegreen-799584 spec: minReadySeconds: 0 replicas: 1 selector: matchLabels: app: codestream-demo tier: frontend template: metadata: labels: app: codestream-demo tier: frontend spec: containers: - image: ${input.image}:${input.tag} name: codestream-demo ports: - containerPort: 80 name: codestream-demo imagePullSecrets: - name: jfrog-2 minReadySeconds: 0
下一步
若要進一步瞭解如何使用 Code Stream,請參閱使用 Code Stream 的教學課程。
若要復原部署,請參閱如何在 Code Stream 中復原我的部署。
如需其他參考,請參閱供 Code Stream 管理員和開發人員使用的更多資源。