Skip to content

dashanji/kubernetes-log-export-action

Use this GitHub action with your project
Add this Action to an existing workflow or create a new one
View on Marketplace
 
 

Repository files navigation

kubernetes-log-export-action

This GitHub action interacts with kubectl to download logs for all containers in the specified namespaces. It also generates a mapping of the files within the logging directory so Stoat can provide a link to browse the files generated by this action.

Inputs

  • show_timestamps: the string 'true' or 'false'. 'true' will prefix each log line with the k8s log timestamp
  • output_dir: directory that you want to specify

Example Configuration

      # k8s cluster and kubectl initialization 

      - name: Dump Kubernetes Logs
        uses: dashanji/kubernetes-log-export-action@v1
        with:
          show_timestamps: 'true'
          output_dir: ./output

      - name: Run Stoat Action
        uses: stoat-dev/stoat-action@v0
        if: always()

Example Output

For the above example, here's a possible output file structure:

❯ find output
output
output/default
output/default/whalesay-77db544f4d-rwmx9
output/default/whalesay-77db544f4d-rwmx9/whalesay.log
output/filetree.json
output/kube-system
output/kube-system/coredns-95db45d46-4dcml
output/kube-system/coredns-95db45d46-4dcml/coredns.log
output/kube-system/kube-proxy-rtm57
output/kube-system/kube-proxy-rtm57/kube-proxy.log
output/kube-system/kube-controller-manager-docker-desktop
output/kube-system/kube-controller-manager-docker-desktop/kube-controller-manager.log
output/kube-system/coredns-95db45d46-sl4vs
output/kube-system/coredns-95db45d46-sl4vs/coredns.log
output/kube-system/kube-apiserver-docker-desktop
output/kube-system/kube-apiserver-docker-desktop/kube-apiserver.log
output/kube-system/vpnkit-controller
output/kube-system/vpnkit-controller/vpnkit-controller.log
output/kube-system/etcd-docker-desktop
output/kube-system/etcd-docker-desktop/etcd.log
output/kube-system/kube-scheduler-docker-desktop
output/kube-system/kube-scheduler-docker-desktop/kube-scheduler.log
output/kube-system/storage-provisioner
output/kube-system/storage-provisioner/storage-provisioner.log

The file tree in output/filetree.json would have the following contents:

{
  "name": "/",
  "type": "directory",
  "children": [
    {
      "name": "default",
      "type": "directory",
      "children": [
        {
          "name": "whalesay-77db544f4d-rwmx9",
          "type": "directory",
          "children": [{ "name": "whalesay.log", "type": "file" }]
        }
      ]
    },
    {
      "name": "kube-system",
      "type": "directory",
      "children": [
        {
          "name": "coredns-95db45d46-4dcml",
          "type": "directory",
          "children": [{ "name": "coredns.log", "type": "file" }]
        },
        {
          "name": "coredns-95db45d46-sl4vs",
          "type": "directory",
          "children": [{ "name": "coredns.log", "type": "file" }]
        },
        { "name": "etcd-docker-desktop", "type": "directory", "children": [{ "name": "etcd.log", "type": "file" }] },
        {
          "name": "kube-apiserver-docker-desktop",
          "type": "directory",
          "children": [{ "name": "kube-apiserver.log", "type": "file" }]
        },
        {
          "name": "kube-controller-manager-docker-desktop",
          "type": "directory",
          "children": [{ "name": "kube-controller-manager.log", "type": "file" }]
        },
        { "name": "kube-proxy-rtm57", "type": "directory", "children": [{ "name": "kube-proxy.log", "type": "file" }] },
        {
          "name": "kube-scheduler-docker-desktop",
          "type": "directory",
          "children": [{ "name": "kube-scheduler.log", "type": "file" }]
        },
        {
          "name": "storage-provisioner",
          "type": "directory",
          "children": [{ "name": "storage-provisioner.log", "type": "file" }]
        },
        {
          "name": "vpnkit-controller",
          "type": "directory",
          "children": [{ "name": "vpnkit-controller.log", "type": "file" }]
        }
      ]
    }
  ]
}

When provided as part of the configuration input to Stoat:

plugins:
  static_hosting:
    kube-logs:
      metadata:
        name: "Kubernetes Logs"
      path: output
      file_viewer: true

You get a nifty link in each of your pull requests that links to an interactive log viewer for all of your Kubernetes logs!

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Shell 82.1%
  • TypeScript 15.5%
  • JavaScript 2.4%