TL;DR Replace dots with underscore and colons with double underscores.

Consider the following IOptions<MetroSettings> implementation

public class MetroSettings
{
    public RealTimeDepartures RealTimeDepartures { get; set; }
}

public class RealTimeDepartures
{
    public string ApiKey { get; set; }
    public string BaseUrl { get; set; }
}

In my Startup I have the following code:

...
var builder = new ConfigurationBuilder()
    .SetBasePath(env.ContentRootPath)
    .AddJsonFile("appsettings.json", true, true)
    .AddEnvironmentVariables("MyNamespace.MyPrefix.");
Configuration = builder.Build();
...

And my appsettings.json looks like this:

{
    "Metro": {
        "RealTimeDepartures": {
            "ApiKey": "OVERRIDE ME WITH A SYSTEM ENVIRONMENT VARIABLE",
            "BaseUrl": "http://example.com"
		}
	}
}

I don't like having API keys and other sensitive data in config files, I prefer environment variables.
In ASP.Net core it's pretty straight forward to transform the appsettings file with environment variables.

On windows you just run this in your terminal:

set MyNamespace.MyPrefix.Metro:RealTimeDepartures:ApiKey=MySecretApiKeyHere

and your good to go, at least in a windows environment.
I, however, wanted to run my application on a Ubuntu server and I ran into some problems.

When I ran the following command

export MyNamespace.MyPrefix.Metro:RealTimeDepartures:ApiKey=TESTING

I got the following error:

export: MyNamespace.Metro:RealTimeDepartures:ApiKey=TESTING': not a valid identifier

Apparently you are not allowed to have dots or colons in the environment variable name.

So, what to do?

Luckily I found this issue on github (open source ftw!) and I was able to make it work by doing the following:

Change my prefix from MyNamespace.MyPrefix. to MyNamespace_MyPrefix_ in the Startup file.
Replace the colons with double underscores instead

Before:

MyNamespace.MyPrefix.Metro:RealTimeDepartures:ApiKey=TESTING

After:

MyNamespace_MyPrefix_Metro__RealTimeDepartures__ApiKey=TESTING

Setting the correct environment variables in windows and ubuntu.

Windows:

set MyNamespace_MyPrefix_Metro__RealTimeDepartures__ApiKey=MySecretApiKeyHere

Ubuntu:

export MyNamespace_MyPrefix_Metro__RealTimeDepartures__ApiKey=MySecretApiKeyHere

(I actually ended up adding the variable directly in the /etc/environment file