Skip to content

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

Open
darkowlzz wants to merge 1 commit into
docker:masterfrom
darkowlzz:swarm-init-external-ca
Open

Add --ca-cert & --ca-key flags to swarm init#137
darkowlzz wants to merge 1 commit into
docker:masterfrom
darkowlzz:swarm-init-external-ca

Conversation

@darkowlzz

Copy link
Copy Markdown
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
Copy Markdown
ContributorAuthor

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

@dnephin

Copy link
Copy Markdown
Contributor

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

darkowlzz commented May 30, 2017

Copy link
Copy Markdown
ContributorAuthor

@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

codecov-io commented May 30, 2017

Copy link
Copy Markdown

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
Copy Markdown

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

cyli commented Jun 2, 2017

Copy link
Copy Markdown
Contributor

@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

aaronlehmann commented Jun 2, 2017 via email

Copy link
Copy Markdown

@cyli

cyli commented Jun 2, 2017

Copy link
Copy Markdown
Contributor

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
Copy Markdown
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>
nobiit pushed a commit to nobidev/docker-cli that referenced this pull request Nov 19, 2025
…_11_40_41
[17.07] Cherry pick latest packaging commits
Sign up for freeto 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

@darkowlzz@dnephin@codecov-io@aaronlehmann@cyli@thaJeztah@GordonTheTurtle