# Default values for opentelemetry-collector. # This is a YAML-formatted file. # Declare variables to be passed into your templates. nameOverride: "" fullnameOverride: "opentelemetry-admin-prd" dedicatedValue: false schedulerName: default-scheduler labels: bu: "infra" team: "sre" service: "opentelemetry-admin-prd" env: "prd" priority: "p0" type: "opentelemetry" arch: "any" runpod: "ondemand" externalSecret: enabled: true key: prd/admin/coralogix-keys secretStoreRef: name: vault-backend # Valid values are "daemonset", "deployment", and "statefulset". mode: "deployment" # Specify which namespace should be used to deploy the resources into namespaceOverride: "" # Handles basic configuration of components that # also require k8s modifications to work correctly. # .Values.config can be used to modify/add to a preset # component configuration, but CANNOT be used to remove # preset configuration. If you require removal of any # sections of a preset configuration, you cannot use # the preset. Instead, configure the component manually in # .Values.config and use the other fields supplied in the # values.yaml to configure k8s as necessary. presets: # Configures the collector to collect logs. # Adds the filelog receiver to the logs pipeline # and adds the necessary volumes and volume mounts. # Best used with mode = daemonset. # See https://opentelemetry.io/docs/kubernetes/collector/components/#filelog-receiver for details on the receiver. logsCollection: enabled: false includeCollectorLogs: false # Enabling this writes checkpoints in /var/lib/otelcol/ host directory. # Note this changes collector's user to root, so that it can write to host directory. storeCheckpoints: false # The maximum bytes size of the recombined field. # Once the size exceeds the limit, all received entries of the source will be combined and flushed. maxRecombineLogSize: 102400 # Configures the collector to collect host metrics. # Adds the hostmetrics receiver to the metrics pipeline # and adds the necessary volumes and volume mounts. # Best used with mode = daemonset. # See https://opentelemetry.io/docs/kubernetes/collector/components/#host-metrics-receiver for details on the receiver. hostMetrics: enabled: false # Configures the Kubernetes Processor to add Kubernetes metadata. # Adds the k8sattributes processor to all the pipelines # and adds the necessary rules to ClusteRole. # Best used with mode = daemonset. # See https://opentelemetry.io/docs/kubernetes/collector/components/#kubernetes-attributes-processor for details on the receiver. kubernetesAttributes: enabled: false # When enabled the processor will extra all labels for an associated pod and add them as resource attributes. # The label's exact name will be the key. extractAllPodLabels: false # When enabled the processor will extra all annotations for an associated pod and add them as resource attributes. # The annotation's exact name will be the key. extractAllPodAnnotations: false # Configures the collector to collect node, pod, and container metrics from the API server on a kubelet.. # Adds the kubeletstats receiver to the metrics pipeline # and adds the necessary rules to ClusteRole. # Best used with mode = daemonset. # See https://opentelemetry.io/docs/kubernetes/collector/components/#kubeletstats-receiver for details on the receiver. kubeletMetrics: enabled: false # Configures the collector to collect kubernetes events. # Adds the k8sobject receiver to the logs pipeline # and collects kubernetes events by default. # Best used with mode = deployment or statefulset. # See https://opentelemetry.io/docs/kubernetes/collector/components/#kubernetes-objects-receiver for details on the receiver. kubernetesEvents: enabled: false # Configures the Kubernetes Cluster Receiver to collect cluster-level metrics. # Adds the k8s_cluster receiver to the metrics pipeline # and adds the necessary rules to ClusteRole. # Best used with mode = deployment or statefulset. # See https://opentelemetry.io/docs/kubernetes/collector/components/#kubernetes-cluster-receiver for details on the receiver. clusterMetrics: enabled: false configMap: # Specifies whether a configMap should be created (true by default) create: true # Base collector configuration. # Supports templating. To escape existing instances of {{ }}, use {{` `}}. # For example, {{ REDACTED_EMAIL }} becomes {{` {{ REDACTED_EMAIL }} `}}. config: receivers: otlp: protocols: grpc: endpoint: ${env:MY_POD_IP}:4317 max_recv_msg_size_mib: 7 http: endpoint: ${env:MY_POD_IP}:4318 processors: batch: send_batch_size: 1024 timeout: 5s # If set to null, will be overridden with values based on k8s resource limits memory_limiter: null attributes/shipper: actions: - key: shipper action: insert value: '${MY_POD_IP}' - key: cloud action: insert value: 'gcp' tail_sampling: decision_wait: 30s num_traces: 300000 expected_new_traces_per_sec: 100000 policies: [ { name: errors-policy, type: status_code, status_code: {status_codes: [ERROR]} }, { name: probablistic-policy, type: probabilistic, probabilistic: {sampling_percentage: 1} } ] # filter/include: # spans: # include: # match_type: regexp # services: # - order-service exporters: logging: {} coralogix: domain: "coralogixsg.com" private_key: "${CORALOGIX_PRIVATE_KEY}" application_name: "default" subsystem_name: "nodes" application_name_attributes: - "applicationName" - "service.namespace" - "k8s.namespace.name" subsystem_name_attributes: - "service.name" - "k8s.deployment.name" - "k8s.statefulset.name" - "k8s.daemonset.name" - "k8s.cronjob.name" - "k8s.job.name" - "k8s.container.name" timeout: 30s otlp/elastic: endpoint: "946ece6f7b344005aa1e5c273b1a886f.apm.psc.asia-southeast1.gcp.elastic-cloud.com:443" headers: Authorization: "Bearer ehllv9fQQ7GGMOjE79" timeout: 10s extensions: # The health_check extension is mandatory for this chart. # Without the health_check extension the collector will fail the readiness and liveliness probes. # The health_check extension can be modified, but should never be removed. health_check: {} # memory_ballast: {} connectors: spanmetrics: histogram: explicit: buckets: [100us, 1ms, 2ms, 6ms, 10ms, 100ms, 250ms] dimensions_cache_size: 1000 aggregation_temporality: "AGGREGATION_TEMPORALITY_CUMULATIVE" metrics_flush_interval: 15s service: telemetry: metrics: address: ${env:MY_POD_IP}:8888 extensions: - health_check # - memory_ballast pipelines: # traces: # receivers: # - otlp # processors: # - tail_sampling # - attributes/shipper # - batch # exporters: # - coralogix # - spanmetrics traces: receivers: - otlp processors: - tail_sampling - attributes/shipper # - filter/include - batch exporters: - otlp/elastic # - spanmetrics metrics: null logs: null image: # If you want to use the core image `otel/opentelemetry-collector`, you also need to change `command.name` value to `otelcol`. #repository: 847438129436.dkr.ecr.ap-southeast-1.amazonaws.com/otel/opentelemetry-collector-contrib repository: asia-southeast1-docker.pkg.dev/meesho-devops-admin-0622/admin/sre/opentelemetry-collector-contrib # repository: otel/opentelemetry-collector-contrib pullPolicy: IfNotPresent # Overrides the image tag whose default is the chart appVersion. tag: "0.87.0" # When digest is set to a non-empty value, images will be pulled by digest (regardless of tag value). digest: "" imagePullSecrets: [] # OpenTelemetry Collector executable command: name: otelcol-contrib extraArgs: [] serviceAccount: # Specifies whether a service account should be created create: true # Annotations to add to the service account annotations: {} # The name of the service account to use. # If not set and create is true, a name is generated using the fullname template name: "" clusterRole: # Specifies whether a clusterRole should be created # Some presets also trigger the creation of a cluster role and cluster role binding. # If using one of those presets, this field is no-op. create: false # Annotations to add to the clusterRole # Can be used in combination with presets that create a cluster role. annotations: {} # The name of the clusterRole to use. # If not set a name is generated using the fullname template # Can be used in combination with presets that create a cluster role. name: "" # A set of rules as documented here : https://kubernetes.io/docs/reference/access-authn-authz/rbac/ # Can be used in combination with presets that create a cluster role to add additional rules. rules: [] # - apiGroups: # - '' # resources: # - 'pods' # - 'nodes' # verbs: # - 'get' # - 'list' # - 'watch' clusterRoleBinding: # Annotations to add to the clusterRoleBinding # Can be used in combination with presets that create a cluster role binding. annotations: {} # The name of the clusterRoleBinding to use. # If not set a name is generated using the fullname template # Can be used in combination with presets that create a cluster role binding. name: "" podSecurityContext: {} securityContext: {} # nodeSelector: [] # tolerations: {} nodeSelector: dedicated: "opentelemetry" tolerations: - key: "dedicated" operator: "Equal" value: "opentelemetry" effect: "NoSchedule" affinity: {} topologySpreadConstraints: [] # Allows for pod scheduler prioritisation priorityClassName: "" #extraEnvs: [] extraEnvs: - name: OTEL_RESOURCE_ATTRIBUTES value: "k8s.node.name=$(K8S_NODE_NAME)" - name: KUBE_NODE_NAME valueFrom: fieldRef: apiVersion: v1 fieldPath: spec.nodeName extraEnvsFrom: [] extraVolumes: [] extraVolumeMounts: [] # Configuration for ports # nodePort is also allowed ports: otlp: enabled: true containerPort: 4317 servicePort: 4317 # hostPort: 4317 protocol: TCP # nodePort: 30317 appProtocol: grpc otlp-http: enabled: true containerPort: 4318 servicePort: 4318 # hostPort: 4318 protocol: TCP jaeger-compact: enabled: false containerPort: 6831 servicePort: 6831 # hostPort: 6831 protocol: UDP jaeger-thrift: enabled: false containerPort: 14268 servicePort: 14268 # hostPort: 14268 protocol: TCP jaeger-grpc: enabled: false containerPort: 14250 servicePort: 14250 # hostPort: 14250 protocol: TCP zipkin: enabled: false containerPort: 9411 servicePort: 9411 # hostPort: 9411 protocol: TCP metrics: # The metrics port is disabled by default. However you need to enable the port # in order to use the ServiceMonitor (serviceMonitor.enabled) or PodMonitor (podMonitor.enabled). enabled: false containerPort: 8888 servicePort: 8888 protocol: TCP # Resource limits & requests. Update according to your own use case as these values might be too low for a typical deployment. #resources: {} resources: requests: cpu: 25 memory: 25Gi limits: cpu: 30 memory: 30Gi # Annotations to be added to pod podAnnotations: otel.io/path: /metrics otel.io/port: '8888' otel.io/scrape: 'true' podLabels: {} # Host networking requested for this pod. Use the host's network namespace. hostNetwork: false # Pod DNS policy ClusterFirst, ClusterFirstWithHostNet, None, Default, None dnsPolicy: "ClusterFirstWithHostNet" # Custom DNS config. Required when DNS policy is None. dnsConfig: {} # only used with deployment mode replicaCount: 1 # only used with deployment mode revisionHistoryLimit: 100 annotations: {} # prometheus.io/path: "/metrics" # prometheus.io/scrape: "true" # prometheus.io/port: "8888" # List of extra sidecars to add extraContainers: [] # extraContainers: # - name: test # command: # - cp # args: # - /bin/sleep # - /test/sleep # image: busybox:latest # volumeMounts: # - name: test # mountPath: /test # List of init container specs, e.g. for copying a binary to be executed as a lifecycle hook. # Another usage of init containers is e.g. initializing filesystem permissions to the OTLP Collector user `10001` in case you are using persistence and the volume is producing a permission denied error for the OTLP Collector container. initContainers: [] # initContainers: # - name: test # image: busybox:latest # command: # - cp # args: # - /bin/sleep # - /test/sleep # volumeMounts: # - name: test # mountPath: /test # - name: init-fs # image: busybox:latest # command: # - sh # - '-c' # - 'chown -R 10001: /var/lib/storage/otc' # use the path given as per `extensions.file_storage.directory` & `extraVolumeMounts[x].mountPath` # volumeMounts: # - name: opentelemetry-collector-data # use the name of the volume used for persistence # mountPath: /var/lib/storage/otc # use the path given as per `extensions.file_storage.directory` & `extraVolumeMounts[x].mountPath` # Pod lifecycle policies. lifecycleHooks: {} # lifecycleHooks: # preStop: # exec: # command: # - /test/sleep # - "5" # liveness probe configuration # Ref: https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-startup-probes/ ## livenessProbe: # Number of seconds after the container has started before startup, liveness or readiness probes are initiated. # initialDelaySeconds: 1 # How often in seconds to perform the probe. # periodSeconds: 10 # Number of seconds after which the probe times out. # timeoutSeconds: 1 # Minimum consecutive failures for the probe to be considered failed after having succeeded. # failureThreshold: 1 # Duration in seconds the pod needs to terminate gracefully upon probe failure. # terminationGracePeriodSeconds: 10 httpGet: port: 13133 path: / # readiness probe configuration # Ref: https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-startup-probes/ ## readinessProbe: # Number of seconds after the container has started before startup, liveness or readiness probes are initiated. # initialDelaySeconds: 1 # How often (in seconds) to perform the probe. # periodSeconds: 10 # Number of seconds after which the probe times out. # timeoutSeconds: 1 # Minimum consecutive successes for the probe to be considered successful after having failed. # successThreshold: 1 # Minimum consecutive failures for the probe to be considered failed after having succeeded. # failureThreshold: 1 httpGet: port: 13133 path: / service: # Enable the creation of a Service. # By default, it's enabled on mode != daemonset. # However, to enable it on mode = daemonset, its creation must be explicitly enabled # enabled: true type: ClusterIP # type: LoadBalancer # loadBalancerIP: 1.2.3.4 # loadBalancerSourceRanges: [] # By default, Service of type 'LoadBalancer' will be created setting 'externalTrafficPolicy: Cluster' # unless other value is explicitly set. # Possible values are Cluster or Local (https://kubernetes.io/docs/tasks/access-application-cluster/create-external-load-balancer/#preserving-the-client-source-ip) # externalTrafficPolicy: Cluster annotations: io.cilium/global-service: "true" # By default, Service will be created setting 'internalTrafficPolicy: Local' on mode = daemonset # unless other value is explicitly set. # Setting 'internalTrafficPolicy: Cluster' on a daemonset is not recommended # internalTrafficPolicy: Cluster ingress: enabled: false # annotations: {} # ingressClassName: nginx # hosts: # - host: collector.example.com # paths: # - path: / # pathType: Prefix # port: 4318 # tls: # - secretName: collector-tls # hosts: # - collector.example.com # Additional ingresses - only created if ingress.enabled is true # Useful for when differently annotated ingress services are required # Each additional ingress needs key "name" set to something unique additionalIngresses: [] # - name: cloudwatch # ingressClassName: nginx # annotations: {} # hosts: # - host: collector.example.com # paths: # - path: / # pathType: Prefix # port: 4318 # tls: # - secretName: collector-tls # hosts: # - collector.example.com podMonitor: # The pod monitor by default scrapes the metrics port. # The metrics port needs to be enabled as well. enabled: false metricsEndpoints: - port: metrics # interval: 15s # additional labels for the PodMonitor extraLabels: {} # release: kube-prometheus-stack serviceMonitor: # The service monitor by default scrapes the metrics port. # The metrics port needs to be enabled as well. enabled: false metricsEndpoints: - port: metrics # interval: 15s # additional labels for the ServiceMonitor extraLabels: {} # release: kube-prometheus-stack # PodDisruptionBudget is used only if deployment enabled podDisruptionBudget: enabled: false # minAvailable: 2 maxUnavailable: 1 # autoscaling is used only if deployment enabled autoscaling: enabled: true minReplicas: 5 maxReplicas: 300 behavior: {} targetCPUUtilizationPercentage: 80 targetMemoryUtilizationPercentage: 80 rollout: # When 'mode: daemonset', maxSurge cannot be used when hostPort is set for any of the ports rollingUpdate: # maxSurge: 10% maxUnavailable: 5 strategy: RollingUpdate prometheusRule: enabled: false groups: [] # Create default rules for monitoring the collector defaultRules: enabled: false # additional labels for the PrometheusRule extraLabels: {} statefulset: # volumeClaimTemplates for a statefulset volumeClaimTemplates: [] podManagementPolicy: "Parallel" networkPolicy: enabled: false # Annotations to add to the NetworkPolicy annotations: {} # Configure the 'from' clause of the NetworkPolicy. # By default this will restrict traffic to ports enabled for the Collector. If # you wish to further restrict traffic to other hosts or specific namespaces, # see the standard NetworkPolicy 'spec.ingress.from' definition for more info: # https://kubernetes.io/docs/reference/kubernetes-api/policy-resources/network-policy-v1/ allowIngressFrom: [] # # Allow traffic from any pod in any namespace, but not external hosts # - namespaceSelector: {} # # Allow external access from a specific cidr block # - ipBlock: # cidr: 192.168.1.64/32 # # Allow access from pods in specific namespaces # - namespaceSelector: # matchExpressions: # - key: kubernetes.io/metadata.name # operator: In # values: # - "cats" # - "dogs" # Add additional ingress rules to specific ports # Useful to allow external hosts/services to access specific ports # An example is allowing an external prometheus server to scrape metrics # # See the standard NetworkPolicy 'spec.ingress' definition for more info: # https://kubernetes.io/docs/reference/kubernetes-api/policy-resources/network-policy-v1/ extraIngressRules: [] # - ports: # - port: metrics # protocol: TCP # from: # - ipBlock: # cidr: 192.168.1.64/32 # Restrict egress traffic from the OpenTelemetry collector pod # See the standard NetworkPolicy 'spec.egress' definition for more info: # https://kubernetes.io/docs/reference/kubernetes-api/policy-resources/network-policy-v1/ egressRules: [] # - to: # - namespaceSelector: {} # - ipBlock: # cidr: 192.168.10.10/24 # ports: # - port: 1234 # protocol: TCP