作为 Code Stream 管理员或开发人员,您可以使用 Code Stream 和 VMware Tanzu Kubernetes Grid Integrated Edition(以前称为 VMware Enterprise PKS)自动将软件应用程序部署到 Kubernetes 集群。此用例提到其他方法,这些方法可用于自动执行应用程序的发布。
在此用例中,您将创建包含两个阶段的管道,并使用 Jenkins 生成和部署应用程序。
- 第一个阶段是进行开发。此阶段使用 Jenkins 从 GitHub 存储库中的分支提取代码,然后生成、测试并发布该代码。
- 第一个阶段是进行部署。此阶段运行需要关键用户批准的用户操作任务,然后管道才可以将应用程序部署到 Kubernetes 集群。
在管道工作区中使用 Kubernetes API 端点时, Code Stream 会创建必要的 Kubernetes 资源(如 ConfigMap、密钥和 Pod)以运行持续集成 (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 集成。