Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
K
k3s
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Jacklull
k3s
Commits
5c62dcbb
Unverified
Commit
5c62dcbb
authored
May 03, 2019
by
Darren Shepherd
Committed by
GitHub
May 03, 2019
Browse files
Options
Browse Files
Download
Plain Diff
Merge pull request #435 from galal-hussein/svclb_upgrade
handle old service lb deployments
parents
a46fe4a3
1e33142f
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
151 additions
and
16 deletions
+151
-16
controller.go
pkg/servicelb/controller.go
+30
-13
zz_generated_deepcopy.go
types/apis/apps/v1/zz_generated_deepcopy.go
+33
-0
zz_generated_deployment_controller.go
types/apis/apps/v1/zz_generated_deployment_controller.go
+0
-0
zz_generated_deployment_lifecycle_adapter.go
...apis/apps/v1/zz_generated_deployment_lifecycle_adapter.go
+63
-0
zz_generated_k8s_client.go
types/apis/apps/v1/zz_generated_k8s_client.go
+23
-3
zz_generated_scheme.go
types/apis/apps/v1/zz_generated_scheme.go
+1
-0
main.go
types/codegen/main.go
+1
-0
No files found.
pkg/servicelb/controller.go
View file @
5c62dcbb
...
@@ -42,15 +42,17 @@ func Register(ctx context.Context, kubernetes kubernetes.Interface, enabled, roo
...
@@ -42,15 +42,17 @@ func Register(ctx context.Context, kubernetes kubernetes.Interface, enabled, roo
appClients
:=
appclient
.
ClientsFrom
(
ctx
)
appClients
:=
appclient
.
ClientsFrom
(
ctx
)
h
:=
&
handler
{
h
:=
&
handler
{
rootless
:
rootless
,
rootless
:
rootless
,
enabled
:
enabled
,
enabled
:
enabled
,
nodeCache
:
clients
.
Node
.
Cache
(),
nodeCache
:
clients
.
Node
.
Cache
(),
podCache
:
clients
.
Pod
.
Cache
(),
podCache
:
clients
.
Pod
.
Cache
(),
deploymentCache
:
appClients
.
Deployment
.
Cache
(),
processor
:
objectset
.
NewProcessor
(
"svccontroller"
)
.
processor
:
objectset
.
NewProcessor
(
"svccontroller"
)
.
Client
(
appClients
.
DaemonSet
),
Client
(
appClients
.
DaemonSet
),
serviceCache
:
clients
.
Service
.
Cache
(),
serviceCache
:
clients
.
Service
.
Cache
(),
services
:
kubernetes
.
CoreV1
(),
services
:
kubernetes
.
CoreV1
(),
daemonsets
:
kubernetes
.
AppsV1
(),
daemonsets
:
kubernetes
.
AppsV1
(),
deployments
:
kubernetes
.
AppsV1
(),
}
}
clients
.
Service
.
OnChange
(
ctx
,
"svccontroller"
,
h
.
onChangeService
)
clients
.
Service
.
OnChange
(
ctx
,
"svccontroller"
,
h
.
onChangeService
)
...
@@ -65,14 +67,16 @@ func Register(ctx context.Context, kubernetes kubernetes.Interface, enabled, roo
...
@@ -65,14 +67,16 @@ func Register(ctx context.Context, kubernetes kubernetes.Interface, enabled, roo
}
}
type
handler
struct
{
type
handler
struct
{
rootless
bool
rootless
bool
enabled
bool
enabled
bool
nodeCache
coreclient
.
NodeClientCache
nodeCache
coreclient
.
NodeClientCache
podCache
coreclient
.
PodClientCache
podCache
coreclient
.
PodClientCache
processor
*
objectset
.
Processor
deploymentCache
appclient
.
DeploymentClientCache
serviceCache
coreclient
.
ServiceClientCache
processor
*
objectset
.
Processor
services
coregetter
.
ServicesGetter
serviceCache
coreclient
.
ServiceClientCache
daemonsets
v1getter
.
DaemonSetsGetter
services
coregetter
.
ServicesGetter
daemonsets
v1getter
.
DaemonSetsGetter
deployments
v1getter
.
DeploymentsGetter
}
}
func
(
h
*
handler
)
onResourceChange
(
name
,
namespace
string
,
obj
runtime
.
Object
)
([]
changeset
.
Key
,
error
)
{
func
(
h
*
handler
)
onResourceChange
(
name
,
namespace
string
,
obj
runtime
.
Object
)
([]
changeset
.
Key
,
error
)
{
...
@@ -218,7 +222,9 @@ func (h *handler) podIPs(pods []*core.Pod) ([]string, error) {
...
@@ -218,7 +222,9 @@ func (h *handler) podIPs(pods []*core.Pod) ([]string, error) {
}
}
func
(
h
*
handler
)
deployPod
(
svc
*
core
.
Service
)
error
{
func
(
h
*
handler
)
deployPod
(
svc
*
core
.
Service
)
error
{
if
err
:=
h
.
deleteOldDeployments
(
svc
);
err
!=
nil
{
return
err
}
objs
:=
objectset
.
NewObjectSet
()
objs
:=
objectset
.
NewObjectSet
()
if
!
h
.
enabled
{
if
!
h
.
enabled
{
return
h
.
processor
.
NewDesiredSet
(
svc
,
objs
)
.
Apply
()
return
h
.
processor
.
NewDesiredSet
(
svc
,
objs
)
.
Apply
()
...
@@ -363,3 +369,14 @@ func (h *handler) updateDaemonSets() error {
...
@@ -363,3 +369,14 @@ func (h *handler) updateDaemonSets() error {
return
nil
return
nil
}
}
func
(
h
*
handler
)
deleteOldDeployments
(
svc
*
core
.
Service
)
error
{
name
:=
fmt
.
Sprintf
(
"svclb-%s"
,
svc
.
Name
)
if
_
,
err
:=
h
.
deploymentCache
.
Get
(
svc
.
Namespace
,
name
);
err
!=
nil
{
if
errors
.
IsNotFound
(
err
)
{
return
nil
}
return
err
}
return
h
.
deployments
.
Deployments
(
svc
.
Namespace
)
.
Delete
(
name
,
&
meta
.
DeleteOptions
{})
}
types/apis/apps/v1/zz_generated_deepcopy.go
View file @
5c62dcbb
...
@@ -37,3 +37,36 @@ func (in *DaemonSetList) DeepCopyObject() runtime.Object {
...
@@ -37,3 +37,36 @@ func (in *DaemonSetList) DeepCopyObject() runtime.Object {
}
}
return
nil
return
nil
}
}
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func
(
in
*
DeploymentList
)
DeepCopyInto
(
out
*
DeploymentList
)
{
*
out
=
*
in
out
.
TypeMeta
=
in
.
TypeMeta
out
.
ListMeta
=
in
.
ListMeta
if
in
.
Items
!=
nil
{
in
,
out
:=
&
in
.
Items
,
&
out
.
Items
*
out
=
make
([]
appsv1
.
Deployment
,
len
(
*
in
))
for
i
:=
range
*
in
{
(
*
in
)[
i
]
.
DeepCopyInto
(
&
(
*
out
)[
i
])
}
}
return
}
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DeploymentList.
func
(
in
*
DeploymentList
)
DeepCopy
()
*
DeploymentList
{
if
in
==
nil
{
return
nil
}
out
:=
new
(
DeploymentList
)
in
.
DeepCopyInto
(
out
)
return
out
}
// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
func
(
in
*
DeploymentList
)
DeepCopyObject
()
runtime
.
Object
{
if
c
:=
in
.
DeepCopy
();
c
!=
nil
{
return
c
}
return
nil
}
types/apis/apps/v1/zz_generated_deployment_controller.go
0 → 100644
View file @
5c62dcbb
This diff is collapsed.
Click to expand it.
types/apis/apps/v1/zz_generated_deployment_lifecycle_adapter.go
0 → 100644
View file @
5c62dcbb
package
v1
import
(
"github.com/rancher/norman/lifecycle"
v1
"k8s.io/api/apps/v1"
"k8s.io/apimachinery/pkg/runtime"
)
type
DeploymentLifecycle
interface
{
Create
(
obj
*
v1
.
Deployment
)
(
runtime
.
Object
,
error
)
Remove
(
obj
*
v1
.
Deployment
)
(
runtime
.
Object
,
error
)
Updated
(
obj
*
v1
.
Deployment
)
(
runtime
.
Object
,
error
)
}
type
deploymentLifecycleAdapter
struct
{
lifecycle
DeploymentLifecycle
}
func
(
w
*
deploymentLifecycleAdapter
)
HasCreate
()
bool
{
o
,
ok
:=
w
.
lifecycle
.
(
lifecycle
.
ObjectLifecycleCondition
)
return
!
ok
||
o
.
HasCreate
()
}
func
(
w
*
deploymentLifecycleAdapter
)
HasFinalize
()
bool
{
o
,
ok
:=
w
.
lifecycle
.
(
lifecycle
.
ObjectLifecycleCondition
)
return
!
ok
||
o
.
HasFinalize
()
}
func
(
w
*
deploymentLifecycleAdapter
)
Create
(
obj
runtime
.
Object
)
(
runtime
.
Object
,
error
)
{
o
,
err
:=
w
.
lifecycle
.
Create
(
obj
.
(
*
v1
.
Deployment
))
if
o
==
nil
{
return
nil
,
err
}
return
o
,
err
}
func
(
w
*
deploymentLifecycleAdapter
)
Finalize
(
obj
runtime
.
Object
)
(
runtime
.
Object
,
error
)
{
o
,
err
:=
w
.
lifecycle
.
Remove
(
obj
.
(
*
v1
.
Deployment
))
if
o
==
nil
{
return
nil
,
err
}
return
o
,
err
}
func
(
w
*
deploymentLifecycleAdapter
)
Updated
(
obj
runtime
.
Object
)
(
runtime
.
Object
,
error
)
{
o
,
err
:=
w
.
lifecycle
.
Updated
(
obj
.
(
*
v1
.
Deployment
))
if
o
==
nil
{
return
nil
,
err
}
return
o
,
err
}
func
NewDeploymentLifecycleAdapter
(
name
string
,
clusterScoped
bool
,
client
DeploymentInterface
,
l
DeploymentLifecycle
)
DeploymentHandlerFunc
{
adapter
:=
&
deploymentLifecycleAdapter
{
lifecycle
:
l
}
syncFn
:=
lifecycle
.
NewObjectLifecycleAdapter
(
name
,
clusterScoped
,
adapter
,
client
.
ObjectClient
())
return
func
(
key
string
,
obj
*
v1
.
Deployment
)
(
runtime
.
Object
,
error
)
{
newObj
,
err
:=
syncFn
(
key
,
obj
)
if
o
,
ok
:=
newObj
.
(
runtime
.
Object
);
ok
{
return
o
,
err
}
return
nil
,
err
}
}
types/apis/apps/v1/zz_generated_k8s_client.go
View file @
5c62dcbb
...
@@ -21,12 +21,14 @@ type Interface interface {
...
@@ -21,12 +21,14 @@ type Interface interface {
controller
.
Starter
controller
.
Starter
DaemonSetsGetter
DaemonSetsGetter
DeploymentsGetter
}
}
type
Clients
struct
{
type
Clients
struct
{
Interface
Interface
Interface
Interface
DaemonSet
DaemonSetClient
DaemonSet
DaemonSetClient
Deployment
DeploymentClient
}
}
type
Client
struct
{
type
Client
struct
{
...
@@ -34,7 +36,8 @@ type Client struct {
...
@@ -34,7 +36,8 @@ type Client struct {
restClient
rest
.
Interface
restClient
rest
.
Interface
starters
[]
controller
.
Starter
starters
[]
controller
.
Starter
daemonSetControllers
map
[
string
]
DaemonSetController
daemonSetControllers
map
[
string
]
DaemonSetController
deploymentControllers
map
[
string
]
DeploymentController
}
}
func
Factory
(
ctx
context
.
Context
,
config
rest
.
Config
)
(
context
.
Context
,
controller
.
Starter
,
error
)
{
func
Factory
(
ctx
context
.
Context
,
config
rest
.
Config
)
(
context
.
Context
,
controller
.
Starter
,
error
)
{
...
@@ -73,6 +76,9 @@ func NewClientsFromInterface(iface Interface) *Clients {
...
@@ -73,6 +76,9 @@ func NewClientsFromInterface(iface Interface) *Clients {
DaemonSet
:
&
daemonSetClient2
{
DaemonSet
:
&
daemonSetClient2
{
iface
:
iface
.
DaemonSets
(
""
),
iface
:
iface
.
DaemonSets
(
""
),
},
},
Deployment
:
&
deploymentClient2
{
iface
:
iface
.
Deployments
(
""
),
},
}
}
}
}
...
@@ -89,7 +95,8 @@ func NewForConfig(config rest.Config) (Interface, error) {
...
@@ -89,7 +95,8 @@ func NewForConfig(config rest.Config) (Interface, error) {
return
&
Client
{
return
&
Client
{
restClient
:
restClient
,
restClient
:
restClient
,
daemonSetControllers
:
map
[
string
]
DaemonSetController
{},
daemonSetControllers
:
map
[
string
]
DaemonSetController
{},
deploymentControllers
:
map
[
string
]
DeploymentController
{},
},
nil
},
nil
}
}
...
@@ -117,3 +124,16 @@ func (c *Client) DaemonSets(namespace string) DaemonSetInterface {
...
@@ -117,3 +124,16 @@ func (c *Client) DaemonSets(namespace string) DaemonSetInterface {
objectClient
:
objectClient
,
objectClient
:
objectClient
,
}
}
}
}
type
DeploymentsGetter
interface
{
Deployments
(
namespace
string
)
DeploymentInterface
}
func
(
c
*
Client
)
Deployments
(
namespace
string
)
DeploymentInterface
{
objectClient
:=
objectclient
.
NewObjectClient
(
namespace
,
c
.
restClient
,
&
DeploymentResource
,
DeploymentGroupVersionKind
,
deploymentFactory
{})
return
&
deploymentClient
{
ns
:
namespace
,
client
:
c
,
objectClient
:
objectClient
,
}
}
types/apis/apps/v1/zz_generated_scheme.go
View file @
5c62dcbb
...
@@ -34,6 +34,7 @@ func addKnownTypes(scheme *runtime.Scheme) error {
...
@@ -34,6 +34,7 @@ func addKnownTypes(scheme *runtime.Scheme) error {
scheme
.
AddKnownTypes
(
SchemeGroupVersion
,
scheme
.
AddKnownTypes
(
SchemeGroupVersion
,
&
DaemonSetList
{},
&
DaemonSetList
{},
&
DeploymentList
{},
)
)
return
nil
return
nil
}
}
types/codegen/main.go
View file @
5c62dcbb
...
@@ -100,6 +100,7 @@ func main() {
...
@@ -100,6 +100,7 @@ func main() {
if
err
:=
generator
.
ControllersForForeignTypes
(
basePackage
,
appsv1
.
SchemeGroupVersion
,
[]
interface
{}{
if
err
:=
generator
.
ControllersForForeignTypes
(
basePackage
,
appsv1
.
SchemeGroupVersion
,
[]
interface
{}{
appsv1
.
DaemonSet
{},
appsv1
.
DaemonSet
{},
appsv1
.
Deployment
{},
},
nil
);
err
!=
nil
{
},
nil
);
err
!=
nil
{
logrus
.
Fatal
(
err
)
logrus
.
Fatal
(
err
)
}
}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment