public List<KubernetesV2Service> getServicesByPriority(List<SpinnakerService.Type> serviceTypes) { List<KubernetesV2Service> result = getFieldsOfType(KubernetesV2Service.class).stream() .filter(d -> serviceTypes.contains(d.getService().getType())) .sorted((d1, d2) -> d2.getDeployPriority().compareTo(d1.getDeployPriority())) .collect(Collectors.toList()); return result; }
default String connectCommand(AccountDeploymentDetails<KubernetesAccount> details, SpinnakerRuntimeSettings runtimeSettings) { ServiceSettings settings = runtimeSettings.getServiceSettings(getService()); KubernetesAccount account = details.getAccount(); String namespace = settings.getLocation(); String name = getServiceName(); int port = settings.getPort(); String podNameCommand = String.join(" ", KubernetesV2Utils.kubectlPodServiceCommand(account, namespace, name)); return String.join(" ", KubernetesV2Utils.kubectlConnectPodCommand(account, namespace, "$(" + podNameCommand + ")", port)); } }
public List<KubernetesV2Service> getServicesByPriority(List<SpinnakerService.Type> serviceTypes) { List<KubernetesV2Service> result = getFieldsOfType(KubernetesV2Service.class).stream() .filter(d -> serviceTypes.contains(d.getService().getType())) .sorted((d1, d2) -> d2.getDeployPriority().compareTo(d1.getDeployPriority())) .collect(Collectors.toList()); return result; }
default String connectCommand(AccountDeploymentDetails<KubernetesAccount> details, SpinnakerRuntimeSettings runtimeSettings) { ServiceSettings settings = runtimeSettings.getServiceSettings(getService()); KubernetesAccount account = details.getAccount(); String namespace = settings.getLocation(); String name = getServiceName(); int port = settings.getPort(); String podNameCommand = String.join(" ", KubernetesV2Utils.kubectlPodServiceCommand(account, namespace, name)); return String.join(" ", KubernetesV2Utils.kubectlConnectPodCommand(account, namespace, "$(" + podNameCommand + ")", port)); } }
default List<SidecarConfig> getSidecarConfigs(AccountDeploymentDetails<KubernetesAccount> details) { //attempt to get the service name specific sidecars first List<SidecarConfig> sidecarConfigs = details.getDeploymentConfiguration() .getDeploymentEnvironment() .getSidecars() .getOrDefault(getService().getServiceName(), new ArrayList<>()); if (sidecarConfigs.isEmpty()) { sidecarConfigs = details.getDeploymentConfiguration() .getDeploymentEnvironment() .getSidecars() .getOrDefault(getService().getBaseCanonicalName(), new ArrayList<>()); } return sidecarConfigs; }
default List<ConfigSource> stageConfig(KubernetesV2Executor executor, AccountDeploymentDetails<KubernetesAccount> details, GenerateService.ResolvedConfiguration resolvedConfiguration) { Map<String, Profile> profiles = resolvedConfiguration.getProfilesForService(getService().getType()); String stagingPath = getSpinnakerStagingPath(details.getDeploymentName()); SpinnakerRuntimeSettings runtimeSettings = resolvedConfiguration.getRuntimeSettings(); List<ConfigSource> configSources = new ArrayList<>(); String secretNamePrefix = getServiceName() + "-files"; String namespace = getNamespace(resolvedConfiguration.getServiceSettings(getService())); KubernetesAccount account = details.getAccount(); for (Profile profile : sidecarService.getSidecarProfiles(resolvedConfiguration, getService())) { if (profile == null) { throw new HalException(Problem.Severity.FATAL, "Service " + sidecarService.getService().getCanonicalName() + " is required but was not supplied for deployment."); )); KubernetesV2Utils.SecretSpec spec = KubernetesV2Utils.createSecretSpec(namespace, getService().getCanonicalName(), secretNamePrefix, files); executor.apply(spec.resource.toString()); configSources.add(new ConfigSource() .collect(Collectors.toList()); KubernetesV2Utils.SecretSpec spec = KubernetesV2Utils.createSecretSpec(namespace, getService().getCanonicalName(), secretNamePrefix, files); executor.apply(spec.resource.toString()); configSources.add(new ConfigSource()
default List<String> getInitContainers(AccountDeploymentDetails<KubernetesAccount> details) { List<Map> initContainersConfig = details.getDeploymentConfiguration() .getDeploymentEnvironment() .getInitContainers() .getOrDefault(getService().getServiceName(), new ArrayList<>()); if (initContainersConfig.isEmpty()) { initContainersConfig = details.getDeploymentConfiguration() .getDeploymentEnvironment() .getInitContainers() .getOrDefault(getService().getBaseCanonicalName(), new ArrayList<>()); } List<String> initContainers = initContainersConfig .stream() .map(o -> { try { return getObjectMapper().writeValueAsString(o); } catch (JsonProcessingException e) { throw new HalException(Problem.Severity.FATAL, "Invalid init container format: " + e.getMessage(), e); } }).collect(Collectors.toList()); return initContainers; }
default List<ConfigSource> stageConfig(AccountDeploymentDetails<KubernetesAccount> details, GenerateService.ResolvedConfiguration resolvedConfiguration) { Map<String, Profile> profiles = resolvedConfiguration.getProfilesForService(getService().getType()); String stagingPath = getSpinnakerStagingPath(details.getDeploymentName()); SpinnakerRuntimeSettings runtimeSettings = resolvedConfiguration.getRuntimeSettings(); List<ConfigSource> configSources = new ArrayList<>(); String secretNamePrefix = getServiceName() + "-files"; String namespace = getNamespace(resolvedConfiguration.getServiceSettings(getService())); KubernetesAccount account = details.getAccount(); for (Profile profile : sidecarService.getSidecarProfiles(resolvedConfiguration, getService())) { if (profile == null) { throw new HalException(Problem.Severity.FATAL, "Service " + sidecarService.getService().getCanonicalName() + " is required but was not supplied for deployment.");
default List<SidecarService> getSidecars(SpinnakerRuntimeSettings runtimeSettings) { SpinnakerMonitoringDaemonService monitoringService = getMonitoringDaemonService(); ServiceSettings monitoringSettings = runtimeSettings.getServiceSettings(monitoringService); ServiceSettings thisSettings = runtimeSettings.getServiceSettings(getService()); List<SidecarService> result = new ArrayList<>(); if (monitoringSettings.getEnabled() && thisSettings.getMonitored()) { result.add(monitoringService); } return result; }
default String getNamespaceYaml(GenerateService.ResolvedConfiguration resolvedConfiguration) { ServiceSettings settings = resolvedConfiguration.getServiceSettings(getService()); String name = getNamespace(settings); TemplatedResource namespace = new JinjaJarResource("/kubernetes/manifests/namespace.yml"); namespace.addBinding("name", name); return namespace.toString(); }
default List<String> getHostAliases(AccountDeploymentDetails<KubernetesAccount> details) { //attempt to get the service name specific sidecars first List<Map> hostAliasesConfig = details.getDeploymentConfiguration() .getDeploymentEnvironment() .getHostAliases() .getOrDefault(getService().getServiceName(), new ArrayList<>()); if (hostAliasesConfig.isEmpty()) { hostAliasesConfig = details.getDeploymentConfiguration() .getDeploymentEnvironment() .getHostAliases() .getOrDefault(getService().getBaseCanonicalName(), new ArrayList<>()); } List<String> hostAliases = hostAliasesConfig .stream() .map(o -> { try { return getObjectMapper().writeValueAsString(o); } catch (JsonProcessingException e) { throw new HalException(Problem.Severity.FATAL, "Invalid host alias format: " + e.getMessage(), e); } }).collect(Collectors.toList()); return hostAliases; }
default String getNamespaceYaml(GenerateService.ResolvedConfiguration resolvedConfiguration) { ServiceSettings settings = resolvedConfiguration.getServiceSettings(getService()); String name = getNamespace(settings); TemplatedResource namespace = new JinjaJarResource("/kubernetes/manifests/namespace.yml"); namespace.addBinding("name", name); return namespace.toString(); }
default List<SidecarService> getSidecars(SpinnakerRuntimeSettings runtimeSettings) { SpinnakerMonitoringDaemonService monitoringService = getMonitoringDaemonService(); List<SidecarService> result = new ArrayList<>(); if (monitoringService == null) { return result; } ServiceSettings monitoringSettings = runtimeSettings.getServiceSettings(monitoringService); ServiceSettings thisSettings = runtimeSettings.getServiceSettings(getService()); if (monitoringSettings.getEnabled() && thisSettings.getMonitored()) { result.add(monitoringService); } return result; }
default String getServiceYaml(GenerateService.ResolvedConfiguration resolvedConfiguration) { ServiceSettings settings = resolvedConfiguration.getServiceSettings(getService()); String namespace = getNamespace(settings); TemplatedResource service = new JinjaJarResource("/kubernetes/manifests/service.yml"); service.addBinding("name", getService().getCanonicalName()); service.addBinding("namespace", namespace); service.addBinding("port", settings.getPort()); return service.toString(); }
default String getServiceYaml(GenerateService.ResolvedConfiguration resolvedConfiguration) { ServiceSettings settings = resolvedConfiguration.getServiceSettings(getService()); String namespace = getNamespace(settings); TemplatedResource service = new JinjaJarResource("/kubernetes/manifests/service.yml"); service.addBinding("name", getService().getCanonicalName()); service.addBinding("namespace", namespace); service.addBinding("port", settings.getPort()); service.addBinding("type", settings.getKubernetes().getServiceType()); service.addBinding("nodePort", settings.getKubernetes().getNodePort()); return service.toString(); }
default String getResourceYaml(AccountDeploymentDetails<KubernetesAccount> details, GenerateService.ResolvedConfiguration resolvedConfiguration) { ServiceSettings settings = resolvedConfiguration.getServiceSettings(getService()); SpinnakerRuntimeSettings runtimeSettings = resolvedConfiguration.getRuntimeSettings(); String namespace = getNamespace(settings); CustomSizing customSizing = details.getDeploymentConfiguration().getDeploymentEnvironment().getCustomSizing(); if (customSizing != null) { Map componentSizing = customSizing.getOrDefault(getService().getServiceName(), new HashMap()); targetSize = (Integer) componentSizing.getOrDefault("replicas", targetSize); String primaryContainer = buildContainer(getService().getCanonicalName(), details, settings, configSources, env); List<String> sidecarContainers = getSidecars(runtimeSettings).stream() .map(SidecarService::getService) .addBinding("name", getService().getCanonicalName()) .addBinding("namespace", namespace) .addBinding("replicas", targetSize)
GenerateService.ResolvedConfiguration resolvedConfiguration) { SpinnakerRuntimeSettings runtimeSettings = resolvedConfiguration.getRuntimeSettings(); ServiceSettings settings = resolvedConfiguration.getServiceSettings(getService()); String primaryContainer = buildContainer(getService().getCanonicalName(), details, settings, configSources, env); List<String> sidecarContainers = getSidecars(runtimeSettings).stream() .map(SidecarService::getService)
default String getResourceYaml(KubernetesV2Executor executor, AccountDeploymentDetails<KubernetesAccount> details, GenerateService.ResolvedConfiguration resolvedConfiguration) { ServiceSettings settings = resolvedConfiguration.getServiceSettings(getService()); Integer targetSize = settings.getTargetSize(); CustomSizing customSizing = details.getDeploymentConfiguration().getDeploymentEnvironment().getCustomSizing(); if (customSizing != null) { Map componentSizing = customSizing.getOrDefault(getService().getServiceName(), new HashMap()); targetSize = (Integer) componentSizing.getOrDefault("replicas", targetSize); } String version = makeValidLabel(details.getDeploymentConfiguration().getVersion()); if (version.isEmpty()) { version = "unknown"; } return new JinjaJarResource("/kubernetes/manifests/deployment.yml") .addBinding("name", getService().getCanonicalName()) .addBinding("namespace", getNamespace(settings)) .addBinding("replicas", targetSize) .addBinding("version", version) .addBinding("podAnnotations", settings.getKubernetes().getPodAnnotations()) .addBinding("podSpec", getPodSpecYaml(executor, details, resolvedConfiguration)) .toString(); }
customSizing.getOrDefault(getService().getServiceName(), new HashMap())); resources.addBinding("requests", componentSizing.getOrDefault("requests", new HashMap())); resources.addBinding("limits", componentSizing.getOrDefault("limits", new HashMap()));
customSizing.getOrDefault(getService().getServiceName(), new HashMap())); resources.addBinding("requests", componentSizing.getOrDefault("requests", new HashMap())); resources.addBinding("limits", componentSizing.getOrDefault("limits", new HashMap()));