@Override default <S> S connectToService(AccountDeploymentDetails<KubernetesAccount> details, SpinnakerRuntimeSettings runtimeSettings, SpinnakerService<S> service) { ServiceSettings settings = runtimeSettings.getServiceSettings(service); KubernetesV1ProviderUtils.Proxy proxy = KubernetesV1ProviderUtils.openProxy(getJobExecutor(), details); String endpoint = KubernetesV1ProviderUtils.proxyServiceEndpoint(proxy, getNamespace(settings), getServiceName(), settings.getPort()).toString(); return getServiceInterfaceFactory().createService(endpoint, service); }
@Override default <S> S connectToService(AccountDeploymentDetails<KubernetesAccount> details, SpinnakerRuntimeSettings runtimeSettings, SpinnakerService<S> service) { ServiceSettings settings = runtimeSettings.getServiceSettings(service); KubernetesV1ProviderUtils.Proxy proxy = KubernetesV1ProviderUtils.openProxy(getJobExecutor(), details); String endpoint = KubernetesV1ProviderUtils.proxyServiceEndpoint(proxy, getNamespace(settings), getServiceName(), settings.getPort()).toString(); return getServiceInterfaceFactory().createService(endpoint, service); }
@Override default <S> S connectToInstance(AccountDeploymentDetails<KubernetesAccount> details, SpinnakerRuntimeSettings runtimeSettings, SpinnakerService<S> sidecar, String instanceId) { ServiceSettings settings = runtimeSettings.getServiceSettings(sidecar); String namespace = getNamespace(settings); int localPort = SocketUtils.findAvailableTcpPort(); int targetPort = settings.getPort(); List<String> command = KubernetesV1ProviderUtils.kubectlPortForwardCommand(details, namespace, instanceId, targetPort, localPort); JobRequest request = new JobRequest().setTokenizedCommand(command); String jobId = getJobExecutor().startJob(request); // Wait for the proxy to spin up. DaemonTaskHandler.safeSleep(TimeUnit.SECONDS.toMillis(5)); JobStatus status = getJobExecutor().updateJob(jobId); // This should be a long-running job. if (status.getState() == JobStatus.State.COMPLETED) { throw new HalException(Problem.Severity.FATAL, "Unable to establish a proxy against " + getServiceName() + ":\n" + status.getStdOut() + "\n" + status.getStdErr()); } return getServiceInterfaceFactory().createService(settings.getScheme() + "://localhost:" + localPort, sidecar); }
@Override default <S> S connectToInstance(AccountDeploymentDetails<KubernetesAccount> details, SpinnakerRuntimeSettings runtimeSettings, SpinnakerService<S> sidecar, String instanceId) { ServiceSettings settings = runtimeSettings.getServiceSettings(sidecar); String namespace = getNamespace(settings); int localPort = SocketUtils.findAvailableTcpPort(); int targetPort = settings.getPort(); List<String> command = KubernetesV1ProviderUtils.kubectlPortForwardCommand(details, namespace, instanceId, targetPort, localPort); JobRequest request = new JobRequest().setTokenizedCommand(command); String jobId = getJobExecutor().startJob(request); // Wait for the proxy to spin up. DaemonTaskHandler.safeSleep(TimeUnit.SECONDS.toMillis(5)); JobStatus status = getJobExecutor().updateJob(jobId); // This should be a long-running job. if (status.getState() == JobStatus.State.COMPLETED) { throw new HalException(Problem.Severity.FATAL, "Unable to establish a proxy against " + getServiceName() + ":\n" + status.getStdOut() + "\n" + status.getStdErr()); } return getServiceInterfaceFactory().createService(settings.getScheme() + "://localhost:" + localPort, sidecar); }