mirror of
https://github.com/go-micro/go-micro.git
synced 2024-12-24 10:07:04 +02:00
Runtime Custom Source (Part 2) (#1169)
This commit is contained in:
commit
16552620e0
@ -270,8 +270,10 @@ func (k *kubernetes) Create(s *runtime.Service, opts ...runtime.CreateOption) er
|
||||
if len(options.Type) == 0 {
|
||||
options.Type = k.options.Type
|
||||
}
|
||||
if len(k.options.Source) > 0 {
|
||||
s.Source = k.options.Source
|
||||
}
|
||||
|
||||
// create new kubernetes micro service
|
||||
service := newService(s, options)
|
||||
|
||||
// start the service
|
||||
@ -343,8 +345,7 @@ func (k *kubernetes) Delete(s *runtime.Service) error {
|
||||
|
||||
// create new kubernetes micro service
|
||||
service := newService(s, runtime.CreateOptions{
|
||||
Type: k.options.Type,
|
||||
BaseImage: k.options.Source,
|
||||
Type: k.options.Type,
|
||||
})
|
||||
|
||||
return service.Stop(k.client)
|
||||
|
@ -34,6 +34,14 @@ func newService(s *runtime.Service, c runtime.CreateOptions) *service {
|
||||
kservice := client.NewService(name, version, c.Type)
|
||||
kdeploy := client.NewDeployment(name, version, c.Type)
|
||||
|
||||
if len(s.Source) > 0 {
|
||||
for i := range kdeploy.Spec.Template.PodSpec.Containers {
|
||||
kdeploy.Spec.Template.PodSpec.Containers[i].Image = s.Source
|
||||
kdeploy.Spec.Template.PodSpec.Containers[i].Command = []string{}
|
||||
kdeploy.Spec.Template.PodSpec.Containers[i].Args = []string{name}
|
||||
}
|
||||
}
|
||||
|
||||
// attach our values to the deployment; name, version, source
|
||||
kdeploy.Metadata.Annotations["name"] = s.Name
|
||||
kdeploy.Metadata.Annotations["version"] = s.Version
|
||||
@ -64,9 +72,6 @@ func newService(s *runtime.Service, c runtime.CreateOptions) *service {
|
||||
// specify the command to exec
|
||||
if len(c.Command) > 0 {
|
||||
kdeploy.Spec.Template.PodSpec.Containers[0].Command = c.Command
|
||||
} else if len(s.Source) > 0 {
|
||||
// default command for our k8s service should be source
|
||||
kdeploy.Spec.Template.PodSpec.Containers[0].Command = []string{"go", "run", s.Source}
|
||||
}
|
||||
|
||||
return &service{
|
||||
|
@ -51,8 +51,6 @@ type CreateOptions struct {
|
||||
Output io.Writer
|
||||
// Type of service to create
|
||||
Type string
|
||||
// Base image for docker
|
||||
BaseImage string
|
||||
}
|
||||
|
||||
// ReadOptions queries runtime services
|
||||
@ -94,13 +92,6 @@ func WithOutput(out io.Writer) CreateOption {
|
||||
}
|
||||
}
|
||||
|
||||
// WithBaseImage sets the docker img
|
||||
func WithBaseImage(img string) CreateOption {
|
||||
return func(o *CreateOptions) {
|
||||
o.BaseImage = img
|
||||
}
|
||||
}
|
||||
|
||||
// ReadService returns services with the given name
|
||||
func ReadService(service string) ReadOption {
|
||||
return func(o *ReadOptions) {
|
||||
|
@ -226,11 +226,9 @@ func NewService(name, version, typ string) *Service {
|
||||
}
|
||||
|
||||
// NewService returns default micro kubernetes deployment definition
|
||||
func NewDeployment(name, version, typ string, opts ...DeploymentOption) *Deployment {
|
||||
func NewDeployment(name, version, typ string) *Deployment {
|
||||
log.Tracef("kubernetes default deployment: name: %s, version: %s", name, version)
|
||||
|
||||
options := NewDeploymentOptions(opts)
|
||||
|
||||
Labels := map[string]string{
|
||||
"name": name,
|
||||
"version": version,
|
||||
@ -267,7 +265,7 @@ func NewDeployment(name, version, typ string, opts ...DeploymentOption) *Deploym
|
||||
PodSpec: &PodSpec{
|
||||
Containers: []Container{{
|
||||
Name: name,
|
||||
Image: options.BaseImage,
|
||||
Image: DefaultImage,
|
||||
Env: []EnvVar{env},
|
||||
Command: []string{"go", "run", "main.go"},
|
||||
Ports: []ContainerPort{{
|
||||
|
@ -1,9 +1,5 @@
|
||||
package client
|
||||
|
||||
type DeploymentOptions struct {
|
||||
BaseImage string
|
||||
}
|
||||
|
||||
type LogOptions struct {
|
||||
Params map[string]string
|
||||
}
|
||||
@ -14,7 +10,6 @@ type WatchOptions struct {
|
||||
|
||||
type LogOption func(*LogOptions)
|
||||
type WatchOption func(*WatchOptions)
|
||||
type DeploymentOption func(*DeploymentOptions)
|
||||
|
||||
// LogParams provides additional params for logs
|
||||
func LogParams(p map[string]string) LogOption {
|
||||
@ -29,24 +24,3 @@ func WatchParams(p map[string]string) WatchOption {
|
||||
w.Params = p
|
||||
}
|
||||
}
|
||||
|
||||
// WithBaseImage sets the base image for the deployment
|
||||
func WithBaseImage(img string) DeploymentOption {
|
||||
return func(d *DeploymentOptions) {
|
||||
d.BaseImage = img
|
||||
}
|
||||
}
|
||||
|
||||
// NewDeploymentOptions returns an initialized DeploymentOptions
|
||||
func NewDeploymentOptions(opts []DeploymentOption) DeploymentOptions {
|
||||
var options DeploymentOptions
|
||||
for _, o := range opts {
|
||||
o(&options)
|
||||
}
|
||||
|
||||
if options.BaseImage == "" {
|
||||
options.BaseImage = DefaultImage
|
||||
}
|
||||
|
||||
return options
|
||||
}
|
||||
|
@ -60,6 +60,10 @@ spec:
|
||||
value: "{{ .Value }}"
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
args:
|
||||
{{- range .Args }}
|
||||
- {{.}}
|
||||
{{- end }}
|
||||
command:
|
||||
{{- range .Command }}
|
||||
- {{.}}
|
||||
|
@ -20,6 +20,7 @@ type Container struct {
|
||||
Image string `json:"image"`
|
||||
Env []EnvVar `json:"env,omitempty"`
|
||||
Command []string `json:"command,omitempty"`
|
||||
Args []string `json:"args,omitempty"`
|
||||
Ports []ContainerPort `json:"ports,omitempty"`
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user