Skip to content

Commit bfb77ad

Browse files
authored
feat(collectors): Add TLS parameters to the redis collector (#870)
feat(collectors): Add mTLS parameters to the redis collector For a redis collector spec targeting a redis server configured to accept (m)TLS connections we need to pass in the necessary TLS parameters in order to successfully connect to the server. Both preflight and support bundle specs use this collector. This change allows us to pass in the necessary TLS parameters via inlined TLS configuration or via a secret reference. Fixes #746
1 parent c4c6663 commit bfb77ad

17 files changed

+1039
-17
lines changed

config/crds/troubleshoot.sh_collectors.yaml

Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -367,6 +367,27 @@ spec:
367367
items:
368368
type: string
369369
type: array
370+
tls:
371+
properties:
372+
cacert:
373+
type: string
374+
clientCert:
375+
type: string
376+
clientKey:
377+
type: string
378+
secret:
379+
properties:
380+
name:
381+
type: string
382+
namespace:
383+
type: string
384+
required:
385+
- name
386+
- namespace
387+
type: object
388+
skipVerify:
389+
type: boolean
390+
type: object
370391
uri:
371392
type: string
372393
required:
@@ -382,6 +403,27 @@ spec:
382403
items:
383404
type: string
384405
type: array
406+
tls:
407+
properties:
408+
cacert:
409+
type: string
410+
clientCert:
411+
type: string
412+
clientKey:
413+
type: string
414+
secret:
415+
properties:
416+
name:
417+
type: string
418+
namespace:
419+
type: string
420+
required:
421+
- name
422+
- namespace
423+
type: object
424+
skipVerify:
425+
type: boolean
426+
type: object
385427
uri:
386428
type: string
387429
required:
@@ -397,6 +439,27 @@ spec:
397439
items:
398440
type: string
399441
type: array
442+
tls:
443+
properties:
444+
cacert:
445+
type: string
446+
clientCert:
447+
type: string
448+
clientKey:
449+
type: string
450+
secret:
451+
properties:
452+
name:
453+
type: string
454+
namespace:
455+
type: string
456+
required:
457+
- name
458+
- namespace
459+
type: object
460+
skipVerify:
461+
type: boolean
462+
type: object
400463
uri:
401464
type: string
402465
required:

config/crds/troubleshoot.sh_preflights.yaml

Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1692,6 +1692,27 @@ spec:
16921692
items:
16931693
type: string
16941694
type: array
1695+
tls:
1696+
properties:
1697+
cacert:
1698+
type: string
1699+
clientCert:
1700+
type: string
1701+
clientKey:
1702+
type: string
1703+
secret:
1704+
properties:
1705+
name:
1706+
type: string
1707+
namespace:
1708+
type: string
1709+
required:
1710+
- name
1711+
- namespace
1712+
type: object
1713+
skipVerify:
1714+
type: boolean
1715+
type: object
16951716
uri:
16961717
type: string
16971718
required:
@@ -1707,6 +1728,27 @@ spec:
17071728
items:
17081729
type: string
17091730
type: array
1731+
tls:
1732+
properties:
1733+
cacert:
1734+
type: string
1735+
clientCert:
1736+
type: string
1737+
clientKey:
1738+
type: string
1739+
secret:
1740+
properties:
1741+
name:
1742+
type: string
1743+
namespace:
1744+
type: string
1745+
required:
1746+
- name
1747+
- namespace
1748+
type: object
1749+
skipVerify:
1750+
type: boolean
1751+
type: object
17101752
uri:
17111753
type: string
17121754
required:
@@ -1722,6 +1764,27 @@ spec:
17221764
items:
17231765
type: string
17241766
type: array
1767+
tls:
1768+
properties:
1769+
cacert:
1770+
type: string
1771+
clientCert:
1772+
type: string
1773+
clientKey:
1774+
type: string
1775+
secret:
1776+
properties:
1777+
name:
1778+
type: string
1779+
namespace:
1780+
type: string
1781+
required:
1782+
- name
1783+
- namespace
1784+
type: object
1785+
skipVerify:
1786+
type: boolean
1787+
type: object
17251788
uri:
17261789
type: string
17271790
required:

config/crds/troubleshoot.sh_supportbundles.yaml

Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1723,6 +1723,27 @@ spec:
17231723
items:
17241724
type: string
17251725
type: array
1726+
tls:
1727+
properties:
1728+
cacert:
1729+
type: string
1730+
clientCert:
1731+
type: string
1732+
clientKey:
1733+
type: string
1734+
secret:
1735+
properties:
1736+
name:
1737+
type: string
1738+
namespace:
1739+
type: string
1740+
required:
1741+
- name
1742+
- namespace
1743+
type: object
1744+
skipVerify:
1745+
type: boolean
1746+
type: object
17261747
uri:
17271748
type: string
17281749
required:
@@ -1738,6 +1759,27 @@ spec:
17381759
items:
17391760
type: string
17401761
type: array
1762+
tls:
1763+
properties:
1764+
cacert:
1765+
type: string
1766+
clientCert:
1767+
type: string
1768+
clientKey:
1769+
type: string
1770+
secret:
1771+
properties:
1772+
name:
1773+
type: string
1774+
namespace:
1775+
type: string
1776+
required:
1777+
- name
1778+
- namespace
1779+
type: object
1780+
skipVerify:
1781+
type: boolean
1782+
type: object
17411783
uri:
17421784
type: string
17431785
required:
@@ -1753,6 +1795,27 @@ spec:
17531795
items:
17541796
type: string
17551797
type: array
1798+
tls:
1799+
properties:
1800+
cacert:
1801+
type: string
1802+
clientCert:
1803+
type: string
1804+
clientKey:
1805+
type: string
1806+
secret:
1807+
properties:
1808+
name:
1809+
type: string
1810+
namespace:
1811+
type: string
1812+
required:
1813+
- name
1814+
- namespace
1815+
type: object
1816+
skipVerify:
1817+
type: boolean
1818+
type: object
17561819
uri:
17571820
type: string
17581821
required:

examples/preflight/redis.yaml

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,18 +6,19 @@ spec:
66
collectors:
77
- redis:
88
collectorName: my-redis
9-
uri: rediss://default:password@hostname:6379
9+
uri: rediss://default:replicated@server:6380
10+
tls:
11+
skipVerify: true
1012
analyzers:
1113
- redis:
1214
checkName: Must be redis 5.x or later
1315
collectorName: my-redis
1416
outcomes:
1517
- fail:
1618
when: "connected == false"
17-
message: Cannot connect to postgres server
19+
message: Cannot connect to redis server
1820
- fail:
1921
when: "version < 5.0.0"
2022
message: The redis server must be at least version 5
2123
- pass:
2224
message: The redis connection checks out
23-

examples/support-bundle/mysql-collector.yaml renamed to examples/support-bundle/db-collector.yaml

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
apiVersion: troubleshoot.sh/v1beta2
22
kind: SupportBundle
33
metadata:
4-
name: mysql
4+
name: dbs-collector
55
spec:
66
collectors:
77
- mysql:
@@ -15,3 +15,6 @@ spec:
1515
- innodb_large_prefix
1616
- innodb_strict_mode
1717
- log_bin_trust_function_creators
18+
- redis:
19+
collectorName: my-redis
20+
uri: rediss://default:replicated@server:6380

pkg/apis/troubleshoot/v1beta2/collector_shared.go

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -168,8 +168,22 @@ type Put struct {
168168

169169
type Database struct {
170170
CollectorMeta `json:",inline" yaml:",inline"`
171-
URI string `json:"uri" yaml:"uri"`
172-
Parameters []string `json:"parameters,omitempty"`
171+
URI string `json:"uri" yaml:"uri"`
172+
Parameters []string `json:"parameters,omitempty"`
173+
TLS *TLSParams `json:"tls,omitempty" yaml:"tls,omitempty"`
174+
}
175+
176+
type TLSParams struct {
177+
SkipVerify bool `json:"skipVerify,omitempty" yaml:"skipVerify,omitempty"`
178+
Secret *TLSSecret `json:"secret,omitempty" yaml:"secret,omitempty"`
179+
CACert string `json:"cacert,omitempty" yaml:"cacert,omitempty"`
180+
ClientCert string `json:"clientCert,omitempty" yaml:"clientCert,omitempty"`
181+
ClientKey string `json:"clientKey,omitempty" yaml:"clientKey,omitempty"`
182+
}
183+
184+
type TLSSecret struct {
185+
Name string `json:"name" yaml:"name"`
186+
Namespace string `json:"namespace" yaml:"namespace"`
173187
}
174188

175189
type Collectd struct {

pkg/apis/troubleshoot/v1beta2/zz_generated.deepcopy.go

Lines changed: 40 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)