Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
36 changes: 32 additions & 4 deletions troubleshooting/os-audit/README.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,32 @@
The os-audit tool is the example code for
[enabling Linux auditd logs on GKE nodes](https://cloud.google.com/kubernetes-engine/docs/how-to/linux-auditd-logging),
which documents how to enable verbose operating system audit logs on Google
Kubernetes Engine nodes running Container-Optimized OS.
The os-audit tools provide example code for
[managing Linux auditd logs on GKE nodes](https://cloud.google.com/kubernetes-engine/docs/how-to/linux-auditd-logging),
which documents how to enable and disable verbose operating system audit logs on
Google Kubernetes Engine nodes running Container-Optimized OS.

#### Available Tools

- `cos-auditd-logging.yaml`: A DaemonSet that enables and starts the
`cloud-audit-setup` and `audit-rules` services on the host.

Deployment:

```sh
export CLUSTER_NAME=<CLUSTER_NAME> # e.g. 'cluster-1'
export CLUSTER_LOCATION=<CLUSTER_LOCATION> # e.g. 'us-central1-c'

envsubst '$CLUSTER_NAME,$CLUSTER_LOCATION' < cos-auditd-logging.yaml | kubectl apply -f -
```

- `cos-auditd-logging-disable.yaml`: A DaemonSet that disables these services
to revert changes and restore the default node logging state.

**Note**: Before deploying this DaemonSet, delete the `cos-auditd-logging`
DaemonSet and wait for all associated Pods to be deleted. Once the
`cleanup-auditd` DaemonSet (`cos-auditd-logging-disable.yaml`) has
successfully rolled out to all nodes, it can be deleted.

Deployment:

```sh
kubectl apply -f cos-auditd-logging-disable.yaml
```
78 changes: 78 additions & 0 deletions troubleshooting/os-audit/cos-auditd-logging-disable.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,78 @@
# Copyright 2026 Google LLC
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

apiVersion: v1
kind: Namespace
metadata:
name: cos-auditd
---
apiVersion: apps/v1
kind: DaemonSet
metadata:
name: cleanup-auditd
namespace: cos-auditd
annotations:
kubernetes.io/description: 'DaemonSet that disables Linux auditd logging on non-Autopilot COS nodes.'
spec:
selector:
matchLabels:
name: cleanup-auditd
template:
metadata:
labels:
name: cleanup-auditd
spec:
hostPID: true
initContainers:
- name: auditd-disabler
image: gke.gcr.io/gke-distroless/bash
command:
- /bin/bash
- -c
- |
echo "Disabling auditd services..."
chroot /host systemctl disable --now cloud-audit-setup.service || echo "cloud-audit-setup already disabled or not found."
chroot /host systemctl disable --now audit-rules.service || echo "audit-rules already disabled or not found."
echo "Auditd configuration complete."
securityContext:
privileged: true
volumeMounts:
- name: host
mountPath: /host
resources:
requests:
memory: 10Mi
cpu: 10m
limits:
cpu: 50m
memory: 32Mi
containers:
- name: pause
image: gke.gcr.io/pause:3.8
resources:
requests:
cpu: 10m
memory: 10Mi
limits:
cpu: 10m
memory: 10Mi
volumes:
- name: host
hostPath:
path: /
tolerations:
- effect: NoSchedule
operator: Exists
- effect: NoExecute
operator: Exists
7 changes: 5 additions & 2 deletions troubleshooting/os-audit/cos-auditd-logging.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -39,8 +39,11 @@ spec:
dnsPolicy: Default
initContainers:
- name: cos-auditd-setup
image: ubuntu
command: ["chroot", "/host", "systemctl", "start", "cloud-audit-setup"]
image: gke.gcr.io/gke-distroless/bash
command:
- /bin/bash
- -c
- "chroot /host systemctl enable --now cloud-audit-setup.service"
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I like the improvement. Have you tested it manually?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

yes, the updated "installer" and "disabler"

securityContext:
privileged: true
volumeMounts:
Expand Down