Add nvidia configuration to the api

This commit is contained in:
Ole Markus With 2021-06-28 21:13:34 +02:00
parent d06394def8
commit e9b0f28dff
7 changed files with 139 additions and 4 deletions

View File

@ -4238,6 +4238,19 @@ spec:
to false.
type: boolean
type: object
nvidia:
description: NvidiaConfiguration configures the Nvidia GPU runtime.
properties:
enabled:
description: Enabled determines if kOps will install the Nvidia
GPU runtime and drivers. They will only be installed on intances
that has an Nvidia GPU.
type: boolean
package:
description: Package is the name of the nvidia driver package
that will be installed. Default is "nvidia-headless-460-server".
type: string
type: object
podCIDR:
description: PodCIDR is the CIDR from which we allocate IPs for pods
type: string

View File

@ -208,12 +208,21 @@ type ClusterSpec struct {
ClusterAutoscaler *ClusterAutoscalerConfig `json:"clusterAutoscaler,omitempty"`
// WarmPool defines the default warm pool settings for instance groups (AWS only).
WarmPool *WarmPoolSpec `json:"warmPool,omitempty"`
// ServiceAccountIssuerDiscovery configures the OIDC Issuer for ServiceAccounts.
ServiceAccountIssuerDiscovery *ServiceAccountIssuerDiscoveryConfig `json:"serviceAccountIssuerDiscovery,omitempty"`
// SnapshotController defines the CSI Snapshot Controller configuration.
SnapshotController *SnapshotControllerConfig `json:"snapshotController,omitempty"`
// NvidiaConfiguration configures the Nvidia GPU runtime.
Nvidia *NvidiaConfig `json:"nvidia,omitempty"`
}
type NvidiaConfig struct {
// Package is the name of the nvidia driver package that will be installed.
// Default is "nvidia-headless-460-server".
DriverPackage string `json:"package,omitempty"`
// Enabled determines if kOps will install the Nvidia GPU runtime and drivers.
// They will only be installed on intances that has an Nvidia GPU.
Enabled *bool `json:"enabled,omitempty"`
}
// ServiceAccountIssuerDiscoveryConfig configures an OIDC Issuer.

View File

@ -206,12 +206,21 @@ type ClusterSpec struct {
ClusterAutoscaler *ClusterAutoscalerConfig `json:"clusterAutoscaler,omitempty"`
// WarmPool defines the default warm pool settings for instance groups (AWS only).
WarmPool *WarmPoolSpec `json:"warmPool,omitempty"`
// ServiceAccountIssuerDiscovery configures the OIDC Issuer for ServiceAccounts.
ServiceAccountIssuerDiscovery *ServiceAccountIssuerDiscoveryConfig `json:"serviceAccountIssuerDiscovery,omitempty"`
// SnapshotController defines the CSI Snapshot Controller configuration.
SnapshotController *SnapshotControllerConfig `json:"snapshotController,omitempty"`
// NvidiaConfiguration configures the Nvidia GPU runtime.
Nvidia *NvidiaConfig `json:"nvidia,omitempty"`
}
type NvidiaConfig struct {
// Package is the name of the nvidia driver package that will be installed.
// Default is "nvidia-headless-460-server".
DriverPackage string `json:"package,omitempty"`
// Enabled determines if kOps will install the Nvidia GPU runtime and drivers.
// They will only be installed on intances that has an Nvidia GPU.
Enabled *bool `json:"enabled,omitempty"`
}
// ServiceAccountIssuerDiscoveryConfig configures an OIDC Issuer.

View File

@ -883,6 +883,16 @@ func RegisterConversions(s *runtime.Scheme) error {
}); err != nil {
return err
}
if err := s.AddGeneratedConversionFunc((*NvidiaConfig)(nil), (*kops.NvidiaConfig)(nil), func(a, b interface{}, scope conversion.Scope) error {
return Convert_v1alpha2_NvidiaConfig_To_kops_NvidiaConfig(a.(*NvidiaConfig), b.(*kops.NvidiaConfig), scope)
}); err != nil {
return err
}
if err := s.AddGeneratedConversionFunc((*kops.NvidiaConfig)(nil), (*NvidiaConfig)(nil), func(a, b interface{}, scope conversion.Scope) error {
return Convert_kops_NvidiaConfig_To_v1alpha2_NvidiaConfig(a.(*kops.NvidiaConfig), b.(*NvidiaConfig), scope)
}); err != nil {
return err
}
if err := s.AddGeneratedConversionFunc((*OpenstackBlockStorageConfig)(nil), (*kops.OpenstackBlockStorageConfig)(nil), func(a, b interface{}, scope conversion.Scope) error {
return Convert_v1alpha2_OpenstackBlockStorageConfig_To_kops_OpenstackBlockStorageConfig(a.(*OpenstackBlockStorageConfig), b.(*kops.OpenstackBlockStorageConfig), scope)
}); err != nil {
@ -2690,6 +2700,15 @@ func autoConvert_v1alpha2_ClusterSpec_To_kops_ClusterSpec(in *ClusterSpec, out *
} else {
out.SnapshotController = nil
}
if in.Nvidia != nil {
in, out := &in.Nvidia, &out.Nvidia
*out = new(kops.NvidiaConfig)
if err := Convert_v1alpha2_NvidiaConfig_To_kops_NvidiaConfig(*in, *out, s); err != nil {
return err
}
} else {
out.Nvidia = nil
}
return nil
}
@ -3102,6 +3121,15 @@ func autoConvert_kops_ClusterSpec_To_v1alpha2_ClusterSpec(in *kops.ClusterSpec,
} else {
out.SnapshotController = nil
}
if in.Nvidia != nil {
in, out := &in.Nvidia, &out.Nvidia
*out = new(NvidiaConfig)
if err := Convert_kops_NvidiaConfig_To_v1alpha2_NvidiaConfig(*in, *out, s); err != nil {
return err
}
} else {
out.Nvidia = nil
}
return nil
}
@ -6122,6 +6150,28 @@ func Convert_kops_NodeTerminationHandlerConfig_To_v1alpha2_NodeTerminationHandle
return autoConvert_kops_NodeTerminationHandlerConfig_To_v1alpha2_NodeTerminationHandlerConfig(in, out, s)
}
func autoConvert_v1alpha2_NvidiaConfig_To_kops_NvidiaConfig(in *NvidiaConfig, out *kops.NvidiaConfig, s conversion.Scope) error {
out.DriverPackage = in.DriverPackage
out.Enabled = in.Enabled
return nil
}
// Convert_v1alpha2_NvidiaConfig_To_kops_NvidiaConfig is an autogenerated conversion function.
func Convert_v1alpha2_NvidiaConfig_To_kops_NvidiaConfig(in *NvidiaConfig, out *kops.NvidiaConfig, s conversion.Scope) error {
return autoConvert_v1alpha2_NvidiaConfig_To_kops_NvidiaConfig(in, out, s)
}
func autoConvert_kops_NvidiaConfig_To_v1alpha2_NvidiaConfig(in *kops.NvidiaConfig, out *NvidiaConfig, s conversion.Scope) error {
out.DriverPackage = in.DriverPackage
out.Enabled = in.Enabled
return nil
}
// Convert_kops_NvidiaConfig_To_v1alpha2_NvidiaConfig is an autogenerated conversion function.
func Convert_kops_NvidiaConfig_To_v1alpha2_NvidiaConfig(in *kops.NvidiaConfig, out *NvidiaConfig, s conversion.Scope) error {
return autoConvert_kops_NvidiaConfig_To_v1alpha2_NvidiaConfig(in, out, s)
}
func autoConvert_v1alpha2_OpenstackBlockStorageConfig_To_kops_OpenstackBlockStorageConfig(in *OpenstackBlockStorageConfig, out *kops.OpenstackBlockStorageConfig, s conversion.Scope) error {
out.Version = in.Version
out.IgnoreAZ = in.IgnoreAZ

View File

@ -1185,6 +1185,11 @@ func (in *ClusterSpec) DeepCopyInto(out *ClusterSpec) {
*out = new(SnapshotControllerConfig)
(*in).DeepCopyInto(*out)
}
if in.Nvidia != nil {
in, out := &in.Nvidia, &out.Nvidia
*out = new(NvidiaConfig)
(*in).DeepCopyInto(*out)
}
return
}
@ -4131,6 +4136,27 @@ func (in *NodeTerminationHandlerConfig) DeepCopy() *NodeTerminationHandlerConfig
return out
}
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *NvidiaConfig) DeepCopyInto(out *NvidiaConfig) {
*out = *in
if in.Enabled != nil {
in, out := &in.Enabled, &out.Enabled
*out = new(bool)
**out = **in
}
return
}
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NvidiaConfig.
func (in *NvidiaConfig) DeepCopy() *NvidiaConfig {
if in == nil {
return nil
}
out := new(NvidiaConfig)
in.DeepCopyInto(out)
return out
}
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *OpenstackBlockStorageConfig) DeepCopyInto(out *OpenstackBlockStorageConfig) {
*out = *in

View File

@ -1269,6 +1269,11 @@ func (in *ClusterSpec) DeepCopyInto(out *ClusterSpec) {
*out = new(SnapshotControllerConfig)
(*in).DeepCopyInto(*out)
}
if in.Nvidia != nil {
in, out := &in.Nvidia, &out.Nvidia
*out = new(NvidiaConfig)
(*in).DeepCopyInto(*out)
}
return
}
@ -4313,6 +4318,27 @@ func (in *NodeTerminationHandlerConfig) DeepCopy() *NodeTerminationHandlerConfig
return out
}
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *NvidiaConfig) DeepCopyInto(out *NvidiaConfig) {
*out = *in
if in.Enabled != nil {
in, out := &in.Enabled, &out.Enabled
*out = new(bool)
**out = **in
}
return
}
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NvidiaConfig.
func (in *NvidiaConfig) DeepCopy() *NvidiaConfig {
if in == nil {
return nil
}
out := new(NvidiaConfig)
in.DeepCopyInto(out)
return out
}
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *OpenstackBlockStorageConfig) DeepCopyInto(out *OpenstackBlockStorageConfig) {
*out = *in

View File

@ -76,6 +76,8 @@ type Config struct {
// APIServerConfig is additional configuration for nodes running an APIServer.
APIServerConfig *APIServerConfig `json:",omitempty"`
// Nvidia contains the configuration for nvidia
Nvidia *kops.NvidiaConfig `json:",omitempty"`
}
// BootConfig is the configuration for the nodeup binary that might be too big to fit in userdata.