use of com.netflix.spinnaker.clouddriver.kubernetes.v1.deploy.description.servergroup.DeployKubernetesAtomicOperationDescription in project halyard by spinnaker.
the class KubernetesV1DistributedService method buildContainer.
default KubernetesContainerDescription buildContainer(String name, ServiceSettings settings, List<ConfigSource> configSources, DeploymentEnvironment deploymentEnvironment, DeployKubernetesAtomicOperationDescription description) {
KubernetesContainerDescription container = new KubernetesContainerDescription();
KubernetesProbe readinessProbe = new KubernetesProbe();
KubernetesHandler handler = new KubernetesHandler();
int port = settings.getPort();
String healthEndpoint = settings.getHealthEndpoint();
if (healthEndpoint != null) {
handler.setType(KubernetesHandlerType.HTTP);
KubernetesHttpGetAction action = new KubernetesHttpGetAction();
action.setPath(healthEndpoint);
action.setPort(port);
handler.setHttpGetAction(action);
} else {
handler.setType(KubernetesHandlerType.TCP);
KubernetesTcpSocketAction action = new KubernetesTcpSocketAction();
action.setPort(port);
handler.setTcpSocketAction(action);
}
readinessProbe.setHandler(handler);
container.setReadinessProbe(readinessProbe);
applyCustomSize(container, deploymentEnvironment, name, description);
KubernetesImageDescription imageDescription = KubernetesUtil.buildImageDescription(settings.getArtifactId());
container.setImageDescription(imageDescription);
container.setName(name);
List<KubernetesContainerPort> ports = new ArrayList<>();
KubernetesContainerPort containerPort = new KubernetesContainerPort();
containerPort.setContainerPort(port);
ports.add(containerPort);
container.setPorts(ports);
List<KubernetesVolumeMount> volumeMounts = new ArrayList<>();
for (ConfigSource configSource : configSources) {
KubernetesVolumeMount volumeMount = new KubernetesVolumeMount();
volumeMount.setName(configSource.getId());
volumeMount.setMountPath(configSource.getMountPath());
volumeMounts.add(volumeMount);
}
container.setVolumeMounts(volumeMounts);
List<KubernetesEnvVar> envVars = new ArrayList<>();
settings.getEnv().forEach((k, v) -> {
KubernetesEnvVar envVar = new KubernetesEnvVar();
envVar.setName(k);
envVar.setValue(v);
envVars.add(envVar);
});
configSources.forEach(c -> {
c.getEnv().entrySet().forEach(envEntry -> {
KubernetesEnvVar envVar = new KubernetesEnvVar();
envVar.setName(envEntry.getKey());
envVar.setValue(envEntry.getValue());
envVars.add(envVar);
});
});
container.setEnvVars(envVars);
return container;
}
use of com.netflix.spinnaker.clouddriver.kubernetes.v1.deploy.description.servergroup.DeployKubernetesAtomicOperationDescription in project halyard by spinnaker.
the class KubernetesV1DistributedService method getServerGroupDescription.
default Map<String, Object> getServerGroupDescription(AccountDeploymentDetails<KubernetesAccount> details, SpinnakerRuntimeSettings runtimeSettings, List<ConfigSource> configSources) {
DeployKubernetesAtomicOperationDescription description = new DeployKubernetesAtomicOperationDescription();
SpinnakerMonitoringDaemonService monitoringService = getMonitoringDaemonService();
ServiceSettings settings = runtimeSettings.getServiceSettings(getService());
DeploymentEnvironment deploymentEnvironment = details.getDeploymentConfiguration().getDeploymentEnvironment();
String accountName = details.getAccount().getName();
String namespace = getNamespace(settings);
String name = getServiceName();
Names parsedName = Names.parseName(name);
description.setNamespace(namespace);
description.setAccount(accountName);
description.setApplication(parsedName.getApp());
description.setStack(parsedName.getStack());
description.setFreeFormDetails(parsedName.getDetail());
List<KubernetesVolumeSource> volumeSources = new ArrayList<>();
for (ConfigSource configSource : configSources) {
KubernetesVolumeSource volumeSource = new KubernetesVolumeSource();
volumeSource.setName(configSource.getId());
volumeSource.setType(KubernetesVolumeSourceType.Secret);
KubernetesSecretVolumeSource secretVolumeSource = new KubernetesSecretVolumeSource();
secretVolumeSource.setSecretName(configSource.getId());
volumeSource.setSecret(secretVolumeSource);
volumeSources.add(volumeSource);
}
description.setVolumeSources(volumeSources);
description.setPodAnnotations(settings.getKubernetes().getPodAnnotations());
List<String> loadBalancers = new ArrayList<>();
loadBalancers.add(name);
description.setLoadBalancers(loadBalancers);
List<KubernetesContainerDescription> containers = new ArrayList<>();
ServiceSettings serviceSettings = runtimeSettings.getServiceSettings(getService());
KubernetesContainerDescription container = buildContainer(name, serviceSettings, configSources, deploymentEnvironment, description);
containers.add(container);
ServiceSettings monitoringSettings = runtimeSettings.getServiceSettings(monitoringService);
if (monitoringSettings.getEnabled() && serviceSettings.getMonitored()) {
serviceSettings = runtimeSettings.getServiceSettings(monitoringService);
container = buildContainer(monitoringService.getServiceName(), serviceSettings, configSources, deploymentEnvironment, description);
containers.add(container);
}
description.setContainers(containers);
return getObjectMapper().convertValue(description, new TypeReference<Map<String, Object>>() {
});
}
Aggregations