/
githubmirror
/
ydb-kubernetes-operator
Обзор
Документация
Войти
/
githubmirror
/
ydb-kubernetes-operator
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
internal/exec/exec.go
64 строки
1 KB
Mikhail Babich
Controller runtime update (#307)
20 фев 2026, 10:04
Не верифицирован
20 фев 2026, 10:04
f8de1aa
Код
Авторство
О чём код?
package exec import ( "bytes" "context" "fmt" "github.com/pkg/errors" corev1 "k8s.io/api/core/v1" "k8s.io/apimachinery/pkg/runtime" "k8s.io/client-go/kubernetes" "k8s.io/client-go/rest" "k8s.io/client-go/tools/remotecommand" ) func InPod( scheme *runtime.Scheme, config *rest.Config, namespace, name, container string, cmd []string, ) (string, string, error) { clientset, err := kubernetes.NewForConfig(config) if err != nil { return "", "", errors.Wrapf(err, "failed to create kubernetes clientset") } req := clientset.CoreV1().RESTClient().Post(). Resource("pods"). Name(name). Namespace(namespace). SubResource("exec") parameterCodec := runtime.NewParameterCodec(scheme) req.VersionedParams(&corev1.PodExecOptions{ Command: cmd, Container: container, Stdin: false, Stdout: true, Stderr: true, TTY: false, }, parameterCodec) exec, err := remotecommand.NewSPDYExecutor(config, "POST", req.URL()) if err != nil { return "", "", errors.Wrapf(err, "failed to initialize SPDY executor") } var stdout, stderr bytes.Buffer err = exec.StreamWithContext( context.TODO(), remotecommand.StreamOptions{ Stdin: nil, Stdout: &stdout, Stderr: &stderr, Tty: false, }, ) if err != nil { errMsg := fmt.Sprintf("failed to stream execution results back, stdout:\n\"%s\"stderr:\n\"%s\"", stdout.String(), stderr.String()) return stdout.String(), stderr.String(), errors.Wrap(err, errMsg) } return stdout.String(), stderr.String(), nil }