Skip to content

Instantly share code, notes, and snippets.

@jmhobbs
Last active September 8, 2017 18:46
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save jmhobbs/c180ce2cd71630bb70dd64b659b46e99 to your computer and use it in GitHub Desktop.
Save jmhobbs/c180ce2cd71630bb70dd64b659b46e99 to your computer and use it in GitHub Desktop.
HDC Kubernetes Demo
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: kubernetes-demo
spec:
replicas: 1
template:
metadata:
labels:
app: kubernetes-demo
spec:
containers:
- name: kubernetes-demo
image: jmhobbs/kubernetes-demo:latest
imagePullPolicy: Always
ports:
- containerPort: 8080
env:
- name: MESSAGE
value: "Hello World!"
- name: POD_NAME
valueFrom:
fieldRef:
fieldPath: metadata.name
FROM scratch
ADD main /
EXPOSE 8080
CMD ["/main"]
package main
import (
"fmt"
"log"
"net/http"
"os"
"time"
)
type response struct {
Message string
Pod string
}
func main() {
http.Handle("/", http.HandlerFunc(handler))
log.Println("Listening on :8080")
http.ListenAndServe(":8080", nil)
}
func handler(w http.ResponseWriter, r *http.Request) {
log.Printf("%s %s - %s \n", r.Method, r.URL, r.RemoteAddr)
w.Header()["Content-Type"] = []string{"text/plain"}
w.Header()["Cache-Control"] = []string{"no-cache"}
w.Header()["Refresh"] = []string{"1"}
if r.URL.Path != "/" {
w.WriteHeader(http.StatusNotFound)
w.Write([]byte("404 - Not Found"))
return
}
resp := response{os.Getenv("MESSAGE"), os.Getenv("POD_NAME")}
if resp.Message == "" {
resp.Message = "Hello World!"
}
fmt.Fprintf(w, "%s\n\nServing from Pod %s\n\n%s", resp.Message, resp.Pod, time.Now().String())
}
apiVersion: v1
kind: Service
metadata:
name: kubernetes-demo
spec:
type: LoadBalancer
selector:
app: kubernetes-demo
ports:
- port: 80
targetPort: 8080
protocol: TCP
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment