Documentation
¶
Overview ¶
Package k8s contains components for deploying to Kubernetes.
Index ¶
- Constants
- Variables
- func Clientset(kubeconfig, context string) (*kubernetes.Clientset, string, *rest.Config, error)
- func ClientsetInCluster() (*kubernetes.Clientset, string, *rest.Config, error)
- func ClientsetOutOfCluster(kubeconfig, context string) (*kubernetes.Clientset, string, *rest.Config, error)
- type AutoscaleConfig
- type Config
- type ConfigSourcer
- type Container
- type Deployment
- func (*Deployment) Descriptor() ([]byte, []int)deprecated
- func (x *Deployment) GetId() string
- func (x *Deployment) GetName() string
- func (x *Deployment) GetResourceState() *opaqueany.Any
- func (*Deployment) ProtoMessage()
- func (x *Deployment) ProtoReflect() protoreflect.Message
- func (x *Deployment) Reset()
- func (x *Deployment) String() string
- type IngressConfig
- type IngressTls
- type Platform
- func (p *Platform) Auth() error
- func (p *Platform) AuthFunc() interface{}
- func (p *Platform) Config() (interface{}, error)
- func (p *Platform) ConfigSet(config interface{}) error
- func (p *Platform) DefaultReleaserFunc() interface{}
- func (p *Platform) Deploy(ctx context.Context, log hclog.Logger, src *component.Source, ...) (*Deployment, error)
- func (p *Platform) DeployFunc() interface{}
- func (p *Platform) Destroy(ctx context.Context, log hclog.Logger, deployment *Deployment, ui terminal.UI) error
- func (p *Platform) DestroyFunc() interface{}
- func (p *Platform) Documentation() (*docs.Documentation, error)
- func (p *Platform) Status(ctx context.Context, log hclog.Logger, deployment *Deployment, ui terminal.UI) (*sdk.StatusReport, error)
- func (p *Platform) StatusFunc() interface{}
- func (p *Platform) ValidateAuth() error
- func (p *Platform) ValidateAuthFunc() interface{}
- type Pod
- type PodSecurityContext
- type Port
- type Probe
- type Release
- func (*Release) Descriptor() ([]byte, []int)deprecated
- func (x *Release) GetResourceState() *opaqueany.Any
- func (x *Release) GetServiceName() string
- func (x *Release) GetUrl() string
- func (*Release) ProtoMessage()
- func (x *Release) ProtoReflect() protoreflect.Message
- func (x *Release) Reset()
- func (x *Release) String() string
- func (r *Release) URL() string
- type Releaser
- func (r *Releaser) Config() (interface{}, error)
- func (r *Releaser) Destroy(ctx context.Context, log hclog.Logger, release *Release, ui terminal.UI) error
- func (r *Releaser) DestroyFunc() interface{}
- func (r *Releaser) Documentation() (*docs.Documentation, error)
- func (r *Releaser) Release(ctx context.Context, log hclog.Logger, src *component.Source, ...) (*Release, error)
- func (r *Releaser) ReleaseFunc() interface{}
- func (r *Releaser) Status(ctx context.Context, log hclog.Logger, release *Release, ui terminal.UI) (*sdk.StatusReport, error)
- func (r *Releaser) StatusFunc() interface{}
- type ReleaserConfig
- type Resource
- type ResourceConfig
- type Resource_Autoscale
- func (*Resource_Autoscale) Descriptor() ([]byte, []int)deprecated
- func (x *Resource_Autoscale) GetName() string
- func (*Resource_Autoscale) ProtoMessage()
- func (x *Resource_Autoscale) ProtoReflect() protoreflect.Message
- func (x *Resource_Autoscale) Reset()
- func (x *Resource_Autoscale) String() string
- type Resource_Deployment
- func (*Resource_Deployment) Descriptor() ([]byte, []int)deprecated
- func (x *Resource_Deployment) GetName() string
- func (*Resource_Deployment) ProtoMessage()
- func (x *Resource_Deployment) ProtoReflect() protoreflect.Message
- func (x *Resource_Deployment) Reset()
- func (x *Resource_Deployment) String() string
- type Resource_Ingress
- type Resource_Service
- type Sidecar
- type TaskInfo
- type TaskLauncher
- func (p *TaskLauncher) Config() (interface{}, error)
- func (p *TaskLauncher) Documentation() (*docs.Documentation, error)
- func (p *TaskLauncher) StartTask(ctx context.Context, log hclog.Logger, tli *component.TaskLaunchInfo) (*TaskInfo, error)
- func (p *TaskLauncher) StartTaskFunc() interface{}
- func (p *TaskLauncher) StopTask(ctx context.Context, log hclog.Logger, ti *TaskInfo) error
- func (p *TaskLauncher) StopTaskFunc() interface{}
- func (p *TaskLauncher) WatchTask(ctx context.Context, log hclog.Logger, ui terminal.UI, ti *TaskInfo) (*component.TaskResult, error)
- func (p *TaskLauncher) WatchTaskFunc() interface{}
- type TaskLauncherConfig
Constants ¶
const DefaultPort = 80
DefaultPort is the port that a service will forward to the pod(s)
const (
DefaultServicePort = 3000
)
Variables ¶
var File_waypoint_builtin_k8s_plugin_proto protoreflect.FileDescriptor
var Options = []sdk.Option{
sdk.WithComponents(&Platform{}, &Releaser{}, &ConfigSourcer{}, &TaskLauncher{}),
}
Options are the SDK options to use for instantiation for the Kubernetes plugin.
Functions ¶
func Clientset ¶ added in v0.6.0
func Clientset(kubeconfig, context string) (*kubernetes.Clientset, string, *rest.Config, error)
Clientset returns a K8S clientset and configured namespace. This will attempt to use in-cluster auth if available if kubeconfig is not explicitly specified. Otherwise, this will fall back to out of cluster auth.
func ClientsetInCluster ¶ added in v0.6.0
func ClientsetInCluster() (*kubernetes.Clientset, string, *rest.Config, error)
ClientsetInCluster returns a K8S clientset and configured namespace for in-cluster usage.
func ClientsetOutOfCluster ¶ added in v0.6.0
func ClientsetOutOfCluster(kubeconfig, context string) (*kubernetes.Clientset, string, *rest.Config, error)
ClientsetOutOfCluster loads a Kubernetes clientset using only a kubeconfig.
Types ¶
type AutoscaleConfig ¶ added in v0.6.0
type AutoscaleConfig struct {
MinReplicas int32 `hcl:"min_replicas,optional"`
MaxReplicas int32 `hcl:"max_replicas,optional"`
// TargetCPU will determine the max load before the autoscaler will increase
// a replica
TargetCPU int32 `hcl:"cpu_percent,optional"`
}
AutoscaleConfig describes the possible configuration for creating a horizontal pod autoscaler
type Config ¶
type Config struct {
// Annotations are added to the pod spec of the deployed application. This is
// useful when using mutating webhook admission controllers to further process
// pod events.
Annotations map[string]string `hcl:"annotations,optional"`
// AutoscaleConfig will create a horizontal pod autoscaler for a given
// deployment and scale the replica pods up or down based on a given
// load metric, such as CPU utilization
AutoscaleConfig *AutoscaleConfig `hcl:"autoscale,block"`
// Context specifies the kube context to use.
Context string `hcl:"context,optional"`
// The number of replicas of the service to maintain. If this number is maintained
// outside waypoint, for instance by a pod autoscaler, do not set this variable.
Count int32 `hcl:"replicas,optional"`
// The name of the Kubernetes secret to use to pull the image stored
// in the registry.
// TODO This maybe should be required because the vast majority of deployments
// will be against private images.
ImageSecret string `hcl:"image_secret,optional"`
// KubeconfigPath is the path to the kubeconfig file. If this is
// blank then we default to the home directory.
KubeconfigPath string `hcl:"kubeconfig,optional"`
// A map of key vals to label the deployed Pod and Deployment with.
Labels map[string]string `hcl:"labels,optional"`
// Namespace is the Kubernetes namespace to target the deployment to.
Namespace string `hcl:"namespace,optional"`
// If set, this is the HTTP path to request to test that the application
// is up and running. Without this, we only test that a connection can be
// made to the port.
ProbePath string `hcl:"probe_path,optional"`
// Probe details for describing a health check to be performed against a container.
Probe *Probe `hcl:"probe,block"`
// Optionally define various resources limits for kubernetes pod containers
// such as memory and cpu.
Resources map[string]string `hcl:"resources,optional"`
// Optionally define various cpu resource limits and requests for kubernetes pod containers
CPU *ResourceConfig `hcl:"cpu,block"`
// Optionally define various memory resource limits and requests for kubernetes pod containers
Memory *ResourceConfig `hcl:"memory,block"`
// An array of paths to directories that will be mounted as EmptyDirVolumes in the pod
// to store temporary data.
ScratchSpace []string `hcl:"scratch_path,optional"`
// ServiceAccount is the name of the Kubernetes service account to apply to the
// application deployment. This is useful to apply Kubernetes RBAC to the pod.
ServiceAccount string `hcl:"service_account,optional"`
// Port that your service is running on within the actual container.
// Defaults to DefaultServicePort const.
// NOTE: Ports and ServicePort cannot both be defined
ServicePort *uint `hcl:"service_port,optional"`
// Environment variables that are meant to configure the application in a static
// way. This might be control an image that has multiple modes of operation,
// selected via environment variable. Most configuration should use the waypoint
// config commands.
StaticEnvVars map[string]string `hcl:"static_environment,optional"`
// Pod describes the configuration for the pod
Pod *Pod `hcl:"pod,block"`
// Deprecated field, previous definition of ports
DeprecatedPorts []map[string]string `hcl:"ports,optional" docs:"hidden"`
}
Config is the configuration structure for the Platform.
type ConfigSourcer ¶ added in v0.2.0
type ConfigSourcer struct {
// contains filtered or unexported fields
}
ConfigSourcer implements component.ConfigSourcer for K8s
func (*ConfigSourcer) Documentation ¶ added in v0.2.0
func (cs *ConfigSourcer) Documentation() (*docs.Documentation, error)
type Container ¶ added in v0.3.2
type Container struct {
Name string `hcl:"name,optional"`
Ports []*Port `hcl:"port,block"`
ProbePath string `hcl:"probe_path,optional"`
Probe *Probe `hcl:"probe,block"`
CPU *ResourceConfig `hcl:"cpu,block"`
Memory *ResourceConfig `hcl:"memory,block"`
Resources map[string]string `hcl:"resources,optional"`
Command *[]string `hcl:"command,optional"`
Args *[]string `hcl:"args,optional"`
StaticEnvVars map[string]string `hcl:"static_environment,optional"`
}
Container describes the detailed parameters to declare a kubernetes container
type Deployment ¶
type Deployment struct {
Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"`
ResourceState *opaqueany.Any `protobuf:"bytes,3,opt,name=resource_state,json=resourceState,proto3" json:"resource_state,omitempty"`
// contains filtered or unexported fields
}
func (*Deployment) Descriptor
deprecated
func (*Deployment) Descriptor() ([]byte, []int)
Deprecated: Use Deployment.ProtoReflect.Descriptor instead.
func (*Deployment) GetResourceState ¶ added in v0.4.0
func (x *Deployment) GetResourceState() *opaqueany.Any
func (*Deployment) ProtoMessage ¶
func (*Deployment) ProtoMessage()
func (*Deployment) ProtoReflect ¶
func (x *Deployment) ProtoReflect() protoreflect.Message
type IngressConfig ¶ added in v0.6.0
type IngressConfig struct {
// Annotations to be applied to the ingress service.
Annotations map[string]string `hcl:"annotations,optional"`
// Currently Waypoint only supports "HTTP" rule-backed ingress resources.
// We include this stanza label in the future for when Kubernetes has other
// kinds of rule types.
ClassName string `hcl:",label"`
// If set, this will configure the given ingress resources backend service
// as the default service that accepts traffic if no route rules match from
// the inbound request.
// Defaults to false
DefaultBackend bool `hcl:"default,optional"`
// If set, this option will configure the ingress controller to accept
// traffic from the defined hostname. IPs are not allowed, nor are `:` delimiters.
// Wildcards are allowed to a certain extent. For more details, check out the
// k8s go client package.
Host string `hcl:"host,optional"`
// Defines the kind of rule the path will be. Possible values are:
// 'Exact', 'Prefix', and 'ImplementationSpecific'.
// We believe most users expect a 'Prefix' type, so we default to 'Prefix' if
// not specified.
PathType string `hcl:"path_type,optional"`
// Path represents a rule to route requests to. I.e. if an inbound request
// matches a route like `/foo`, the ingress controller would see that this
// resource is configured for that rule, and would route traffic to this
// ingress resources service backend.
Path string `hcl:"path,optional"`
// TlsConfig is an optional config that users can set to enable HTTPS traffic
TlsConfig *IngressTls `hcl:"tls,block"`
}
IngressConfig holds various options to configure an Ingress resource with during a release. It currently only spports 'http' based route rules.
type IngressTls ¶ added in v0.6.0
type IngressTls struct {
// Hosts is a list of hosts included in the TLS certificate
Hosts []string `hcl:"hosts,optional"`
// SecretName references the name of the secret created inside Kubernetes
// associated with the TLS certificate information. If cert-manager is used,
// this name will refer to the secret cert-manager should create when generating
// certficiates for the secret.
SecretName string `hcl:"secret_name,optional"`
}
IngressTls holds options required to configure an ingress resource with TLS.
type Platform ¶
type Platform struct {
// contains filtered or unexported fields
}
Platform is the Platform implementation for Kubernetes.
func (*Platform) AuthFunc ¶
func (p *Platform) AuthFunc() interface{}
AuthFunc implements component.Authenticator
func (*Platform) Config ¶
func (p *Platform) Config() (interface{}, error)
Config implements Configurable
func (*Platform) ConfigSet ¶ added in v0.6.0
func (p *Platform) ConfigSet(config interface{}) error
ConfigSet is called after a configuration has been decoded we can use this to validate the config
func (*Platform) DefaultReleaserFunc ¶
func (p *Platform) DefaultReleaserFunc() interface{}
DefaultReleaserFunc implements component.PlatformReleaser
func (*Platform) Deploy ¶
func (p *Platform) Deploy(
ctx context.Context,
log hclog.Logger,
src *component.Source,
img *docker.Image,
deployConfig *component.DeploymentConfig,
dcr *component.DeclaredResourcesResp,
ui terminal.UI,
) (*Deployment, error)
Deploy deploys an image to Kubernetes.
func (*Platform) DeployFunc ¶
func (p *Platform) DeployFunc() interface{}
DeployFunc implements component.Platform
func (*Platform) Destroy ¶
func (p *Platform) Destroy(
ctx context.Context,
log hclog.Logger,
deployment *Deployment,
ui terminal.UI,
) error
Destroy deletes the K8S deployment.
func (*Platform) DestroyFunc ¶
func (p *Platform) DestroyFunc() interface{}
DestroyFunc implements component.Destroyer
func (*Platform) Documentation ¶
func (p *Platform) Documentation() (*docs.Documentation, error)
func (*Platform) Status ¶ added in v0.4.0
func (p *Platform) Status(
ctx context.Context,
log hclog.Logger,
deployment *Deployment,
ui terminal.UI,
) (*sdk.StatusReport, error)
func (*Platform) StatusFunc ¶ added in v0.4.0
func (p *Platform) StatusFunc() interface{}
func (*Platform) ValidateAuth ¶
func (p *Platform) ValidateAuth() error
func (*Platform) ValidateAuthFunc ¶
func (p *Platform) ValidateAuthFunc() interface{}
ValidateAuthFunc implements component.Authenticator
type Pod ¶ added in v0.3.2
type Pod struct {
SecurityContext *PodSecurityContext `hcl:"security_context,block"`
Container *Container `hcl:"container,block"`
Sidecars []*Sidecar `hcl:"sidecar,block"`
}
Pod describes the configuration for the pod
type PodSecurityContext ¶ added in v0.3.2
type PodSecurityContext struct {
RunAsUser *int64 `hcl:"run_as_user"`
RunAsNonRoot *bool `hcl:"run_as_non_root"`
FsGroup *int64 `hcl:"fs_group"`
}
PodSecurityContext describes the security config for the Pod
type Port ¶ added in v0.6.0
type Port struct {
Name string `hcl:"name"`
Port uint `hcl:"port"`
HostPort uint `hcl:"host_port,optional"`
HostIP string `hcl:"host_ip,optional"`
Protocol string `hcl:"protocol,optional"`
}
type Probe ¶ added in v0.3.0
type Probe struct {
// Time in seconds to wait before performing the initial liveness and readiness probes.
// Defaults to 5 seconds.
InitialDelaySeconds uint `hcl:"initial_delay,optional"`
// Time in seconds before the probe fails.
// Defaults to 5 seconds.
TimeoutSeconds uint `hcl:"timeout,optional"`
// Number of times a liveness probe can fail before the container is killed.
// FailureThreshold * TimeoutSeconds should be long enough to cover your worst
// case startup times. Defaults to 30 failures.
FailureThreshold uint `hcl:"failure_threshold,optional"`
}
Probe describes a health check to be performed against a container to determine whether it is alive or ready to receive traffic.
type Release ¶
type Release struct {
// service_name is the name of the service in Kubernetes
ServiceName string `protobuf:"bytes,2,opt,name=service_name,json=serviceName,proto3" json:"service_name,omitempty"`
Url string `protobuf:"bytes,1,opt,name=Url,proto3" json:"Url,omitempty"`
ResourceState *opaqueany.Any `protobuf:"bytes,3,opt,name=resource_state,json=resourceState,proto3" json:"resource_state,omitempty"`
// contains filtered or unexported fields
}
func (*Release) Descriptor
deprecated
func (*Release) Descriptor() ([]byte, []int)
Deprecated: Use Release.ProtoReflect.Descriptor instead.
func (*Release) GetResourceState ¶ added in v0.5.0
func (x *Release) GetResourceState() *opaqueany.Any
func (*Release) GetServiceName ¶
func (x *Release) GetServiceName() string
func (*Release) ProtoMessage ¶
func (*Release) ProtoMessage()
func (*Release) ProtoReflect ¶
func (x *Release) ProtoReflect() protoreflect.Message
type Releaser ¶
type Releaser struct {
// contains filtered or unexported fields
}
Releaser is the ReleaseManager implementation for Kubernetes.
func (*Releaser) Config ¶
func (r *Releaser) Config() (interface{}, error)
Config implements Configurable
func (*Releaser) Destroy ¶
func (r *Releaser) Destroy(
ctx context.Context,
log hclog.Logger,
release *Release,
ui terminal.UI,
) error
Destroy deletes the K8S deployment.
func (*Releaser) DestroyFunc ¶
func (r *Releaser) DestroyFunc() interface{}
DestroyFunc implements component.Destroyer
func (*Releaser) Documentation ¶
func (r *Releaser) Documentation() (*docs.Documentation, error)
func (*Releaser) Release ¶
func (r *Releaser) Release(
ctx context.Context,
log hclog.Logger,
src *component.Source,
job *component.JobInfo,
ui terminal.UI,
target *Deployment,
dcr *component.DeclaredResourcesResp,
) (*Release, error)
Release creates a Kubernetes service configured for the deployment
func (*Releaser) ReleaseFunc ¶
func (r *Releaser) ReleaseFunc() interface{}
ReleaseFunc implements component.ReleaseManager
func (*Releaser) Status ¶ added in v0.4.0
func (r *Releaser) Status(
ctx context.Context,
log hclog.Logger,
release *Release,
ui terminal.UI,
) (*sdk.StatusReport, error)
func (*Releaser) StatusFunc ¶ added in v0.4.0
func (r *Releaser) StatusFunc() interface{}
StatusFunc implements component.Status
type ReleaserConfig ¶
type ReleaserConfig struct {
// Annotations to be applied to the kube service.
Annotations map[string]string `hcl:"annotations,optional"`
// Ingress represents an config for setting up an ingress resource.
IngressConfig *IngressConfig `hcl:"ingress,block"`
// KubeconfigPath is the path to the kubeconfig file. If this is
// blank then we default to the home directory.
KubeconfigPath string `hcl:"kubeconfig,optional"`
// Context specifies the kube context to use.
Context string `hcl:"context,optional"`
// Load Balancer sets whether or not the service will be a load
// balancer type service
LoadBalancer bool `hcl:"load_balancer,optional"`
// Port configures the port that is used to access the service.
// The default is 80.
// Not valid if `Ports` is already defined
// If defined, will internally be stored into `Ports`
Port uint `hcl:"port,optional"`
// A full resource of options to define ports for a service
Ports []map[string]string `hcl:"ports,optional"`
// NodePort configures a port to access the service on whichever node
// is running service.
// Not valid if `Ports` is already defined
// If defined, will internally be stored into `Ports`
NodePort uint `hcl:"node_port,optional"`
// Namespace is the Kubernetes namespace to target the deployment to.
Namespace string `hcl:"namespace,optional"`
}
ReleaserConfig is the configuration structure for the Releaser.
type Resource ¶ added in v0.4.0
type Resource struct {
// contains filtered or unexported fields
}
Resource contains the internal resource states.
func (*Resource) Descriptor
deprecated
added in
v0.4.0
func (*Resource) Descriptor() ([]byte, []int)
Deprecated: Use Resource.ProtoReflect.Descriptor instead.
func (*Resource) ProtoMessage ¶ added in v0.4.0
func (*Resource) ProtoMessage()
func (*Resource) ProtoReflect ¶ added in v0.4.0
func (x *Resource) ProtoReflect() protoreflect.Message
type ResourceConfig ¶ added in v0.6.0
type ResourceConfig struct {
Request string `hcl:"request,optional" json:"request"`
Limit string `hcl:"limit,optional" json:"limit"`
}
ResourceConfig describes the request and limit of a resource. Used for cpu and memory resource configuration.
type Resource_Autoscale ¶ added in v0.6.0
type Resource_Autoscale struct {
// represents a horizontal pod autoscaler, if requested to be created
Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
// contains filtered or unexported fields
}
func (*Resource_Autoscale) Descriptor
deprecated
added in
v0.6.0
func (*Resource_Autoscale) Descriptor() ([]byte, []int)
Deprecated: Use Resource_Autoscale.ProtoReflect.Descriptor instead.
func (*Resource_Autoscale) ProtoMessage ¶ added in v0.6.0
func (*Resource_Autoscale) ProtoMessage()
func (*Resource_Autoscale) ProtoReflect ¶ added in v0.6.0
func (x *Resource_Autoscale) ProtoReflect() protoreflect.Message
type Resource_Deployment ¶ added in v0.4.0
type Resource_Deployment struct {
Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
// contains filtered or unexported fields
}
func (*Resource_Deployment) Descriptor
deprecated
added in
v0.4.0
func (*Resource_Deployment) Descriptor() ([]byte, []int)
Deprecated: Use Resource_Deployment.ProtoReflect.Descriptor instead.
func (*Resource_Deployment) GetName ¶ added in v0.4.0
func (x *Resource_Deployment) GetName() string
func (*Resource_Deployment) ProtoMessage ¶ added in v0.4.0
func (*Resource_Deployment) ProtoMessage()
func (*Resource_Deployment) ProtoReflect ¶ added in v0.4.0
func (x *Resource_Deployment) ProtoReflect() protoreflect.Message
type Resource_Ingress ¶ added in v0.6.0
type Resource_Ingress struct {
Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
// contains filtered or unexported fields
}
func (*Resource_Ingress) Descriptor
deprecated
added in
v0.6.0
func (*Resource_Ingress) Descriptor() ([]byte, []int)
Deprecated: Use Resource_Ingress.ProtoReflect.Descriptor instead.
func (*Resource_Ingress) ProtoMessage ¶ added in v0.6.0
func (*Resource_Ingress) ProtoMessage()
func (*Resource_Ingress) ProtoReflect ¶ added in v0.6.0
func (x *Resource_Ingress) ProtoReflect() protoreflect.Message
type Resource_Service ¶ added in v0.5.0
type Resource_Service struct {
Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
// contains filtered or unexported fields
}
func (*Resource_Service) Descriptor
deprecated
added in
v0.5.0
func (*Resource_Service) Descriptor() ([]byte, []int)
Deprecated: Use Resource_Service.ProtoReflect.Descriptor instead.
func (*Resource_Service) ProtoMessage ¶ added in v0.5.0
func (*Resource_Service) ProtoMessage()
func (*Resource_Service) ProtoReflect ¶ added in v0.5.0
func (x *Resource_Service) ProtoReflect() protoreflect.Message
type Sidecar ¶ added in v0.6.0
type Sidecar struct {
// Specifying Image in Container would make it visible on the main Pod config,
// which isn't the right way to specify the app image.
Image string `hcl:"image"`
Container *Container `hcl:"container,block"`
}
type TaskInfo ¶ added in v0.6.0
type TaskInfo struct {
Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
// contains filtered or unexported fields
}
This represents the state of the TaskLaunch implementation.
func (*TaskInfo) Descriptor
deprecated
added in
v0.6.0
func (*TaskInfo) Descriptor() ([]byte, []int)
Deprecated: Use TaskInfo.ProtoReflect.Descriptor instead.
func (*TaskInfo) ProtoMessage ¶ added in v0.6.0
func (*TaskInfo) ProtoMessage()
func (*TaskInfo) ProtoReflect ¶ added in v0.6.0
func (x *TaskInfo) ProtoReflect() protoreflect.Message
type TaskLauncher ¶ added in v0.6.0
type TaskLauncher struct {
// contains filtered or unexported fields
}
TaskLauncher implements the TaskLauncher plugin interface to support launching on-demand tasks for the Waypoint server.
func (*TaskLauncher) Config ¶ added in v0.6.0
func (p *TaskLauncher) Config() (interface{}, error)
Config implements Configurable
func (*TaskLauncher) Documentation ¶ added in v0.6.0
func (p *TaskLauncher) Documentation() (*docs.Documentation, error)
func (*TaskLauncher) StartTask ¶ added in v0.6.0
func (p *TaskLauncher) StartTask(
ctx context.Context,
log hclog.Logger,
tli *component.TaskLaunchInfo,
) (*TaskInfo, error)
StartTask creates a docker container for the task.
func (*TaskLauncher) StartTaskFunc ¶ added in v0.6.0
func (p *TaskLauncher) StartTaskFunc() interface{}
StartTaskFunc implements component.TaskLauncher
func (*TaskLauncher) StopTask ¶ added in v0.6.0
func (p *TaskLauncher) StopTask(
ctx context.Context,
log hclog.Logger,
ti *TaskInfo,
) error
StopTask signals to docker to stop the container created previously
func (*TaskLauncher) StopTaskFunc ¶ added in v0.6.0
func (p *TaskLauncher) StopTaskFunc() interface{}
StopTaskFunc implements component.TaskLauncher
func (*TaskLauncher) WatchTask ¶ added in v0.9.0
func (p *TaskLauncher) WatchTask(
ctx context.Context,
log hclog.Logger,
ui terminal.UI,
ti *TaskInfo,
) (*component.TaskResult, error)
WatchTask implements TaskLauncher
func (*TaskLauncher) WatchTaskFunc ¶ added in v0.9.0
func (p *TaskLauncher) WatchTaskFunc() interface{}
WatchTaskFunc implements component.TaskLauncher
type TaskLauncherConfig ¶ added in v0.6.0
type TaskLauncherConfig struct {
// Context specifies the kube context to use.
Context string `hcl:"context,optional"`
// KubeconfigPath is the path to the kubeconfig file. If this is
// blank then we default to the home directory. If we are running within
// a pod, we will use the service account authentication if available if
// this isn't set.
KubeconfigPath string `hcl:"kubeconfig,optional"`
// The name of the Kubernetes secret to use to pull images started by
// this task.
ImageSecret string `hcl:"image_secret,optional"`
// ServiceAccount is the name of the Kubernetes service account to apply to the
// application deployment. This is useful to apply Kubernetes RBAC to the pod.
ServiceAccount string `hcl:"service_account,optional"`
// Set an explicit pull policy for this task launching. By default
// we use "PullIfNotPresent" unless the image tag is "latest" when we
// use "Always".
PullPolicy string `hcl:"image_pull_policy,optional"`
// The namespace to use for launching this task in Kubernetes
Namespace string `hcl:"namespace,optional"`
// Optionally define various cpu resource limits and requests for kubernetes pod containers
CPU *ResourceConfig `hcl:"cpu,block"`
// Optionally define various memory resource limits and requests for kubernetes pod containers
Memory *ResourceConfig `hcl:"memory,block"`
// How long WatchTask should wait for a pod to startup. This option is specifically
// wordy because it's only for the WatchTask timing out waiting for the pod
// its watching to start up before it attempts to stream its logs.
WatchTaskStartupTimeoutSeconds int `hcl:watchtask_startup_timeout_seconds,optional"`
}
TaskLauncherConfig is the configuration structure for the task plugin.