67 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
			
		
		
	
	
			67 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
| # Kubernetes Registry Plugin for micro
 | |
| This is a plugin for go-micro that allows you to use Kubernetes as a registry.
 | |
| 
 | |
| 
 | |
| ## Overview
 | |
| This registry plugin makes use of Annotations and Labels on a Kubernetes pod
 | |
| to build a service discovery mechanism.
 | |
| 
 | |
| 
 | |
| ## RBAC
 | |
| If your Kubernetes cluster has RBAC enabled, a role and role binding
 | |
| will need to be created to allow this plugin to `list` and `patch` pods.
 | |
| 
 | |
| A cluster role can be used to specify the `list` and `patch`
 | |
| requirements, while a role binding per namespace can be used to apply
 | |
| the cluster role. The example RBAC configs below assume your Micro-based
 | |
| services are running in the `test` namespace, and the pods that contain
 | |
| the services are using the `micro-services` service account.
 | |
| 
 | |
| ```
 | |
| apiVersion: rbac.authorization.k8s.io/v1
 | |
| kind: ClusterRole
 | |
| metadata:
 | |
|   name: micro-registry
 | |
| rules:
 | |
| - apiGroups:
 | |
|   - ""
 | |
|   resources:
 | |
|   - pods
 | |
|   verbs:
 | |
|   - list
 | |
|   - patch
 | |
|   - watch
 | |
| ```
 | |
| 
 | |
| ```
 | |
| apiVersion: rbac.authorization.k8s.io/v1
 | |
| kind: RoleBinding
 | |
| metadata:
 | |
|   name: micro-registry
 | |
| roleRef:
 | |
|   apiGroup: rbac.authorization.k8s.io
 | |
|   kind: ClusterRole
 | |
|   name: micro-registry
 | |
| subjects:
 | |
| - kind: ServiceAccount
 | |
|   name: micro-services
 | |
|   namespace: test
 | |
| ```
 | |
| 
 | |
| 
 | |
| ## Gotchas
 | |
| * Registering/Deregistering relies on the HOSTNAME Environment Variable, which inside a pod
 | |
| is the place where it can be retrieved from. (This needs improving)
 | |
| 
 | |
| 
 | |
| ## Connecting to the Kubernetes API
 | |
| ### Within a pod
 | |
| If the `--registry_address` flag is omitted, the plugin will securely connect to
 | |
| the Kubernetes API using the pods "Service Account". No extra configuration is necessary.
 | |
| 
 | |
| Find out more about service accounts here. http://kubernetes.io/docs/user-guide/accessing-the-cluster/
 | |
| 
 | |
| ### Outside of Kubernetes
 | |
| Some functions of the plugin should work, but its not been heavily tested.
 | |
| Currently no TLS support.
 |