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

Add --ca-cert & --ca-key flags to swarm init #137

Open
wants to merge 1 commit into
base: master
Choose a base branch
from

Conversation

darkowlzz
Copy link
Contributor

Add --ca-cert and --ca-key flags to docker swarm init and merge rootCACert and rootCAKey with the swarm spec, which is sent to the docker daemon.

Signed-off-by: Sunny Gogoi me@darkowlzz.space

Refer moby/moby#33385

Signed-off-by: Sunny Gogoi <me@darkowlzz.space>
@darkowlzz
Copy link
Contributor Author

circleci continues to load forever at Lint stage. Won't show what the issue is 🤷‍♀️

@dnephin
Copy link
Contributor

dnephin commented May 30, 2017

I see the issue in the output in 3 of 4:

cli/command/swarm/opts.go:257: opts.rootCACert undefined (type *swarmOptions has no field or method rootCACert)
cli/command/swarm/opts.go:260: opts.rootCAKey undefined (type *swarmOptions has no field or method rootCAKey)

@darkowlzz
Copy link
Contributor Author

darkowlzz commented May 30, 2017

@dnephin thanks. I got this error earlier and fixed it but forgot to push the changed code 😅
Pushed now as part of the same commit.

@codecov-io
Copy link

codecov-io commented May 30, 2017

Codecov Report

Merging #137 into master will increase coverage by 0.02%.
The diff coverage is 33.33%.

@@            Coverage Diff             @@
##           master     #137      +/-   ##
==========================================
+ Coverage   44.82%   44.85%   +0.02%     
==========================================
  Files         169      169              
  Lines       11360    11366       +6     
==========================================
+ Hits         5092     5098       +6     
+ Misses       5978     5976       -2     
- Partials      290      292       +2

@aaronlehmann
Copy link
Contributor

ping @cyli

I don't think having CACert / CAKey in the spec avoids generating a new root cert/key on initial startup in the current swarmkit code, but maybe I'm missing something?

@cyli
Copy link
Contributor

cyli commented Jun 2, 2017

@aaronlehmann No, it doesn't - because in swarmkit, the Node configuration does not take a swarm spec. I believe moby/moby on init creates a new node and then immediately does an UpdateCluster on the swarm API, so it will basically rotate the root CA cert after the swarmkit code generates its own.

I don't particularly see anything wrong for that (but I could be missing an edge case) - it'd be the same as initializing and then immediately rotating.

If we wanted to avoid having the first node generate a cert/key at all, we're probably going to have to make more extensive changes in the swarmkit code.

@aaronlehmann
Copy link
Contributor

aaronlehmann commented Jun 2, 2017 via email

@cyli
Copy link
Contributor

cyli commented Jun 2, 2017

On the other hand, it might expose us to race conditions where joining nodes might see the old CA first.

That's true, or they get a join token that will be immediately invalidated. Another possible option is that in the moby/moby logic, on init it waits until the rotation is done before returning successfully.

While my preference is to get the daemon/swarmkit fixed up first before the CLI changes, they can technically happen in any order. If the CLI changes came first the daemon/swarmkit changes would be fixing any race condition that may crop up.

@thaJeztah
Copy link
Member

what's the status on this one?

trapier pushed a commit to trapier/cli that referenced this pull request Sep 30, 2019
…-19.03-2432af701a7973ea582196b4b9488831156f3458

[19.03] sync to upstream 19.03 2432af7
thaJeztah added a commit to thaJeztah/cli that referenced this pull request Jun 30, 2020
full diff: mitchellh/mapstructure@v1.0.0...v1.3.2

v1.3.2
- Decode into interface type with a struct value is supported [dockerGH-187]

v1.3.1
- Squash should only squash embedded structs. [dockerGH-194]

v1.3.0
- Added `",omitempty"` support. This will ignore zero values in the source
  structure when encoding. [dockerGH-145]

v1.2.3
- Fix duplicate entries in Keys list with pointer values. [dockerGH-185]

v1.2.2
- Do not add unsettable (unexported) values to the unused metadata key
  or "remain" value. [dockerGH-150]

v1.2.1
- Go modules checksum mismatch fix

v1.2.0
- Added support to capture unused values in a field using the `",remain"` value
  in the mapstructure tag. There is an example to showcase usage.
- Added `DecoderConfig` option to always squash embedded structs
- `json.Number` can decode into `uint` types
- Empty slices are preserved and not replaced with nil slices
- Fix panic that can occur in when decoding a map into a nil slice of structs
- Improved package documentation for godoc

v1.1.2
- Fix error when decode hook decodes interface implementation into interface
  type. [dockerGH-140]

v1.1.1
- Fix panic that can happen in `decodePtr`

v1.1.0

- Added `StringToIPHookFunc` to convert `string` to `net.IP` and `net.IPNet` [dockerGH-133]
- Support struct to struct decoding [dockerGH-137]
- If source map value is nil, then destination map value is nil (instead of empty)
- If source slice value is nil, then destination slice value is nil (instead of empty)
- If source pointer is nil, then destination pointer is set to nil (instead of
  allocated zero value of type)

Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
thaJeztah added a commit to thaJeztah/cli that referenced this pull request Jun 30, 2020
full diff: mitchellh/mapstructure@v1.0.0...v1.3.2

v1.3.2
- Decode into interface type with a struct value is supported dockerGH-187

v1.3.1
- Squash should only squash embedded structs. dockerGH-194

v1.3.0
- Added `",omitempty"` support. This will ignore zero values in the source
  structure when encoding. dockerGH-145

v1.2.3
- Fix duplicate entries in Keys list with pointer values. dockerGH-185

v1.2.2
- Do not add unsettable (unexported) values to the unused metadata key
  or "remain" value. dockerGH-150

v1.2.1
- Go modules checksum mismatch fix

v1.2.0
- Added support to capture unused values in a field using the `",remain"` value
  in the mapstructure tag. There is an example to showcase usage.
- Added `DecoderConfig` option to always squash embedded structs
- `json.Number` can decode into `uint` types
- Empty slices are preserved and not replaced with nil slices
- Fix panic that can occur in when decoding a map into a nil slice of structs
- Improved package documentation for godoc

v1.1.2
- Fix error when decode hook decodes interface implementation into interface
  type. dockerGH-140

v1.1.1
- Fix panic that can happen in `decodePtr`

v1.1.0

- Added `StringToIPHookFunc` to convert `string` to `net.IP` and `net.IPNet` dockerGH-133
- Support struct to struct decoding dockerGH-137
- If source map value is nil, then destination map value is nil (instead of empty)
- If source slice value is nil, then destination slice value is nil (instead of empty)
- If source pointer is nil, then destination pointer is set to nil (instead of
  allocated zero value of type)

Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

7 participants