token
, error
_ΠΠΠΠΠΠΠ‘ΠΠΠ‘Π’Π¬_ ΠΠ’Π§ΠΠ’
kubeadm
ΠΠΎΠΌΠ°Π½Π΄Π° delete
ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π²Ρ
ΠΎΠ΄Π½ΡΡ
Π΄Π°Π½Π½ΡΡ
Π»ΠΈΠ±ΠΎ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ ΡΠΎΠΊΠ΅Π½Π° Π½Π°ΡΠ°Π»ΡΠ½ΠΎΠΉ Π·Π°Π³ΡΡΠ·ΠΊΠΈ, Π»ΠΈΠ±ΠΎ ΠΏΠΎΠ»Π½ΡΠΉ ΡΠΎΠΊΠ΅Π½. ΠΡΠ΅ΠΆΠ΄Π΅ ΡΠ΅ΠΌ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ, ΡΠ²Π»ΡΠ΅ΡΡΡ Π»ΠΈ Π²Π²ΠΎΠ΄ ΠΏΡΠΎΡΡΠΎ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠΎΠΌ ΠΈΠ»ΠΈ ΠΏΠΎΠ»Π½ΡΠΌ ΡΠΎΠΊΠ΅Π½ΠΎΠΌ, kubeadm
ΡΠ΅Π³ΠΈΡΡΡΠΈΡΡΠ΅Ρ Π²Π²ΠΎΠ΄ Ρ ΠΏΠΎΠΌΠΎΡΡΡ klog
. ΠΡΠ»ΠΈ ΡΠ΄Π°Π»Π΅Π½ΠΈΠ΅ Π½Π΅ ΡΠ΄Π°ΡΡΡΡ, ΡΠΎΠΊΠ΅Π½ ΠΎΡΡΠ°Π½Π΅ΡΡΡ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΡΠΌ. ΠΠ»ΠΎΡΠΌΡΡΠ»Π΅Π½Π½ΠΈΠΊ, ΠΈΠΌΠ΅ΡΡΠΈΠΉ Π΄ΠΎΡΡΡΠΏ ΠΊ ΠΆΡΡΠ½Π°Π»Π°ΠΌ, ΠΌΠΎΠΆΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΅Π³ΠΎ Π΄Π»Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π΄Π΅ΠΉΡΡΠ²ΠΈΠΉ, ΡΡΠ΅Π±ΡΡΡΠΈΡ
ΡΠΎΠΊΠ΅Π½Π° Π½Π°ΡΠ°Π»ΡΠ½ΠΎΠΉ Π·Π°Π³ΡΡΠ·ΠΊΠΈ, ΡΠ°ΠΊΠΈΡ
ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΊΠ»Π°ΡΡΠ΅ΡΠ° ΠΈΠ»ΠΈ ΠΏΡΠΈΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅ ΡΠ·Π»ΠΎΠ² ΠΊ ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠ΅ΠΌΡ ΠΊΠ»Π°ΡΡΠ΅ΡΡ.
Π£ΡΠ·Π²ΠΈΠΌΡΠΉ ΠΊΠΎΠ΄ ΠΏΡΠΈΡΡΡΡΡΠ²ΡΠ΅Ρ Π² kubernetes 1.19. ΠΠΎΠ½ΠΊΡΠ΅ΡΠ½Π°Ρ ΡΡΡΠΎΠΊΠ°, ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠ°Ρ Π²ΡΠ·ΠΎΠ² klog
ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠΉ ΡΠ°Π· ΡΠ΅Π΄Π°ΠΊΡΠΈΡΠΎΠ²Π°Π»Π°ΡΡ 24 ΠΌΠ°ΡΡΠ° 2019 Π³.
Π£ΡΠ·Π²ΠΈΠΌΡΠΉ ΠΊΠΎΠ΄ Π½Π°Ρ
ΠΎΠ΄ΠΈΡΡΡ Π² ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΈ github.com/kubernetes
, Π² ΡΠ°ΠΉΠ»Π΅ kubernetes/cmd/kubeadm/app/cmd/token.go
, Π² ΡΡΡΠΎΠΊΠ΅ 423. ΠΠΎΡ Π²ΡΡ ΡΡΠ½ΠΊΡΠΈΡ:
// RunDeleteTokens removes a bootstrap tokens from the server.
func RunDeleteTokens(out io.Writer, client clientset.Interface, tokenIDsOrTokens []string) error {
for _, tokenIDOrToken := range tokenIDsOrTokens {
// Assume this is a token id and try to parse it
tokenID := tokenIDOrToken
klog.V(1).Infof("[token] parsing token %q", tokenIDOrToken) // POTENTIAL LEAK HERE
if !bootstraputil.IsValidBootstrapTokenID(tokenIDOrToken) {
// Okay, the full token with both id and secret was probably passed. Parse it and extract the ID only
bts, err := kubeadmapiv1beta2.NewBootstrapTokenString(tokenIDOrToken)
if err != nil {
return errors.Errorf("given token %q didn't match pattern %q or %q",
tokenIDOrToken, bootstrapapi.BootstrapTokenIDPattern, bootstrapapi.BootstrapTokenIDPattern)
}
tokenID = bts.ID
}
tokenSecretName := bootstraputil.BootstrapTokenSecretName(tokenID)
klog.V(1).Infof("[token] deleting token %q", tokenID)
if err := client.CoreV1().Secrets(metav1.NamespaceSystem).Delete(context.TODO(), tokenSecretName, metav1.DeleteOptions{}); err != nil {
return errors.Wrapf(err, "failed to delete bootstrap token %q", tokenID)
}
fmt.Fprintf(out, "bootstrap token %q deleted\n", tokenID)
}
return nil
}
Π Π²ΠΎΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ kubeadm, ΠΊΠΎΡΠΎΡΠ°Ρ Π²ΡΠ·ΡΠ²Π°Π΅Ρ ΡΡΡ ΡΡΠ½ΠΊΡΠΈΡ (Π² ΡΠΎΠΌ ΠΆΠ΅ ΡΠ°ΠΉΠ»Π΅):
deleteCmd := &cobra.Command{
Use: "delete [token-value] ...",
DisableFlagsInUseLine: true,
Short: "Delete bootstrap tokens on the server",
Long: dedent.Dedent(`
This command will delete a list of bootstrap tokens for you.
The [token-value] is the full Token of the form "[a-z0-9]{6}.[a-z0-9]{16}" or the
Token ID of the form "[a-z0-9]{6}" to delete.
`),
RunE: func(tokenCmd *cobra.Command, args []string) error {
if len(args) < 1 {
return errors.Errorf("missing subcommand; 'token delete' is missing token of form %q", bootstrapapi.BootstrapTokenIDPattern)
}
kubeConfigFile = cmdutil.GetKubeConfigPath(kubeConfigFile)
client, err := getClientset(kubeConfigFile, dryRun)
if err != nil {
return err
}
return RunDeleteTokens(out, client, args)
},
}
ΠΠ»ΠΎΡΠΌΡΡΠ»Π΅Π½Π½ΠΈΠΊ, ΠΏΠΎΠ»ΡΡΠΈΠ²ΡΠΈΠΉ ΠΌΠ°ΡΠΊΠ΅Ρ Π½Π°ΡΠ°Π»ΡΠ½ΠΎΠΉ Π·Π°Π³ΡΡΠ·ΠΊΠΈ ΠΈΠ· ΠΆΡΡΠ½Π°Π»ΠΎΠ², ΠΌΠΎΠΆΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΅Π³ΠΎ Π΄Π»Ρ Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ Ρ ΠΏΠΎΠΌΠΎΡΡΡ kubeadm
ΠΈ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ΅ΡΠ° ΠΈΠ»ΠΈ ΠΏΡΠΈΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ ΡΠ·Π»ΠΎΠ² ΠΊ ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠ΅ΠΌΡ ΠΊΠ»Π°ΡΡΠ΅ΡΡ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π΄Π»Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Π²ΡΡΠΈΡΠ»ΠΈΡΠ΅Π»ΡΠ½ΡΡ
ΡΠ΅ΡΡΡΡΠΎΠ². ΠΠ»ΠΎΡΠΌΡΡΠ»Π΅Π½Π½ΠΈΠΊ ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ Π΄ΡΡΠ³ΠΈΠ΅ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ kubeadm
, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»ΡΡΡ ΠΈΠ»ΠΈ ΡΠ΄Π°Π»ΡΡΡ Π΄ΡΡΠ³ΠΈΠ΅ ΡΠΎΠΊΠ΅Π½Ρ.
Π― ΡΠΎΠΎΠ±ΡΠΈΠ» ΠΎΠ± ΡΡΠΎΠΉ ΡΡΠ·Π²ΠΈΠΌΠΎΡΡΠΈ Π² HackerOne, ΠΈ ΠΎΠ½ΠΈ ΡΠΎΠΎΠ±ΡΠΈΠ»ΠΈ ΠΌΠ½Π΅, ΡΡΠΎ, ΠΈΡΡ ΠΎΠ΄Ρ ΠΈΠ· Π²ΡΡΠΎΠΊΠΎΠΉ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΠΈ ΠΈ Π½ΠΈΠ·ΠΊΠΎΠΉ ΡΠ΅ΡΡΠ΅Π·Π½ΠΎΡΡΠΈ Π°ΡΠ°ΠΊΠΈ, ΠΎΠ½ΠΈ Π΄ΡΠΌΠ°ΡΡ, ΡΡΠΎ ΠΎΠ± ΡΡΠΎΠΌ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠΎΠ±ΡΠΈΡΡ ΠΈ ΠΈΡΠΏΡΠ°Π²ΠΈΡΡ ΠΏΡΠ±Π»ΠΈΡΠ½ΠΎ.
Π― ΠΎΡΠΊΡΡΠ» PR Π½Π° kubernetes, ΡΠ΅Π°Π»ΠΈΠ·ΡΡΡΠΈΠΉ ΠΈΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅: https://github.com/kubernetes/kubernetes/pull/94727
ΠΠΎΠΌΠ°Π½Π΄Π° ΡΠ΄Π°Π»Π΅Π½ΠΈΡ kubeadm ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π²Ρ ΠΎΠ΄Π½ΡΡ Π΄Π°Π½Π½ΡΡ Π»ΠΈΠ±ΠΎ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ ΡΠΎΠΊΠ΅Π½Π° Π½Π°ΡΠ°Π»ΡΠ½ΠΎΠΉ Π·Π°Π³ΡΡΠ·ΠΊΠΈ, Π»ΠΈΠ±ΠΎ ΠΏΠΎΠ»Π½ΡΠΉ ΡΠΎΠΊΠ΅Π½. ΠΡΠ΅ΠΆΠ΄Π΅ ΡΠ΅ΠΌ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ, ΡΠ²Π»ΡΠ΅ΡΡΡ Π»ΠΈ Π²Π²ΠΎΠ΄ ΠΏΡΠΎΡΡΠΎ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠΎΠΌ ΠΈΠ»ΠΈ ΠΏΠΎΠ»Π½ΡΠΌ ΡΠΎΠΊΠ΅Π½ΠΎΠΌ, kubeadm ΡΠ΅Π³ΠΈΡΡΡΠΈΡΡΠ΅Ρ Π²Π²ΠΎΠ΄ Ρ ΠΏΠΎΠΌΠΎΡΡΡ klog. ΠΡΠ»ΠΈ ΡΠ΄Π°Π»Π΅Π½ΠΈΠ΅ Π½Π΅ ΡΠ΄Π°ΡΡΡΡ, ΡΠΎΠΊΠ΅Π½ ΠΎΡΡΠ°Π½Π΅ΡΡΡ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΡΠΌ. ΠΠ»ΠΎΡΠΌΡΡΠ»Π΅Π½Π½ΠΈΠΊ, ΠΈΠΌΠ΅ΡΡΠΈΠΉ Π΄ΠΎΡΡΡΠΏ ΠΊ ΠΆΡΡΠ½Π°Π»Π°ΠΌ, ΠΌΠΎΠΆΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΅Π³ΠΎ Π΄Π»Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π΄Π΅ΠΉΡΡΠ²ΠΈΠΉ, ΡΡΠ΅Π±ΡΡΡΠΈΡ ΡΠΎΠΊΠ΅Π½Π° Π½Π°ΡΠ°Π»ΡΠ½ΠΎΠΉ Π·Π°Π³ΡΡΠ·ΠΊΠΈ, ΡΠ°ΠΊΠΈΡ ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΊΠ»Π°ΡΡΠ΅ΡΠ° ΠΈΠ»ΠΈ ΠΏΡΠΈΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅ ΡΠ·Π»ΠΎΠ² ΠΊ ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠ΅ΠΌΡ ΠΊΠ»Π°ΡΡΠ΅ΡΡ.
ΠΏΡΠΈΠ²Π΅Ρ, ΠΈ ΡΠΏΠ°ΡΠΈΠ±ΠΎ, ΡΡΠΎ Π·Π°ΡΠ΅Π³ΠΈΡΡΡΠΈΡΠΎΠ²Π°Π»ΠΈ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ. ΡΡΠΎΠ±Ρ ΠΈΠΌΠ΅ΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΡΠΈΡΠ°ΡΡ ΡΠ°ΠΊΠΈΠ΅ ΠΆΡΡΠ½Π°Π»Ρ, Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΠΌΠ΅ΡΡ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΡΠ΅ ΠΏΡΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΠΈ, ΠΈ Ρ ΠΏΡΠ΅Π΄ΠΏΠΎΠ»Π°Π³Π°Ρ, ΡΡΠΎ ΠΆΡΡΠ½Π°Π»Ρ Π±ΡΠ΄ΡΡ Π»ΠΈΠ±ΠΎ ΠΏΠΎΠ΄ ΠΊΠΎΡΠ½Π΅Π²ΡΠΌ Π΄ΠΎΡΡΡΠΏΠΎΠΌ, Π»ΠΈΠ±ΠΎ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»Π΅Π½Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΉ Π³ΡΡΠΏΠΏΠ΅, ΠΊΠΎΡΠΎΡΠ°Ρ ΡΠΆΠ΅ ΠΈΠΌΠ΅Π΅Ρ Π±ΠΎΠ»Π΅Π΅ Π²ΡΡΠΎΠΊΠΈΠΉ Π΄ΠΎΡΡΡΠΏ, ΡΠ΅ΠΌ ΡΠΎΠΊΠ΅Π½Ρ Π½Π°ΡΠ°Π»ΡΠ½ΠΎΠΉ Π·Π°Π³ΡΡΠ·ΠΊΠΈ.
ΡΠ°ΠΊΠΆΠ΅:
--v=>1
Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ Π²ΠΊΠ»ΡΡΠ΅Π½ Π²ΠΎ Π²ΡΠ΅ΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ kubeadm token delete
Π΅ΡΠ»ΠΈ ΡΠΎΠΊΠ΅Π½ ΠΈΠΌΠ΅Π΅Ρ Π΄ΠΎΠΏΡΡΡΠΈΠΌΡΠΉ ΡΠΎΡΠΌΠ°ΡΠ― Π΄ΡΠΌΠ°Ρ, ΡΡΠΎ ΡΠ»ΡΡΡΠ΅Π½ΠΈΠ΅ PR Π² ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΌ Π½ΠΎΡΠΌΠ°Π»ΡΠ½ΠΎΠ΅, Π½ΠΎ Ρ Π½Π΅ Π΄ΡΠΌΠ°Ρ, ΡΡΠΎ Π½Π°ΠΌ ΡΠ»Π΅Π΄ΡΠ΅Ρ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ ΠΎΠ±ΡΠ°ΡΠ½ΡΠΉ ΠΏΠ΅ΡΠ΅Π½ΠΎΡ Π½Π° Π±ΠΎΠ»Π΅Π΅ ΡΡΠ°ΡΡΠ΅ Π²Π΅ΡΡΠΈΠΈ (<1.20) ΠΈΠ·-Π·Π° ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΠΈ ΡΠ°ΠΊΠΎΠΉ Π°ΡΠ°ΠΊΠΈ.
Π― ΡΠΎΠ³Π»Π°ΡΠ΅Π½ Ρ @ neolit123, ΡΡΠΎΠ±Ρ Π½Π΅
WRT Π΄Π»Ρ ΠΈΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ, Ρ +1, ΡΡΠΎΠ±Ρ ΡΠ΄Π°Π»ΠΈΡΡ TokenID ΠΈΠ· ΠΆΡΡΠ½Π°Π»ΠΎΠ²
Π·Π°ΠΊΡΡΡΠΈΠ΅ ΠΏΡΠΈ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠΈ https://github.com/kubernetes/kubernetes/pull/94727 .
ΠΠ»Π°Π³ΠΎΠ΄Π°ΡΠ½ΠΎΡΡΡ