Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in
Toggle navigation
Menu
Open sidebar
小 白蛋
Rke
Commits
329b6b52
Commit
329b6b52
authored
5 years ago
by
XianglongLuo
Browse files
Options
Download
Email Patches
Plain Diff
Fix for deleting unused etcd and kubelet certs
parent
98816087
release/v1.3
1.2.5
enable_fossa
githubaction-go-generate-2022-01-19-14-09-53
githubaction-go-generate-2022-01-19-16-59-09
githubaction-go-generate-2022-02-02-16-53-10
githubaction-go-generate-2022-03-19-01-55-24
githubaction-go-generate-2022-03-19-02-28-40
githubaction-go-generate-2022-03-24-18-41-17
githubaction-go-generate-2022-03-24-19-00-43
githubaction-go-generate-2022-04-27-01-07-30
githubaction-go-generate-2022-04-27-16-36-37
githubaction-go-generate-2022-04-28-23-21-04
githubaction-go-generate-2022-04-29-00-20-33
githubaction-go-generate-2022-04-29-03-20-39
githubaction-go-generate-2022-04-29-03-34-38
githubaction-go-generate-2022-05-05-16-15-24
githubaction-go-generate-2022-05-06-15-36-45
githubaction-go-generate-2022-05-06-21-32-47
kinarashah-patch-1
label-opened-issues
master
rancherbot_port_2796_release/v1.2_6efce927fbafb32468ad2dc45acb64511f4a6f31
release/v1.1
release/v1.1.10
release/v1.1.13
release/v1.1.2
release/v1.2
release/v1.2.1
revert-2326-rotate-encryption-keys
revert-2374-revert-2326-rotate-encryption-keys
revert-2541-no_selinux_relabel
wg-10699
v1.3.11-rc2
v1.3.11-rc1
v1.3.10
v1.3.10-rc7
v1.3.10-rc6
v1.3.10-rc5
v1.3.10-rc4
v1.3.10-rc3
v1.3.10-rc2
v1.3.10-rc1
v1.3.9
v1.3.9-rc1
v1.3.8
v1.3.8-rc12
v1.3.8-rc11
v1.3.8-rc10
v1.3.8-rc9
v1.3.8-rc8
v1.3.8-rc7
v1.3.8-rc6
v1.3.8-rc5
v1.3.8-rc4
v1.3.8-rc3
v1.3.8-rc2
v1.3.8-rc1
v1.3.7
v1.3.7-rc1
v1.3.6
v1.3.6-rc1
v1.3.5
v1.3.5-rc1
v1.3.5-alpha1
v1.3.4
v1.3.4-rc1
v1.3.3
v1.3.3-rc6
v1.3.3-rc5
v1.3.3-rc4
v1.3.3-rc3
v1.3.3-rc2
v1.3.3-rc1
v1.3.2
v1.3.2-rc2
v1.3.2-rc1
v1.3.1
v1.3.1-rc1
v1.3.0
v1.3.0-rc20
v1.3.0-rc19
v1.3.0-rc18
v1.3.0-rc17
v1.3.0-rc16
v1.3.0-rc15
v1.3.0-rc14
v1.3.0-rc13
v1.3.0-rc12
v1.3.0-rc11
v1.3.0-rc10
v1.3.0-rc9
v1.3.0-rc8
v1.3.0-rc7
v1.3.0-rc6
v1.3.0-rc5
v1.3.0-rc4
v1.3.0-rc3
v1.3.0-rc2
v1.3.0-rc1
v1.2.20
v1.2.20-rc1
v1.2.19
v1.2.19-rc4
v1.2.19-rc3
v1.2.19-rc2
v1.2.19-rc1
v1.2.18
v1.2.18-rc1
v1.2.17
v1.2.17-rc1
v1.2.16
v1.2.16-rc1
v1.2.15
v1.2.15-rc1
v1.2.14
v1.2.14-rc2
v1.2.14-rc1
v1.2.13
v1.2.13-rc2
v1.2.13-rc1
v1.2.12
v1.2.12-rc1
v1.2.11
v1.2.11-rc0
v1.2.10
v1.2.10-rc0
v1.2.9
v1.2.9-rc2
v1.2.9-rc1
v1.2.8
v1.2.8-rc4
v1.2.8-rc3
v1.2.8-rc2
v1.2.8-rc1
v1.2.7
v1.2.7-rc1
v1.2.6
v1.2.6-rc6
v1.2.6-rc5
v1.2.6-rc4
v1.2.6-rc3
v1.2.6-rc2
v1.2.6-rc1
v1.2.5
v1.2.5-rc2
v1.2.5-rc1
v1.2.4
v1.2.4-rc9
v1.2.4-rc8
v1.2.4-rc7
v1.2.4-rc6
v1.2.4-rc5
v1.2.4-rc4
v1.2.4-rc3
v1.2.4-rc2
v1.2.4-rc1
v1.2.3
v1.2.3-rc1
v1.2.2
v1.2.2-rc6
v1.2.2-rc5
v1.2.2-rc4
v1.2.2-rc3
v1.2.2-rc2
v1.2.2-rc1
v1.2.1
v1.2.1-rc1
v1.2.0
v1.2.0-rc17
v1.2.0-rc16
v1.2.0-rc15
v1.2.0-rc14
v1.2.0-rc13
v1.2.0-rc12
v1.2.0-rc11
v1.2.0-rc10
v1.2.0-rc9
v1.2.0-rc8
v1.2.0-rc7
v1.2.0-rc6
v1.2.0-rc5
v1.2.0-rc4
v1.2.0-rc3
v1.2.0-rc2
v1.2.0-rc1
v1.1.19
v1.1.19-rc1
v1.1.18
v1.1.18-rc2
v1.1.18-rc1
v1.1.17
v1.1.17-rc2
v1.1.17-rc1
v1.1.16
v1.1.16-rc1
v1.1.15
v1.1.15-rc4
v1.1.15-rc3
v1.1.15-rc2
v1.1.15-rc1
v1.1.14
v1.1.14-rc3
v1.1.14-rc2
v1.1.14-rc1
v1.1.13
v1.1.13-rc3
v1.1.13-rc2
v1.1.13-rc1
v1.1.12
v1.1.12-rc1
v1.1.11
v1.1.11-rc6
v1.1.11-rc5
v1.1.11-rc4
v1.1.11-rc3
v1.1.11-rc2
v1.1.11-rc1
v1.1.10
v1.1.10-rc1
v1.1.9
v1.1.9-rc3
v1.1.9-rc2
v1.1.9-rc1
v1.1.8-rc1
v1.1.7
v1.1.6
v1.1.5
v1.1.5-rc9
v1.1.5-rc8
v1.1.5-rc7
v1.1.5-rc6
v1.1.5-rc5
v1.1.5-rc4
v1.1.5-rc3
v1.1.5-rc2
v1.1.5-rc1
v1.1.4
v1.1.4-rc2
v1.1.4-rc1
v1.1.3
v1.1.3-rc6
v1.1.3-rc5
v1.1.3-rc4
v1.1.3-rc3
v1.1.3-rc2
v1.1.3-rc1
v1.1.2
v1.1.2-rc4
v1.1.2-rc3
v1.1.2-rc1
v1.1.1
v1.1.1-rc1
v1.1.0
v1.1.0-rc19
v1.1.0-rc18
v1.1.0-rc17
v1.1.0-rc16
v1.1.0-rc15
v1.1.0-rc14
v1.1.0-rc13
v1.1.0-rc12
v1.1.0-rc11
v1.1.0-rc10
v1.1.0-rc9
v1.1.0-rc8
v1.1.0-rc7
v1.0.7-rc1
No related merge requests found
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
pki/services.go
+32
-1
pki/services.go
pki/services_test.go
+142
-0
pki/services_test.go
with
174 additions
and
1 deletion
+174
-1
pki/services.go
+
32
-
1
View file @
329b6b52
...
...
@@ -6,6 +6,7 @@ import (
"fmt"
"reflect"
"sort"
"strings"
"github.com/rancher/rke/hosts"
"github.com/rancher/rke/log"
...
...
@@ -370,7 +371,6 @@ func GenerateEtcdCertificates(ctx context.Context, certs map[string]CertificateP
ips
=
append
(
ips
,
ip
.
String
())
}
sort
.
Strings
(
ips
)
for
_
,
host
:=
range
etcdHosts
{
etcdName
:=
GetCrtNameForHost
(
host
,
EtcdCertName
)
if
_
,
ok
:=
certs
[
etcdName
];
ok
&&
certs
[
etcdName
]
.
CertificatePEM
!=
""
&&
!
rotate
{
...
...
@@ -403,6 +403,8 @@ func GenerateEtcdCertificates(ctx context.Context, certs map[string]CertificateP
}
certs
[
etcdName
]
=
ToCertObject
(
etcdName
,
""
,
""
,
etcdCrt
,
etcdKey
,
nil
)
}
log
.
Debugf
(
ctx
,
"Checking and deleting unused etcd certificates, current etcd nodes are: %v"
,
etcdHosts
)
deleteUnusedCerts
(
ctx
,
certs
,
EtcdCertName
,
etcdHosts
)
return
nil
}
...
...
@@ -516,6 +518,8 @@ func GenerateKubeletCertificate(ctx context.Context, certs map[string]Certificat
}
certs
[
kubeletName
]
=
ToCertObject
(
kubeletName
,
""
,
""
,
kubeletCrt
,
kubeletKey
,
nil
)
}
log
.
Debugf
(
ctx
,
"Checking and deleting unused kubelet certificates, current nodes are : %v"
,
allHosts
)
deleteUnusedCerts
(
ctx
,
certs
,
KubeletCertName
,
allHosts
)
return
nil
}
...
...
@@ -555,6 +559,15 @@ func GenerateRKEServicesCerts(ctx context.Context, certs map[string]CertificateP
}
if
IsKubeletGenerateServingCertificateEnabledinConfig
(
&
rkeConfig
)
{
RKECerts
=
append
(
RKECerts
,
GenerateKubeletCertificate
)
}
else
{
//Clean up kubelet certs when GenerateServingCertificate is disabled
log
.
Infof
(
ctx
,
"[certificates] GenerateServingCertificate is disabled, checking if there are unused kubelet certificates"
)
for
k
:=
range
certs
{
if
strings
.
HasPrefix
(
k
,
KubeletCertName
)
{
log
.
Infof
(
ctx
,
"[certificates] Deleting unused kubelet certificate: %s"
,
k
)
delete
(
certs
,
k
)
}
}
}
for
_
,
gen
:=
range
RKECerts
{
if
err
:=
gen
(
ctx
,
certs
,
rkeConfig
,
configPath
,
configDir
,
rotate
);
err
!=
nil
{
...
...
@@ -588,3 +601,21 @@ func GenerateRKEServicesCSRs(ctx context.Context, certs map[string]CertificatePK
}
return
nil
}
func
deleteUnusedCerts
(
ctx
context
.
Context
,
certs
map
[
string
]
CertificatePKI
,
certName
string
,
hosts
[]
*
hosts
.
Host
)
{
log
.
Infof
(
ctx
,
"[certificates] Checking and deleting unused %s certificates"
,
certName
)
unusedCerts
:=
make
(
map
[
string
]
bool
)
for
k
:=
range
certs
{
if
strings
.
HasPrefix
(
k
,
certName
)
{
unusedCerts
[
k
]
=
true
}
}
for
_
,
host
:=
range
hosts
{
Name
:=
GetCrtNameForHost
(
host
,
certName
)
delete
(
unusedCerts
,
Name
)
}
for
k
:=
range
unusedCerts
{
log
.
Infof
(
ctx
,
"[certificates] Deleting unused certificate: %s"
,
k
)
delete
(
certs
,
k
)
}
}
This diff is collapsed.
Click to expand it.
pki/services_test.go
0 → 100644
+
142
-
0
View file @
329b6b52
package
pki
import
(
"context"
"github.com/rancher/rke/hosts"
v3
"github.com/rancher/types/apis/management.cattle.io/v3"
"github.com/stretchr/testify/assert"
"reflect"
"testing"
)
func
TestDeleteUnusedCerts
(
t
*
testing
.
T
)
{
tests
:=
[]
struct
{
ctx
context
.
Context
name
string
certs
map
[
string
]
CertificatePKI
certName
string
hosts
[]
*
hosts
.
Host
expectLeftCerts
map
[
string
]
CertificatePKI
}{
{
ctx
:
context
.
Background
(),
name
:
"Keep valid etcd certs"
,
certs
:
map
[
string
]
CertificatePKI
{
"kube-etcd-172-17-0-3"
:
CertificatePKI
{},
"kube-etcd-172-17-0-4"
:
CertificatePKI
{},
"kube-node"
:
CertificatePKI
{},
"kube-kubelet-172-17-0-4"
:
CertificatePKI
{},
"kube-apiserver"
:
CertificatePKI
{},
"kube-proxy"
:
CertificatePKI
{},
},
certName
:
EtcdCertName
,
hosts
:
[]
*
hosts
.
Host
{
{
RKEConfigNode
:
v3
.
RKEConfigNode
{
Address
:
"172.17.0.3"
,
}},
{
RKEConfigNode
:
v3
.
RKEConfigNode
{
Address
:
"172.17.0.4"
,
}},
},
expectLeftCerts
:
map
[
string
]
CertificatePKI
{
"kube-etcd-172-17-0-3"
:
CertificatePKI
{},
"kube-etcd-172-17-0-4"
:
CertificatePKI
{},
"kube-node"
:
CertificatePKI
{},
"kube-kubelet-172-17-0-4"
:
CertificatePKI
{},
"kube-apiserver"
:
CertificatePKI
{},
"kube-proxy"
:
CertificatePKI
{},
},
},
{
ctx
:
context
.
Background
(),
name
:
"Keep valid kubelet certs"
,
certs
:
map
[
string
]
CertificatePKI
{
"kube-kubelet-172-17-0-5"
:
CertificatePKI
{},
"kube-kubelet-172-17-0-6"
:
CertificatePKI
{},
"kube-node"
:
CertificatePKI
{},
"kube-apiserver"
:
CertificatePKI
{},
"kube-proxy"
:
CertificatePKI
{},
"kube-etcd-172-17-0-6"
:
CertificatePKI
{},
},
certName
:
KubeletCertName
,
hosts
:
[]
*
hosts
.
Host
{
{
RKEConfigNode
:
v3
.
RKEConfigNode
{
Address
:
"172.17.0.5"
,
}},
{
RKEConfigNode
:
v3
.
RKEConfigNode
{
Address
:
"172.17.0.6"
,
}},
},
expectLeftCerts
:
map
[
string
]
CertificatePKI
{
"kube-kubelet-172-17-0-5"
:
CertificatePKI
{},
"kube-kubelet-172-17-0-6"
:
CertificatePKI
{},
"kube-node"
:
CertificatePKI
{},
"kube-apiserver"
:
CertificatePKI
{},
"kube-proxy"
:
CertificatePKI
{},
"kube-etcd-172-17-0-6"
:
CertificatePKI
{},
},
},
{
ctx
:
context
.
Background
(),
name
:
"Remove unused etcd certs"
,
certs
:
map
[
string
]
CertificatePKI
{
"kube-etcd-172-17-0-11"
:
CertificatePKI
{},
"kube-etcd-172-17-0-10"
:
CertificatePKI
{},
"kube-kubelet-172-17-0-11"
:
CertificatePKI
{},
"kube-node"
:
CertificatePKI
{},
"kube-apiserver"
:
CertificatePKI
{},
"kube-proxy"
:
CertificatePKI
{},
},
certName
:
EtcdCertName
,
hosts
:
[]
*
hosts
.
Host
{
{
RKEConfigNode
:
v3
.
RKEConfigNode
{
Address
:
"172.17.0.11"
,
}},
{
RKEConfigNode
:
v3
.
RKEConfigNode
{
Address
:
"172.17.0.12"
,
}},
},
expectLeftCerts
:
map
[
string
]
CertificatePKI
{
"kube-etcd-172-17-0-11"
:
CertificatePKI
{},
"kube-kubelet-172-17-0-11"
:
CertificatePKI
{},
"kube-node"
:
CertificatePKI
{},
"kube-apiserver"
:
CertificatePKI
{},
"kube-proxy"
:
CertificatePKI
{},
},
},
{
ctx
:
context
.
Background
(),
name
:
"Remove unused kubelet certs"
,
certs
:
map
[
string
]
CertificatePKI
{
"kube-kubelet-172-17-0-11"
:
CertificatePKI
{},
"kube-kubelet-172-17-0-10"
:
CertificatePKI
{},
"kube-etcd-172-17-0-10"
:
CertificatePKI
{},
"kube-node"
:
CertificatePKI
{},
"kube-apiserver"
:
CertificatePKI
{},
"kube-proxy"
:
CertificatePKI
{},
},
certName
:
KubeletCertName
,
hosts
:
[]
*
hosts
.
Host
{
{
RKEConfigNode
:
v3
.
RKEConfigNode
{
Address
:
"172.17.0.11"
,
}},
{
RKEConfigNode
:
v3
.
RKEConfigNode
{
Address
:
"172.17.0.12"
,
}},
},
expectLeftCerts
:
map
[
string
]
CertificatePKI
{
"kube-kubelet-172-17-0-11"
:
CertificatePKI
{},
"kube-etcd-172-17-0-10"
:
CertificatePKI
{},
"kube-node"
:
CertificatePKI
{},
"kube-apiserver"
:
CertificatePKI
{},
"kube-proxy"
:
CertificatePKI
{},
},
},
}
for
_
,
tt
:=
range
tests
{
t
.
Run
(
tt
.
name
,
func
(
t
*
testing
.
T
)
{
deleteUnusedCerts
(
tt
.
ctx
,
tt
.
certs
,
tt
.
certName
,
tt
.
hosts
)
assert
.
Equal
(
t
,
true
,
reflect
.
DeepEqual
(
tt
.
certs
,
tt
.
expectLeftCerts
))
})
}
}
This diff is collapsed.
Click to expand it.
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment
Menu
Projects
Groups
Snippets
Help