Dynamic Parameters

Pain Point

Configuring Docker containers is a critical part of putting together an application. In Kubernetes, the environment variables allow you to configure the application through key-value pairs. Passing environment variables is often not easy and if you have a large number of containers that need to interact with other containers, changing even a single variable becomes extremely complicated. For example, in development, you may be using your own managed MySQL container which is shared by a large number of Docker containers, but in production you may want to switch to a provider-managed MySQL server. In this case, you will need to change the connection string in all of the Docker containers. This becomes really complex and nearly impossible to maintain.

The following are examples of YAML configuration files needed to manually pass environment parameters in a WordPress deployment.

wordpress-deployment.yaml

          apiVersion: apps/v1
kind: Deployment
...
spec:
  ...
          env:
          - name: WORDPRESS_DB_HOST
            value: :3306
          - name: WORDPRESS_DB_PASSWORD
            valueFrom:
              secretKeyRef:
                name: mysql
                key: password
          ports:
            - containerPort: 80
              name: wordpress

wordpress-v2.yaml

apiVersion: apps/v1
kind: Deployment
...
spec:
  ...
          env:
          - name: WORDPRESS_DB_HOST
            value: :3306
          - name: WORDPRESS_DB_PASSWORD
            valueFrom:
              secretKeyRef:
                name: mysql
                key: password
          ports:
            - containerPort: 80
              name: wordpress
         ...

As shown above, the developer will need to manually change config parameters in each configuration file. Developers will always have to maintain multiple sets of Kubernetes manifest for different configurations.

How CloudPlex addresses your pain

CloudPlex provides a way to define dynamic parameters within your services. The value of these parameters are resolved automatically by the platform and replaced at deployment time on a Kubernetes cluster. The following screenshot shows the developer changing from their own managed MySQL container to a provider-managed MySQL server, using a simple drag and drop operation, replacing the container without changing any variable in the service.