exec в pod с помощью client-go

Я новичок и клиент-иду :).

Я видел эту функцию, где я могу использовать ее для отправки команды или выполнения в модуль с интерактивным терминалом. Ниже мне нужно знать, какие параметры я должен предоставить, чтобы вызвать его из func main (), поскольку я вижу, что для этого требуется config * restclient.Config, которого я не понимаю. Любой пример или отправная точка?

PS. Я знаю, как создать набор клиентов для аутентификации с помощью kubeconfig. просто нужно знать, какие параметры для этого потребуются и как их вызвать из основной функции.

package main

import (
    "io"

    v1 "k8s.io/api/core/v1"
    "k8s.io/client-go/kubernetes"
    "k8s.io/client-go/kubernetes/scheme"
    restclient "k8s.io/client-go/rest"
    "k8s.io/client-go/tools/remotecommand"
)

//ExecCmdExample exec command on specific pod and wait the command's output.
func ExecCmdExample(client kubernetes.Interface, config *restclient.Config, podName string,
    command string, stdin io.Reader, stdout io.Writer, stderr io.Writer) error {
    cmd := []string{
        "sh",
        "-c",
        command,
    }
    req := client.CoreV1().RESTClient().Post().Resource("pods").Name(podName).
        Namespace("default").SubResource("exec")
    option := &v1.PodExecOptions{
        Command: cmd,
        Stdin:   true,
        Stdout:  true,
        Stderr:  true,
        TTY:     true,
    }
    if stdin == nil {
        option.Stdin = false
    }
    req.VersionedParams(
        option,
        scheme.ParameterCodec,
    )
    exec, err := remotecommand.NewSPDYExecutor(config, "POST", req.URL())
    if err != nil {
        return err
    }
    err = exec.Stream(remotecommand.StreamOptions{
        Stdin:  stdin,
        Stdout: stdout,
        Stderr: stderr,
    })
    if err != nil {
        return err
    }

    return nil
}

person mohab    schedule 22.11.2020    source источник
comment
Знаете ли вы, есть ли способ получить код выхода удаленно выполненной команды?   -  person Paymahn Moghadasian    schedule 09.06.2021


Ответы (1)


Я смог решить эту проблему. вопрос можно закрыть.

Редактировать:

вы можете посмотреть код здесь:

https://github.com/mohatb/kubego

person mohab    schedule 23.11.2020
comment
Измените свой ответ, чтобы помочь людям, задающим тот же вопрос. - person olivierlemasle; 18.02.2021