GithubHelp home page GithubHelp logo

3cky / kube-template Goto Github PK

View Code? Open in Web Editor NEW
27.0 5.0 5.0 175 KB

Watches Kubernetes for updates, writing output of a series of templates to files

License: Apache License 2.0

Go 97.48% Makefile 1.64% Dockerfile 0.88%
kubernetes template automation nginx haproxy haproxy-templates nginx-templates cluster load-balancer

kube-template's Introduction

kube-template

Inspired by HashiCorp's Consul Template, kube-template is a utility that queries a Kubernetes API server and uses its objects as input data for specified set of templates. Also it can run arbitrary commands for templates with updated output.

Please note this is a work in progress.

Build Status

Installation

Go 1.13+ is required to build kube-template. Check your version with go version before build.

  • git pull https://github.com/3cky/kube-template.git
  • cd kube-template
  • make install

Docker

If you want to create a Docker image

  • adjust Dockerfile in contrib/docker directory to fit your needs
  • configure settings files in contrib/docker/conf directory
  • issue make docker

Note - the built image is already configured to automatically locate Kubernetes API along with everything is needed to connect (e.g. Certificate Authority file, security token and so on).

Usage

Options

      --alsologtostderr                  log to standard error as well as files
      --command-timeout duration         Default command execution timeout (0 to execute commands without timeout checking) (default 15s)
  -c, --config string                    config file (default is ./kube-template.(yaml|json))
      --dry-run                          don't write template output, dump result to stdout
      --guess-kube-api-settings          guess Kubernetes API settings from POD environment
      --help-md                          get help in Markdown format
  -k, --kube-config string               Kubernetes config file to use
  -l, --left-delimiter string            templating left delimiter (default "{{")
      --log-backtrace-at traceLocation   when logging hits line file:N, emit a stack trace (default :0)
      --log-dir string                   If non-empty, write log files in this directory
      --log-flush-frequency duration     Maximum number of seconds between log flushes (default 5s)
      --logtostderr                      log to standard error instead of files (default true)
      --master string                    Kubernetes API server address (default is http://127.0.0.1:8080/)
      --once                             run template processing once and exit
  -p, --poll-period duration             Kubernetes API server poll period (0 disables server polling) (default 15s)
  -r, --right-delimiter string           templating right delimiter (default "}}")
      --stderrthreshold severity         logs at or above this threshold go to stderr (default 2)
  -t, --template stringSlice             adds a new template to watch on disk in the format
		'templatePath:outputPath[:command]'. This option is additive
		and may be specified multiple times for multiple templates
  -v, --v Level                          log level for V logs
      --version                          display the version number and build timestamp
      --vmodule moduleSpec               comma-separated list of pattern=N settings for file-filtered logging

Command Line

Process single template using data from remote Kubernetes API server and exit:

$ kube-template \
    --master="http://kube-api.server.com:8080" \
    --template="/tmp/input.tmpl:/tmp/output.txt" \ 
    --once 

Monitor local Kubernetes API server for updates every 30 seconds and update nginx and haproxy configuration files with reload:

$ kube-template \
    --template="/tmp/nginx.tmpl:/etc/nginx/nginx.conf:service nginx reload" \ 
    --template="/tmp/haproxy.tmpl:/etc/haproxy/haproxy.conf:service haproxy reload" \
    --poll-time=30s

Configuration File

kube-template looks for kube-template.json or kube-template.yaml configuration file in current working directory or file name specified by --config command line option.

YAML configuration file example:

 master: http://localhost:8080
 poll-period: 10s
 command-timeout: 30s

 templates:
   - path: in.txt.tmpl
     output: out.txt
     command: action.sh
     command-timeout: 60s

   - path: in.html.tmpl
     output: out.html

Please note: templates specified on the command line take precedence over those defined in a config file.

Signals

  • TERM, QUIT, INT: graceful shutdown
  • HUP: reload configuration file

Templating Language

kube-template works with templates in the Go Template format. In addition to the standard template functions, kube-template provides the following functions:

Kubernetes API

pods
{{pods "selector" "namespace"}}

Query Kubernetes API server for pods from given namespace (default if not specified) matching given selector (empty to get all pods).

Example:

{{range pods}}
{{.Name}}: {{.Status.Phase}}
{{end}}
services
{{services "selector" "namespace"}}

Query Kubernetes API server for services from given namespace (default if not specified) matching given selector (empty to get all services).

replicationcontrollers
{{replicationcontrollers "selector" "namespace"}}

Query Kubernetes API server for replication controllers from given namespace (default if not specified) matching given selector (empty to get all replication controllers).

events
{{events "selector" "namespace"}}

Query Kubernetes API server for events from given namespace (default if not specified) matching given selector (empty to get all events).

endpoints
{{endpoints "selector" "namespace"}}

Query Kubernetes API server for endpoints from given namespace (default if not specified) matching given selector (empty to get all endpoints).

nodes
{{nodes "selector"}}

Query Kubernetes API server for nodes matching given selector (empty to get all nodes).

namespaces
{{namespaces "selector"}}

Query Kubernetes API server for namespaces matching given selector (empty to get all namespaces).

componentstatuses
{{componentstatuses "selector"}}

Query Kubernetes API server for component statuses matching given selector (empty to get all componentstatuses).

configmaps
{{configmaps "selector" "namespace"}}

Query Kubernetes API server for config maps from given namespace (default if not specified) matching given selector (empty to get all configmaps).

limitranges
{{limitranges "selector" "namespace"}}

Query Kubernetes API server for limit ranges from given namespace (default if not specified) matching given selector (empty to get all limitranges).

persistentvolumes
{{persistentvolumes "selector"}}

Query Kubernetes API server for persistent volumes matching given selector (empty to get all persistentvolumes).

persistentvolumeclaims
{{persistentvolumeclaims "selector" "namespace"}}

Query Kubernetes API server for persistent volume claims from given namespace (default if not specified) matching given selector (empty to get all persistentvolumeclaims).

podtemplates
{{podtemplates "selector" "namespace"}}

Query Kubernetes API server for pod templates from given namespace (default if not specified) matching given selector (empty to get all podtemplates).

resourcequotas
{{resourcequotas "selector" "namespace"}}

Query Kubernetes API server for resource quotas from given namespace (default if not specified) matching given selector (empty to get all resourcequotas).

secrets
{{secrets "selector" "namespace"}}

Query Kubernetes API server for secrets from given namespace (default if not specified) matching given selector (empty to get all secrets).

serviceaccounts
{{serviceaccounts "selector" "namespace"}}

Query Kubernetes API server for service accounts from given namespace (default if not specified) matching given selector (empty to get all serviceaccounts).


Helper Functions

All Sprig library template functions (string/math/date/etc) are supported (thanks @bpineau).

EXAMPLES

Populate nginx upstream with pods labeled 'name=test-pod':

upstream test-pod-upstream {
{{with $pods := pods "name=test-pod"}}
    ip_hash;
    {{range $pods}}
    server {{.Status.PodIP}}:8080;
    {{end}}
{{else}}
    # No pods with given label were found, use stub server
    server 127.0.0.1:8081;
{{end}}
}

Create haproxy TCP balancer for pods listening on container port 9000:

{{with $pods := pods "name=test-pod"}}
{{$maxconn := 1000}}
listen test-pod-balancer
    bind *:9000
    mode tcp
    maxconn {{mul $maxconn (len $pods)}}
    balance roundrobin
    {{range $pods}}
    server {{.Name}} {{.Status.PodIP}}:9000 maxconn {{$maxconn}} check inter 5000 rise 3 fall 3
    {{end}}
    server stub 127.0.0.1:7690 backup
{{end}}

Contributing

  1. Fork it
  2. Create your feature branch (git checkout -b my-new-feature)
  3. Commit your changes (git commit -am 'Add some feature')
  4. Push to the branch (git push origin my-new-feature)
  5. Create new Pull Request

License

kube-template is released under the Apache 2.0 license. See LICENSE.txt

kube-template's People

Contributors

3cky avatar bpineau avatar mcarcano avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

kube-template's Issues

Error when processing the output file from the command

We are generating an XML using kube-template and this XML is created as a ConfigMap. The tool throws file already closed exception and when running in the background, it exits with panic: send on closed channel error.

Can you let me know what's wrong with the approach I'm taking? Any workaround?

The in template reads endpoints of a particular service, and uses that to generate an XML. Then the command invokes an sh file which basically deletes existing ConfigMap and creates another using the output file and then issues a sighup on a running pod.

Thanks in advance.

X509 certificate issue with self-signed certificate

Hello!

When trying to access to my kube api over https i'm actually facing the issue : x509: certificate signed by unknown authority.
My certificate is well added to my machine trust store but it seems that the go client doesn't use it.

Would you mind providing a way to use kube-template with secured kubernete api endpoint ?

Kind regards

Error and unable to read pods

Build the the top of the tree to find the below error:

E1210 19:02:46.262412 8 reflector.go:205] kube-template/client_gen.go:50: Failed to list *v1.Pod: pods is forbidden: User "system:serviceaccount:xxxx:lurker-service-account" cannot list resource "pods" in API group "" at the cluster scope.

Below is output of kubectl version:
Client Version: version.Info{Major:“1”, Minor:“14", GitVersion:“v1.14.7”, GitCommit:“8fca2ec50a6133511b771a11559e24191b1aa2b4", GitTreeState:“clean”, BuildDate:“2019-09-18T14:47:22Z”, GoVersion:“go1.12.9”, Compiler:“gc”, Platform:“linux/amd64”}
Server Version: version.Info{Major:“1", Minor:“14+“, GitVersion:“v1.14.8-eks-b7174d”, GitCommit:“b7174db5ee0e30c94a0b9899c20ac980c0850fc8", GitTreeState:“clean”, BuildDate:“2019-10-18T17:56:01Z”, GoVersion:“go1.12.10”, Compiler:“gc”, Platform:“linux/amd64”}

Modern Go dependency management tool

Hi,
Thanks for this well done and very useful tool!
Refreshing and using the venerable govendor tool with more recent versions of the libs (kube's client-go, etc) was a bit challenging.

Would you like us to send a PR updating to dep (or even go 1.11 vgo native dependency management)?

Environment variable support

Is there any way to read environment variables in kube-template? I see that consul-template has a helper function called env for this purpose, but I don't see a way to do this with kube-template.

poll-period option does not respect the service account's namespace

provided poll-period and -----guess-kube-api-settings. The API calls to kubernetes does not consider the namespace of the service account thats configured.

When using the --once option, it works fine. However when we use periodic option it fails.
Run ONCE option:
/tmp/helm $ kube-template --guess-kube-api-settings --config=/tmp/kube-template.yaml --alsologtostderr --logtos
tderr=true --v=6 --once
I0531 02:40:37.390509 446 cfg.go:100] using config file: /tmp/kube-template.yaml
I0531 02:40:37.390542 446 cfg.go:187] poll period set to 1s
I0531 02:40:37.390557 446 cfg.go:189] command timeout set to 2s
I0531 02:40:37.390573 446 cfg.go:240] adding template from config file: /tmp/haproxy_cfg.sh.tmpl
I0531 02:40:37.392091 446 app.go:105] run once templates processing...
I0531 02:40:37.392110 446 app.go:118] processing template: haproxy_cfg.sh.tmpl
I0531 02:40:37.392143 446 client_gen.go:33] fetching pods, namespace: "jkompella-temp6-3486", selector: "appFamily=aoobm"
I0531 02:40:37.408308 446 round_trippers.go:405] GET **https://10.100.0.1:443/api/v1/namespaces/jkompella-temp6-3486/pods?**labelSelector=appFamily%3Daoobm 200 OK in 16 milliseconds
I0531 02:40:37.428623 446 client_gen.go:33] fetching pods, namespace: "jkompella-temp6-3486", selector: "app=aoobm-sshd"

PERIODIC POLL:
/tmp/helm $ kube-template --guess-kube-api-settings --config=/tmp/kube-template.yaml --alsologtostderr --logtos
tderr=true --v=6
I0531 02:40:28.574389 435 cfg.go:100] using config file: /tmp/kube-template.yaml
I0531 02:40:28.574419 435 cfg.go:187] poll period set to 1s
I0531 02:40:28.574431 435 cfg.go:189] command timeout set to 2s
I0531 02:40:28.574447 435 cfg.go:240] adding template from config file: /tmp/haproxy_cfg.sh.tmpl
I0531 02:40:28.576073 435 app.go:80] starting templates processing...
I0531 02:40:28.576097 435 app.go:118] processing template: haproxy_cfg.sh.tmpl
I0531 02:40:28.576154 435 client_gen.go:33] fetching pods, namespace: "jkompella-temp6-3486", selector: "appFamily=aoobm"
I0531 02:40:28.576418 435 reflector.go:202] Starting reflector *v1.Pod (0s) from kube-template/client_gen.go:50
I0531 02:40:28.576435 435 reflector.go:240] Listing and watching *v1.Pod from kube-template/client_gen.go:50
I0531 02:40:28.583677 435 round_trippers.go:405] GET https://10.100.0.1:443/api/v1/pods?limit=500&resourceVersion=0 403 Forbidden in 7 milliseconds
*E0531 02:40:28.583984 435 reflector.go:205] kube-template/client_gen.go:50: Failed to list v1.Pod: pods is forbidden: User "system:serviceaccount:jkompella-temp6-3486:lurker-service-account" cannot list resource "pods" in API group "" at the cluster scope

Looks like the client_gen.go, informerFactory is the cause of this. Could you please help us out?
podLister, found := c.listers["podLister"]
if !found {
podInformer := c.informerFactory.Core().V1().Pods()

Takes long time to detect Pod create changes

We note that the time to detect a new pod that is running is around 25-40 seconds by informer.
Several times we see this error in the logs:
reflector.go:382] pkg/mod/k8s.io/[email protected]/tools/cache/reflector.go:125: Failed to watch *v1.Pod: unknown (get pods)
What you expected to happen:
Expected to receive no errors
Expected that Shared Informer should not take 25-40secs to detect that a new pod has been created

1 05:33:53.251616 8 client_gen.go:35] fetching pods, namespace: "qa-pods", selector: "app=aoobm-rdp"
I0701 05:33:53.251655 8 app.go:143] template output not changed: haproxy_cfg.sh.tmpl
I0701 05:33:54.251853 8 app.go:118] processing template: haproxy_cfg.sh.tmpl
I0701 05:33:54.251907 8 client_gen.go:35] fetching pods, namespace: "qa-pods", selector: "appFamily=aoobm"
I0701 05:33:54.252522 8 client_gen.go:35] fetching pods, namespace: "qa-pods", selector: "app=aoobm-sshd"
I0701 05:33:54.252554 8 client_gen.go:35] fetching pods, namespace: "qa-pods", selector: "app=aoobm-http"
I0701 05:33:54.252943 8 client_gen.go:35] fetching pods, namespace: "qa-pods", selector: "app=aoobm-https"
I0701 05:33:54.252979 8 client_gen.go:35] fetching pods, namespace: "qa-pods", selector: "app=aoobm-rdp"
I0701 05:33:54.253005 8 app.go:143] template output not changed: haproxy_cfg.sh.tmpl
{"timestamp":"Jul 1 05:33:54", "serviceName": "[LURKER]", "hostname":"lurker-77bcb86dcb-fznrq", "syslogtag":"haproxy[569]:", "msg":" remote_connect_cookie: 05c5c0be42ad4f7b6f25087b21cc52d6-qa4-ncm"}
{"timestamp":"Jul 1 05:33:54", "serviceName": "[LURKER]", "hostname":"lurker-77bcb86dcb-fznrq", "syslogtag":"haproxy[569]:", "msg":" full_host: aoobm-haproxy-integration-new.cradlepointecm.com, remote_connect_uuid: 05c5c0be42ad4f7b6f25087b21cc52d6, stack: qa4"}
{"timestamp":"Jul 1 05:33:54", "serviceName": "[LURKER]", "hostname":"lurker-77bcb86dcb-fznrq", "syslogtag":"haproxy[569]:", "msg":" Invalid User Ks0GaINnLfTSgIBa"}
{"timestamp":"Jul 1 05:33:54", "serviceName": "[LURKER]", "hostname":"lurker-77bcb86dcb-fznrq", "syslogtag":"haproxy[569]:", "msg":" 100.108.88.128:19780 [01/Jul/2020:05:33:54.748] http_front http_front/ 5/-1/-1/-1/+5 403 +7335 - - PR-- 0/0/0/0/0 0/0 "GET / HTTP/1.1""}
I0701 05:33:55.253187 8 app.go:118] processing template: haproxy_cfg.sh.tmpl
I0701 05:33:55.253248 8 client_gen.go:35] fetching pods, namespace: "qa-pods", selector: "appFamily=aoobm"
I0701 05:33:55.253963 8 client_gen.go:35] fetching pods, namespace: "qa-pods", selector: "app=aoobm-sshd"
I0701 05:33:55.254015 8 client_gen.go:35] fetching pods, namespace: "qa-pods", selector: "app=aoobm-http"
I0701 05:33:55.254432 8 client_gen.go:35] fetching pods, namespace: "qa-pods", selector: "app=aoobm-https"
I0701 05:33:55.254493 8 client_gen.go:35] fetching pods, namespace: "qa-pods", selector: "app=aoobm-rdp"
I0701 05:33:55.254539 8 app.go:143] template output not changed: haproxy_cfg.sh.tmpl
I0701 05:33:56.254775 8 app.go:118] processing template: haproxy_cfg.sh.tmpl
I0701 05:33:56.254851 8 client_gen.go:35] fetching pods, namespace: "qa-pods", selector: "appFamily=aoobm"
I0701 05:33:56.255711 8 client_gen.go:35] fetching pods, namespace: "qa-pods", selector: "app=aoobm-sshd"
I0701 05:33:56.255768 8 client_gen.go:35] fetching pods, namespace: "qa-pods", selector: "app=aoobm-http"
I0701 05:33:56.256303 8 client_gen.go:35] fetching pods, namespace: "qa-pods", selector: "app=aoobm-https"
I0701 05:33:56.256356 8 client_gen.go:35] fetching pods, namespace: "qa-pods", selector: "app=aoobm-rdp"
I0701 05:33:56.256400 8 app.go:143] template output not changed: haproxy_cfg.sh.tmpl
I0701 05:33:57.256607 8 app.go:118] processing template: haproxy_cfg.sh.tmpl
I0701 05:33:57.256662 8 client_gen.go:35] fetching pods, namespace: "qa-pods", selector: "appFamily=aoobm"
I0701 05:33:57.257357 8 client_gen.go:35] fetching pods, namespace: "qa-pods", selector: "app=aoobm-sshd"
I0701 05:33:57.257407 8 client_gen.go:35] fetching pods, namespace: "qa-pods", selector: "app=aoobm-http"
I0701 05:33:57.257826 8 client_gen.go:35] fetching pods, namespace: "qa-pods", selector: "app=aoobm-https"
I0701 05:33:57.257875 8 client_gen.go:35] fetching pods, namespace: "qa-pods", selector: "app=aoobm-rdp"
I0701 05:33:57.257925 8 app.go:143] template output not changed: haproxy_cfg.sh.tmpl
I0701 05:33:58.258113 8 app.go:118] processing template: haproxy_cfg.sh.tmpl
I0701 05:33:58.258182 8 client_gen.go:35] fetching pods, namespace: "qa-pods", selector: "appFamily=aoobm"
I0701 05:33:58.258952 8 client_gen.go:35] fetching pods, namespace: "qa-pods", selector: "app=aoobm-sshd"
I0701 05:33:58.258999 8 client_gen.go:35] fetching pods, namespace: "qa-pods", selector: "app=aoobm-http"
I0701 05:33:58.259496 8 client_gen.go:35] fetching pods, namespace: "qa-pods", selector: "app=aoobm-https"
I0701 05:33:58.259590 8 client_gen.go:35] fetching pods, namespace: "qa-pods", selector: "app=aoobm-rdp"
I0701 05:33:58.259632 8 app.go:143] template output not changed: haproxy_cfg.sh.tmpl
I0701 05:33:59.259835 8 app.go:118] processing template: haproxy_cfg.sh.tmpl
I0701 05:33:59.259890 8 client_gen.go:35] fetching pods, namespace: "qa-pods", selector: "appFamily=aoobm"
I0701 05:33:59.344026 8 client_gen.go:35] fetching pods, namespace: "qa-pods", selector: "app=aoobm-sshd"
I0701 05:33:59.344118 8 client_gen.go:35] fetching pods, namespace: "qa-pods", selector: "app=aoobm-http"
I0701 05:33:59.344696 8 client_gen.go:35] fetching pods, namespace: "qa-pods", selector: "app=aoobm-https"
I0701 05:33:59.344742 8 client_gen.go:35] fetching pods, namespace: "qa-pods", selector: "app=aoobm-rdp"
I0701 05:33:59.344772 8 app.go:143] template output not changed: haproxy_cfg.sh.tmpl
I0701 05:34:00.345048 8 app.go:118] processing template: haproxy_cfg.sh.tmpl
I0701 05:34:00.345108 8 client_gen.go:35] fetching pods, namespace: "qa-pods", selector: "appFamily=aoobm"
I0701 05:34:00.345705 8 client_gen.go:35] fetching pods, namespace: "qa-pods", selector: "app=aoobm-sshd"
I0701 05:34:00.345757 8 client_gen.go:35] fetching pods, namespace: "qa-pods", selector: "app=aoobm-http"
I0701 05:34:00.346194 8 client_gen.go:35] fetching pods, namespace: "qa-pods", selector: "app=aoobm-https"
I0701 05:34:00.346231 8 client_gen.go:35] fetching pods, namespace: "qa-pods", selector: "app=aoobm-rdp"
I0701 05:34:00.346257 8 app.go:143] template output not changed: haproxy_cfg.sh.tmpl
I0701 05:34:01.346472 8 app.go:118] processing template: haproxy_cfg.sh.tmpl
I0701 05:34:01.346538 8 client_gen.go:35] fetching pods, namespace: "qa-pods", selector: "appFamily=aoobm"
I0701 05:34:01.347111 8 client_gen.go:35] fetching pods, namespace: "qa-pods", selector: "app=aoobm-sshd"
I0701 05:34:01.347157 8 client_gen.go:35] fetching pods, namespace: "qa-pods", selector: "app=aoobm-http"
I0701 05:34:01.347721 8 client_gen.go:35] fetching pods, namespace: "qa-pods", selector: "app=aoobm-https"
I0701 05:34:01.347758 8 client_gen.go:35] fetching pods, namespace: "qa-pods", selector: "app=aoobm-rdp"
I0701 05:34:01.347792 8 app.go:143] template output not changed: haproxy_cfg.sh.tmpl
I0701 05:34:02.348004 8 app.go:118] processing template: haproxy_cfg.sh.tmpl
I0701 05:34:02.348060 8 client_gen.go:35] fetching pods, namespace: "qa-pods", selector: "appFamily=aoobm"
I0701 05:34:02.348653 8 client_gen.go:35] fetching pods, namespace: "qa-pods", selector: "app=aoobm-sshd"
I0701 05:34:02.348720 8 client_gen.go:35] fetching pods, namespace: "qa-pods", selector: "app=aoobm-http"
I0701 05:34:02.349131 8 client_gen.go:35] fetching pods, namespace: "qa-pods", selector: "app=aoobm-https"
I0701 05:34:02.349168 8 client_gen.go:35] fetching pods, namespace: "qa-pods", selector: "app=aoobm-rdp"
I0701 05:34:02.349201 8 app.go:143] template output not changed: haproxy_cfg.sh.tmpl
I0701 05:34:03.349412 8 app.go:118] processing template: haproxy_cfg.sh.tmpl
I0701 05:34:03.349486 8 client_gen.go:35] fetching pods, namespace: "qa-pods", selector: "appFamily=aoobm"
I0701 05:34:03.350540 8 client_gen.go:35] fetching pods, namespace: "qa-pods", selector: "app=aoobm-sshd"
I0701 05:34:03.350601 8 client_gen.go:35] fetching pods, namespace: "qa-pods", selector: "app=aoobm-http"
I0701 05:34:03.351193 8 client_gen.go:35] fetching pods, namespace: "qa-pods", selector: "app=aoobm-https"
I0701 05:34:03.351246 8 client_gen.go:35] fetching pods, namespace: "qa-pods", selector: "app=aoobm-rdp"
I0701 05:34:03.351288 8 app.go:143] template output not changed: haproxy_cfg.sh.tmpl
I0701 05:34:04.351501 8 app.go:118] processing template: haproxy_cfg.sh.tmpl
I0701 05:34:04.351574 8 client_gen.go:35] fetching pods, namespace: "qa-pods", selector: "appFamily=aoobm"
I0701 05:34:04.352233 8 client_gen.go:35] fetching pods, namespace: "qa-pods", selector: "app=aoobm-sshd"
I0701 05:34:04.352285 8 client_gen.go:35] fetching pods, namespace: "qa-pods", selector: "app=aoobm-http"
I0701 05:34:04.352653 8 client_gen.go:35] fetching pods, namespace: "qa-pods", selector: "app=aoobm-https"
I0701 05:34:04.352698 8 client_gen.go:35] fetching pods, namespace: "qa-pods", selector: "app=aoobm-rdp"
I0701 05:34:04.352725 8 app.go:143] template output not changed: haproxy_cfg.sh.tmpl
I0701 05:34:05.352929 8 app.go:118] processing template: haproxy_cfg.sh.tmpl
I0701 05:34:05.353001 8 client_gen.go:35] fetching pods, namespace: "qa-pods", selector: "appFamily=aoobm"
I0701 05:34:05.353797 8 client_gen.go:35] fetching pods, namespace: "qa-pods", selector: "app=aoobm-sshd"
I0701 05:34:05.353839 8 client_gen.go:35] fetching pods, namespace: "qa-pods", selector: "app=aoobm-http"
I0701 05:34:05.354329 8 client_gen.go:35] fetching pods, namespace: "qa-pods", selector: "app=aoobm-https"
I0701 05:34:05.354378 8 client_gen.go:35] fetching pods, namespace: "qa-pods", selector: "app=aoobm-rdp"
I0701 05:34:05.354419 8 app.go:143] template output not changed: haproxy_cfg.sh.tmpl
I0701 05:34:06.354679 8 app.go:118] processing template: haproxy_cfg.sh.tmpl
I0701 05:34:06.354740 8 client_gen.go:35] fetching pods, namespace: "qa-pods", selector: "appFamily=aoobm"
I0701 05:34:06.355353 8 client_gen.go:35] fetching pods, namespace: "qa-pods", selector: "app=aoobm-sshd"
I0701 05:34:06.355400 8 client_gen.go:35] fetching pods, namespace: "qa-pods", selector: "app=aoobm-http"
I0701 05:34:06.355833 8 client_gen.go:35] fetching pods, namespace: "qa-pods", selector: "app=aoobm-https"
I0701 05:34:06.355869 8 client_gen.go:35] fetching pods, namespace: "qa-pods", selector: "app=aoobm-rdp"
I0701 05:34:06.355892 8 app.go:143] template output not changed: haproxy_cfg.sh.tmpl
I0701 05:34:07.356072 8 app.go:118] processing template: haproxy_cfg.sh.tmpl
I0701 05:34:07.356126 8 client_gen.go:35] fetching pods, namespace: "qa-pods", selector: "appFamily=aoobm"
I0701 05:34:07.356851 8 client_gen.go:35] fetching pods, namespace: "qa-pods", selector: "app=aoobm-sshd"
I0701 05:34:07.356897 8 client_gen.go:35] fetching pods, namespace: "qa-pods", selector: "app=aoobm-http"
I0701 05:34:07.357273 8 client_gen.go:35] fetching pods, namespace: "qa-pods", selector: "app=aoobm-https"
I0701 05:34:07.357304 8 client_gen.go:35] fetching pods, namespace: "qa-pods", selector: "app=aoobm-rdp"
I0701 05:34:07.357327 8 app.go:143] template output not changed: haproxy_cfg.sh.tmpl
I0701 05:34:08.357524 8 app.go:118] processing template: haproxy_cfg.sh.tmpl
I0701 05:34:08.357587 8 client_gen.go:35] fetching pods, namespace: "qa-pods", selector: "appFamily=aoobm"
I0701 05:34:08.358264 8 client_gen.go:35] fetching pods, namespace: "qa-pods", selector: "app=aoobm-sshd"
I0701 05:34:08.358308 8 client_gen.go:35] fetching pods, namespace: "qa-pods", selector: "app=aoobm-http"
I0701 05:34:08.358728 8 client_gen.go:35] fetching pods, namespace: "qa-pods", selector: "app=aoobm-https"
I0701 05:34:08.358769 8 client_gen.go:35] fetching pods, namespace: "qa-pods", selector: "app=aoobm-rdp"
I0701 05:34:08.358809 8 app.go:143] template output not changed: haproxy_cfg.sh.tmpl
I0701 05:34:09.358993 8 app.go:118] processing template: haproxy_cfg.sh.tmpl
I0701 05:34:09.359059 8 client_gen.go:35] fetching pods, namespace: "qa-pods", selector: "appFamily=aoobm"
I0701 05:34:09.443828 8 client_gen.go:35] fetching pods, namespace: "qa-pods", selector: "app=aoobm-sshd"
I0701 05:34:09.444012 8 client_gen.go:35] fetching pods, namespace: "qa-pods", selector: "app=aoobm-http"
I0701 05:34:09.444760 8 client_gen.go:35] fetching pods, namespace: "qa-pods", selector: "app=aoobm-https"
I0701 05:34:09.444817 8 client_gen.go:35] fetching pods, namespace: "qa-pods", selector: "app=aoobm-rdp"
I0701 05:34:09.444855 8 app.go:143] template output not changed: haproxy_cfg.sh.tmpl
I0701 05:34:10.445063 8 app.go:118] processing template: haproxy_cfg.sh.tmpl
I0701 05:34:10.445124 8 client_gen.go:35] fetching pods, namespace: "qa-pods", selector: "appFamily=aoobm"
I0701 05:34:10.445761 8 client_gen.go:35] fetching pods, namespace: "qa-pods", selector: "app=aoobm-sshd"
I0701 05:34:10.445795 8 client_gen.go:35] fetching pods, namespace: "qa-pods", selector: "app=aoobm-http"
I0701 05:34:10.446249 8 client_gen.go:35] fetching pods, namespace: "qa-pods", selector: "app=aoobm-https"
I0701 05:34:10.446284 8 client_gen.go:35] fetching pods, namespace: "qa-pods", selector: "app=aoobm-rdp"
I0701 05:34:10.446304 8 app.go:143] template output not changed: haproxy_cfg.sh.tmpl
I0701 05:34:11.446550 8 app.go:118] processing template: haproxy_cfg.sh.tmpl
I0701 05:34:11.446609 8 client_gen.go:35] fetching pods, namespace: "qa-pods", selector: "appFamily=aoobm"
I0701 05:34:11.447326 8 client_gen.go:35] fetching pods, namespace: "qa-pods", selector: "app=aoobm-sshd"
I0701 05:34:11.447379 8 client_gen.go:35] fetching pods, namespace: "qa-pods", selector: "app=aoobm-http"
I0701 05:34:11.447847 8 client_gen.go:35] fetching pods, namespace: "qa-pods", selector: "app=aoobm-https"
I0701 05:34:11.447887 8 client_gen.go:35] fetching pods, namespace: "qa-pods", selector: "app=aoobm-rdp"
I0701 05:34:11.447915 8 app.go:143] template output not changed: haproxy_cfg.sh.tmpl
I0701 05:34:12.448091 8 app.go:118] processing template: haproxy_cfg.sh.tmpl
I0701 05:34:12.448146 8 client_gen.go:35] fetching pods, namespace: "qa-pods", selector: "appFamily=aoobm"
I0701 05:34:12.448699 8 client_gen.go:35] fetching pods, namespace: "qa-pods", selector: "app=aoobm-sshd"
I0701 05:34:12.448737 8 client_gen.go:35] fetching pods, namespace: "qa-pods", selector: "app=aoobm-http"
I0701 05:34:12.449130 8 client_gen.go:35] fetching pods, namespace: "qa-pods", selector: "app=aoobm-https"
I0701 05:34:12.449167 8 client_gen.go:35] fetching pods, namespace: "qa-pods", selector: "app=aoobm-rdp"
I0701 05:34:12.449213 8 app.go:143] template output not changed: haproxy_cfg.sh.tmpl
I0701 05:34:13.449424 8 app.go:118] processing template: haproxy_cfg.sh.tmpl
I0701 05:34:13.449509 8 client_gen.go:35] fetching pods, namespace: "qa-pods", selector: "appFamily=aoobm"
I0701 05:34:13.450156 8 client_gen.go:35] fetching pods, namespace: "qa-pods", selector: "app=aoobm-sshd"
I0701 05:34:13.450193 8 client_gen.go:35] fetching pods, namespace: "qa-pods", selector: "app=aoobm-http"
I0701 05:34:13.450681 8 client_gen.go:35] fetching pods, namespace: "qa-pods", selector: "app=aoobm-https"
I0701 05:34:13.450717 8 client_gen.go:35] fetching pods, namespace: "qa-pods", selector: "app=aoobm-rdp"
I0701 05:34:13.450758 8 app.go:143] template output not changed: haproxy_cfg.sh.tmpl
I0701 05:34:14.450966 8 app.go:118] processing template: haproxy_cfg.sh.tmpl
I0701 05:34:14.451020 8 client_gen.go:35] fetching pods, namespace: "qa-pods", selector: "appFamily=aoobm"
I0701 05:34:14.451658 8 client_gen.go:35] fetching pods, namespace: "qa-pods", selector: "app=aoobm-sshd"
I0701 05:34:14.451694 8 client_gen.go:35] fetching pods, namespace: "qa-pods", selector: "app=aoobm-http"
I0701 05:34:14.452136 8 client_gen.go:35] fetching pods, namespace: "qa-pods", selector: "app=aoobm-https"
I0701 05:34:14.452170 8 client_gen.go:35] fetching pods, namespace: "qa-pods", selector: "app=aoobm-rdp"
I0701 05:34:14.452201 8 app.go:143] template output not changed: haproxy_cfg.sh.tmpl
I0701 05:34:15.452416 8 app.go:118] processing template: haproxy_cfg.sh.tmpl
I0701 05:34:15.452481 8 client_gen.go:35] fetching pods, namespace: "qa-pods", selector: "appFamily=aoobm"
I0701 05:34:15.453065 8 client_gen.go:35] fetching pods, namespace: "qa-pods", selector: "app=aoobm-sshd"
I0701 05:34:15.453148 8 client_gen.go:35] fetching pods, namespace: "qa-pods", selector: "app=aoobm-http"
I0701 05:34:15.453544 8 client_gen.go:35] fetching pods, namespace: "qa-pods", selector: "app=aoobm-https"
I0701 05:34:15.453588 8 client_gen.go:35] fetching pods, namespace: "qa-pods", selector: "app=aoobm-rdp"
I0701 05:34:15.453633 8 app.go:143] template output not changed: haproxy_cfg.sh.tmpl
I0701 05:34:16.453837 8 app.go:118] processing template: haproxy_cfg.sh.tmpl
I0701 05:34:16.453901 8 client_gen.go:35] fetching pods, namespace: "qa-pods", selector: "appFamily=aoobm"
I0701 05:34:16.454648 8 client_gen.go:35] fetching pods, namespace: "qa-pods", selector: "app=aoobm-sshd"
I0701 05:34:16.454703 8 client_gen.go:35] fetching pods, namespace: "qa-pods", selector: "app=aoobm-http"
I0701 05:34:16.455223 8 client_gen.go:35] fetching pods, namespace: "qa-pods", selector: "app=aoobm-https"
I0701 05:34:16.455271 8 client_gen.go:35] fetching pods, namespace: "qa-pods", selector: "app=aoobm-rdp"
I0701 05:34:16.455307 8 app.go:143] template output not changed: haproxy_cfg.sh.tmpl
I0701 05:34:17.455516 8 app.go:118] processing template: haproxy_cfg.sh.tmpl
I0701 05:34:17.455578 8 client_gen.go:35] fetching pods, namespace: "qa-pods", selector: "appFamily=aoobm"
I0701 05:34:17.456147 8 client_gen.go:35] fetching pods, namespace: "qa-pods", selector: "app=aoobm-sshd"
I0701 05:34:17.456210 8 client_gen.go:35] fetching pods, namespace: "qa-pods", selector: "app=aoobm-http"
I0701 05:34:17.456793 8 client_gen.go:35] fetching pods, namespace: "qa-pods", selector: "app=aoobm-https"
I0701 05:34:17.456844 8 client_gen.go:35] fetching pods, namespace: "qa-pods", selector: "app=aoobm-rdp"
I0701 05:34:17.456882 8 app.go:143] template output not changed: haproxy_cfg.sh.tmpl
I0701 05:34:18.457063 8 app.go:118] processing template: haproxy_cfg.sh.tmpl
I0701 05:34:18.457116 8 client_gen.go:35] fetching pods, namespace: "qa-pods", selector: "appFamily=aoobm"
I0701 05:34:18.457788 8 client_gen.go:35] fetching pods, namespace: "qa-pods", selector: "app=aoobm-sshd"
I0701 05:34:18.457829 8 client_gen.go:35] fetching pods, namespace: "qa-pods", selector: "app=aoobm-http"
I0701 05:34:18.458265 8 client_gen.go:35] fetching pods, namespace: "qa-pods", selector: "app=aoobm-https"
I0701 05:34:18.458298 8 client_gen.go:35] fetching pods, namespace: "qa-pods", selector: "app=aoobm-rdp"
I0701 05:34:18.458330 8 app.go:143] template output not changed: haproxy_cfg.sh.tmpl
E0701 05:34:19.343703 8 reflector.go:382] pkg/mod/k8s.io/[email protected]/tools/cache/reflector.go:125: Failed to watch *v1.Pod: unknown (get pods)
I0701 05:34:19.458523 8 app.go:118] processing template: haproxy_cfg.sh.tmpl
I0701 05:34:19.458583 8 client_gen.go:35] fetching pods, namespace: "qa-pods", selector: "appFamily=aoobm"
I0701 05:34:19.459359 8 client_gen.go:35] fetching pods, namespace: "qa-pods", selector: "app=aoobm-sshd"
I0701 05:34:19.459410 8 client_gen.go:35] fetching pods, namespace: "qa-pods", selector: "app=aoobm-http"
I0701 05:34:19.460115 8 client_gen.go:35] fetching pods, namespace: "qa-pods", selector: "app=aoobm-https"
I0701 05:34:19.460157 8 client_gen.go:35] fetching pods, namespace: "qa-pods", selector: "app=aoobm-rdp"
I0701 05:34:19.463198 8 app.go:122] template output updated: haproxy_cfg.sh.tmpl
I0701 05:34:19.463221 8 app.go:135] template haproxy_cfg.sh.tmpl: scheduled command: "/tmp/action.sh || true"
I0701 05:34:19.463230 8 app.go:152] executing: "/tmp/action.sh || true"
I0701 05:34:19.464513 8 util.go:99] STDOUT: ++++++++++++++++++++++++++++++++++
I0701 05:34:19.464537 8 util.go:99] STDOUT: action.sh
I0701 05:34:19.464543 8 util.go:99] STDOUT: ++++++++++++++++++++++++++++++++++
I0701 05:34:19.464549 8 util.go:99] STDOUT: command: chmod +x /tmp/haproxy_cfg.sh
I0701 05:34:19.465610 8 util.go:99] STDOUT: command: /tmp/haproxy_cfg.sh
I0701 05:34:19.468319 8 util.go:99] STDOUT: command: killall -s HUP haproxy-systemd-wrapper
<5>haproxy-systemd-wrapper: re-executing on SIGHUP.
I0701 05:34:19.470460 8 app.go:154] executed: "/tmp/action.sh || true"
<7>haproxy-systemd-wrapper: executing /usr/local/sbin/haproxy -q -f /etc/haproxy/haproxy.cfg -p /var/run/haproxy.pid -Ds -sf 569
{"timestamp":"Jul 1 05:34:19", "serviceName": "[LURKER]", "hostname":"lurker-77bcb86dcb-fznrq", "syslogtag":"haproxy[579]:", "msg":" Proxy stats started."}
{"timestamp":"Jul 1 05:34:19", "serviceName": "[LURKER]", "hostname":"lurker-77bcb86dcb-fznrq", "syslogtag":"haproxy[579]:", "msg":" Proxy sshd started."}
{"timestamp":"Jul 1 05:34:19", "serviceName": "[LURKER]", "hostname":"lurker-77bcb86dcb-fznrq", "syslogtag":"haproxy[579]:", "msg":" Proxy http_front started."}
{"timestamp":"Jul 1 05:34:19", "serviceName": "[LURKER]", "hostname":"lurker-77bcb86dcb-fznrq", "syslogtag":"haproxy[579]:", "msg":" Proxy be_sshd_31807 started."}
{"timestamp":"Jul 1 05:34:19", "serviceName": "[LURKER]", "hostname":"lurker-77bcb86dcb-fznrq", "syslogtag":"haproxy[579]:", "msg":" Proxy be_sshd_31819 started."}
{"timestamp":"Jul 1 05:34:19", "serviceName": "[LURKER]", "hostname":"lurker-77bcb86dcb-fznrq", "syslogtag":"haproxy[579]:", "msg":" Proxy be_sshd_31821 started."}
{"timestamp":"Jul 1 05:34:19", "serviceName": "[LURKER]", "hostname":"lurker-77bcb86dcb-fznrq", "syslogtag":"haproxy[579]:", "msg":" Proxy be_sshd_31823 started."}
{"timestamp":"Jul 1 05:34:19", "serviceName": "[LURKER]", "hostname":"lurker-77bcb86dcb-fznrq", "syslogtag":"haproxy[579]:", "msg":" Proxy be_sshd_31825 started."}
{"timestamp":"Jul 1 05:34:19", "serviceName": "[LURKER]", "hostname":"lurker-77bcb86dcb-fznrq", "syslogtag":"haproxy[579]:", "msg":" Proxy be_sshd_31827 started."}
{"timestamp":"Jul 1 05:34:19", "serviceName": "[LURKER]", "hostname":"lurker-77bcb86dcb-fznrq", "syslogtag":"haproxy[579]:", "msg":" Proxy be_05c5c0be42ad4f7b6f25087b21cc52d6-qa4-ncm started."}
{"timestamp":"Jul 1 05:34:19", "serviceName": "[LURKER]", "hostname":"lurker-77bcb86dcb-fznrq", "syslogtag":"haproxy[579]:", "msg":" Proxy be_6226c1159d04a46f696cd3673d9a4d69-qa4-ncm started."}
{"timestamp":"Jul 1 05:34:19", "serviceName": "[LURKER]", "hostname":"lurker-77bcb86dcb-fznrq", "syslogtag":"haproxy[579]:", "msg":" Proxy be_5932f9cd44ebca1bf6cf693b9050b934-qa4-ncm started."}
{"timestamp":"Jul 1 05:34:19", "serviceName": "[LURKER]", "hostname":"lurker-77bcb86dcb-fznrq", "syslogtag":"haproxy[579]:", "msg":" Proxy be_4ff50b7a0cc173f9ec49424421340673-qa4-ncm started."}
{"timestamp":"Jul 1 05:34:19", "serviceName": "[LURKER]", "hostname":"lurker-77bcb86dcb-fznrq", "syslogtag":"haproxy[579]:", "msg":" Proxy be_f0c627e05c28c0216c703d63b72fb029-qa4-ncm started."}
{"timestamp":"Jul 1 05:34:19", "serviceName": "[LURKER]", "hostname":"lurker-77bcb86dcb-fznrq", "syslogtag":"haproxy[579]:", "msg":" Proxy be_5461e4608798f33c36f472f4502daf11-qa4-ncm started."}
{"timestamp":"Jul 1 05:34:19", "serviceName": "[LURKER]", "hostname":"lurker-77bcb86dcb-fznrq", "syslogtag":"haproxy[569]:", "msg":" Stopping proxy stats in 0 ms."}
{"timestamp":"Jul 1 05:34:19", "serviceName": "[LURKER]", "hostname":"lurker-77bcb86dcb-fznrq", "syslogtag":"haproxy[569]:", "msg":" Stopping frontend sshd in 0 ms."}
{"timestamp":"Jul 1 05:34:19", "serviceName": "[LURKER]", "hostname":"lurker-77bcb86dcb-fznrq", "syslogtag":"haproxy[569]:", "msg":" Stopping frontend http_front in 0 ms."}
{"timestamp":"Jul 1 05:34:19", "serviceName": "[LURKER]", "hostname":"lurker-77bcb86dcb-fznrq", "syslogtag":"haproxy[569]:", "msg":" Stopping backend be_sshd_31819 in 0 ms."}
{"timestamp":"Jul 1 05:34:19", "serviceName": "[LURKER]", "hostname":"lurker-77bcb86dcb-fznrq", "syslogtag":"haproxy[569]:", "msg":" Stopping backend be_sshd_31821 in 0 ms."}
{"timestamp":"Jul 1 05:34:19", "serviceName": "[LURKER]", "hostname":"lurker-77bcb86dcb-fznrq", "syslogtag":"haproxy[569]:", "msg":" Stopping backend be_sshd_31823 in 0 ms."}
{"timestamp":"Jul 1 05:34:19", "serviceName": "[LURKER]", "hostname":"lurker-77bcb86dcb-fznrq", "syslogtag":"haproxy[569]:", "msg":" Stopping backend be_sshd_31825 in 0 ms."}
{"timestamp":"Jul 1 05:34:19", "serviceName": "[LURKER]", "hostname":"lurker-77bcb86dcb-fznrq", "syslogtag":"haproxy[569]:", "msg":" Stopping backend be_sshd_31827 in 0 ms."}
{"timestamp":"Jul 1 05:34:19", "serviceName": "[LURKER]", "hostname":"lurker-77bcb86dcb-fznrq", "syslogtag":"haproxy[569]:", "msg":" Stopping backend be_6226c1159d04a46f696cd3673d9a4d69-qa4-ncm in 0 ms."}
{"timestamp":"Jul 1 05:34:19", "serviceName": "[LURKER]", "hostname":"lurker-77bcb86dcb-fznrq", "syslogtag":"haproxy[569]:", "msg":" Stopping backend be_5932f9cd44ebca1bf6cf693b9050b934-qa4-ncm in 0 ms."}
{"timestamp":"Jul 1 05:34:19", "serviceName": "[LURKER]", "hostname":"lurker-77bcb86dcb-fznrq", "syslogtag":"haproxy[569]:", "msg":" Stopping backend be_4ff50b7a0cc173f9ec49424421340673-qa4-ncm in 0 ms."}
{"timestamp":"Jul 1 05:34:19", "serviceName": "[LURKER]", "hostname":"lurker-77bcb86dcb-fznrq", "syslogtag":"haproxy[569]:", "msg":" Stopping backend be_f0c627e05c28c0216c703d63b72fb029-qa4-ncm in 0 ms."}
{"timestamp":"Jul 1 05:34:19", "serviceName": "[LURKER]", "hostname":"lurker-77bcb86dcb-fznrq", "syslogtag":"haproxy[569]:", "msg":" Stopping backend be_5461e4608798f33c36f472f4502daf11-qa4-ncm in 0 ms."}
{"timestamp":"Jul 1 05:34:19", "serviceName": "[LURKER]", "hostname":"lurker-77bcb86dcb-fznrq", "syslogtag":"haproxy[569]:", "msg":" Proxy stats stopped (FE: 0 conns, BE: 0 conns)."}
{"timestamp":"Jul 1 05:34:19", "serviceName": "[LURKER]", "hostname":"lurker-77bcb86dcb-fznrq", "syslogtag":"haproxy[569]:", "msg":" Proxy sshd stopped (FE: 0 conns, BE: 0 conns)."}
{"timestamp":"Jul 1 05:34:19", "serviceName": "[LURKER]", "hostname":"lurker-77bcb86dcb-fznrq", "syslogtag":"haproxy[569]:", "msg":" Proxy http_front stopped (FE: 15 conns, BE: 0 conns)."}
{"timestamp":"Jul 1 05:34:19", "serviceName": "[LURKER]", "hostname":"lurker-77bcb86dcb-fznrq", "syslogtag":"haproxy[569]:", "msg":" Proxy be_sshd_31819 stopped (FE: 0 conns, BE: 0 conns)."}
{"timestamp":"Jul 1 05:34:19", "serviceName": "[LURKER]", "hostname":"lurker-77bcb86dcb-fznrq", "syslogtag":"haproxy[569]:", "msg":" Proxy be_sshd_31821 stopped (FE: 0 conns, BE: 0 conns)."}
{"timestamp":"Jul 1 05:34:19", "serviceName": "[LURKER]", "hostname":"lurker-77bcb86dcb-fznrq", "syslogtag":"haproxy[569]:", "msg":" Proxy be_sshd_31823 stopped (FE: 0 conns, BE: 0 conns)."}
{"timestamp":"Jul 1 05:34:19", "serviceName": "[LURKER]", "hostname":"lurker-77bcb86dcb-fznrq", "syslogtag":"haproxy[569]:", "msg":" Proxy be_sshd_31825 stopped (FE: 0 conns, BE: 0 conns)."}
{"timestamp":"Jul 1 05:34:19", "serviceName": "[LURKER]", "hostname":"lurker-77bcb86dcb-fznrq", "syslogtag":"haproxy[569]:", "msg":" Proxy be_sshd_31827 stopped (FE: 0 conns, BE: 0 conns)."}
{"timestamp":"Jul 1 05:34:19", "serviceName": "[LURKER]", "hostname":"lurker-77bcb86dcb-fznrq", "syslogtag":"haproxy[569]:", "msg":" Proxy be_6226c1159d04a46f696cd3673d9a4d69-qa4-ncm stopped (FE: 0 conns, BE: 0 conns)."}
{"timestamp":"Jul 1 05:34:19", "serviceName": "[LURKER]", "hostname":"lurker-77bcb86dcb-fznrq", "syslogtag":"haproxy[569]:", "msg":" Proxy be_5932f9cd44ebca1bf6cf693b9050b934-qa4-ncm stopped (FE: 0 conns, BE: 0 conns)."}
{"timestamp":"Jul 1 05:34:19", "serviceName": "[LURKER]", "hostname":"lurker-77bcb86dcb-fznrq", "syslogtag":"haproxy[569]:", "msg":" Proxy be_4ff50b7a0cc173f9ec49424421340673-qa4-ncm stopped (FE: 0 conns, BE: 0 conns)."}
{"timestamp":"Jul 1 05:34:19", "serviceName": "[LURKER]", "hostname":"lurker-77bcb86dcb-fznrq", "syslogtag":"haproxy[569]:", "msg":" Proxy be_f0c627e05c28c0216c703d63b72fb029-qa4-ncm stopped (FE: 0 conns, BE: 0 conns)."}
{"timestamp":"Jul 1 05:34:19", "serviceName": "[LURKER]", "hostname":"lurker-77bcb86dcb-fznrq", "syslogtag":"haproxy[569]:", "msg":" Proxy be_5461e4608798f33c36f472f4502daf11-qa4-ncm stopped (FE: 0 conns, BE: 0 conns)."}
I0701 05:34:20.470676 8 app.go:118] processing template: haproxy_cfg.sh.tmpl
I0701 05:34:20.470728 8 client_gen.go:35] fetching pods, namespace: "qa-pods", selector: "appFamily=aoobm"
I0701 05:34:20.471672 8 client_gen.go:35] fetching pods, namespace: "qa-pods", selector: "app=aoobm-s

make install error

Getting the below error when trying to run make install. Can you help me with what needs to be done?

go version go1.10.3 gccgo (Ubuntu 8.4.0-1ubuntu1~18.04) 8.4.0 linux/amd
Ubuntu 18.04.4 LTS

/root/.cache/go-build/43/430676ef896fa78d41883480c0ae7995c6fe9cf5f6759192366e66db285d7cec-d(go.o): In function kube_template_vendor_github_com_modern_go_reflect2.loadGo15Types': /root/go/src/kube-template/vendor/github.com/modern-go/reflect2/type_map.go:42: undefined reference to reflect.typelinks'
/root/.cache/go-build/43/430676ef896fa78d41883480c0ae7995c6fe9cf5f6759192366e66db285d7cec-d(go.o): In function kube_template_vendor_github_com_modern_go_reflect2.loadGo17Types': /root/go/src/kube-template/vendor/github.com/modern-go/reflect2/type_map.go:74: undefined reference to reflect.typelinks'
/root/go/src/kube-template/vendor/github.com/modern-go/reflect2/type_map.go:78: undefined reference to `reflect.resolveTypeOff'
collect2: error: ld returned 1 exit status
Makefile:28: recipe for target 'install' failed
make: *** [install] Error 2

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.