Sign inSign up

quinovas/metacontroller-register-targets

By quinovas

•Updated over 7 years ago

Registers designated k8s pods with AWS TargetGroup using the MetaController

Image
0

1.4K

quinovas/metacontroller-register-targets repository overview

This is a service to be run bu the k8s metacontroller plugin⁠

The controller listens for pods with the correct annotations and calls AWS API to register them into target groups.

Requires AWS credentials and region environment variables set at runtime. And a role that allows registering/deregistering targets. I use kiam⁠ for this.

⁠Helm setup:

⁠templates/controller.yaml
apiVersion: metacontroller.k8s.io/v1alpha1
kind: DecoratorController
metadata:
  name: log-target-data
spec:
  resources:
  - apiVersion: v1
    resource: pods
    annotationSelector:
      matchExpressions:
      - {key: logTargetInfo, operator: Exists}
  hooks:
    sync:
      webhook:
        url: http://register-targets.metacontroller.svc.cluster.local/log-info

---
apiVersion: metacontroller.k8s.io/v1alpha1
kind: DecoratorController
metadata:
  name: register-target
spec:
  resources:
  - apiVersion: v1
    resource: pods
    annotationSelector:
      matchExpressions:
      - {key: targetGroupArn, operator: Exists}
      - {key: targetPort, operator: Exists}
  hooks:
    sync:
      webhook:
        url: http://register-targets.metacontroller.svc.cluster.local/register
    finalize:
      webhook:
        url: http://register-targets.metacontroller.svc.cluster.local/deregister

---
apiVersion: extensions/v1beta1
kind: DaemonSet
metadata:
  name: register-targets
  namespace: metacontroller
spec:
  template:
    metadata:
      labels:
        app: register-targets
      annotations:
        iam.amazonaws.com/role: {{ .Values.role }}
    spec:
      containers:
      - name: hooks
        image: {{ .Values.image }}
        imagePullPolicy: Always
        env:
        - name: AWS_REGION
          value: {{ .Values.region }}
---
apiVersion: v1
kind: Service
metadata:
  name: register-targets
  namespace: metacontroller
spec:
  selector:
    app: register-targets
  ports:
  - port: 80
⁠values.yaml
image: quinovas/metacontroller-register-targets:latest
role: kube-register-targets # The role that allows metacontroller to register the targets
region: us-east-1

Tag summary

Content type

Image

Digest

Size

26.4 MB

Last updated

over 7 years ago

docker pull quinovas/metacontroller-register-targets