Help us shape the future of Go! Take the 2026 Go Developer Survey

k8s-object-diff-go

module
v0.14.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Sep 15, 2026 License: MIT

README

k8s-object-diff-go

objdiff - k8s object diff by object id

Usage

objdiff [flags] LEFT_FILE RIGHT_FILE

Either LEFT_FILE or RIGHT_FILE can be set to "-". Here, "-" represents stdin.

Object ID

A unique ID for a k8s object. e.g.

apiVersion: v1
kind: Pod
metadata:
  name: nginx
  namespace: default

then id is 'v1>Pod>default>nginx'.

Output format

idlist

All object IDs.

id

ID diff.

text

Unified diff.

yaml

Array of

id: "Object ID"
diff: "Unified diff"
left: "Left object (optional)"
right: "Right object (optional)"
type: "Diff type (add or change or destroy)"
markdown
# Objdiff Summary

Left file <-> Right file

| **add** | **change** | **destroy** |
| :---: | :---: | :---: |
| x | y | z |
## Diff type Object ID

<details><summary>View Diff</summary>
Unified diff
</details>

or

# Objdiff Summary

Left file <-> Right file

No changes.

Exit status

0 if inputs are the same. 1 if inputs differ. Otherwise 2.

Override differ

objdiff -x diff left.yml right.yml

invokes

diff --unified=3 --color=never --label left.yml --label right.yml LEFT_FILE RIGHT_FILE
OBJDIFF_DIFF_CMD='diff' objdiff -c -C 5 left.yml right.yml

invokes

diff --unified=5 --color=always --label left.yml --label right.yml LEFT_FILE RIGHT_FILE

Configuration & Precedence

Configuration values are resolved in the following order of precedence (highest to lowest):

  1. Command-line flags (e.g. --diff-cmd)
  2. Environment variables prefixed with OBJDIFF_ (e.g. OBJDIFF_DIFF_CMD, OBJDIFF_CONTEXT)
  3. Default values defined for each flag

Environment variables are derived from flag names in uppercase with hyphens replaced by underscores. e.g. --ignore-matching-lines -> OBJDIFF_IGNORE_MATCHING_LINES

Flags

      --allow-duplicate-key                 allow the use of keys with the same name in the same map (default true)
  -c, --color                               colored diff
  -C, --context int                         diff context (default 3)
      --debug                               enable debug log
  -x, --diff-cmd string                     invoke this to get diff instead of builtin differ
  -a, --ignore-annotation stringArray       ignore annotation by key (may be separated by ';' or specified multiple times)
  -f, --ignore-field stringArray            ignore field by path or yq expression (may be separated by ';' or specified multiple times)
  -l, --ignore-label stringArray            ignore label by key (may be separated by ';' or specified multiple times)
  -m, --ignore-managed-fields               ignore metadata.managedFields
  -i, --ignore-matching-lines stringArray   ignore lines matching regexp (may be separated by ';' or specified multiple times)
  -s, --ignore-status                       ignore status field
  -n, --indent int                          yaml indent (default 2)
  -L, --label stringArray                   use label instead of file name (may be separated by ';' or specified multiple times)
      --markdown-heading uint               highest heading level in markdown (default 1)
  -o, --out string                          output format: text,yaml,id,idlist,markdown (default "text")
  -q, --quiet                               quiet log
  -d, --separator string                    object id separator (default ">")
      --success                             exit with 0 even if inputs differ
  -v, --verbose                             enable verbose output; annotate diff type and display summary
      --version                             print objdiff version

Example

For left.yml and right.yml, executing

objdiff left.yml right.yml

yields the result.

Installation

go install github.com/berquerant/k8s-object-diff-go/cmd/objdiff@latest

Directories

Path Synopsis
cmd
objdiff command

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL