Configuration reference

Learn about all the configurable fields in the piped configuration file.

This page describes all configurable fields for the piped (piped.config) configuration file in PipeCD v1.

In v1, the architecture has shifted to a plugin-based model. The old platformProviders have been replaced by plugins (which specify the tool binaries to load) and deployTargets (where to deploy, nested under plugins). analysisProviders have been moved or removed from the top level. Additionally, chartRepositories and chartRegistries have been moved from the top level and are now configured individually under spec.plugins[].config for the relevant platform plugins (e.g., the Kubernetes plugin).

Example piped.config

apiVersion: pipecd.dev/v1beta1
kind: Piped
spec:
  projectID: my-project
  pipedID: my-piped-id
  pipedKeyFile: /etc/piped-secret/piped-key
  apiAddress: grpc.pipecd.dev:443
  plugins:
    - name: k8s_plugin
      url: file:///path/to/k8s_plugin
      port: 8081
      deployTargets:
        - name: dev-cluster
          labels:
            env: dev
          config:
            masterURL: http://cluster-dev
            kubeConfigPath: ./kubeconfig-dev

Piped Configuration

FieldTypeDescriptionRequired
apiVersionstringpipecd.dev/v1beta1Yes
kindstringPipedYes
spec.projectIDstringThe identifier of the PipeCD project where this piped belongs to.Yes
spec.pipedIDstringThe generated ID for this piped.Yes
spec.pipedKeyFilestringThe path to the file containing the generated key string for this piped.Yes*
spec.pipedKeyDatastringBase64 encoded string of Piped key. Either pipedKeyFile or pipedKeyData must be set.Yes*
spec.namestringThe name of this piped.No
spec.apiAddressstringThe address used to connect to the Control Plane’s API.Yes
spec.webAddressstringThe address to the Control Plane’s Web interface.No
spec.syncIntervaldurationHow often to check whether an application should be synced. Default is 1m.No
spec.appConfigSyncIntervaldurationHow often to check whether an application configuration file should be synced. Default is 1m.No
spec.gitPipedGitConfiguration for Git executable needed for Git commands.No
spec.repositories[]PipedRepositoryList of Git repositories this Piped should watch.No
spec.plugins[]PipedPluginList of architectural plugins (e.g., k8s_plugin, terraform_plugin) the Piped will run.Yes
spec.notificationsNotificationsConfigurations for sending deployment notifications.No
spec.secretManagementSecretManagementConfiguration for decrypting secrets in manifests.No
spec.eventWatcherPipedEventWatcherOptional settings for event watcher.No
spec.planPreviewPipedPlanPreviewOptional settings for plan-preview feature.No
spec.appSelectormap[string]stringList of labels to filter all applications this piped will handle.No

PipedGit

FieldTypeDescriptionRequired
usernamestringThe username that will be configured for git user. Default is piped.No
emailstringThe email that will be configured for git user. Default is pipecd.dev@gmail.com.No
sshConfigFilePathstringWhere to write ssh config file. Default is $HOME/.ssh/config.No
hoststringThe host name. Default is github.com.No
hostNamestringThe hostname or IP address of the remote git server. Default is the same value with Host.No
sshKeyFilestringThe path to the private ssh key file. This will be used to clone the source code of the specified git repositories.No
sshKeyDatastringBase64 encoded string of SSH key.No
passwordstringThe base64 encoded password for git used while cloning above Git repository via HTTPS.No

PipedRepository

FieldTypeDescriptionRequired
repoIdstringUnique identifier to the repository. This must be unique in the piped scope.Yes
remotestringRemote address of the repository used to clone the source code. e.g. git@github.com:org/repo.gitYes
branchstringThe branch will be handled.Yes

PipedPlugin

Defines the external plugin binaries that this Piped agent should load to handle specific platforms.

FieldTypeDescriptionRequired
namestringThe name of the plugin (e.g., k8s_plugin).Yes
urlstringSource to download the plugin binary (schemes: file, https, oci).Yes
portintThe port which the plugin listens to.No
configobjectConfiguration for the plugin.No
deployTargets[]PipedDeployTargetThe destination environments/clusters where the Piped is allowed to deploy applications.No

PipedDeployTarget

Defines the target environments where applications can be deployed.

FieldTypeDescriptionRequired
namestringThe unique name of the deploy target.Yes
labelsmap[string]stringAttributes to identify the target (e.g., env: production).No
configobjectThe platform-specific connection configuration.Yes

PipedEventWatcher

FieldTypeDescriptionRequired
checkIntervaldurationInterval to fetch the latest event and compare it.No
gitRepos[]PipedEventWatcherGitRepoThe configuration list of git repositories to be observed.No

PipedEventWatcherGitRepo

FieldTypeDescriptionRequired
repoIdstringId of the git repository. Must be unique.Yes
commitMessagestringThe commit message used to push after replacing values.No
includes[]stringThe paths to EventWatcher files to be included. e.g. foo/*.yaml.No
excludes[]stringThe paths to EventWatcher files to be excluded. Prioritized over includes.No

PipedPlanPreview

FieldTypeDescriptionRequired
workerNumintNumber of worker goroutines processing plan-preview commands.No
commandQueueBufferSizeintBuffer size of the internal command channel.No
commandCheckIntervaldurationHow often to poll for new plan-preview commands.No
commandHandleTimeoutdurationDefault timeout for building each plan-preview result when the command does not specify one.No

SecretManagement

FieldTypeDescriptionRequired
typestringWhich management service should be used (KEY_PAIR, GCP_KMS).Yes
configobjectConfiguration for the specified secret management type.Yes

SecretManagementConfig

Must be one of the following structs based on the type field:

SecretManagementKeyPair

FieldTypeDescriptionRequired
privateKeyFilestringPath to the private RSA key file.Yes
privateKeyDatastringBase64 encoded string of private RSA key. Either privateKeyFile or privateKeyData must be set.No
publicKeyFilestringPath to the public RSA key file.Yes
publicKeyDatastringBase64 encoded string of public RSA key. Either publicKeyFile or publicKeyData must be set.No

SecretManagementGCPKMS

FieldTypeDescriptionRequired
keyNamestringThe key name used for decrypting the sealed secret.Yes
decryptServiceAccountFilestringThe path to the service account used to decrypt secret.Yes
encryptServiceAccountFilestringThe path to the service account used to encrypt secret.Yes

Notifications

FieldTypeDescriptionRequired
routes[]NotificationRouteList of notification routes.No
receivers[]NotificationReceiverList of notification receivers.No

NotificationRoute

FieldTypeDescriptionRequired
namestringThe name of the route.Yes
receiverstringThe name of receiver who will receive all matched events.Yes
events[]stringList of events that should be routed to the receiver.No
ignoreEvents[]stringList of events that should be ignored.No
groups[]stringList of event groups that should be routed to the receiver.No
ignoreGroups[]stringList of event groups that should be ignored.No
apps[]stringList of applications where their events should be routed.No
ignoreApps[]stringList of applications where their events should be ignored.No
labelsmap[string]stringList of labels where their events should be routed.No
ignoreLabelsmap[string]stringList of labels where their events should be ignored.No

NotificationReceiver

FieldTypeDescriptionRequired
namestringThe name of the receiver.Yes
slackNotificationReceiverSlackConfiguration for slack receiver.No
webhookNotificationReceiverWebhookConfiguration for webhook receiver.No

NotificationReceiverSlack

Use either hookURL alone, or channelID with an OAuth token (oauthToken, oauthTokenData, or oauthTokenFile). Do not set both.

FieldTypeDescriptionRequired
hookURLstringThe hook URL of a Slack channel. Required when not using OAuth token.Yes*
oauthTokenstringThe token for Slack API use. (deprecated)No
oauthTokenDatastringBase64 encoded string of the token for Slack API use.No
oauthTokenFilestringThe path to the OAuth token file.No
channelIDstringThe channel ID which the Slack API sends to. Required when using OAuth token.Yes*
mentionedAccounts[]stringThe accounts to which slack api refers. This field supports both @username and username writing styles.No
mentionedGroups[]stringThe groups to which slack api refers. This field supports both <!subteam^groupname> and groupname writing styles.No

NotificationReceiverWebhook

FieldTypeDescriptionRequired
urlstringThe URL where notification event will be sent to.Yes
signatureKeystringThe HTTP header key used to store the configured signature in each event. Default is “PipeCD-Signature”.No
signatureValuestringThe value of signature included in header of each event request. It can be used to verify the received events.No
signatureValueFilestringThe path to the signature value file.No