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
6db03cf4
Commit
6db03cf4
authored
Jan 24, 2018
by
Rye Terrell
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Add storage-backend configuration option to kubernetes-master charm.
parent
ee14d2ed
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
35 additions
and
19 deletions
+35
-19
config.yaml
cluster/juju/layers/kubernetes-master/config.yaml
+6
-0
kubernetes_master.py
...ju/layers/kubernetes-master/reactive/kubernetes_master.py
+29
-19
No files found.
cluster/juju/layers/kubernetes-master/config.yaml
View file @
6db03cf4
...
@@ -80,3 +80,9 @@ options:
...
@@ -80,3 +80,9 @@ options:
description
:
|
description
:
|
When true, master nodes will not be upgraded until the user triggers
When true, master nodes will not be upgraded until the user triggers
it manually by running the upgrade action.
it manually by running the upgrade action.
storage-backend
:
type
:
string
default
:
"
auto"
description
:
|
The storage backend for kube-apiserver persistence. Can be "etcd2", "etcd3", or
"auto". Auto mode will select etcd3 on new installations, or etcd2 on upgrades.
cluster/juju/layers/kubernetes-master/reactive/kubernetes_master.py
View file @
6db03cf4
...
@@ -112,7 +112,12 @@ def check_for_upgrade_needed():
...
@@ -112,7 +112,12 @@ def check_for_upgrade_needed():
# we take no risk and forcibly upgrade the snaps.
# we take no risk and forcibly upgrade the snaps.
# Forcibly means we do not prompt the user to call the upgrade action.
# Forcibly means we do not prompt the user to call the upgrade action.
set_upgrade_needed
(
forced
=
True
)
set_upgrade_needed
(
forced
=
True
)
upgrade_for_etcd
()
# Set the auto storage backend to etcd2.
auto_storage_backend
=
leader_get
(
'auto_storage_backend'
)
is_leader
=
is_state
(
'leadership.is_leader'
)
if
not
auto_storage_backend
and
is_leader
:
leader_set
(
auto_storage_backend
=
'etcd2'
)
def
snap_resources_changed
():
def
snap_resources_changed
():
...
@@ -138,14 +143,6 @@ def snap_resources_changed():
...
@@ -138,14 +143,6 @@ def snap_resources_changed():
return
'unknown'
return
'unknown'
def
upgrade_for_etcd
():
# we are upgrading the charm.
# If this is an old deployment etcd_version is not set
# so if we are the leader we need to set it to v2
if
not
leader_get
(
'etcd_version'
)
and
is_state
(
'leadership.is_leader'
):
leader_set
(
etcd_version
=
'etcd2'
)
def
add_rbac_roles
():
def
add_rbac_roles
():
'''Update the known_tokens file with proper groups.'''
'''Update the known_tokens file with proper groups.'''
...
@@ -279,6 +276,11 @@ def password_changed():
...
@@ -279,6 +276,11 @@ def password_changed():
set_state
(
'client.password.initialised'
)
set_state
(
'client.password.initialised'
)
@when
(
'config.changed.storage-backend'
)
def
storage_backend_changed
():
remove_state
(
'kubernetes-master.components.started'
)
@when
(
'cni.connected'
)
@when
(
'cni.connected'
)
@when_not
(
'cni.configured'
)
@when_not
(
'cni.configured'
)
def
configure_cni
(
cni
):
def
configure_cni
(
cni
):
...
@@ -432,7 +434,7 @@ def master_services_down():
...
@@ -432,7 +434,7 @@ def master_services_down():
@when
(
'etcd.available'
,
'tls_client.server.certificate.saved'
,
@when
(
'etcd.available'
,
'tls_client.server.certificate.saved'
,
'authentication.setup'
)
'authentication.setup'
)
@when
(
'leadership.set.
etcd_version
'
)
@when
(
'leadership.set.
auto_storage_backend
'
)
@when_not
(
'kubernetes-master.components.started'
)
@when_not
(
'kubernetes-master.components.started'
)
def
start_master
(
etcd
):
def
start_master
(
etcd
):
'''Run the Kubernetes master components.'''
'''Run the Kubernetes master components.'''
...
@@ -450,8 +452,7 @@ def start_master(etcd):
...
@@ -450,8 +452,7 @@ def start_master(etcd):
handle_etcd_relation
(
etcd
)
handle_etcd_relation
(
etcd
)
# Add CLI options to all components
# Add CLI options to all components
leader_etcd_version
=
leader_get
(
'etcd_version'
)
configure_apiserver
(
etcd
.
get_connection_string
(),
getStorageBackend
())
configure_apiserver
(
etcd
.
get_connection_string
(),
leader_etcd_version
)
configure_controller_manager
()
configure_controller_manager
()
configure_scheduler
()
configure_scheduler
()
set_state
(
'kubernetes-master.components.started'
)
set_state
(
'kubernetes-master.components.started'
)
...
@@ -473,13 +474,15 @@ def etcd_data_change(etcd):
...
@@ -473,13 +474,15 @@ def etcd_data_change(etcd):
if
data_changed
(
'etcd-connect'
,
connection_string
):
if
data_changed
(
'etcd-connect'
,
connection_string
):
remove_state
(
'kubernetes-master.components.started'
)
remove_state
(
'kubernetes-master.components.started'
)
# We are the leader and the
etcd_version
is not set meaning
# We are the leader and the
auto_storage_backend
is not set meaning
# this is the first time we connect to etcd.
# this is the first time we connect to etcd.
if
is_state
(
'leadership.is_leader'
)
and
not
leader_get
(
'etcd_version'
):
auto_storage_backend
=
leader_get
(
'auto_storage_backend'
)
is_leader
=
is_state
(
'leadership.is_leader'
)
if
is_leader
and
not
auto_storage_backend
:
if
etcd
.
get_version
()
.
startswith
(
'3.'
):
if
etcd
.
get_version
()
.
startswith
(
'3.'
):
leader_set
(
etcd_version
=
'etcd3'
)
leader_set
(
auto_storage_backend
=
'etcd3'
)
else
:
else
:
leader_set
(
etcd_version
=
'etcd2'
)
leader_set
(
auto_storage_backend
=
'etcd2'
)
@when
(
'kube-control.connected'
)
@when
(
'kube-control.connected'
)
...
@@ -747,7 +750,7 @@ def ceph_storage(ceph_admin):
...
@@ -747,7 +750,7 @@ def ceph_storage(ceph_admin):
cmd
=
[
'kubectl'
,
'apply'
,
'-f'
,
'/tmp/ceph-secret.yaml'
]
cmd
=
[
'kubectl'
,
'apply'
,
'-f'
,
'/tmp/ceph-secret.yaml'
]
check_call
(
cmd
)
check_call
(
cmd
)
os
.
remove
(
'/tmp/ceph-secret.yaml'
)
os
.
remove
(
'/tmp/ceph-secret.yaml'
)
except
:
# NOQA
except
:
# NOQA
# the enlistment in kubernetes failed, return and prepare for re-exec
# the enlistment in kubernetes failed, return and prepare for re-exec
return
return
...
@@ -835,11 +838,11 @@ def on_config_allow_privileged_change():
...
@@ -835,11 +838,11 @@ def on_config_allow_privileged_change():
@when
(
'config.changed.api-extra-args'
)
@when
(
'config.changed.api-extra-args'
)
@when
(
'kubernetes-master.components.started'
)
@when
(
'kubernetes-master.components.started'
)
@when
(
'leadership.set.
etcd_version
'
)
@when
(
'leadership.set.
auto_storage_backend
'
)
@when
(
'etcd.available'
)
@when
(
'etcd.available'
)
def
on_config_api_extra_args_change
(
etcd
):
def
on_config_api_extra_args_change
(
etcd
):
configure_apiserver
(
etcd
.
get_connection_string
(),
configure_apiserver
(
etcd
.
get_connection_string
(),
leader_get
(
'etcd_version'
))
getStorageBackend
(
))
@when
(
'config.changed.controller-manager-extra-args'
)
@when
(
'config.changed.controller-manager-extra-args'
)
...
@@ -1280,3 +1283,10 @@ def touch(fname):
...
@@ -1280,3 +1283,10 @@ def touch(fname):
os
.
utime
(
fname
,
None
)
os
.
utime
(
fname
,
None
)
except
OSError
:
except
OSError
:
open
(
fname
,
'a'
)
.
close
()
open
(
fname
,
'a'
)
.
close
()
def
getStorageBackend
():
storage_backend
=
hookenv
.
config
(
'storage-backend'
)
if
storage_backend
==
'auto'
:
storage_backend
=
leader_get
(
'auto_storage_backend'
)
return
storage_backend
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