All Projects → wish → katalog-sync

wish / katalog-sync

Licence: MIT license
A reliable node-local mechanism for syncing k8s pods to consul services

Programming Languages

go
31211 projects - #10 most used programming language
Dockerfile
14818 projects
Makefile
30231 projects

Projects that are alternatives of or similar to katalog-sync

kongsul
Kong Api Gateway with Consul Service Discovery (MicroService)
Stars: ✭ 35 (+2.94%)
Mutual labels:  consul
MicroServicePractice
微服务实践的demo
Stars: ✭ 40 (+17.65%)
Mutual labels:  consul
share
基于 go + grpc + consul 的微服务系统
Stars: ✭ 24 (-29.41%)
Mutual labels:  consul
rabbitmq-peer-discovery-consul
Consul-based peer discovery backend for RabbitMQ 3.7.0+
Stars: ✭ 39 (+14.71%)
Mutual labels:  consul
sample-kotlin-ktor-microservices
sample microservices written in Kotlin that demonstrates usage of Ktor framework woth Consul server
Stars: ✭ 37 (+8.82%)
Mutual labels:  consul
hashicorp-labs
Deploy locally on VM an Hashicorp cluster formed by Vault, Consul and Nomad. Ready for deploying and testing your apps.
Stars: ✭ 32 (-5.88%)
Mutual labels:  consul
Springcloudlearning
《史上最简单的Spring Cloud教程源码》
Stars: ✭ 16,218 (+47600%)
Mutual labels:  consul
Uragano
Uragano, A simple, high performance RPC library. Support load balancing, circuit breaker, fallback, caching, intercepting.
Stars: ✭ 28 (-17.65%)
Mutual labels:  consul
consul role
Ansible role to install Consul (cluster of) server/agent
Stars: ✭ 14 (-58.82%)
Mutual labels:  consul
getting-into-consul
A zero to complete walk through of setting up HashiCorp Consul on AWS from scratch!
Stars: ✭ 56 (+64.71%)
Mutual labels:  consul
perseus
Perseus is a set of scripts (docker+javascript) to investigate a distributed database's responsiveness when one of its three nodes is isolated from the peers
Stars: ✭ 49 (+44.12%)
Mutual labels:  consul
vault-consul-kubernetes
vault + consul on kubernetes
Stars: ✭ 60 (+76.47%)
Mutual labels:  consul
nomad-service-alerter
Alerting for Nomad Jobs
Stars: ✭ 37 (+8.82%)
Mutual labels:  consul
service-mesh-patterns
Templates of service mesh configurations imbued with best practices.
Stars: ✭ 68 (+100%)
Mutual labels:  consul
servicestack-configuration-consul
An implementation of ServiceStack IAppSettings interface that uses Consul.io key/value store as backing storage
Stars: ✭ 17 (-50%)
Mutual labels:  consul
caddy-tlsconsul
🔒 Consul K/V storage for Caddy Web Server / Certmagic TLS data
Stars: ✭ 89 (+161.76%)
Mutual labels:  consul
consul-acl-client-tutorial
Example how to configure and use Consul client agent with ACL
Stars: ✭ 26 (-23.53%)
Mutual labels:  consul
hrpc
A simple Java RPC framework based on Spring, Netty, Protobuf and Consul
Stars: ✭ 34 (+0%)
Mutual labels:  consul
hookpick
A tool to manage some operational concepts of Hashicorp Vault
Stars: ✭ 83 (+144.12%)
Mutual labels:  consul
hubble
hubbling the universe nebula by nebula
Stars: ✭ 18 (-47.06%)
Mutual labels:  consul

katalog-sync GoDoc Build Status Go Report Card

katalog-sync is a node-local mechanism for syncing k8s pods to consul services.

katalog-sync has:

  • node-local syncing to local consul-agent
  • agent-services in consul, meaning health of those endpoints is tied to the node agent
  • sync readiness state from k8s as check to consul
  • (optional) sidecar service to ensure consul registration before a pod is marked "ready"

katalog-sync makes the following assumptions:

  • You have a consul-agent running on each node (presumably as a Daemonset)
  • You are running a consul-agent which supports ServiceMetadata (>= 1.0.7)
  • You want to sync Pods to consul services and have the readiness values reflected
  • Your pods can communicate with Daemonsets running on the same node

katalog-sync overview

  1. Kubelet starts container on Node
  2. (optional) katalog-sync-sidecar calls to katalog-sync-daemonset waiting until registration with consul is complete
  3. Daemonset syncs changes from kubelet through the local kubelet API
  4. Daemonset syncs changes to consul

k8s pod annotations

Annotation
katalog-sync.wish.com/service-names Comma-separated list of service names
katalog-sync.wish.com/service-port Port for the consul service
katalog-sync.wish.com/service-port-SERVICE-NAME Port override to use for a specific service name
katalog-sync.wish.com/service-tags Tags for the consul service
katalog-sync.wish.com/service-tags-SERVICE-NAME Tags override to use for a specific service name
katalog-sync.wish.com/service-meta ServiceMeta for the consul service
katalog-sync.wish.com/service-meta-SERVICE-NAME ServiceMeta override to use for a specific service name
katalog-sync.wish.com/service-health Use a fixed health status string regardless of pod readiness, valid values: 'passing', 'warning', 'critical'
katalog-sync.wish.com/serivce-health-SERVICE-NAME health overrride for a specific service name
katalog-sync.wish.com/sidecar Container name of the katalog-sync-sidecar
katalog-sync.wish.com/sync-interval How frequently to sync this service with consul
katalog-sync.wish.com/service-check-ttl TTL for the service checks put into consul
katalog-sync.wish.com/container-exclude Comma-separated list of containers to exclude in readiness check

katalog-sync-daemon options

$ ./katalog-sync-daemon  -h
Usage:
  katalog-sync-daemon [OPTIONS]

Application Options:
      --log-level=                        Log level (default: info) [$LOG_LEVEL]
      --bind-address=                     address for binding RPC interface for
                                          sidecar [$BIND_ADDRESS]
      --pprof-bind-address=               address for binding pprof
                                          [$PPROF_BIND_ADDRESS]
      --min-sync-interval=                minimum duration allowed for sync
                                          (default: 500ms) [$MIN_SYNC_INTERVAL]
      --max-sync-interval=                maximum duration allowed for sync
                                          (default: 5s) [$MAX_SYNC_INTERVAL]
      --default-sync-interval=
      --default-check-ttl=
      --sync-ttl-buffer-duration=         how much time to ensure is between
                                          sync time and ttl (default: 10s)
                                          [$SYNC_TTL_BUFFER_DURATION]
      --kubelet-api=                      kubelet API endpoint (default:
                                          http://localhost:10255/pods)
                                          [$KUBELET_API]
      --kubelet-api-insecure-skip-verify  skip verification of TLS certificate
                                          from kubelet API
                                          [$KUBELET_API_INSECURE_SKIP_VERIFY]

Help Options:
  -h, --help                              Show this help message

katalog-sync-sidecar options

$ ./katalog-sync-sidecar -h
Usage:
  katalog-sync-sidecar [OPTIONS]

Application Options:
      --log-level=                       Log level (default: info) [$LOG_LEVEL]
      --katalog-sync-daemon=             katalog-sync-daemon API endpoint [$KATALOG_SYNC_DAEMON]
      --katalog-sync-daemon-max-backoff= katalog-sync-daemon API max backoff (default: 1s) [$KATALOG_SYNC_DAEMON_MAX_BACKOFF]
      --bind-address=                    address for binding checks to [$BIND_ADDRESS]
      --namespace=                       k8s namespace this is running in [$NAMESPACE]
      --pod-name=                        k8s pod this is running in [$POD_NAME]
      --container-name=                  k8s container this is running in [$CONTAINER_NAME]

Help Options:
  -h, --help                             Show this help message
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].