身為 Code Stream 管理員或開發人員,您可以使用 Code Stream 和 VMware Tanzu Kubernetes Grid Integrated Edition (先前稱為 VMware Enterprise PKS) 自動將軟體應用程式部署到 Kubernetes 叢集。此使用案例提及可用於自動發佈應用程式的其他方法。
在此使用案例中,您將建立包含兩個階段的管線,然後使用 Jenkins 建置並部署應用程式。
- 第一個階段是用於開發。此階段使用 Jenkins 從 GitHub 存放庫中的分支提取程式碼,然後建置、測試並將其發佈。
- 第二個階段是用於部署。此階段執行使用者操作工作,該工作需要得到關鍵使用者的核准,然後管線才能將應用程式部署至 Kubernetes 叢集。
在管線工作區中使用 Kubernetes API 端點時, Code Stream 會建立必要的 Kubernetes 資源 (如 ConfigMap、密碼和網繭) 以執行持續整合 (CI) 工作或自訂工作。 Code Stream 使用 NodePort 與容器進行通訊。
若要在各個管線執行過程中共用資料,您必須提供持續性磁碟區宣告, Code Stream 會將此持續性磁碟區宣告掛接到容器以儲存資料,並將其用於後續管線執行。
Code Stream 管線工作區支援使用 Docker 和 Kubernetes 執行持續整合工作和自訂工作。
如需有關設定工作區的詳細資訊,請參閱設定管線工作區。
開發工具、部署執行個體和管線 YAML 檔案必須可用,以便管線可以建置、測試、發佈及部署應用程式。管線會將應用程式部署到 Kubernetes 叢集的開發和生產執行個體。
自動發佈應用程式的其他方法:
- 您可以使用 Code Stream 原生建置功能和 Docker 建置主機,而不是使用 Jenkins 建置應用程式。
- 您可以將應用程式部署到 Amazon Web Services (AWS) 叢集,而不是將其部署到 Kubernetes 叢集。
如需有關使用 Code Stream 原生建置功能和 Docker 主機的詳細資訊,請參閱:
必要條件
- 確認要部署的應用程式代碼位於正在運作的 GitHub 存放庫中。
- 確認您具有有效的 Jenkins 執行個體。
- 確認您具有有效的電子郵件伺服器。
- 在 Code Stream 中,建立用於連線至電子郵件伺服器的電子郵件端點。
- 在 Amazon Web Services (AWS) 上設定兩個 Kubernetes 叢集分別用於開發和生產,您的管線將在其中部署應用程式。
- 確認 GitHub 存放庫包含管線的 YAML 程式碼,或包含用於定義環境之中繼資料和規格的 YAML 檔案。
程序
結果
恭喜您!您已自動將軟體應用程式部署至 Kubernetes 叢集。
範例: 將應用程式部署至 Kubernetes 叢集的管線 YAML 範例
對於此範例中使用的管線類型,YAML 類似於下列程式碼:
apiVersion: v1 kind: Namespace metadata: name: ${input.GIT_BRANCH_NAME} namespace: ${input.GIT_BRANCH_NAME} --- apiVersion: v1 data: .dockercfg: eyJzeW1waG9ueS10YW5nby1iZXRhMi5qZnJvZy5pbyI6eyJ1c2VybmFtZSI6InRhbmdvLWJldGEyIiwicGFzc3dvcmQiOiJhRGstcmVOLW1UQi1IejciLCJlbWFpbCI6InRhbmdvLWJldGEyQHZtd2FyZS5jb20iLCJhdXRoIjoiZEdGdVoyOHRZbVYwWVRJNllVUnJMWEpsVGkxdFZFSXRTSG8zIn19 kind: Secret metadata: name: jfrog namespace: ${input.GIT_BRANCH_NAME} type: kubernetes.io/dockercfg --- apiVersion: v1 kind: Service metadata: name: codestream namespace: ${input.GIT_BRANCH_NAME} labels: app: codestream spec: ports: - port: 80 selector: app: codestream tier: frontend type: LoadBalancer --- apiVersion: extensions/v1 kind: Deployment metadata: name: codestream namespace: ${input.GIT_BRANCH_NAME} labels: app: codestream spec: selector: matchLabels: app: codestream tier: frontend strategy: type: Recreate template: metadata: labels: app: codestream tier: frontend spec: containers: - name: codestream image: cas.jfrog.io/codestream:${input.GIT_BRANCH_NAME}-${Dev.PublishApp.output.jobId} ports: - containerPort: 80 name: codestream imagePullSecrets: - name: jfrog
下一步
若要將軟體應用程式部署至生產 Kubernetes 叢集,請再次執行這些步驟,然後選取生產叢集。
若要瞭解有關將 Code Stream 與 Jenkins 整合的詳細資訊,請參閱如何整合 Code Stream 與 Jenkins。