Skip to content

Environment Specific Settings as Secret

clydeu edited this page Oct 6, 2018 · 1 revision

Modify Program.cs file and add the ConfigureAppConfiguration extension.

    public static IWebHost BuildWebHost(string[] args) =>
            WebHost.CreateDefaultBuilder(args)
                .ConfigureAppConfiguration((buildercontext, config) =>
                {
                    config.AddJsonFile("settings/appsettings.k8s.json", optional: true);
                })
                .UseStartup()
                .Build();

Create the secret in Kubernetes

kubectl create secret generic k8s-appsettings --from-file=./appsettings.k8s.json

Add the Volume to the deployment config

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: settingsdemo-deployment
spec:
  replicas: 3 
  template:
    metadata:
      labels:
        app: settingsdemo
    spec:
      containers:
      - name: settingsdemo
        image: myregistry.azurecr.io/settingsdemo:#{ContainerVersion}#          
        ports:
        - containerPort: 80
        imagePullPolicy: Always        
        volumeMounts:
        - name: settings
          mountPath: /app/settings
          readOnly: true
      volumes:
      - name: settings
        secret:
          secretName: k8s-appsettings

Reference: https://pascalnaber.wordpress.com/2017/11/29/handling-settings-and-environment-variables-of-your-net-core-2-application-hosted-in-a-docker-container-during-development-and-on-kubernetes-helm-to-the-resque/

Clone this wiki locally