---
###
### Linkerd Namespace
###
kind: Namespace
apiVersion: v1
metadata:
  name: linkerd
  annotations:
    linkerd.io/inject: disabled
  labels:
    linkerd.io/is-control-plane: "true"
    config.linkerd.io/admission-webhooks: disabled
    linkerd.io/control-plane-ns: linkerd
    pod-security.kubernetes.io/enforce: privileged
---
###
### Identity Controller Service RBAC
###
kind: ClusterRole
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  name: linkerd-linkerd-identity
  labels:
    linkerd.io/control-plane-component: identity
    linkerd.io/control-plane-ns: linkerd
rules:
- apiGroups: ["authentication.k8s.io"]
  resources: ["tokenreviews"]
  verbs: ["create"]
# TODO(ver) Restrict this to the Linkerd namespace. See
# https://github.com/linkerd/linkerd2/issues/9367
- apiGroups: [""]
  resources: ["events"]
  verbs: ["create", "patch"]
---
kind: ClusterRoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  name: linkerd-linkerd-identity
  labels:
    linkerd.io/control-plane-component: identity
    linkerd.io/control-plane-ns: linkerd
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: linkerd-linkerd-identity
subjects:
- kind: ServiceAccount
  name: linkerd-identity
  namespace: linkerd
---
kind: ServiceAccount
apiVersion: v1
metadata:
  name: linkerd-identity
  namespace: linkerd
  labels:
    linkerd.io/control-plane-component: identity
    linkerd.io/control-plane-ns: linkerd
---
###
### Destination Controller Service
###
kind: ClusterRole
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  name: linkerd-linkerd-destination
  labels:
    linkerd.io/control-plane-component: destination
    linkerd.io/control-plane-ns: linkerd
rules:
- apiGroups: ["apps"]
  resources: ["replicasets"]
  verbs: ["list", "get", "watch"]
- apiGroups: ["batch"]
  resources: ["jobs"]
  verbs: ["list", "get", "watch"]
- apiGroups: [""]
  resources: ["pods", "endpoints", "services", "nodes"]
  verbs: ["list", "get", "watch"]
- apiGroups: ["linkerd.io"]
  resources: ["serviceprofiles"]
  verbs: ["list", "get", "watch"]
- apiGroups: ["workload.linkerd.io"]
  resources: ["externalworkloads"]
  verbs: ["list", "get", "watch"]
- apiGroups: ["coordination.k8s.io"]
  resources: ["leases"]
  verbs: ["create", "get", "update", "patch"]
- apiGroups: ["discovery.k8s.io"]
  resources: ["endpointslices"]
  verbs: ["list", "get", "watch", "create", "update", "patch", "delete"]
---
kind: ClusterRoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  name: linkerd-linkerd-destination
  labels:
    linkerd.io/control-plane-component: destination
    linkerd.io/control-plane-ns: linkerd
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: linkerd-linkerd-destination
subjects:
- kind: ServiceAccount
  name: linkerd-destination
  namespace: linkerd
---
kind: ServiceAccount
apiVersion: v1
metadata:
  name: linkerd-destination
  namespace: linkerd
  labels:
    linkerd.io/control-plane-component: destination
    linkerd.io/control-plane-ns: linkerd
---
kind: Secret
apiVersion: v1
metadata:
  name: linkerd-sp-validator-k8s-tls
  namespace: linkerd
  labels:
    linkerd.io/control-plane-component: destination
    linkerd.io/control-plane-ns: linkerd
  annotations:
    linkerd.io/created-by: linkerd/cli edge-24.11.3
type: kubernetes.io/tls
data:
  tls.crt: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSURUVENDQWpXZ0F3SUJBZ0lSQUxCY3podFBRZzhxbTVYWU4rZGVyRUV3RFFZSktvWklodmNOQVFFTEJRQXcKS3pFcE1DY0dBMVVFQXhNZ2JHbHVhMlZ5WkMxemNDMTJZV3hwWkdGMGIzSXViR2x1YTJWeVpDNXpkbU13SGhjTgpNalF4TVRFM01EZ3dPREF4V2hjTk1qVXhNVEUzTURnd09EQXhXakFyTVNrd0p3WURWUVFERXlCc2FXNXJaWEprCkxYTndMWFpoYkdsa1lYUnZjaTVzYVc1clpYSmtMbk4yWXpDQ0FTSXdEUVlKS29aSWh2Y05BUUVCQlFBRGdnRVAKQURDQ0FRb0NnZ0VCQUtSSUlDRWEwbGRpWnpPVzU2YjFuSyt0d1hFS2lCSnhsUW9jWlpFV0J5ek1jSHVwaUdhcApOY2N0VCt2YnpiR3JVM3dzNHRqL2pFeG41bDdVK0lwWkpIMmx1WG5pUjl0a0J6dDRPVjBQdGR4L293dDZldFh3Cm44cUxwTGptUDdEVmRZVkpqUXZabnFJL1pJNy9Bd0tCMngvMWlsRTdTVmlsanRRUGZtV3hhbW9tSDJSY1ZkZUwKL3o4SVZGSVE3cm5IMzhJVFFWd1ZBYitrOEVWbm5iV2t2dlhWWUdpcXhIRTdQdWc4TkM2UnZ0YXJ6KzdPTFoyQgpoZjNlR1RFeDVsUmMzSnI5bDVwMDQ4eVFTZDJ4MXFGdHN1VUlwMnZsR0ViVG1pUm43UStUaS8rTkJpVTIzc01BCjl0TTdCeURXeVhDd3N1ZnlZUXBoa2hwQ0k1SU43LzgweWtrQ0F3RUFBYU5zTUdvd0RnWURWUjBQQVFIL0JBUUQKQWdXZ01CMEdBMVVkSlFRV01CUUdDQ3NHQVFVRkJ3TUJCZ2dyQmdFRkJRY0RBakFNQmdOVkhSTUJBZjhFQWpBQQpNQ3NHQTFVZEVRUWtNQ0tDSUd4cGJtdGxjbVF0YzNBdGRtRnNhV1JoZEc5eUxteHBibXRsY21RdWMzWmpNQTBHCkNTcUdTSWIzRFFFQkN3VUFBNElCQVFCcXZBWnNaUEY2NEk4enh5TFVXVGdxOW8wMFZCU0hrcUN3VVpCK0JwQWwKQk1wTG5vOXc5MXVuN0U0QUppNms3b1JJblhWeWVwYWtUWkhPY3dxU2dGLzI1eEVZd0taeFRQTlFKRXUrN0hhVQplY3FnNWRuRTEwNG1HblpDaERTRXM4N21DaW5qUmVpT1lFcnpjYXVMdlc3bjJSenVmOFY1TUN6T3RpblRRa3FXClVrREZaNkN3NEI3VTFJNHV1c3g3SEUvU2ZGRGMzN3RrU3NvcjJueWNLSEVIT296dU04UjU1clhxUFY5NVZ4cjQKeTRSUm5jSllFcXJnakNvRlZFWm50UzVzSWhlckw3aTIwTlZ2cXFOODZ6elZXcWxIbGhCcVZZMmVOUkZNSmI4Two4dVFTQjloeFNEYzdDbG8vekJxbmhXWlJ1dGd6M0Y5M2NMOFp1SGFLVXdybAotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0t
  tls.key: LS0tLS1CRUdJTiBSU0EgUFJJVkFURSBLRVktLS0tLQpNSUlFcFFJQkFBS0NBUUVBcEVnZ0lSclNWMkpuTTVibnB2V2NyNjNCY1FxSUVuR1ZDaHhsa1JZSExNeHdlNm1JClpxazF4eTFQNjl2TnNhdFRmQ3ppMlArTVRHZm1YdFQ0aWxra2ZhVzVlZUpIMjJRSE8zZzVYUSsxM0grakMzcDYKMWZDZnlvdWt1T1kvc05WMWhVbU5DOW1lb2o5a2p2OERBb0hiSC9XS1VUdEpXS1dPMUE5K1piRnFhaVlmWkZ4VgoxNHYvUHdoVVVoRHV1Y2Zmd2hOQlhCVUJ2NlR3UldlZHRhUys5ZFZnYUtyRWNUcys2RHcwTHBHKzFxdlA3czR0Cm5ZR0YvZDRaTVRIbVZGemNtdjJYbW5UanpKQkozYkhXb1cyeTVRaW5hK1VZUnRPYUpHZnRENU9MLzQwR0pUYmUKd3dEMjB6c0hJTmJKY0xDeTUvSmhDbUdTR2tJamtnM3YvelRLU1FJREFRQUJBb0lCQVFDYkF3K0dEVGZ5aW9DVQp0a3lwUnRKdEZrZ1VNUHJLWkhCY1ZRVWxUS0xDaTdtTGhpR1Z0UTV3ZlhvUE5KMDNpMURBTjk1cElXQ3g2OHY5CktYbkhtV3VNUDZidXNpeFpnRjR1cURlQWIwV0w1TWZsR2RIME14T2oyL1kzSGROMU9VV2wyZ3dENVhrQTRVNHkKZTcvTVN0bUhvM203UW5UbjkzZjQ4eEd5UlNFRFBLaEhoRmZ5eFJPTWg3WXhjN0Q3SWZQYlpsaHhLSjZWRE9IegoxMGE2VDJsaXpjVmlCRWdMVC92cjJvSVVxV2kxQUl2WVRVYVdkQ2ZNc2QxUDRKTnlFRTdHS0NudytTUmYwem8xCitkRUJjQXAvK0x4YUlZZTVLcWdlOE13emdPQzljS256cThUa3V6SDdSeVBqemFxakQ4SGVmNXo3K0NZY1lJTGMKb3ZBRGxJQXRBb0dCQU5XTHREK3pMSUVaT1VYZE15WTE5QmNGcGlGM3dMQ0Nnb3Q2WS9DOGdTWnpTc3BRNy81cApMS1N5bmNKY01WTkR4YnBzNERjUWcrdERuWUtFbjNVRDk5UFNMZ29tOFdwMWxWR3lQV3BRNDNtTU5OckYreE9TCklSR2l0ZGo1a1BIVG5lMlBXcWY0YUhrYWN6QjJ1NHR0RmlsYVluNXZYTVVmT2NreExoVlRkWU92QW9HQkFNVHgKS0VvYnVaUEdpZmJ6UE9GcnJSSzBSMEVuS1dqWmJ4M0ZwZlBxQ21vcUJ5d2FURElScllMWFR3czZuMk9QeDh4SgpyNXNqSHZRVXkzeU1qQkgydytnSVhXMDIxQUlEeXdiRkdUcFlyS2FVU0N2bW9jQTB4SzA4aDBvQllaMEZ5ZERRCkJucVhObHJIc3l3TEtEdzEwMndmU05jaXpJWXdLZ1pwSFFtWDJuZUhBb0dCQUpaOU9veDlqMHAzWlNZNENYalAKSXZJcWQvWXo5Mllzd3lUYUhwNGpxZnhYMllnVVc5ejFiNUd0a29ITENMTytHaFVUN3pxKzk4aVBRT3dlM0dUUgpaQkF4bVdKc0tVdTJDNEdrVTZXZDFZRHQ3cjJTTWl1TG1xUmIvejBtT3lCQTJwWDBwWldqK0xRSGtNL0JqTTlvCkUrc1dtRHl6N0RPNm1yV1BaQU9CYWxwZkFvR0FjQXZjSmoyYjJXMXRkT2h5VExYY0kvWVpUQUloMXh0TjBweHUKakZVdFU3VlJtMC9pNWVHVTNBbnZXSzRqbkp0aXl1RnBYVlFmK2pJU2kydlREUzFkekJkbVFBcWZsLzNjZHArUQplTmVXY3JlT1VCdkpEdmQycGpEM3I2MFZnaWFXNll4UkExSWdoSWwxY0t0d1dzRXM1aWp1WWlmVVFNd0tQTmQwCnc4NTNadVVDZ1lFQXY5Nk9NK0NwZmJuak5RbUpYamh3VTVtZ3BJK0xVWXdncVJURU5Ramx4aXpaNGNsdVN2Y3oKdi9XSmlxQkkzZ3ZGMVprQ1AvRFJSYzBZdVFoeXM5Tkt6NkhSNFRJUXFPZ0cxTjQyQk84b0FmTU1RMFJtcVJTbQorN3ByeWtBM1QyZUE3cFNGWGdPZ0ljNFQyL0ZKWmVpNUJoOVM0K2R4aWlTcTk4R2J0ZkFUemk4PQotLS0tLUVORCBSU0EgUFJJVkFURSBLRVktLS0tLQ==
---
apiVersion: admissionregistration.k8s.io/v1
kind: ValidatingWebhookConfiguration
metadata:
  name: linkerd-sp-validator-webhook-config
  labels:
    linkerd.io/control-plane-component: destination
    linkerd.io/control-plane-ns: linkerd
webhooks:
- name: linkerd-sp-validator.linkerd.io
  namespaceSelector:
    matchExpressions:
    - key: config.linkerd.io/admission-webhooks
      operator: NotIn
      values:
      - disabled
  clientConfig:
    service:
      name: linkerd-sp-validator
      namespace: linkerd
      path: "/"
    caBundle: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSURUVENDQWpXZ0F3SUJBZ0lSQUxCY3podFBRZzhxbTVYWU4rZGVyRUV3RFFZSktvWklodmNOQVFFTEJRQXcKS3pFcE1DY0dBMVVFQXhNZ2JHbHVhMlZ5WkMxemNDMTJZV3hwWkdGMGIzSXViR2x1YTJWeVpDNXpkbU13SGhjTgpNalF4TVRFM01EZ3dPREF4V2hjTk1qVXhNVEUzTURnd09EQXhXakFyTVNrd0p3WURWUVFERXlCc2FXNXJaWEprCkxYTndMWFpoYkdsa1lYUnZjaTVzYVc1clpYSmtMbk4yWXpDQ0FTSXdEUVlKS29aSWh2Y05BUUVCQlFBRGdnRVAKQURDQ0FRb0NnZ0VCQUtSSUlDRWEwbGRpWnpPVzU2YjFuSyt0d1hFS2lCSnhsUW9jWlpFV0J5ek1jSHVwaUdhcApOY2N0VCt2YnpiR3JVM3dzNHRqL2pFeG41bDdVK0lwWkpIMmx1WG5pUjl0a0J6dDRPVjBQdGR4L293dDZldFh3Cm44cUxwTGptUDdEVmRZVkpqUXZabnFJL1pJNy9Bd0tCMngvMWlsRTdTVmlsanRRUGZtV3hhbW9tSDJSY1ZkZUwKL3o4SVZGSVE3cm5IMzhJVFFWd1ZBYitrOEVWbm5iV2t2dlhWWUdpcXhIRTdQdWc4TkM2UnZ0YXJ6KzdPTFoyQgpoZjNlR1RFeDVsUmMzSnI5bDVwMDQ4eVFTZDJ4MXFGdHN1VUlwMnZsR0ViVG1pUm43UStUaS8rTkJpVTIzc01BCjl0TTdCeURXeVhDd3N1ZnlZUXBoa2hwQ0k1SU43LzgweWtrQ0F3RUFBYU5zTUdvd0RnWURWUjBQQVFIL0JBUUQKQWdXZ01CMEdBMVVkSlFRV01CUUdDQ3NHQVFVRkJ3TUJCZ2dyQmdFRkJRY0RBakFNQmdOVkhSTUJBZjhFQWpBQQpNQ3NHQTFVZEVRUWtNQ0tDSUd4cGJtdGxjbVF0YzNBdGRtRnNhV1JoZEc5eUxteHBibXRsY21RdWMzWmpNQTBHCkNTcUdTSWIzRFFFQkN3VUFBNElCQVFCcXZBWnNaUEY2NEk4enh5TFVXVGdxOW8wMFZCU0hrcUN3VVpCK0JwQWwKQk1wTG5vOXc5MXVuN0U0QUppNms3b1JJblhWeWVwYWtUWkhPY3dxU2dGLzI1eEVZd0taeFRQTlFKRXUrN0hhVQplY3FnNWRuRTEwNG1HblpDaERTRXM4N21DaW5qUmVpT1lFcnpjYXVMdlc3bjJSenVmOFY1TUN6T3RpblRRa3FXClVrREZaNkN3NEI3VTFJNHV1c3g3SEUvU2ZGRGMzN3RrU3NvcjJueWNLSEVIT296dU04UjU1clhxUFY5NVZ4cjQKeTRSUm5jSllFcXJnakNvRlZFWm50UzVzSWhlckw3aTIwTlZ2cXFOODZ6elZXcWxIbGhCcVZZMmVOUkZNSmI4Two4dVFTQjloeFNEYzdDbG8vekJxbmhXWlJ1dGd6M0Y5M2NMOFp1SGFLVXdybAotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0t
  failurePolicy: Ignore
  admissionReviewVersions: ["v1", "v1beta1"]
  rules:
  - operations: ["CREATE", "UPDATE"]
    apiGroups: ["linkerd.io"]
    apiVersions: ["v1alpha1", "v1alpha2"]
    resources: ["serviceprofiles"]
  sideEffects: None
---
kind: Secret
apiVersion: v1
metadata:
  name: linkerd-policy-validator-k8s-tls
  namespace: linkerd
  labels:
    linkerd.io/control-plane-component: destination
    linkerd.io/control-plane-ns: linkerd
  annotations:
    linkerd.io/created-by: linkerd/cli edge-24.11.3
type: kubernetes.io/tls
data:
  tls.crt: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSURXVENDQWtHZ0F3SUJBZ0lSQUxHRm5UT1ZpOGJWMG54dW4rK2tWL1F3RFFZSktvWklodmNOQVFFTEJRQXcKTHpFdE1Dc0dBMVVFQXhNa2JHbHVhMlZ5WkMxd2IyeHBZM2t0ZG1Gc2FXUmhkRzl5TG14cGJtdGxjbVF1YzNaagpNQjRYRFRJME1URXhOekE0TURnd01Wb1hEVEkxTVRFeE56QTRNRGd3TVZvd0x6RXRNQ3NHQTFVRUF4TWtiR2x1CmEyVnlaQzF3YjJ4cFkza3RkbUZzYVdSaGRHOXlMbXhwYm10bGNtUXVjM1pqTUlJQklqQU5CZ2txaGtpRzl3MEIKQVFFRkFBT0NBUThBTUlJQkNnS0NBUUVBNUNUaWVvTlppSWZsZUNtajVGblFIbDFxWFhzYm44ejBMeDQySWxBKwo5N2p1ZFAxQU5tWlhwRjAxZkNuSFlZcnU3UDRCY280L1FscCt4bDNRbzVmNXc5cWExaUE0amtRWTdCZ2U4ZGV4CnFDMXhic3EzemlVeUtwRkJyWUdnMFF6WFdyODJOZVBsbkhCTWFlZWF1cktMbkpVQ0pDSjNOaGE2d2ViWEJiZXAKL0hSTGFGclFNUjZrRlZYZjJHOW15S1k0dG1ZYWVzM0o5N2VhVWxDSU5xakkwcU8zdzB4Z0ZPRXltWlNKN2prMQo3Q2M1cFM3clROMlkwYmc5RzV3U2VVZm5iZ29mZUFUaVpheXpwNDZyc0lxRHZtWkh1N2pqTkNPWktpak93VEZ4CkJPMHRSN0g3djJFUnFrWHgwWWRoZ2swbW90WTM0ZFRIdXpEQ2ZzdGVxcVcxMVFJREFRQUJvM0F3YmpBT0JnTlYKSFE4QkFmOEVCQU1DQmFBd0hRWURWUjBsQkJZd0ZBWUlLd1lCQlFVSEF3RUdDQ3NHQVFVRkJ3TUNNQXdHQTFVZApFd0VCL3dRQ01BQXdMd1lEVlIwUkJDZ3dKb0lrYkdsdWEyVnlaQzF3YjJ4cFkza3RkbUZzYVdSaGRHOXlMbXhwCmJtdGxjbVF1YzNaak1BMEdDU3FHU0liM0RRRUJDd1VBQTRJQkFRRGRNU1lPSk9BZ0hXd2RJZm1xdGFMOGRuenAKK0YwWk1SeStyV21EVndzLzhWQkpmeCthQVd4NHkxRW9YdnlId2JOSXlna2d4YjZ1RVRpV2VnRlhWQUNoM0VtbAp5ODhONHltNkpNeXBmcWZNa0NEdXdKOVVyTUtWbmgyRklCcWhLUWdUcnl6N0pCREQ5citHZXg5NC9rc2Q3cE9iCnFSbHR6VnJuZGRRdFpQQmdZbGFSN0J3UmxjTGFLdko5Mmx6MXBZMGZJSlB2amtITlMwazVPa2w3cStjKy9sem8KUkFSb3ByT2VmRE9GN1lxRTRXNnZoeDJaQ2VaNWl0alhxNHc2QUlKejMvc3FQa3hnRXZpN0luYkZ3ZzBrQjRCaQovZWdKcHlBQjR2UTI1RGF3SnVFQytOWkhLVGQzVzRWMEdaMnl1T050L1JrK3Z2ckpEM1dXclRpSmNrdFAKLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQ==
  tls.key: LS0tLS1CRUdJTiBSU0EgUFJJVkFURSBLRVktLS0tLQpNSUlFcFFJQkFBS0NBUUVBNUNUaWVvTlppSWZsZUNtajVGblFIbDFxWFhzYm44ejBMeDQySWxBKzk3anVkUDFBCk5tWlhwRjAxZkNuSFlZcnU3UDRCY280L1FscCt4bDNRbzVmNXc5cWExaUE0amtRWTdCZ2U4ZGV4cUMxeGJzcTMKemlVeUtwRkJyWUdnMFF6WFdyODJOZVBsbkhCTWFlZWF1cktMbkpVQ0pDSjNOaGE2d2ViWEJiZXAvSFJMYUZyUQpNUjZrRlZYZjJHOW15S1k0dG1ZYWVzM0o5N2VhVWxDSU5xakkwcU8zdzB4Z0ZPRXltWlNKN2prMTdDYzVwUzdyClROMlkwYmc5RzV3U2VVZm5iZ29mZUFUaVpheXpwNDZyc0lxRHZtWkh1N2pqTkNPWktpak93VEZ4Qk8wdFI3SDcKdjJFUnFrWHgwWWRoZ2swbW90WTM0ZFRIdXpEQ2ZzdGVxcVcxMVFJREFRQUJBb0lCQVFEWTJDSVhsazc4VVVhUApMdXppOTJhejVkQmFaOCs2MUtCblJJenBrbUkzTEtRaHVEQlhSSEVhL2FqL2llcERVVDJGTG15THlKNWg0QWZOClhaQVlYalA4cndRcWI5ZXhpUkl6SFQ0VVdoSTNLbkk5ZnhxektuR0RPaXMxMGhiYmZCd1kyZE9aNXpIdnZtRXkKNi9zS1p2Z0I3VE5xeXdPSitwS3FDRkhwMGtjVWRselp1SlAyb0c3MFAvWlhYRks5MXY3TXpMR2dId1JGT083TwpHdGhreTBnMGxuditUd01BQk92SlZoZ2o0Tmx1M0pIdzRmN29WYmJ2TTVSS09hV3VyZHlOd0JuTWVDN2RBNHI2CkVST3dPOER4UGJFemdjM0ZackJWK3ZYblhDQjR1eW1McWhJdjFHNmEzby8rWStiVHRQOG9Ec0ZoU3VOK2tCQW8KVVkzdThXY2xBb0dCQU9ZRktyRGRlQVRrdnRmLzQ4WDBtbHJ3eGZFYU96Sm5VRXI3M0hiZ3JCYnNhL2VpeVJIOQpXd2tSR0Z2amIra3JtYlpaRTFEckQ1cWJhdW41ZHU0U3AyczB5cU5sbjR4bW5sQlhvdExzRVBEemY1N3dGbnVvCnYzcmRidW1OeCtLcU9JbWFXS3lqU3VFMmVja3czQjRQT3VxczFRR3NCd3ZFdmlhay93TTc0TVhYQW9HQkFQM3AKZU5tRWtEckZBRmd3cGJtRTIxY0Z4dFVpOExZMnE2dllBSXlNSnBYbFlvQnpsVWVnakI0NDJlQThrVlAwSUQxZgpUUE1aQTdLeUtNeW51VzBiN3ljcWRtbkpCMTZRZHloY0NtcUFkZ0JXZWtSbDBNUHRNM245UzhKQUVPd0VGUHVoClpqanlQemdhZXRHNUluMkdvRWl3U0lhOWlnVFVwN1FtYmdJOXNwUXpBb0dBTVFIS3piSHgzMEVKTkNZTjFtQTkKL3NBcnZDbTFrUkNYOTlIZmIraUFZY1h2WHV4czRJdFZPUUpPYVUxMHkzNEJtdXN4aFZ6L2p4WXIyanZQVGZ2bApkWjdpeVp0ZU9lQ25QRURmclFha3VXRjN3Rm93d0JuODZlV0J1dnI5S2xyUC91bEdtVW1WSzVTYXIvWGIvLytJCnN2VXQwTlJoRCszVUFaSEh6MTJUanpNQ2dZRUE0emZGM0tsRFJFUTh2YTZ5N3lTVC8vajhhSWorN2FCWTJjdlAKR2ZibEpLaUVFRHplcnAxZUprRnJ2NzJUczVRNE1aT1IwYzFsd01pcnVCQ3ozNDdxNFpxZklxVXlBZzYzZ3hkeQpmc0g4VnVzTU9SNy94Z1VEVnJ3enlsMzRocXhVZHFXRlM1cUV0bGtENVorTjNOVFhwSlNVSW5lRkJqT2k2NVNrClJ6OGRDbjhDZ1lFQXFSYkZFTVhlTEc2L3NGdk5NcE9uRjlJVUtBbFZVeTcxK0JtdVhpa3JDNlZ4MHdvV0taOWMKM1A0b0srMkJzTHJ0L2tqVktQNFNrcjdDbXN1d2JGeDV4TFJsdW0vSzNFK3pwdzI0aFlBY2o5UzVPTGpZYVJYSQpNbkVpVm5RTFNvZVZybTV5Z25ieUdMZjZ0YjVUK2FMRlo0UDVjTzN2TnVsN2xPbTlpWElLOGdVPQotLS0tLUVORCBSU0EgUFJJVkFURSBLRVktLS0tLQ==
---
apiVersion: admissionregistration.k8s.io/v1
kind: ValidatingWebhookConfiguration
metadata:
  name: linkerd-policy-validator-webhook-config
  labels:
    linkerd.io/control-plane-component: destination
    linkerd.io/control-plane-ns: linkerd
webhooks:
- name: linkerd-policy-validator.linkerd.io
  namespaceSelector:
    matchExpressions:
    - key: config.linkerd.io/admission-webhooks
      operator: NotIn
      values:
      - disabled
  clientConfig:
    service:
      name: linkerd-policy-validator
      namespace: linkerd
      path: "/"
    caBundle: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSURXVENDQWtHZ0F3SUJBZ0lSQUxHRm5UT1ZpOGJWMG54dW4rK2tWL1F3RFFZSktvWklodmNOQVFFTEJRQXcKTHpFdE1Dc0dBMVVFQXhNa2JHbHVhMlZ5WkMxd2IyeHBZM2t0ZG1Gc2FXUmhkRzl5TG14cGJtdGxjbVF1YzNaagpNQjRYRFRJME1URXhOekE0TURnd01Wb1hEVEkxTVRFeE56QTRNRGd3TVZvd0x6RXRNQ3NHQTFVRUF4TWtiR2x1CmEyVnlaQzF3YjJ4cFkza3RkbUZzYVdSaGRHOXlMbXhwYm10bGNtUXVjM1pqTUlJQklqQU5CZ2txaGtpRzl3MEIKQVFFRkFBT0NBUThBTUlJQkNnS0NBUUVBNUNUaWVvTlppSWZsZUNtajVGblFIbDFxWFhzYm44ejBMeDQySWxBKwo5N2p1ZFAxQU5tWlhwRjAxZkNuSFlZcnU3UDRCY280L1FscCt4bDNRbzVmNXc5cWExaUE0amtRWTdCZ2U4ZGV4CnFDMXhic3EzemlVeUtwRkJyWUdnMFF6WFdyODJOZVBsbkhCTWFlZWF1cktMbkpVQ0pDSjNOaGE2d2ViWEJiZXAKL0hSTGFGclFNUjZrRlZYZjJHOW15S1k0dG1ZYWVzM0o5N2VhVWxDSU5xakkwcU8zdzB4Z0ZPRXltWlNKN2prMQo3Q2M1cFM3clROMlkwYmc5RzV3U2VVZm5iZ29mZUFUaVpheXpwNDZyc0lxRHZtWkh1N2pqTkNPWktpak93VEZ4CkJPMHRSN0g3djJFUnFrWHgwWWRoZ2swbW90WTM0ZFRIdXpEQ2ZzdGVxcVcxMVFJREFRQUJvM0F3YmpBT0JnTlYKSFE4QkFmOEVCQU1DQmFBd0hRWURWUjBsQkJZd0ZBWUlLd1lCQlFVSEF3RUdDQ3NHQVFVRkJ3TUNNQXdHQTFVZApFd0VCL3dRQ01BQXdMd1lEVlIwUkJDZ3dKb0lrYkdsdWEyVnlaQzF3YjJ4cFkza3RkbUZzYVdSaGRHOXlMbXhwCmJtdGxjbVF1YzNaak1BMEdDU3FHU0liM0RRRUJDd1VBQTRJQkFRRGRNU1lPSk9BZ0hXd2RJZm1xdGFMOGRuenAKK0YwWk1SeStyV21EVndzLzhWQkpmeCthQVd4NHkxRW9YdnlId2JOSXlna2d4YjZ1RVRpV2VnRlhWQUNoM0VtbAp5ODhONHltNkpNeXBmcWZNa0NEdXdKOVVyTUtWbmgyRklCcWhLUWdUcnl6N0pCREQ5citHZXg5NC9rc2Q3cE9iCnFSbHR6VnJuZGRRdFpQQmdZbGFSN0J3UmxjTGFLdko5Mmx6MXBZMGZJSlB2amtITlMwazVPa2w3cStjKy9sem8KUkFSb3ByT2VmRE9GN1lxRTRXNnZoeDJaQ2VaNWl0alhxNHc2QUlKejMvc3FQa3hnRXZpN0luYkZ3ZzBrQjRCaQovZWdKcHlBQjR2UTI1RGF3SnVFQytOWkhLVGQzVzRWMEdaMnl1T050L1JrK3Z2ckpEM1dXclRpSmNrdFAKLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQ==
  failurePolicy: Ignore
  admissionReviewVersions: ["v1", "v1beta1"]
  rules:
  - operations: ["CREATE", "UPDATE"]
    apiGroups: ["policy.linkerd.io"]
    apiVersions: ["*"]
    resources:
    - authorizationpolicies
    - httplocalratelimitpolicies
    - httproutes
    - networkauthentications
    - meshtlsauthentications
    - serverauthorizations
    - servers
    - egressnetworks
  - operations: ["CREATE", "UPDATE"]
    apiGroups: ["gateway.networking.k8s.io"]
    apiVersions: ["*"]
    resources:
    - httproutes
    - grpcroutes
    - tlsroutes
    - tcproutes
  sideEffects: None
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
  name: linkerd-policy
  labels:
    app.kubernetes.io/part-of: Linkerd
    linkerd.io/control-plane-component: destination
    linkerd.io/control-plane-ns: linkerd
rules:
  - apiGroups:
      - ""
    resources:
      - pods
    verbs:
      - get
      - list
      - watch
  - apiGroups:
      - apps
    resources:
      - deployments
    verbs:
      - get
  - apiGroups:
      - policy.linkerd.io
    resources:
      - authorizationpolicies
      - httplocalratelimitpolicies
      - httproutes
      - meshtlsauthentications
      - networkauthentications
      - servers
      - serverauthorizations
      - egressnetworks
    verbs:
      - get
      - list
      - watch
  - apiGroups:
      - gateway.networking.k8s.io
    resources:
      - httproutes
      - grpcroutes
      - tlsroutes
      - tcproutes
    verbs:
      - get
      - list
      - watch
  - apiGroups:
      - policy.linkerd.io
    resources:
      - httproutes/status
      - httplocalratelimitpolicies/status
      - egressnetworks/status
    verbs:
      - patch
  - apiGroups:
      - gateway.networking.k8s.io
    resources:
      - httproutes/status
      - grpcroutes/status
      - tlsroutes/status
      - tcproutes/status
    verbs:
      - patch
  - apiGroups:
      - workload.linkerd.io
    resources:
      - externalworkloads
    verbs:
      - get
      - list
      - watch
  - apiGroups:
      - coordination.k8s.io
    resources:
      - leases
    verbs:
      - create
      - get
      - patch
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: linkerd-destination-policy
  labels:
    app.kubernetes.io/part-of: Linkerd
    linkerd.io/control-plane-component: destination
    linkerd.io/control-plane-ns: linkerd
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: linkerd-policy
subjects:
  - kind: ServiceAccount
    name: linkerd-destination
    namespace: linkerd
---
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
  name: remote-discovery
  namespace: linkerd
  labels:
    app.kubernetes.io/part-of: Linkerd
    linkerd.io/control-plane-component: destination
    linkerd.io/control-plane-ns: linkerd
rules:
  - apiGroups:
      - ""
    resources:
      - secrets
    verbs:
      - get
      - list
      - watch
---
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
  name: linkerd-destination-remote-discovery
  namespace: linkerd
  labels:
    app.kubernetes.io/part-of: Linkerd
    linkerd.io/control-plane-component: destination
    linkerd.io/control-plane-ns: linkerd
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: Role
  name: remote-discovery
subjects:
  - kind: ServiceAccount
    name: linkerd-destination
    namespace: linkerd
---
###
### Heartbeat RBAC
###
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
  name: linkerd-heartbeat
  namespace: linkerd
  labels:
    linkerd.io/control-plane-ns: linkerd
rules:
- apiGroups: [""]
  resources: ["configmaps"]
  verbs: ["get"]
  resourceNames: ["linkerd-config"]
---
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
  name: linkerd-heartbeat
  namespace: linkerd
  labels:
    linkerd.io/control-plane-ns: linkerd
roleRef:
  kind: Role
  name: linkerd-heartbeat
  apiGroup: rbac.authorization.k8s.io
subjects:
- kind: ServiceAccount
  name: linkerd-heartbeat
  namespace: linkerd
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
  name: linkerd-heartbeat
  labels:
    linkerd.io/control-plane-ns: linkerd
rules:
- apiGroups: [""]
  resources: ["namespaces"]
  verbs: ["list"]
- apiGroups: ["linkerd.io"]
  resources: ["serviceprofiles"]
  verbs: ["list"]
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: linkerd-heartbeat
  labels:
    linkerd.io/control-plane-ns: linkerd
roleRef:
  kind: ClusterRole
  name: linkerd-heartbeat
  apiGroup: rbac.authorization.k8s.io
subjects:
- kind: ServiceAccount
  name: linkerd-heartbeat
  namespace: linkerd
---
kind: ServiceAccount
apiVersion: v1
metadata:
  name: linkerd-heartbeat
  namespace: linkerd
  labels:
    linkerd.io/control-plane-component: heartbeat
    linkerd.io/control-plane-ns: linkerd

---
###
### Proxy Injector RBAC
###
kind: ClusterRole
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  name: linkerd-linkerd-proxy-injector
  labels:
    linkerd.io/control-plane-component: proxy-injector
    linkerd.io/control-plane-ns: linkerd
rules:
- apiGroups: [""]
  resources: ["events"]
  verbs: ["create", "patch"]
- apiGroups: [""]
  resources: ["namespaces", "replicationcontrollers"]
  verbs: ["list", "get", "watch"]
- apiGroups: [""]
  resources: ["pods"]
  verbs: ["list", "watch"]
- apiGroups: ["extensions", "apps"]
  resources: ["deployments", "replicasets", "daemonsets", "statefulsets"]
  verbs: ["list", "get", "watch"]
- apiGroups: ["extensions", "batch"]
  resources: ["cronjobs", "jobs"]
  verbs: ["list", "get", "watch"]
---
kind: ClusterRoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  name: linkerd-linkerd-proxy-injector
  labels:
    linkerd.io/control-plane-component: proxy-injector
    linkerd.io/control-plane-ns: linkerd
subjects:
- kind: ServiceAccount
  name: linkerd-proxy-injector
  namespace: linkerd
  apiGroup: ""
roleRef:
  kind: ClusterRole
  name: linkerd-linkerd-proxy-injector
  apiGroup: rbac.authorization.k8s.io
---
kind: ServiceAccount
apiVersion: v1
metadata:
  name: linkerd-proxy-injector
  namespace: linkerd
  labels:
    linkerd.io/control-plane-component: proxy-injector
    linkerd.io/control-plane-ns: linkerd
---
kind: Secret
apiVersion: v1
metadata:
  name: linkerd-proxy-injector-k8s-tls
  namespace: linkerd
  labels:
    linkerd.io/control-plane-component: proxy-injector
    linkerd.io/control-plane-ns: linkerd
  annotations:
    linkerd.io/created-by: linkerd/cli edge-24.11.3
type: kubernetes.io/tls
data:
  tls.crt: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSURVakNDQWpxZ0F3SUJBZ0lRVHZvZFU1L29naFRtS213OUxFSzREVEFOQmdrcWhraUc5dzBCQVFzRkFEQXQKTVNzd0tRWURWUVFERXlKc2FXNXJaWEprTFhCeWIzaDVMV2x1YW1WamRHOXlMbXhwYm10bGNtUXVjM1pqTUI0WApEVEkwTVRFeE56QTRNRGd3TVZvWERUSTFNVEV4TnpBNE1EZ3dNVm93TFRFck1Da0dBMVVFQXhNaWJHbHVhMlZ5ClpDMXdjbTk0ZVMxcGJtcGxZM1J2Y2k1c2FXNXJaWEprTG5OMll6Q0NBU0l3RFFZSktvWklodmNOQVFFQkJRQUQKZ2dFUEFEQ0NBUW9DZ2dFQkFPV3lJWFF1SFpuR2FDNGlRUUhFT3F5WjdYMWxhTldKZnp0c2FpeDhISEQya29CVgptTlNsZWFKRnB6RkxwSko5alV4Qk1CL1UwUml3SnR5bDB4ODh2M1FUbWIrYk1tNWtRbEhxQjc4UzIvekdMR3QrCjRra0VjbC9yRmtlWTB2VzV5QkMrNndXc1kvbFhSNXl4MHlJME82eHkrQ29rN1p3Q3I5TWZXcmsxVWRkY0NCQ2UKY1c0R2dZN1R6TzFjK2ZjRFVscXQ4VERYREtlWkM1V3Uva2NLL2d2SW1uTXBxcVV4UmhSRWwrdE9YTGE2ZFV3SgpyY1Yza3BqVnpPV3pKeEZ2WnpYNno5N3BIYTh6R3o0SDFnZmFreDhQNDJrOFN5U3RCbjljMVVoME14ZFAxSUhKClZRUkJ3a1RBZVZDR1gxZW9yMDMvMnZKdkZYeVpTaDVCMk5Tb3BkMENBd0VBQWFOdU1Hd3dEZ1lEVlIwUEFRSC8KQkFRREFnV2dNQjBHQTFVZEpRUVdNQlFHQ0NzR0FRVUZCd01CQmdnckJnRUZCUWNEQWpBTUJnTlZIUk1CQWY4RQpBakFBTUMwR0ExVWRFUVFtTUNTQ0lteHBibXRsY21RdGNISnZlSGt0YVc1cVpXTjBiM0l1YkdsdWEyVnlaQzV6CmRtTXdEUVlKS29aSWh2Y05BUUVMQlFBRGdnRUJBTDRicXMxZTdwaFozRlVUaUZmWnlGNFN6clQ2ckVDRWZzYUUKQW5haGZPK0ZqeGMzRGhnNURtdHB0MjBtSWdQTVBMY09PNy9rTXZiVnFlb3d5MnUvdGxnY2l6NkxtNlVzNG1nYQpNRVdUdDdsQ2c0dVZBZlhvQVlaOExZYzJVZ292UGZ3STR3Q2RaeXgydjRycUpwZm9UN200Q29pRDI3TFp2VEVrCno4bGxVZ0ZTQnp0RDFXbEo0blVqdXNrWVJqeGxzVjFIeVdDL3RJN1FWUi9KQUZaQWNMUnZXaWRLZy9YR244TEIKRDAyTmoyWE1xaXFORHpNSFMyNnpPbkZEZFcyR3pPckZNOEFZRWNsZHVvS3J5TVZUN1NhdTRwZktUV1JhamlvSQpGdmkvZE9YVE5XZFRnUzdRMnBwVXFMRjhqVTZYNVVVZDV5Tk5OcE83SnFUMkl4bzVyLzQ9Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0=
  tls.key: LS0tLS1CRUdJTiBSU0EgUFJJVkFURSBLRVktLS0tLQpNSUlFcEFJQkFBS0NBUUVBNWJJaGRDNGRtY1pvTGlKQkFjUTZySm50ZldWbzFZbC9PMnhxTEh3Y2NQYVNnRldZCjFLVjVva1duTVV1a2tuMk5URUV3SDlUUkdMQW0zS1hUSHp5L2RCT1p2NXN5Ym1SQ1Vlb0h2eExiL01Zc2EzN2kKU1FSeVgrc1dSNWpTOWJuSUVMN3JCYXhqK1ZkSG5MSFRJalE3ckhMNEtpVHRuQUt2MHg5YXVUVlIxMXdJRUo1eApiZ2FCanRQTTdWejU5d05TV3EzeE1OY01wNWtMbGE3K1J3citDOGlhY3ltcXBURkdGRVNYNjA1Y3RycDFUQW10CnhYZVNtTlhNNWJNbkVXOW5OZnJQM3VrZHJ6TWJQZ2ZXQjlxVEh3L2phVHhMSkswR2YxelZTSFF6RjAvVWdjbFYKQkVIQ1JNQjVVSVpmVjZpdlRmL2E4bThWZkpsS0hrSFkxS2lsM1FJREFRQUJBb0lCQUN5TnFMK0lVbVdKZnB1MApPVGZHZ0RzS2dHNWFSVU5tTUMrdWo4bWhLVU1nRUxxajM4a2ZiOEJ5RWtRVmtBNTZHL1kyanNjZDJKRVpXZkJpCm1kanRSNVdVVjdZNnZFVjlYUC9XalRvYXhtRDViNVJLUUVvNWVwWHdXNW4zb3JQWEhWOWlLT1FvMUJ1Qk9uckMKWTFtM0Yvd1RNTis3MmZydzZubmhFdy9wcjc0OTFaQnl2VTg3WTNWZXMra2tkYTFKTW0xVUFrVk9VcU1KNm5QWAoxT3ZSTXdaSU5uSnpKSHUreWp5cStyNDNZZGhNWVNFdGhBdTJLbG41T1lXcUZweUxJYzNJaCtyZkZvUTdka0VSCkVMTXpWNU5ncVhaMFZjcHIrWnNkUWRJYmFFS0diYndsamhyRjVsUldwd21GbnVqT2NKNmJuNjZQSHR0VWIwUmMKMjA5MDFHRUNnWUVBNmVDeGxnUGlGSmhFc0hQSVVSc2tHNEpwYXpJNThZeTZvSG9pcm5UZVpaRCswVldFczBzMQpJM3RZY25OQVNGU3FJQTlMcEt1OS9tYytTYXFLZTAyQlA4d1p3TFdQUjZ4c2JkT0tSVmwwQzdmTmMwOVp4T2JjCjBadHAzQ2pnWjh6VXArT1IzQ1ZUbEEwaERaV2tjWElhRXoxdnFVYTBtQ29YNllzV1hiSjY0SWNDZ1lFQSsyd3MKWU83aGd3VUQ0M0lwaS94RytTdVhnSDJOOW9HUVZPdDk5VFI4MmIwWmNFcTQ5dzA3VkhpWWl4cVIzVXBxcjRHNQpRaHVkR2hKRDA4NnBKaExXZ1NIUkorZFJHN1Fkb0Iwc0s1U3o5enppS0wrTVB3NlN2bFZrU3lQU2F0UkJLNWw2CmNwUzlnUHRFcGpWa1FiUlB2N3FiZ1lsR2kwb1B2bndNWk5CVlUzc0NnWUVBa2JmV3pkSXpqWU5sNE03eTgxM0cKdklFZnI1T0d1TEpuSVUrWHhqeTR5RzF6NXZleWk0ZURYMDBkeVlsM2R0bVJlaEl0bmpjSFZMZjgvaWNNeTFCNgpCRWJsa01WT3RXaC8wbG5vSDlkaFQxL0EyV1NLV1AxQ2ZqS24zVzEyakJYNk5YUzd6MzlPT01PSllZNW4rK3NNCnhnb1VSVkx4ZUpGWmZzQ1RPZVBYWFljQ2dZRUE0UGFaZnVJL3hndm12c3lYZ0RuckIyaUoxdDZBOStCV1ZLV2gKdnBXSVlRdGloNmRVZVRuTnJIZDdobnZ2cUNHOTgrd081NmZ0bWpaZG1sZC80aUZZN1pKa28xL0dveE0ycnQxcgplRk5GOUNMMStaL3F6VUVzN0VGYnpCL3hWc1UweXQ0NVFlejA0MFB3MlFkTS9iMW8zaFVLcjQwMUljelM2WTMxClNQOWdXYUVDZ1lCN1NIQ0ZWay82Q2ZUYXl3N0hla2NBYlhVdzUyZVlwTzhuVWNhTzd0UUhyVWZxWFBxeEFwQzQKUktabmFYSmtXV0xDaWdoZk9TeWhwblJxS2wyVUF6MkZFN2xsMWhpejVPTjhWbHhPVFJmeXhySXBrTnZkMHVMUApJMHRVMExlVWhMRmliYlhuK2Z4M3duU1kxbmxrdW5YRXFXYVJaVC9NTE5XcXF2WTZGQVZCQlE9PQotLS0tLUVORCBSU0EgUFJJVkFURSBLRVktLS0tLQ==
---
apiVersion: admissionregistration.k8s.io/v1
kind: MutatingWebhookConfiguration
metadata:
  name: linkerd-proxy-injector-webhook-config
  labels:
    linkerd.io/control-plane-component: proxy-injector
    linkerd.io/control-plane-ns: linkerd
webhooks:
- name: linkerd-proxy-injector.linkerd.io
  namespaceSelector:
    matchExpressions:
    - key: config.linkerd.io/admission-webhooks
      operator: NotIn
      values:
      - disabled
    - key: kubernetes.io/metadata.name
      operator: NotIn
      values:
      - kube-system
      - cert-manager
  objectSelector:
    null
  clientConfig:
    service:
      name: linkerd-proxy-injector
      namespace: linkerd
      path: "/"
    caBundle: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSURVakNDQWpxZ0F3SUJBZ0lRVHZvZFU1L29naFRtS213OUxFSzREVEFOQmdrcWhraUc5dzBCQVFzRkFEQXQKTVNzd0tRWURWUVFERXlKc2FXNXJaWEprTFhCeWIzaDVMV2x1YW1WamRHOXlMbXhwYm10bGNtUXVjM1pqTUI0WApEVEkwTVRFeE56QTRNRGd3TVZvWERUSTFNVEV4TnpBNE1EZ3dNVm93TFRFck1Da0dBMVVFQXhNaWJHbHVhMlZ5ClpDMXdjbTk0ZVMxcGJtcGxZM1J2Y2k1c2FXNXJaWEprTG5OMll6Q0NBU0l3RFFZSktvWklodmNOQVFFQkJRQUQKZ2dFUEFEQ0NBUW9DZ2dFQkFPV3lJWFF1SFpuR2FDNGlRUUhFT3F5WjdYMWxhTldKZnp0c2FpeDhISEQya29CVgptTlNsZWFKRnB6RkxwSko5alV4Qk1CL1UwUml3SnR5bDB4ODh2M1FUbWIrYk1tNWtRbEhxQjc4UzIvekdMR3QrCjRra0VjbC9yRmtlWTB2VzV5QkMrNndXc1kvbFhSNXl4MHlJME82eHkrQ29rN1p3Q3I5TWZXcmsxVWRkY0NCQ2UKY1c0R2dZN1R6TzFjK2ZjRFVscXQ4VERYREtlWkM1V3Uva2NLL2d2SW1uTXBxcVV4UmhSRWwrdE9YTGE2ZFV3SgpyY1Yza3BqVnpPV3pKeEZ2WnpYNno5N3BIYTh6R3o0SDFnZmFreDhQNDJrOFN5U3RCbjljMVVoME14ZFAxSUhKClZRUkJ3a1RBZVZDR1gxZW9yMDMvMnZKdkZYeVpTaDVCMk5Tb3BkMENBd0VBQWFOdU1Hd3dEZ1lEVlIwUEFRSC8KQkFRREFnV2dNQjBHQTFVZEpRUVdNQlFHQ0NzR0FRVUZCd01CQmdnckJnRUZCUWNEQWpBTUJnTlZIUk1CQWY4RQpBakFBTUMwR0ExVWRFUVFtTUNTQ0lteHBibXRsY21RdGNISnZlSGt0YVc1cVpXTjBiM0l1YkdsdWEyVnlaQzV6CmRtTXdEUVlKS29aSWh2Y05BUUVMQlFBRGdnRUJBTDRicXMxZTdwaFozRlVUaUZmWnlGNFN6clQ2ckVDRWZzYUUKQW5haGZPK0ZqeGMzRGhnNURtdHB0MjBtSWdQTVBMY09PNy9rTXZiVnFlb3d5MnUvdGxnY2l6NkxtNlVzNG1nYQpNRVdUdDdsQ2c0dVZBZlhvQVlaOExZYzJVZ292UGZ3STR3Q2RaeXgydjRycUpwZm9UN200Q29pRDI3TFp2VEVrCno4bGxVZ0ZTQnp0RDFXbEo0blVqdXNrWVJqeGxzVjFIeVdDL3RJN1FWUi9KQUZaQWNMUnZXaWRLZy9YR244TEIKRDAyTmoyWE1xaXFORHpNSFMyNnpPbkZEZFcyR3pPckZNOEFZRWNsZHVvS3J5TVZUN1NhdTRwZktUV1JhamlvSQpGdmkvZE9YVE5XZFRnUzdRMnBwVXFMRjhqVTZYNVVVZDV5Tk5OcE83SnFUMkl4bzVyLzQ9Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0=
  failurePolicy: Ignore
  admissionReviewVersions: ["v1", "v1beta1"]
  rules:
  - operations: [ "CREATE" ]
    apiGroups: [""]
    apiVersions: ["v1"]
    resources: ["pods", "services"]
    scope: "Namespaced"
  sideEffects: None
  timeoutSeconds: 10
---
kind: ConfigMap
apiVersion: v1
metadata:
  name: linkerd-config
  namespace: linkerd
  labels:
    linkerd.io/control-plane-component: controller
    linkerd.io/control-plane-ns: linkerd
  annotations:
    linkerd.io/created-by: linkerd/cli edge-24.11.3
data:
  linkerd-crds-chart-version: linkerd-crds-1.0.0-edge
  values: |
    cliVersion: linkerd/cli edge-24.11.3
    clusterDomain: cluster.local
    clusterNetworks: 10.0.0.0/8,100.64.0.0/10,172.16.0.0/12,192.168.0.0/16,fd00::/8
    cniEnabled: false
    controlPlaneTracing: false
    controlPlaneTracingNamespace: linkerd-jaeger
    controller:
      podDisruptionBudget:
        maxUnavailable: 1
    controllerGID: -1
    controllerImage: cr.l5d.io/linkerd/controller
    controllerLogFormat: plain
    controllerLogLevel: info
    controllerReplicas: 1
    controllerUID: 2103
    debugContainer:
      image:
        name: cr.l5d.io/linkerd/debug
        pullPolicy: ""
        version: edge-24.11.3
    deploymentStrategy:
      rollingUpdate:
        maxSurge: 25%
        maxUnavailable: 25%
    destinationController:
      livenessProbe:
        timeoutSeconds: 1
      meshedHttp2ClientProtobuf:
        keep_alive:
          interval:
            seconds: 10
          timeout:
            seconds: 3
          while_idle: true
      readinessProbe:
        timeoutSeconds: 1
    destinationProxyResources: null
    destinationResources: null
    disableHeartBeat: false
    disableIPv6: true
    egress:
      globalEgressNetworkNamespace: linkerd-egress
    enableEndpointSlices: true
    enableH2Upgrade: true
    enablePodAntiAffinity: false
    enablePodDisruptionBudget: false
    heartbeat: null
    heartbeatResources: null
    heartbeatSchedule: ""
    highAvailability: false
    identity:
      additionalEnv: null
      experimentalEnv: null
      externalCA: false
      issuer:
        clockSkewAllowance: 20s
        issuanceLifetime: 24h0m0s
        scheme: linkerd.io/tls
        tls:
          crtPEM: |
            -----BEGIN CERTIFICATE-----
            MIIBhzCCAS6gAwIBAgIBATAKBggqhkjOPQQDAjAcMRowGAYDVQQDExFpZGVudGl0
            eS5saW5rZXJkLjAeFw0yNDExMTcwODA3NTFaFw0yNTExMTcwODA4MTFaMBwxGjAY
            BgNVBAMTEWlkZW50aXR5LmxpbmtlcmQuMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcD
            QgAEnsuvC9erYZvC2oW8jZqZPFyKcqcyALWbZV2IWvCuXKtv3CNd1jpYaLhfDzoG
            WMmY5e/gdkGVpmD8344fmO32JKNhMF8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdJQQW
            MBQGCCsGAQUFBwMBBggrBgEFBQcDAjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQW
            BBTjNkyUznZ18g/HwiunnHOquogyQDAKBggqhkjOPQQDAgNHADBEAiBUO1jdJY0C
            A16G8ryBwBeFrKmZey81Pk6tOqxK/0QVTwIgIZ2BCUmVPM3Ue5nIF/7tdDup05cw
            jHsp6B4/lrA7mrI=
            -----END CERTIFICATE-----
      kubeAPI:
        clientBurst: 200
        clientQPS: 100
      serviceAccountTokenProjection: true
    identityProxyResources: null
    identityResources: null
    identityTrustAnchorsPEM: |
      -----BEGIN CERTIFICATE-----
      MIIBhzCCAS6gAwIBAgIBATAKBggqhkjOPQQDAjAcMRowGAYDVQQDExFpZGVudGl0
      eS5saW5rZXJkLjAeFw0yNDExMTcwODA3NTFaFw0yNTExMTcwODA4MTFaMBwxGjAY
      BgNVBAMTEWlkZW50aXR5LmxpbmtlcmQuMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcD
      QgAEnsuvC9erYZvC2oW8jZqZPFyKcqcyALWbZV2IWvCuXKtv3CNd1jpYaLhfDzoG
      WMmY5e/gdkGVpmD8344fmO32JKNhMF8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdJQQW
      MBQGCCsGAQUFBwMBBggrBgEFBQcDAjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQW
      BBTjNkyUznZ18g/HwiunnHOquogyQDAKBggqhkjOPQQDAgNHADBEAiBUO1jdJY0C
      A16G8ryBwBeFrKmZey81Pk6tOqxK/0QVTwIgIZ2BCUmVPM3Ue5nIF/7tdDup05cw
      jHsp6B4/lrA7mrI=
      -----END CERTIFICATE-----
    identityTrustDomain: cluster.local
    imagePullPolicy: IfNotPresent
    imagePullSecrets: []
    linkerdVersion: edge-24.11.3
    networkValidator:
      connectAddr: ""
      enableSecurityContext: true
      listenAddr: ""
      logFormat: plain
      logLevel: debug
      timeout: 10s
    nodeAffinity: null
    nodeSelector:
      kubernetes.io/os: linux
    podAnnotations: {}
    podLabels: {}
    podMonitor:
      controller:
        enabled: true
        namespaceSelector: |
          matchNames:
            - {{ .Release.Namespace }}
            - linkerd-viz
            - linkerd-jaeger
      enabled: false
      proxy:
        enabled: true
      scrapeInterval: 10s
      scrapeTimeout: 10s
      serviceMirror:
        enabled: true
    policyController:
      image:
        name: cr.l5d.io/linkerd/policy-controller
        pullPolicy: ""
        version: ""
      logLevel: info
      probeNetworks:
      - 0.0.0.0/0
      - ::/0
      resources:
        cpu:
          limit: ""
          request: ""
        ephemeral-storage:
          limit: ""
          request: ""
        memory:
          limit: ""
          request: ""
    policyValidator:
      caBundle: ""
      crtPEM: ""
      externalSecret: false
      injectCaFrom: ""
      injectCaFromSecret: ""
      namespaceSelector:
        matchExpressions:
        - key: config.linkerd.io/admission-webhooks
          operator: NotIn
          values:
          - disabled
    priorityClassName: ""
    profileValidator:
      caBundle: ""
      crtPEM: ""
      externalSecret: false
      injectCaFrom: ""
      injectCaFromSecret: ""
      namespaceSelector:
        matchExpressions:
        - key: config.linkerd.io/admission-webhooks
          operator: NotIn
          values:
          - disabled
    prometheusUrl: ""
    proxy:
      accessLog: ""
      additionalEnv: null
      await: true
      capabilities: null
      control:
        streams:
          idleTimeout: 5m
          initialTimeout: 3s
          lifetime: 1h
      defaultInboundPolicy: all-unauthenticated
      disableInboundProtocolDetectTimeout: false
      disableOutboundProtocolDetectTimeout: false
      enableExternalProfiles: false
      enableShutdownEndpoint: false
      experimentalEnv: null
      gid: -1
      image:
        name: cr.l5d.io/linkerd/proxy
        pullPolicy: ""
        version: ""
      inbound:
        server:
          http2:
            keepAliveInterval: 10s
            keepAliveTimeout: 3s
      inboundConnectTimeout: 100ms
      inboundDiscoveryCacheUnusedTimeout: 90s
      isGateway: false
      isIngress: false
      livenessProbe:
        initialDelaySeconds: 10
        timeoutSeconds: 1
      logFormat: plain
      logHTTPHeaders: "off"
      logLevel: warn,linkerd=info,hickory=error
      nativeSidecar: false
      opaquePorts: 25,587,3306,4444,5432,6379,9300,11211
      outbound:
        server:
          http2:
            keepAliveInterval: 10s
            keepAliveTimeout: 3s
      outboundConnectTimeout: 1000ms
      outboundDiscoveryCacheUnusedTimeout: 5s
      podInboundPorts: ""
      ports:
        admin: 4191
        control: 4190
        inbound: 4143
        outbound: 4140
      readinessProbe:
        initialDelaySeconds: 2
        timeoutSeconds: 1
      requireIdentityOnInboundPorts: ""
      resources:
        cpu:
          limit: ""
          request: ""
        ephemeral-storage:
          limit: ""
          request: ""
        memory:
          limit: ""
          request: ""
      saMountPath: null
      shutdownGracePeriod: ""
      startupProbe:
        failureThreshold: 120
        initialDelaySeconds: 0
        periodSeconds: 1
      uid: 2102
      waitBeforeExitSeconds: 0
    proxyContainerName: linkerd-proxy
    proxyInit:
      capabilities: null
      closeWaitTimeoutSecs: 0
      ignoreInboundPorts: 4567,4568
      ignoreOutboundPorts: 4567,4568
      image:
        name: cr.l5d.io/linkerd/proxy-init
        pullPolicy: ""
        version: v2.4.1
      iptablesMode: legacy
      kubeAPIServerPorts: 443,6443
      logFormat: ""
      logLevel: ""
      privileged: false
      resources: null
      runAsGroup: 65534
      runAsRoot: false
      runAsUser: 65534
      saMountPath: null
      skipSubnets: ""
      xtMountPath:
        mountPath: /run
        name: linkerd-proxy-init-xtables-lock
        readOnly: false
    proxyInjector:
      additionalEnv: null
      caBundle: ""
      crtPEM: ""
      experimentalEnv: null
      externalSecret: false
      injectCaFrom: ""
      injectCaFromSecret: ""
      namespaceSelector:
        matchExpressions:
        - key: config.linkerd.io/admission-webhooks
          operator: NotIn
          values:
          - disabled
        - key: kubernetes.io/metadata.name
          operator: NotIn
          values:
          - kube-system
          - cert-manager
    proxyInjectorProxyResources: null
    proxyInjectorResources: null
    revisionHistoryLimit: 10
    spValidator:
      livenessProbe:
        timeoutSeconds: 1
      readinessProbe:
        timeoutSeconds: 1
    tolerations: null
    webhookFailurePolicy: Ignore
---
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
  labels:
    linkerd.io/control-plane-ns: linkerd
  annotations:
    linkerd.io/created-by: linkerd/cli edge-24.11.3
  name: ext-namespace-metadata-linkerd-config
  namespace: linkerd
rules:
- apiGroups: [""]
  resources: ["configmaps"]
  verbs: ["get"]
  resourceNames: ["linkerd-config"]
---
###
### Identity Controller Service
###
kind: Secret
apiVersion: v1
metadata:
  name: linkerd-identity-issuer
  namespace: linkerd
  labels:
    linkerd.io/control-plane-component: identity
    linkerd.io/control-plane-ns: linkerd
  annotations:
    linkerd.io/created-by: linkerd/cli edge-24.11.3
data:
  crt.pem: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUJoekNDQVM2Z0F3SUJBZ0lCQVRBS0JnZ3Foa2pPUFFRREFqQWNNUm93R0FZRFZRUURFeEZwWkdWdWRHbDAKZVM1c2FXNXJaWEprTGpBZUZ3MHlOREV4TVRjd09EQTNOVEZhRncweU5URXhNVGN3T0RBNE1URmFNQnd4R2pBWQpCZ05WQkFNVEVXbGtaVzUwYVhSNUxteHBibXRsY21RdU1Ga3dFd1lIS29aSXpqMENBUVlJS29aSXpqMERBUWNEClFnQUVuc3V2QzllclladkMyb1c4alpxWlBGeUtjcWN5QUxXYlpWMklXdkN1WEt0djNDTmQxanBZYUxoZkR6b0cKV01tWTVlL2dka0dWcG1EODM0NGZtTzMySktOaE1GOHdEZ1lEVlIwUEFRSC9CQVFEQWdFR01CMEdBMVVkSlFRVwpNQlFHQ0NzR0FRVUZCd01CQmdnckJnRUZCUWNEQWpBUEJnTlZIUk1CQWY4RUJUQURBUUgvTUIwR0ExVWREZ1FXCkJCVGpOa3lVem5aMThnL0h3aXVubkhPcXVvZ3lRREFLQmdncWhrak9QUVFEQWdOSEFEQkVBaUJVTzFqZEpZMEMKQTE2RzhyeUJ3QmVGckttWmV5ODFQazZ0T3F4Sy8wUVZUd0lnSVoyQkNVbVZQTTNVZTVuSUYvN3RkRHVwMDVjdwpqSHNwNkI0L2xyQTdtckk9Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0=
  key.pem: LS0tLS1CRUdJTiBFQyBQUklWQVRFIEtFWS0tLS0tCk1IY0NBUUVFSUFPeUorNXJWYnFsbjI2S29hL2Y2UHFIR2hwMXoxc0VJN080OEZYSlNxTnZvQW9HQ0NxR1NNNDkKQXdFSG9VUURRZ0FFbnN1dkM5ZXJZWnZDMm9XOGpacVpQRnlLY3FjeUFMV2JaVjJJV3ZDdVhLdHYzQ05kMWpwWQphTGhmRHpvR1dNbVk1ZS9nZGtHVnBtRDgzNDRmbU8zMkpBPT0KLS0tLS1FTkQgRUMgUFJJVkFURSBLRVktLS0tLQ==
---
kind: ConfigMap
apiVersion: v1
metadata:
  name: linkerd-identity-trust-roots
  namespace: linkerd
  labels:
    linkerd.io/control-plane-component: identity
    linkerd.io/control-plane-ns: linkerd
  annotations:
    linkerd.io/created-by: linkerd/cli edge-24.11.3
data:
  ca-bundle.crt: |-
    -----BEGIN CERTIFICATE-----
    MIIBhzCCAS6gAwIBAgIBATAKBggqhkjOPQQDAjAcMRowGAYDVQQDExFpZGVudGl0
    eS5saW5rZXJkLjAeFw0yNDExMTcwODA3NTFaFw0yNTExMTcwODA4MTFaMBwxGjAY
    BgNVBAMTEWlkZW50aXR5LmxpbmtlcmQuMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcD
    QgAEnsuvC9erYZvC2oW8jZqZPFyKcqcyALWbZV2IWvCuXKtv3CNd1jpYaLhfDzoG
    WMmY5e/gdkGVpmD8344fmO32JKNhMF8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdJQQW
    MBQGCCsGAQUFBwMBBggrBgEFBQcDAjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQW
    BBTjNkyUznZ18g/HwiunnHOquogyQDAKBggqhkjOPQQDAgNHADBEAiBUO1jdJY0C
    A16G8ryBwBeFrKmZey81Pk6tOqxK/0QVTwIgIZ2BCUmVPM3Ue5nIF/7tdDup05cw
    jHsp6B4/lrA7mrI=
    -----END CERTIFICATE-----
---
kind: Service
apiVersion: v1
metadata:
  name: linkerd-identity
  namespace: linkerd
  labels:
    linkerd.io/control-plane-component: identity
    linkerd.io/control-plane-ns: linkerd
  annotations:
    linkerd.io/created-by: linkerd/cli edge-24.11.3
spec:
  type: ClusterIP
  selector:
    linkerd.io/control-plane-component: identity
  ports:
  - name: grpc
    port: 8080
    targetPort: 8080
---
kind: Service
apiVersion: v1
metadata:
  name: linkerd-identity-headless
  namespace: linkerd
  labels:
    linkerd.io/control-plane-component: identity
    linkerd.io/control-plane-ns: linkerd
  annotations:
    linkerd.io/created-by: linkerd/cli edge-24.11.3
spec:
  clusterIP: None
  selector:
    linkerd.io/control-plane-component: identity
  ports:
  - name: grpc
    port: 8080
    targetPort: 8080
---

apiVersion: apps/v1
kind: Deployment
metadata:
  annotations:
    linkerd.io/created-by: linkerd/cli edge-24.11.3
  labels:
    app.kubernetes.io/name: identity
    app.kubernetes.io/part-of: Linkerd
    app.kubernetes.io/version: edge-24.11.3
    linkerd.io/control-plane-component: identity
    linkerd.io/control-plane-ns: linkerd
  name: linkerd-identity
  namespace: linkerd
spec:
  replicas: 1
  revisionHistoryLimit: 10
  selector:
    matchLabels:
      linkerd.io/control-plane-component: identity
      linkerd.io/control-plane-ns: linkerd
      linkerd.io/proxy-deployment: linkerd-identity
  strategy:
    rollingUpdate:
      maxSurge: 25%
      maxUnavailable: 25%
  template:
    metadata:
      annotations:
        linkerd.io/created-by: linkerd/cli edge-24.11.3
        linkerd.io/proxy-version: edge-24.11.3
        cluster-autoscaler.kubernetes.io/safe-to-evict: "true"
        linkerd.io/trust-root-sha256: 6c06d533f290349057c93fac96a55ff814f179d2467c2fd47f961594c840a6f3
        config.linkerd.io/default-inbound-policy: "all-unauthenticated"
      labels:
        linkerd.io/control-plane-component: identity
        linkerd.io/control-plane-ns: linkerd
        linkerd.io/workload-ns: linkerd
        linkerd.io/proxy-deployment: linkerd-identity
    spec:
      nodeSelector:
        kubernetes.io/os: linux
      
      automountServiceAccountToken: false
      containers:
      - args:
        - identity
        - -log-level=info
        - -log-format=plain
        - -controller-namespace=linkerd
        - -identity-trust-domain=cluster.local
        - -identity-issuance-lifetime=24h0m0s
        - -identity-clock-skew-allowance=20s
        - -identity-scheme=linkerd.io/tls
        - -enable-pprof=false
        - -kube-apiclient-qps=100
        - -kube-apiclient-burst=200
        env:
        - name: LINKERD_DISABLED
          value: "linkerd-await cannot block the identity controller"
        image: cr.l5d.io/linkerd/controller:edge-24.11.3
        imagePullPolicy: IfNotPresent
        livenessProbe:
          httpGet:
            path: /ping
            port: 9990
          initialDelaySeconds: 10
        name: identity
        ports:
        - containerPort: 8080
          name: grpc
        - containerPort: 9990
          name: admin-http
        readinessProbe:
          failureThreshold: 7
          httpGet:
            path: /ready
            port: 9990
        securityContext:
          capabilities:
            drop:
            - ALL
          readOnlyRootFilesystem: true
          runAsNonRoot: true
          runAsUser: 2103
          allowPrivilegeEscalation: false
          seccompProfile:
            type: RuntimeDefault
        volumeMounts:
        - mountPath: /var/run/linkerd/identity/issuer
          name: identity-issuer
        - mountPath: /var/run/linkerd/identity/trust-roots/
          name: trust-roots
        - mountPath: /var/run/secrets/kubernetes.io/serviceaccount
          name: kube-api-access
          readOnly: true
      - env:
        - name: _pod_name
          valueFrom:
            fieldRef:
              fieldPath: metadata.name
        - name: _pod_ns
          valueFrom:
            fieldRef:
              fieldPath: metadata.namespace
        - name: _pod_nodeName
          valueFrom:
            fieldRef:
              fieldPath: spec.nodeName
        - name: LINKERD2_PROXY_INBOUND_PORTS_REQUIRE_TLS
          value: "8080"
        - name: LINKERD2_PROXY_SHUTDOWN_ENDPOINT_ENABLED
          value: "false"
        - name: LINKERD2_PROXY_LOG
          value: "warn,linkerd=info,hickory=error,[{headers}]=off,[{request}]=off"
        - name: LINKERD2_PROXY_LOG_FORMAT
          value: "plain"
        - name: LINKERD2_PROXY_DESTINATION_SVC_ADDR
          value: linkerd-dst-headless.linkerd.svc.cluster.local.:8086
        - name: LINKERD2_PROXY_DESTINATION_PROFILE_NETWORKS
          value: "10.0.0.0/8,100.64.0.0/10,172.16.0.0/12,192.168.0.0/16,fd00::/8"
        - name: LINKERD2_PROXY_POLICY_SVC_ADDR
          value: linkerd-policy.linkerd.svc.cluster.local.:8090
        - name: LINKERD2_PROXY_POLICY_WORKLOAD
          value: |
            {"ns":"$(_pod_ns)", "pod":"$(_pod_name)"}
        - name: LINKERD2_PROXY_INBOUND_DEFAULT_POLICY
          value: all-unauthenticated
        - name: LINKERD2_PROXY_POLICY_CLUSTER_NETWORKS
          value: "10.0.0.0/8,100.64.0.0/10,172.16.0.0/12,192.168.0.0/16,fd00::/8"
        - name: LINKERD2_PROXY_CONTROL_STREAM_INITIAL_TIMEOUT
          value: "3s"
        - name: LINKERD2_PROXY_CONTROL_STREAM_IDLE_TIMEOUT
          value: "5m"
        - name: LINKERD2_PROXY_CONTROL_STREAM_LIFETIME
          value: "1h"
        - name: LINKERD2_PROXY_INBOUND_CONNECT_TIMEOUT
          value: "100ms"
        - name: LINKERD2_PROXY_OUTBOUND_CONNECT_TIMEOUT
          value: "1000ms"
        - name: LINKERD2_PROXY_OUTBOUND_DISCOVERY_IDLE_TIMEOUT
          value: "5s"
        - name: LINKERD2_PROXY_INBOUND_DISCOVERY_IDLE_TIMEOUT
          value: "90s"
        - name: LINKERD2_PROXY_CONTROL_LISTEN_ADDR
          value: "0.0.0.0:4190"
        - name: LINKERD2_PROXY_ADMIN_LISTEN_ADDR
          value: "0.0.0.0:4191"
        - name: LINKERD2_PROXY_OUTBOUND_LISTEN_ADDR
          value: "127.0.0.1:4140"
        - name: LINKERD2_PROXY_OUTBOUND_LISTEN_ADDRS
          value: "127.0.0.1:4140"
        - name: LINKERD2_PROXY_INBOUND_LISTEN_ADDR
          value: "0.0.0.0:4143"
        - name: LINKERD2_PROXY_INBOUND_IPS
          valueFrom:
            fieldRef:
              fieldPath: status.podIPs
        - name: LINKERD2_PROXY_INBOUND_PORTS
          value: "8080,9990"
        - name: LINKERD2_PROXY_DESTINATION_PROFILE_SUFFIXES
          value: svc.cluster.local.
        - name: LINKERD2_PROXY_INBOUND_ACCEPT_KEEPALIVE
          value: 10000ms
        - name: LINKERD2_PROXY_OUTBOUND_CONNECT_KEEPALIVE
          value: 10000ms
        - name: LINKERD2_PROXY_INBOUND_ACCEPT_USER_TIMEOUT
          value: 30s
        - name: LINKERD2_PROXY_OUTBOUND_CONNECT_USER_TIMEOUT
          value: 30s
        - name: LINKERD2_PROXY_INBOUND_SERVER_HTTP2_KEEP_ALIVE_INTERVAL
          value: "10s"
        - name: LINKERD2_PROXY_INBOUND_SERVER_HTTP2_KEEP_ALIVE_TIMEOUT
          value: "3s"
        - name: LINKERD2_PROXY_OUTBOUND_SERVER_HTTP2_KEEP_ALIVE_INTERVAL
          value: "10s"
        - name: LINKERD2_PROXY_OUTBOUND_SERVER_HTTP2_KEEP_ALIVE_TIMEOUT
          value: "3s"
        - name: LINKERD2_PROXY_INBOUND_PORTS_DISABLE_PROTOCOL_DETECTION
          value: "25,587,3306,4444,5432,6379,9300,11211"
        - name: LINKERD2_PROXY_DESTINATION_CONTEXT
          value: |
            {"ns":"$(_pod_ns)", "nodeName":"$(_pod_nodeName)", "pod":"$(_pod_name)"}
        - name: _pod_sa
          valueFrom:
            fieldRef:
              fieldPath: spec.serviceAccountName
        - name: _l5d_ns
          value: linkerd
        - name: _l5d_trustdomain
          value: cluster.local
        - name: LINKERD2_PROXY_IDENTITY_DIR
          value: /var/run/linkerd/identity/end-entity
        - name: LINKERD2_PROXY_IDENTITY_TRUST_ANCHORS
          valueFrom:
            configMapKeyRef:
              name: linkerd-identity-trust-roots
              key: ca-bundle.crt
        - name: LINKERD2_PROXY_IDENTITY_TOKEN_FILE
          value: /var/run/secrets/tokens/linkerd-identity-token
        - name: LINKERD2_PROXY_IDENTITY_SVC_ADDR
          value: localhost.:8080
        - name: LINKERD2_PROXY_IDENTITY_LOCAL_NAME
          value: $(_pod_sa).$(_pod_ns).serviceaccount.identity.linkerd.cluster.local
        - name: LINKERD2_PROXY_IDENTITY_SVC_NAME
          value: linkerd-identity.linkerd.serviceaccount.identity.linkerd.cluster.local
        - name: LINKERD2_PROXY_DESTINATION_SVC_NAME
          value: linkerd-destination.linkerd.serviceaccount.identity.linkerd.cluster.local
        - name: LINKERD2_PROXY_POLICY_SVC_NAME
          value: linkerd-destination.linkerd.serviceaccount.identity.linkerd.cluster.local
        image: cr.l5d.io/linkerd/proxy:edge-24.11.3
        imagePullPolicy: IfNotPresent
        livenessProbe:
          httpGet:
            path: /live
            port: 4191
          initialDelaySeconds: 10
          timeoutSeconds: 1
        name: linkerd-proxy
        ports:
        - containerPort: 4143
          name: linkerd-proxy
        - containerPort: 4191
          name: linkerd-admin
        readinessProbe:
          httpGet:
            path: /ready
            port: 4191
          initialDelaySeconds: 2
          timeoutSeconds: 1
        resources:
        securityContext:
          allowPrivilegeEscalation: false
          capabilities:
            drop:
              - ALL
          readOnlyRootFilesystem: true
          runAsNonRoot: true
          runAsUser: 2102
          seccompProfile:
            type: RuntimeDefault
        terminationMessagePolicy: FallbackToLogsOnError
        volumeMounts:
        - mountPath: /var/run/linkerd/identity/end-entity
          name: linkerd-identity-end-entity
        - mountPath: /var/run/secrets/tokens
          name: linkerd-identity-token
      initContainers:
      - args:
        - --ipv6=false
        - --incoming-proxy-port
        - "4143"
        - --outgoing-proxy-port
        - "4140"
        - --proxy-uid
        - "2102"
        - --inbound-ports-to-ignore
        - "4190,4191,4567,4568"
        - --outbound-ports-to-ignore
        - "443,6443"
        image: cr.l5d.io/linkerd/proxy-init:v2.4.1
        imagePullPolicy: IfNotPresent
        name: linkerd-init
        resources:
        securityContext:
          allowPrivilegeEscalation: false
          capabilities:
            add:
            - NET_ADMIN
            - NET_RAW
          privileged: false
          runAsNonRoot: true
          runAsUser: 65534
          runAsGroup: 65534
          readOnlyRootFilesystem: true
          seccompProfile:
            type: RuntimeDefault
        terminationMessagePolicy: FallbackToLogsOnError
        volumeMounts:
        - mountPath: /run
          name: linkerd-proxy-init-xtables-lock
      securityContext:
        seccompProfile:
          type: RuntimeDefault
      serviceAccountName: linkerd-identity
      volumes:
      - name: identity-issuer
        secret:
          secretName: linkerd-identity-issuer
      - configMap:
          name: linkerd-identity-trust-roots
        name: trust-roots
      - name: kube-api-access
        projected:
          defaultMode: 420
          sources:
          - serviceAccountToken:
              expirationSeconds: 3607
              path: token
          - configMap:
              items:
              - key: ca.crt
                path: ca.crt
              name: kube-root-ca.crt
          - downwardAPI:
              items:
              - fieldRef:
                  apiVersion: v1
                  fieldPath: metadata.namespace
                path: namespace
      - emptyDir: {}
        name: linkerd-proxy-init-xtables-lock
      - name: linkerd-identity-token
        projected:
          sources:
          - serviceAccountToken:
              path: linkerd-identity-token
              expirationSeconds: 86400
              audience: identity.l5d.io
      - emptyDir:
          medium: Memory
        name: linkerd-identity-end-entity
---
###
### Destination Controller Service
###
kind: Service
apiVersion: v1
metadata:
  name: linkerd-dst
  namespace: linkerd
  labels:
    linkerd.io/control-plane-component: destination
    linkerd.io/control-plane-ns: linkerd
  annotations:
    linkerd.io/created-by: linkerd/cli edge-24.11.3
spec:
  type: ClusterIP
  selector:
    linkerd.io/control-plane-component: destination
  ports:
  - name: grpc
    port: 8086
    targetPort: 8086
---
kind: Service
apiVersion: v1
metadata:
  name: linkerd-dst-headless
  namespace: linkerd
  labels:
    linkerd.io/control-plane-component: destination
    linkerd.io/control-plane-ns: linkerd
  annotations:
    linkerd.io/created-by: linkerd/cli edge-24.11.3
spec:
  clusterIP: None
  selector:
    linkerd.io/control-plane-component: destination
  ports:
  - name: grpc
    port: 8086
    targetPort: 8086
---
kind: Service
apiVersion: v1
metadata:
  name: linkerd-sp-validator
  namespace: linkerd
  labels:
    linkerd.io/control-plane-component: destination
    linkerd.io/control-plane-ns: linkerd
  annotations:
    linkerd.io/created-by: linkerd/cli edge-24.11.3
spec:
  type: ClusterIP
  selector:
    linkerd.io/control-plane-component: destination
  ports:
  - name: sp-validator
    port: 443
    targetPort: sp-validator
---
kind: Service
apiVersion: v1
metadata:
  name: linkerd-policy
  namespace: linkerd
  labels:
    linkerd.io/control-plane-component: destination
    linkerd.io/control-plane-ns: linkerd
  annotations:
    linkerd.io/created-by: linkerd/cli edge-24.11.3
spec:
  clusterIP: None
  selector:
    linkerd.io/control-plane-component: destination
  ports:
  - name: grpc
    port: 8090
    targetPort: 8090
---
kind: Service
apiVersion: v1
metadata:
  name: linkerd-policy-validator
  namespace: linkerd
  labels:
    linkerd.io/control-plane-component: destination
    linkerd.io/control-plane-ns: linkerd
  annotations:
    linkerd.io/created-by: linkerd/cli edge-24.11.3
spec:
  type: ClusterIP
  selector:
    linkerd.io/control-plane-component: destination
  ports:
  - name: policy-https
    port: 443
    targetPort: policy-https
---

apiVersion: apps/v1
kind: Deployment
metadata:
  annotations:
    linkerd.io/created-by: linkerd/cli edge-24.11.3
  labels:
    app.kubernetes.io/name: destination
    app.kubernetes.io/part-of: Linkerd
    app.kubernetes.io/version: edge-24.11.3
    linkerd.io/control-plane-component: destination
    linkerd.io/control-plane-ns: linkerd
  name: linkerd-destination
  namespace: linkerd
spec:
  replicas: 1
  revisionHistoryLimit: 10
  selector:
    matchLabels:
      linkerd.io/control-plane-component: destination
      linkerd.io/control-plane-ns: linkerd
      linkerd.io/proxy-deployment: linkerd-destination
  strategy:
    rollingUpdate:
      maxSurge: 25%
      maxUnavailable: 25%
  template:
    metadata:
      annotations:
        checksum/config: 74140f376f90d8b7b71d88c9ccfb0a9f8aab5cc53847f21f1557d71c434acf7c
        linkerd.io/created-by: linkerd/cli edge-24.11.3
        linkerd.io/proxy-version: edge-24.11.3
        cluster-autoscaler.kubernetes.io/safe-to-evict: "true"
        linkerd.io/trust-root-sha256: 6c06d533f290349057c93fac96a55ff814f179d2467c2fd47f961594c840a6f3
        config.linkerd.io/default-inbound-policy: "all-unauthenticated"
      labels:
        linkerd.io/control-plane-component: destination
        linkerd.io/control-plane-ns: linkerd
        linkerd.io/workload-ns: linkerd
        linkerd.io/proxy-deployment: linkerd-destination
    spec:
      nodeSelector:
        kubernetes.io/os: linux
      
      automountServiceAccountToken: false
      containers:
      - env:
        - name: _pod_name
          valueFrom:
            fieldRef:
              fieldPath: metadata.name
        - name: _pod_ns
          valueFrom:
            fieldRef:
              fieldPath: metadata.namespace
        - name: _pod_nodeName
          valueFrom:
            fieldRef:
              fieldPath: spec.nodeName
        - name: LINKERD2_PROXY_SHUTDOWN_ENDPOINT_ENABLED
          value: "false"
        - name: LINKERD2_PROXY_LOG
          value: "warn,linkerd=info,hickory=error,[{headers}]=off,[{request}]=off"
        - name: LINKERD2_PROXY_LOG_FORMAT
          value: "plain"
        - name: LINKERD2_PROXY_DESTINATION_SVC_ADDR
          value: localhost.:8086
        - name: LINKERD2_PROXY_DESTINATION_PROFILE_NETWORKS
          value: "10.0.0.0/8,100.64.0.0/10,172.16.0.0/12,192.168.0.0/16,fd00::/8"
        - name: LINKERD2_PROXY_POLICY_SVC_ADDR
          value: localhost.:8090
        - name: LINKERD2_PROXY_POLICY_WORKLOAD
          value: |
            {"ns":"$(_pod_ns)", "pod":"$(_pod_name)"}
        - name: LINKERD2_PROXY_INBOUND_DEFAULT_POLICY
          value: all-unauthenticated
        - name: LINKERD2_PROXY_POLICY_CLUSTER_NETWORKS
          value: "10.0.0.0/8,100.64.0.0/10,172.16.0.0/12,192.168.0.0/16,fd00::/8"
        - name: LINKERD2_PROXY_CONTROL_STREAM_INITIAL_TIMEOUT
          value: "3s"
        - name: LINKERD2_PROXY_CONTROL_STREAM_IDLE_TIMEOUT
          value: "5m"
        - name: LINKERD2_PROXY_CONTROL_STREAM_LIFETIME
          value: "1h"
        - name: LINKERD2_PROXY_INBOUND_CONNECT_TIMEOUT
          value: "100ms"
        - name: LINKERD2_PROXY_OUTBOUND_CONNECT_TIMEOUT
          value: "1000ms"
        - name: LINKERD2_PROXY_OUTBOUND_DISCOVERY_IDLE_TIMEOUT
          value: "5s"
        - name: LINKERD2_PROXY_INBOUND_DISCOVERY_IDLE_TIMEOUT
          value: "90s"
        - name: LINKERD2_PROXY_CONTROL_LISTEN_ADDR
          value: "0.0.0.0:4190"
        - name: LINKERD2_PROXY_ADMIN_LISTEN_ADDR
          value: "0.0.0.0:4191"
        - name: LINKERD2_PROXY_OUTBOUND_LISTEN_ADDR
          value: "127.0.0.1:4140"
        - name: LINKERD2_PROXY_OUTBOUND_LISTEN_ADDRS
          value: "127.0.0.1:4140"
        - name: LINKERD2_PROXY_INBOUND_LISTEN_ADDR
          value: "0.0.0.0:4143"
        - name: LINKERD2_PROXY_INBOUND_IPS
          valueFrom:
            fieldRef:
              fieldPath: status.podIPs
        - name: LINKERD2_PROXY_INBOUND_PORTS
          value: "8086,8090,8443,9443,9990,9996,9997"
        - name: LINKERD2_PROXY_DESTINATION_PROFILE_SUFFIXES
          value: svc.cluster.local.
        - name: LINKERD2_PROXY_INBOUND_ACCEPT_KEEPALIVE
          value: 10000ms
        - name: LINKERD2_PROXY_OUTBOUND_CONNECT_KEEPALIVE
          value: 10000ms
        - name: LINKERD2_PROXY_INBOUND_ACCEPT_USER_TIMEOUT
          value: 30s
        - name: LINKERD2_PROXY_OUTBOUND_CONNECT_USER_TIMEOUT
          value: 30s
        - name: LINKERD2_PROXY_INBOUND_SERVER_HTTP2_KEEP_ALIVE_INTERVAL
          value: "10s"
        - name: LINKERD2_PROXY_INBOUND_SERVER_HTTP2_KEEP_ALIVE_TIMEOUT
          value: "3s"
        - name: LINKERD2_PROXY_OUTBOUND_SERVER_HTTP2_KEEP_ALIVE_INTERVAL
          value: "10s"
        - name: LINKERD2_PROXY_OUTBOUND_SERVER_HTTP2_KEEP_ALIVE_TIMEOUT
          value: "3s"
        - name: LINKERD2_PROXY_INBOUND_PORTS_DISABLE_PROTOCOL_DETECTION
          value: "25,587,3306,4444,5432,6379,9300,11211"
        - name: LINKERD2_PROXY_DESTINATION_CONTEXT
          value: |
            {"ns":"$(_pod_ns)", "nodeName":"$(_pod_nodeName)", "pod":"$(_pod_name)"}
        - name: _pod_sa
          valueFrom:
            fieldRef:
              fieldPath: spec.serviceAccountName
        - name: _l5d_ns
          value: linkerd
        - name: _l5d_trustdomain
          value: cluster.local
        - name: LINKERD2_PROXY_IDENTITY_DIR
          value: /var/run/linkerd/identity/end-entity
        - name: LINKERD2_PROXY_IDENTITY_TRUST_ANCHORS
          valueFrom:
            configMapKeyRef:
              name: linkerd-identity-trust-roots
              key: ca-bundle.crt
        - name: LINKERD2_PROXY_IDENTITY_TOKEN_FILE
          value: /var/run/secrets/tokens/linkerd-identity-token
        - name: LINKERD2_PROXY_IDENTITY_SVC_ADDR
          value: linkerd-identity-headless.linkerd.svc.cluster.local.:8080
        - name: LINKERD2_PROXY_IDENTITY_LOCAL_NAME
          value: $(_pod_sa).$(_pod_ns).serviceaccount.identity.linkerd.cluster.local
        - name: LINKERD2_PROXY_IDENTITY_SVC_NAME
          value: linkerd-identity.linkerd.serviceaccount.identity.linkerd.cluster.local
        - name: LINKERD2_PROXY_DESTINATION_SVC_NAME
          value: linkerd-destination.linkerd.serviceaccount.identity.linkerd.cluster.local
        - name: LINKERD2_PROXY_POLICY_SVC_NAME
          value: linkerd-destination.linkerd.serviceaccount.identity.linkerd.cluster.local
        image: cr.l5d.io/linkerd/proxy:edge-24.11.3
        imagePullPolicy: IfNotPresent
        livenessProbe:
          httpGet:
            path: /live
            port: 4191
          initialDelaySeconds: 10
          timeoutSeconds: 1
        name: linkerd-proxy
        ports:
        - containerPort: 4143
          name: linkerd-proxy
        - containerPort: 4191
          name: linkerd-admin
        readinessProbe:
          httpGet:
            path: /ready
            port: 4191
          initialDelaySeconds: 2
          timeoutSeconds: 1
        resources:
        securityContext:
          allowPrivilegeEscalation: false
          capabilities:
            drop:
              - ALL
          readOnlyRootFilesystem: true
          runAsNonRoot: true
          runAsUser: 2102
          seccompProfile:
            type: RuntimeDefault
        terminationMessagePolicy: FallbackToLogsOnError
        lifecycle:
          postStart:
            exec:
              command:
                - /usr/lib/linkerd/linkerd-await
                - --timeout=2m
                - --port=4191
        volumeMounts:
        - mountPath: /var/run/linkerd/identity/end-entity
          name: linkerd-identity-end-entity
        - mountPath: /var/run/secrets/tokens
          name: linkerd-identity-token
      - args:
        - destination
        - -addr=:8086
        - -controller-namespace=linkerd
        - -enable-h2-upgrade=true
        - -log-level=info
        - -log-format=plain
        - -enable-endpoint-slices=true
        - -cluster-domain=cluster.local
        - -identity-trust-domain=cluster.local
        - -default-opaque-ports=25,587,3306,4444,5432,6379,9300,11211
        - -enable-ipv6=false
        - -enable-pprof=false
        - --meshed-http2-client-params={"keep_alive":{"interval":{"seconds":10},"timeout":{"seconds":3},"while_idle":true}}
        image: cr.l5d.io/linkerd/controller:edge-24.11.3
        imagePullPolicy: IfNotPresent
        livenessProbe:
          httpGet:
            path: /ping
            port: 9996
          initialDelaySeconds: 10
          timeoutSeconds: 1
        name: destination
        ports:
        - containerPort: 8086
          name: grpc
        - containerPort: 9996
          name: admin-http
        readinessProbe:
          failureThreshold: 7
          httpGet:
            path: /ready
            port: 9996
          timeoutSeconds: 1
        securityContext:
          capabilities:
            drop:
            - ALL
          readOnlyRootFilesystem: true
          runAsNonRoot: true
          runAsUser: 2103
          allowPrivilegeEscalation: false
          seccompProfile:
            type: RuntimeDefault
        volumeMounts:
        - mountPath: /var/run/secrets/kubernetes.io/serviceaccount
          name: kube-api-access
          readOnly: true
      - args:
        - sp-validator
        - -log-level=info
        - -log-format=plain
        - -enable-pprof=false
        image: cr.l5d.io/linkerd/controller:edge-24.11.3
        imagePullPolicy: IfNotPresent
        livenessProbe:
          httpGet:
            path: /ping
            port: 9997
          initialDelaySeconds: 10
          timeoutSeconds: 1
        name: sp-validator
        ports:
        - containerPort: 8443
          name: sp-validator
        - containerPort: 9997
          name: admin-http
        readinessProbe:
          failureThreshold: 7
          httpGet:
            path: /ready
            port: 9997
          timeoutSeconds: 1
        securityContext:
          capabilities:
            drop:
            - ALL
          readOnlyRootFilesystem: true
          runAsNonRoot: true
          runAsUser: 2103
          allowPrivilegeEscalation: false
          seccompProfile:
            type: RuntimeDefault
        volumeMounts:
        - mountPath: /var/run/linkerd/tls
          name: sp-tls
          readOnly: true
        - mountPath: /var/run/secrets/kubernetes.io/serviceaccount
          name: kube-api-access
          readOnly: true
      - args:
        - --admin-addr=0.0.0.0:9990
        - --control-plane-namespace=linkerd
        - --grpc-addr=0.0.0.0:8090
        - --server-addr=0.0.0.0:9443
        - --server-tls-key=/var/run/linkerd/tls/tls.key
        - --server-tls-certs=/var/run/linkerd/tls/tls.crt
        - --cluster-networks=10.0.0.0/8,100.64.0.0/10,172.16.0.0/12,192.168.0.0/16,fd00::/8
        - --identity-domain=cluster.local
        - --cluster-domain=cluster.local
        - --default-policy=all-unauthenticated
        - --log-level=info
        - --log-format=plain
        - --default-opaque-ports=25,587,3306,4444,5432,6379,9300,11211
        - --global-egress-network-namespace=linkerd-egress
        - --probe-networks=0.0.0.0/0,::/0
        image: cr.l5d.io/linkerd/policy-controller:edge-24.11.3
        imagePullPolicy: IfNotPresent
        livenessProbe:
          httpGet:
            path: /live
            port: admin-http
        name: policy
        ports:
        - containerPort: 8090
          name: grpc
        - containerPort: 9990
          name: admin-http
        - containerPort: 9443
          name: policy-https
        readinessProbe:
          failureThreshold: 7
          httpGet:
            path: /ready
            port: admin-http
          initialDelaySeconds: 10
        resources:
        securityContext:
          capabilities:
            drop:
            - ALL
          readOnlyRootFilesystem: true
          runAsNonRoot: true
          runAsUser: 2103
          allowPrivilegeEscalation: false
          seccompProfile:
            type: RuntimeDefault
        volumeMounts:
        - mountPath: /var/run/linkerd/tls
          name: policy-tls
          readOnly: true
        - mountPath: /var/run/secrets/kubernetes.io/serviceaccount
          name: kube-api-access
          readOnly: true
      initContainers:
      - args:
        - --ipv6=false
        - --incoming-proxy-port
        - "4143"
        - --outgoing-proxy-port
        - "4140"
        - --proxy-uid
        - "2102"
        - --inbound-ports-to-ignore
        - "4190,4191,4567,4568"
        - --outbound-ports-to-ignore
        - "443,6443"
        image: cr.l5d.io/linkerd/proxy-init:v2.4.1
        imagePullPolicy: IfNotPresent
        name: linkerd-init
        resources:
        securityContext:
          allowPrivilegeEscalation: false
          capabilities:
            add:
            - NET_ADMIN
            - NET_RAW
          privileged: false
          runAsNonRoot: true
          runAsUser: 65534
          runAsGroup: 65534
          readOnlyRootFilesystem: true
          seccompProfile:
            type: RuntimeDefault
        terminationMessagePolicy: FallbackToLogsOnError
        volumeMounts:
        - mountPath: /run
          name: linkerd-proxy-init-xtables-lock
      securityContext:
        seccompProfile:
          type: RuntimeDefault
      serviceAccountName: linkerd-destination
      volumes:
      - name: sp-tls
        secret:
          secretName: linkerd-sp-validator-k8s-tls
      - name: policy-tls
        secret:
          secretName: linkerd-policy-validator-k8s-tls
      - name: kube-api-access
        projected:
          defaultMode: 420
          sources:
          - serviceAccountToken:
              expirationSeconds: 3607
              path: token
          - configMap:
              items:
              - key: ca.crt
                path: ca.crt
              name: kube-root-ca.crt
          - downwardAPI:
              items:
              - fieldRef:
                  apiVersion: v1
                  fieldPath: metadata.namespace
                path: namespace
      - emptyDir: {}
        name: linkerd-proxy-init-xtables-lock
      - name: linkerd-identity-token
        projected:
          sources:
          - serviceAccountToken:
              path: linkerd-identity-token
              expirationSeconds: 86400
              audience: identity.l5d.io
      - emptyDir:
          medium: Memory
        name: linkerd-identity-end-entity
---
###
### Heartbeat
###
apiVersion: batch/v1
kind: CronJob
metadata:
  name: linkerd-heartbeat
  namespace: linkerd
  labels:
    app.kubernetes.io/name: heartbeat
    app.kubernetes.io/part-of: Linkerd
    app.kubernetes.io/version: edge-24.11.3
    linkerd.io/control-plane-component: heartbeat
    linkerd.io/control-plane-ns: linkerd
  annotations:
    linkerd.io/created-by: linkerd/cli edge-24.11.3
spec:
  concurrencyPolicy: Replace
  schedule: "18 08 * * *"
  successfulJobsHistoryLimit: 0
  jobTemplate:
    spec:
      template:
        metadata:
          labels:
            linkerd.io/control-plane-component: heartbeat
            linkerd.io/workload-ns: linkerd
          annotations:
            linkerd.io/created-by: linkerd/cli edge-24.11.3
        spec:
          nodeSelector:
            kubernetes.io/os: linux
          securityContext:
            seccompProfile:
              type: RuntimeDefault
          serviceAccountName: linkerd-heartbeat
          restartPolicy: Never
          automountServiceAccountToken: false
          containers:
          - name: heartbeat
            image: cr.l5d.io/linkerd/controller:edge-24.11.3
            imagePullPolicy: IfNotPresent
            env:
            - name: LINKERD_DISABLED
              value: "the heartbeat controller does not use the proxy"
            args:
            - "heartbeat"
            - "-controller-namespace=linkerd"
            - "-log-level=info"
            - "-log-format=plain"
            - "-prometheus-url=http://prometheus.linkerd-viz.svc.cluster.local:9090"
            securityContext:
              capabilities:
                drop:
                - ALL
              readOnlyRootFilesystem: true
              runAsNonRoot: true
              runAsUser: 2103
              allowPrivilegeEscalation: false
              seccompProfile:
                type: RuntimeDefault
            volumeMounts:
            - mountPath: /var/run/secrets/kubernetes.io/serviceaccount
              name: kube-api-access
              readOnly: true
          volumes:
          - name: kube-api-access
            projected:
              defaultMode: 420
              sources:
              - serviceAccountToken:
                  expirationSeconds: 3607
                  path: token
              - configMap:
                  items:
                  - key: ca.crt
                    path: ca.crt
                  name: kube-root-ca.crt
              - downwardAPI:
                  items:
                  - fieldRef:
                      apiVersion: v1
                      fieldPath: metadata.namespace
                    path: namespace
---
###
### Proxy Injector
###

apiVersion: apps/v1
kind: Deployment
metadata:
  annotations:
    linkerd.io/created-by: linkerd/cli edge-24.11.3
  labels:
    app.kubernetes.io/name: proxy-injector
    app.kubernetes.io/part-of: Linkerd
    app.kubernetes.io/version: edge-24.11.3
    linkerd.io/control-plane-component: proxy-injector
    linkerd.io/control-plane-ns: linkerd
  name: linkerd-proxy-injector
  namespace: linkerd
spec:
  replicas: 1
  revisionHistoryLimit: 10
  selector:
    matchLabels:
      linkerd.io/control-plane-component: proxy-injector
  strategy:
    rollingUpdate:
      maxSurge: 25%
      maxUnavailable: 25%
  template:
    metadata:
      annotations:
        checksum/config: 084574c39045c91ffa250b942b150b6e93dd6048810722526346ca60482321fd
        linkerd.io/created-by: linkerd/cli edge-24.11.3
        linkerd.io/proxy-version: edge-24.11.3
        cluster-autoscaler.kubernetes.io/safe-to-evict: "true"
        linkerd.io/trust-root-sha256: 6c06d533f290349057c93fac96a55ff814f179d2467c2fd47f961594c840a6f3
        config.linkerd.io/opaque-ports: "8443"
        config.linkerd.io/default-inbound-policy: "all-unauthenticated"
      labels:
        linkerd.io/control-plane-component: proxy-injector
        linkerd.io/control-plane-ns: linkerd
        linkerd.io/workload-ns: linkerd
        linkerd.io/proxy-deployment: linkerd-proxy-injector
    spec:
      nodeSelector:
        kubernetes.io/os: linux
      
      automountServiceAccountToken: false
      containers:
      - env:
        - name: _pod_name
          valueFrom:
            fieldRef:
              fieldPath: metadata.name
        - name: _pod_ns
          valueFrom:
            fieldRef:
              fieldPath: metadata.namespace
        - name: _pod_nodeName
          valueFrom:
            fieldRef:
              fieldPath: spec.nodeName
        - name: LINKERD2_PROXY_SHUTDOWN_ENDPOINT_ENABLED
          value: "false"
        - name: LINKERD2_PROXY_LOG
          value: "warn,linkerd=info,hickory=error,[{headers}]=off,[{request}]=off"
        - name: LINKERD2_PROXY_LOG_FORMAT
          value: "plain"
        - name: LINKERD2_PROXY_DESTINATION_SVC_ADDR
          value: linkerd-dst-headless.linkerd.svc.cluster.local.:8086
        - name: LINKERD2_PROXY_DESTINATION_PROFILE_NETWORKS
          value: "10.0.0.0/8,100.64.0.0/10,172.16.0.0/12,192.168.0.0/16,fd00::/8"
        - name: LINKERD2_PROXY_POLICY_SVC_ADDR
          value: linkerd-policy.linkerd.svc.cluster.local.:8090
        - name: LINKERD2_PROXY_POLICY_WORKLOAD
          value: |
            {"ns":"$(_pod_ns)", "pod":"$(_pod_name)"}
        - name: LINKERD2_PROXY_INBOUND_DEFAULT_POLICY
          value: all-unauthenticated
        - name: LINKERD2_PROXY_POLICY_CLUSTER_NETWORKS
          value: "10.0.0.0/8,100.64.0.0/10,172.16.0.0/12,192.168.0.0/16,fd00::/8"
        - name: LINKERD2_PROXY_CONTROL_STREAM_INITIAL_TIMEOUT
          value: "3s"
        - name: LINKERD2_PROXY_CONTROL_STREAM_IDLE_TIMEOUT
          value: "5m"
        - name: LINKERD2_PROXY_CONTROL_STREAM_LIFETIME
          value: "1h"
        - name: LINKERD2_PROXY_INBOUND_CONNECT_TIMEOUT
          value: "100ms"
        - name: LINKERD2_PROXY_OUTBOUND_CONNECT_TIMEOUT
          value: "1000ms"
        - name: LINKERD2_PROXY_OUTBOUND_DISCOVERY_IDLE_TIMEOUT
          value: "5s"
        - name: LINKERD2_PROXY_INBOUND_DISCOVERY_IDLE_TIMEOUT
          value: "90s"
        - name: LINKERD2_PROXY_CONTROL_LISTEN_ADDR
          value: "0.0.0.0:4190"
        - name: LINKERD2_PROXY_ADMIN_LISTEN_ADDR
          value: "0.0.0.0:4191"
        - name: LINKERD2_PROXY_OUTBOUND_LISTEN_ADDR
          value: "127.0.0.1:4140"
        - name: LINKERD2_PROXY_OUTBOUND_LISTEN_ADDRS
          value: "127.0.0.1:4140"
        - name: LINKERD2_PROXY_INBOUND_LISTEN_ADDR
          value: "0.0.0.0:4143"
        - name: LINKERD2_PROXY_INBOUND_IPS
          valueFrom:
            fieldRef:
              fieldPath: status.podIPs
        - name: LINKERD2_PROXY_INBOUND_PORTS
          value: "8443,9995"
        - name: LINKERD2_PROXY_DESTINATION_PROFILE_SUFFIXES
          value: svc.cluster.local.
        - name: LINKERD2_PROXY_INBOUND_ACCEPT_KEEPALIVE
          value: 10000ms
        - name: LINKERD2_PROXY_OUTBOUND_CONNECT_KEEPALIVE
          value: 10000ms
        - name: LINKERD2_PROXY_INBOUND_ACCEPT_USER_TIMEOUT
          value: 30s
        - name: LINKERD2_PROXY_OUTBOUND_CONNECT_USER_TIMEOUT
          value: 30s
        - name: LINKERD2_PROXY_INBOUND_SERVER_HTTP2_KEEP_ALIVE_INTERVAL
          value: "10s"
        - name: LINKERD2_PROXY_INBOUND_SERVER_HTTP2_KEEP_ALIVE_TIMEOUT
          value: "3s"
        - name: LINKERD2_PROXY_OUTBOUND_SERVER_HTTP2_KEEP_ALIVE_INTERVAL
          value: "10s"
        - name: LINKERD2_PROXY_OUTBOUND_SERVER_HTTP2_KEEP_ALIVE_TIMEOUT
          value: "3s"
        - name: LINKERD2_PROXY_INBOUND_PORTS_DISABLE_PROTOCOL_DETECTION
          value: "25,587,3306,4444,5432,6379,9300,11211"
        - name: LINKERD2_PROXY_DESTINATION_CONTEXT
          value: |
            {"ns":"$(_pod_ns)", "nodeName":"$(_pod_nodeName)", "pod":"$(_pod_name)"}
        - name: _pod_sa
          valueFrom:
            fieldRef:
              fieldPath: spec.serviceAccountName
        - name: _l5d_ns
          value: linkerd
        - name: _l5d_trustdomain
          value: cluster.local
        - name: LINKERD2_PROXY_IDENTITY_DIR
          value: /var/run/linkerd/identity/end-entity
        - name: LINKERD2_PROXY_IDENTITY_TRUST_ANCHORS
          valueFrom:
            configMapKeyRef:
              name: linkerd-identity-trust-roots
              key: ca-bundle.crt
        - name: LINKERD2_PROXY_IDENTITY_TOKEN_FILE
          value: /var/run/secrets/tokens/linkerd-identity-token
        - name: LINKERD2_PROXY_IDENTITY_SVC_ADDR
          value: linkerd-identity-headless.linkerd.svc.cluster.local.:8080
        - name: LINKERD2_PROXY_IDENTITY_LOCAL_NAME
          value: $(_pod_sa).$(_pod_ns).serviceaccount.identity.linkerd.cluster.local
        - name: LINKERD2_PROXY_IDENTITY_SVC_NAME
          value: linkerd-identity.linkerd.serviceaccount.identity.linkerd.cluster.local
        - name: LINKERD2_PROXY_DESTINATION_SVC_NAME
          value: linkerd-destination.linkerd.serviceaccount.identity.linkerd.cluster.local
        - name: LINKERD2_PROXY_POLICY_SVC_NAME
          value: linkerd-destination.linkerd.serviceaccount.identity.linkerd.cluster.local
        image: cr.l5d.io/linkerd/proxy:edge-24.11.3
        imagePullPolicy: IfNotPresent
        livenessProbe:
          httpGet:
            path: /live
            port: 4191
          initialDelaySeconds: 10
          timeoutSeconds: 1
        name: linkerd-proxy
        ports:
        - containerPort: 4143
          name: linkerd-proxy
        - containerPort: 4191
          name: linkerd-admin
        readinessProbe:
          httpGet:
            path: /ready
            port: 4191
          initialDelaySeconds: 2
          timeoutSeconds: 1
        resources:
        securityContext:
          allowPrivilegeEscalation: false
          capabilities:
            drop:
              - ALL
          readOnlyRootFilesystem: true
          runAsNonRoot: true
          runAsUser: 2102
          seccompProfile:
            type: RuntimeDefault
        terminationMessagePolicy: FallbackToLogsOnError
        lifecycle:
          postStart:
            exec:
              command:
                - /usr/lib/linkerd/linkerd-await
                - --timeout=2m
                - --port=4191
        volumeMounts:
        - mountPath: /var/run/linkerd/identity/end-entity
          name: linkerd-identity-end-entity
        - mountPath: /var/run/secrets/tokens
          name: linkerd-identity-token
      - args:
        - proxy-injector
        - -log-level=info
        - -log-format=plain
        - -linkerd-namespace=linkerd
        - -enable-pprof=false
        image: cr.l5d.io/linkerd/controller:edge-24.11.3
        imagePullPolicy: IfNotPresent
        livenessProbe:
          httpGet:
            path: /ping
            port: 9995
          initialDelaySeconds: 10
        name: proxy-injector
        ports:
        - containerPort: 8443
          name: proxy-injector
        - containerPort: 9995
          name: admin-http
        readinessProbe:
          failureThreshold: 7
          httpGet:
            path: /ready
            port: 9995
        securityContext:
          capabilities:
            drop:
            - ALL
          readOnlyRootFilesystem: true
          runAsNonRoot: true
          runAsUser: 2103
          allowPrivilegeEscalation: false
          seccompProfile:
            type: RuntimeDefault
        volumeMounts:
        - mountPath: /var/run/linkerd/config
          name: config
        - mountPath: /var/run/linkerd/identity/trust-roots
          name: trust-roots
        - mountPath: /var/run/linkerd/tls
          name: tls
          readOnly: true
        - mountPath: /var/run/secrets/kubernetes.io/serviceaccount
          name: kube-api-access
          readOnly: true
      initContainers:
      - args:
        - --ipv6=false
        - --incoming-proxy-port
        - "4143"
        - --outgoing-proxy-port
        - "4140"
        - --proxy-uid
        - "2102"
        - --inbound-ports-to-ignore
        - "4190,4191,4567,4568"
        - --outbound-ports-to-ignore
        - "443,6443"
        image: cr.l5d.io/linkerd/proxy-init:v2.4.1
        imagePullPolicy: IfNotPresent
        name: linkerd-init
        resources:
        securityContext:
          allowPrivilegeEscalation: false
          capabilities:
            add:
            - NET_ADMIN
            - NET_RAW
          privileged: false
          runAsNonRoot: true
          runAsUser: 65534
          runAsGroup: 65534
          readOnlyRootFilesystem: true
          seccompProfile:
            type: RuntimeDefault
        terminationMessagePolicy: FallbackToLogsOnError
        volumeMounts:
        - mountPath: /run
          name: linkerd-proxy-init-xtables-lock
      securityContext:
        seccompProfile:
          type: RuntimeDefault
      serviceAccountName: linkerd-proxy-injector
      volumes:
      - configMap:
          name: linkerd-config
        name: config
      - configMap:
          name: linkerd-identity-trust-roots
        name: trust-roots
      - name: tls
        secret:
          secretName: linkerd-proxy-injector-k8s-tls
      - name: kube-api-access
        projected:
          defaultMode: 420
          sources:
          - serviceAccountToken:
              expirationSeconds: 3607
              path: token
          - configMap:
              items:
              - key: ca.crt
                path: ca.crt
              name: kube-root-ca.crt
          - downwardAPI:
              items:
              - fieldRef:
                  apiVersion: v1
                  fieldPath: metadata.namespace
                path: namespace
      - emptyDir: {}
        name: linkerd-proxy-init-xtables-lock
      - name: linkerd-identity-token
        projected:
          sources:
          - serviceAccountToken:
              path: linkerd-identity-token
              expirationSeconds: 86400
              audience: identity.l5d.io
      - emptyDir:
          medium: Memory
        name: linkerd-identity-end-entity
---
kind: Service
apiVersion: v1
metadata:
  name: linkerd-proxy-injector
  namespace: linkerd
  labels:
    linkerd.io/control-plane-component: proxy-injector
    linkerd.io/control-plane-ns: linkerd
  annotations:
    linkerd.io/created-by: linkerd/cli edge-24.11.3
    config.linkerd.io/opaque-ports: "443"
spec:
  type: ClusterIP
  selector:
    linkerd.io/control-plane-component: proxy-injector
  ports:
  - name: proxy-injector
    port: 443
    targetPort: proxy-injector
---
apiVersion: v1
data:
  linkerd-config-overrides: aWRlbnRpdHk6CiAgaXNzdWVyOgogICAgdGxzOgogICAgICBjcnRQRU06IHwKICAgICAgICAtLS0tLUJFR0lOIENFUlRJRklDQVRFLS0tLS0KICAgICAgICBNSUlCaHpDQ0FTNmdBd0lCQWdJQkFUQUtCZ2dxaGtqT1BRUURBakFjTVJvd0dBWURWUVFERXhGcFpHVnVkR2wwCiAgICAgICAgZVM1c2FXNXJaWEprTGpBZUZ3MHlOREV4TVRjd09EQTNOVEZhRncweU5URXhNVGN3T0RBNE1URmFNQnd4R2pBWQogICAgICAgIEJnTlZCQU1URVdsa1pXNTBhWFI1TG14cGJtdGxjbVF1TUZrd0V3WUhLb1pJemowQ0FRWUlLb1pJemowREFRY0QKICAgICAgICBRZ0FFbnN1dkM5ZXJZWnZDMm9XOGpacVpQRnlLY3FjeUFMV2JaVjJJV3ZDdVhLdHYzQ05kMWpwWWFMaGZEem9HCiAgICAgICAgV01tWTVlL2dka0dWcG1EODM0NGZtTzMySktOaE1GOHdEZ1lEVlIwUEFRSC9CQVFEQWdFR01CMEdBMVVkSlFRVwogICAgICAgIE1CUUdDQ3NHQVFVRkJ3TUJCZ2dyQmdFRkJRY0RBakFQQmdOVkhSTUJBZjhFQlRBREFRSC9NQjBHQTFVZERnUVcKICAgICAgICBCQlRqTmt5VXpuWjE4Zy9Id2l1bm5IT3F1b2d5UURBS0JnZ3Foa2pPUFFRREFnTkhBREJFQWlCVU8xamRKWTBDCiAgICAgICAgQTE2RzhyeUJ3QmVGckttWmV5ODFQazZ0T3F4Sy8wUVZUd0lnSVoyQkNVbVZQTTNVZTVuSUYvN3RkRHVwMDVjdwogICAgICAgIGpIc3A2QjQvbHJBN21yST0KICAgICAgICAtLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCiAgICAgIGtleVBFTTogfAogICAgICAgIC0tLS0tQkVHSU4gRUMgUFJJVkFURSBLRVktLS0tLQogICAgICAgIE1IY0NBUUVFSUFPeUorNXJWYnFsbjI2S29hL2Y2UHFIR2hwMXoxc0VJN080OEZYSlNxTnZvQW9HQ0NxR1NNNDkKICAgICAgICBBd0VIb1VRRFFnQUVuc3V2QzllclladkMyb1c4alpxWlBGeUtjcWN5QUxXYlpWMklXdkN1WEt0djNDTmQxanBZCiAgICAgICAgYUxoZkR6b0dXTW1ZNWUvZ2RrR1ZwbUQ4MzQ0Zm1PMzJKQT09CiAgICAgICAgLS0tLS1FTkQgRUMgUFJJVkFURSBLRVktLS0tLQppZGVudGl0eVRydXN0QW5jaG9yc1BFTTogfAogIC0tLS0tQkVHSU4gQ0VSVElGSUNBVEUtLS0tLQogIE1JSUJoekNDQVM2Z0F3SUJBZ0lCQVRBS0JnZ3Foa2pPUFFRREFqQWNNUm93R0FZRFZRUURFeEZwWkdWdWRHbDAKICBlUzVzYVc1clpYSmtMakFlRncweU5ERXhNVGN3T0RBM05URmFGdzB5TlRFeE1UY3dPREE0TVRGYU1Cd3hHakFZCiAgQmdOVkJBTVRFV2xrWlc1MGFYUjVMbXhwYm10bGNtUXVNRmt3RXdZSEtvWkl6ajBDQVFZSUtvWkl6ajBEQVFjRAogIFFnQUVuc3V2QzllclladkMyb1c4alpxWlBGeUtjcWN5QUxXYlpWMklXdkN1WEt0djNDTmQxanBZYUxoZkR6b0cKICBXTW1ZNWUvZ2RrR1ZwbUQ4MzQ0Zm1PMzJKS05oTUY4d0RnWURWUjBQQVFIL0JBUURBZ0VHTUIwR0ExVWRKUVFXCiAgTUJRR0NDc0dBUVVGQndNQkJnZ3JCZ0VGQlFjREFqQVBCZ05WSFJNQkFmOEVCVEFEQVFIL01CMEdBMVVkRGdRVwogIEJCVGpOa3lVem5aMThnL0h3aXVubkhPcXVvZ3lRREFLQmdncWhrak9QUVFEQWdOSEFEQkVBaUJVTzFqZEpZMEMKICBBMTZHOHJ5QndCZUZyS21aZXk4MVBrNnRPcXhLLzBRVlR3SWdJWjJCQ1VtVlBNM1VlNW5JRi83dGREdXAwNWN3CiAgakhzcDZCNC9sckE3bXJJPQogIC0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K
kind: Secret
metadata:
  creationTimestamp: null
  labels:
    linkerd.io/control-plane-ns: linkerd
  name: linkerd-config-overrides
  namespace: linkerd
