summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--contributors/design-proposals/service_injection_policy.md65
1 files changed, 65 insertions, 0 deletions
diff --git a/contributors/design-proposals/service_injection_policy.md b/contributors/design-proposals/service_injection_policy.md
new file mode 100644
index 00000000..3b2bbed8
--- /dev/null
+++ b/contributors/design-proposals/service_injection_policy.md
@@ -0,0 +1,65 @@
+# Service Injection Policy
+
+## Abstract
+
+Describes a policy resource that allows loose coupling from services to the pods
+that consume them.
+
+## Motivation
+
+Consuming a service involves more than just connectivity. In addition to
+coordinates to reach the service, credentials and non-secret configuration
+parameters are typically needed to use the service. The primitives for this
+already exist, but a gap exists where loose coupling is desired: it should be
+possible to inject pods with the information they need to use a service on a
+service-by-service basis, without the pod authors having to incorporate the
+information into every pod spec where it is needed.
+
+## Constraints and Assumptions
+
+1. New mechanisms must be made to work with controllers such as deployments and
+ replicasets that create pods
+
+## Use Cases
+
+1. As a user, I want to be able to describe a way that pods should be injected
+ with the information to consume a particular service in a loosely-coupled
+ way, so that I can concisely model the information about how the service
+ should be consumed without altering every consuming pod spec
+
+<!--
+2. As a user, I want a controller that manage pods to create a new generation
+ of pods when the pods that controller's pods should be injected with
+ information about a new set of services
+-->
+
+### Loose coupling between services and their consumers
+
+
+
+## Proposed Changes
+
+### ServiceInjectionPolicy API object
+
+```go
+type ServiceInjectionPolicy struct {
+ unversioned.TypeMeta
+ ObjectMeta
+
+ Spec ServiceInjectionPolicySpec
+}
+
+type ServiceInjectionPolicySpec struct {
+ LabelSelector *unversioned.LabelSelector
+ Env []EnvVar
+ EnvFrom []EnvVarFrom
+ Volumes []Volume
+ VolumeMounts []VolumeMount
+}
+```
+
+## Examples
+
+```yaml
+
+``` \ No newline at end of file