Deploy to a GKE Autopilot cluster
Serverless clusters often require custom configuration for the observe agent to work. In the case of GKE Autopilot, there are certain constraints:
- Only
var/logis allowed as ahostPathfor Host Path Volumes, source. This works for collecting pod logs, but thehostmetricsreceiver would require some extra mounts outside of this folder. Hence, thehostmetricsreceiver is disabled in the config below, and mounts required for its functioning are removed. - There are limitations on the kinds of node affinity selector one can have, see here.
observeinc.com/unschedulableis not allowed, and hence they must be removed.
Add the following to your values.yaml file:
# Remove observeinc.com/unschedulable affinity rule for all components
# clean up some unneeded volumes and volumeMounts
node:
enabled: true
metrics:
enabled: false
forwarder:
enabled: true
mode: deployment
cluster-events:
affinity:
nodeAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
nodeSelectorTerms:
- matchExpressions:
- key: kubernetes.io/os
operator: NotIn
values: [windows]
cluster-metrics:
affinity:
nodeAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
nodeSelectorTerms:
- matchExpressions:
- key: kubernetes.io/os
operator: NotIn
values: [windows]
prometheus-scraper:
affinity:
nodeAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
nodeSelectorTerms:
- matchExpressions:
- key: kubernetes.io/os
operator: NotIn
values: [windows]
node-logs-metrics:
affinity:
nodeAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
nodeSelectorTerms:
- matchExpressions:
- key: kubernetes.io/os
operator: NotIn
values: [windows]
extraVolumes:
- name: "observe-agent-deployment-config"
configMap:
name: "observe-agent"
items:
- key: "relay"
path: "observe-agent.yaml"
defaultMode: 420
- name: varlogpods
hostPath:
path: /var/log/pods
extraVolumeMounts:
- name: observe-agent-deployment-config
mountPath: /observe-agent-conf
- name: varlogpods
mountPath: /var/log/pods
readOnly: true
monitor:
affinity:
nodeAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
nodeSelectorTerms:
- matchExpressions:
- key: kubernetes.io/os
operator: NotIn
values: [windows]
forwarder:
mode: deployment
affinity:
nodeAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
nodeSelectorTerms:
- matchExpressions:
- key: kubernetes.io/os
operator: NotIn
values: [windows]
gateway:
affinity:
nodeAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
nodeSelectorTerms:
- matchExpressions:
- key: kubernetes.io/os
operator: NotIn
values: [windows]
After deploying, your data should be flowing in.
Updated about 4 hours ago