Skip to content

Eliminate redundant Kubernetes service for Conjur #131

@diverdane

Description

@diverdane

Is your feature request related to a problem? Please describe.

With the current Conjur OSS helm chart, there are 2 services created, which by default are an NodePort type service, and a LoadBalancer type service:

dane@dane-vbox:~/diverdane/conjur-demo-helm-chart/templates$ kubectl get svc | grep -v postgres
NAME                  TYPE           CLUSTER-IP   EXTERNAL-IP    PORT(S)         AGE
conjur-oss            NodePort       10.0.0.213   <none>         443:32413/TCP   137d
conjur-oss-ingress    LoadBalancer   10.0.4.165   34.74.122.54   443:30279/TCP   137d
dane@dane-vbox:~/diverdane/conjur-demo-helm-chart/templates$ 

The manifest templates for these services are found in conjur-oss/templates/service.yaml and conjur-oss/templates/load-balancer.yaml, respectively.

These two services can be combined into one service (with one YAML manifest for that combined service), where the type of service can be one of the following (mutually exclusive) types:

  • ClusterIP
  • NodePort
  • LoadBalancer

Note that providing a ClusterIP and NodePort options is helpful in situations where the platform does not natively support Load balancers (e.g. Minikube and Kubernetes-in-Docker), or where load balancers are not necessary (all access to Conjur is from clients that are inside the Kubernetes cluster).

Note that for LoadBalancer type services, Kubernetes provides gratuitous ClusterIP and NodePort service access by default, so there's no need for separate internal services to be defined.

The support of 2 services will need to be deprecated for a time period before this support is removed, since there may be some folks in the community expecting these 2 services to be available.

Deprecation should be possible by adding additive fields in values.yaml, e.g.:

service:
  singleService: false
  # annotations: {}
  # port: 443
  # type: LoadBalancer

Where the singleService setting and all internal and external settings will disappear for the next major version when dual-service is no longer supported. The type field can be set to ClusterIP, NodePort, or LoadBalancer (when singleService is set to true. When singleService is set to true, then the internal and external values settings are ignored.

Deprecation and Ignored Values Warnings Required in NOTES.txt

The implementation for this Issue must include updates to the conjur-oss/templates/NOTES.txt to include the following:

  • A deprecation warning for the redundant Conjur service, and for values that will be removed in the next major (breaking) release.
  • A warning that the internal/external values are being ignored whenever the single Conjur service mode is being used.

Here is a useful reference: helm/helm#8766

Describe the solution you would like

See description above.

Describe alternatives you have considered

Alternative is keeping both services for Conjur.

Additional context

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions