Skip to content

Instantly share code, notes, and snippets.

@whitlockjc
whitlockjc / Useful_kubectl_Commands.md
Last active February 13, 2017 18:40
Useful kubectl commands

Useful kubectl commands not in the kubectl Cheat Sheet:

List all nodes and their external IP

kubectl get nodes -o jsonpath='{range .items[*]}{.metadata.name}{"\t"}{.status.addresses[?(@.type=="ExternalIP")].address}{"\n"}{end}'

List all running Pods and their IP

kubectl get pods --all-namespaces -o jsonpath='{range .items[?(@.status.phase=="Running")]}{.metadata.name}{"\t"}{.status.podIP}{"\n"}{end}'

@whitlockjc
whitlockjc / k8s-namespace-watcher.js
Created May 22, 2017 18:16
Simple Node.js example of how to use a Kubernetes watcher
'use strict';
const fs = require('fs')
const http = require('http')
const K8S_HOST = process.env['K8S_HOST'] || '10.100.0.1'
const K8S_SECRET = process.env['K8S_SECRET'] ||
fs.readFileSync('/var/run/secrets/kubernetes.io/serviceaccount/token', 'utf-8')
var req = http.request({
@whitlockjc
whitlockjc / k8s-intra-cluster-router.md
Last active June 22, 2018 04:33
Proof of concept on how to implement an intra-cluster router within Kubernetes.

Overview

Imagine you are an API Management company and your business depends on your ability to be involved in the request/response lifecycle for HTTP-based API traffic. Also imagine that you've got a Kubernetes cluster that runs both your company's applications and even some client applications. This means when it comes to doing API Management for all necessary traffic, you need to be involved in the request/response lifecycle for targets running within Kubernetes for both requests originating outside the cluster and even some (if not all) requests originating within the cluster. To continue this conversation, let's establish some terminology:

  • Inter-Cluster: An external request is made for an API that maps to a resource running within Kubernetes
@whitlockjc
whitlockjc / Environment_for_Developing_Kubernetes.md
Last active June 15, 2019 18:35
Resources on creating a development environment for contributing to Kubernetes.

Environment for Developing Kubernetes

First and foremost, this is not a document on how to create an environment for developing applications targeting Kubernetes as its runtime. This document is to outline the steps required to create an environment for contributing to Kubernetes based on recently setting up both Linux and Mac development environments. This document is written as if you will be creating your development enivonment on OS X but just know that things are basically the same when on other OSes. Of course, the installation and configuration of these tools will changed based on which OS you're on, and possibly other things, but the gist is that in this guide when you see that tool X is required, you follow whatever steps to install tool X on your OS.

@whitlockjc
whitlockjc / wordcount.js
Created May 13, 2014 20:23
Node.js Based Wordcount MapReduce Job
'use strict';
var FileInputFormat = require('hadoop-input').FileInputFormat;
var FileOutputFormat = require('hadoop-output').FileOutputFormat;
var counterGroup = 'Word Count Counters';
var uniqueWordCounterName = 'Unique Words';
var totalWordsCounterName = 'Total Words';
var uniqueWordsCounter;
var totalWordsCounter;
@whitlockjc
whitlockjc / example.el
Created March 9, 2016 18:25
Emacs linum-format that works around whitespace-mode and padding
;; Linum mode
(global-linum-mode t)
;; Custom face/function to pad the line number in a way that does not conflict with whitespace-mode
(defface linum-padding
`((t :inherit 'linum
:foreground ,(face-attribute 'linum :background nil t)))
"Face for displaying leading zeroes for line numbers in display margin."
:group 'linum)
@whitlockjc
whitlockjc / rgbaToHex.js
Last active July 18, 2022 10:25
Use JavaScript to Convert RGBA CSS Value to Hexadecimal
#!/usr/bin/env node
// Takes an rgba() CSS value and converts it to its 8 digit hexadecimal value.
//
// Usage: ./rgbaToHex.js "{YOUR_RGBA_STRING}"
//
// Example: ./rgbaToHex.js "rgba(197, 200, 198, .2)" => #C5C8C633
function trim (str) {
return str.replace(/^\s+|\s+$/gm,'');