public async Task TestWithSpdySession() { var podPort = 80; var config = new KubernetesConfiguration(); var factory = new KubernetesClientFactory(config); using var client = factory.Create("kind-argo-demo-test"); var session = await client.SpdyNamespacedPodPortForwardAsync( "argocd-server-78ffb87fd8-f6559", "argocd", new[] { podPort }, CancellationToken.None) .ConfigureAwait(false); using var stream = session.Open( headers: new NameValueHeaderBlock( (Kubernetes.Headers.StreamType, new[] { Kubernetes.Headers.StreamTypeData }), (Kubernetes.Headers.Port, new[] { podPort.ToString() }))); await stream.Remote.WaitForOpenedAsync() .ConfigureAwait(false); await Task.Delay(10) .ConfigureAwait(false); }
public KubernetesRepository(SelectedNamespacesState selectedNamespaces, CurrentContext currentContext, KubernetesClientFactory kubernetesClientFactory) { SelectedNamespaces = selectedNamespaces; CurrentContext = currentContext; KubernetesClientFactory = kubernetesClientFactory; }
public async Task Test1() { var factory = new KubernetesClientFactory(new KubernetesConfiguration()); var ks = new KubernetesService( factory, new SocketNetworkServerFactory(), new TestFeatureManager()); await ks.PortForwardAsync( "kind-argo-demo-ci", new Shared.PortForward( podPort: 2746, protocolType: ProtocolType.Tcp, @namespace: "argo", service: "argo-server-5f5c647dcb-bkcz6", pod: "") { LocalPort = 2746 }, CancellationTokenSource.Token) .ConfigureAwait(false); await Task.Delay(int.MaxValue) .ConfigureAwait(false); }
private async Task EnsureInitialized() { var currentSelectedContext = await CurrentContext.Get(); if (_currentAppliedContext != currentSelectedContext) { _isInitialized = false; _items.Clear(); _currentAppliedContext = currentSelectedContext; Computed.Invalidate(GetAll); } if (_isInitialized) { return; } var client = await KubernetesClientFactory.Get(); var kubernetesRequest = client.Request <TList>(); var initialRequest = await kubernetesRequest.ExecuteAsync <TList>(); if (initialRequest?.Items != null) { foreach (var initialRequestItem in initialRequest.Items) { var fullPod = await client.Request <TEntity>(initialRequestItem.Namespace(), initialRequestItem.Metadata.Name).ExecuteAsync <TEntity>(); _items.TryAdd(fullPod.Uid(), fullPod); } } _watch = kubernetesRequest.ToWatch <TEntity>(initialRequest.ResourceVersion()); _watch.EventReceived += EventReceived; // Capture as discarded var to stop the "use await" warning var _ = _watch.Run(); _isInitialized = true; }
public async Task TestWithSpdy() { var config = new KubernetesConfiguration(); var factory = new KubernetesClientFactory(config); await using var ks = new KubernetesService( factory, new SocketNetworkServerFactory(), new TestFeatureManager((nameof(Features.PortForwardingWithSpdy), true))); await ks.PortForwardAsync( "kind-argo-demo-test", new Shared.PortForward( podPort: 80, protocolType: ProtocolType.Tcp, @namespace: "argocd", service: "", pod: "argocd-server-78ffb87fd8-f6559") { LocalPort = 8081 }, CancellationTokenSource.Token) .ConfigureAwait(false); await Task.Delay(5000) .ConfigureAwait(false); }