创建舵图
首先,我们创建了一个非常简单的Helm图表,并将其存储在GitRepo源存储库:
apiVersion: v1 appVersion: "1.0" description: A Helm chart for Kubernetes name: simplehelm version: 0.1.0
我们使用同伴values.yml
文件指定详细信息,包括标识要部署哪个Docker映像的信息。
replicaccount: 1 image: repository: ${res_simplehelmDockerImage_imageName} tag: ${res_simplehelmDockerImage_imageTag} pullPolicy: IfNotPresent port: 80 ....
的存储库
而且标签
标识Docker映像名称和标记的字段被设置为环境变量。这些参考了imageName
而且imageTag
的属性图像资源为Docker映像。
当我们的管道运行时,HelmDeploystep将自动将这些环境变量引用替换为来自Image资源的值,这样正确的Docker映像将通过Helm部署。
有关创建Helm图表的更多信息,请参见舵图模板指南.
码头工人形象
Helm部署将从Docker注册表中抽取一个映像来编排到Kubernetes集群中。
您可能希望构建Docker映像并将其作为管道的一部分推送到注册表。如果是,您可以使用DockerBuild而且DockerPush本机的步骤。
如果要部署的映像已经在Docker注册表中可用,则可以跳过此过程。然而,你仍然需要一个图像在注册中心中指定映像的资源。
我们的2022世界杯阿根廷预选赛赛程
定义将指定:
simplehelmRepo_docker
- - -GitRepoDockerfile的源存储库simplehelmDockerImage
——一个图像资源的Docker映像,将构建并推送到Artifactory中的Docker注册表
—名称:simplehelmRepo_docker类型:GitRepo配置:gitProvider: my_github路径:myrepo/simplehelm文件:包括:“Dockerfile|server.js|包”。- name: simplehelmDockerImage type:镜像配置:注册表:myDocker imageName: myproject/simplehelm imageTag:最新
使用这些资源,管道将构建2022世界杯阿根廷预选赛赛程Docker映像并将其推送到Artifactory中的注册表。
—name: build_image type: DockerBuild配置:affinityGroup: buildAndPush集成:—name: myDocker inputResources:—name: simplehelm2022世界杯阿根廷预选赛赛程Repo_docker dockerFileLocation:。dockerFileName: Dockerfile dockerImageName: myproject/simplehelm dockerImageTag: $run_number - name: push_image type: DockerPush配置:affinityGroup: buildAndPush集成:- name: myDocker targetRepository: myproject/simplehelm inputSteps: - name: build_image outputResources: - name: simple2022世界杯阿根廷预选赛赛程helmDockerImage
发布舵图
示例管道使用HelmPublish在Artifactory中发布Helm图表及其同伴文件到Helm存储库的原生步骤。
我们的2022世界杯阿根廷预选赛赛程
定义将指定:
simplehelmRepo_chart
- - -GitRepo上面显示的Helm图表存储在源存储库中。simpleHelmChart
——一个HelmChart资源,表示在Artifactory中发布的Helm图表。它指定Artifactory存储库、图表名称和要发布的版本。
—name: simplehelmRepo_chart type: GitRepo configuration: gitProvider: my_github path: myrepo/simplehelm文件:包括:"simplehelm. exe "-名称:simplehelmChart类型:HelmChart配置:sourceArtifactory:美术库:simplecharts图表:simplehelm版本:0.0.0
利用这些资源,我们2022世界杯阿根廷预选赛赛程HelmPublish本机步骤将赫尔姆图从源存储库发布到Artifactory存储库。(注意,按照配置,此步骤不会发布构建信息。)
—name: publish_helm_chart type: HelmPublish configuration: inputR2022世界杯阿根廷预选赛赛程esources:—name: simplehelmRepo_chart outputResources:—name: simplehelmChart chartPath: ./simplehelm . txt
本地步骤使用执掌包
命令执行发布,因此所有图表文件(Chart.yml
,values.yml
)将作为一个单元出版。
带舵部署
示例管道使用HelmDeploy本机步骤部署映像到Kubernetes。
的HelmDeploy原生步将:
- 使用
simplehelmChart
资源从Artifactory拉Helm图表 - 替换中的所有环境变量
values.yml
用他们的价值观从simplehelmDockerImage
资源 - 执行
执掌升级
命令部署simplehelmDockerImage
从Docker存储库到Kubernetes集群
—name: deploy_helm_chart type: HelmDeploy configuration: integrations:—name: tr_kubernetes inputRes2022世界杯阿根廷预选赛赛程ources:—name: simplehelmChart—name: simplehelmDockerImage releaseName: simplehelm flags: "——namespace dev" valuefileppaths: - values.yaml
注意,镜像资源不是HelmDeploy所要求的input2022世界杯阿根廷预选赛赛程resources
.HelmDeploy需要的唯一资源是一个HelmChart。
我们包括simplehelmDockerImage
所以它imageName
而且imageTag
属性作为环境变量可用于该步骤。这使得HelmDeploy步骤可以在values.yml
舵图文件。
更换后,将values.yml
Helm使用的可能是(如果运行1):
replicaccount: 1 image: repository: myproject/simplehelm tag: 1 pullPolicy: IfNotPresent port: 80 ....
从Git存储库部署HelmDeploy
我们建议将您的Helm图表与可追踪的元数据推送到Artifactory。但是,HelmDeploy步骤可以直接从Git源存储库中使用Helm图表。
使用Git存储库中的Helm图表进行部署,而不将其推到Artifactory:
- 跳过HelmPublish步骤
- 的管道DSL中
deploy_helm_chart
步,在input2022世界杯阿根廷预选赛赛程resources
部分替换simplehelmChart
的HelmChart资源simplehelmRepo_chart
GitRepo资源。
该操作将产生相同的结果,包括替换中的环境变量values.yml。
完整的示例
下面是示例管道的完整管道DSL,供您参考。
—名称:simplehelmRepo_docker类型:GitRepo配置:gitProvider: my_github路径:myrepo/simplehelm文件:包括:“Dockerfile|server.js|包”。- name: simplehelmDockerImage type:镜像配置:注册表:myDocker imageName: myproject/simplehelm imageTag:最新—name: simplehelmRepo_chart type: GitRepo configuration: gitProvider: my_github path: myrepo/simplehelm文件:包括:"simplehelm. exe "-名称:simplehelmChart类型:HelmChart配置:sourceArtifactory:美术库:simplecharts图表:simplehelm版本:0.0.0
管道:—name: helm_full_flow步骤:—name: build_image类型:DockerBuild配置:affinityGroup: buildAndPush集成:—name: myDocker inputResources:—name: simplehelmRepo_docker docker2022世界杯阿根廷预选赛赛程FileLocation:。dockerFileName: Dockerfile dockerImageName: myproject/simplehelm dockerImageTag: $run_number - name: push_image类型:DockerPush配置:affinityGroup: buildAndPush集成:- name: myDocker targetRepository: myproject/simplehelm inputSteps: - name: build_image outputResources: - name: simplehelm2022世界杯阿根廷预选赛赛程DockerImage - name: publish_helm_chart类型:HelmPublish配置:inputResources: - name: simplehelmChart chartPath: ./simplehelm - name:deploy_helm_chart type: HelmDeploy配置:integrations:—name: tr_kubernetes inputResources:—name2022世界杯阿根廷预选赛赛程: simplehelmChart -name: simplehelmDockerImage releaseName: simplehelm flags: "——namespace dev" valuefileppaths: - values.yaml