mirror of
https://github.com/gravitational/teleport.git
synced 2026-11-01 13:39:37 +08:00
This issue updates #1986. This is intial, experimental implementation that will be updated with tests and edge cases prior to production 2.7.0 release. Teleport proxy adds support for Kubernetes API protocol. Auth server uses Kubernetes API to receive certificates issued by Kubernetes CA. Proxy intercepts and forwards API requests to the Kubernetes API server and captures live session traffic, making recordings available in the audit log. Tsh login now updates kubeconfig configuration to use Teleport as a proxy server.
78 lines
2.6 KiB
Go
78 lines
2.6 KiB
Go
/*
|
|
Copyright 2016 The Kubernetes Authors.
|
|
|
|
Licensed under the Apache License, Version 2.0 (the "License");
|
|
you may not use this file except in compliance with the License.
|
|
You may obtain a copy of the License at
|
|
|
|
http://www.apache.org/licenses/LICENSE-2.0
|
|
|
|
Unless required by applicable law or agreed to in writing, software
|
|
distributed under the License is distributed on an "AS IS" BASIS,
|
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
See the License for the specific language governing permissions and
|
|
limitations under the License.
|
|
*/
|
|
|
|
package proxy
|
|
|
|
import (
|
|
"time"
|
|
)
|
|
|
|
const (
|
|
// The SPDY subprotocol "v4.channel.k8s.io" is used for remote command
|
|
// attachment/execution. It is the 4th version of the subprotocol and
|
|
// adds support for exit codes.
|
|
StreamProtocolV4Name = "v4.channel.k8s.io"
|
|
|
|
// DefaultStreamCreationTimeout
|
|
DefaultStreamCreationTimeout = 30 * time.Second
|
|
|
|
IdleTimeout = 15 * time.Minute
|
|
)
|
|
|
|
// These constants are for remote command execution and port forwarding and are
|
|
// used by both the client side and server side components.
|
|
//
|
|
// This is probably not the ideal place for them, but it didn't seem worth it
|
|
// to create pkg/exec and pkg/portforward just to contain a single file with
|
|
// constants in it. Suggestions for more appropriate alternatives are
|
|
// definitely welcome!
|
|
const (
|
|
// Enable stdin for remote command execution
|
|
ExecStdinParam = "input"
|
|
// Enable stdout for remote command execution
|
|
ExecStdoutParam = "output"
|
|
// Enable stderr for remote command execution
|
|
ExecStderrParam = "error"
|
|
// Enable TTY for remote command execution
|
|
ExecTTYParam = "tty"
|
|
// Command to run for remote command execution
|
|
ExecCommandParam = "command"
|
|
|
|
// Name of header that specifies stream type
|
|
StreamType = "streamType"
|
|
// Value for streamType header for stdin stream
|
|
StreamTypeStdin = "stdin"
|
|
// Value for streamType header for stdout stream
|
|
StreamTypeStdout = "stdout"
|
|
// Value for streamType header for stderr stream
|
|
StreamTypeStderr = "stderr"
|
|
// Value for streamType header for data stream
|
|
StreamTypeData = "data"
|
|
// Value for streamType header for error stream
|
|
StreamTypeError = "error"
|
|
// Value for streamType header for terminal resize stream
|
|
StreamTypeResize = "resize"
|
|
|
|
// Name of header that specifies the port being forwarded
|
|
PortHeader = "port"
|
|
// Name of header that specifies a request ID used to associate the error
|
|
// and data streams for a single forwarded connection
|
|
PortForwardRequestIDHeader = "requestID"
|
|
|
|
// PortForwardProtocolV1Name is the subprotocol "portforward.k8s.io" is used for port forwarding
|
|
PortForwardProtocolV1Name = "portforward.k8s.io"
|
|
)
|