create-service
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
ChineseCreate Service
创建服务
Generate Harness Service YAML and push to Harness via MCP.
生成Harness Service YAML并通过MCP推送到Harness。
Instructions
操作说明
- Detect service type from codebase (if source code is available) - Scan the project for deployment manifests to auto-select the correct and manifest configuration:
serviceDefinition.type- ,
k8s/,kubernetes/with YAML files →manifests/withKubernetesK8sManifest - →
kustomization.yamlwithKubernetesKustomize - ,
Chart.yaml,charts/→helm/withNativeHelmHelmChart - →
task-definition.jsonwithECSEcsTaskDefinition - /
serverless.yml(SAM) →template.yamlServerlessAwsLambda - (Azure) →
function.jsonAzureWebApp - + Windows →
.NETWinRm - Traditional app (JAR/WAR) without containers →
Ssh - See Step 4 for the full decision tree
create-pipeline/references/codebase-analysis.md
- Detect artifact source - Match Dockerfile registry references to artifact source type:
- Docker Hub →
DockerRegistry - →
*.dkr.ecr.*.amazonaws.comEcr - /
gcr.io→*-docker.pkg.devGcr - →
*.azurecr.ioAcr
- Docker Hub →
- Confirm with user - Present detected service type, manifest type, and artifact source for confirmation
- Generate YAML following the structure below
- Create via MCP using with resource_type
harness_createservice
- 从代码库检测服务类型(若提供源代码)- 扫描项目中的部署清单,自动选择正确的和清单配置:
serviceDefinition.type- 包含YAML文件的、
k8s/、kubernetes/目录 → 采用manifests/类型并配置KubernetesK8sManifest - 文件 → 采用
kustomization.yaml类型并配置KubernetesKustomize - 、
Chart.yaml、charts/目录 → 采用helm/类型并配置NativeHelmHelmChart - 文件 → 采用
task-definition.json类型并配置ECSEcsTaskDefinition - /
serverless.yml(SAM)→ 采用template.yaml类型ServerlessAwsLambda - (Azure)→ 采用
function.json类型AzureWebApp - + Windows环境 → 采用
.NET类型WinRm - 无容器的传统应用(JAR/WAR)→ 采用类型
Ssh - 完整决策树请参考第4步
create-pipeline/references/codebase-analysis.md
- 包含YAML文件的
- 检测制品源 - 匹配Dockerfile中的注册表引用以确定制品源类型:
- Docker Hub →
DockerRegistry - →
*.dkr.ecr.*.amazonaws.comEcr - /
gcr.io→*-docker.pkg.devGcr - →
*.azurecr.ioAcr
- Docker Hub →
- 与用户确认 - 展示检测到的服务类型、清单类型和制品源,等待用户确认
- 生成YAML - 遵循下方的结构生成
- 通过MCP创建 - 使用工具,指定resource_type为
harness_createservice
Service Structure
服务结构
yaml
service:
name: My Service
identifier: my_service
orgIdentifier: default
projectIdentifier: my_project
serviceDefinition:
type: Kubernetes # Kubernetes, NativeHelm, ECS, ServerlessAwsLambda, Ssh, WinRm, AzureWebApp, AzureFunction, CustomDeployment
spec:
artifacts:
primary:
primaryArtifactRef: docker_image
sources:
- identifier: docker_image
type: DockerRegistry
spec:
connectorRef: dockerhub
imagePath: myorg/myimage
tag: <+input>
manifests:
- manifest:
identifier: k8s_manifest
type: K8sManifest
spec:
store:
type: Github
spec:
connectorRef: github_connector
repoName: my-manifests
branch: main
paths: [manifests/]
variables:
- name: replicas
type: String
value: "3"yaml
service:
name: My Service
identifier: my_service
orgIdentifier: default
projectIdentifier: my_project
serviceDefinition:
type: Kubernetes # Kubernetes, NativeHelm, ECS, ServerlessAwsLambda, Ssh, WinRm, AzureWebApp, AzureFunction, CustomDeployment
spec:
artifacts:
primary:
primaryArtifactRef: docker_image
sources:
- identifier: docker_image
type: DockerRegistry
spec:
connectorRef: dockerhub
imagePath: myorg/myimage
tag: <+input>
manifests:
- manifest:
identifier: k8s_manifest
type: K8sManifest
spec:
store:
type: Github
spec:
connectorRef: github_connector
repoName: my-manifests
branch: main
paths: [manifests/]
variables:
- name: replicas
type: String
value: "3"Deployment Types
部署类型
Kubernetes Service
Kubernetes服务
yaml
serviceDefinition:
type: Kubernetes
spec:
artifacts:
primary:
primaryArtifactRef: main_image
sources:
- identifier: main_image
type: DockerRegistry
spec:
connectorRef: dockerhub
imagePath: myorg/api
tag: <+input>
manifests:
- manifest:
identifier: manifests
type: K8sManifest
spec:
store:
type: Github
spec:
connectorRef: github
repoName: k8s-manifests
branch: main
paths: [deploy/]yaml
serviceDefinition:
type: Kubernetes
spec:
artifacts:
primary:
primaryArtifactRef: main_image
sources:
- identifier: main_image
type: DockerRegistry
spec:
connectorRef: dockerhub
imagePath: myorg/api
tag: <+input>
manifests:
- manifest:
identifier: manifests
type: K8sManifest
spec:
store:
type: Github
spec:
connectorRef: github
repoName: k8s-manifests
branch: main
paths: [deploy/]Helm Service
Helm服务
yaml
serviceDefinition:
type: NativeHelm
spec:
artifacts:
primary:
primaryArtifactRef: chart
sources:
- identifier: chart
type: DockerRegistry
spec:
connectorRef: dockerhub
imagePath: myorg/api
tag: <+input>
manifests:
- manifest:
identifier: helm_chart
type: HelmChart
spec:
store:
type: Http
spec:
connectorRef: helm_repo
chartName: my-chart
chartVersion: <+input>
helmVersion: V3yaml
serviceDefinition:
type: NativeHelm
spec:
artifacts:
primary:
primaryArtifactRef: chart
sources:
- identifier: chart
type: DockerRegistry
spec:
connectorRef: dockerhub
imagePath: myorg/api
tag: <+input>
manifests:
- manifest:
identifier: helm_chart
type: HelmChart
spec:
store:
type: Http
spec:
connectorRef: helm_repo
chartName: my-chart
chartVersion: <+input>
helmVersion: V3Kustomize Service
Kustomize服务
yaml
serviceDefinition:
type: Kubernetes
spec:
artifacts:
primary:
primaryArtifactRef: main_image
sources:
- identifier: main_image
type: DockerRegistry
spec:
connectorRef: dockerhub
imagePath: myorg/api
tag: <+input>
manifests:
- manifest:
identifier: kustomize
type: Kustomize
spec:
store:
type: Github
spec:
connectorRef: github
repoName: k8s-config
branch: main
folderPath: overlays/production
pluginPath: ""yaml
serviceDefinition:
type: Kubernetes
spec:
artifacts:
primary:
primaryArtifactRef: main_image
sources:
- identifier: main_image
type: DockerRegistry
spec:
connectorRef: dockerhub
imagePath: myorg/api
tag: <+input>
manifests:
- manifest:
identifier: kustomize
type: Kustomize
spec:
store:
type: Github
spec:
connectorRef: github
repoName: k8s-config
branch: main
folderPath: overlays/production
pluginPath: ""ECS Service
ECS服务
yaml
serviceDefinition:
type: ECS
spec:
artifacts:
primary:
primaryArtifactRef: ecr_image
sources:
- identifier: ecr_image
type: Ecr
spec:
connectorRef: aws_connector
region: us-east-1
imagePath: my-image
tag: <+input>
manifests:
- manifest:
identifier: task_def
type: EcsTaskDefinition
spec:
store:
type: Github
spec:
connectorRef: github
repoName: ecs-config
branch: main
paths: [task-definition.json]yaml
serviceDefinition:
type: ECS
spec:
artifacts:
primary:
primaryArtifactRef: ecr_image
sources:
- identifier: ecr_image
type: Ecr
spec:
connectorRef: aws_connector
region: us-east-1
imagePath: my-image
tag: <+input>
manifests:
- manifest:
identifier: task_def
type: EcsTaskDefinition
spec:
store:
type: Github
spec:
connectorRef: github
repoName: ecs-config
branch: main
paths: [task-definition.json]Serverless Lambda Service
Serverless Lambda服务
yaml
serviceDefinition:
type: ServerlessAwsLambda
spec:
artifacts:
primary:
primaryArtifactRef: s3_artifact
sources:
- identifier: s3_artifact
type: AmazonS3
spec:
connectorRef: aws_connector
region: us-east-1
bucketName: my-deployments
filePath: serverless-app.zip
manifests:
- manifest:
identifier: serverless_manifest
type: ServerlessAwsLambda
spec:
store:
type: Github
spec:
connectorRef: github
repoName: serverless-config
branch: main
paths: [serverless.yml]yaml
serviceDefinition:
type: ServerlessAwsLambda
spec:
artifacts:
primary:
primaryArtifactRef: s3_artifact
sources:
- identifier: s3_artifact
type: AmazonS3
spec:
connectorRef: aws_connector
region: us-east-1
bucketName: my-deployments
filePath: serverless-app.zip
manifests:
- manifest:
identifier: serverless_manifest
type: ServerlessAwsLambda
spec:
store:
type: Github
spec:
connectorRef: github
repoName: serverless-config
branch: main
paths: [serverless.yml]Artifact Source Types
制品源类型
- - Docker Hub (connectorRef, imagePath, tag)
DockerRegistry - - AWS ECR (connectorRef, region, imagePath, tag)
Ecr - - Google GCR (connectorRef, registryHostname, imagePath, tag)
Gcr - - Google Artifact Registry (connectorRef, region, repositoryName, package, version)
GoogleArtifactRegistry - - Azure ACR (connectorRef, subscriptionId, registry, repository, tag)
Acr - - JFrog Artifactory (connectorRef, repository, artifactPath, repositoryFormat, tag)
ArtifactoryRegistry - - Nexus (connectorRef, repository, artifactPath, repositoryFormat, tag)
Nexus3Registry - - GitHub Packages (connectorRef, packageType, org, packageName, version)
GithubPackageRegistry - - S3 (connectorRef, region, bucketName, filePath)
AmazonS3 - - GCS (connectorRef, project, bucket, artifactPath)
GoogleCloudStorage - - Custom source (scripts, delegateSelectors, version)
CustomArtifact
- - Docker Hub(参数:connectorRef、imagePath、tag)
DockerRegistry - - AWS ECR(参数:connectorRef、region、imagePath、tag)
Ecr - - Google GCR(参数:connectorRef、registryHostname、imagePath、tag)
Gcr - - Google Artifact Registry(参数:connectorRef、region、repositoryName、package、version)
GoogleArtifactRegistry - - Azure ACR(参数:connectorRef、subscriptionId、registry、repository、tag)
Acr - - JFrog Artifactory(参数:connectorRef、repository、artifactPath、repositoryFormat、tag)
ArtifactoryRegistry - - Nexus(参数:connectorRef、repository、artifactPath、repositoryFormat、tag)
Nexus3Registry - - GitHub Packages(参数:connectorRef、packageType、org、packageName、version)
GithubPackageRegistry - - S3(参数:connectorRef、region、bucketName、filePath)
AmazonS3 - - GCS(参数:connectorRef、project、bucket、artifactPath)
GoogleCloudStorage - - 自定义源(参数:scripts、delegateSelectors、version)
CustomArtifact
Creating via MCP
通过MCP创建
Call MCP tool: harness_create
Parameters:
resource_type: "service"
org_id: "<organization>"
project_id: "<project>"
body: <service YAML>List existing services:
Call MCP tool: harness_list
Parameters:
resource_type: "service"
org_id: "<organization>"
project_id: "<project>"调用MCP工具:harness_create
参数:
resource_type: "service"
org_id: "<organization>"
project_id: "<project>"
body: <service YAML>列出已有服务:
调用MCP工具:harness_list
参数:
resource_type: "service"
org_id: "<organization>"
project_id: "<project>"Examples
示例
- "Create a K8s service with Docker Hub artifact" - Kubernetes type with DockerRegistry source
- "Create a Helm service" - NativeHelm type with HelmChart manifest
- "Create an ECS service with ECR" - ECS type with Ecr artifact source
- "创建带Docker Hub制品的K8s服务" - Kubernetes类型搭配DockerRegistry源
- "创建Helm服务" - NativeHelm类型搭配HelmChart清单
- "创建带ECR的ECS服务" - ECS类型搭配Ecr制品源
Performance Notes
性能注意事项
- Verify that referenced connectors exist before creating the service definition.
- Ensure the deployment type matches the infrastructure type that will be used in the pipeline.
- For artifact sources, confirm the image path and registry are accessible.
- Quality of service configuration is more important than speed.
- 创建服务定义前,确认引用的连接器已存在。
- 确保部署类型与流水线中使用的基础设施类型匹配。
- 对于制品源,确认镜像路径和注册表可访问。
- 服务配置的质量比速度更重要。
Troubleshooting
故障排查
- - Create connector first or fix connectorRef
CONNECTOR_NOT_FOUND - - Service exists; use
DUPLICATE_IDENTIFIERharness_update - Artifact tag means the tag is provided at runtime
<+input>
- - 先创建连接器或修正connectorRef
CONNECTOR_NOT_FOUND - - 服务已存在;使用
DUPLICATE_IDENTIFIER更新harness_update - 制品标签表示标签将在运行时提供
<+input>