def config_changed(): '''If the configuration values change, remove the available states.''' config = hookenv.config() if any(config.changed(key) for key in config.keys()): hookenv.log('The configuration options have changed.') # Use the Compose class that encapsulates the docker-compose commands. compose = Compose('files/kubernetes') if is_leader(): hookenv.log('Removing master container and kubelet.available state.') # noqa # Stop and remove the Kubernetes kubelet container. compose.kill('master') compose.rm('master') compose.kill('proxy') compose.rm('proxy') # Remove the state so the code can react to restarting kubelet. remove_state('kubelet.available') else: hookenv.log('Removing kubelet container and kubelet.available state.') # noqa # Stop and remove the Kubernetes kubelet container. compose.kill('kubelet') compose.rm('kubelet') # Remove the state so the code can react to restarting kubelet. remove_state('kubelet.available') hookenv.log('Removing proxy container and proxy.available state.') # Stop and remove the Kubernetes proxy container. compose.kill('proxy') compose.rm('proxy') # Remove the state so the code can react to restarting proxy. remove_state('proxy.available') if config.changed('version'): hookenv.log('The version changed removing the states so the new ' 'version of kubectl will be downloaded.') remove_state('kubectl.downloaded') remove_state('kubeconfig.created')
def run_rancherserver(): # Render teh template cfg = config() render('docker-compose.yml', 'files/rancherserver/docker-compose.yml', cfg) comp = Compose('files/rancherserver') comp.up()
def start_cadvisor(): '''Start the cAdvisor container that gives metrics about the other application containers on this system. ''' compose = Compose('files/kubernetes') compose.up('cadvisor') set_state('cadvisor.available') status_set('active', 'cadvisor running on port 8088') hookenv.open_port(8088)
def run_ems(): # authenticate to private docker repository d = Docker() cfg = config() d.login(cfg['distribution-user'], cfg['distribution-pass'], cfg['distribution-email']) # Render the template render('docker-compose.yml', 'files/ems/docker-compose.yml', cfg) comp = Compose('files/ems') comp.up()
def start_redmine(): ''' Starts a Redmine application in standalone configuration''' # Render the formation cfg = config() render('docker-compose.yml', 'files/redmine/docker-compose.yml', cfg) # Initialize the docker compose object, looking @ our work directory compose = Compose('files/redmine') # Launch the service(s) status_set('maintenance', "Fetching / Starting the redmine containers") compose.up() status_set('active', 'Redmine is running on port 10030')
def master(etcd): '''Install and run the hyperkube container that starts kubernetes-master. This actually runs the kubelet, which in turn runs a pod that contains the other master components. ''' render_files(etcd) # Use the Compose class that encapsulates the docker-compose commands. compose = Compose('files/kubernetes') status_set('maintenance', 'Starting the Kubernetes kubelet container.') # Start the Kubernetes kubelet container using docker-compose. compose.up('kubelet') set_state('kubelet.available') # Open the secure port for api-server. hookenv.open_port(6443) status_set('maintenance', 'Starting the Kubernetes proxy container') # Start the Kubernetes proxy container using docker-compose. compose.up('proxy') set_state('proxy.available') status_set('active', 'Kubernetes started')
def start_kubelet(etcd): '''Run the hyperkube container that starts the kubernetes services. When the leader, run the master services (apiserver, controller, scheduler) using the master.json from the rendered manifest directory. When a follower, start the node services (kubelet, and proxy). ''' render_files(etcd) # Use the Compose class that encapsulates the docker-compose commands. compose = Compose('files/kubernetes') status_set('maintenance', 'Starting the Kubernetes services.') if is_leader(): compose.up('master') set_state('kubelet.available') # Open the secure port for api-server. hookenv.open_port(6443) else: # Start the Kubernetes kubelet container using docker-compose. compose.up('kubelet') set_state('kubelet.available') # Start the Kubernetes proxy container using docker-compose. compose.up('proxy') set_state('proxy.available') status_set('active', 'Kubernetes services started')