Skip to content

Instantly share code, notes, and snippets.

⚙️
Building reliable solutions

Xabier Larrakoetxea Gallego slok

⚙️
Building reliable solutions
Block or report user

Report or block slok

Hide content and notifications from this user.

Learn more about blocking users

Contact Support about this user’s behavior.

Learn more about reporting abuse

Report abuse
View GitHub Profile
@slok
slok / main.go
Created Jun 4, 2018
Kubernetes controller that updates annotation on pods with `kooper: test` label
View main.go
package main
import (
"os"
"path/filepath"
"time"
corev1 "k8s.io/api/core/v1"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/runtime"
View kooper-vgo.log
$ time vgo build
vgo: finding github.com/google/cadvisor v0.0.0-20170309230114-17543becf905
vgo: finding gopkg.in/olivere/elastic.v2 v2.0.0-20151008152123-3cfe88295d20
vgo: finding golang.org/x/oauth2 v0.0.0-20150321034511-ca8a464d23d5
vgo: finding golang.org/x/net v0.0.0-20151120032300-5627bad10b82
vgo: finding github.com/influxdb/influxdb v0.0.0-20151125225445-9eab56311373
vgo: finding github.com/go-ini/ini v0.0.0-20160207163330-193d1ecb466b
vgo: finding github.com/eapache/queue v0.0.0-20150606115303-ded5959c0d4e
vgo: finding github.com/coreos/rkt v0.0.0-20160513154944-14437382a98e
FindRepo: Get https://speter.net/go/exp/math/dec/inf?go-get=1: x509: certificate signed by unknown authority
@slok
slok / handler-opentracing.go
Created May 23, 2018
kooper handler opentracing
View handler-opentracing.go
hand := &handler.HandlerFunc{
AddFunc: func(ctx context.Context, obj runtime.Object) error {
// Get the parent span.
pSpan := opentracing.SpanFromContext(ctx)
// Create a new span.
span := tracer.StartSpan("AddFunc", opentracing.ChildOf(pSpan.Context()))
defer span.Finish()
// Do stuff...
View kooper-example-controller.go
// Initialize logger.
log := &log.Std{}
// Create the controller that will refresh every 30 seconds.
ctrl := controller.NewSequential(30*time.Second, hand, retr, log)
// Start our controller.
stopC := make(chan struct{})
if err := ctrl.Run(stopC); err != nil {
log.Errorf("error running controller: %s", err)
os.Exit(1)
}
View kooper-example-handler.go
// Our domain logic that will print every add/sync/update and delete event we .
hand := &handler.HandlerFunc{
AddFunc: func(obj runtime.Object) error {
pod := obj.(*corev1.Pod)
log.Infof("Pod Add event: %s/%s", pod.Namespace, pod.Name)
return nil
},
DeleteFunc: func(s string) error {
log.Infof("Pod Delete event: %s", s)
return nil
View kooper-example-resource.go
// Create our retriever so the controller knows how to get/listen for pod events.
retr := &retrieve.Resource{
Object: &corev1.Pod{},
ListerWatcher: &cache.ListWatch{
ListFunc: func(options metav1.ListOptions) (runtime.Object, error) {
return k8scli.CoreV1().Pods("").List(options)
},
WatchFunc: func(options metav1.ListOptions) (watch.Interface, error) {
return k8scli.CoreV1().Pods("").Watch(options)
},
@slok
slok / amfirer.go
Last active Jun 4, 2019
Alertmanager alarm tester. Fire a custom alert to your alertmanager: https://github.com/prometheus/alertmanager
View amfirer.go
package main
import (
"bytes"
"encoding/json"
"flag"
"fmt"
"log"
"net/http"
"net/url"
View consul_sync_check.sh
#!/bin/bash
# Wait until consul instance on clust
INSTANCE_IP="127.0.0.1"
NEXT_WAIT_TIME=0
MAX_WAIT_TIME=35
check_consul_sync() {
# If we don't have leaders _last_log_index then get it
@slok
slok / mockserver.go
Created Mar 14, 2017
A simple HTTP server to mock responses
View mockserver.go
package main
import (
"flag"
"fmt"
"log"
"net/http"
)
func initFlags(addr *string, port *int, retCode *int, body *string) {
@slok
slok / trap.sh
Created Sep 15, 2016
onliner trap
View trap.sh
trap 'echo captured;sleep 30;exit' SIGINT SIGTERM && while true; do sleep 1; done
You can’t perform that action at this time.