Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Run and Hook sockets over TLS with token authorization for CAAS #10606

Merged
merged 1 commit into from Sep 13, 2019

Conversation

hpidcock
Copy link
Member

@hpidcock hpidcock commented Sep 5, 2019

Run and Hook sockets over TLS with token authorization for CAAS

Adds encryption and authentication to CAAS juju-run and jujuc connections.

  • juju-run multiplex server listens on TCP+TLS
  • juju-run local listener per uniter on unix socket
  • jujuc listener per hook context either over TCP+TLS or unix socket
  • x509 certificates generated by apiserver on request from
    caasoperatorprovisioner and injected into operator config map
  • juju-run auth token generated per unit and store in operator.yaml alongside
    ca.crt file (controller's CA cert)
  • jujuc listner pass token via hook env vars & ca cert filename passed
    by env var
  • caasoperatorprovisioner updates existing operators with certificates
  • increase rsa key size to 3072 bits to future proof past 2030

QA steps

make microk8s-operator-update
export JUJU_DEV_FEATURE_FLAGS=developer-mode
juju bootstrap microk8s
juju deploy cs:~juju/redis-k8s-1
$ juju exec --unit redis-k8s/0 hostname
redis-k8s-645fdf557-hrkcm
$ juju exec --unit redis-k8s/0 status-set active "hello from unit"
$ juju status | grep redis-k8s/0
redis-k8s/0*  active    idle   10.1.1.20  6379/TCP  hello from unit
$ microk8s.kubectl --namespace controller-microk8s-localhost exec redis-k8s-645fdf557-hrkcm -- juju-run redis-k8s/0 "status-set active 'hello from unit via juju-run on the unit'"
$ juju status | grep redis-k8s/0
redis-k8s/0*  active    idle   10.1.1.20  6379/TCP  hello from unit via juju-run on the unit
$ juju exec --unit redis-k8s/0 --operator hostname
redis-k8s-operator-0
$ juju exec --unit redis-k8s/0 --operator status-set active "hello from operator"
$ juju status | grep redis-k8s/0
redis-k8s/0*  active    idle   10.1.1.20  6379/TCP  hello from operator
$ microk8s.kubectl --namespace controller-microk8s-localhost exec redis-k8s-operator-0 -- juju-run redis-k8s/0 "status-set active 'hello from unit via juju-run on the operator'"
$ juju status | grep redis-k8s/0
redis-k8s/0*  active    idle   10.1.1.20  6379/TCP  hello from unit via juju-run on the operator

Documentation changes

N/A

Bug reference

https://bugs.launchpad.net/juju/+bug/1837841

caas/kubernetes/provider/exec/exec.go Outdated Show resolved Hide resolved
caas/kubernetes/provider/k8s.go Show resolved Hide resolved
cmd/jujud/main.go Outdated Show resolved Hide resolved
worker/caasoperator/action.go Outdated Show resolved Hide resolved
@hpidcock hpidcock marked this pull request as ready for review September 11, 2019 07:37
Copy link
Member

@wallyworld wallyworld left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good, thanks!

agent/agent.go Outdated Show resolved Hide resolved
api/caasoperatorprovisioner/client.go Outdated Show resolved Hide resolved
api/caasoperatorprovisioner/client_test.go Show resolved Hide resolved
caas/kubernetes/provider/k8s.go Outdated Show resolved Hide resolved
cmd/jujud/main.go Outdated Show resolved Hide resolved
worker/meterstatus/runner.go Outdated Show resolved Hide resolved
worker/uniter/paths.go Show resolved Hide resolved
worker/uniter/paths.go Outdated Show resolved Hide resolved
worker/caasoperatorprovisioner/worker.go Show resolved Hide resolved
agent/agent.go Outdated Show resolved Hide resolved
@hpidcock
Copy link
Member Author

$$merge$$

- juju-run multiplex server listens on TCP+TLS
- juju-run local listener per uniter on unix socket
- jujuc listener per hook context either over TCP+TLS or unix socket
- x509 certificates generated by apiserver on request from
caasoperatorprovisioner and injected into operator config map
- juju-run auth token generated per unit and store in operator.yaml alongside
ca.crt file (controller's CA cert)
- jujuc listner pass token via hook env vars & ca cert filename passed
by env var
- caasoperatorprovisioner updates existing operators with certificates
- increase rsa key size to 3072 bits to future proof past 2030
@hpidcock
Copy link
Member Author

$$merge$$

@jujubot jujubot merged commit f367b53 into juju:develop Sep 13, 2019
@hpidcock hpidcock deleted the tls branch November 15, 2019 01:51
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
3 participants