Port forwarding is broken due to missing socat package #135

Closed
chuckbutler opened this Issue Nov 17, 2016 · 6 comments

Comments

Projects
None yet
3 participants
Collaborator

chuckbutler commented Nov 17, 2016

The socat package appears to be required on the kubernetes-master charm.

E1117 15:48:41.963192   46813 portforward.go:329] an error occurred forwarding 49400 -> 44134: error forwarding port 44134 to pod tiller-deploy-2241983194-k4tdu_kube-system, uid : unable to do port forwarding: socat not found.

@chuckbutler chuckbutler changed the title from Missing socat package on kubernetes-master to Port forwarding is broken due to missing socat package Nov 17, 2016

gerred commented Nov 17, 2016

kubernetes-worker as well!

It also looks like it breaks through the load balancer as well. I've temporarily exposed the master and am working with it directly, but I get an upgrade request. I've done a lot less looking into that one.

chuckbutler added a commit to chuckbutler/kubernetes that referenced this issue Nov 17, 2016

@chuckbutler chuckbutler referenced this issue in juju-solutions/kubernetes Nov 17, 2016

Merged

Add the 'socat' package to both worker and master #87

Collaborator

chuckbutler commented Nov 17, 2016

@gerred - i'm half tempted to sit down and write an haproxy config for the api-lb and drop that in place of nginx instead of fiddling with the nginx vhost further.

In the interrim i did propose a branch that adds the socat package to both worker and master in a nieve attempt to resolve the issue above. We'll get this shipped in the next release of the charms.

Owner

marcoceppi commented Nov 18, 2016

@chuckbutler I've got the start of an HAProxy layer that we could colab on

Collaborator

chuckbutler commented Nov 18, 2016

Sounds good @marcoceppi. Let's spike on that next week (if you're agreeable) for a day and come up with a suitable haproxy based replacement/migration for the api-lb. I'm not happy with what's there now that we have empirical evidence of its failure scenario when being used with third party apps.

Collaborator

chuckbutler commented Dec 12, 2016

Aside from the off-topic bits about the HAProxy layer replacing the nginx based API-LB, I think this is satisfactorily closed. Please re-open if this is not the case. I'll create an additional issue to track the LoadBalanceer issue.

Collaborator

chuckbutler commented Dec 12, 2016

Linked against #148

chuckbutler added a commit to chuckbutler/kubernetes that referenced this issue Jan 23, 2017

Squash commit including full commit history
Update the series and the README to reflect the change.

Adds Operational Actions to the Kubernetes layer

 - pause - will cordon and drain a node forcefully
 - resume - will uncordon a node
 - microbot - Deploys a set number of pods to illustrate the operational
   actions

Fixed a grammatical error

Adds actions descriptions to the README

Updates the action descriptions for a crisper CLI output. THe longer
descriptions were word-wrapping and didn't add much value to the text.
Longer descriptions have been moved to the README.

Automated testing shouldn't bootstrap

Juju bootstrapping is an act of cost. This should be an explicit action
by the tooling surrounding bundle-tester when testing a charm. Setting
bootstrap:false will allow us to get faster feedback at lower cost when
running the kubernetes charm under ci. Additionally doesn't reset so
no communication attempt is made to the controller

Additionally add tox to test dependency list

Fixes messaging on the master unit

Removes a stale state, and now reacts when kubedns is available as it
should.

Adds templates, layer and config for the kube-master

These systemd templates assume that the kubernetes services will be
installed locally, and teh defaults files will be run through jinja2
templating.

First commit of kubernetes_master reactive code.

Adding dns templates, and making code render them.

Changing install method to prevent infinite loop.

Actually call the install command for kubectl.

Temporarily commenting out the tls bits.

Fixing the services rendering.

Adds relations and resources

Adds `kubernetes` resource
Adds etcd and http relations

Docker is no longer installed on the master node, remove the dependency on startup

Corrects the rendering of the defaults files

Adding auth and token code.

Fixing the random token generator to 32 chars.

Removing the create dir from the reactive method.

Changing the tokens that are generated.

Tweaks to the service definitions and defaults

Removes the TLS flags from the apiserver flags
tweaks the dependencies on service files for the controller-manager and
scheduler

Make systemd templates closer aligned to upstream

This refactors the systemd templates so they no longer block
application startup and are closer aligned to the systemd templates
found in the kubernetes contrib repo for the master componentry

Adds sdn-plugin interface

- I added the sdn-plugin interface, and tweaked the post-render to
  ensure we have reloaded our daemons, so systemd will quit complianing
  at us that we have changes since initial launch.

Adds the master modifications

Adds the worker layer

Cleanup per @mbruzek's review comments

patches for when resources are missing

This normalizes the states so the charm behaves accordingly when no
resources have been provided, and refactors the end-user messaging.

Application Version and minor patches

Adds the application version declarations and fixes some bad imports

Weekend exploration

Cleanup layers with FlagManager

- Cleanup syncthing botched transfer
- Refactor service/env templates to follow upstream templates
- Adds FlagManager to the master layer

Adds the kubeapi-load-balancer layer

Removed kube-dns layer in favor of shipping as master addon service

Adds DNS Addon

Adds kubedns templates
Adjusts apiserver defaults
Adds flagmanager in charms.layer.kubernetes

Tweaks to kubelet defaults

Changes private-address on kube-dns relation to sdn_ip
Adjusts kubeconfig path for kubelet

Review Comments per @mbruzek

Adjusted resource delivery to be the consitent across both
kubernetes-master and kubernetes-worker
Updated the dns template with {{ arch }} jinja declarations

normalized kube-dns states, corrected FlagManager dosctring, added arch

to dns_context rendering

Renamed config.defaults to kube-defaults.defaults for clarity

First run at adding tls client interface to master.

Removing unused kube-api interface.

Adds initial README to the worker

tls-client integration

Adds tls-client layer
Configures kubelet for certificate authentication with the master
renames ServerOpts to charms.kubernetes.flagmanager

Adds kubeconfig abstraction, tls to kube-proxy

Adds a guard to wait for at least a single worker before launching
addons

Adds kubernetes dashboard addon

Also fixes a bug when interrogating for nodes

Adds tls-client support to kubeapi-load-balancer

Adding kubeconfig code and loadbalancer interface.

Fixing typos found in state name.

Patches to resolve the functionality for routing through the
loadbalancer relation in the user credentials

Adds owner/group to install of kubectl and config

Adds port default to the loadbalancer

Replace relative path with absolute path in chwon command

Adding tls to master, worker, loadbalancer and fixing some proof errors.

Adding comments per review comment.

Adds systemctl.enable stanza to systemd units

The services were started but will not survive unit interruption,
reboots, etc. as the systemd services were not enabled on boot

Refactor out function enable_services in favor of inline calls

to subprocess.

Adding kubeconfig to the worker, fixing actions and removing templates.

Removing depreciated flag from templates.

Flag --api-servers has been deprecated, Use --kubeconfig instead. Will be removed in a future version.

Adds --require-kubeconfig flag to kubelet

This directive tells kubelet how to contact the master apiserver node(s)
during cluster turn up. This is required when not using the deprecated
--apiservers flag to the kubelet binary

DNS options were being added without flags

This will cause errors during cluster turnup without having the --'s,
they get rendered in teh manifest without their flags and instead are
interpreted as arguments to other flags.

Decorate the certificates logic to halt for tools

This patch makes the master wait until the prerequisit tools are
available before attempting to generate kubeconfig files

Remove worker caching states and re-work the user messaging

There are transient states during turn up that can be confusing to the
end user. This branch attempts to clean up those scenarios with clear
messaging to the user to set expectations.

- kubelet is waiting on cluster dns
- kubelet is not running
- kubelet needs to negotiate running the dns container with the master

Removes the caching `data_changed` stanza on the cluster certificates
management

Adds new tls-client states to guard against unwritten file race
conditions during turnup.

Standardizing status messages and removing the arch blocker.

Early work on the ingress controller. Doesn't appear to delete when
toggled, so ymmv

WIP ingress controller work

Corrected mistaken hookenv.log typos

Delay until we have the dns relationship established

This prevents the ingress controller from firing before we have established
the runtime is stable enough to receive workloads.

Refactor the kubectl run method body

Make the logic clearer than previously defined. Add guards for
pre-defined resources, and refactor the messaging so its clearer whats
happening in the logs

Remove the resource constraints on the 404 provider

Add missing parameter for kube-dns interface

Corrected reference to undefined variable in kubectl

Move the expose declaration into the manifest, and provide
default-http-backend as a service to establish endpoint routing out of
the box when ingress is enabled

Moves microbot action to the worker

Adding the icon from the Canonical design team.

Adding new icons from the Canonical design team.

Adds restart master action to cycle the control plane components

The first attempt at implementing the ceph-admin interface.

Normalizing states to use layer name.

Revert "The first attempt at implementing the ceph-admin interface."

This reverts commit 61a7e97.

Fix inotify leak by killing child processes

Removing the KillMode line to default to control-group.

Moving the sdn config to docker.

Updating messages and logging for master and worker.

Adds missing ceph.conf template, and updates render logic

The render stanza before was encapsulated in another stream writer, was
missing the target location, and had some extra error handling that
seemed unneccesary

Adds the Ceph-Admin relation and kubernetes pv creation using ceph-rbd

This is a feature branch commit rollup of:

- Adds the ceph-storage relation
- Revert "The first attempt at implementing the ceph-admin interface."
- Adds state boundaries for controlling ceph-storage
- Adds debug statements, as well as a health check for ceph

remove k8s node when unit is stopped

refactor kubectl cli interface function

Corrects linting errors and messaging grammar

Updates the action-set with grammar fix
Fixes an extended comment failing lint

Corrects a lint error

Fixes an extended comment that was failing lint

scale ingress controller to the number of kubernetes-workers

docstring for ingress scaling

scale ingress replicas as needed every update

docstrings

Adding nfs-common to the layer.yaml for master and worker.

Fixing lint errors in the worker.

Normalizing the layer.yaml file to get nfs-common

Removing nfs-common from master and load balancer, and addressing line lenght issues.

Removing tests from the individual layers.

The integration tests should be in the bundle, not the charms
because they depend on relations to other charms.

Adds ceph-common to the worker packages

Ceph-Common is a required component to interact with ceph clusters.
Adding this to the worker packages works in tandem with the
create-rbd-pv action to enlist persistent volumes from a ceph-cluster
supporting the ceph-admin interface.

Corrects typos in metdata.yaml

per https://github.com/kubernetes/kubernetes/pull/32874/files this
change set carries that patch forward into the split of master and
worker charms.

Fix bugs in create-rbd-pv

Validate name and size for create-rbd-pv action

* name and size are required
* add minLength and minimum to name and size
* rename `options:` to `params:` so the validation is picked up

rbd action size validation

flake8 fixes

decode bytestring

Fix kube-dns clusterIP

clean up variable name and comment

Fix --cluster-dns arg for kubelet

Remove the explicit SecurityContextDeny due to failures in e2e

E2E attempts to use container-level SELinux policy maps during it's
evaluation of the cluster, despite having that access control policy
disabled in the apiserver. We will never pass E2e with this enabled.

addresses:
juju-solutions/bundle-canonical-kubernetes#106

Add heapster, grafana, influxdb

Start kubelet with --cluster-dns before we deploy kube-dns

flake8 cleanup

Use templates from kubernetes repo, not heapster

use correct node count, minor code cleanup

clean up DNS stuff to reuse create_addon function

remove unnecessary creation of kube-system namespace

seems to already exist

Use `kubectl apply` instead of `kubectl create`

This allows us to "create" addons multiple times without failing.

Rename "dashboard" config to "enable-dashboard-addons"

Add enable-dashboard-addons to README

Initial commit of e2e layer

fix an error where the reset_states step runs during upgrade-charm

Prevent a loop that occurs in the dashboard steps

Adds description to the test action and skeleton readme

Implementing review feedback

run e2e tests in parallel

e2e: temporarily add serial to skip

e2e: oops

Updates to the kubernetes-master README.md

Addressing review comments, renaming restart action.

Fixing comments from @Cynerva.

e2e junit output

e2e junit output minor changes

Ammend the kubernetes-e2e kubeconfig placement with a chown stanza

Ammended the missing variable declaration

Adds logic to reset resource delivery states when upgrading the charm

Ammend last commit with docstring and missing import

Without snark...i guess.

Updating the action, and templates to get current with k8s upstream.

Adds a guard to only execute relationship events when we have a resource

address issue 122

Fixes for the kubernetes-worker microbot action

The action would fail randomly if not being explicit on the CLI when
launching microbot replicas.

Updates w/ consistent icon from the remainder of the suite

e2e ginkgo resource

flake8

Add support for node labels

Remove addon states when upgrading the charm

This will cause us to re-render addon templates and redo `kubectl apply`.
With any luck, that should do the trick!

move addons to addons folder

and build script for updating addons

Rewrite update-addons build script in python

add description and argparse

mimic "cp -v" output for copying addons, looks nicer

docstring and naming cleanup

Replace makefile with a charm build tactic

rename addons tactic

use empty placeholder templates to make the tactic work

WTF

Update addons before charmtools walks the templates folder

combine update-addon scripts and tactic, implement tactic correctly

Add docstrings to UpdateAddonsTactic

Refactor the pathing on the tar archives

Extracing junit files to 'home/ubuntu/foobar-junit/*.xml' was going to
be painful in CI, as we would have to scrub every archive that comes
from the e2e charm. This is an attempt to clean up that output pathing
by dropping the home/ubuntu portion of the path.

Removing the UUID portion of the path as well

Fix a bug with the config.previous for labels on first run

Add the 'socat' package to both worker and master

This nievely resolves
juju-solutions/bundle-canonical-kubernetes#135

Add layer-sos and a couple kubernetes SOS scripts

Rename sos -> debug

Add docker debug script

Manually pass kubeconfig to kubectl instead of running as ubuntu

Updates the test action to embed the start/end and version

This adds time from epoch to both start/finished portions of the log,
and parses the server version from kubectl output.

Add debug scripts to kubernetes-master

add kube-proxy service to kubernetes-worker debug scripts

Remove docker debug script

It belongs in layer-docker

cni - wip

hard-code CIDR

add sdn ip back into cert stuff

replace hostPort with hostNetwork for ingress

reintroduce kube-dns to master

reintroduce kube-dns to worker

fix missing kube-dns in metadata.yaml files

fix some old sdn states i missed, oops

wait for cni available before starting kubelet

clean up kubernetes-master

uncomment sdn_changed function

add container scope to kubernetes-cni relation

add service-cidr charm config

update cni.configured states

update service-cidr description

Remove loopback plugin from master

Add missing docstrings

add a warning message when service-cidr changes

add pyc files to gitignore

Update kubedns addon template names to match upstream

Wait for DNS before deploying dashboard addons

Fixing flake8 errors and using the new tactic signature.

Adding default parameters to fix signature problems.

Use verbose copy in kubernetes-master debug scripts

Use verbose copy in kubernetes-worker debug scripts

Fixes 173

Adjust the permissions on the path of the ubuntu .kube directory for
caching purposes and other future-forward things kubernetes will do that
we're not thinking about today.

This path needs to be writable by the owner so it can create files,
temporary or otherwise, using kubectl.

Make UpdateAddonsTactic less verbose

workaround for offline installs

Turning off proxy buffering for issue #172.

chuckbutler added a commit to chuckbutler/kubernetes that referenced this issue Jan 23, 2017

squash commit
Removing the Storage plugin from the list

Update the series and the README to reflect the change.

Adds Operational Actions to the Kubernetes layer

 - pause - will cordon and drain a node forcefully
 - resume - will uncordon a node
 - microbot - Deploys a set number of pods to illustrate the operational
   actions

Fixed a grammatical error

Adds actions descriptions to the README

Updates the action descriptions for a crisper CLI output. THe longer
descriptions were word-wrapping and didn't add much value to the text.
Longer descriptions have been moved to the README.

Automated testing shouldn't bootstrap

Juju bootstrapping is an act of cost. This should be an explicit action
by the tooling surrounding bundle-tester when testing a charm. Setting
bootstrap:false will allow us to get faster feedback at lower cost when
running the kubernetes charm under ci. Additionally doesn't reset so
no communication attempt is made to the controller

Additionally add tox to test dependency list

Fixes messaging on the master unit

Removes a stale state, and now reacts when kubedns is available as it
should.

Adds templates, layer and config for the kube-master

These systemd templates assume that the kubernetes services will be
installed locally, and teh defaults files will be run through jinja2
templating.

First commit of kubernetes_master reactive code.

Adding dns templates, and making code render them.

Changing install method to prevent infinite loop.

Actually call the install command for kubectl.

Temporarily commenting out the tls bits.

Fixing the services rendering.

Adds relations and resources

Adds `kubernetes` resource
Adds etcd and http relations

Docker is no longer installed on the master node, remove the dependency on startup

Corrects the rendering of the defaults files

Adding auth and token code.

Fixing the random token generator to 32 chars.

Removing the create dir from the reactive method.

Changing the tokens that are generated.

Tweaks to the service definitions and defaults

Removes the TLS flags from the apiserver flags
tweaks the dependencies on service files for the controller-manager and
scheduler

Make systemd templates closer aligned to upstream

This refactors the systemd templates so they no longer block
application startup and are closer aligned to the systemd templates
found in the kubernetes contrib repo for the master componentry

Adds sdn-plugin interface

- I added the sdn-plugin interface, and tweaked the post-render to
  ensure we have reloaded our daemons, so systemd will quit complianing
  at us that we have changes since initial launch.

Adds the master modifications

Adds the worker layer

Cleanup per @mbruzek's review comments

patches for when resources are missing

This normalizes the states so the charm behaves accordingly when no
resources have been provided, and refactors the end-user messaging.

Application Version and minor patches

Adds the application version declarations and fixes some bad imports

Weekend exploration

Cleanup layers with FlagManager

- Cleanup syncthing botched transfer
- Refactor service/env templates to follow upstream templates
- Adds FlagManager to the master layer

Adds the kubeapi-load-balancer layer

Removed kube-dns layer in favor of shipping as master addon service

Adds DNS Addon

Adds kubedns templates
Adjusts apiserver defaults
Adds flagmanager in charms.layer.kubernetes

Tweaks to kubelet defaults

Changes private-address on kube-dns relation to sdn_ip
Adjusts kubeconfig path for kubelet

Review Comments per @mbruzek

Adjusted resource delivery to be the consitent across both
kubernetes-master and kubernetes-worker
Updated the dns template with {{ arch }} jinja declarations

normalized kube-dns states, corrected FlagManager dosctring, added arch

to dns_context rendering

Renamed config.defaults to kube-defaults.defaults for clarity

First run at adding tls client interface to master.

Removing unused kube-api interface.

Adds initial README to the worker

tls-client integration

Adds tls-client layer
Configures kubelet for certificate authentication with the master
renames ServerOpts to charms.kubernetes.flagmanager

Adds kubeconfig abstraction, tls to kube-proxy

Adds a guard to wait for at least a single worker before launching
addons

Adds kubernetes dashboard addon

Also fixes a bug when interrogating for nodes

Adds tls-client support to kubeapi-load-balancer

Adding kubeconfig code and loadbalancer interface.

Fixing typos found in state name.

Patches to resolve the functionality for routing through the
loadbalancer relation in the user credentials

Adds owner/group to install of kubectl and config

Adds port default to the loadbalancer

Replace relative path with absolute path in chwon command

Adding tls to master, worker, loadbalancer and fixing some proof errors.

Adding comments per review comment.

Adds systemctl.enable stanza to systemd units

The services were started but will not survive unit interruption,
reboots, etc. as the systemd services were not enabled on boot

Refactor out function enable_services in favor of inline calls

to subprocess.

Adding kubeconfig to the worker, fixing actions and removing templates.

Removing depreciated flag from templates.

Flag --api-servers has been deprecated, Use --kubeconfig instead. Will be removed in a future version.

Adds --require-kubeconfig flag to kubelet

This directive tells kubelet how to contact the master apiserver node(s)
during cluster turn up. This is required when not using the deprecated
--apiservers flag to the kubelet binary

DNS options were being added without flags

This will cause errors during cluster turnup without having the --'s,
they get rendered in teh manifest without their flags and instead are
interpreted as arguments to other flags.

Decorate the certificates logic to halt for tools

This patch makes the master wait until the prerequisit tools are
available before attempting to generate kubeconfig files

Remove worker caching states and re-work the user messaging

There are transient states during turn up that can be confusing to the
end user. This branch attempts to clean up those scenarios with clear
messaging to the user to set expectations.

- kubelet is waiting on cluster dns
- kubelet is not running
- kubelet needs to negotiate running the dns container with the master

Removes the caching `data_changed` stanza on the cluster certificates
management

Adds new tls-client states to guard against unwritten file race
conditions during turnup.

Standardizing status messages and removing the arch blocker.

Early work on the ingress controller. Doesn't appear to delete when
toggled, so ymmv

WIP ingress controller work

Corrected mistaken hookenv.log typos

Delay until we have the dns relationship established

This prevents the ingress controller from firing before we have established
the runtime is stable enough to receive workloads.

Refactor the kubectl run method body

Make the logic clearer than previously defined. Add guards for
pre-defined resources, and refactor the messaging so its clearer whats
happening in the logs

Remove the resource constraints on the 404 provider

Add missing parameter for kube-dns interface

Corrected reference to undefined variable in kubectl

Move the expose declaration into the manifest, and provide
default-http-backend as a service to establish endpoint routing out of
the box when ingress is enabled

Moves microbot action to the worker

Adding the icon from the Canonical design team.

Adding new icons from the Canonical design team.

Adds restart master action to cycle the control plane components

The first attempt at implementing the ceph-admin interface.

Normalizing states to use layer name.

Revert "The first attempt at implementing the ceph-admin interface."

This reverts commit 61a7e97.

Fix inotify leak by killing child processes

Removing the KillMode line to default to control-group.

Moving the sdn config to docker.

Updating messages and logging for master and worker.

Adds missing ceph.conf template, and updates render logic

The render stanza before was encapsulated in another stream writer, was
missing the target location, and had some extra error handling that
seemed unneccesary

Adds the Ceph-Admin relation and kubernetes pv creation using ceph-rbd

This is a feature branch commit rollup of:

- Adds the ceph-storage relation
- Revert "The first attempt at implementing the ceph-admin interface."
- Adds state boundaries for controlling ceph-storage
- Adds debug statements, as well as a health check for ceph

remove k8s node when unit is stopped

refactor kubectl cli interface function

Corrects linting errors and messaging grammar

Updates the action-set with grammar fix
Fixes an extended comment failing lint

Corrects a lint error

Fixes an extended comment that was failing lint

scale ingress controller to the number of kubernetes-workers

docstring for ingress scaling

scale ingress replicas as needed every update

docstrings

Adding nfs-common to the layer.yaml for master and worker.

Fixing lint errors in the worker.

Normalizing the layer.yaml file to get nfs-common

Removing nfs-common from master and load balancer, and addressing line lenght issues.

Removing tests from the individual layers.

The integration tests should be in the bundle, not the charms
because they depend on relations to other charms.

Adds ceph-common to the worker packages

Ceph-Common is a required component to interact with ceph clusters.
Adding this to the worker packages works in tandem with the
create-rbd-pv action to enlist persistent volumes from a ceph-cluster
supporting the ceph-admin interface.

Corrects typos in metdata.yaml

per https://github.com/kubernetes/kubernetes/pull/32874/files this
change set carries that patch forward into the split of master and
worker charms.

Fix bugs in create-rbd-pv

Validate name and size for create-rbd-pv action

* name and size are required
* add minLength and minimum to name and size
* rename `options:` to `params:` so the validation is picked up

rbd action size validation

flake8 fixes

decode bytestring

Fix kube-dns clusterIP

clean up variable name and comment

Fix --cluster-dns arg for kubelet

Remove the explicit SecurityContextDeny due to failures in e2e

E2E attempts to use container-level SELinux policy maps during it's
evaluation of the cluster, despite having that access control policy
disabled in the apiserver. We will never pass E2e with this enabled.

addresses:
juju-solutions/bundle-canonical-kubernetes#106

Add heapster, grafana, influxdb

Start kubelet with --cluster-dns before we deploy kube-dns

flake8 cleanup

Use templates from kubernetes repo, not heapster

use correct node count, minor code cleanup

clean up DNS stuff to reuse create_addon function

remove unnecessary creation of kube-system namespace

seems to already exist

Use `kubectl apply` instead of `kubectl create`

This allows us to "create" addons multiple times without failing.

Rename "dashboard" config to "enable-dashboard-addons"

Add enable-dashboard-addons to README

Initial commit of e2e layer

fix an error where the reset_states step runs during upgrade-charm

Prevent a loop that occurs in the dashboard steps

Adds description to the test action and skeleton readme

Implementing review feedback

run e2e tests in parallel

e2e: temporarily add serial to skip

e2e: oops

Updates to the kubernetes-master README.md

Addressing review comments, renaming restart action.

Fixing comments from @Cynerva.

e2e junit output

e2e junit output minor changes

Ammend the kubernetes-e2e kubeconfig placement with a chown stanza

Ammended the missing variable declaration

Adds logic to reset resource delivery states when upgrading the charm

Ammend last commit with docstring and missing import

Without snark...i guess.

Updating the action, and templates to get current with k8s upstream.

Adds a guard to only execute relationship events when we have a resource

address issue 122

Fixes for the kubernetes-worker microbot action

The action would fail randomly if not being explicit on the CLI when
launching microbot replicas.

Updates w/ consistent icon from the remainder of the suite

e2e ginkgo resource

flake8

Add support for node labels

Remove addon states when upgrading the charm

This will cause us to re-render addon templates and redo `kubectl apply`.
With any luck, that should do the trick!

move addons to addons folder

and build script for updating addons

Rewrite update-addons build script in python

add description and argparse

mimic "cp -v" output for copying addons, looks nicer

docstring and naming cleanup

Replace makefile with a charm build tactic

rename addons tactic

use empty placeholder templates to make the tactic work

WTF

Update addons before charmtools walks the templates folder

combine update-addon scripts and tactic, implement tactic correctly

Add docstrings to UpdateAddonsTactic

Refactor the pathing on the tar archives

Extracing junit files to 'home/ubuntu/foobar-junit/*.xml' was going to
be painful in CI, as we would have to scrub every archive that comes
from the e2e charm. This is an attempt to clean up that output pathing
by dropping the home/ubuntu portion of the path.

Removing the UUID portion of the path as well

Fix a bug with the config.previous for labels on first run

Add the 'socat' package to both worker and master

This nievely resolves
juju-solutions/bundle-canonical-kubernetes#135

Add layer-sos and a couple kubernetes SOS scripts

Rename sos -> debug

Add docker debug script

Manually pass kubeconfig to kubectl instead of running as ubuntu

Updates the test action to embed the start/end and version

This adds time from epoch to both start/finished portions of the log,
and parses the server version from kubectl output.

Add debug scripts to kubernetes-master

add kube-proxy service to kubernetes-worker debug scripts

Remove docker debug script

It belongs in layer-docker

cni - wip

hard-code CIDR

add sdn ip back into cert stuff

replace hostPort with hostNetwork for ingress

reintroduce kube-dns to master

reintroduce kube-dns to worker

fix missing kube-dns in metadata.yaml files

fix some old sdn states i missed, oops

wait for cni available before starting kubelet

clean up kubernetes-master

uncomment sdn_changed function

add container scope to kubernetes-cni relation

add service-cidr charm config

update cni.configured states

update service-cidr description

Remove loopback plugin from master

Add missing docstrings

add a warning message when service-cidr changes

add pyc files to gitignore

Update kubedns addon template names to match upstream

Wait for DNS before deploying dashboard addons

Fixing flake8 errors and using the new tactic signature.

Adding default parameters to fix signature problems.

Use verbose copy in kubernetes-master debug scripts

Use verbose copy in kubernetes-worker debug scripts

Fixes 173

Adjust the permissions on the path of the ubuntu .kube directory for
caching purposes and other future-forward things kubernetes will do that
we're not thinking about today.

This path needs to be writable by the owner so it can create files,
temporary or otherwise, using kubectl.

Make UpdateAddonsTactic less verbose

workaround for offline installs

Turning off proxy buffering for issue #172.

chuckbutler added a commit to chuckbutler/kubernetes that referenced this issue Jan 23, 2017

squash commit
Removing the Storage plugin from the list

Update the series and the README to reflect the change.

Adds Operational Actions to the Kubernetes layer

 - pause - will cordon and drain a node forcefully
 - resume - will uncordon a node
 - microbot - Deploys a set number of pods to illustrate the operational
   actions

Fixed a grammatical error

Adds actions descriptions to the README

Updates the action descriptions for a crisper CLI output. THe longer
descriptions were word-wrapping and didn't add much value to the text.
Longer descriptions have been moved to the README.

Automated testing shouldn't bootstrap

Juju bootstrapping is an act of cost. This should be an explicit action
by the tooling surrounding bundle-tester when testing a charm. Setting
bootstrap:false will allow us to get faster feedback at lower cost when
running the kubernetes charm under ci. Additionally doesn't reset so
no communication attempt is made to the controller

Additionally add tox to test dependency list

Fixes messaging on the master unit

Removes a stale state, and now reacts when kubedns is available as it
should.

Adds templates, layer and config for the kube-master

These systemd templates assume that the kubernetes services will be
installed locally, and teh defaults files will be run through jinja2
templating.

First commit of kubernetes_master reactive code.

Adding dns templates, and making code render them.

Changing install method to prevent infinite loop.

Actually call the install command for kubectl.

Temporarily commenting out the tls bits.

Fixing the services rendering.

Adds relations and resources

Adds `kubernetes` resource
Adds etcd and http relations

Docker is no longer installed on the master node, remove the dependency on startup

Corrects the rendering of the defaults files

Adding auth and token code.

Fixing the random token generator to 32 chars.

Removing the create dir from the reactive method.

Changing the tokens that are generated.

Tweaks to the service definitions and defaults

Removes the TLS flags from the apiserver flags
tweaks the dependencies on service files for the controller-manager and
scheduler

Make systemd templates closer aligned to upstream

This refactors the systemd templates so they no longer block
application startup and are closer aligned to the systemd templates
found in the kubernetes contrib repo for the master componentry

Adds sdn-plugin interface

- I added the sdn-plugin interface, and tweaked the post-render to
  ensure we have reloaded our daemons, so systemd will quit complianing
  at us that we have changes since initial launch.

Adds the master modifications

Adds the worker layer

Cleanup per @mbruzek's review comments

patches for when resources are missing

This normalizes the states so the charm behaves accordingly when no
resources have been provided, and refactors the end-user messaging.

Application Version and minor patches

Adds the application version declarations and fixes some bad imports

Weekend exploration

Cleanup layers with FlagManager

- Cleanup syncthing botched transfer
- Refactor service/env templates to follow upstream templates
- Adds FlagManager to the master layer

Adds the kubeapi-load-balancer layer

Removed kube-dns layer in favor of shipping as master addon service

Adds DNS Addon

Adds kubedns templates
Adjusts apiserver defaults
Adds flagmanager in charms.layer.kubernetes

Tweaks to kubelet defaults

Changes private-address on kube-dns relation to sdn_ip
Adjusts kubeconfig path for kubelet

Review Comments per @mbruzek

Adjusted resource delivery to be the consitent across both
kubernetes-master and kubernetes-worker
Updated the dns template with {{ arch }} jinja declarations

normalized kube-dns states, corrected FlagManager dosctring, added arch

to dns_context rendering

Renamed config.defaults to kube-defaults.defaults for clarity

First run at adding tls client interface to master.

Removing unused kube-api interface.

Adds initial README to the worker

tls-client integration

Adds tls-client layer
Configures kubelet for certificate authentication with the master
renames ServerOpts to charms.kubernetes.flagmanager

Adds kubeconfig abstraction, tls to kube-proxy

Adds a guard to wait for at least a single worker before launching
addons

Adds kubernetes dashboard addon

Also fixes a bug when interrogating for nodes

Adds tls-client support to kubeapi-load-balancer

Adding kubeconfig code and loadbalancer interface.

Fixing typos found in state name.

Patches to resolve the functionality for routing through the
loadbalancer relation in the user credentials

Adds owner/group to install of kubectl and config

Adds port default to the loadbalancer

Replace relative path with absolute path in chwon command

Adding tls to master, worker, loadbalancer and fixing some proof errors.

Adding comments per review comment.

Adds systemctl.enable stanza to systemd units

The services were started but will not survive unit interruption,
reboots, etc. as the systemd services were not enabled on boot

Refactor out function enable_services in favor of inline calls

to subprocess.

Adding kubeconfig to the worker, fixing actions and removing templates.

Removing depreciated flag from templates.

Flag --api-servers has been deprecated, Use --kubeconfig instead. Will be removed in a future version.

Adds --require-kubeconfig flag to kubelet

This directive tells kubelet how to contact the master apiserver node(s)
during cluster turn up. This is required when not using the deprecated
--apiservers flag to the kubelet binary

DNS options were being added without flags

This will cause errors during cluster turnup without having the --'s,
they get rendered in teh manifest without their flags and instead are
interpreted as arguments to other flags.

Decorate the certificates logic to halt for tools

This patch makes the master wait until the prerequisit tools are
available before attempting to generate kubeconfig files

Remove worker caching states and re-work the user messaging

There are transient states during turn up that can be confusing to the
end user. This branch attempts to clean up those scenarios with clear
messaging to the user to set expectations.

- kubelet is waiting on cluster dns
- kubelet is not running
- kubelet needs to negotiate running the dns container with the master

Removes the caching `data_changed` stanza on the cluster certificates
management

Adds new tls-client states to guard against unwritten file race
conditions during turnup.

Standardizing status messages and removing the arch blocker.

Early work on the ingress controller. Doesn't appear to delete when
toggled, so ymmv

WIP ingress controller work

Corrected mistaken hookenv.log typos

Delay until we have the dns relationship established

This prevents the ingress controller from firing before we have established
the runtime is stable enough to receive workloads.

Refactor the kubectl run method body

Make the logic clearer than previously defined. Add guards for
pre-defined resources, and refactor the messaging so its clearer whats
happening in the logs

Remove the resource constraints on the 404 provider

Add missing parameter for kube-dns interface

Corrected reference to undefined variable in kubectl

Move the expose declaration into the manifest, and provide
default-http-backend as a service to establish endpoint routing out of
the box when ingress is enabled

Moves microbot action to the worker

Adding the icon from the Canonical design team.

Adding new icons from the Canonical design team.

Adds restart master action to cycle the control plane components

The first attempt at implementing the ceph-admin interface.

Normalizing states to use layer name.

Revert "The first attempt at implementing the ceph-admin interface."

This reverts commit 61a7e97.

Fix inotify leak by killing child processes

Removing the KillMode line to default to control-group.

Moving the sdn config to docker.

Updating messages and logging for master and worker.

Adds missing ceph.conf template, and updates render logic

The render stanza before was encapsulated in another stream writer, was
missing the target location, and had some extra error handling that
seemed unneccesary

Adds the Ceph-Admin relation and kubernetes pv creation using ceph-rbd

This is a feature branch commit rollup of:

- Adds the ceph-storage relation
- Revert "The first attempt at implementing the ceph-admin interface."
- Adds state boundaries for controlling ceph-storage
- Adds debug statements, as well as a health check for ceph

remove k8s node when unit is stopped

refactor kubectl cli interface function

Corrects linting errors and messaging grammar

Updates the action-set with grammar fix
Fixes an extended comment failing lint

Corrects a lint error

Fixes an extended comment that was failing lint

scale ingress controller to the number of kubernetes-workers

docstring for ingress scaling

scale ingress replicas as needed every update

docstrings

Adding nfs-common to the layer.yaml for master and worker.

Fixing lint errors in the worker.

Normalizing the layer.yaml file to get nfs-common

Removing nfs-common from master and load balancer, and addressing line lenght issues.

Removing tests from the individual layers.

The integration tests should be in the bundle, not the charms
because they depend on relations to other charms.

Adds ceph-common to the worker packages

Ceph-Common is a required component to interact with ceph clusters.
Adding this to the worker packages works in tandem with the
create-rbd-pv action to enlist persistent volumes from a ceph-cluster
supporting the ceph-admin interface.

Corrects typos in metdata.yaml

per https://github.com/kubernetes/kubernetes/pull/32874/files this
change set carries that patch forward into the split of master and
worker charms.

Fix bugs in create-rbd-pv

Validate name and size for create-rbd-pv action

* name and size are required
* add minLength and minimum to name and size
* rename `options:` to `params:` so the validation is picked up

rbd action size validation

flake8 fixes

decode bytestring

Fix kube-dns clusterIP

clean up variable name and comment

Fix --cluster-dns arg for kubelet

Remove the explicit SecurityContextDeny due to failures in e2e

E2E attempts to use container-level SELinux policy maps during it's
evaluation of the cluster, despite having that access control policy
disabled in the apiserver. We will never pass E2e with this enabled.

addresses:
juju-solutions/bundle-canonical-kubernetes#106

Add heapster, grafana, influxdb

Start kubelet with --cluster-dns before we deploy kube-dns

flake8 cleanup

Use templates from kubernetes repo, not heapster

use correct node count, minor code cleanup

clean up DNS stuff to reuse create_addon function

remove unnecessary creation of kube-system namespace

seems to already exist

Use `kubectl apply` instead of `kubectl create`

This allows us to "create" addons multiple times without failing.

Rename "dashboard" config to "enable-dashboard-addons"

Add enable-dashboard-addons to README

Initial commit of e2e layer

fix an error where the reset_states step runs during upgrade-charm

Prevent a loop that occurs in the dashboard steps

Adds description to the test action and skeleton readme

Implementing review feedback

run e2e tests in parallel

e2e: temporarily add serial to skip

e2e: oops

Updates to the kubernetes-master README.md

Addressing review comments, renaming restart action.

Fixing comments from @Cynerva.

e2e junit output

e2e junit output minor changes

Ammend the kubernetes-e2e kubeconfig placement with a chown stanza

Ammended the missing variable declaration

Adds logic to reset resource delivery states when upgrading the charm

Ammend last commit with docstring and missing import

Without snark...i guess.

Updating the action, and templates to get current with k8s upstream.

Adds a guard to only execute relationship events when we have a resource

address issue 122

Fixes for the kubernetes-worker microbot action

The action would fail randomly if not being explicit on the CLI when
launching microbot replicas.

Updates w/ consistent icon from the remainder of the suite

e2e ginkgo resource

flake8

Add support for node labels

Remove addon states when upgrading the charm

This will cause us to re-render addon templates and redo `kubectl apply`.
With any luck, that should do the trick!

move addons to addons folder

and build script for updating addons

Rewrite update-addons build script in python

add description and argparse

mimic "cp -v" output for copying addons, looks nicer

docstring and naming cleanup

Replace makefile with a charm build tactic

rename addons tactic

use empty placeholder templates to make the tactic work

WTF

Update addons before charmtools walks the templates folder

combine update-addon scripts and tactic, implement tactic correctly

Add docstrings to UpdateAddonsTactic

Refactor the pathing on the tar archives

Extracing junit files to 'home/ubuntu/foobar-junit/*.xml' was going to
be painful in CI, as we would have to scrub every archive that comes
from the e2e charm. This is an attempt to clean up that output pathing
by dropping the home/ubuntu portion of the path.

Removing the UUID portion of the path as well

Fix a bug with the config.previous for labels on first run

Add the 'socat' package to both worker and master

This nievely resolves
juju-solutions/bundle-canonical-kubernetes#135

Add layer-sos and a couple kubernetes SOS scripts

Rename sos -> debug

Add docker debug script

Manually pass kubeconfig to kubectl instead of running as ubuntu

Updates the test action to embed the start/end and version

This adds time from epoch to both start/finished portions of the log,
and parses the server version from kubectl output.

Add debug scripts to kubernetes-master

add kube-proxy service to kubernetes-worker debug scripts

Remove docker debug script

It belongs in layer-docker

cni - wip

hard-code CIDR

add sdn ip back into cert stuff

replace hostPort with hostNetwork for ingress

reintroduce kube-dns to master

reintroduce kube-dns to worker

fix missing kube-dns in metadata.yaml files

fix some old sdn states i missed, oops

wait for cni available before starting kubelet

clean up kubernetes-master

uncomment sdn_changed function

add container scope to kubernetes-cni relation

add service-cidr charm config

update cni.configured states

update service-cidr description

Remove loopback plugin from master

Add missing docstrings

add a warning message when service-cidr changes

add pyc files to gitignore

Update kubedns addon template names to match upstream

Wait for DNS before deploying dashboard addons

Fixing flake8 errors and using the new tactic signature.

Adding default parameters to fix signature problems.

Use verbose copy in kubernetes-master debug scripts

Use verbose copy in kubernetes-worker debug scripts

Fixes 173

Adjust the permissions on the path of the ubuntu .kube directory for
caching purposes and other future-forward things kubernetes will do that
we're not thinking about today.

This path needs to be writable by the owner so it can create files,
temporary or otherwise, using kubectl.

Make UpdateAddonsTactic less verbose

workaround for offline installs

Turning off proxy buffering for issue #172.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment