Skip to content

Commit 525bd21

Browse files
authored
Merge pull request #4147 from fluxcd/tls-flags
Adopt Kubernetes style TLS Secrets and add relevant flags
2 parents a2ac94b + 8df27d8 commit 525bd21

File tree

11 files changed

+272
-53
lines changed

11 files changed

+272
-53
lines changed

cmd/flux/create_secret_git.go

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -88,6 +88,7 @@ type secretGitFlags struct {
8888
rsaBits flags.RSAKeyBits
8989
ecdsaCurve flags.ECDSACurve
9090
caFile string
91+
caCrtFile string
9192
privateKeyFile string
9293
bearerToken string
9394
}
@@ -102,6 +103,7 @@ func init() {
102103
createSecretGitCmd.Flags().Var(&secretGitArgs.rsaBits, "ssh-rsa-bits", secretGitArgs.rsaBits.Description())
103104
createSecretGitCmd.Flags().Var(&secretGitArgs.ecdsaCurve, "ssh-ecdsa-curve", secretGitArgs.ecdsaCurve.Description())
104105
createSecretGitCmd.Flags().StringVar(&secretGitArgs.caFile, "ca-file", "", "path to TLS CA file used for validating self-signed certificates")
106+
createSecretGitCmd.Flags().StringVar(&secretGitArgs.caCrtFile, "ca-crt-file", "", "path to TLS CA certificate file used for validating self-signed certificates; takes precedence over --ca-file")
105107
createSecretGitCmd.Flags().StringVar(&secretGitArgs.privateKeyFile, "private-key-file", "", "path to a passwordless private key file used for authenticating to the Git SSH server")
106108
createSecretGitCmd.Flags().StringVar(&secretGitArgs.bearerToken, "bearer-token", "", "bearer authentication token")
107109

@@ -160,12 +162,18 @@ func createSecretGitCmdRun(cmd *cobra.Command, args []string) error {
160162
if secretGitArgs.username != "" && secretGitArgs.password != "" && secretGitArgs.bearerToken != "" {
161163
return fmt.Errorf("user credentials and bearer token cannot be used together")
162164
}
163-
if secretGitArgs.caFile != "" {
164-
caBundle, err := os.ReadFile(secretGitArgs.caFile)
165+
166+
// --ca-crt-file takes precedence over --ca-file.
167+
if secretGitArgs.caCrtFile != "" {
168+
opts.CACrt, err = os.ReadFile(secretGitArgs.caCrtFile)
169+
if err != nil {
170+
return fmt.Errorf("unable to read TLS CA file: %w", err)
171+
}
172+
} else if secretGitArgs.caFile != "" {
173+
opts.CAFile, err = os.ReadFile(secretGitArgs.caFile)
165174
if err != nil {
166175
return fmt.Errorf("unable to read TLS CA file: %w", err)
167176
}
168-
opts.CAFile = caBundle
169177
}
170178
default:
171179
return fmt.Errorf("git URL scheme '%s' not supported, can be: ssh, http and https", u.Scheme)

cmd/flux/create_secret_git_test.go

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,21 @@
11
package main
22

33
import (
4+
"fmt"
5+
"os"
46
"testing"
57
)
68

79
func TestCreateGitSecret(t *testing.T) {
10+
file, err := os.CreateTemp(t.TempDir(), "ca-crt")
11+
if err != nil {
12+
t.Fatal("could not create CA certificate file")
13+
}
14+
_, err = file.Write([]byte("ca-data"))
15+
if err != nil {
16+
t.Fatal("could not write to CA certificate file")
17+
}
18+
819
tests := []struct {
920
name string
1021
args string
@@ -35,6 +46,11 @@ func TestCreateGitSecret(t *testing.T) {
3546
args: "create secret git bearer-token-auth --url=https://github.com/stefanprodan/podinfo --bearer-token=ghp_baR2qnFF0O41WlucePL3udt2N9vVZS4R0hAS --namespace=my-namespace --export",
3647
assert: assertGoldenFile("testdata/create_secret/git/git-bearer-token.yaml"),
3748
},
49+
{
50+
name: "git authentication with CA certificate",
51+
args: fmt.Sprintf("create secret git ca-crt --url=https://github.com/stefanprodan/podinfo --password=my-password --username=my-username --ca-crt-file=%s --namespace=my-namespace --export", file.Name()),
52+
assert: assertGoldenFile("testdata/create_secret/git/secret-ca-crt.yaml"),
53+
},
3854
{
3955
name: "git authentication with basic auth and bearer token",
4056
args: "create secret git podinfo-auth --url=https://github.com/stefanprodan/podinfo --username=aaa --password=zzzz --bearer-token=aaaa --namespace=my-namespace --export",

cmd/flux/create_secret_helm.go

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -41,15 +41,8 @@ var createSecretHelmCmd = &cobra.Command{
4141
--export > repo-auth.yaml
4242
4343
sops --encrypt --encrypted-regex '^(data|stringData)$' \
44-
--in-place repo-auth.yaml
44+
--in-place repo-auth.yaml`,
4545

46-
# Create a Helm authentication secret using a custom TLS cert
47-
flux create secret helm repo-auth \
48-
--username=username \
49-
--password=password \
50-
--cert-file=./cert.crt \
51-
--key-file=./key.crt \
52-
--ca-file=./ca.crt`,
5346
RunE: createSecretHelmCmdRun,
5447
}
5548

@@ -62,9 +55,16 @@ type secretHelmFlags struct {
6255
var secretHelmArgs secretHelmFlags
6356

6457
func init() {
65-
createSecretHelmCmd.Flags().StringVarP(&secretHelmArgs.username, "username", "u", "", "basic authentication username")
66-
createSecretHelmCmd.Flags().StringVarP(&secretHelmArgs.password, "password", "p", "", "basic authentication password")
67-
initSecretTLSFlags(createSecretHelmCmd.Flags(), &secretHelmArgs.secretTLSFlags)
58+
flags := createSecretHelmCmd.Flags()
59+
flags.StringVarP(&secretHelmArgs.username, "username", "u", "", "basic authentication username")
60+
flags.StringVarP(&secretHelmArgs.password, "password", "p", "", "basic authentication password")
61+
62+
initSecretDeprecatedTLSFlags(flags, &secretHelmArgs.secretTLSFlags)
63+
deprecationMsg := "please use the command `flux create secret tls` to generate TLS secrets"
64+
flags.MarkDeprecated("cert-file", deprecationMsg)
65+
flags.MarkDeprecated("key-file", deprecationMsg)
66+
flags.MarkDeprecated("ca-file", deprecationMsg)
67+
6868
createSecretCmd.AddCommand(createSecretHelmCmd)
6969
}
7070

cmd/flux/create_secret_tls.go

Lines changed: 45 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -38,8 +38,9 @@ var createSecretTLSCmd = &cobra.Command{
3838
# Files are expected to be PEM-encoded.
3939
flux create secret tls certs \
4040
--namespace=my-namespace \
41-
--cert-file=./client.crt \
42-
--key-file=./client.key \
41+
--tls-crt-file=./client.crt \
42+
--tls-key-file=./client.key \
43+
--ca-crt-file=./ca.crt \
4344
--export > certs.yaml
4445
4546
sops --encrypt --encrypted-regex '^(data|stringData)$' \
@@ -48,22 +49,37 @@ var createSecretTLSCmd = &cobra.Command{
4849
}
4950

5051
type secretTLSFlags struct {
51-
certFile string
52-
keyFile string
53-
caFile string
52+
certFile string
53+
keyFile string
54+
caFile string
55+
caCrtFile string
56+
tlsKeyFile string
57+
tlsCrtFile string
5458
}
5559

5660
var secretTLSArgs secretTLSFlags
5761

58-
func initSecretTLSFlags(flags *pflag.FlagSet, args *secretTLSFlags) {
62+
func initSecretDeprecatedTLSFlags(flags *pflag.FlagSet, args *secretTLSFlags) {
5963
flags.StringVar(&args.certFile, "cert-file", "", "TLS authentication cert file path")
6064
flags.StringVar(&args.keyFile, "key-file", "", "TLS authentication key file path")
6165
flags.StringVar(&args.caFile, "ca-file", "", "TLS authentication CA file path")
6266
}
6367

68+
func initSecretTLSFlags(flags *pflag.FlagSet, args *secretTLSFlags) {
69+
flags.StringVar(&args.tlsCrtFile, "tls-crt-file", "", "TLS authentication cert file path")
70+
flags.StringVar(&args.tlsKeyFile, "tls-key-file", "", "TLS authentication key file path")
71+
flags.StringVar(&args.caCrtFile, "ca-crt-file", "", "TLS authentication CA file path")
72+
}
73+
6474
func init() {
6575
flags := createSecretTLSCmd.Flags()
76+
initSecretDeprecatedTLSFlags(flags, &secretTLSArgs)
6677
initSecretTLSFlags(flags, &secretTLSArgs)
78+
79+
flags.MarkDeprecated("cert-file", "please use --tls-crt-file instead")
80+
flags.MarkDeprecated("key-file", "please use --tls-key-file instead")
81+
flags.MarkDeprecated("ca-file", "please use --ca-crt-file instead")
82+
6783
createSecretCmd.AddCommand(createSecretTLSCmd)
6884
}
6985

@@ -75,33 +91,40 @@ func createSecretTLSCmdRun(cmd *cobra.Command, args []string) error {
7591
return err
7692
}
7793

78-
caBundle := []byte{}
79-
if secretTLSArgs.caFile != "" {
80-
var err error
81-
caBundle, err = os.ReadFile(secretTLSArgs.caFile)
94+
opts := sourcesecret.Options{
95+
Name: name,
96+
Namespace: *kubeconfigArgs.Namespace,
97+
Labels: labels,
98+
}
99+
100+
if secretTLSArgs.caCrtFile != "" {
101+
opts.CACrt, err = os.ReadFile(secretTLSArgs.caCrtFile)
102+
if err != nil {
103+
return fmt.Errorf("unable to read TLS CA file: %w", err)
104+
}
105+
} else if secretTLSArgs.caFile != "" {
106+
opts.CAFile, err = os.ReadFile(secretTLSArgs.caFile)
82107
if err != nil {
83108
return fmt.Errorf("unable to read TLS CA file: %w", err)
84109
}
85110
}
86111

87-
var certFile, keyFile []byte
88-
if secretTLSArgs.certFile != "" && secretTLSArgs.keyFile != "" {
89-
if certFile, err = os.ReadFile(secretTLSArgs.certFile); err != nil {
112+
if secretTLSArgs.tlsCrtFile != "" && secretTLSArgs.tlsKeyFile != "" {
113+
if opts.TLSCrt, err = os.ReadFile(secretTLSArgs.tlsCrtFile); err != nil {
114+
return fmt.Errorf("failed to read cert file: %w", err)
115+
}
116+
if opts.TLSKey, err = os.ReadFile(secretTLSArgs.tlsKeyFile); err != nil {
117+
return fmt.Errorf("failed to read key file: %w", err)
118+
}
119+
} else if secretTLSArgs.certFile != "" && secretTLSArgs.keyFile != "" {
120+
if opts.CertFile, err = os.ReadFile(secretTLSArgs.certFile); err != nil {
90121
return fmt.Errorf("failed to read cert file: %w", err)
91122
}
92-
if keyFile, err = os.ReadFile(secretTLSArgs.keyFile); err != nil {
123+
if opts.KeyFile, err = os.ReadFile(secretTLSArgs.keyFile); err != nil {
93124
return fmt.Errorf("failed to read key file: %w", err)
94125
}
95126
}
96127

97-
opts := sourcesecret.Options{
98-
Name: name,
99-
Namespace: *kubeconfigArgs.Namespace,
100-
Labels: labels,
101-
CAFile: caBundle,
102-
CertFile: certFile,
103-
KeyFile: keyFile,
104-
}
105128
secret, err := sourcesecret.Generate(opts)
106129
if err != nil {
107130
return err

cmd/flux/create_secret_tls_test.go

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import (
44
"testing"
55
)
66

7-
func TestCreateTlsSecretNoArgs(t *testing.T) {
7+
func TestCreateTlsSecret(t *testing.T) {
88
tests := []struct {
99
name string
1010
args string
@@ -15,9 +15,13 @@ func TestCreateTlsSecretNoArgs(t *testing.T) {
1515
assert: assertError("name is required"),
1616
},
1717
{
18-
args: "create secret tls certs --namespace=my-namespace --cert-file=./testdata/create_secret/tls/test-cert.pem --key-file=./testdata/create_secret/tls/test-key.pem --export",
18+
args: "create secret tls certs --namespace=my-namespace --tls-crt-file=./testdata/create_secret/tls/test-cert.pem --tls-key-file=./testdata/create_secret/tls/test-key.pem --ca-crt-file=./testdata/create_secret/tls/test-ca.pem --export",
1919
assert: assertGoldenFile("testdata/create_secret/tls/secret-tls.yaml"),
2020
},
21+
{
22+
args: "create secret tls certs --namespace=my-namespace --cert-file=./testdata/create_secret/tls/test-cert.pem --key-file=./testdata/create_secret/tls/test-key.pem --ca-file=./testdata/create_secret/tls/test-ca.pem --export",
23+
assert: assertGoldenFile("testdata/create_secret/tls/deprecated-secret-tls.yaml"),
24+
},
2125
}
2226
for _, tt := range tests {
2327
t.Run(tt.name, func(t *testing.T) {
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
---
2+
apiVersion: v1
3+
kind: Secret
4+
metadata:
5+
name: ca-crt
6+
namespace: my-namespace
7+
stringData:
8+
ca.crt: ca-data
9+
password: my-password
10+
username: my-username
11+
Lines changed: 107 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,107 @@
1+
Flag --cert-file has been deprecated, please use --tls-crt-file instead
2+
Flag --key-file has been deprecated, please use --tls-key-file instead
3+
Flag --ca-file has been deprecated, please use --ca-crt-file instead
4+
---
5+
apiVersion: v1
6+
kind: Secret
7+
metadata:
8+
name: certs
9+
namespace: my-namespace
10+
stringData:
11+
caFile: |
12+
-----BEGIN CERTIFICATE-----
13+
MIIBhzCCAS2gAwIBAgIUdsAtiX3gN0uk7ddxASWYE/tdv0wwCgYIKoZIzj0EAwIw
14+
GTEXMBUGA1UEAxMOZXhhbXBsZS5jb20gQ0EwHhcNMjAwNDE3MDgxODAwWhcNMjUw
15+
NDE2MDgxODAwWjAZMRcwFQYDVQQDEw5leGFtcGxlLmNvbSBDQTBZMBMGByqGSM49
16+
AgEGCCqGSM49AwEHA0IABK7h/5D8bV93MmEdhu02JsS6ugB8s6PzRl3PV4xs3Sbr
17+
RNkkM59+x3b0iWx/i76qPYpNLoiVUVXQmA9Y+4DbMxijUzBRMA4GA1UdDwEB/wQE
18+
AwIBBjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBQGyUiU1QEZiMAqjsnIYTwZ
19+
4yp5wzAPBgNVHREECDAGhwR/AAABMAoGCCqGSM49BAMCA0gAMEUCIQDzdtvKdE8O
20+
1+WRTZ9MuSiFYcrEz7Zne7VXouDEKqKEigIgM4WlbDeuNCKbqhqj+xZV0pa3rweb
21+
OD8EjjCMY69RMO0=
22+
-----END CERTIFICATE-----
23+
certFile: |
24+
-----BEGIN CERTIFICATE-----
25+
MIIFazCCA1OgAwIBAgIUT84jeO/ncOrqI+FY05Fzbg8Ed7MwDQYJKoZIhvcNAQEL
26+
BQAwRTELMAkGA1UEBhMCQVUxEzARBgNVBAgMClNvbWUtU3RhdGUxITAfBgNVBAoM
27+
GEludGVybmV0IFdpZGdpdHMgUHR5IEx0ZDAeFw0yMTA4MDgxNDQyMzVaFw0yMjA4
28+
MDgxNDQyMzVaMEUxCzAJBgNVBAYTAkFVMRMwEQYDVQQIDApTb21lLVN0YXRlMSEw
29+
HwYDVQQKDBhJbnRlcm5ldCBXaWRnaXRzIFB0eSBMdGQwggIiMA0GCSqGSIb3DQEB
30+
AQUAA4ICDwAwggIKAoICAQDn/rPsZ74oypiwCzLlx57zplTiCi/WLSF+MmLGuTvM
31+
EQnV+OND2zFgvDIV/vFs3brkd6rLVI4NcdgSj4YKULCMwwOl45hQPdCTEPJvUhCm
32+
M+FuQ0czmEEJSjZtdLFz1B7QB/JemNnbfigxM9mlg58AlBhVJqn8q64wd/kC/W/K
33+
JTLJuBiVf12ZiPoPfO4WSxAqD3opZ8gdbmK0KYQAhKjEto6ZrYGisfwU1gt3l8M7
34+
sCJSpEkOkpuQgJ8D+xzJS36VXBJQMMP9nAPps+x/rGFplsPMsXEFFiwvR1+FJZwz
35+
lg2sJ91bLGZQ7vn74MfsGrxpiJwllRThJyT7C9V0sjb5trT2lEqZlP2dRSJYt7aJ
36+
1crEcdGSl6RIKgxSV6Hk8dh/ZaTjrTwaKxVkPo2IeEXy5xrR7DyonOQ6Yes0KOCm
37+
JB5yHkFlIVEnLm/HZXEtm3bPHsFgTZuInyBCOMXpUESuVZIw8YK+Vd6AExGPPwZ4
38+
n5I/sCDxWII9owIj3LeLzdUG6JoroahhGmo8rgpbJpPnS+VgryQ/raUQjqDzDCuE
39+
9vKXKBlSUqK6H9A+NMc0mme7M8/GX7T7ewFGUB/xsdrcO4yXjqHnAe0yLf8epDjC
40+
hh76bYqwwinVrmfcNcRxFVJZW2z0gGdgkOkOLaVVb9ggPV2SNAHbN4A+St/iRYR5
41+
awIDAQABo1MwUTAdBgNVHQ4EFgQUzMaCqVM30EZFfTeNUIJ5fNPAhaQwHwYDVR0j
42+
BBgwFoAUzMaCqVM30EZFfTeNUIJ5fNPAhaQwDwYDVR0TAQH/BAUwAwEB/zANBgkq
43+
hkiG9w0BAQsFAAOCAgEAVmk1rXtVkYR1Vs2Va/xrUaGXlFznhPU/Fft44kiEkkLp
44+
mLVelWyAqvXYioqssZwuZnTjGz0DQPqzJjqwuGy4CHwPLmhCtfHplrbWo8a0ivYC
45+
cL20KfZsG941siUh7LGBjTsq6mWBf2ytlFmg/fg93SgmqcEUAUcdps0JpZD8lgWB
46+
ZMstfr6E3jaEus3OsvDD6hJNYZ5clJ5+ynLoWZ99A9JC0U46hmIZpRjbdSvasKpD
47+
XrXTdpzyL/Do3znXE/yfoHv4//Rj2CpPHJLYRCIzvuf1mo1fWd53FjHvrbUvaHFz
48+
CGuZROd4dC4Rx5nZw2ogIYvJ8m6HpIDkL3pBNSQJtIsvAYEQcotJoa5D/e9fu2Wr
49+
+og37oCY4OXzViEBQvyxKD4cajNco1fgGKEaFROADwr3JceGI7Anq5W+xdUvAGNM
50+
QuGeCueqNyrJ0CbQ1zEhwgpk/VYfB0u9m0bjMellRlKMdojby+FDCJtAJesx9no4
51+
SQXyx+aNHhj3qReysjGNwZvBk1IHL04HAT+ogNiYhTl1J/YON4MB5UN6Y2PxP6uG
52+
KvJGPigx4fAwfR/d78o5ngwoH9m+8FUg8+qllJ8XgIbl/VXKTk3G4ceOm4eBmrel
53+
DwWuBhELSjtXWPWhMlkiebgejDbAear53Lia2Cc43zx/KuhMHBTlKY/vY4F2YiI=
54+
-----END CERTIFICATE-----
55+
keyFile: |
56+
-----BEGIN PRIVATE KEY-----
57+
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
106+
kOvbvVANrpsunlSAcpXm1qkV+G+xPnyJ
107+
-----END PRIVATE KEY-----

cmd/flux/testdata/create_secret/tls/secret-tls.yaml

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,19 @@ metadata:
55
name: certs
66
namespace: my-namespace
77
stringData:
8-
certFile: |
8+
ca.crt: |
9+
-----BEGIN CERTIFICATE-----
10+
MIIBhzCCAS2gAwIBAgIUdsAtiX3gN0uk7ddxASWYE/tdv0wwCgYIKoZIzj0EAwIw
11+
GTEXMBUGA1UEAxMOZXhhbXBsZS5jb20gQ0EwHhcNMjAwNDE3MDgxODAwWhcNMjUw
12+
NDE2MDgxODAwWjAZMRcwFQYDVQQDEw5leGFtcGxlLmNvbSBDQTBZMBMGByqGSM49
13+
AgEGCCqGSM49AwEHA0IABK7h/5D8bV93MmEdhu02JsS6ugB8s6PzRl3PV4xs3Sbr
14+
RNkkM59+x3b0iWx/i76qPYpNLoiVUVXQmA9Y+4DbMxijUzBRMA4GA1UdDwEB/wQE
15+
AwIBBjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBQGyUiU1QEZiMAqjsnIYTwZ
16+
4yp5wzAPBgNVHREECDAGhwR/AAABMAoGCCqGSM49BAMCA0gAMEUCIQDzdtvKdE8O
17+
1+WRTZ9MuSiFYcrEz7Zne7VXouDEKqKEigIgM4WlbDeuNCKbqhqj+xZV0pa3rweb
18+
OD8EjjCMY69RMO0=
19+
-----END CERTIFICATE-----
20+
tls.crt: |
921
-----BEGIN CERTIFICATE-----
1022
MIIFazCCA1OgAwIBAgIUT84jeO/ncOrqI+FY05Fzbg8Ed7MwDQYJKoZIhvcNAQEL
1123
BQAwRTELMAkGA1UEBhMCQVUxEzARBgNVBAgMClNvbWUtU3RhdGUxITAfBgNVBAoM
@@ -37,7 +49,7 @@ stringData:
3749
KvJGPigx4fAwfR/d78o5ngwoH9m+8FUg8+qllJ8XgIbl/VXKTk3G4ceOm4eBmrel
3850
DwWuBhELSjtXWPWhMlkiebgejDbAear53Lia2Cc43zx/KuhMHBTlKY/vY4F2YiI=
3951
-----END CERTIFICATE-----
40-
keyFile: |
52+
tls.key: |
4153
-----BEGIN PRIVATE KEY-----
4254
MIIJRAIBADANBgkqhkiG9w0BAQEFAASCCS4wggkqAgEAAoICAQDn/rPsZ74oypiw
4355
CzLlx57zplTiCi/WLSF+MmLGuTvMEQnV+OND2zFgvDIV/vFs3brkd6rLVI4NcdgS
@@ -90,3 +102,4 @@ stringData:
90102
XBQO4ig7vY8+1+L3w2xpTN95/rXAvB4BbO/DLea9ArikePoSJ+bVTj0YwrKBghep
91103
kOvbvVANrpsunlSAcpXm1qkV+G+xPnyJ
92104
-----END PRIVATE KEY-----
105+
type: kubernetes.io/tls

0 commit comments

Comments
 (0)