创建掌舵图
首先,我们创建了一个非常简单的Helm图表,将其存储在GitRepo源存储库:
apiVersion: v1 appVersion: "1.0"描述:Kubernetes的Helm表名称:simplehelm版本:0.1.0
我们使用同伴values.yml
文件指定详细信息,包括标识要部署哪个Docker映像的信息。
replicaccount: 1 image: repository: ${res_simplehelmDockerImage_imageName} tag: ${res_simplehelmDockerImage_imageTag} pullPolicy: IfNotPresent端口:80 ....
的存储库
和标签
标识Docker镜像名称和标签的字段设置为环境变量。这些引用了imageName
和imageTag
的性质图像Docker镜像的资源。
当我们的管道运行时HelmDeploystep会自动将这些环境变量引用替换为Image资源中的值,这样就可以通过Helm部署正确的Docker镜像。
有关创建Helm图表的详细信息,请参见舵图模板指南。
码头工人形象
Helm部署将从Docker注册表中提取镜像,以编排到Kubernetes集群。
您可能希望构建Docker映像并将其作为管道的一部分推送到注册表中。如果是,您可以使用DockerBuild和DockerPush本机的步骤。
如果要部署的映像已经在Docker注册表中可用,那么可以跳过这个过程。然而,你仍然需要一个图像资源,该资源指定注册表中的映像。
我们的2022世界杯阿根廷预选赛赛程
定义将具体说明:
simplehelmRepo_docker
- - -GitRepoDockerfile所在的源存储库simplehelmDockerImage
——一个图像Docker镜像的资源,该镜像将被构建并推送到Artifactory中的Docker注册表中
-名称:simplehelmRepo_docker类型:GitRepo配置:gitProvider: my_github路径:myrepo/simplehelm文件:include: "Dockerfile|server.js|package. "- name: simplehelmDockerImage类型:Image配置:registry: myDocker imageName: myproject/simplehelm imageTag: latest . json
使用这些资源,管道将构建2022世界杯阿根廷预选赛赛程Docker映像并将其推送到Artifactory中的注册表中。
—名称:build_image类型:DockerBuild配置:affinityGroup: buildAndPush集成:—名称:myDocker inputResources:—名称:simplehelmRepo_docker d2022世界杯阿根廷预选赛赛程ockerFileLocation:。dockerFileName: Dockerfile dockerImageName: myproject/simplehelm dockerImageTag: $run_number -名称:push_image类型:DockerPush配置:affinityGroup: buildAndPush集成:-名称:myDocker targetRepository: myproject/simplehelm inputSteps: -名称:build_image outputResources: -名称:simplehelmDockerImage . Do2022世界杯阿根廷预选赛赛程ckerfile dockerImageName: myproject/simplehelm
发布舵图
示例管道使用HelmPublish将Helm图表及其配套文件发布到Artifactory中的Helm存储库。
我们的2022世界杯阿根廷预选赛赛程
定义将具体说明:
simplehelmRepo_chart
- - -GitRepo源代码存储库,其中存储了上面显示的Helm图表。simpleHelmChart
——一个HelmChart资源,表示在Artifactory中发布的Helm图表。它指定Artifactory存储库、图表名称和发布版本。
-名称:simplehelmRepo_chart类型:GitRepo配置:gitProvider: my_github路径:myrepo/simplehelm文件:include: "simplehelm. "*" -名称:simplehelmChart类型:HelmChart配置:sourceArtifactory:艺术存储库:simplecharts图表:simplehelm版本:0.0.0
利用这些资源2022世界杯阿根廷预选赛赛程HelmPublishnative步骤将把Helm图从源存储库发布到Artifactory存储库。(请注意,配置的这一步不会发布构建信息。)
—name: publish_helm_chart类型:HelmPublish配置:inputResources:—name: s2022世界杯阿根廷预选赛赛程implehelmRepo_chart outputResources:—name: simplehelmChart chartPath: ./simplehelm . net
本机步骤使用执掌包
命令执行发布,因此所有图表文件(Chart.yml
,values.yml
)将作为一个单元出版。
带舵部署
示例管道使用HelmDeploy将映像部署到Kubernetes的原生步骤。
的HelmDeploy原生步骤将:
- 使用
simplehelmChart
资源从Artifactory拉出Helm图表 - 中的所有环境变量
values.yml
他们的价值观来自simplehelmDockerImage
资源 - 执行
执掌升级
命令来部署simplehelmDockerImage
从Docker存储库到Kubernetes集群
—名称:deploy_helm_chart类型:HelmDeploy配置:integrations:—名称:tr_kubernetes inputResources:—名称:simplehelmCh2022世界杯阿根廷预选赛赛程art—名称:simplehelmDockerImage releaseName: simplehelm flags: "——namespace dev" valuefileppaths:—values.yaml
注意,HelmDeploy并不要求Image资源在其input2022世界杯阿根廷预选赛赛程resources
。HelmDeploy需要的唯一资源是一个HelmChart。
我们包括simplehelmDockerImage
所以它。imageName
和imageTag
属性可以作为环境变量提供给步骤。控件中那些环境变量的替换就可以在HelmDeploy步骤中执行values.yml
舵图文件。
更换后的values.yml
Helm使用的可能显示为(如果运行1):
replicaccount: 1 image: repository: myproject/simplehelm tag: 1 pullPolicy: IfNotPresent端口:80 ....
从Git存储库HelmDeploy
我们建议将您的舵机图表推送到具有可追踪元数据的Artifactory。但是,HelmDeploy步骤可以直接使用Git源存储库中的Helm图表。
使用Git存储库中的Helm图进行部署,而不将其推送到Artifactory:
- 跳过HelmPublish步骤
- 的管道DSL中
deploy_helm_chart
第一步,在input2022世界杯阿根廷预选赛赛程resources
部分取代simplehelmChart
HelmChart资源simplehelmRepo_chart
GitRepo资源。
操作将产生相同的结果,包括替换中的环境变量values.yml。
完整的示例
作为参考,这里是示例管道的完整pipeline DSL。
-名称:simplehelmRepo_docker类型:GitRepo配置:gitProvider: my_github路径:myrepo/simplehelm文件:include: "Dockerfile|server.js|package. "- name: simplehelmDockerImage类型:Image配置:registry: myDocker imageName: myproject/simplehelm imageTag: latest . json-名称:simplehelmRepo_chart类型:GitRepo配置:gitProvider: my_github路径:myrepo/simplehelm文件:include: "simplehelm. "*" -名称:simplehelmChart类型:HelmChart配置:sourceArtifactory:艺术存储库:simplecharts图表:simplehelm版本:0.0.0
—名称:helm_full_flow步骤:—名称:build_image类型:DockerBuild配置:affinityGroup: buildAndPush集成:—名称:myDocker inputResources:—名称:simplehelmRepo_docker dockerFileLocation:。2022世界杯阿根廷预选赛赛程dockerFileName: Dockerfile dockerImageName: myproject/simplehelm dockerImageTag: $run_number -名称:push_image类型:DockerPush配置:affinityGroup: buildAndPush集成:-名称:myDocker targetRepository: myproject/simplehelm inputSteps: -名称:build_image outputResources: -名称:simplehelmDockerImage -名称:2022世界杯阿根廷预选赛赛程publish_helm_chart类型:HelmPublish配置:inputResources: -名称:simplehelmRepo_chart outputResources: -名称:simplehelmChart chartPath: ./simplehelm -名称:deploy_helm_chart类型:HelmDeploy配置:集成:-名称:tr_kubernetes inputResources: -名称:simplehelmChart -2022世界杯阿根廷预选赛赛程名称:simplehelmDockerImage releaseName: simplehelm flags: "——namespace dev" valuefileppaths: - values.yaml