Runtime: Add Kubernetes ServiceAccounts & Remove imagePullSecrets

This commit is contained in:
Ben Toogood 2020-04-27 14:13:51 +01:00
parent 434997e676
commit 494e0b5060
9 changed files with 84 additions and 91 deletions

View File

@ -38,12 +38,6 @@ func newService(s *runtime.Service, c runtime.CreateOptions) *service {
kdeploy.Spec.Template.Metadata.Annotations = make(map[string]string)
}
// set the image pull secrets
kdeploy.Spec.Template.PodSpec.ImagePullSecrets = make([]client.ImagePullSecret, len(c.ImagePullSecrets))
for i, s := range c.ImagePullSecrets {
kdeploy.Spec.Template.PodSpec.ImagePullSecrets[i] = client.ImagePullSecret{Name: s}
}
// create if non existent
if s.Metadata == nil {
s.Metadata = make(map[string]string)

View File

@ -67,8 +67,6 @@ type CreateOptions struct {
Retries int
// Specify the image to use
Image string
// Specify secrets to use when pulling the image
ImagePullSecrets []string
// Namespace to create the service in
Namespace string
// Specify the context to use
@ -103,13 +101,6 @@ func CreateImage(img string) CreateOption {
}
}
// CreateImagePullSecret sets a secret to use
func CreateImagePullSecret(secrets ...string) CreateOption {
return func(o *CreateOptions) {
o.ImagePullSecrets = append(o.ImagePullSecrets, secrets...)
}
}
// CreateNamespace sets the namespace
func CreateNamespace(ns string) CreateOption {
return func(o *CreateOptions) {

View File

@ -163,8 +163,6 @@ type CreateOptions struct {
Type string `protobuf:"bytes,5,opt,name=type,proto3" json:"type,omitempty"`
// image to use
Image string `protobuf:"bytes,6,opt,name=image,proto3" json:"image,omitempty"`
// image secrets to use
ImagePullSecrets []string `protobuf:"bytes,7,rep,name=image_pull_secrets,json=imagePullSecrets,proto3" json:"image_pull_secrets,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
@ -237,13 +235,6 @@ func (m *CreateOptions) GetImage() string {
return ""
}
func (m *CreateOptions) GetImagePullSecrets() []string {
if m != nil {
return m.ImagePullSecrets
}
return nil
}
type CreateRequest struct {
Service *Service `protobuf:"bytes,1,opt,name=service,proto3" json:"service,omitempty"`
Options *CreateOptions `protobuf:"bytes,2,opt,name=options,proto3" json:"options,omitempty"`
@ -821,49 +812,47 @@ func init() {
}
var fileDescriptor_976fccef828ab1f0 = []byte{
// 689 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xa4, 0x55, 0x4b, 0x6f, 0xd3, 0x40,
0x10, 0xae, 0xe3, 0x3c, 0xda, 0x09, 0x41, 0xd1, 0xaa, 0x42, 0xa6, 0xbc, 0x22, 0x5f, 0x28, 0x12,
0x38, 0x28, 0x15, 0xe2, 0x25, 0x4e, 0x6d, 0xca, 0xa5, 0x15, 0xc8, 0x55, 0xcf, 0xd5, 0xd6, 0x19,
0x19, 0xab, 0xb1, 0xd7, 0xec, 0xae, 0x23, 0xf5, 0xc4, 0x91, 0x9f, 0xc5, 0x91, 0x33, 0xff, 0x08,
0xed, 0xc3, 0x8e, 0x93, 0xc6, 0xbd, 0xe4, 0x36, 0x33, 0x9e, 0x9d, 0xfd, 0xbe, 0x6f, 0x66, 0xc7,
0xf0, 0x25, 0x4e, 0xe4, 0x8f, 0xe2, 0x3a, 0x88, 0x58, 0x3a, 0x4e, 0x93, 0x88, 0xb3, 0x71, 0xcc,
0xde, 0x18, 0x83, 0x17, 0x99, 0x4c, 0x52, 0x1c, 0x0b, 0xe4, 0x8b, 0x24, 0xc2, 0x71, 0xce, 0x99,
0xac, 0xa2, 0x81, 0xf6, 0xc8, 0x30, 0x66, 0x81, 0xce, 0x0e, 0x6c, 0xdc, 0xff, 0xe7, 0x40, 0xef,
0xc2, 0x9c, 0x20, 0x04, 0xda, 0x19, 0x4d, 0xd1, 0x73, 0x46, 0xce, 0xe1, 0x5e, 0xa8, 0x6d, 0xe2,
0x41, 0x6f, 0x81, 0x5c, 0x24, 0x2c, 0xf3, 0x5a, 0x3a, 0x5c, 0xba, 0xe4, 0x11, 0x74, 0x05, 0x2b,
0x78, 0x84, 0x9e, 0xab, 0x3f, 0x58, 0x8f, 0x1c, 0xc3, 0x6e, 0x8a, 0x92, 0xce, 0xa8, 0xa4, 0x5e,
0x7b, 0xe4, 0x1e, 0xf6, 0x27, 0x2f, 0x83, 0xf5, 0x6b, 0x03, 0x7b, 0x65, 0x70, 0x6e, 0x33, 0xa7,
0x99, 0xe4, 0xb7, 0x61, 0x75, 0xf0, 0xe0, 0x33, 0x0c, 0x56, 0x3e, 0x91, 0x21, 0xb8, 0x37, 0x78,
0x6b, 0xa1, 0x29, 0x93, 0xec, 0x43, 0x67, 0x41, 0xe7, 0x05, 0x5a, 0x5c, 0xc6, 0xf9, 0xd4, 0xfa,
0xe0, 0xf8, 0x29, 0x74, 0xa6, 0x0b, 0xcc, 0xa4, 0x22, 0x24, 0x6f, 0xf3, 0x8a, 0x90, 0xb2, 0xc9,
0x53, 0xd8, 0x53, 0x08, 0x84, 0xa4, 0x69, 0xae, 0x8f, 0xba, 0xe1, 0x32, 0xa0, 0xe8, 0x5a, 0xfd,
0x2c, 0xab, 0xd2, 0xad, 0x0b, 0xd1, 0x5e, 0x11, 0xc2, 0xff, 0xe3, 0xc0, 0xe0, 0x98, 0x23, 0x95,
0xf8, 0x2d, 0x97, 0x09, 0xcb, 0x84, 0xca, 0x8d, 0x58, 0x9a, 0xd2, 0x6c, 0xe6, 0x39, 0x23, 0x57,
0xe5, 0x5a, 0x57, 0x21, 0xa2, 0x3c, 0x16, 0x5e, 0x4b, 0x87, 0xb5, 0xad, 0xa8, 0x61, 0xb6, 0xf0,
0x5c, 0x1d, 0x52, 0xa6, 0x92, 0x96, 0x15, 0x32, 0x2f, 0xa4, 0xbd, 0xca, 0x7a, 0x15, 0x9f, 0x4e,
0x8d, 0xcf, 0x3e, 0x74, 0x92, 0x94, 0xc6, 0xe8, 0x75, 0x8d, 0x0c, 0xda, 0x21, 0xaf, 0x81, 0x68,
0xe3, 0x2a, 0x2f, 0xe6, 0xf3, 0x2b, 0x81, 0x11, 0x47, 0x29, 0xbc, 0x9e, 0xbe, 0x62, 0xa8, 0xbf,
0x7c, 0x2f, 0xe6, 0xf3, 0x0b, 0x13, 0xf7, 0x7f, 0x95, 0x04, 0x42, 0xfc, 0x59, 0xa0, 0x90, 0xe4,
0x68, 0x29, 0x83, 0xd2, 0xae, 0x3f, 0x79, 0xdc, 0xd8, 0xc2, 0xa5, 0x42, 0x1f, 0xa1, 0xc7, 0x8c,
0x00, 0x5a, 0xd7, 0xfe, 0xe4, 0xc5, 0xdd, 0x43, 0x2b, 0x3a, 0x85, 0x65, 0xbe, 0x3f, 0x84, 0x87,
0x25, 0x00, 0x91, 0xb3, 0x4c, 0xa0, 0x7f, 0x09, 0xfd, 0x10, 0xe9, 0xac, 0xa6, 0x68, 0x1d, 0xd0,
0xe6, 0xbe, 0xac, 0x0d, 0x68, 0xa9, 0x96, 0xbb, 0x54, 0xcb, 0x3f, 0x35, 0x65, 0x4b, 0x9e, 0xef,
0x97, 0x90, 0x0d, 0xcf, 0x67, 0x77, 0x21, 0xd7, 0x60, 0x2c, 0x01, 0x4f, 0xe1, 0x81, 0xa9, 0x63,
0xe0, 0x92, 0x77, 0xb0, 0x6b, 0x01, 0x09, 0xdd, 0xf2, 0x7b, 0x15, 0xab, 0x52, 0xfd, 0x13, 0x18,
0x9c, 0xe0, 0x1c, 0xb7, 0x13, 0x5e, 0xa9, 0x57, 0x56, 0xb1, 0xea, 0x9d, 0xc0, 0xe0, 0x32, 0x9f,
0xd1, 0xed, 0xeb, 0x96, 0x55, 0x6c, 0xdd, 0x01, 0xf4, 0xcf, 0x12, 0x21, 0x6d, 0x55, 0xa5, 0x82,
0x71, 0xb7, 0x53, 0xe1, 0x06, 0xfa, 0x67, 0x2c, 0x16, 0x25, 0xd6, 0xe6, 0x5e, 0xab, 0x95, 0x23,
0x39, 0xd2, 0x54, 0xb7, 0x7a, 0x37, 0xb4, 0x9e, 0x7a, 0x03, 0x11, 0x2b, 0x32, 0xa9, 0x5b, 0xed,
0x86, 0xc6, 0x51, 0x51, 0x91, 0x64, 0x11, 0xea, 0x47, 0xe4, 0x86, 0xc6, 0xf1, 0xff, 0x3a, 0xb0,
0x77, 0xc6, 0xe2, 0x10, 0x23, 0xc6, 0x67, 0xab, 0xdb, 0xc0, 0x59, 0xdf, 0x06, 0xd3, 0xda, 0x2a,
0x6b, 0x69, 0x3e, 0xaf, 0xee, 0xf2, 0xa9, 0x8a, 0x35, 0x2d, 0x33, 0x45, 0x28, 0x45, 0x21, 0xd4,
0x23, 0xb5, 0x4b, 0xc5, 0xba, 0x5b, 0xad, 0xb9, 0xc9, 0x6f, 0x17, 0x7a, 0xa1, 0x01, 0x41, 0xce,
0xa1, 0x6b, 0x1e, 0x10, 0x69, 0x7c, 0x74, 0x56, 0xde, 0x83, 0x51, 0x73, 0x82, 0xed, 0xf2, 0x0e,
0xf9, 0x0a, 0x6d, 0x35, 0xde, 0xa4, 0xe1, 0x39, 0x94, 0xa5, 0x9e, 0x37, 0x7d, 0xae, 0x0a, 0x9d,
0x43, 0xd7, 0x8c, 0xe6, 0x26, 0x5c, 0x2b, 0xa3, 0xbf, 0x09, 0xd7, 0xda, 0x54, 0xeb, 0x72, 0x66,
0x22, 0x37, 0x95, 0x5b, 0x99, 0xf8, 0x4d, 0xe5, 0xd6, 0x86, 0x79, 0x87, 0x9c, 0x42, 0x5b, 0x0d,
0xde, 0x26, 0x9a, 0xb5, 0x81, 0x3c, 0x78, 0x72, 0x4f, 0xd3, 0xfd, 0x9d, 0xb7, 0xce, 0x75, 0x57,
0xff, 0x5d, 0x8f, 0xfe, 0x07, 0x00, 0x00, 0xff, 0xff, 0x4c, 0x31, 0x4d, 0x46, 0x9e, 0x07, 0x00,
0x00,
// 662 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xa4, 0x55, 0xbb, 0x6e, 0xdb, 0x4a,
0x10, 0x35, 0x45, 0x3d, 0xec, 0xd1, 0xd5, 0x85, 0xb1, 0x30, 0x02, 0xc6, 0x79, 0x09, 0x6c, 0xe2,
0x14, 0xa1, 0x02, 0x19, 0x41, 0x5e, 0x48, 0x65, 0xcb, 0x69, 0x6c, 0x04, 0x60, 0xe0, 0x0f, 0x58,
0x53, 0x03, 0x86, 0xb0, 0x97, 0xcb, 0x70, 0x97, 0x02, 0x5c, 0xa5, 0x4c, 0x9d, 0xaf, 0x4a, 0x9d,
0x3f, 0x0a, 0xf6, 0x41, 0x8a, 0x94, 0x48, 0x37, 0xea, 0x76, 0x46, 0xb3, 0x87, 0xe7, 0x9c, 0x99,
0x59, 0xc1, 0xe7, 0x38, 0x91, 0xdf, 0x8b, 0x9b, 0x20, 0xe2, 0x6c, 0xc6, 0x92, 0x28, 0xe7, 0xb3,
0x98, 0xbf, 0x36, 0x87, 0xbc, 0x48, 0x65, 0xc2, 0x70, 0x26, 0x30, 0x5f, 0x25, 0x11, 0xce, 0xb2,
0x9c, 0xcb, 0x2a, 0x1b, 0xe8, 0x88, 0x1c, 0xc6, 0x3c, 0xd0, 0xd5, 0x81, 0xcd, 0xfb, 0x7f, 0x1d,
0x18, 0x7d, 0x33, 0x37, 0x08, 0x81, 0x7e, 0x4a, 0x19, 0x7a, 0xce, 0xd4, 0x39, 0x39, 0x08, 0xf5,
0x99, 0x78, 0x30, 0x5a, 0x61, 0x2e, 0x12, 0x9e, 0x7a, 0x3d, 0x9d, 0x2e, 0x43, 0xf2, 0x08, 0x86,
0x82, 0x17, 0x79, 0x84, 0x9e, 0xab, 0x7f, 0xb0, 0x11, 0x39, 0x83, 0x7d, 0x86, 0x92, 0x2e, 0xa9,
0xa4, 0x5e, 0x7f, 0xea, 0x9e, 0x8c, 0xe7, 0x2f, 0x83, 0xcd, 0xcf, 0x06, 0xf6, 0x93, 0xc1, 0x95,
0xad, 0x5c, 0xa4, 0x32, 0xbf, 0x0f, 0xab, 0x8b, 0xc7, 0x9f, 0x60, 0xd2, 0xf8, 0x89, 0x1c, 0x82,
0x7b, 0x8b, 0xf7, 0x96, 0x9a, 0x3a, 0x92, 0x23, 0x18, 0xac, 0xe8, 0x5d, 0x81, 0x96, 0x97, 0x09,
0x3e, 0xf6, 0xde, 0x3b, 0x3e, 0x83, 0xc1, 0x62, 0x85, 0xa9, 0x54, 0x82, 0xe4, 0x7d, 0x56, 0x09,
0x52, 0x67, 0xf2, 0x14, 0x0e, 0x14, 0x03, 0x21, 0x29, 0xcb, 0xf4, 0x55, 0x37, 0x5c, 0x27, 0x94,
0x5c, 0xeb, 0x9f, 0x55, 0x55, 0x86, 0x75, 0x23, 0xfa, 0x0d, 0x23, 0xfc, 0xdf, 0x0e, 0x4c, 0xce,
0x72, 0xa4, 0x12, 0xbf, 0x66, 0x32, 0xe1, 0xa9, 0x50, 0xb5, 0x11, 0x67, 0x8c, 0xa6, 0x4b, 0xcf,
0x99, 0xba, 0xaa, 0xd6, 0x86, 0x8a, 0x11, 0xcd, 0x63, 0xe1, 0xf5, 0x74, 0x5a, 0x9f, 0x95, 0x34,
0x4c, 0x57, 0x9e, 0xab, 0x53, 0xea, 0xa8, 0xac, 0xe5, 0x85, 0xcc, 0x0a, 0x69, 0x3f, 0x65, 0xa3,
0x4a, 0xcf, 0xa0, 0xa6, 0xe7, 0x08, 0x06, 0x09, 0xa3, 0x31, 0x7a, 0x43, 0x63, 0x83, 0x0e, 0xfc,
0x9f, 0x25, 0xa5, 0x10, 0x7f, 0x14, 0x28, 0x24, 0x39, 0x5d, 0x0b, 0x53, 0x6e, 0x8c, 0xe7, 0x8f,
0x3b, 0x9b, 0xb2, 0xd6, 0xfc, 0x01, 0x46, 0xdc, 0x48, 0xd2, 0x4e, 0x8d, 0xe7, 0x2f, 0xb6, 0x2f,
0x35, 0x94, 0x87, 0x65, 0xbd, 0x7f, 0x08, 0xff, 0x97, 0x04, 0x44, 0xc6, 0x53, 0x81, 0xfe, 0x35,
0x8c, 0x43, 0xa4, 0xcb, 0x9a, 0x47, 0x75, 0x42, 0xed, 0x4e, 0x6f, 0x8c, 0x5c, 0xa9, 0xdf, 0x5d,
0xeb, 0xf7, 0x2f, 0x0c, 0x6c, 0xa9, 0xf3, 0xdd, 0x9a, 0xb2, 0xd1, 0xf9, 0x6c, 0x9b, 0x72, 0x8d,
0xc6, 0x9a, 0xf0, 0x02, 0xfe, 0x33, 0x38, 0x86, 0x2e, 0x79, 0x0b, 0xfb, 0x96, 0x90, 0xd0, 0x4d,
0x7c, 0xd0, 0xb1, 0xaa, 0xd4, 0x3f, 0x87, 0xc9, 0x39, 0xde, 0xe1, 0x6e, 0xc6, 0x2b, 0xf7, 0x4a,
0x14, 0xeb, 0xde, 0x39, 0x4c, 0xae, 0xb3, 0x25, 0xdd, 0x1d, 0xb7, 0x44, 0xb1, 0xb8, 0x13, 0x18,
0x5f, 0x26, 0x42, 0x5a, 0x54, 0xe5, 0x82, 0x09, 0x77, 0x73, 0xe1, 0x16, 0xc6, 0x97, 0x3c, 0x16,
0x25, 0xd7, 0xee, 0x5e, 0xab, 0x47, 0x44, 0xe6, 0x48, 0x99, 0x6e, 0xf5, 0x7e, 0x68, 0x23, 0x35,
0xd5, 0x11, 0x2f, 0x52, 0xa9, 0x5b, 0xed, 0x86, 0x26, 0x50, 0x59, 0x91, 0xa4, 0x11, 0xea, 0xb5,
0x70, 0x43, 0x13, 0xf8, 0x7f, 0x1c, 0x38, 0xb8, 0xe4, 0x71, 0x88, 0x11, 0xcf, 0x97, 0xcd, 0xfd,
0x76, 0x36, 0xf7, 0x7b, 0x51, 0x7b, 0x9c, 0x7a, 0x5a, 0xcf, 0xab, 0x6d, 0x3d, 0x15, 0x58, 0xd7,
0xf3, 0xa4, 0x04, 0x31, 0x14, 0x42, 0xad, 0x9d, 0x7d, 0x26, 0x6c, 0xb8, 0xd3, 0xc3, 0x35, 0xff,
0xe5, 0xc2, 0x28, 0x34, 0x24, 0xc8, 0x15, 0x0c, 0xcd, 0x02, 0x91, 0xce, 0xa5, 0xb3, 0xf6, 0x1e,
0x4f, 0xbb, 0x0b, 0x6c, 0x97, 0xf7, 0xc8, 0x17, 0xe8, 0xab, 0xf1, 0x26, 0x1d, 0xeb, 0x50, 0x42,
0x3d, 0xef, 0xfa, 0xb9, 0x02, 0xba, 0x82, 0xa1, 0x19, 0xcd, 0x36, 0x5e, 0x8d, 0xd1, 0x6f, 0xe3,
0xb5, 0x31, 0xd5, 0x1a, 0xce, 0x4c, 0x64, 0x1b, 0x5c, 0x63, 0xe2, 0xdb, 0xe0, 0x36, 0x86, 0x79,
0x8f, 0x5c, 0x40, 0x5f, 0x0d, 0x5e, 0x9b, 0xcc, 0xda, 0x40, 0x1e, 0x3f, 0x79, 0xa0, 0xe9, 0xfe,
0xde, 0x1b, 0xe7, 0x66, 0xa8, 0xff, 0x2f, 0x4f, 0xff, 0x05, 0x00, 0x00, 0xff, 0xff, 0x40, 0x42,
0xb3, 0x4e, 0x70, 0x07, 0x00, 0x00,
}

View File

@ -41,8 +41,6 @@ message CreateOptions {
string type = 5;
// image to use
string image = 6;
// image secrets to use
repeated string image_pull_secrets = 7;
}
message CreateRequest {

View File

@ -57,7 +57,6 @@ func (s *svc) Create(svc *runtime.Service, opts ...runtime.CreateOption) error {
Env: options.Env,
Type: options.Type,
Image: options.Image,
ImagePullSecrets: options.ImagePullSecrets,
},
}

View File

@ -163,7 +163,7 @@ func (r *Request) request() (*http.Request, error) {
case "namespace":
// /api/v1/namespaces/
url = fmt.Sprintf("%s/api/v1/namespaces/", r.host)
case "pod", "service", "endpoint":
case "pod", "service", "endpoint", "serviceaccount":
// /api/v1/namespaces/{namespace}/pods
url = fmt.Sprintf("%s/api/v1/namespaces/%s/%ss/", r.host, r.namespace, r.resource)
case "deployment":

View File

@ -312,6 +312,7 @@ func NewDeployment(name, version, typ, namespace string) *Deployment {
Template: &Template{
Metadata: Metadata,
PodSpec: &PodSpec{
ServiceAccountName: namespace,
Containers: []Container{{
Name: name,
Image: DefaultImage,

View File

@ -4,6 +4,7 @@ var templates = map[string]string{
"deployment": deploymentTmpl,
"service": serviceTmpl,
"namespace": namespaceTmpl,
"serviceaccount": serviceAccountTmpl,
}
// stripped image pull policy always
@ -50,12 +51,7 @@ spec:
{{- end }}
{{- end }}
spec:
imagePullSecrets:
{{- with .Spec.Template.PodSpec.ImagePullSecrets }}
{{- range . }}
- name: "{{ .Name }}"
{{- end }}
{{- end }}
serviceAccountName: {{ .Spec.Template.PodSpec.ServiceAccountName }}
containers:
{{- with .Spec.Template.PodSpec.Containers }}
{{- range . }}
@ -128,3 +124,22 @@ metadata:
{{- end }}
{{- end }}
`
var serviceAccountTmpl = `
apiVersion: v1
kind: ServiceAccount
metadata:
name: "{{ .Metadata.Name }}"
labels:
{{- with .Metadata.Labels }}
{{- range $key, $value := . }}
{{ $key }}: "{{ $value }}"
{{- end }}
{{- end }}
imagePullSecrets:
{{- with .ImagePullSecrets }}
{{- range . }}
- name: "{{ .Name }}"
{{- end }}
{{- end }}
`

View File

@ -94,7 +94,7 @@ type Metadata struct {
// PodSpec is a pod
type PodSpec struct {
Containers []Container `json:"containers"`
ImagePullSecrets []ImagePullSecret `json:"imagePullSecrets"`
ServiceAccountName string `json:"serviceAccountName"`
}
// PodList
@ -194,3 +194,9 @@ type NamespaceList struct {
type ImagePullSecret struct {
Name string `json:"name"`
}
// ServiceAccount
type ServiceAccount struct {
Metadata *Metadata `json:"metadata,omitempty"`
ImagePullSecrets []ImagePullSecret `json:"imagePullSecrets,omitempty"`
}