Configure Traffic Management With Linkerd
Before you begin
- In your target Kubernetes cluster, you have deployed Linkerd, a service mesh that complies with the Service Mesh Interface (SMI) spec.
- You know how to create a CD-as-a-Service deployment config file.
CD-as-a-Service does not configure proxy sidecar injection.
Configure traffic management
Add a top-level trafficManagement.targets
section to your deployment file.
trafficManagement:
- targets: ["<target>"]
smi:
- rootServiceName: "<rootServiceName>"
canaryServiceName: "<rootServiceName>-canary"
trafficSplitName: "<rootServiceName>"
kubernetes:
- activeService: "<activeServiceName>"
previewService: "<previewServiceName>"
targets
: Comma-delimited list of deployment targets; if omitted, CD-as-a-Service applies the traffic management configuration to all targets.smi.rootServiceName
: (Required if configuring ansmi
block) the name of a KubernetesService
. Its service selector should target a KubernetesDeployment
resource in your deployment’s manifests. The SMITrafficSplit
spec defines a root service as the fully qualified domain name (FQDN) used by clients to communicate with your application. TheService
should exist at the time of deployment.smi.canaryServiceName
: (Optional)(Canary) the name of a KubernetesService
. Its service selector should target a KubernetesDeployment
resource in your deployment’s manifests.- If you provide a
canaryServiceName
, CD-as-a-Service assumes theService
already exists and uses it for deployment. - If you don’t provide a
canaryServiceName
, CD-as-a-Service creates aService
object and gives it the name of the root service with “-canary” appended to it. For example, if your root service is “myRootService”, then the canary service name would be “myRootService-canary”.
- If you provide a
smi.trafficSplitName
: (Optional) CD-as-a-Service uses the provided name when creating an SMITrafficSplit
.kubernetes.activeService
: (Required if configuring akubernetes
block)(Blue/Green) the name of a KubernetesService
. Its service selector should target a KubernetesDeployment
resource in your deployment’s manifests. TheService
should exist at the time of deployment.kubernetes.previewService
: (Optional)(Blue/Green) the name of a KubernetesService
. Its service selector should target a KubernetesDeployment
resource in your deployment’s manifests. TheService
should exist at the time of deployment.
(Optional) Configure your app’s Kubernetes Service:
trafficManagement:
- targets: ["<target1>", "<target2>"]
kubernetes:
- activeService: "<activeServiceName>"
previewService: "<previewServiceName>"
targets
: Comma-delimited list of deployment targets.kubernetes.activeService
: (Required if configuring akubernetes
block)(Blue/Green) the name of a KubernetesService
. Its service selector should target a KubernetesDeployment
resource in your deployment’s manifests. TheService
should exist at the time of deployment.kubernetes.previewService
: (Optional)(Blue/Green) the name of a KubernetesService
. Its service selector should target a KubernetesDeployment
resource in your deployment’s manifests. TheService
should exist at the time of deployment.
What’s next
Feedback
Was this page helpful?
Thank you for letting us know!
Sorry to hear that. Please tell us how we can improve.
Last modified August 3, 2023: (10324ed)