|
50 | 50 | import io.fabric8.kubernetes.api.model.ContainerPortBuilder;
|
51 | 51 | import io.fabric8.kubernetes.api.model.DoneablePod;
|
52 | 52 | import io.fabric8.kubernetes.api.model.EnvVar;
|
| 53 | +import io.fabric8.kubernetes.api.model.EnvVarSourceBuilder; |
53 | 54 | import io.fabric8.kubernetes.api.model.LocalObjectReference;
|
54 | 55 | import io.fabric8.kubernetes.api.model.Pod;
|
55 | 56 | import io.fabric8.kubernetes.api.model.PodSpec;
|
| 57 | +import io.fabric8.kubernetes.api.model.SecretKeySelectorBuilder; |
56 | 58 | import io.fabric8.kubernetes.api.model.SecurityContext;
|
57 | 59 | import io.fabric8.kubernetes.api.model.SecurityContextBuilder;
|
58 | 60 | import io.fabric8.kubernetes.api.model.Service;
|
@@ -84,6 +86,8 @@ public class KubernetesBackend extends AbstractContainerBackend {
|
84 | 86 | private static final String PARAM_POD = "pod";
|
85 | 87 | private static final String PARAM_SERVICE = "service";
|
86 | 88 |
|
| 89 | + private static final String SECRET_KEY_REF = "secretKeyRef"; |
| 90 | + |
87 | 91 | private KubernetesClient kubeClient;
|
88 | 92 |
|
89 | 93 | @Override
|
@@ -137,9 +141,24 @@ protected Container startContainer(ContainerSpec spec, Proxy proxy) throws Excep
|
137 | 141 |
|
138 | 142 | List<EnvVar> envVars = new ArrayList<>();
|
139 | 143 | for (String envString : buildEnv(spec, proxy)) {
|
140 |
| - int idx = envString.indexOf('='); |
141 |
| - if (idx == -1) log.warn("Invalid environment variable: " + envString); |
142 |
| - envVars.add(new EnvVar(envString.substring(0, idx), envString.substring(idx + 1), null)); |
| 144 | + String[] e = envString.split("="); |
| 145 | + if (e.length > 2) e[1] = envString.substring(envString.indexOf('=') + 1); |
| 146 | + |
| 147 | + if (e[1].toLowerCase().startsWith(SECRET_KEY_REF.toLowerCase())) { |
| 148 | + String[] ref = e[1].split(":"); |
| 149 | + if (ref.length != 3) { |
| 150 | + log.warn(String.format("Invalid secret key reference: %s. Expected format: '%s:<name>:<key>'", envString, SECRET_KEY_REF)); |
| 151 | + continue; |
| 152 | + } |
| 153 | + envVars.add(new EnvVar(e[0], null, new EnvVarSourceBuilder() |
| 154 | + .withSecretKeyRef(new SecretKeySelectorBuilder() |
| 155 | + .withName(ref[1]) |
| 156 | + .withKey(ref[2]) |
| 157 | + .build()) |
| 158 | + .build())); |
| 159 | + } else { |
| 160 | + envVars.add(new EnvVar(e[0], e[1], null)); |
| 161 | + } |
143 | 162 | }
|
144 | 163 |
|
145 | 164 | SecurityContext security = new SecurityContextBuilder()
|
|
0 commit comments