Compare commits
988 Commits
Author | SHA1 | Date |
---|---|---|
|
032db3090b | |
|
2fafbb8e16 | |
|
a2065934fc | |
|
231f2e5960 | |
|
17485a5155 | |
|
b1365be731 | |
|
8bfe5482a5 | |
|
9c2333552b | |
|
d6455ae492 | |
|
42214abfdf | |
|
56bc37e7dc | |
|
6b1a2688f7 | |
|
6286cadc2c | |
|
7b23ca333f | |
|
85694b712b | |
|
887341d3d2 | |
|
ec93e4ce9a | |
|
2d081d65b1 | |
|
1876db3d8a | |
|
d5d2cf4e9f | |
|
475af8ac63 | |
|
051635c39c | |
|
40dfe50acd | |
|
1fa7d8ee77 | |
|
727f75e151 | |
|
7b52494b36 | |
|
efb8d5c820 | |
|
181769ad9d | |
|
b6290f874d | |
|
f4c065cea7 | |
|
9ce75fb21e | |
|
e2112c6ebe | |
|
5c8abe2985 | |
|
a71b8cf5b8 | |
|
081e93bb0b | |
|
d7708fc61e | |
|
db56eeee25 | |
|
23caca9d25 | |
|
710426f162 | |
|
6320a9ee44 | |
|
e96e1cb0b0 | |
|
70a2160a6b | |
|
4bbf3e6cd0 | |
|
38e03c2f94 | |
|
7691e0e133 | |
|
3cf10b3ff4 | |
|
f2090a7f8d | |
|
872d89083e | |
|
98cf76808c | |
|
e2790e40e5 | |
|
ef1775ea59 | |
|
193a64f652 | |
|
1e6ce896e4 | |
|
760cf4819f | |
|
4fb7ea9bde | |
|
4b3ffb4f43 | |
|
46fb162903 | |
|
7dcb9ea40d | |
|
c1138d0a71 | |
|
7f78b7a84b | |
|
3f39cbd506 | |
|
613018d571 | |
|
9df3b58e35 | |
|
8105a9dcb5 | |
|
d0687af4ca | |
|
45c2275168 | |
|
89414412f7 | |
|
625234071e | |
|
0737748820 | |
|
f857bf2b4a | |
|
def094d8ac | |
|
68eb1c0728 | |
|
e1950127c4 | |
|
79e848d2d6 | |
|
a530a2bcf3 | |
|
f9f3c34229 | |
|
dc3b6b4b66 | |
|
57fb626c1e | |
|
15c3f62389 | |
|
0edb091c18 | |
|
b2d2d00947 | |
|
dec96df2c9 | |
|
fb9c5b3c9d | |
|
9c7e069826 | |
|
d1fdafac4a | |
|
5620c63d89 | |
|
afd4267651 | |
|
9d258aa086 | |
|
534c4ed460 | |
|
f5fde8c613 | |
|
40c322ce62 | |
|
644ebe42db | |
|
f661a878db | |
|
59e5876b21 | |
|
1a428fe358 | |
|
fa78fead22 | |
|
275b796b0a | |
|
3955b75198 | |
|
ef67340e1f | |
|
d13ea1e3cf | |
|
6d66b3c829 | |
|
a8dbff5ad8 | |
|
c9215d10a5 | |
|
877fd5144b | |
|
975289f225 | |
|
5a9dda426b | |
|
dc12f41bc8 | |
|
fc83f7a94a | |
|
2ae52b4ea3 | |
|
119d55c324 | |
|
b223fda4a6 | |
|
de81f370f3 | |
|
c5f0687e3a | |
|
c127ba99c1 | |
|
ccb8ff6618 | |
|
d47bd7878e | |
|
e5c179858f | |
|
e231bf42f3 | |
|
25fb5eca30 | |
|
057048eeef | |
|
d403265786 | |
|
4285be0062 | |
|
fd195fedf2 | |
|
1715f7ed55 | |
|
24cd1f1305 | |
|
3d4721a629 | |
|
4ac586c086 | |
|
c1087f1cc6 | |
|
9efec696f0 | |
|
c8b60b11e2 | |
|
4e1642c687 | |
|
589c324208 | |
|
c716b8c04f | |
|
c7b22dee50 | |
|
6642f045a5 | |
|
93acf41892 | |
|
31dedc6be8 | |
|
932c718f65 | |
|
47c20a6818 | |
|
b75140b2a9 | |
|
91bcb2b655 | |
|
68c09adaed | |
|
04ffb7dc32 | |
|
902fe907ca | |
|
b6ded244a1 | |
|
942e91911a | |
|
679857c79d | |
|
d21e3e0756 | |
|
85ec917e88 | |
|
b87d98f88a | |
|
f184d4d2ba | |
|
e2db88a083 | |
|
ff8a41dc5d | |
|
3f54a44b74 | |
|
fe1fb2f0c5 | |
|
e110f3d19c | |
|
894bd02798 | |
|
d4481b173e | |
|
197ae7eacf | |
|
7a1545ed9d | |
|
6d445b0a1d | |
|
35d5601d06 | |
|
54c6421b9b | |
|
0cd70c4b0c | |
|
b56ca0cab4 | |
|
526c594442 | |
|
8f691f1d32 | |
|
3951f796ba | |
|
f8acafdbee | |
|
4d10e97800 | |
|
243f36f29e | |
|
662c7f07b6 | |
|
0cc253438c | |
|
2356170551 | |
|
c4994de662 | |
|
a069f6a9d8 | |
|
bd4f8a1631 | |
|
8c49d79f99 | |
|
68fed09ebc | |
|
a56152caa1 | |
|
7b0d59c6e4 | |
|
23c40ca5c2 | |
|
ac10d9ecc2 | |
|
d61b38568e | |
|
7ace4f0533 | |
|
3f38fbea2c | |
|
f4a36339f7 | |
|
b0f343fe42 | |
|
93899d0cc2 | |
|
19f107b3e4 | |
|
fab3ee06fe | |
|
3c9e492b25 | |
|
3c1f41baad | |
|
87f3ab7ead | |
|
11b7413051 | |
|
4e0d9bae56 | |
|
04383f657b | |
|
6f27d54c38 | |
|
362a8a586c | |
|
e30c443501 | |
|
f15c615386 | |
|
60ccb9ecfa | |
|
ff42058b7f | |
|
5051551868 | |
|
77cc223757 | |
|
f7b86434f3 | |
|
45c46b38f1 | |
|
9313bc8c61 | |
|
ea7b1752f8 | |
|
c3e36cc653 | |
|
308d3263bc | |
|
c4099a21c6 | |
|
6b93d12d2a | |
|
d581d0acdc | |
|
2ac717a2bc | |
|
ebb303caa5 | |
|
a4165aec8a | |
|
6f8be9b978 | |
|
d2d9171427 | |
|
8851b25b9d | |
|
75243e7a1d | |
|
0c4dfe94f2 | |
|
999ac2b1e3 | |
|
65531426fd | |
|
e7767aeaa8 | |
|
304c00ff5d | |
|
aba2761012 | |
|
bc431bbc5d | |
|
943001abab | |
|
d2ea6da1ec | |
|
9fd05f74f9 | |
|
0ce9add98a | |
|
ee65b1c3ec | |
|
229efea1af | |
|
3a89671ea4 | |
|
f3f303813e | |
|
01ce25f674 | |
|
7c1075ffa5 | |
|
d664482f1e | |
|
3d1f63af01 | |
|
b022182770 | |
|
fc1f456066 | |
|
f657ec79cd | |
|
678b2c13d1 | |
|
e85c5e7d66 | |
|
559229f399 | |
|
68781dafdb | |
|
ce19947ade | |
|
9763e7be5c | |
|
f5ced814f6 | |
|
43c9efdbd4 | |
|
876f977bf9 | |
|
2ccfaa0b08 | |
|
fbeb46368f | |
|
ce379bf5e4 | |
|
6f732800f5 | |
|
3f16f0be43 | |
|
efe7cd0128 | |
|
6e93edeb6b | |
|
aad97a2193 | |
|
5b41e1f3d6 | |
|
39af3c536c | |
|
53c8cb0985 | |
|
b0fb4f21f9 | |
|
22590f02fc | |
|
88bee0bdca | |
|
ba2ddab0a3 | |
|
0e77d5e0be | |
|
115d385fb3 | |
|
d7d14f1abb | |
|
7f378bb922 | |
|
718a3e0fe9 | |
|
9d3d2676e2 | |
|
455ba589d4 | |
|
1591b338f8 | |
|
11c9d9ab3f | |
|
f358d34e08 | |
|
2a9061c102 | |
|
1aa5481696 | |
|
0a341a736b | |
|
16ac78df8d | |
|
f68c6b6eb9 | |
|
27dbe70973 | |
|
f2d70862b3 | |
|
16d1b4f773 | |
|
bfb8a9ef0d | |
|
fbfaab904a | |
|
e52bcdb4f5 | |
|
d5404c37b7 | |
|
5ac18be58d | |
|
cadb333265 | |
|
5887881d1d | |
|
7ffe8228e2 | |
|
bf0e075c0f | |
|
82eb6ad5a8 | |
|
11db3963f1 | |
|
88226cbfea | |
|
723b214789 | |
|
9b5461057b | |
|
dd7e10b8cb | |
|
3b6b912725 | |
|
8457353399 | |
|
aa3f6ab16f | |
|
11053fa377 | |
|
4ab29d8892 | |
|
aa5541dfb3 | |
|
47024f1d8e | |
|
fc68c3871f | |
|
6568fd54b1 | |
|
a9666dc796 | |
|
aded47e6db | |
|
6c12ee768e | |
|
9da7d0191f | |
|
7d7c2b1aaa | |
|
c31157ecb2 | |
|
a3e5921169 | |
|
7f7159b40f | |
|
d1f380eb94 | |
|
b2cd37ef4b | |
|
b9ad4df444 | |
|
7a08c484c5 | |
|
2b27b4c9c0 | |
|
3c69ba3a6b | |
|
a5269c17cf | |
|
212e350d8c | |
|
0d7f4bd9f6 | |
|
2a00d328b0 | |
|
d59b3dc18a | |
|
1aaea30ac9 | |
|
6d95d705b5 | |
|
7f74465a85 | |
|
3e458341d2 | |
|
5a1745dccd | |
|
d5dd4acb20 | |
|
0b81726a01 | |
|
8a5fe81b63 | |
|
e15c5897cb | |
|
7f5b5708b4 | |
|
74c3d9d58a | |
|
0f23fdb7d4 | |
|
bbd71bb1d7 | |
|
9f00db1f90 | |
|
512f62a992 | |
|
c3b9e573f9 | |
|
07808e4f5f | |
|
ea24799e05 | |
|
49827a30d2 | |
|
4d1e93dde4 | |
|
7cd9d4aa5b | |
|
6cedacb641 | |
|
4a84e51249 | |
|
5275b2ad7b | |
|
2540e1878f | |
|
f17220a7fd | |
|
39d157a149 | |
|
753fe611ae | |
|
2bf2a18604 | |
|
3c1a33deec | |
|
7094724c17 | |
|
dd480c0274 | |
|
7d7dfd4689 | |
|
c1bbc6d350 | |
|
fb803dd031 | |
|
f1c7cde7c0 | |
|
8f2aa142fb | |
|
c1813fa8b1 | |
|
1baba7d4b8 | |
|
58c8747e16 | |
|
5acafcdf8c | |
|
151a1c9a2a | |
|
582749309f | |
|
bbbb06106f | |
|
396795ae30 | |
|
f6bd787608 | |
|
e5467c99e5 | |
|
dfdd667f34 | |
|
4e5e40ee16 | |
|
955c3dcaec | |
|
d3d9664f08 | |
|
234c7fcdb6 | |
|
8abd7fffbd | |
|
d7e985b193 | |
|
505563e518 | |
|
2c04e63834 | |
|
4877aaa8e1 | |
|
e71b56ac3f | |
|
41c3d8e4d8 | |
|
3d6ed3da88 | |
|
9a28bf8774 | |
|
11b2bb93e7 | |
|
326f9b8c66 | |
|
14e9cf5955 | |
|
1c7945728b | |
|
024167b505 | |
|
e8f662d52e | |
|
5351591634 | |
|
4518985b24 | |
|
8821fe0a8b | |
|
3eb066de51 | |
|
59e0c67f5e | |
|
f948c1d9fd | |
|
b01b349135 | |
|
08a0c5bb78 | |
|
263725388c | |
|
d754461054 | |
|
5d78fe3d4b | |
|
699cd87ddf | |
|
883b17ab97 | |
|
ef4166bff1 | |
|
72e8ebaa90 | |
|
b9722e8357 | |
|
3a08912a66 | |
|
9d3ba1adec | |
|
248ea99ef2 | |
|
0ff82aaaad | |
|
949d557336 | |
|
9fa0c22f36 | |
|
7bc1087c2e | |
|
ca7d2abf14 | |
|
778e16f43f | |
|
449a184d86 | |
|
3c49f5dcaa | |
|
34e30c4099 | |
|
0f13c1befe | |
|
2620f7fcec | |
|
e0aa47fb6a | |
|
202186e2bf | |
|
f0a1b6a661 | |
|
7ca56bd475 | |
|
02293b4aee | |
|
dbb8412972 | |
|
eca1d7e68f | |
|
ae0f65540d | |
|
6bdffc1f6f | |
|
b3f46b94b0 | |
|
f16c76b2b9 | |
|
e2c19bdc1c | |
|
b950a42502 | |
|
8c9e22e2d3 | |
|
977df6e3b2 | |
|
b8bc1826b3 | |
|
649a7ab2b2 | |
|
b90ac23e9a | |
|
d18eaf64b2 | |
|
798981dcba | |
|
4a68302e6b | |
|
9c413c0c18 | |
|
e25328fe3b | |
|
34f29e1542 | |
|
0e8de20a8c | |
|
6843c34735 | |
|
7ac290a959 | |
|
ac0e14c1bb | |
|
384f709e8c | |
|
9e44061977 | |
|
9cd6e6271b | |
|
e7c12832f3 | |
|
9048678426 | |
|
46aba3621c | |
|
f593a5350a | |
|
a49f266de7 | |
|
17ee19aabb | |
|
ba1be05ede | |
|
d12cdabef9 | |
|
9561447c57 | |
|
e8d42ac977 | |
|
d714702bc9 | |
|
c25f0be9ae | |
|
cc69eec5b7 | |
|
fc14f864f8 | |
|
81e2973106 | |
|
d9aa489da5 | |
|
dbba312a6d | |
|
7c633a07b9 | |
|
7a127cb311 | |
|
167f13f790 | |
|
0fb65520b6 | |
|
fce25cc9e6 | |
|
36c28b611d | |
|
1a02391c14 | |
|
29200a8757 | |
|
7ebaf47fd1 | |
|
91c55ab1df | |
|
5e2523d43c | |
|
a231585278 | |
|
14900220f3 | |
|
809f9851e8 | |
|
25cf93ee68 | |
|
862a1384a2 | |
|
d7fb687ea4 | |
|
86dacf7d78 | |
|
9cc145f7e6 | |
|
4d9012e4f5 | |
|
7debaf03ad | |
|
266be22b90 | |
|
4740376444 | |
|
5b1fa5eda2 | |
|
d48f15eaef | |
|
981e01ba9b | |
|
9252f5712f | |
|
5dc5ad1f14 | |
|
2d3794a5fe | |
|
cfe5448b45 | |
|
542a4b8660 | |
|
1c0db985b3 | |
|
7636f86081 | |
|
010c205a2f | |
|
8256cb1c53 | |
|
00b75fedf8 | |
|
85364e5319 | |
|
51d0a395c1 | |
|
e7627fc8e9 | |
|
48be856022 | |
|
17f20a2b50 | |
|
d40bdb9e6a | |
|
649a027f46 | |
|
6c4706956f | |
|
2ec6115c6a | |
|
d464b23c09 | |
|
d2a45d9aae | |
|
290945fd3e | |
|
aafefcbf27 | |
|
0a9519228f | |
|
0b925df8b5 | |
|
b57b7a974b | |
|
4f2b2ac9d8 | |
|
f8685e672f | |
|
9d2b95a9e0 | |
|
41f7c32741 | |
|
7b40b4caef | |
|
0c9cfdde33 | |
|
ebd4efd656 | |
|
c170231da5 | |
|
c1035616ce | |
|
a18fca5cc9 | |
|
11124b5cf0 | |
|
0245e00f4e | |
|
20b05c0cc9 | |
|
164ca0509d | |
|
ed90d77f9b | |
|
030cc49884 | |
|
995f030fb3 | |
|
fdb36e33df | |
|
41f4aee54f | |
|
194021de83 | |
|
3088b864d3 | |
|
18380b5c66 | |
|
8ecbebb715 | |
|
3ef8f3e540 | |
|
fdd702c8b7 | |
|
228cac3fbb | |
|
cf6177b58b | |
|
11584b20f8 | |
|
6da230d505 | |
|
b77a4240d8 | |
|
5b27106aee | |
|
197ab9172d | |
|
04abd7a20a | |
|
232d4bf711 | |
|
6a12a5f6c6 | |
|
91cf8f04e1 | |
|
9043468ffd | |
|
0836fe82b5 | |
|
6bf045b21c | |
|
9fcc3572cd | |
|
402b1a558f | |
|
25a35e3d45 | |
|
0449f51cc7 | |
|
de9ebe7843 | |
|
cd54dccba9 | |
|
33a1500ddd | |
|
46d737091d | |
|
aceb008aed | |
|
596ca8d4e1 | |
|
1e0288e287 | |
|
ffdbd3eda8 | |
|
c052619e0e | |
|
59675f9306 | |
|
6c39ca5faa | |
|
c1c7496f04 | |
|
8d4ad3d6a5 | |
|
a48784456f | |
|
d3174368c5 | |
|
34761710ec | |
|
26caba4231 | |
|
d75f08554e | |
|
63fbffe473 | |
|
cd47b4c337 | |
|
f443716604 | |
|
1693f1a84f | |
|
602cfd990e | |
|
e4d2e6f2f1 | |
|
9d869d27a7 | |
|
cdbb4ec3d7 | |
|
e9b1f0963b | |
|
023adfd207 | |
|
e5c63a1ad0 | |
|
e5e8c633e6 | |
|
1f4cbf21bf | |
|
7bfd64b8c8 | |
|
999b3a229a | |
|
05f9162983 | |
|
ae1d36ef83 | |
|
eb9ddbcf81 | |
|
277160089d | |
|
a408bba9ff | |
|
f7f379caa2 | |
|
f68287edc5 | |
|
70aafa917b | |
|
21d01999bc | |
|
e856508615 | |
|
169d6f19bf | |
|
b7937938bc | |
|
4cca7f5411 | |
|
50166e6df2 | |
|
70b921f43f | |
|
21c2969613 | |
|
70f61d4bff | |
|
c679210409 | |
|
b6abc5e9e6 | |
|
b6c05bcbd3 | |
|
204026c1ea | |
|
7bb16a6ba1 | |
|
65dd8528bb | |
|
e044d84da5 | |
|
787cef17d1 | |
|
5926ad59aa | |
|
123d2cefb1 | |
|
2231345713 | |
|
f1444a13c2 | |
|
bf98c744d9 | |
|
7de77a3f1c | |
|
a2eedbed58 | |
|
f8cac30ea0 | |
|
01b9313783 | |
|
a793311710 | |
|
a7337357be | |
|
013d044cca | |
|
cf4862ae12 | |
|
e18d7378d4 | |
|
9bf7797d88 | |
|
7647407337 | |
|
b481a50036 | |
|
45e7f52488 | |
|
8d385026f0 | |
|
f3f11e22f4 | |
|
0e94a805cd | |
|
8e74fa3e08 | |
|
1bbc39b140 | |
|
daed57358d | |
|
66748bd597 | |
|
2457c6d71e | |
|
ad56e3fe9d | |
|
7d9d872582 | |
|
ce55e8848d | |
|
c495e08abf | |
|
cc1bfb4573 | |
|
45b8cc44f7 | |
|
8670e91346 | |
|
39e9a9f4be | |
|
4bc26f4eaa | |
|
610ee42a28 | |
|
e777683b83 | |
|
69229369f7 | |
|
4f479b0402 | |
|
a9a6f74776 | |
|
f9aea1ecf3 | |
|
e2dc05b1c3 | |
|
95a3d72010 | |
|
ffd1ff3fde | |
|
6a79d3df28 | |
|
193be7b933 | |
|
902f1f084e | |
|
0f18dc31f5 | |
|
483eb8083f | |
|
4e99bc9943 | |
|
b8e368b6ea | |
|
016ebcecb0 | |
|
3ca42a3c52 | |
|
a2828245dd | |
|
86358ae251 | |
|
83635a52a2 | |
|
ade8a17459 | |
|
cd055d8232 | |
|
62e8d99a0b | |
|
4e92c73940 | |
|
da5241ae23 | |
|
afe3676d66 | |
|
17ad45fd5c | |
|
2bb3d9274c | |
|
912ddfdede | |
|
03e1d3e7ad | |
|
8326812b1a | |
|
c353fba1cc | |
|
24b4afac5d | |
|
60d4b2e168 | |
|
94680a460c | |
|
d8cc06504b | |
|
c4aeb531b4 | |
|
71e6fabfbb | |
|
976b8a5083 | |
|
2f8db3b749 | |
|
6c31ab255b | |
|
1f9f5206af | |
|
80518da8a6 | |
|
f5f87eec9f | |
|
c4d707f2f7 | |
|
fd02a10314 | |
|
36fb80ccfd | |
|
6a037f1756 | |
|
8190d07fe1 | |
|
e509dc4008 | |
|
b55cdbd0f3 | |
|
0850f66958 | |
|
b1a085ba73 | |
|
eddd6e7dbe | |
|
cbde90da6e | |
|
221c6f2119 | |
|
50f065f944 | |
|
a356cb8ed7 | |
|
bcddc7c4c5 | |
|
ae903e7cba | |
|
7bf6d71bd7 | |
|
db825ecaf0 | |
|
4733104aca | |
|
e02a6b2d3d | |
|
c7a753798d | |
|
de67927011 | |
|
52d52ed24f | |
|
d61802be4c | |
|
14f462cff4 | |
|
33213812d4 | |
|
e6345d651e | |
|
fd7d0be4e4 | |
|
e7aeebd01d | |
|
5362322fa3 | |
|
f01790c42a | |
|
60844e18a4 | |
|
fb31264ad6 | |
|
96203138cb | |
|
716788a6e6 | |
|
1dd6b37c8d | |
|
6a08225a00 | |
|
c663dadb28 | |
|
c5e05f36d3 | |
|
404b55980b | |
|
378aba45f2 | |
|
f8b038b352 | |
|
a70b3a05b4 | |
|
65b6e7f2a9 | |
|
0a39aa746a | |
|
effa7c7724 | |
|
277e1b6828 | |
|
798dc572de | |
|
c4a0d9021f | |
|
8f6e9b7353 | |
|
d18ea68d19 | |
|
be44dfa371 | |
|
fee24399fd | |
|
6bda62a63a | |
|
a65891c761 | |
|
85fc248bc2 | |
|
2c896ea340 | |
|
adc16c1ca3 | |
|
276d489d30 | |
|
6f739a9672 | |
|
a916efcef6 | |
|
827cde0472 | |
|
b54d6d9d24 | |
|
f458354b8a | |
|
3f0bb3791a | |
|
40a49e9a5a | |
|
3ea44ae3d5 | |
|
fd162ae813 | |
|
529b7d065a | |
|
b22c0c297f | |
|
60acb55fe7 | |
|
1f10a318b1 | |
|
dc24ac937c | |
|
f95f5fe512 | |
|
99ea33ddac | |
|
71a477504e | |
|
7f11fab4f3 | |
|
18c5cd43d8 | |
|
4da71f982a | |
|
154bcc7d61 | |
|
e64107bf6a | |
|
564a8ee182 | |
|
d890a30915 | |
|
eadad9bc1c | |
|
63037677ec | |
|
45013d1360 | |
|
74e5440166 | |
|
e86abda77f | |
|
ac1bae695a | |
|
b222e3a54b | |
|
5954ba569a | |
|
f2b55ed35f | |
|
ffd9784331 | |
|
51dd668a80 | |
|
3275e9010f | |
|
a55544d268 | |
|
00d60606a3 | |
|
bfb8940ed2 | |
|
952003f316 | |
|
b44c2b4a87 | |
|
9b4f1929a7 | |
|
635af342d3 | |
|
4541a1a05d | |
|
d116c6a798 | |
|
6b92ce0b4c | |
|
a669d22b36 | |
|
2d38d5c6b5 | |
|
45e550847c | |
|
1e388744b4 | |
|
0cadd5057a | |
|
92fdc10fb3 | |
|
d6b46da602 | |
|
40bce95187 | |
|
093f9f642b | |
|
807ec94f31 | |
|
f1a536ed0c | |
|
5d32f1cf17 | |
|
ba82d1f524 | |
|
8ee09ffe7c | |
|
d719835eb4 | |
|
9eb0ca296c | |
|
fb35f4716e | |
|
9751588057 | |
|
5176ace1bd | |
|
81bc688ad0 | |
|
bbf67af1db | |
|
4c0761dd12 | |
|
7dd8c3ad13 | |
|
3ffb70e1b4 | |
|
de19e406e7 | |
|
2342e7db72 | |
|
779774fe7c | |
|
bb9e22e07a | |
|
55afbcf145 | |
|
03ef027d4c | |
|
f3097adb08 | |
|
b3c7d29bf0 | |
|
29491ec43e | |
|
dc3e555c51 | |
|
7b25f5b2df | |
|
2d2522cc85 | |
|
35357c407c | |
|
8c0a2c7e29 | |
|
0862c49cbd | |
|
9051609236 | |
|
68587f907c | |
|
205a1fa7ac | |
|
dd7305e4bf | |
|
e3a4a9944c | |
|
3ab76dc0c4 | |
|
7db68f72c6 | |
|
dca8d062c6 | |
|
d14c1775af | |
|
ebeb2c1951 | |
|
30aa167aa2 | |
|
ec95abbc54 | |
|
89aaad2a1f | |
|
1e56c0025e | |
|
79cd49c3b5 | |
|
d8f47b64ae | |
|
8554110d8d | |
|
d695533f5a | |
|
094f6cac76 | |
|
b511cd5e5d | |
|
0ecd82d60b | |
|
7e9b5b8d91 | |
|
919eab9781 | |
|
ef246f9407 | |
|
e3410b4616 | |
|
bf7fac8aa0 | |
|
0671aaf382 | |
|
62f4453b95 | |
|
09c763a249 | |
|
1811d0946b | |
|
8fc5eacb51 | |
|
d298cb856d | |
|
632fab0ae4 | |
|
08016f0a5f | |
|
65c61af0ab | |
|
74e3039232 | |
|
2911402aa0 | |
|
0cc0a91fb7 | |
|
3974663895 | |
|
7bb8cecdbf | |
|
12f6347593 | |
|
1636a83444 | |
|
8801876736 | |
|
c69d930faf | |
|
fd36397f16 | |
|
f6f104f10e | |
|
16e5b38ea0 | |
|
63767a8c39 | |
|
005a3a9cf4 | |
|
c9d473ff78 | |
|
c90819deca | |
|
838e76515a | |
|
81897c8969 | |
|
768fcd1a75 | |
|
3acc38342b | |
|
18ba7e448a | |
|
37d69ccf15 | |
|
6e327c5c55 | |
|
15c72c6c98 | |
|
c1a65f8823 | |
|
eafd7db62a | |
|
d63cad7852 | |
|
9a481b35b0 | |
|
87f957ef4c | |
|
72ed5f6873 | |
|
c8b51cfd53 | |
|
dc0cda2d32 | |
|
4d6bf97c13 | |
|
11b4c0a145 | |
|
e7ad256efe | |
|
8c292a1b8f | |
|
97683309b6 | |
|
298546a7b5 | |
|
3adf8aa4fe | |
|
c80b97e690 | |
|
ec8384fc4d | |
|
e1aaa041f3 | |
|
59b913c50c | |
|
f75dd44c44 | |
|
29840d723a | |
|
eb15e0cc17 | |
|
de5e1d6038 | |
|
6394cdb6b7 | |
|
1190c799f4 | |
|
21b99d5f80 | |
|
2263007326 | |
|
87cf0cfe11 | |
|
a1d30dbf0f | |
|
c29bb959d9 | |
|
657ab0cc66 | |
|
39ab8a8f72 | |
|
29a07ac1ed | |
|
db4e92d1c6 | |
|
5aed213d31 | |
|
7f69a52322 | |
|
ec146b50cc | |
|
5e6b684990 | |
|
585fd4cb8d | |
|
526c097c19 | |
|
d23fc2711c | |
|
5bf1035673 | |
|
c98f8f4c33 | |
|
7dbdc2ebd6 | |
|
bbe60682f9 | |
|
06a7ac0cb0 | |
|
c0de78ebb5 | |
|
23264f8a42 | |
|
da64f29cdc | |
|
574618f13b | |
|
6f7dedf8d2 | |
|
586958768d | |
|
6f960188d0 | |
|
d5a40c0aa6 | |
|
cfca112f6a | |
|
79f45c3631 | |
|
50104982a2 | |
|
fc93307cae | |
|
19be7728a1 | |
|
4833296432 | |
|
6528a46810 | |
|
be08a54511 | |
|
f5923481c7 | |
|
44a954d43d | |
|
808133330c | |
|
5238f72031 | |
|
13c2a06123 | |
|
89c6ddc697 | |
|
6fe1ee845d | |
|
5206db6240 | |
|
1492b905b4 | |
|
8d221465f6 | |
|
84f6f54acf | |
|
a282a9dd42 | |
|
a03f8fb701 | |
|
ed8527d00e | |
|
2f5696b20c | |
|
195e922902 | |
|
ad4b574018 |
|
@ -0,0 +1 @@
|
|||
release-tools/cloudbuild.sh
|
|
@ -17,6 +17,10 @@ about: Create a report to help us improve this project
|
|||
**Anything else we need to know?**:
|
||||
|
||||
**Environment**:
|
||||
<!--
|
||||
Run following command to get CSI driver version:
|
||||
kubectl get po -n kube-system -o yaml | grep registry.k8s | grep smb
|
||||
-->
|
||||
- CSI Driver version:
|
||||
- Kubernetes version (use `kubectl version`):
|
||||
- OS (e.g. from /etc/os-release):
|
||||
|
|
|
@ -9,7 +9,7 @@ STOP -- PLEASE READ!
|
|||
|
||||
GitHub is not the right place for support requests.
|
||||
|
||||
If you're looking for help, post your question on the [Kubernetes Slack ](http://slack.k8s.io/) Sig-AZURE Channel.
|
||||
If you're looking for help, post your question on the [Kubernetes Slack ](http://slack.k8s.io/) sig-storage Channel.
|
||||
|
||||
If the matter is security related, please disclose it privately via https://kubernetes.io/security/.
|
||||
-->
|
||||
|
|
|
@ -0,0 +1,31 @@
|
|||
version: 2
|
||||
updates:
|
||||
- package-ecosystem: gomod
|
||||
directory: "/"
|
||||
schedule:
|
||||
interval: daily
|
||||
labels:
|
||||
- "area/dependency"
|
||||
- "release-note-none"
|
||||
- "ok-to-test"
|
||||
open-pull-requests-limit: 1
|
||||
- package-ecosystem: "github-actions"
|
||||
directory: "/"
|
||||
schedule:
|
||||
interval: "daily"
|
||||
labels:
|
||||
- "area/dependency"
|
||||
- "release-note-none"
|
||||
- "ok-to-test"
|
||||
open-pull-requests-limit: 1
|
||||
- package-ecosystem: "docker"
|
||||
directory: "/cmd/smbplugin/"
|
||||
schedule:
|
||||
interval: "daily"
|
||||
time: "01:00"
|
||||
timezone: "Asia/Shanghai"
|
||||
labels:
|
||||
- "area/dependency"
|
||||
- "release-note-none"
|
||||
- "ok-to-test"
|
||||
- "kind/cleanup"
|
|
@ -0,0 +1,66 @@
|
|||
# For most projects, this workflow file will not need changing; you simply need
|
||||
# to commit it to your repository.
|
||||
#
|
||||
# You may wish to alter this file to override the set of languages analyzed,
|
||||
# or to provide custom queries or build logic.
|
||||
#
|
||||
# ******** NOTE ********
|
||||
# We have attempted to detect the languages in your repository. Please check
|
||||
# the `language` matrix defined below to confirm you have the correct set of
|
||||
# supported CodeQL languages.
|
||||
#
|
||||
name: "CodeQL"
|
||||
|
||||
on:
|
||||
push:
|
||||
branches: [ master, 'release-**' ]
|
||||
pull_request:
|
||||
# The branches below must be a subset of the branches above
|
||||
branches: [ master, 'release-**' ]
|
||||
schedule:
|
||||
- cron: '0 */24 * * *'
|
||||
|
||||
jobs:
|
||||
analyze:
|
||||
name: Analyze
|
||||
runs-on: ubuntu-latest
|
||||
permissions:
|
||||
actions: read
|
||||
contents: read
|
||||
security-events: write
|
||||
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
language: [ 'go' ]
|
||||
# CodeQL supports [ 'cpp', 'csharp', 'go', 'java', 'javascript', 'python', 'ruby' ]
|
||||
# Learn more about CodeQL language support at https://git.io/codeql-language-support
|
||||
|
||||
steps:
|
||||
- name: Set up Go 1.x
|
||||
uses: actions/setup-go@v5
|
||||
with:
|
||||
go-version: ^1.18
|
||||
id: go
|
||||
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v4
|
||||
|
||||
# Initializes the CodeQL tools for scanning.
|
||||
- name: Initialize CodeQL
|
||||
uses: github/codeql-action/init@v3
|
||||
with:
|
||||
languages: ${{ matrix.language }}
|
||||
# If you wish to specify custom queries, you can do so here or in a config file.
|
||||
# By default, queries listed here will override any specified in a config file.
|
||||
# Prefix the list here with "+" to use these queries and those in the config file.
|
||||
# queries: ./path/to/local/query, your-org/your-repo/queries@main
|
||||
|
||||
# Autobuild attempts to build any compiled languages (C/C++, C#, or Java).
|
||||
# If this step fails, then you should remove it and run the build manually (see below)
|
||||
- name: Autobuild
|
||||
run: |
|
||||
make all
|
||||
|
||||
- name: Perform CodeQL Analysis
|
||||
uses: github/codeql-action/analyze@v3
|
|
@ -0,0 +1,16 @@
|
|||
# GitHub Action to automate the identification of common misspellings in text files.
|
||||
# https://github.com/codespell-project/actions-codespell
|
||||
# https://github.com/codespell-project/codespell
|
||||
name: codespell
|
||||
on: [push, pull_request]
|
||||
jobs:
|
||||
codespell:
|
||||
name: Check for spelling errors
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- uses: codespell-project/actions-codespell@master
|
||||
with:
|
||||
check_filenames: true
|
||||
skip: ./.git,./.github/workflows/codespell.yml,.git,*.png,*.jpg,*.svg,*.sum,./vendor,go.sum
|
||||
ignore_words_list: "browseable,ro"
|
|
@ -11,13 +11,13 @@ jobs:
|
|||
steps:
|
||||
|
||||
- name: Set up Go 1.x
|
||||
uses: actions/setup-go@v2
|
||||
uses: actions/setup-go@v5
|
||||
with:
|
||||
go-version: ^1.16
|
||||
id: go
|
||||
|
||||
- name: Check out code into the Go module directory
|
||||
uses: actions/checkout@v2
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Build Test
|
||||
run: |
|
||||
|
|
|
@ -11,33 +11,25 @@ jobs:
|
|||
steps:
|
||||
|
||||
- name: Set up Go 1.x
|
||||
uses: actions/setup-go@v2
|
||||
uses: actions/setup-go@v5
|
||||
with:
|
||||
go-version: ^1.16
|
||||
id: go
|
||||
|
||||
- name: Check out code into the Go module directory
|
||||
uses: actions/checkout@v2
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Install packages
|
||||
run: |
|
||||
sudo apt update
|
||||
sudo apt install cifs-utils procps conntrack -y
|
||||
GO111MODULE=off go get github.com/rexray/gocsi/csc
|
||||
sudo apt install cifs-utils procps -y
|
||||
|
||||
- name: Build Test
|
||||
run: |
|
||||
export PATH=$PATH:$HOME/.local/bin
|
||||
make verify
|
||||
go test -covermode=count -coverprofile=profile.cov ./pkg/...
|
||||
go test -race -covermode=atomic -coverprofile=profile.cov ./pkg/...
|
||||
export DOCKER_CLI_EXPERIMENTAL=enabled && make container
|
||||
|
||||
- name: Integration Testing
|
||||
run: |
|
||||
export PATH=$PATH:$HOME/.local/bin
|
||||
make
|
||||
make integration-test
|
||||
|
||||
- name: Sanity test
|
||||
env:
|
||||
GITHUB_ACTIONS: true
|
||||
|
@ -47,9 +39,10 @@ jobs:
|
|||
echo "is running in github actions: $GITHUB_ACTIONS"
|
||||
make sanity-test
|
||||
|
||||
- name: Install goveralls
|
||||
run: go install github.com/mattn/goveralls@latest
|
||||
|
||||
- name: Send coverage
|
||||
env:
|
||||
COVERALLS_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
run: |
|
||||
GO111MODULE=off go get github.com/mattn/goveralls
|
||||
$(go env GOPATH)/bin/goveralls -coverprofile=profile.cov -service=github
|
||||
run: goveralls -coverprofile=profile.cov -service=github
|
||||
|
|
|
@ -0,0 +1,26 @@
|
|||
name: k8s api version check
|
||||
on:
|
||||
pull_request: {}
|
||||
push: {}
|
||||
|
||||
jobs:
|
||||
|
||||
build:
|
||||
name: Build
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v4
|
||||
|
||||
# https://pluto.docs.fairwinds.com/advanced/#display-options
|
||||
- name: Download pluto
|
||||
uses: FairwindsOps/pluto/github-action@master
|
||||
|
||||
- name: Check deploy folder
|
||||
run: |
|
||||
pluto detect-files -d deploy --ignore-deprecations --ignore-removals
|
||||
|
||||
- name: Check example folder
|
||||
run: |
|
||||
pluto detect-files -d deploy/example
|
|
@ -0,0 +1,29 @@
|
|||
name: ShellCheck
|
||||
on:
|
||||
push:
|
||||
tags:
|
||||
- v*
|
||||
branches:
|
||||
- master
|
||||
- release-*
|
||||
pull_request:
|
||||
branches:
|
||||
- master
|
||||
- release-*
|
||||
|
||||
jobs:
|
||||
shellcheck:
|
||||
name: Shellcheck
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- name: Run ShellCheck
|
||||
uses: ludeeus/action-shellcheck@master
|
||||
env:
|
||||
SHELLCHECK_OPTS: -e SC2034
|
||||
with:
|
||||
severity: warning
|
||||
check_together: 'yes'
|
||||
disable_matcher: false
|
||||
ignore_paths: vendor release-tools hack
|
||||
format: gcc
|
|
@ -5,12 +5,15 @@ on:
|
|||
jobs:
|
||||
go_lint:
|
||||
name: Go Lint
|
||||
runs-on: ubuntu-18.04
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout code
|
||||
uses: actions/checkout@master
|
||||
- name: Run linter
|
||||
uses: golangci/golangci-lint-action@v2
|
||||
- name: Set up Go 1.x
|
||||
uses: actions/setup-go@v5
|
||||
with:
|
||||
version: v1.29
|
||||
args: -E=gofmt,golint,misspell --timeout=30m0s
|
||||
go-version: ^1.19
|
||||
- uses: actions/checkout@master
|
||||
- name: Run linter
|
||||
uses: golangci/golangci-lint-action@v6
|
||||
with:
|
||||
version: v1.64
|
||||
args: -E=gofmt,unused,ineffassign,revive,misspell,copyloopvar,asciicheck,bodyclose,contextcheck,dogsled,durationcheck,errname,forbidigo -D=staticcheck --timeout=30m0s
|
||||
|
|
|
@ -0,0 +1,40 @@
|
|||
name: Trivy vulnerability scanner
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- master
|
||||
pull_request:
|
||||
jobs:
|
||||
build:
|
||||
name: Build
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Set up Go 1.x
|
||||
uses: actions/setup-go@v5
|
||||
with:
|
||||
go-version: 1.24.4
|
||||
id: go
|
||||
|
||||
- name: Checkout code
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Build an image from Dockerfile
|
||||
run: |
|
||||
export PUBLISH=true
|
||||
export REGISTRY=test
|
||||
export IMAGE_VERSION=latest
|
||||
export DOCKER_CLI_EXPERIMENTAL=enabled
|
||||
make container
|
||||
|
||||
- name: Run Trivy vulnerability scanner
|
||||
uses: aquasecurity/trivy-action@master
|
||||
env:
|
||||
TRIVY_DB_REPOSITORY: "public.ecr.aws/aquasecurity/trivy-db:2"
|
||||
with:
|
||||
image-ref: 'test/smb-csi:latest'
|
||||
format: 'table'
|
||||
exit-code: '1'
|
||||
ignore-unfixed: true
|
||||
vuln-type: 'os,library'
|
||||
severity: 'CRITICAL,HIGH,MEDIUM,LOW,UNKNOWN'
|
||||
|
|
@ -14,13 +14,13 @@ jobs:
|
|||
steps:
|
||||
|
||||
- name: Set up Go 1.x
|
||||
uses: actions/setup-go@v2
|
||||
uses: actions/setup-go@v5
|
||||
with:
|
||||
go-version: ^1.16
|
||||
id: go
|
||||
|
||||
- name: Check out code into the Go module directory
|
||||
uses: actions/checkout@v2
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: e2e tests
|
||||
run: |
|
||||
|
|
|
@ -11,12 +11,13 @@ jobs:
|
|||
platform: [windows-latest]
|
||||
runs-on: ${{ matrix.platform }}
|
||||
steps:
|
||||
- name: Install Go
|
||||
uses: actions/setup-go@v1
|
||||
- name: Set up Go 1.x
|
||||
uses: actions/setup-go@v5
|
||||
with:
|
||||
go-version: ${{ matrix.go-version }}
|
||||
go-version: ^1.16
|
||||
id: go
|
||||
- name: Checkout code
|
||||
uses: actions/checkout@v2
|
||||
uses: actions/checkout@v4
|
||||
- name: Build Test
|
||||
run: |
|
||||
make smb-windows
|
||||
|
@ -24,9 +25,9 @@ jobs:
|
|||
run: |
|
||||
# start the CSI Proxy before running tests on windows
|
||||
Start-Job -Name CSIProxy -ScriptBlock {
|
||||
Invoke-WebRequest https://kubernetesartifacts.azureedge.net/csi-proxy/v0.2.2/binaries/csi-proxy.tar.gz -OutFile csi-proxy.tar.gz;
|
||||
Invoke-WebRequest https://acs-mirror.azureedge.net/csi-proxy/v1.1.1/binaries/csi-proxy-v1.1.1.tar.gz -OutFile csi-proxy.tar.gz;
|
||||
tar -xvf csi-proxy.tar.gz
|
||||
.\bin\csi-proxy.exe --kubelet-csi-plugins-path $pwd --kubelet-pod-path $pwd
|
||||
.\bin\csi-proxy.exe --kubelet-path $pwd --v=5
|
||||
};
|
||||
|
||||
Start-Sleep -Seconds 30;
|
||||
|
|
|
@ -68,3 +68,5 @@ cscope.*
|
|||
|
||||
/bazel-*
|
||||
*.pyc
|
||||
|
||||
bin
|
||||
|
|
|
@ -0,0 +1,12 @@
|
|||
linters-settings:
|
||||
depguard:
|
||||
rules:
|
||||
main:
|
||||
files:
|
||||
- $all
|
||||
- "!$test"
|
||||
allow:
|
||||
- $gostd
|
||||
- k8s.io
|
||||
- sigs.k8s.io
|
||||
- github.com
|
|
@ -13,7 +13,7 @@ We have full documentation on how to get started contributing here:
|
|||
|
||||
- [Contributor License Agreement](https://git.k8s.io/community/CLA.md) Kubernetes projects require that you sign a Contributor License Agreement (CLA) before we can accept your pull requests
|
||||
- [Kubernetes Contributor Guide](http://git.k8s.io/community/contributors/guide) - Main contributor documentation, or you can just jump directly to the [contributing section](http://git.k8s.io/community/contributors/guide#contributing)
|
||||
- [Contributor Cheat Sheet](https://git.k8s.io/community/contributors/guide/contributor-cheatsheet.md) - Common resources for existing developers
|
||||
- [Contributor Cheat Sheet](https://github.com/kubernetes/community/blob/master/contributors/guide/contributor-cheatsheet/README.md) - Common resources for existing developers
|
||||
|
||||
## Mentorship
|
||||
|
||||
|
|
136
Makefile
136
Makefile
|
@ -12,50 +12,59 @@
|
|||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
|
||||
CMDS=smbplugin
|
||||
PKG = github.com/kubernetes-csi/csi-driver-smb
|
||||
GIT_COMMIT ?= $(shell git rev-parse HEAD)
|
||||
GINKGO_FLAGS = -ginkgo.v -ginkgo.timeout=2h
|
||||
GO111MODULE = on
|
||||
ifndef GOPATH
|
||||
GOPATH := $(shell go env GOPATH)
|
||||
endif
|
||||
GOBIN ?= $(GOPATH)/bin
|
||||
DOCKER_CLI_EXPERIMENTAL = enabled
|
||||
IMAGENAME ?= smb-csi
|
||||
export GOPATH GOBIN GO111MODULE DOCKER_CLI_EXPERIMENTAL
|
||||
|
||||
include release-tools/build.make
|
||||
|
||||
GIT_COMMIT := $(shell git rev-parse HEAD)
|
||||
REGISTRY ?= andyzhangx
|
||||
REGISTRY_NAME = $(shell echo $(REGISTRY) | sed "s/.azurecr.io//g")
|
||||
IMAGE_NAME ?= smb-csi
|
||||
IMAGE_VERSION ?= v1.0.0
|
||||
REGISTRY_NAME := $(shell echo $(REGISTRY) | sed "s/.azurecr.io//g")
|
||||
IMAGE_VERSION ?= v1.18.0
|
||||
VERSION ?= latest
|
||||
# Use a custom version for E2E tests if we are testing in CI
|
||||
ifdef CI
|
||||
ifndef PUBLISH
|
||||
override IMAGE_VERSION := e2e-$(GIT_COMMIT)
|
||||
endif
|
||||
endif
|
||||
IMAGE_TAG = $(REGISTRY)/$(IMAGE_NAME):$(IMAGE_VERSION)
|
||||
IMAGE_TAG_LATEST = $(REGISTRY)/$(IMAGE_NAME):latest
|
||||
BUILD_DATE ?= $(shell date -u +"%Y-%m-%dT%H:%M:%SZ")
|
||||
LDFLAGS ?= "-X ${PKG}/pkg/smb.driverVersion=${IMAGE_VERSION} -X ${PKG}/pkg/smb.gitCommit=${GIT_COMMIT} -X ${PKG}/pkg/smb.buildDate=${BUILD_DATE} -s -w -extldflags '-static'"
|
||||
E2E_HELM_OPTIONS ?= --set image.smb.repository=$(REGISTRY)/$(IMAGE_NAME) --set image.smb.tag=$(IMAGE_VERSION)
|
||||
GINKGO_FLAGS = -ginkgo.v
|
||||
GO111MODULE = on
|
||||
GOPATH ?= $(shell go env GOPATH)
|
||||
GOBIN ?= $(GOPATH)/bin
|
||||
DOCKER_CLI_EXPERIMENTAL = enabled
|
||||
export GOPATH GOBIN GO111MODULE DOCKER_CLI_EXPERIMENTAL
|
||||
|
||||
IMAGE_TAG = $(REGISTRY)/$(IMAGENAME):$(IMAGE_VERSION)
|
||||
IMAGE_TAG_LATEST = $(REGISTRY)/$(IMAGENAME):latest
|
||||
ifndef BUILD_DATE
|
||||
BUILD_DATE := $(shell date -u +"%Y-%m-%dT%H:%M:%SZ")
|
||||
endif
|
||||
LDFLAGS = -X ${PKG}/pkg/smb.driverVersion=${IMAGE_VERSION} -X ${PKG}/pkg/smb.gitCommit=${GIT_COMMIT} -X ${PKG}/pkg/smb.buildDate=${BUILD_DATE}
|
||||
EXT_LDFLAGS = -s -w -extldflags "-static"
|
||||
E2E_HELM_OPTIONS ?= --set image.smb.repository=$(REGISTRY)/$(IMAGENAME) --set image.smb.tag=$(IMAGE_VERSION) --set controller.runOnControlPlane=true
|
||||
E2E_HELM_OPTIONS += ${EXTRA_HELM_OPTIONS}
|
||||
# Generate all combination of all OS, ARCH, and OSVERSIONS for iteration
|
||||
ALL_OS = linux windows
|
||||
ALL_ARCH.linux = arm64 amd64
|
||||
ALL_OS_ARCH.linux = $(foreach arch, ${ALL_ARCH.linux}, linux-$(arch))
|
||||
ALL_ARCH.linux = arm64 amd64 ppc64le
|
||||
ALL_OS_ARCH.linux = linux-arm64 linux-arm-v7 linux-amd64 linux-ppc64le
|
||||
ALL_ARCH.windows = amd64
|
||||
ALL_OSVERSIONS.windows := 1809 1903 1909 2004
|
||||
ALL_OSVERSIONS.windows := 1809 ltsc2022
|
||||
ALL_OS_ARCH.windows = $(foreach arch, $(ALL_ARCH.windows), $(foreach osversion, ${ALL_OSVERSIONS.windows}, windows-${osversion}-${arch}))
|
||||
ALL_OS_ARCH = $(foreach os, $(ALL_OS), ${ALL_OS_ARCH.${os}})
|
||||
|
||||
# The current context of image building
|
||||
# The architecture of the image
|
||||
ARCH ?= amd64
|
||||
# OS Version for the Windows images: 1809, 1903, 1909, 2004
|
||||
# OS Version for the Windows images: 1809, ltsc2022
|
||||
OSVERSION ?= 1809
|
||||
# Output type of docker buildx build
|
||||
OUTPUT_TYPE ?= registry
|
||||
|
||||
.EXPORT_ALL_VARIABLES:
|
||||
|
||||
.PHONY: all
|
||||
all: smb
|
||||
|
||||
.PHONY: update
|
||||
|
@ -93,17 +102,22 @@ e2e-test:
|
|||
|
||||
.PHONY: e2e-bootstrap
|
||||
e2e-bootstrap: install-helm
|
||||
ifdef WINDOWS_USE_HOST_PROCESS_CONTAINERS
|
||||
(docker pull $(IMAGE_TAG) && docker pull $(IMAGE_TAG)-windows-hp) || make container-all push-manifest
|
||||
else
|
||||
docker pull $(IMAGE_TAG) || make container-all push-manifest
|
||||
endif
|
||||
ifdef TEST_WINDOWS
|
||||
helm upgrade csi-driver-smb charts/latest/csi-driver-smb --namespace kube-system --wait --timeout=15m -v=5 --debug --install \
|
||||
helm upgrade csi-driver-smb charts/$(VERSION)/csi-driver-smb --namespace kube-system --wait --timeout=15m -v=5 --debug --install \
|
||||
${E2E_HELM_OPTIONS} \
|
||||
--set windows.enabled=true \
|
||||
--set windows.useHostProcessContainers=${WINDOWS_USE_HOST_PROCESS_CONTAINERS} \
|
||||
--set linux.enabled=false \
|
||||
--set controller.replicas=1 \
|
||||
--set controller.logLevel=6 \
|
||||
--set node.logLevel=6
|
||||
else
|
||||
helm upgrade csi-driver-smb charts/latest/csi-driver-smb --namespace kube-system --wait --timeout=15m -v=5 --debug --install \
|
||||
helm upgrade csi-driver-smb charts/$(VERSION)/csi-driver-smb --namespace kube-system --wait --timeout=15m -v=5 --debug --install \
|
||||
${E2E_HELM_OPTIONS}
|
||||
endif
|
||||
|
||||
|
@ -117,30 +131,60 @@ e2e-teardown:
|
|||
|
||||
.PHONY: smb
|
||||
smb:
|
||||
CGO_ENABLED=0 GOOS=linux GOARCH=$(ARCH) go build -a -ldflags ${LDFLAGS} -mod vendor -o _output/${ARCH}/smbplugin ./pkg/smbplugin
|
||||
CGO_ENABLED=0 GOOS=linux GOARCH=$(ARCH) go build -a -ldflags "${LDFLAGS} ${EXT_LDFLAGS}" -mod vendor -o _output/${ARCH}/smbplugin ./cmd/smbplugin
|
||||
|
||||
.PHONY: smb-armv7
|
||||
smb-armv7:
|
||||
CGO_ENABLED=0 GOOS=linux GOARCH=arm go build -a -ldflags "${LDFLAGS} ${EXT_LDFLAGS}" -mod vendor -o _output/arm/v7/smbplugin ./cmd/smbplugin
|
||||
|
||||
.PHONY: smb-windows
|
||||
smb-windows:
|
||||
CGO_ENABLED=0 GOOS=windows go build -a -ldflags ${LDFLAGS} -mod vendor -o _output/${ARCH}/smbplugin.exe ./pkg/smbplugin
|
||||
CGO_ENABLED=0 GOOS=windows go build -a -ldflags "${LDFLAGS} ${EXT_LDFLAGS}" -mod vendor -o _output/${ARCH}/smbplugin.exe ./cmd/smbplugin
|
||||
|
||||
.PHONY: smb-darwin
|
||||
smb-darwin:
|
||||
CGO_ENABLED=0 GOOS=darwin go build -a -ldflags ${LDFLAGS} -mod vendor -o _output/${ARCH}/smbplugin ./pkg/smbplugin
|
||||
CGO_ENABLED=0 GOOS=darwin go build -a -ldflags "${LDFLAGS} ${EXT_LDFLAGS}" -mod vendor -o _output/${ARCH}/smbplugin ./cmd/smbplugin
|
||||
|
||||
.PHONY: container
|
||||
container: smb
|
||||
docker build --no-cache -t $(IMAGE_TAG) -f ./pkg/smbplugin/dev.Dockerfile .
|
||||
docker build --no-cache -t $(IMAGE_TAG) --output=type=docker -f ./cmd/smbplugin/Dockerfile .
|
||||
|
||||
.PHONY: container-linux
|
||||
container-linux:
|
||||
docker buildx build --pull --output=type=$(OUTPUT_TYPE) --platform="linux/$(ARCH)" \
|
||||
-t $(IMAGE_TAG)-linux-$(ARCH) --build-arg ARCH=$(ARCH) -f ./pkg/smbplugin/Dockerfile .
|
||||
docker buildx build --no-cache --pull --output=type=$(OUTPUT_TYPE) --platform="linux/$(ARCH)" \
|
||||
--provenance=false --sbom=false \
|
||||
-t $(IMAGE_TAG)-linux-$(ARCH) --build-arg ARCH=$(ARCH) -f ./cmd/smbplugin/Dockerfile .
|
||||
|
||||
.PHONY: container-linux-armv7
|
||||
container-linux-armv7:
|
||||
docker buildx build --no-cache --pull --output=type=$(OUTPUT_TYPE) --platform="linux/arm/v7" \
|
||||
--provenance=false --sbom=false \
|
||||
-t $(IMAGE_TAG)-linux-arm-v7 --build-arg ARCH=arm/v7 -f ./cmd/smbplugin/Dockerfile .
|
||||
|
||||
.PHONY: container-windows
|
||||
container-windows:
|
||||
docker buildx build --pull --output=type=$(OUTPUT_TYPE) --platform="windows/$(ARCH)" \
|
||||
docker buildx build --no-cache --pull --output=type=$(OUTPUT_TYPE) --platform="windows/$(ARCH)" \
|
||||
-t $(IMAGE_TAG)-windows-$(OSVERSION)-$(ARCH) --build-arg OSVERSION=$(OSVERSION) \
|
||||
--build-arg ARCH=$(ARCH) -f ./pkg/smbplugin/Windows.Dockerfile .
|
||||
--provenance=false --sbom=false \
|
||||
--build-arg ARCH=$(ARCH) -f ./cmd/smbplugin/Dockerfile.Windows .
|
||||
# workaround: only build hostprocess image once
|
||||
ifdef WINDOWS_USE_HOST_PROCESS_CONTAINERS
|
||||
ifeq ($(OSVERSION),ltsc2022)
|
||||
$(MAKE) container-windows-hostprocess
|
||||
$(MAKE) container-windows-hostprocess-latest
|
||||
endif
|
||||
endif
|
||||
|
||||
# Set --provenance=false to not generate the provenance (which is what causes the multi-platform index to be generated, even for a single platform).
|
||||
.PHONY: container-windows-hostprocess
|
||||
container-windows-hostprocess:
|
||||
docker buildx build --pull --output=type=$(OUTPUT_TYPE) --platform="windows/$(ARCH)" --provenance=false --sbom=false \
|
||||
-t $(IMAGE_TAG)-windows-hp -f ./cmd/smbplugin/Dockerfile.WindowsHostProcess .
|
||||
|
||||
.PHONY: container-windows-hostprocess-latest
|
||||
container-windows-hostprocess-latest:
|
||||
docker buildx build --pull --output=type=$(OUTPUT_TYPE) --platform="windows/$(ARCH)" --provenance=false --sbom=false \
|
||||
-t $(IMAGE_TAG_LATEST)-windows-hp -f ./cmd/smbplugin/Dockerfile.WindowsHostProcess .
|
||||
|
||||
.PHONY: container-all
|
||||
container-all: smb-windows
|
||||
|
@ -148,12 +192,14 @@ container-all: smb-windows
|
|||
docker buildx create --use --name=container-builder
|
||||
# enable qemu for arm64 build
|
||||
# https://github.com/docker/buildx/issues/464#issuecomment-741507760
|
||||
docker run --privileged --rm tonistiigi/binfmt --uninstall qemu-aarch64
|
||||
docker run --privileged --rm tonistiigi/binfmt --uninstall qemu-aarch64,arm
|
||||
docker run --rm --privileged tonistiigi/binfmt --install all
|
||||
for arch in $(ALL_ARCH.linux); do \
|
||||
ARCH=$${arch} $(MAKE) smb; \
|
||||
ARCH=$${arch} $(MAKE) container-linux; \
|
||||
done
|
||||
$(MAKE) smb-armv7
|
||||
$(MAKE) container-linux-armv7
|
||||
for osversion in $(ALL_OSVERSIONS.windows); do \
|
||||
OSVERSION=$${osversion} $(MAKE) container-windows; \
|
||||
done
|
||||
|
@ -163,38 +209,44 @@ push-manifest:
|
|||
docker manifest create --amend $(IMAGE_TAG) $(foreach osarch, $(ALL_OS_ARCH), $(IMAGE_TAG)-${osarch})
|
||||
# add "os.version" field to windows images (based on https://github.com/kubernetes/kubernetes/blob/master/build/pause/Makefile)
|
||||
set -x; \
|
||||
registry_prefix=$(shell (echo ${REGISTRY} | grep -Eq ".*\/.*") && echo "docker.io/" || echo ""); \
|
||||
manifest_image_folder=`echo "$${registry_prefix}${IMAGE_TAG}" | sed "s|/|_|g" | sed "s/:/-/"`; \
|
||||
for arch in $(ALL_ARCH.windows); do \
|
||||
for osversion in $(ALL_OSVERSIONS.windows); do \
|
||||
BASEIMAGE=mcr.microsoft.com/windows/nanoserver:$${osversion}; \
|
||||
full_version=`docker manifest inspect $${BASEIMAGE} | jq -r '.manifests[0].platform["os.version"]'`; \
|
||||
sed -i -r "s/(\"os\"\:\"windows\")/\0,\"os.version\":\"$${full_version}\"/" "${HOME}/.docker/manifests/$${manifest_image_folder}/$${manifest_image_folder}-windows-$${osversion}-$${arch}"; \
|
||||
docker manifest annotate --os windows --arch $${arch} --os-version $${full_version} $(IMAGE_TAG) $(IMAGE_TAG)-windows-$${osversion}-$${arch}; \
|
||||
done; \
|
||||
done
|
||||
docker manifest push --purge $(IMAGE_TAG)
|
||||
docker manifest inspect $(IMAGE_TAG)
|
||||
ifdef PUBLISH
|
||||
docker manifest create $(IMAGE_TAG_LATEST) $(foreach osarch, $(ALL_OS_ARCH), $(IMAGE_TAG)-${osarch})
|
||||
set -x; \
|
||||
for arch in $(ALL_ARCH.windows); do \
|
||||
for osversion in $(ALL_OSVERSIONS.windows); do \
|
||||
BASEIMAGE=mcr.microsoft.com/windows/nanoserver:$${osversion}; \
|
||||
full_version=`docker manifest inspect $${BASEIMAGE} | jq -r '.manifests[0].platform["os.version"]'`; \
|
||||
docker manifest annotate --os windows --arch $${arch} --os-version $${full_version} $(IMAGE_TAG_LATEST) $(IMAGE_TAG)-windows-$${osversion}-$${arch}; \
|
||||
done; \
|
||||
done
|
||||
docker manifest inspect $(IMAGE_TAG_LATEST)
|
||||
docker manifest create --amend $(IMAGE_TAG_LATEST)-windows-hp $(IMAGE_TAG_LATEST)-windows-hp
|
||||
docker manifest inspect $(IMAGE_TAG_LATEST)-windows-hp
|
||||
endif
|
||||
|
||||
.PHONY: push-latest
|
||||
push-latest:
|
||||
ifdef CI
|
||||
docker manifest push --purge $(IMAGE_TAG_LATEST)
|
||||
docker manifest push --purge $(IMAGE_TAG_LATEST)-windows-hp
|
||||
else
|
||||
docker push $(IMAGE_TAG_LATEST)
|
||||
docker push $(IMAGE_TAG_LATEST)-windows-hp
|
||||
endif
|
||||
|
||||
.PHONY: clean
|
||||
clean:
|
||||
go clean -r -x
|
||||
-rm -rf _output
|
||||
|
||||
.PHONY: install-smb-provisioner
|
||||
install-smb-provisioner:
|
||||
kubectl delete secret smbcreds --ignore-not-found
|
||||
kubectl create secret generic smbcreds --from-literal username=USERNAME --from-literal password="PASSWORD"
|
||||
kubectl delete secret smbcreds --ignore-not-found -n default
|
||||
kubectl create secret generic smbcreds --from-literal username=USERNAME --from-literal password="PASSWORD" --from-literal mountOptions="dir_mode=0777,file_mode=0777,uid=0,gid=0,mfsymlinks" -n default
|
||||
ifdef TEST_WINDOWS
|
||||
kubectl apply -f deploy/example/smb-provisioner/smb-server-lb.yaml
|
||||
else
|
||||
|
|
29
README.md
29
README.md
|
@ -1,31 +1,35 @@
|
|||
# SMB CSI Driver for Kubernetes
|
||||

|
||||

|
||||
[](https://coveralls.io/github/kubernetes-csi/csi-driver-smb?branch=master)
|
||||
[](https://app.fossa.io/projects/git%2Bgithub.com%2Fkubernetes-csi%2Fcsi-driver-smb?ref=badge_shield)
|
||||
[](https://artifacthub.io/packages/search?repo=csi-driver-smb)
|
||||
|
||||
### About
|
||||
This driver allows Kubernetes to use [SMB](https://wiki.wireshark.org/SMB) CSI volume, csi plugin name: `smb.csi.k8s.io`
|
||||
This driver allows Kubernetes to access [SMB](https://wiki.wireshark.org/SMB) server on both Linux and Windows nodes, plugin name: `smb.csi.k8s.io`. The driver requires existing configured SMB server, it supports dynamic provisioning of Persistent Volumes via Persistent Volume Claims by creating a new sub directory under SMB server.
|
||||
|
||||
### Project status: GA
|
||||
|
||||
### Container Images & Kubernetes Compatibility:
|
||||
|Driver Version | Image | supported k8s version | supported [Windows csi-proxy](https://github.com/kubernetes-csi/csi-proxy) version |
|
||||
|---------------|------------------------------------------|-----------------------|-------------------------------------|
|
||||
|master branch |mcr.microsoft.com/k8s/csi/smb-csi:latest | 1.17+ | v0.2.2+ |
|
||||
|v1.0.0 |mcr.microsoft.com/k8s/csi/smb-csi:v1.0.0 | 1.17+ | v0.2.2+ |
|
||||
|v0.6.0 |mcr.microsoft.com/k8s/csi/smb-csi:v0.6.0 | 1.15+ | v0.2.0+ |
|
||||
|v0.5.0 |mcr.microsoft.com/k8s/csi/smb-csi:v0.5.0 | 1.15+ | v0.2.0+ |
|
||||
|Driver Version | supported k8s version | supported [Windows csi-proxy](https://github.com/kubernetes-csi/csi-proxy) version |
|
||||
|---------------|-----------------------|-------------------------------------|
|
||||
|master branch | 1.21+ | v0.2.2+ |
|
||||
|v1.18.0 | 1.21+ | v0.2.2+ |
|
||||
|v1.17.0 | 1.21+ | v0.2.2+ |
|
||||
|v1.16.0 | 1.21+ | v0.2.2+ |
|
||||
|
||||
### Driver parameters
|
||||
Please refer to [`smb.csi.k8s.io` driver parameters](./docs/driver-parameters.md)
|
||||
Please refer to `smb.csi.k8s.io` [driver parameters](./docs/driver-parameters.md)
|
||||
|
||||
### Install driver on a Kubernetes cluster
|
||||
- install by [kubectl](./docs/install-smb-csi-driver.md)
|
||||
- install by [helm charts](./charts)
|
||||
- install via [helm charts](./charts)
|
||||
- install via [kubectl](./docs/install-smb-csi-driver.md)
|
||||
|
||||
### Examples
|
||||
- [How to Use the Windows CSI Proxy and CSI SMB Driver for Kubernetes](https://www.phillipsj.net/posts/how-to-use-the-windows-csi-proxy-and-csi-smb-driver-for-kubernetes/)
|
||||
- [Set up a Samba Server on a Kubernetes cluster](./deploy/example/smb-provisioner/)
|
||||
- [Basic usage](./deploy/example/e2e_usage.md)
|
||||
- [Windows](./deploy/example/windows)
|
||||
- [Volume cloning](./deploy/example/cloning)
|
||||
|
||||
### Troubleshooting
|
||||
- [CSI driver troubleshooting guide](./docs/csi-debug.md)
|
||||
|
@ -34,7 +38,8 @@ Please refer to [`smb.csi.k8s.io` driver parameters](./docs/driver-parameters.md
|
|||
Please refer to [development guide](./docs/csi-dev.md)
|
||||
|
||||
### View CI Results
|
||||
Check testgrid [sig-storage-csi-smb](https://testgrid.k8s.io/sig-storage-csi-other) dashboard.
|
||||
- testgrid [sig-storage-csi-smb](https://testgrid.k8s.io/sig-storage-csi-other) dashboard.
|
||||
- Driver image build pipeline: [post-csi-driver-smb-push-images](https://testgrid.k8s.io/sig-storage-image-build#post-csi-driver-smb-push-images)
|
||||
|
||||
### Links
|
||||
- [SMB FlexVolume driver](https://github.com/Azure/kubernetes-volume-drivers/tree/master/flexvolume/smb)
|
||||
|
|
168
charts/README.md
168
charts/README.md
|
@ -1,26 +1,40 @@
|
|||
# Install CSI driver with Helm 3
|
||||
|
||||
## Prerequisites
|
||||
- [install Helm](https://helm.sh/docs/intro/quickstart/#install-helm)
|
||||
|
||||
## install latest version
|
||||
```console
|
||||
helm repo add csi-driver-smb https://raw.githubusercontent.com/kubernetes-csi/csi-driver-smb/master/charts
|
||||
helm install csi-driver-smb csi-driver-smb/csi-driver-smb --namespace kube-system
|
||||
```
|
||||
- [install Helm](https://helm.sh/docs/intro/quickstart/#install-helm)
|
||||
|
||||
### Tips
|
||||
|
||||
- run smb-controller on control plane node: `--set controller.runOnControlPlane=true`
|
||||
- Microk8s based kubernetes recommended settings:
|
||||
- `--set linux.kubelet="/var/snap/microk8s/common/var/lib/kubelet"` - sets correct path to microk8s kubelet even though a user has a folder link to it.
|
||||
|
||||
### install a specific version
|
||||
|
||||
```console
|
||||
helm repo add csi-driver-smb https://raw.githubusercontent.com/kubernetes-csi/csi-driver-smb/master/charts
|
||||
helm install csi-driver-smb csi-driver-smb/csi-driver-smb --namespace kube-system --version v1.0.0
|
||||
helm install csi-driver-smb csi-driver-smb/csi-driver-smb --namespace kube-system --version v1.18.0
|
||||
```
|
||||
|
||||
### install driver with customized driver name, deployment name
|
||||
|
||||
> only supported from `v1.2.0`+
|
||||
|
||||
- following example would install a driver with name `smb2`
|
||||
|
||||
```console
|
||||
helm install csi-driver-smb2 csi-driver-smb/csi-driver-smb --namespace kube-system --set driver.name="smb2.csi.k8s.io" --set controller.name="csi-smb2-controller" --set rbac.name=smb2 --set serviceAccount.controller=csi-smb2-controller-sa --set serviceAccount.node=csi-smb2-node-sa --set node.name=csi-smb2-node --set node.livenessProbe.healthPort=39643
|
||||
```
|
||||
|
||||
### search for all available chart versions
|
||||
|
||||
```console
|
||||
helm search repo -l csi-driver-smb
|
||||
```
|
||||
|
||||
## uninstall CSI driver
|
||||
|
||||
```console
|
||||
helm uninstall csi-driver-smb -n kube-system
|
||||
```
|
||||
|
@ -29,41 +43,109 @@ helm uninstall csi-driver-smb -n kube-system
|
|||
|
||||
The following table lists the configurable parameters of the latest SMB CSI Driver chart and default values.
|
||||
|
||||
| Parameter | Description | Default |
|
||||
|---------------------------------------------------|------------------------------------------------------------|-------------------------------------------------------------------|
|
||||
| `image.smb.repository` | csi-driver-smb docker image | mcr.microsoft.com/k8s/csi/smb-csi |
|
||||
| `image.smb.tag` | csi-driver-smb docker image tag | latest |
|
||||
| `image.smb.pullPolicy` | csi-driver-smb image pull policy | IfNotPresent |
|
||||
| `image.csiProvisioner.repository` | csi-provisioner docker image | mcr.microsoft.com/oss/kubernetes-csi/csi-provisioner |
|
||||
| `image.csiProvisioner.tag` | csi-provisioner docker image tag | v1.4.0 |
|
||||
| `image.csiProvisioner.pullPolicy` | csi-provisioner image pull policy | IfNotPresent |
|
||||
| `image.livenessProbe.repository` | liveness-probe docker image | mcr.microsoft.com/oss/kubernetes-csi/livenessprobe |
|
||||
| `image.livenessProbe.tag` | liveness-probe docker image tag | v2.3.0 |
|
||||
| `image.livenessProbe.pullPolicy` | liveness-probe image pull policy | IfNotPresent |
|
||||
| `image.nodeDriverRegistrar.repository` | csi-node-driver-registrar docker image | mcr.microsoft.com/oss/kubernetes-csi/csi-node-driver-registrar |
|
||||
| `image.nodeDriverRegistrar.tag` | csi-node-driver-registrar docker image tag | v2.2.0 |
|
||||
| `image.nodeDriverRegistrar.pullPolicy` | csi-node-driver-registrar image pull policy | IfNotPresent |
|
||||
| `imagePullSecrets` | Specify docker-registry secret names as an array | [] (does not add image pull secrets to deployed pods) |
|
||||
| `serviceAccount.create` | whether create service account of csi-smb-controller | true |
|
||||
| `rbac.create` | whether create rbac of csi-smb-controller | true |
|
||||
| `controller.replicas` | the replicas of csi-smb-controller | 2 |
|
||||
| `controller.metricsPort` | metrics port of csi-smb-controller |29644 |
|
||||
| `controller.logLevel` | controller driver log level |`5` |
|
||||
| `node.metricsPort` | metrics port of csi-smb-node |29645
|
||||
| `node.logLevel` | node driver log level |`5` |
|
||||
| `linux.enabled` | whether enable linux feature | true |
|
||||
| `linux.kubelet` | configure kubelet directory path on Linux agent node node | `/var/lib/kubelet` |
|
||||
| `windows.enabled` | whether enable windows feature | false |
|
||||
| `windows.kubelet` | configure kubelet directory path on Windows agent node | `'C:\var\lib\kubelet'` |
|
||||
| `windows.image.livenessProbe.repository` | windows liveness-probe docker image | mcr.microsoft.com/oss/kubernetes-csi/livenessprobe |
|
||||
| `windows.image.livenessProbe.tag` | windows liveness-probe docker image tag | v2.3.0 |
|
||||
| `windows.image.livenessProbe.pullPolicy` | windows liveness-probe image pull policy | IfNotPresent |
|
||||
| `windows.image.nodeDriverRegistrar.repository` | windows csi-node-driver-registrar docker image | mcr.microsoft.com/oss/kubernetes-csi/csi-node-driver-registrar |
|
||||
| `windows.image.nodeDriverRegistrar.tag` | windows csi-node-driver-registrar docker image tag | v2.2.0 |
|
||||
| `windows.image.nodeDriverRegistrar.pullPolicy` | windows csi-node-driver-registrar image pull policy | IfNotPresent |
|
||||
| `controller.runOnMaster` | run controller on master node | false |
|
||||
| `node.livenessProbe.healthPort ` | the health check port for liveness probe | `29643` |
|
||||
| Parameter | Description | Default |
|
||||
|---------------------------------------------------------|------------------------------------------------------------------------------------------------------------|---------------------------------------------------------|
|
||||
| `driver.name` | alternative driver name | `smb.csi.k8s.io` |
|
||||
| `feature.enableGetVolumeStats` | allow GET_VOLUME_STATS on agent node | `false` |
|
||||
| `image.baseRepo` | base repository of driver images | `registry.k8s.io/sig-storage` |
|
||||
| `image.smb.repository` | csi-driver-smb docker image | `gcr.io/k8s-staging-sig-storage/smbplugin` |
|
||||
| `image.smb.tag` | csi-driver-smb docker image tag | `canary` |
|
||||
| `image.smb.pullPolicy` | csi-driver-smb image pull policy | `IfNotPresent` |
|
||||
| `image.csiProvisioner.tag` | csi-provisioner docker image tag | `v5.3.0` |
|
||||
| `image.csiProvisioner.pullPolicy` | csi-provisioner image pull policy | `IfNotPresent` |
|
||||
| `image.livenessProbe.repository` | liveness-probe docker image | `/livenessprobe` |
|
||||
| `image.livenessProbe.tag` | liveness-probe docker image tag | `v2.16.0` |
|
||||
| `image.livenessProbe.pullPolicy` | liveness-probe image pull policy | `IfNotPresent` |
|
||||
| `image.nodeDriverRegistrar.repository` | csi-node-driver-registrar docker image | `/csi-node-driver-registrar` |
|
||||
| `image.nodeDriverRegistrar.tag` | csi-node-driver-registrar docker image tag | `v2.14.0` |
|
||||
| `image.nodeDriverRegistrar.pullPolicy` | csi-node-driver-registrar image pull policy | `IfNotPresent` |
|
||||
| `imagePullSecrets` | Specify docker-registry secret names as an array | `[]` (does not add image pull secrets to deployed pods) |
|
||||
| `serviceAccount.create` | whether create service account of csi-smb-controller | `true` |
|
||||
| `rbac.create` | whether create rbac of csi-smb-controller | `true` |
|
||||
| `rbac.name` | driver name in rbac role | `true` |
|
||||
| `podAnnotations` | collection of annotations to add to all the pods | `{}` |
|
||||
| `podLabels` | collection of labels to add to all the pods | `{}` |
|
||||
| `priorityClassName` | priority class name to be added to pods | `system-cluster-critical` |
|
||||
| `securityContext` | security context to be added to pods | `{ seccompProfile: {type: RuntimeDefault} }` |
|
||||
| `controller.name` | name of driver deployment | `csi-smb-controller` |
|
||||
| `controller.replicas` | replica num of csi-smb-controller | `1` |
|
||||
| `controller.dnsPolicy` | dnsPolicy of driver node daemonset, available values: `Default`, `ClusterFirstWithHostNet`, `ClusterFirst` | `ClusterFirstWithHostNet` |
|
||||
| `controller.metricsPort` | metrics port of csi-smb-controller | `29644` |
|
||||
| `controller.livenessProbe.healthPort ` | health check port for liveness probe | `29642` |
|
||||
| `controller.logLevel` | controller driver log level | `5` |
|
||||
| `controller.workingMountDir` | working directory for provisioner to mount smb shares temporarily | `/tmp` |
|
||||
| `controller.runOnMaster` | run controller on master node | `false` |
|
||||
| `controller.runOnControlPlane` | run controller on control plane node | `false` |
|
||||
| `controller.resources.csiProvisioner.limits.memory` | csi-provisioner memory limits | `400Mi` |
|
||||
| `controller.resources.csiProvisioner.requests.cpu` | csi-provisioner cpu requests limits | `10m` |
|
||||
| `controller.resources.csiProvisioner.requests.memory` | csi-provisioner memory requests limits | `20Mi` |
|
||||
| `controller.resources.livenessProbe.limits.memory` | liveness-probe memory limits | `300Mi` |
|
||||
| `controller.resources.livenessProbe.requests.cpu` | liveness-probe cpu requests limits | `10m` |
|
||||
| `controller.resources.livenessProbe.requests.memory` | liveness-probe memory requests limits | `20Mi` |
|
||||
| `controller.resources.smb.limits.memory` | smb-csi-driver memory limits | `200Mi` |
|
||||
| `controller.resources.smb.requests.cpu` | smb-csi-driver cpu requests limits | `10m` |
|
||||
| `controller.resources.smb.requests.memory` | smb-csi-driver memory requests limits | `20Mi` |
|
||||
| `controller.resources.csiResizer.limits.memory` | csi-resizer memory limits | `400Mi` |
|
||||
| `controller.resources.csiResizer.requests.cpu` | csi-resizer cpu requests limits | `10m` |
|
||||
| `controller.resources.csiResizer.requests.memory` | csi-resizer memory requests limits | `20Mi` |
|
||||
| `controller.affinity` | controller pod affinity | `{}` |
|
||||
| `controller.nodeSelector` | controller pod node selector | `{}` |
|
||||
| `controller.tolerations` | controller pod tolerations | `[]` |
|
||||
| `node.maxUnavailable` | `maxUnavailable` value of csi-smb-node daemonset | `1` |
|
||||
| `node.livenessProbe.healthPort ` | health check port for liveness probe | `29643` |
|
||||
| `node.logLevel` | node driver log level | `5` |
|
||||
| `node.affinity` | node pod affinity | {} |
|
||||
| `node.nodeSelector` | node pod node selector | `{}` |
|
||||
| `linux.enabled` | whether enable linux feature | `true` |
|
||||
| `linux.dsName` | name of driver daemonset on linux | `csi-smb-node` |
|
||||
| `linux.dnsPolicy` | dnsPolicy of driver node daemonset, available values: `Default`, `ClusterFirstWithHostNet`, `ClusterFirst` | `ClusterFirstWithHostNet` |
|
||||
| `linux.kubelet` | configure kubelet directory path on Linux agent node node | `/var/lib/kubelet` |
|
||||
| `linux.krb5CacheDirectory` | directory for kerberos cache on Linux agent node node, empty string means default | `/var/lib/kubelet/kerberos/` |
|
||||
| `linux.krb5Prefix` | prefix for kerberos cache on Linux agent node node, empty string means default | `krb5cc_` |
|
||||
| `linux.resources.livenessProbe.limits.memory` | liveness-probe memory limits | `100Mi` |
|
||||
| `linux.resources.livenessProbe.requests.cpu` | liveness-probe cpu requests limits | `10m` |
|
||||
| `linux.resources.livenessProbe.requests.memory` | liveness-probe memory requests limits | `20Mi` |
|
||||
| `linux.resources.nodeDriverRegistrar.limits.memory` | csi-node-driver-registrar memory limits | `100Mi` |
|
||||
| `linux.resources.nodeDriverRegistrar.requests.cpu` | csi-node-driver-registrar cpu requests limits | `10m` |
|
||||
| `linux.resources.nodeDriverRegistrar.requests.memory` | csi-node-driver-registrar memory requests limits | `20Mi` |
|
||||
| `linux.resources.smb.limits.memory` | smb-csi-driver memory limits | `200Mi` |
|
||||
| `linux.resources.smb.requests.cpu` | smb-csi-driver cpu requests limits | `10m` |
|
||||
| `linux.resources.smb.requests.memory` | smb-csi-driver memory requests limits | `20Mi` |
|
||||
| `windows.enabled` | whether enable windows feature | `true` |
|
||||
| `windows.useHostProcessContainers` | whether deploy driver daemonset with HostProcess containers on windows | `true` |
|
||||
| `windows.dsName` | name of driver daemonset on windows | `csi-smb-node-win` |
|
||||
| `windows.removeSMBMappingDuringUnmount` | remove SMBMapping during unmount on Windows node windows | `true` |
|
||||
| `windows.resources.livenessProbe.limits.memory` | liveness-probe memory limits | `200Mi` |
|
||||
| `windows.resources.livenessProbe.requests.cpu` | liveness-probe cpu requests limits | `10m` |
|
||||
| `windows.resources.livenessProbe.requests.memory` | liveness-probe memory requests limits | `20Mi` |
|
||||
| `windows.resources.nodeDriverRegistrar.limits.memory` | csi-node-driver-registrar memory limits | `200Mi` |
|
||||
| `windows.resources.nodeDriverRegistrar.requests.cpu` | csi-node-driver-registrar cpu requests limits | `10m` |
|
||||
| `windows.resources.nodeDriverRegistrar.requests.memory` | csi-node-driver-registrar memory requests limits | `20Mi` |
|
||||
| `windows.resources.smb.limits.memory` | smb-csi-driver memory limits | `400Mi` |
|
||||
| `windows.resources.smb.requests.cpu` | smb-csi-driver cpu requests limits | `10m` |
|
||||
| `windows.resources.smb.requests.memory` | smb-csi-driver memory requests limits | `20Mi` |
|
||||
| `windows.kubelet` | configure kubelet directory path on Windows agent node | `'C:\var\lib\kubelet'` |
|
||||
|
||||
### Csi Proxy support on windows
|
||||
> if you have set `windows.useHostProcessContainers` as `true`, csi-proxy is not needed by CSI driver.
|
||||
|
||||
The helm can setup the host-process deamonset for the csi proxy, by setting windows.csiproxy.enabled to true.
|
||||
|
||||
The following table lists the configurable parameters of the latest CSI-proxy Driver chart and default values.
|
||||
|
||||
| Parameter | Description | Default |
|
||||
|---------------------------------------------------------|------------------------------------------------------------------------------------------------------------|---------------------------------------------------------|
|
||||
| `windows.csiproxy.enabled` | whether enable csi-proxy daemonset | `false` |
|
||||
| `windows.csiproxy.dsName` | name of driver csi-proxy daemonset on windows | `csi-proxy-win` |
|
||||
| `windows.csiproxy.username` | name of windows user on the host machine to run the proxy as | `NT AUTHORITY\\SYSTEM` |
|
||||
| `windows.csiproxy.affinity` | controller pod affinity | `{}` |
|
||||
| `windows.csiproxy.nodeSelector` | controller pod node selector | `{"kubernetes.io/os": windows} |
|
||||
| `windows.csiproxy.tolerations` | controller pod tolerations | `[]` |
|
||||
| `image.csiproxy.repository` | csiproxy docker image | `ghcr.io/kubernetes-sigs/sig-windows/csi-proxy` |
|
||||
| `image.csiproxy.tag` | csiproxy docker image tag | `v1.1.2` |
|
||||
| `image.csiproxy.pullPolicy` | csiproxy image pull policy | `IfNotPresent` |
|
||||
|
||||
## troubleshooting
|
||||
- Add `--wait -v=5 --debug` in `helm install` command to get detailed error
|
||||
- Use `kubectl describe` to acquire more info
|
||||
|
||||
- Add `--wait -v=5 --debug` in `helm install` command to get detailed error
|
||||
- Use `kubectl describe` to acquire more info
|
||||
|
|
|
@ -0,0 +1,4 @@
|
|||
repositoryID: f8826546-4767-4e66-999c-3ad144141be3
|
||||
owners:
|
||||
- name: andyzhangx
|
||||
email: xiazhang@microsoft.com
|
|
@ -2,44 +2,197 @@ apiVersion: v1
|
|||
entries:
|
||||
csi-driver-smb:
|
||||
- apiVersion: v1
|
||||
appVersion: latest
|
||||
created: "2021-06-02T08:24:46.429154026Z"
|
||||
appVersion: 1.18.0
|
||||
created: "2025-05-12T03:19:29.368170409Z"
|
||||
description: SMB CSI Driver for Kubernetes
|
||||
digest: 7d9253acb58fe4ae6128499c3820fae3c34409bac78cf5b3b15b5296129f45aa
|
||||
digest: 0e1be374c05208df165aee068b74b7e3da6af1664aa62e19b27953d659f39bca
|
||||
name: csi-driver-smb
|
||||
urls:
|
||||
- https://raw.githubusercontent.com/kubernetes-csi/csi-driver-smb/master/charts/latest/csi-driver-smb-v1.0.0.tgz
|
||||
version: v1.0.0
|
||||
- https://raw.githubusercontent.com/kubernetes-csi/csi-driver-smb/master/charts/v1.18.0/csi-driver-smb-1.18.0.tgz
|
||||
version: 1.18.0
|
||||
- apiVersion: v1
|
||||
appVersion: v1.17.0
|
||||
created: "2025-05-12T03:19:29.367522996Z"
|
||||
description: SMB CSI Driver for Kubernetes
|
||||
digest: 9ff1f5c12e399180b51d723280282e786051a707208d7843aedf656a7669b988
|
||||
name: csi-driver-smb
|
||||
urls:
|
||||
- https://raw.githubusercontent.com/kubernetes-csi/csi-driver-smb/master/charts/v1.17.0/csi-driver-smb-v1.17.0.tgz
|
||||
version: v1.17.0
|
||||
- apiVersion: v1
|
||||
appVersion: v1.16.0
|
||||
created: "2025-05-12T03:19:29.366857789Z"
|
||||
description: SMB CSI Driver for Kubernetes
|
||||
digest: 2c65fecc535e072ea322752ef6d3500bb494bc746b63f5b1ed98cd64f82a1d9e
|
||||
name: csi-driver-smb
|
||||
urls:
|
||||
- https://raw.githubusercontent.com/kubernetes-csi/csi-driver-smb/master/charts/v1.16.0/csi-driver-smb-v1.16.0.tgz
|
||||
version: v1.16.0
|
||||
- apiVersion: v1
|
||||
appVersion: v1.15.0
|
||||
created: "2025-05-12T03:19:29.36626918Z"
|
||||
description: SMB CSI Driver for Kubernetes
|
||||
digest: 1f006480427f88f781c3f7b3cf5e3d0429c68bb082a6a9337363ea5ef5a5cd0b
|
||||
name: csi-driver-smb
|
||||
urls:
|
||||
- https://raw.githubusercontent.com/kubernetes-csi/csi-driver-smb/master/charts/v1.15.0/csi-driver-smb-v1.15.0.tgz
|
||||
version: v1.15.0
|
||||
- apiVersion: v1
|
||||
appVersion: v1.14.0
|
||||
created: "2025-05-12T03:19:29.365636738Z"
|
||||
description: SMB CSI Driver for Kubernetes
|
||||
digest: a84e22518f5e6cd1d3fcb06ef8c7616371c96400e8db6227bc84cd0474f6cce1
|
||||
name: csi-driver-smb
|
||||
urls:
|
||||
- https://raw.githubusercontent.com/kubernetes-csi/csi-driver-smb/master/charts/v1.14.0/csi-driver-smb-v1.14.0.tgz
|
||||
version: v1.14.0
|
||||
- apiVersion: v1
|
||||
appVersion: v1.13.0
|
||||
created: "2025-05-12T03:19:29.36433441Z"
|
||||
description: SMB CSI Driver for Kubernetes
|
||||
digest: 21ee866afbf5a59892c5588b00518e0f7853beac7643e8e558d440a260c6f142
|
||||
name: csi-driver-smb
|
||||
urls:
|
||||
- https://raw.githubusercontent.com/kubernetes-csi/csi-driver-smb/master/charts/v1.13.0/csi-driver-smb-v1.13.0.tgz
|
||||
version: v1.13.0
|
||||
- apiVersion: v1
|
||||
appVersion: v1.12.0
|
||||
created: "2025-05-12T03:19:29.363163359Z"
|
||||
description: SMB CSI Driver for Kubernetes
|
||||
digest: fccc852a3e723b9d273ea21d1d59697a0a94b65665406de1fd7c461bd894d2a3
|
||||
name: csi-driver-smb
|
||||
urls:
|
||||
- https://raw.githubusercontent.com/kubernetes-csi/csi-driver-smb/master/charts/v1.12.0/csi-driver-smb-v1.12.0.tgz
|
||||
version: v1.12.0
|
||||
- apiVersion: v1
|
||||
appVersion: v1.11.0
|
||||
created: "2025-05-12T03:19:29.362593759Z"
|
||||
description: SMB CSI Driver for Kubernetes
|
||||
digest: 1c0f9b72801cbeb240d06dfe665a58e4b6ac0c25c5315ee5b9fe7972362796d0
|
||||
name: csi-driver-smb
|
||||
urls:
|
||||
- https://raw.githubusercontent.com/kubernetes-csi/csi-driver-smb/master/charts/v1.11.0/csi-driver-smb-v1.11.0.tgz
|
||||
version: v1.11.0
|
||||
- apiVersion: v1
|
||||
appVersion: v1.10.0
|
||||
created: "2025-05-12T03:19:29.362056127Z"
|
||||
description: SMB CSI Driver for Kubernetes
|
||||
digest: 82e460e6fa80da9ca523a86c28e001e15595d27c3507864f2123dbadc64c7fec
|
||||
name: csi-driver-smb
|
||||
urls:
|
||||
- https://raw.githubusercontent.com/kubernetes-csi/csi-driver-smb/master/charts/v1.10.0/csi-driver-smb-v1.10.0.tgz
|
||||
version: v1.10.0
|
||||
- apiVersion: v1
|
||||
appVersion: v1.9.0
|
||||
created: "2025-05-12T03:19:29.373851592Z"
|
||||
description: SMB CSI Driver for Kubernetes
|
||||
digest: 5c78c650b9755e508afecb3f6a554c549509023f7b0610b53853a41783d1c08f
|
||||
name: csi-driver-smb
|
||||
urls:
|
||||
- https://raw.githubusercontent.com/kubernetes-csi/csi-driver-smb/master/charts/v1.9.0/csi-driver-smb-v1.9.0.tgz
|
||||
version: v1.9.0
|
||||
- apiVersion: v1
|
||||
appVersion: v1.8.0
|
||||
created: "2025-05-12T03:19:29.372178048Z"
|
||||
description: SMB CSI Driver for Kubernetes
|
||||
digest: d19d156c2143d753085bcbcb32506f8ebd7ebdee275e726f9c8d774a1f0b9f34
|
||||
name: csi-driver-smb
|
||||
urls:
|
||||
- https://raw.githubusercontent.com/kubernetes-csi/csi-driver-smb/master/charts/v1.8.0/csi-driver-smb-v1.8.0.tgz
|
||||
version: v1.8.0
|
||||
- apiVersion: v1
|
||||
appVersion: v1.7.0
|
||||
created: "2025-05-12T03:19:29.371130582Z"
|
||||
description: SMB CSI Driver for Kubernetes
|
||||
digest: 65594a1ff09d912a33ee0674bba1fad1f7c717638a281fb68bcfa2c98c288453
|
||||
name: csi-driver-smb
|
||||
urls:
|
||||
- https://raw.githubusercontent.com/kubernetes-csi/csi-driver-smb/master/charts/v1.7.0/csi-driver-smb-v1.7.0.tgz
|
||||
version: v1.7.0
|
||||
- apiVersion: v1
|
||||
appVersion: v1.6.0
|
||||
created: "2025-05-12T03:19:29.37063084Z"
|
||||
description: SMB CSI Driver for Kubernetes
|
||||
digest: 31dd4c8b0b0d4a61565631aa5b433b18b5375aeb24812bf4fa9958d5b7917485
|
||||
name: csi-driver-smb
|
||||
urls:
|
||||
- https://raw.githubusercontent.com/kubernetes-csi/csi-driver-smb/master/charts/v1.6.0/csi-driver-smb-v1.6.0.tgz
|
||||
version: v1.6.0
|
||||
- apiVersion: v1
|
||||
appVersion: v1.5.0
|
||||
created: "2025-05-12T03:19:29.370116235Z"
|
||||
description: SMB CSI Driver for Kubernetes
|
||||
digest: b7dc9e9dc5d46df12a6d1a5643efe86439bff6c36867968f772e6899692083d6
|
||||
name: csi-driver-smb
|
||||
urls:
|
||||
- https://raw.githubusercontent.com/kubernetes-csi/csi-driver-smb/master/charts/v1.5.0/csi-driver-smb-v1.5.0.tgz
|
||||
version: v1.5.0
|
||||
- apiVersion: v1
|
||||
appVersion: v1.4.0
|
||||
created: "2025-05-12T03:19:29.3696143Z"
|
||||
description: SMB CSI Driver for Kubernetes
|
||||
digest: 9b1a6166ab72c09d0eefb448ecc998639b9f6255afb00bfc0ae0a4fdad76f119
|
||||
name: csi-driver-smb
|
||||
urls:
|
||||
- https://raw.githubusercontent.com/kubernetes-csi/csi-driver-smb/master/charts/v1.4.0/csi-driver-smb-v1.4.0.tgz
|
||||
version: v1.4.0
|
||||
- apiVersion: v1
|
||||
appVersion: v1.3.0
|
||||
created: "2025-05-12T03:19:29.369112521Z"
|
||||
description: SMB CSI Driver for Kubernetes
|
||||
digest: d2236d36f1cb24139ddf87ea87229369ed856efc42330e656330f6cfa7635858
|
||||
name: csi-driver-smb
|
||||
urls:
|
||||
- https://raw.githubusercontent.com/kubernetes-csi/csi-driver-smb/master/charts/v1.3.0/csi-driver-smb-v1.3.0.tgz
|
||||
version: v1.3.0
|
||||
- apiVersion: v1
|
||||
appVersion: v1.2.0
|
||||
created: "2025-05-12T03:19:29.368654242Z"
|
||||
description: SMB CSI Driver for Kubernetes
|
||||
digest: 9d7099165db24d5412c95b298a59cca9b233ab8800d04efd34bb055812390915
|
||||
name: csi-driver-smb
|
||||
urls:
|
||||
- https://raw.githubusercontent.com/kubernetes-csi/csi-driver-smb/master/charts/v1.2.0/csi-driver-smb-v1.2.0.tgz
|
||||
version: v1.2.0
|
||||
- apiVersion: v1
|
||||
appVersion: v1.1.0
|
||||
created: "2025-05-12T03:19:29.361497493Z"
|
||||
description: SMB CSI Driver for Kubernetes
|
||||
digest: 5b39613c9104db06815ee2d42fec8507c3bb2038264513449079a4eb5b6530a8
|
||||
name: csi-driver-smb
|
||||
urls:
|
||||
- https://raw.githubusercontent.com/kubernetes-csi/csi-driver-smb/master/charts/v1.1.0/csi-driver-smb-v1.1.0.tgz
|
||||
version: v1.1.0
|
||||
- apiVersion: v1
|
||||
appVersion: v1.0.0
|
||||
created: "2021-06-02T08:24:46.434966361Z"
|
||||
created: "2025-05-12T03:19:29.361028833Z"
|
||||
description: SMB CSI Driver for Kubernetes
|
||||
digest: 2360e6e088403818944cc057ad3bf0f99ae295a421d4637f1d3c7cbe3c4ab27f
|
||||
digest: 3e4721dd007cc51750f7221be8f66ec7e287c83a8cdcfeb9a71c30f526b06dc4
|
||||
name: csi-driver-smb
|
||||
urls:
|
||||
- https://raw.githubusercontent.com/kubernetes-csi/csi-driver-smb/master/charts/v1.0.0/csi-driver-smb-v1.0.0.tgz
|
||||
version: v1.0.0
|
||||
- apiVersion: v1
|
||||
appVersion: v0.6.0
|
||||
created: "2021-06-02T08:24:46.434343357Z"
|
||||
created: "2025-05-12T03:19:29.360741662Z"
|
||||
description: SMB CSI Driver for Kubernetes
|
||||
digest: 5ad0b7b9f84fa313387a9bbfb0ed59cff70b10633cedf81e7b77af936ff2806e
|
||||
digest: 6fc9d05bc78ca98fb17071b7f5ad05b4c071f2403114d72feae99fb89ca1fc9f
|
||||
name: csi-driver-smb
|
||||
urls:
|
||||
- https://raw.githubusercontent.com/kubernetes-csi/csi-driver-smb/master/charts/v0.6.0/csi-driver-smb-v0.6.0.tgz
|
||||
version: v0.6.0
|
||||
- apiVersion: v1
|
||||
appVersion: v0.5.0
|
||||
created: "2021-06-02T08:24:46.433623353Z"
|
||||
created: "2025-05-12T03:19:29.360466702Z"
|
||||
description: SMB CSI Driver for Kubernetes
|
||||
digest: b400ef563745dcaf4a819a05b1e8a11d9442ae1ddf46da70542d5c87cd4cd9a1
|
||||
digest: 8264c6630806325613234c2d7951c188d073607e6f0f89d781ec32afed04157b
|
||||
name: csi-driver-smb
|
||||
urls:
|
||||
- https://raw.githubusercontent.com/kubernetes-csi/csi-driver-smb/master/charts/v0.5.0/csi-driver-smb-v0.5.0.tgz
|
||||
version: v0.5.0
|
||||
- apiVersion: v1
|
||||
appVersion: v0.4.0
|
||||
created: "2021-06-02T08:24:46.432629847Z"
|
||||
created: "2025-05-12T03:19:29.360192361Z"
|
||||
description: SMB CSI Driver for Kubernetes
|
||||
digest: fb6d581ba5d4d1d78ca468f6daa4a24c47bb147b74d005d3c394521b4e534a3e
|
||||
name: csi-driver-smb
|
||||
|
@ -48,7 +201,7 @@ entries:
|
|||
version: v0.4.0
|
||||
- apiVersion: v1
|
||||
appVersion: v0.3.0
|
||||
created: "2021-06-02T08:24:46.431701541Z"
|
||||
created: "2025-05-12T03:19:29.359911399Z"
|
||||
description: SMB CSI Driver for Kubernetes
|
||||
digest: ee9e58db6d4a95491e2012c6607126bbff827b9c439e90e9a9798d2a73b0cb22
|
||||
name: csi-driver-smb
|
||||
|
@ -57,11 +210,29 @@ entries:
|
|||
version: v0.3.0
|
||||
- apiVersion: v1
|
||||
appVersion: v0.2.0
|
||||
created: "2021-06-02T08:24:46.430235133Z"
|
||||
created: "2025-05-12T03:19:29.359658821Z"
|
||||
description: SMB CSI Driver for Kubernetes
|
||||
digest: 8d8667106306d78dea9f63e5a3e8ee7ad2b60f86bd625f5968e37ca6a0cad317
|
||||
name: csi-driver-smb
|
||||
urls:
|
||||
- https://raw.githubusercontent.com/kubernetes-csi/csi-driver-smb/master/charts/v0.2.0/csi-driver-smb-v0.2.0.tgz
|
||||
version: v0.2.0
|
||||
generated: "2021-06-02T08:24:46.427970719Z"
|
||||
- apiVersion: v1
|
||||
appVersion: latest
|
||||
created: "2025-05-12T03:19:29.373275812Z"
|
||||
description: SMB CSI Driver for Kubernetes
|
||||
digest: 37a15bd85f6f9f2df20aed317d9baa3774128552488d02c2897d561e67777963
|
||||
name: csi-driver-smb
|
||||
urls:
|
||||
- https://raw.githubusercontent.com/kubernetes-csi/csi-driver-smb/master/charts/v1.9.0/csi-driver-smb-v0.0.0.tgz
|
||||
version: v0.0.0
|
||||
- apiVersion: v1
|
||||
appVersion: latest
|
||||
created: "2025-05-12T03:19:29.359346474Z"
|
||||
description: SMB CSI Driver for Kubernetes
|
||||
digest: ceed2b6a0eb6e2b7c528fd9aacc88a87d39414e092714f411b5cabfed5a93e0c
|
||||
name: csi-driver-smb
|
||||
urls:
|
||||
- https://raw.githubusercontent.com/kubernetes-csi/csi-driver-smb/master/charts/latest/csi-driver-smb-v0.0.0.tgz
|
||||
version: v0.0.0
|
||||
generated: "2025-05-12T03:19:29.358492786Z"
|
||||
|
|
Binary file not shown.
Binary file not shown.
|
@ -2,4 +2,4 @@ apiVersion: v1
|
|||
appVersion: latest
|
||||
description: SMB CSI Driver for Kubernetes
|
||||
name: csi-driver-smb
|
||||
version: v1.0.0
|
||||
version: v0.0.0
|
||||
|
|
|
@ -2,4 +2,4 @@ The CSI SMB Driver is getting deployed to your cluster.
|
|||
|
||||
To check CSI SMB Driver pods status, please run:
|
||||
|
||||
kubectl --namespace={{ .Release.Namespace }} get pods --selector="release={{ .Release.Name }}" --watch
|
||||
kubectl --namespace={{ .Release.Namespace }} get pods --selector="app.kubernetes.io/name={{ .Release.Name }}" --watch
|
||||
|
|
|
@ -13,6 +13,9 @@ labels:
|
|||
app.kubernetes.io/name: "{{ template "smb.name" . }}"
|
||||
app.kubernetes.io/version: "{{ .Chart.AppVersion }}"
|
||||
helm.sh/chart: "{{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}"
|
||||
{{- if .Values.customLabels }}
|
||||
{{ toYaml .Values.customLabels | indent 2 -}}
|
||||
{{- end }}
|
||||
{{- end -}}
|
||||
|
||||
{{/* pull secrets for containers */}}
|
||||
|
|
|
@ -0,0 +1,48 @@
|
|||
{{- if .Values.windows.csiproxy.enabled}}
|
||||
kind: DaemonSet
|
||||
apiVersion: apps/v1
|
||||
metadata:
|
||||
name: {{ .Values.windows.csiproxy.dsName }}
|
||||
namespace: {{ .Release.Namespace }}
|
||||
{{ include "smb.labels" . | indent 2 }}
|
||||
spec:
|
||||
updateStrategy:
|
||||
rollingUpdate:
|
||||
maxUnavailable: {{ .Values.node.maxUnavailable }}
|
||||
type: RollingUpdate
|
||||
selector:
|
||||
matchLabels:
|
||||
app: {{ .Values.windows.csiproxy.dsName }}
|
||||
template:
|
||||
metadata:
|
||||
{{ include "smb.labels" . | indent 6 }}
|
||||
app: {{ .Values.windows.csiproxy.dsName }}
|
||||
spec:
|
||||
{{- with .Values.windows.csiproxy.tolerations }}
|
||||
tolerations:
|
||||
{{ toYaml . | indent 8 }}
|
||||
{{- end }}
|
||||
securityContext:
|
||||
windowsOptions:
|
||||
hostProcess: true
|
||||
runAsUserName: {{ .Values.windows.csiproxy.username | quote }}
|
||||
hostNetwork: true
|
||||
nodeSelector:
|
||||
{{- with .Values.windows.csiproxy.nodeSelector }}
|
||||
{{ toYaml . | indent 8 }}
|
||||
{{- end }}
|
||||
{{- with .Values.node.affinity }}
|
||||
affinity:
|
||||
{{ toYaml . | indent 8 }}
|
||||
{{- end }}
|
||||
priorityClassName: {{ .Values.priorityClassName | quote }}
|
||||
{{- include "smb.pullSecrets" . | indent 6 }}
|
||||
containers:
|
||||
- name: csi-proxy
|
||||
{{- if hasPrefix "/" .Values.image.csiproxy.repository }}
|
||||
image: "{{ .Values.image.baseRepo }}{{ .Values.image.csiproxy.repository }}:{{ .Values.image.csiproxy.tag }}"
|
||||
{{- else }}
|
||||
image: "{{ .Values.image.csiproxy.repository }}:{{ .Values.image.csiproxy.tag }}"
|
||||
{{- end }}
|
||||
imagePullPolicy: {{ .Values.image.csiproxy.pullPolicy }}
|
||||
{{- end -}}
|
|
@ -2,44 +2,84 @@
|
|||
kind: Deployment
|
||||
apiVersion: apps/v1
|
||||
metadata:
|
||||
name: csi-smb-controller
|
||||
name: {{ .Values.controller.name }}
|
||||
namespace: {{ .Release.Namespace }}
|
||||
{{ include "smb.labels" . | indent 2 }}
|
||||
spec:
|
||||
strategy:
|
||||
type: Recreate
|
||||
replicas: {{ .Values.controller.replicas }}
|
||||
selector:
|
||||
matchLabels:
|
||||
app: csi-smb-controller
|
||||
app: {{ .Values.controller.name }}
|
||||
template:
|
||||
metadata:
|
||||
{{ include "smb.labels" . | indent 6 }}
|
||||
app: csi-smb-controller
|
||||
app: {{ .Values.controller.name }}
|
||||
{{- if .Values.podLabels }}
|
||||
{{- toYaml .Values.podLabels | nindent 8 }}
|
||||
{{- end }}
|
||||
{{- if .Values.podAnnotations }}
|
||||
annotations:
|
||||
{{ toYaml .Values.podAnnotations | indent 8 }}
|
||||
{{- end }}
|
||||
spec:
|
||||
dnsPolicy: ClusterFirstWithHostNet
|
||||
serviceAccountName: csi-smb-controller-sa
|
||||
# runOnControlPlane=true or runOnMaster=true only takes effect if affinity is not set
|
||||
{{- if tpl "{{ .Values.controller.affinity }}" . | contains "nodeSelectorTerms" }}
|
||||
{{- with .Values.controller.affinity }}
|
||||
affinity:
|
||||
{{ toYaml . | indent 8 }}
|
||||
{{- end }}
|
||||
{{- else if or .Values.controller.runOnControlPlane .Values.controller.runOnMaster}}
|
||||
affinity:
|
||||
nodeAffinity:
|
||||
requiredDuringSchedulingIgnoredDuringExecution:
|
||||
nodeSelectorTerms:
|
||||
- matchExpressions:
|
||||
{{- if .Values.controller.runOnControlPlane}}
|
||||
- key: node-role.kubernetes.io/control-plane
|
||||
operator: Exists
|
||||
{{- end}}
|
||||
{{- if .Values.controller.runOnMaster}}
|
||||
- key: node-role.kubernetes.io/master
|
||||
operator: Exists
|
||||
{{- end}}
|
||||
{{- end }}
|
||||
hostNetwork: true
|
||||
dnsPolicy: {{ .Values.controller.dnsPolicy }}
|
||||
serviceAccountName: {{ .Values.serviceAccount.controller }}
|
||||
nodeSelector:
|
||||
{{- with .Values.controller.nodeSelector }}
|
||||
{{ toYaml . | indent 8 }}
|
||||
{{- end }}
|
||||
kubernetes.io/os: linux
|
||||
{{- if .Values.controller.runOnMaster}}
|
||||
kubernetes.io/role: master
|
||||
node-role.kubernetes.io/master: ""
|
||||
{{- end}}
|
||||
priorityClassName: system-cluster-critical
|
||||
priorityClassName: {{ .Values.priorityClassName | quote }}
|
||||
{{- if .Values.securityContext }}
|
||||
securityContext: {{- toYaml .Values.securityContext | nindent 8 }}
|
||||
{{- end }}
|
||||
{{- with .Values.controller.tolerations }}
|
||||
tolerations:
|
||||
- key: "node-role.kubernetes.io/master"
|
||||
operator: "Equal"
|
||||
value: "true"
|
||||
effect: "NoSchedule"
|
||||
- key: "node-role.kubernetes.io/controlplane"
|
||||
operator: "Equal"
|
||||
value: "true"
|
||||
effect: "NoSchedule"
|
||||
{{ toYaml . | indent 8 }}
|
||||
{{- end }}
|
||||
{{- include "smb.pullSecrets" . | indent 6 }}
|
||||
containers:
|
||||
- name: csi-provisioner
|
||||
{{- if hasPrefix "/" .Values.image.csiProvisioner.repository }}
|
||||
image: "{{ .Values.image.baseRepo }}{{ .Values.image.csiProvisioner.repository }}:{{ .Values.image.csiProvisioner.tag }}"
|
||||
{{- else }}
|
||||
image: "{{ .Values.image.csiProvisioner.repository }}:{{ .Values.image.csiProvisioner.tag }}"
|
||||
{{- end }}
|
||||
args:
|
||||
- "-v=2"
|
||||
- "--csi-address=$(ADDRESS)"
|
||||
- "--leader-election"
|
||||
- "--leader-election-namespace={{ .Release.Namespace }}"
|
||||
- "--extra-create-metadata=true"
|
||||
- "--feature-gates=HonorPVReclaimPolicy=true"
|
||||
- "--retry-interval-max=30m"
|
||||
env:
|
||||
- name: ADDRESS
|
||||
value: /csi/csi.sock
|
||||
|
@ -47,50 +87,80 @@ spec:
|
|||
volumeMounts:
|
||||
- mountPath: /csi
|
||||
name: socket-dir
|
||||
resources:
|
||||
limits:
|
||||
cpu: 100m
|
||||
memory: 300Mi
|
||||
requests:
|
||||
cpu: 10m
|
||||
memory: 20Mi
|
||||
resources: {{- toYaml .Values.controller.resources.csiProvisioner | nindent 12 }}
|
||||
securityContext:
|
||||
readOnlyRootFilesystem: true
|
||||
capabilities:
|
||||
drop:
|
||||
- ALL
|
||||
- name: csi-resizer
|
||||
{{- if hasPrefix "/" .Values.image.csiResizer.repository }}
|
||||
image: "{{ .Values.image.baseRepo }}{{ .Values.image.csiResizer.repository }}:{{ .Values.image.csiResizer.tag }}"
|
||||
{{- else }}
|
||||
image: "{{ .Values.image.csiResizer.repository }}:{{ .Values.image.csiResizer.tag }}"
|
||||
{{- end }}
|
||||
args:
|
||||
- "-csi-address=$(ADDRESS)"
|
||||
- "-v=2"
|
||||
- "-leader-election"
|
||||
- "--leader-election-namespace={{ .Release.Namespace }}"
|
||||
- '-handle-volume-inuse-error=false'
|
||||
env:
|
||||
- name: ADDRESS
|
||||
value: /csi/csi.sock
|
||||
imagePullPolicy: {{ .Values.image.csiResizer.pullPolicy }}
|
||||
volumeMounts:
|
||||
- name: socket-dir
|
||||
mountPath: /csi
|
||||
resources: {{- toYaml .Values.controller.resources.csiResizer | nindent 12 }}
|
||||
securityContext:
|
||||
capabilities:
|
||||
drop:
|
||||
- ALL
|
||||
- name: liveness-probe
|
||||
{{- if hasPrefix "/" .Values.image.livenessProbe.repository }}
|
||||
image: "{{ .Values.image.baseRepo }}{{ .Values.image.livenessProbe.repository }}:{{ .Values.image.livenessProbe.tag }}"
|
||||
{{- else }}
|
||||
image: "{{ .Values.image.livenessProbe.repository }}:{{ .Values.image.livenessProbe.tag }}"
|
||||
{{- end }}
|
||||
args:
|
||||
- --csi-address=/csi/csi.sock
|
||||
- --probe-timeout=3s
|
||||
- --health-port=29642
|
||||
- --http-endpoint=localhost:{{ .Values.controller.livenessProbe.healthPort }}
|
||||
- --v=2
|
||||
imagePullPolicy: {{ .Values.image.livenessProbe.pullPolicy }}
|
||||
volumeMounts:
|
||||
- name: socket-dir
|
||||
mountPath: /csi
|
||||
resources:
|
||||
limits:
|
||||
cpu: 100m
|
||||
memory: 100Mi
|
||||
requests:
|
||||
cpu: 10m
|
||||
memory: 20Mi
|
||||
resources: {{- toYaml .Values.controller.resources.livenessProbe | nindent 12 }}
|
||||
securityContext:
|
||||
readOnlyRootFilesystem: true
|
||||
capabilities:
|
||||
drop:
|
||||
- ALL
|
||||
- name: smb
|
||||
{{- if hasPrefix "/" .Values.image.smb.repository }}
|
||||
image: "{{ .Values.image.baseRepo }}{{ .Values.image.smb.repository }}:{{ .Values.image.smb.tag }}"
|
||||
{{- else }}
|
||||
image: "{{ .Values.image.smb.repository }}:{{ .Values.image.smb.tag }}"
|
||||
{{- end }}
|
||||
imagePullPolicy: {{ .Values.image.smb.pullPolicy }}
|
||||
args:
|
||||
- "--v={{ .Values.controller.logLevel }}"
|
||||
- "--endpoint=$(CSI_ENDPOINT)"
|
||||
- "--metrics-address=0.0.0.0:{{ .Values.controller.metricsPort }}"
|
||||
- "--drivername={{ .Values.driver.name }}"
|
||||
- "--working-mount-dir={{ .Values.controller.workingMountDir }}"
|
||||
ports:
|
||||
- containerPort: 29642
|
||||
name: healthz
|
||||
protocol: TCP
|
||||
- containerPort: {{ .Values.controller.metricsPort }}
|
||||
name: metrics
|
||||
protocol: TCP
|
||||
livenessProbe:
|
||||
failureThreshold: 5
|
||||
httpGet:
|
||||
host: localhost
|
||||
path: /healthz
|
||||
port: healthz
|
||||
port: {{ .Values.controller.livenessProbe.healthPort }}
|
||||
initialDelaySeconds: 30
|
||||
timeoutSeconds: 10
|
||||
periodSeconds: 30
|
||||
|
@ -99,16 +169,13 @@ spec:
|
|||
value: unix:///csi/csi.sock
|
||||
securityContext:
|
||||
privileged: true
|
||||
capabilities:
|
||||
drop:
|
||||
- ALL
|
||||
volumeMounts:
|
||||
- mountPath: /csi
|
||||
name: socket-dir
|
||||
resources:
|
||||
limits:
|
||||
cpu: 200m
|
||||
memory: 200Mi
|
||||
requests:
|
||||
cpu: 10m
|
||||
memory: 20Mi
|
||||
resources: {{- toYaml .Values.controller.resources.smb | nindent 12 }}
|
||||
volumes:
|
||||
- name: socket-dir
|
||||
emptyDir: {}
|
||||
|
|
|
@ -1,8 +1,13 @@
|
|||
---
|
||||
apiVersion: storage.k8s.io/v1beta1
|
||||
apiVersion: storage.k8s.io/v1
|
||||
kind: CSIDriver
|
||||
metadata:
|
||||
name: {{ .Values.driver.name }}
|
||||
spec:
|
||||
attachRequired: false
|
||||
podInfoOnMount: true
|
||||
volumeLifecycleModes:
|
||||
- Persistent
|
||||
{{- if .Values.feature.enableInlineVolume }}
|
||||
- Ephemeral
|
||||
{{- end }}
|
||||
|
|
|
@ -0,0 +1,121 @@
|
|||
{{- if and .Values.windows.enabled .Values.windows.useHostProcessContainers }}
|
||||
kind: DaemonSet
|
||||
apiVersion: apps/v1
|
||||
metadata:
|
||||
name: {{ .Values.windows.dsName }}
|
||||
namespace: {{ .Release.Namespace }}
|
||||
{{ include "smb.labels" . | indent 2 }}
|
||||
spec:
|
||||
updateStrategy:
|
||||
rollingUpdate:
|
||||
maxUnavailable: {{ .Values.node.maxUnavailable }}
|
||||
type: RollingUpdate
|
||||
selector:
|
||||
matchLabels:
|
||||
app: {{ .Values.windows.dsName }}
|
||||
template:
|
||||
metadata:
|
||||
{{ include "smb.labels" . | indent 6 }}
|
||||
app: {{ .Values.windows.dsName }}
|
||||
spec:
|
||||
{{- with .Values.windows.tolerations }}
|
||||
tolerations:
|
||||
{{ toYaml . | indent 8 }}
|
||||
{{- end }}
|
||||
nodeSelector:
|
||||
kubernetes.io/os: windows
|
||||
{{- with .Values.node.nodeSelector }}
|
||||
{{ toYaml . | indent 8 }}
|
||||
{{- end }}
|
||||
{{- with .Values.node.affinity }}
|
||||
affinity:
|
||||
{{ toYaml . | indent 8 }}
|
||||
{{- end }}
|
||||
priorityClassName: {{ .Values.priorityClassName | quote }}
|
||||
serviceAccountName: {{ .Values.serviceAccount.node }}
|
||||
{{- include "smb.pullSecrets" . | indent 6 }}
|
||||
securityContext:
|
||||
seccompProfile:
|
||||
type: RuntimeDefault
|
||||
windowsOptions:
|
||||
hostProcess: true
|
||||
runAsUserName: "NT AUTHORITY\\SYSTEM"
|
||||
hostNetwork: true
|
||||
initContainers:
|
||||
- name: init
|
||||
{{- if hasPrefix "/" .Values.image.smb.repository }}
|
||||
image: "{{ .Values.image.baseRepo }}{{ .Values.image.smb.repository }}:{{ .Values.image.smb.tag }}-windows-hp"
|
||||
{{- else }}
|
||||
image: "{{ .Values.image.smb.repository }}:{{ .Values.image.smb.tag }}-windows-hp"
|
||||
{{- end }}
|
||||
imagePullPolicy: {{ .Values.image.smb.pullPolicy }}
|
||||
command:
|
||||
- "powershell.exe"
|
||||
- "-c"
|
||||
- "New-Item -ItemType Directory -Path C:\\var\\lib\\kubelet\\plugins\\{{ .Values.driver.name }}\\ -Force"
|
||||
securityContext:
|
||||
capabilities:
|
||||
drop:
|
||||
- ALL
|
||||
containers:
|
||||
- name: node-driver-registrar
|
||||
{{- if hasPrefix "/" .Values.image.nodeDriverRegistrar.repository }}
|
||||
image: "{{ .Values.image.baseRepo }}{{ .Values.image.nodeDriverRegistrar.repository }}:{{ .Values.image.nodeDriverRegistrar.tag }}"
|
||||
{{- else }}
|
||||
image: "{{ .Values.image.nodeDriverRegistrar.repository }}:{{ .Values.image.nodeDriverRegistrar.tag }}"
|
||||
{{- end }}
|
||||
command:
|
||||
- "csi-node-driver-registrar.exe"
|
||||
args:
|
||||
- "--csi-address=$(CSI_ENDPOINT)"
|
||||
- "--kubelet-registration-path=$(DRIVER_REG_SOCK_PATH)"
|
||||
- "--plugin-registration-path=$(PLUGIN_REG_DIR)"
|
||||
- "--v=2"
|
||||
env:
|
||||
- name: CSI_ENDPOINT
|
||||
value: unix://{{ .Values.windows.kubelet }}\plugins\{{ .Values.driver.name }}\csi.sock
|
||||
- name: DRIVER_REG_SOCK_PATH
|
||||
value: C:\\var\\lib\\kubelet\\plugins\\{{ .Values.driver.name }}\\csi.sock
|
||||
- name: PLUGIN_REG_DIR
|
||||
value: C:\\var\\lib\\kubelet\\plugins_registry\\
|
||||
- name: KUBE_NODE_NAME
|
||||
valueFrom:
|
||||
fieldRef:
|
||||
fieldPath: spec.nodeName
|
||||
imagePullPolicy: {{ .Values.image.nodeDriverRegistrar.pullPolicy }}
|
||||
resources: {{- toYaml .Values.windows.resources.nodeDriverRegistrar | nindent 12 }}
|
||||
securityContext:
|
||||
capabilities:
|
||||
drop:
|
||||
- ALL
|
||||
- name: smb
|
||||
{{- if hasPrefix "/" .Values.image.smb.repository }}
|
||||
image: "{{ .Values.image.baseRepo }}{{ .Values.image.smb.repository }}:{{ .Values.image.smb.tag }}-windows-hp"
|
||||
{{- else }}
|
||||
image: "{{ .Values.image.smb.repository }}:{{ .Values.image.smb.tag }}-windows-hp"
|
||||
{{- end }}
|
||||
imagePullPolicy: {{ .Values.image.smb.pullPolicy }}
|
||||
command:
|
||||
- "smbplugin.exe"
|
||||
args:
|
||||
- "--v={{ .Values.node.logLevel }}"
|
||||
- "--drivername={{ .Values.driver.name }}"
|
||||
- --endpoint=$(CSI_ENDPOINT)
|
||||
- --nodeid=$(KUBE_NODE_NAME)
|
||||
- "--enable-get-volume-stats={{ .Values.feature.enableGetVolumeStats }}"
|
||||
- "--remove-smb-mapping-during-unmount={{ .Values.windows.removeSMBMappingDuringUnmount }}"
|
||||
- "--enable-windows-host-process=true"
|
||||
env:
|
||||
- name: CSI_ENDPOINT
|
||||
value: unix://{{ .Values.windows.kubelet }}\plugins\{{ .Values.driver.name }}\csi.sock
|
||||
- name: KUBE_NODE_NAME
|
||||
valueFrom:
|
||||
fieldRef:
|
||||
apiVersion: v1
|
||||
fieldPath: spec.nodeName
|
||||
resources: {{- toYaml .Values.windows.resources.smb | nindent 12 }}
|
||||
securityContext:
|
||||
capabilities:
|
||||
drop:
|
||||
- ALL
|
||||
{{- end -}}
|
|
@ -1,91 +1,114 @@
|
|||
{{- if .Values.windows.enabled}}
|
||||
{{- if and .Values.windows.enabled (not .Values.windows.useHostProcessContainers) }}
|
||||
kind: DaemonSet
|
||||
apiVersion: apps/v1
|
||||
metadata:
|
||||
name: csi-smb-node-win
|
||||
name: {{ .Values.windows.dsName }}
|
||||
namespace: {{ .Release.Namespace }}
|
||||
{{ include "smb.labels" . | indent 2 }}
|
||||
spec:
|
||||
updateStrategy:
|
||||
rollingUpdate:
|
||||
maxUnavailable: {{ .Values.node.maxUnavailable }}
|
||||
type: RollingUpdate
|
||||
selector:
|
||||
matchLabels:
|
||||
app: csi-smb-node-win
|
||||
app: {{ .Values.windows.dsName }}
|
||||
template:
|
||||
metadata:
|
||||
{{ include "smb.labels" . | indent 6 }}
|
||||
app: csi-smb-node-win
|
||||
app: {{ .Values.windows.dsName }}
|
||||
spec:
|
||||
{{- with .Values.windows.tolerations }}
|
||||
tolerations:
|
||||
- key: "node.kubernetes.io/os"
|
||||
operator: "Exists"
|
||||
effect: "NoSchedule"
|
||||
{{ toYaml . | indent 8 }}
|
||||
{{- end }}
|
||||
nodeSelector:
|
||||
kubernetes.io/os: windows
|
||||
priorityClassName: system-node-critical
|
||||
{{- with .Values.node.nodeSelector }}
|
||||
{{ toYaml . | indent 8 }}
|
||||
{{- end }}
|
||||
{{- with .Values.node.affinity }}
|
||||
affinity:
|
||||
{{ toYaml . | indent 8 }}
|
||||
{{- end }}
|
||||
priorityClassName: {{ .Values.priorityClassName | quote }}
|
||||
{{- if .Values.securityContext }}
|
||||
securityContext: {{- toYaml .Values.securityContext | nindent 8 }}
|
||||
{{- end }}
|
||||
serviceAccountName: {{ .Values.serviceAccount.node }}
|
||||
{{- include "smb.pullSecrets" . | indent 6 }}
|
||||
containers:
|
||||
- name: liveness-probe
|
||||
volumeMounts:
|
||||
- mountPath: C:\csi
|
||||
name: plugin-dir
|
||||
image: "{{ .Values.windows.image.livenessProbe.repository }}:{{ .Values.windows.image.livenessProbe.tag }}"
|
||||
{{- if hasPrefix "/" .Values.image.livenessProbe.repository }}
|
||||
image: "{{ .Values.image.baseRepo }}{{ .Values.image.livenessProbe.repository }}:{{ .Values.image.livenessProbe.tag }}"
|
||||
{{- else }}
|
||||
image: "{{ .Values.image.livenessProbe.repository }}:{{ .Values.image.livenessProbe.tag }}"
|
||||
{{- end }}
|
||||
args:
|
||||
- --csi-address=$(CSI_ENDPOINT)
|
||||
- --probe-timeout=3s
|
||||
- --health-port=29643
|
||||
- --health-port={{ .Values.node.livenessProbe.healthPort }}
|
||||
- --v=2
|
||||
env:
|
||||
- name: CSI_ENDPOINT
|
||||
value: unix://C:\\csi\\csi.sock
|
||||
imagePullPolicy: {{ .Values.windows.image.livenessProbe.pullPolicy }}
|
||||
resources:
|
||||
limits:
|
||||
cpu: 200m
|
||||
memory: 200Mi
|
||||
requests:
|
||||
cpu: 10m
|
||||
memory: 20Mi
|
||||
imagePullPolicy: {{ .Values.image.livenessProbe.pullPolicy }}
|
||||
resources: {{- toYaml .Values.windows.resources.livenessProbe | nindent 12 }}
|
||||
securityContext:
|
||||
capabilities:
|
||||
drop:
|
||||
- ALL
|
||||
- name: node-driver-registrar
|
||||
image: "{{ .Values.windows.image.nodeDriverRegistrar.repository }}:{{ .Values.windows.image.nodeDriverRegistrar.tag }}"
|
||||
{{- if hasPrefix "/" .Values.image.nodeDriverRegistrar.repository }}
|
||||
image: "{{ .Values.image.baseRepo }}{{ .Values.image.nodeDriverRegistrar.repository }}:{{ .Values.image.nodeDriverRegistrar.tag }}"
|
||||
{{- else }}
|
||||
image: "{{ .Values.image.nodeDriverRegistrar.repository }}:{{ .Values.image.nodeDriverRegistrar.tag }}"
|
||||
{{- end }}
|
||||
args:
|
||||
- --v=2
|
||||
- --csi-address=$(CSI_ENDPOINT)
|
||||
- --kubelet-registration-path={{ .Values.windows.kubelet }}\\plugins\\{{ .Values.driver.name }}\\csi.sock
|
||||
- --kubelet-registration-path=$(DRIVER_REG_SOCK_PATH)
|
||||
env:
|
||||
- name: CSI_ENDPOINT
|
||||
value: unix://C:\\csi\\csi.sock
|
||||
- name: DRIVER_REG_SOCK_PATH
|
||||
value: {{ .Values.windows.kubelet | replace "\\" "\\\\" }}\\plugins\\{{ .Values.driver.name }}\\csi.sock
|
||||
- name: KUBE_NODE_NAME
|
||||
valueFrom:
|
||||
fieldRef:
|
||||
fieldPath: spec.nodeName
|
||||
imagePullPolicy: {{ .Values.windows.image.nodeDriverRegistrar.pullPolicy }}
|
||||
imagePullPolicy: {{ .Values.image.nodeDriverRegistrar.pullPolicy }}
|
||||
volumeMounts:
|
||||
- name: plugin-dir
|
||||
mountPath: C:\csi
|
||||
- name: registration-dir
|
||||
mountPath: C:\registration
|
||||
resources:
|
||||
limits:
|
||||
cpu: 200m
|
||||
memory: 200Mi
|
||||
requests:
|
||||
cpu: 10m
|
||||
memory: 20Mi
|
||||
resources: {{- toYaml .Values.windows.resources.nodeDriverRegistrar | nindent 12 }}
|
||||
securityContext:
|
||||
capabilities:
|
||||
drop:
|
||||
- ALL
|
||||
- name: smb
|
||||
{{- if hasPrefix "/" .Values.image.smb.repository }}
|
||||
image: "{{ .Values.image.baseRepo }}{{ .Values.image.smb.repository }}:{{ .Values.image.smb.tag }}"
|
||||
{{- else }}
|
||||
image: "{{ .Values.image.smb.repository }}:{{ .Values.image.smb.tag }}"
|
||||
{{- end }}
|
||||
imagePullPolicy: {{ .Values.image.smb.pullPolicy }}
|
||||
args:
|
||||
- "--v={{ .Values.node.logLevel }}"
|
||||
- "--drivername={{ .Values.driver.name }}"
|
||||
- --endpoint=$(CSI_ENDPOINT)
|
||||
- --nodeid=$(KUBE_NODE_NAME)
|
||||
- "--metrics-address=0.0.0.0:{{ .Values.node.metricsPort }}"
|
||||
- "--enable-get-volume-stats={{ .Values.feature.enableGetVolumeStats }}"
|
||||
- "--remove-smb-mapping-during-unmount={{ .Values.windows.removeSMBMappingDuringUnmount }}"
|
||||
ports:
|
||||
- containerPort: 29643
|
||||
- containerPort: {{ .Values.node.livenessProbe.healthPort }}
|
||||
name: healthz
|
||||
protocol: TCP
|
||||
- containerPort: {{ .Values.node.metricsPort }}
|
||||
name: metrics
|
||||
protocol: TCP
|
||||
livenessProbe:
|
||||
failureThreshold: 5
|
||||
httpGet:
|
||||
|
@ -107,26 +130,36 @@ spec:
|
|||
mountPath: {{ .Values.windows.kubelet }}\
|
||||
- name: plugin-dir
|
||||
mountPath: C:\csi
|
||||
- name: csi-proxy-fs-pipe
|
||||
- name: csi-proxy-fs-pipe-v1
|
||||
mountPath: \\.\pipe\csi-proxy-filesystem-v1
|
||||
- name: csi-proxy-smb-pipe-v1
|
||||
mountPath: \\.\pipe\csi-proxy-smb-v1
|
||||
# these paths are still included for compatibility, they're used
|
||||
# only if the node has still the beta version of the CSI proxy
|
||||
- name: csi-proxy-fs-pipe-v1beta1
|
||||
mountPath: \\.\pipe\csi-proxy-filesystem-v1beta1
|
||||
- name: csi-proxy-smb-pipe
|
||||
- name: csi-proxy-smb-pipe-v1beta1
|
||||
mountPath: \\.\pipe\csi-proxy-smb-v1beta1
|
||||
resources:
|
||||
limits:
|
||||
cpu: 400m
|
||||
memory: 400Mi
|
||||
requests:
|
||||
cpu: 10m
|
||||
memory: 20Mi
|
||||
resources: {{- toYaml .Values.windows.resources.smb | nindent 12 }}
|
||||
securityContext:
|
||||
capabilities:
|
||||
drop:
|
||||
- ALL
|
||||
volumes:
|
||||
- name: csi-proxy-fs-pipe
|
||||
- name: csi-proxy-fs-pipe-v1
|
||||
hostPath:
|
||||
path: \\.\pipe\csi-proxy-filesystem-v1
|
||||
- name: csi-proxy-smb-pipe-v1
|
||||
hostPath:
|
||||
path: \\.\pipe\csi-proxy-smb-v1
|
||||
# these paths are still included for compatibility, they're used
|
||||
# only if the node has still the beta version of the CSI proxy
|
||||
- name: csi-proxy-fs-pipe-v1beta1
|
||||
hostPath:
|
||||
path: \\.\pipe\csi-proxy-filesystem-v1beta1
|
||||
type: ""
|
||||
- name: csi-proxy-smb-pipe
|
||||
- name: csi-proxy-smb-pipe-v1beta1
|
||||
hostPath:
|
||||
path: \\.\pipe\csi-proxy-smb-v1beta1
|
||||
type: ""
|
||||
- name: registration-dir
|
||||
hostPath:
|
||||
path: {{ .Values.windows.kubelet }}\plugins_registry\
|
||||
|
|
|
@ -2,55 +2,82 @@
|
|||
kind: DaemonSet
|
||||
apiVersion: apps/v1
|
||||
metadata:
|
||||
name: csi-smb-node
|
||||
name: {{ .Values.linux.dsName }}
|
||||
namespace: {{ .Release.Namespace }}
|
||||
{{ include "smb.labels" . | indent 2 }}
|
||||
spec:
|
||||
updateStrategy:
|
||||
rollingUpdate:
|
||||
maxUnavailable: {{ .Values.node.maxUnavailable }}
|
||||
type: RollingUpdate
|
||||
selector:
|
||||
matchLabels:
|
||||
app: csi-smb-node
|
||||
app: {{ .Values.linux.dsName }}
|
||||
template:
|
||||
metadata:
|
||||
{{ include "smb.labels" . | indent 6 }}
|
||||
app: csi-smb-node
|
||||
app: {{ .Values.linux.dsName }}
|
||||
{{- if .Values.podLabels }}
|
||||
{{- toYaml .Values.podLabels | nindent 8 }}
|
||||
{{- end }}
|
||||
{{- if .Values.podAnnotations }}
|
||||
annotations:
|
||||
{{ toYaml .Values.podAnnotations | indent 8 }}
|
||||
{{- end }}
|
||||
spec:
|
||||
{{- with .Values.node.affinity }}
|
||||
affinity:
|
||||
{{ toYaml . | indent 8 }}
|
||||
{{- end }}
|
||||
hostNetwork: true
|
||||
dnsPolicy: ClusterFirstWithHostNet
|
||||
dnsPolicy: {{ .Values.linux.dnsPolicy }}
|
||||
serviceAccountName: {{ .Values.serviceAccount.node }}
|
||||
nodeSelector:
|
||||
kubernetes.io/os: linux
|
||||
priorityClassName: system-node-critical
|
||||
{{- with .Values.node.nodeSelector }}
|
||||
{{ toYaml . | indent 8 }}
|
||||
{{- end }}
|
||||
priorityClassName: {{ .Values.priorityClassName | quote }}
|
||||
{{- if .Values.securityContext }}
|
||||
securityContext: {{- toYaml .Values.securityContext | nindent 8 }}
|
||||
{{- end }}
|
||||
{{- with .Values.linux.tolerations }}
|
||||
tolerations:
|
||||
- operator: "Exists"
|
||||
{{ toYaml . | indent 8 }}
|
||||
{{- end }}
|
||||
{{- include "smb.pullSecrets" . | indent 6 }}
|
||||
containers:
|
||||
- name: liveness-probe
|
||||
volumeMounts:
|
||||
- mountPath: /csi
|
||||
name: socket-dir
|
||||
{{- if hasPrefix "/" .Values.image.livenessProbe.repository }}
|
||||
image: "{{ .Values.image.baseRepo }}{{ .Values.image.livenessProbe.repository }}:{{ .Values.image.livenessProbe.tag }}"
|
||||
{{- else }}
|
||||
image: "{{ .Values.image.livenessProbe.repository }}:{{ .Values.image.livenessProbe.tag }}"
|
||||
{{- end }}
|
||||
args:
|
||||
- --csi-address=/csi/csi.sock
|
||||
- --probe-timeout=3s
|
||||
- --health-port={{ .Values.node.livenessProbe.healthPort }}
|
||||
- --http-endpoint=localhost:{{ .Values.node.livenessProbe.healthPort }}
|
||||
- --v=2
|
||||
imagePullPolicy: {{ .Values.image.livenessProbe.pullPolicy }}
|
||||
resources:
|
||||
limits:
|
||||
cpu: 100m
|
||||
memory: 100Mi
|
||||
requests:
|
||||
cpu: 10m
|
||||
memory: 20Mi
|
||||
resources: {{- toYaml .Values.linux.resources.livenessProbe | nindent 12 }}
|
||||
securityContext:
|
||||
readOnlyRootFilesystem: true
|
||||
capabilities:
|
||||
drop:
|
||||
- ALL
|
||||
- name: node-driver-registrar
|
||||
{{- if hasPrefix "/" .Values.image.nodeDriverRegistrar.repository }}
|
||||
image: "{{ .Values.image.baseRepo }}{{ .Values.image.nodeDriverRegistrar.repository }}:{{ .Values.image.nodeDriverRegistrar.tag }}"
|
||||
{{- else }}
|
||||
image: "{{ .Values.image.nodeDriverRegistrar.repository }}:{{ .Values.image.nodeDriverRegistrar.tag }}"
|
||||
{{- end }}
|
||||
args:
|
||||
- --csi-address=$(ADDRESS)
|
||||
- --kubelet-registration-path=$(DRIVER_REG_SOCK_PATH)
|
||||
- --v=2
|
||||
lifecycle:
|
||||
preStop:
|
||||
exec:
|
||||
command: ["/bin/sh", "-c", "rm -rf /registration/{{ .Values.driver.name }}-reg.sock /csi/csi.sock"]
|
||||
env:
|
||||
- name: ADDRESS
|
||||
value: /csi/csi.sock
|
||||
|
@ -62,34 +89,31 @@ spec:
|
|||
mountPath: /csi
|
||||
- name: registration-dir
|
||||
mountPath: /registration
|
||||
resources:
|
||||
limits:
|
||||
cpu: 100m
|
||||
memory: 100Mi
|
||||
requests:
|
||||
cpu: 10m
|
||||
memory: 20Mi
|
||||
resources: {{- toYaml .Values.linux.resources.nodeDriverRegistrar | nindent 12 }}
|
||||
securityContext:
|
||||
capabilities:
|
||||
drop:
|
||||
- ALL
|
||||
- name: smb
|
||||
{{- if hasPrefix "/" .Values.image.smb.repository }}
|
||||
image: "{{ .Values.image.baseRepo }}{{ .Values.image.smb.repository }}:{{ .Values.image.smb.tag }}"
|
||||
{{- else }}
|
||||
image: "{{ .Values.image.smb.repository }}:{{ .Values.image.smb.tag }}"
|
||||
{{- end }}
|
||||
imagePullPolicy: {{ .Values.image.smb.pullPolicy }}
|
||||
args:
|
||||
- "--v={{ .Values.node.logLevel }}"
|
||||
- "--drivername={{ .Values.driver.name }}"
|
||||
- "--endpoint=$(CSI_ENDPOINT)"
|
||||
- "--nodeid=$(KUBE_NODE_NAME)"
|
||||
- "--metrics-address=0.0.0.0:{{ .Values.node.metricsPort }}"
|
||||
ports:
|
||||
- containerPort: 29643
|
||||
name: healthz
|
||||
protocol: TCP
|
||||
- containerPort: {{ .Values.node.metricsPort }}
|
||||
name: metrics
|
||||
protocol: TCP
|
||||
- "--enable-get-volume-stats={{ .Values.feature.enableGetVolumeStats }}"
|
||||
- "--krb5-prefix={{ .Values.linux.krb5Prefix }}"
|
||||
livenessProbe:
|
||||
failureThreshold: 5
|
||||
httpGet:
|
||||
host: localhost
|
||||
path: /healthz
|
||||
port: healthz
|
||||
port: {{ .Values.node.livenessProbe.healthPort }}
|
||||
initialDelaySeconds: 30
|
||||
timeoutSeconds: 10
|
||||
periodSeconds: 30
|
||||
|
@ -103,19 +127,21 @@ spec:
|
|||
fieldPath: spec.nodeName
|
||||
securityContext:
|
||||
privileged: true
|
||||
capabilities:
|
||||
drop:
|
||||
- ALL
|
||||
volumeMounts:
|
||||
- mountPath: /csi
|
||||
name: socket-dir
|
||||
- mountPath: {{ .Values.linux.kubelet }}/
|
||||
- mountPath: {{ .Values.linux.kubelet }}
|
||||
mountPropagation: Bidirectional
|
||||
name: mountpoint-dir
|
||||
resources:
|
||||
limits:
|
||||
cpu: 400m
|
||||
memory: 200Mi
|
||||
requests:
|
||||
cpu: 10m
|
||||
memory: 20Mi
|
||||
{{- if ne .Values.linux.krb5CacheDirectory "" }}
|
||||
- mountPath: {{ .Values.linux.kubelet }}/kerberos/
|
||||
mountPropagation: Bidirectional
|
||||
name: krb5cache-dir
|
||||
{{- end }}
|
||||
resources: {{- toYaml .Values.linux.resources.smb | nindent 12 }}
|
||||
volumes:
|
||||
- hostPath:
|
||||
path: {{ .Values.linux.kubelet }}/plugins/{{ .Values.driver.name }}
|
||||
|
@ -129,4 +155,10 @@ spec:
|
|||
path: {{ .Values.linux.kubelet }}/plugins_registry/
|
||||
type: DirectoryOrCreate
|
||||
name: registration-dir
|
||||
{{- if ne .Values.linux.krb5CacheDirectory "" }}
|
||||
- hostPath:
|
||||
path: {{ .Values.linux.krb5CacheDirectory }}
|
||||
type: DirectoryOrCreate
|
||||
name: krb5cache-dir
|
||||
{{- end }}
|
||||
{{- end -}}
|
||||
|
|
|
@ -0,0 +1,126 @@
|
|||
{{- if .Values.serviceAccount.create -}}
|
||||
---
|
||||
apiVersion: v1
|
||||
kind: ServiceAccount
|
||||
metadata:
|
||||
name: {{ .Values.serviceAccount.controller }}
|
||||
namespace: {{ .Release.Namespace }}
|
||||
{{ include "smb.labels" . | indent 2 }}
|
||||
---
|
||||
apiVersion: v1
|
||||
kind: ServiceAccount
|
||||
metadata:
|
||||
name: {{ .Values.serviceAccount.node }}
|
||||
namespace: {{ .Release.Namespace }}
|
||||
{{ include "smb.labels" . | indent 2 }}
|
||||
{{ end }}
|
||||
|
||||
{{- if .Values.rbac.create -}}
|
||||
---
|
||||
apiVersion: rbac.authorization.k8s.io/v1
|
||||
kind: ClusterRole
|
||||
metadata:
|
||||
name: {{ .Values.rbac.name }}-external-provisioner-role
|
||||
{{ include "smb.labels" . | indent 2 }}
|
||||
rules:
|
||||
- apiGroups: [""]
|
||||
resources: ["persistentvolumes"]
|
||||
verbs: ["get", "list", "watch", "create", "patch", "delete"]
|
||||
- apiGroups: [""]
|
||||
resources: ["persistentvolumeclaims"]
|
||||
verbs: ["get", "list", "watch", "update"]
|
||||
- apiGroups: ["storage.k8s.io"]
|
||||
resources: ["storageclasses"]
|
||||
verbs: ["get", "list", "watch"]
|
||||
- apiGroups: [""]
|
||||
resources: ["events"]
|
||||
verbs: ["get", "list", "watch", "create", "update", "patch"]
|
||||
- apiGroups: ["storage.k8s.io"]
|
||||
resources: ["csinodes"]
|
||||
verbs: ["get", "list", "watch"]
|
||||
- apiGroups: [""]
|
||||
resources: ["nodes"]
|
||||
verbs: ["get", "list", "watch"]
|
||||
- apiGroups: ["coordination.k8s.io"]
|
||||
resources: ["leases"]
|
||||
verbs: ["get", "list", "watch", "create", "update", "patch"]
|
||||
- apiGroups: [""]
|
||||
resources: ["secrets"]
|
||||
verbs: ["get"]
|
||||
---
|
||||
kind: ClusterRoleBinding
|
||||
apiVersion: rbac.authorization.k8s.io/v1
|
||||
metadata:
|
||||
name: {{ .Values.rbac.name }}-csi-provisioner-binding
|
||||
{{ include "smb.labels" . | indent 2 }}
|
||||
subjects:
|
||||
- kind: ServiceAccount
|
||||
name: {{ .Values.serviceAccount.controller }}
|
||||
namespace: {{ .Release.Namespace }}
|
||||
roleRef:
|
||||
kind: ClusterRole
|
||||
name: {{ .Values.rbac.name }}-external-provisioner-role
|
||||
apiGroup: rbac.authorization.k8s.io
|
||||
---
|
||||
kind: ClusterRole
|
||||
apiVersion: rbac.authorization.k8s.io/v1
|
||||
metadata:
|
||||
name: {{ .Values.rbac.name }}-external-resizer-role
|
||||
{{ include "smb.labels" . | indent 2 }}
|
||||
rules:
|
||||
- apiGroups: [""]
|
||||
resources: ["persistentvolumes"]
|
||||
verbs: ["get", "list", "watch", "update", "patch"]
|
||||
- apiGroups: [""]
|
||||
resources: ["persistentvolumeclaims"]
|
||||
verbs: ["get", "list", "watch"]
|
||||
- apiGroups: [""]
|
||||
resources: ["persistentvolumeclaims/status"]
|
||||
verbs: ["update", "patch"]
|
||||
- apiGroups: [""]
|
||||
resources: ["events"]
|
||||
verbs: ["list", "watch", "create", "update", "patch"]
|
||||
- apiGroups: ["coordination.k8s.io"]
|
||||
resources: ["leases"]
|
||||
verbs: ["get", "list", "watch", "create", "update", "patch"]
|
||||
---
|
||||
kind: ClusterRoleBinding
|
||||
apiVersion: rbac.authorization.k8s.io/v1
|
||||
metadata:
|
||||
name: {{ .Values.rbac.name }}-csi-resizer-role
|
||||
{{ include "smb.labels" . | indent 2 }}
|
||||
subjects:
|
||||
- kind: ServiceAccount
|
||||
name: {{ .Values.serviceAccount.controller }}
|
||||
namespace: {{ .Release.Namespace }}
|
||||
roleRef:
|
||||
kind: ClusterRole
|
||||
name: {{ .Values.rbac.name }}-external-resizer-role
|
||||
apiGroup: rbac.authorization.k8s.io
|
||||
---
|
||||
{{- if .Values.feature.enableInlineVolume }}
|
||||
kind: ClusterRole
|
||||
apiVersion: rbac.authorization.k8s.io/v1
|
||||
metadata:
|
||||
name: csi-{{ .Values.rbac.name }}-node-secret-role
|
||||
{{ include "smb.labels" . | indent 2 }}
|
||||
rules:
|
||||
- apiGroups: [""]
|
||||
resources: ["secrets"]
|
||||
verbs: ["get"]
|
||||
---
|
||||
kind: ClusterRoleBinding
|
||||
apiVersion: rbac.authorization.k8s.io/v1
|
||||
metadata:
|
||||
name: csi-{{ .Values.rbac.name }}-node-secret-binding
|
||||
{{ include "smb.labels" . | indent 2 }}
|
||||
subjects:
|
||||
- kind: ServiceAccount
|
||||
name: {{ .Values.serviceAccount.node }}
|
||||
namespace: {{ .Release.Namespace }}
|
||||
roleRef:
|
||||
kind: ClusterRole
|
||||
name: csi-{{ .Values.rbac.name }}-node-secret-role
|
||||
apiGroup: rbac.authorization.k8s.io
|
||||
{{- end }}
|
||||
{{ end }}
|
|
@ -1,55 +1,182 @@
|
|||
image:
|
||||
baseRepo: registry.k8s.io/sig-storage
|
||||
smb:
|
||||
repository: mcr.microsoft.com/k8s/csi/smb-csi
|
||||
tag: latest
|
||||
repository: gcr.io/k8s-staging-sig-storage/smbplugin
|
||||
tag: canary
|
||||
pullPolicy: IfNotPresent
|
||||
csiProvisioner:
|
||||
repository: k8s.gcr.io/sig-storage/csi-provisioner
|
||||
tag: v2.1.0
|
||||
repository: /csi-provisioner
|
||||
tag: v5.3.0
|
||||
pullPolicy: IfNotPresent
|
||||
csiResizer:
|
||||
repository: registry.k8s.io/sig-storage/csi-resizer
|
||||
tag: v1.14.0
|
||||
pullPolicy: IfNotPresent
|
||||
livenessProbe:
|
||||
repository: k8s.gcr.io/sig-storage/livenessprobe
|
||||
tag: v2.3.0
|
||||
repository: /livenessprobe
|
||||
tag: v2.16.0
|
||||
pullPolicy: IfNotPresent
|
||||
nodeDriverRegistrar:
|
||||
repository: k8s.gcr.io/sig-storage/csi-node-driver-registrar
|
||||
tag: v2.2.0
|
||||
repository: /csi-node-driver-registrar
|
||||
tag: v2.14.0
|
||||
pullPolicy: IfNotPresent
|
||||
csiproxy:
|
||||
repository: ghcr.io/kubernetes-sigs/sig-windows/csi-proxy
|
||||
tag: v1.1.2
|
||||
pullPolicy: IfNotPresent
|
||||
|
||||
serviceAccount:
|
||||
create: true
|
||||
create: true # When true, service accounts will be created for you. Set to false if you want to use your own.
|
||||
controller: csi-smb-controller-sa
|
||||
node: csi-smb-node-sa
|
||||
|
||||
rbac:
|
||||
create: true
|
||||
name: smb
|
||||
|
||||
driver:
|
||||
name: smb.csi.k8s.io
|
||||
|
||||
feature:
|
||||
enableGetVolumeStats: true
|
||||
enableInlineVolume: true
|
||||
|
||||
controller:
|
||||
replicas: 2
|
||||
name: csi-smb-controller
|
||||
replicas: 1
|
||||
dnsPolicy: ClusterFirstWithHostNet # available values: Default, ClusterFirstWithHostNet, ClusterFirst
|
||||
metricsPort: 29644
|
||||
livenessProbe:
|
||||
healthPort: 29642
|
||||
runOnMaster: false
|
||||
runOnControlPlane: false
|
||||
logLevel: 5
|
||||
workingMountDir: "/tmp"
|
||||
resources:
|
||||
csiProvisioner:
|
||||
limits:
|
||||
memory: 400Mi
|
||||
requests:
|
||||
cpu: 10m
|
||||
memory: 20Mi
|
||||
csiResizer:
|
||||
limits:
|
||||
memory: 400Mi
|
||||
requests:
|
||||
cpu: 10m
|
||||
memory: 20Mi
|
||||
livenessProbe:
|
||||
limits:
|
||||
memory: 100Mi
|
||||
requests:
|
||||
cpu: 10m
|
||||
memory: 20Mi
|
||||
smb:
|
||||
limits:
|
||||
memory: 200Mi
|
||||
requests:
|
||||
cpu: 10m
|
||||
memory: 20Mi
|
||||
affinity: {}
|
||||
nodeSelector: {}
|
||||
tolerations:
|
||||
- key: "node-role.kubernetes.io/master"
|
||||
operator: "Exists"
|
||||
effect: "NoSchedule"
|
||||
- key: "node-role.kubernetes.io/controlplane"
|
||||
operator: "Exists"
|
||||
effect: "NoSchedule"
|
||||
- key: "node-role.kubernetes.io/control-plane"
|
||||
operator: "Exists"
|
||||
effect: "NoSchedule"
|
||||
- key: "CriticalAddonsOnly"
|
||||
operator: "Exists"
|
||||
effect: "NoSchedule"
|
||||
|
||||
node:
|
||||
metricsPort: 29645
|
||||
maxUnavailable: 1
|
||||
logLevel: 5
|
||||
livenessProbe:
|
||||
healthPort: 29643
|
||||
affinity: {}
|
||||
nodeSelector: {}
|
||||
|
||||
linux:
|
||||
enabled: true
|
||||
dsName: csi-smb-node # daemonset name
|
||||
dnsPolicy: ClusterFirstWithHostNet # available values: Default, ClusterFirstWithHostNet, ClusterFirst
|
||||
kubelet: /var/lib/kubelet
|
||||
krb5CacheDirectory: "" # directory for kerberos credential cache, empty string means default(/var/lib/kubelet/kerberos/)
|
||||
krb5Prefix: "" # prefix for kerberos credential cache, empty string means default(krb5cc_)
|
||||
tolerations:
|
||||
- operator: "Exists"
|
||||
resources:
|
||||
livenessProbe:
|
||||
limits:
|
||||
memory: 100Mi
|
||||
requests:
|
||||
cpu: 10m
|
||||
memory: 20Mi
|
||||
nodeDriverRegistrar:
|
||||
limits:
|
||||
memory: 100Mi
|
||||
requests:
|
||||
cpu: 10m
|
||||
memory: 20Mi
|
||||
smb:
|
||||
limits:
|
||||
memory: 200Mi
|
||||
requests:
|
||||
cpu: 10m
|
||||
memory: 20Mi
|
||||
|
||||
windows:
|
||||
enabled: false
|
||||
enabled: true
|
||||
useHostProcessContainers: true
|
||||
dsName: csi-smb-node-win # daemonset name
|
||||
kubelet: 'C:\var\lib\kubelet'
|
||||
image:
|
||||
removeSMBMappingDuringUnmount: true
|
||||
tolerations:
|
||||
- key: "node.kubernetes.io/os"
|
||||
operator: "Exists"
|
||||
effect: "NoSchedule"
|
||||
resources:
|
||||
livenessProbe:
|
||||
repository: mcr.microsoft.com/oss/kubernetes-csi/livenessprobe
|
||||
tag: v2.3.0
|
||||
pullPolicy: IfNotPresent
|
||||
limits:
|
||||
memory: 150Mi
|
||||
requests:
|
||||
cpu: 10m
|
||||
memory: 40Mi
|
||||
nodeDriverRegistrar:
|
||||
repository: mcr.microsoft.com/oss/kubernetes-csi/csi-node-driver-registrar
|
||||
tag: v2.2.0
|
||||
pullPolicy: IfNotPresent
|
||||
limits:
|
||||
memory: 150Mi
|
||||
requests:
|
||||
cpu: 10m
|
||||
memory: 40Mi
|
||||
smb:
|
||||
limits:
|
||||
memory: 600Mi
|
||||
requests:
|
||||
cpu: 10m
|
||||
memory: 40Mi
|
||||
csiproxy:
|
||||
enabled: false # required if windows.enabled is true and useHostProcessContainers is false, but may be installed manually also
|
||||
dsName: csi-proxy-win # daemonset name
|
||||
tolerations: {}
|
||||
affinity: {}
|
||||
username: "NT AUTHORITY\\SYSTEM"
|
||||
nodeSelector:
|
||||
"kubernetes.io/os": windows
|
||||
|
||||
customLabels: {}
|
||||
## Collection of annotations to add to all the pods
|
||||
podAnnotations: {}
|
||||
## Collection of labels to add to all the pods
|
||||
podLabels: {}
|
||||
## Leverage a PriorityClass to ensure your pods survive resource shortages
|
||||
## ref: https://kubernetes.io/docs/concepts/configuration/pod-priority-preemption/
|
||||
priorityClassName: system-cluster-critical
|
||||
## Security context give the opportunity to run container as nonroot by setting a securityContext
|
||||
## by example :
|
||||
## securityContext: { runAsUser: 1001 }
|
||||
securityContext: { seccompProfile: {type: RuntimeDefault} }
|
||||
|
|
Binary file not shown.
|
@ -4,15 +4,15 @@ image:
|
|||
tag: v0.5.0
|
||||
pullPolicy: IfNotPresent
|
||||
csiProvisioner:
|
||||
repository: k8s.gcr.io/sig-storage/csi-provisioner
|
||||
repository: registry.k8s.io/sig-storage/csi-provisioner
|
||||
tag: v2.0.4
|
||||
pullPolicy: IfNotPresent
|
||||
livenessProbe:
|
||||
repository: k8s.gcr.io/sig-storage/livenessprobe
|
||||
repository: registry.k8s.io/sig-storage/livenessprobe
|
||||
tag: v2.1.0
|
||||
pullPolicy: IfNotPresent
|
||||
nodeDriverRegistrar:
|
||||
repository: k8s.gcr.io/sig-storage/csi-node-driver-registrar
|
||||
repository: registry.k8s.io/sig-storage/csi-node-driver-registrar
|
||||
tag: v2.0.1
|
||||
pullPolicy: IfNotPresent
|
||||
|
||||
|
|
Binary file not shown.
|
@ -4,15 +4,15 @@ image:
|
|||
tag: v0.6.0
|
||||
pullPolicy: IfNotPresent
|
||||
csiProvisioner:
|
||||
repository: k8s.gcr.io/sig-storage/csi-provisioner
|
||||
repository: registry.k8s.io/sig-storage/csi-provisioner
|
||||
tag: v2.0.4
|
||||
pullPolicy: IfNotPresent
|
||||
livenessProbe:
|
||||
repository: k8s.gcr.io/sig-storage/livenessprobe
|
||||
repository: registry.k8s.io/sig-storage/livenessprobe
|
||||
tag: v2.1.0
|
||||
pullPolicy: IfNotPresent
|
||||
nodeDriverRegistrar:
|
||||
repository: k8s.gcr.io/sig-storage/csi-node-driver-registrar
|
||||
repository: registry.k8s.io/sig-storage/csi-node-driver-registrar
|
||||
tag: v2.0.1
|
||||
pullPolicy: IfNotPresent
|
||||
|
||||
|
|
Binary file not shown.
|
@ -4,15 +4,15 @@ image:
|
|||
tag: v1.0.0
|
||||
pullPolicy: IfNotPresent
|
||||
csiProvisioner:
|
||||
repository: k8s.gcr.io/sig-storage/csi-provisioner
|
||||
repository: registry.k8s.io/sig-storage/csi-provisioner
|
||||
tag: v2.1.0
|
||||
pullPolicy: IfNotPresent
|
||||
livenessProbe:
|
||||
repository: k8s.gcr.io/sig-storage/livenessprobe
|
||||
repository: registry.k8s.io/sig-storage/livenessprobe
|
||||
tag: v2.3.0
|
||||
pullPolicy: IfNotPresent
|
||||
nodeDriverRegistrar:
|
||||
repository: k8s.gcr.io/sig-storage/csi-node-driver-registrar
|
||||
repository: registry.k8s.io/sig-storage/csi-node-driver-registrar
|
||||
tag: v2.2.0
|
||||
pullPolicy: IfNotPresent
|
||||
|
||||
|
|
Binary file not shown.
|
@ -0,0 +1,5 @@
|
|||
apiVersion: v1
|
||||
appVersion: v1.1.0
|
||||
description: SMB CSI Driver for Kubernetes
|
||||
name: csi-driver-smb
|
||||
version: v1.1.0
|
|
@ -0,0 +1,5 @@
|
|||
The CSI SMB Driver is getting deployed to your cluster.
|
||||
|
||||
To check CSI SMB Driver pods status, please run:
|
||||
|
||||
kubectl --namespace={{ .Release.Namespace }} get pods --selector="release={{ .Release.Name }}" --watch
|
|
@ -0,0 +1,26 @@
|
|||
{{/* vim: set filetype=mustache: */}}
|
||||
|
||||
{{/* Expand the name of the chart.*/}}
|
||||
{{- define "smb.name" -}}
|
||||
{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" -}}
|
||||
{{- end -}}
|
||||
|
||||
{{/* labels for helm resources */}}
|
||||
{{- define "smb.labels" -}}
|
||||
labels:
|
||||
app.kubernetes.io/instance: "{{ .Release.Name }}"
|
||||
app.kubernetes.io/managed-by: "{{ .Release.Service }}"
|
||||
app.kubernetes.io/name: "{{ template "smb.name" . }}"
|
||||
app.kubernetes.io/version: "{{ .Chart.AppVersion }}"
|
||||
helm.sh/chart: "{{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}"
|
||||
{{- end -}}
|
||||
|
||||
{{/* pull secrets for containers */}}
|
||||
{{- define "smb.pullSecrets" -}}
|
||||
{{- if .Values.imagePullSecrets }}
|
||||
imagePullSecrets:
|
||||
{{- range .Values.imagePullSecrets }}
|
||||
- name: {{ . }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
{{- end -}}
|
|
@ -0,0 +1,108 @@
|
|||
---
|
||||
kind: Deployment
|
||||
apiVersion: apps/v1
|
||||
metadata:
|
||||
name: csi-smb-controller
|
||||
namespace: {{ .Release.Namespace }}
|
||||
{{ include "smb.labels" . | indent 2 }}
|
||||
spec:
|
||||
replicas: {{ .Values.controller.replicas }}
|
||||
selector:
|
||||
matchLabels:
|
||||
app: csi-smb-controller
|
||||
template:
|
||||
metadata:
|
||||
{{ include "smb.labels" . | indent 6 }}
|
||||
app: csi-smb-controller
|
||||
{{- if .Values.podLabels }}
|
||||
{{- toYaml .Values.podLabels | nindent 8 }}
|
||||
{{- end }}
|
||||
{{- if .Values.podAnnotations }}
|
||||
annotations:
|
||||
{{ toYaml .Values.podAnnotations | indent 8 }}
|
||||
{{- end }}
|
||||
spec:
|
||||
{{- with .Values.controller.affinity }}
|
||||
affinity:
|
||||
{{ toYaml . | indent 8 }}
|
||||
{{- end }}
|
||||
dnsPolicy: ClusterFirstWithHostNet
|
||||
serviceAccountName: csi-smb-controller-sa
|
||||
nodeSelector:
|
||||
{{- with .Values.controller.nodeSelector }}
|
||||
{{ toYaml . | indent 8 }}
|
||||
{{- end }}
|
||||
kubernetes.io/os: linux
|
||||
{{- if .Values.controller.runOnMaster}}
|
||||
kubernetes.io/role: master
|
||||
{{- end}}
|
||||
priorityClassName: system-cluster-critical
|
||||
{{- with .Values.controller.tolerations }}
|
||||
tolerations:
|
||||
{{ toYaml . | indent 8 }}
|
||||
{{- end }}
|
||||
{{- include "smb.pullSecrets" . | indent 6 }}
|
||||
containers:
|
||||
- name: csi-provisioner
|
||||
image: "{{ .Values.image.csiProvisioner.repository }}:{{ .Values.image.csiProvisioner.tag }}"
|
||||
args:
|
||||
- "-v=2"
|
||||
- "--csi-address=$(ADDRESS)"
|
||||
- "--leader-election"
|
||||
env:
|
||||
- name: ADDRESS
|
||||
value: /csi/csi.sock
|
||||
imagePullPolicy: {{ .Values.image.csiProvisioner.pullPolicy }}
|
||||
volumeMounts:
|
||||
- mountPath: /csi
|
||||
name: socket-dir
|
||||
resources: {{- toYaml .Values.controller.resources.csiProvisioner | nindent 12 }}
|
||||
- name: liveness-probe
|
||||
image: "{{ .Values.image.livenessProbe.repository }}:{{ .Values.image.livenessProbe.tag }}"
|
||||
args:
|
||||
- --csi-address=/csi/csi.sock
|
||||
- --probe-timeout=3s
|
||||
- --health-port=29642
|
||||
- --v=2
|
||||
imagePullPolicy: {{ .Values.image.livenessProbe.pullPolicy }}
|
||||
volumeMounts:
|
||||
- name: socket-dir
|
||||
mountPath: /csi
|
||||
resources: {{- toYaml .Values.controller.resources.livenessProbe | nindent 12 }}
|
||||
- name: smb
|
||||
image: "{{ .Values.image.smb.repository }}:{{ .Values.image.smb.tag }}"
|
||||
imagePullPolicy: {{ .Values.image.smb.pullPolicy }}
|
||||
args:
|
||||
- "--v={{ .Values.controller.logLevel }}"
|
||||
- "--endpoint=$(CSI_ENDPOINT)"
|
||||
- "--metrics-address=0.0.0.0:{{ .Values.controller.metricsPort }}"
|
||||
ports:
|
||||
- containerPort: 29642
|
||||
name: healthz
|
||||
protocol: TCP
|
||||
- containerPort: {{ .Values.controller.metricsPort }}
|
||||
name: metrics
|
||||
protocol: TCP
|
||||
livenessProbe:
|
||||
failureThreshold: 5
|
||||
httpGet:
|
||||
path: /healthz
|
||||
port: healthz
|
||||
initialDelaySeconds: 30
|
||||
timeoutSeconds: 10
|
||||
periodSeconds: 30
|
||||
env:
|
||||
- name: CSI_ENDPOINT
|
||||
value: unix:///csi/csi.sock
|
||||
securityContext:
|
||||
privileged: true
|
||||
volumeMounts:
|
||||
- mountPath: /csi
|
||||
name: socket-dir
|
||||
resources: {{- toYaml .Values.controller.resources.smb | nindent 12 }}
|
||||
volumes:
|
||||
- name: socket-dir
|
||||
emptyDir: {}
|
||||
{{- if .Values.securityContext }}
|
||||
securityContext: {{- toYaml .Values.securityContext | nindent 8 }}
|
||||
{{- end }}
|
|
@ -0,0 +1,8 @@
|
|||
---
|
||||
apiVersion: storage.k8s.io/v1
|
||||
kind: CSIDriver
|
||||
metadata:
|
||||
name: {{ .Values.driver.name }}
|
||||
spec:
|
||||
attachRequired: false
|
||||
podInfoOnMount: true
|
|
@ -0,0 +1,142 @@
|
|||
{{- if .Values.windows.enabled}}
|
||||
kind: DaemonSet
|
||||
apiVersion: apps/v1
|
||||
metadata:
|
||||
name: csi-smb-node-win
|
||||
namespace: {{ .Release.Namespace }}
|
||||
{{ include "smb.labels" . | indent 2 }}
|
||||
spec:
|
||||
selector:
|
||||
matchLabels:
|
||||
app: csi-smb-node-win
|
||||
template:
|
||||
metadata:
|
||||
{{ include "smb.labels" . | indent 6 }}
|
||||
app: csi-smb-node-win
|
||||
spec:
|
||||
{{- with .Values.windows.tolerations }}
|
||||
tolerations:
|
||||
{{ toYaml . | indent 8 }}
|
||||
{{- end }}
|
||||
nodeSelector:
|
||||
kubernetes.io/os: windows
|
||||
priorityClassName: system-node-critical
|
||||
{{- include "smb.pullSecrets" . | indent 6 }}
|
||||
containers:
|
||||
- name: liveness-probe
|
||||
volumeMounts:
|
||||
- mountPath: C:\csi
|
||||
name: plugin-dir
|
||||
image: "{{ .Values.windows.image.livenessProbe.repository }}:{{ .Values.windows.image.livenessProbe.tag }}"
|
||||
args:
|
||||
- --csi-address=$(CSI_ENDPOINT)
|
||||
- --probe-timeout=3s
|
||||
- --health-port=29643
|
||||
- --v=2
|
||||
env:
|
||||
- name: CSI_ENDPOINT
|
||||
value: unix://C:\\csi\\csi.sock
|
||||
imagePullPolicy: {{ .Values.windows.image.livenessProbe.pullPolicy }}
|
||||
resources:
|
||||
limits:
|
||||
cpu: 200m
|
||||
memory: 200Mi
|
||||
requests:
|
||||
cpu: 10m
|
||||
memory: 20Mi
|
||||
- name: node-driver-registrar
|
||||
image: "{{ .Values.windows.image.nodeDriverRegistrar.repository }}:{{ .Values.windows.image.nodeDriverRegistrar.tag }}"
|
||||
args:
|
||||
- --v=2
|
||||
- --csi-address=$(CSI_ENDPOINT)
|
||||
- --kubelet-registration-path={{ .Values.windows.kubelet }}\\plugins\\{{ .Values.driver.name }}\\csi.sock
|
||||
env:
|
||||
- name: CSI_ENDPOINT
|
||||
value: unix://C:\\csi\\csi.sock
|
||||
- name: KUBE_NODE_NAME
|
||||
valueFrom:
|
||||
fieldRef:
|
||||
fieldPath: spec.nodeName
|
||||
imagePullPolicy: {{ .Values.windows.image.nodeDriverRegistrar.pullPolicy }}
|
||||
volumeMounts:
|
||||
- name: plugin-dir
|
||||
mountPath: C:\csi
|
||||
- name: registration-dir
|
||||
mountPath: C:\registration
|
||||
resources:
|
||||
limits:
|
||||
cpu: 200m
|
||||
memory: 200Mi
|
||||
requests:
|
||||
cpu: 10m
|
||||
memory: 20Mi
|
||||
- name: smb
|
||||
image: "{{ .Values.image.smb.repository }}:{{ .Values.image.smb.tag }}"
|
||||
imagePullPolicy: {{ .Values.image.smb.pullPolicy }}
|
||||
args:
|
||||
- "--v={{ .Values.node.logLevel }}"
|
||||
- "--drivername={{ .Values.driver.name }}"
|
||||
- --endpoint=$(CSI_ENDPOINT)
|
||||
- --nodeid=$(KUBE_NODE_NAME)
|
||||
- "--metrics-address=0.0.0.0:{{ .Values.node.metricsPort }}"
|
||||
ports:
|
||||
- containerPort: 29643
|
||||
name: healthz
|
||||
protocol: TCP
|
||||
- containerPort: {{ .Values.node.metricsPort }}
|
||||
name: metrics
|
||||
protocol: TCP
|
||||
livenessProbe:
|
||||
failureThreshold: 5
|
||||
httpGet:
|
||||
path: /healthz
|
||||
port: healthz
|
||||
initialDelaySeconds: 30
|
||||
timeoutSeconds: 10
|
||||
periodSeconds: 30
|
||||
env:
|
||||
- name: CSI_ENDPOINT
|
||||
value: unix://C:\\csi\\csi.sock
|
||||
- name: KUBE_NODE_NAME
|
||||
valueFrom:
|
||||
fieldRef:
|
||||
apiVersion: v1
|
||||
fieldPath: spec.nodeName
|
||||
volumeMounts:
|
||||
- name: kubelet-dir
|
||||
mountPath: {{ .Values.windows.kubelet }}\
|
||||
- name: plugin-dir
|
||||
mountPath: C:\csi
|
||||
- name: csi-proxy-fs-pipe
|
||||
mountPath: \\.\pipe\csi-proxy-filesystem-v1beta1
|
||||
- name: csi-proxy-smb-pipe
|
||||
mountPath: \\.\pipe\csi-proxy-smb-v1beta1
|
||||
resources:
|
||||
limits:
|
||||
cpu: 400m
|
||||
memory: 400Mi
|
||||
requests:
|
||||
cpu: 10m
|
||||
memory: 20Mi
|
||||
volumes:
|
||||
- name: csi-proxy-fs-pipe
|
||||
hostPath:
|
||||
path: \\.\pipe\csi-proxy-filesystem-v1beta1
|
||||
type: ""
|
||||
- name: csi-proxy-smb-pipe
|
||||
hostPath:
|
||||
path: \\.\pipe\csi-proxy-smb-v1beta1
|
||||
type: ""
|
||||
- name: registration-dir
|
||||
hostPath:
|
||||
path: {{ .Values.windows.kubelet }}\plugins_registry\
|
||||
type: Directory
|
||||
- name: kubelet-dir
|
||||
hostPath:
|
||||
path: {{ .Values.windows.kubelet }}\
|
||||
type: Directory
|
||||
- name: plugin-dir
|
||||
hostPath:
|
||||
path: {{ .Values.windows.kubelet }}\plugins\{{ .Values.driver.name }}\
|
||||
type: DirectoryOrCreate
|
||||
{{- end -}}
|
|
@ -0,0 +1,132 @@
|
|||
{{- if .Values.linux.enabled}}
|
||||
kind: DaemonSet
|
||||
apiVersion: apps/v1
|
||||
metadata:
|
||||
name: csi-smb-node
|
||||
namespace: {{ .Release.Namespace }}
|
||||
{{ include "smb.labels" . | indent 2 }}
|
||||
spec:
|
||||
selector:
|
||||
matchLabels:
|
||||
app: csi-smb-node
|
||||
template:
|
||||
metadata:
|
||||
{{ include "smb.labels" . | indent 6 }}
|
||||
app: csi-smb-node
|
||||
{{- if .Values.podLabels }}
|
||||
{{- toYaml .Values.podLabels | nindent 8 }}
|
||||
{{- end }}
|
||||
{{- if .Values.podAnnotations }}
|
||||
annotations:
|
||||
{{ toYaml .Values.podAnnotations | indent 8 }}
|
||||
{{- end }}
|
||||
spec:
|
||||
hostNetwork: true
|
||||
dnsPolicy: ClusterFirstWithHostNet
|
||||
nodeSelector:
|
||||
kubernetes.io/os: linux
|
||||
{{- with .Values.node.nodeSelector }}
|
||||
{{ toYaml . | indent 8 }}
|
||||
{{- end }}
|
||||
{{- if .Values.node.affinity }}
|
||||
{{- toYaml .Values.node.affinity | nindent 8 }}
|
||||
{{- end }}
|
||||
priorityClassName: {{ .Values.priorityClassName | quote }}
|
||||
{{- with .Values.linux.tolerations }}
|
||||
tolerations:
|
||||
{{ toYaml . | indent 8 }}
|
||||
{{- end }}
|
||||
{{- include "smb.pullSecrets" . | indent 6 }}
|
||||
containers:
|
||||
- name: liveness-probe
|
||||
volumeMounts:
|
||||
- mountPath: /csi
|
||||
name: socket-dir
|
||||
image: "{{ .Values.image.livenessProbe.repository }}:{{ .Values.image.livenessProbe.tag }}"
|
||||
args:
|
||||
- --csi-address=/csi/csi.sock
|
||||
- --probe-timeout=3s
|
||||
- --health-port={{ .Values.node.livenessProbe.healthPort }}
|
||||
- --v=2
|
||||
imagePullPolicy: {{ .Values.image.livenessProbe.pullPolicy }}
|
||||
resources: {{- toYaml .Values.node.resources.livenessProbe | nindent 12 }}
|
||||
- name: node-driver-registrar
|
||||
image: "{{ .Values.image.nodeDriverRegistrar.repository }}:{{ .Values.image.nodeDriverRegistrar.tag }}"
|
||||
args:
|
||||
- --csi-address=$(ADDRESS)
|
||||
- --kubelet-registration-path=$(DRIVER_REG_SOCK_PATH)
|
||||
- --v=2
|
||||
lifecycle:
|
||||
preStop:
|
||||
exec:
|
||||
command: ["/bin/sh", "-c", "rm -rf /registration/{{ .Values.driver.name }}-reg.sock /csi/csi.sock"]
|
||||
env:
|
||||
- name: ADDRESS
|
||||
value: /csi/csi.sock
|
||||
- name: DRIVER_REG_SOCK_PATH
|
||||
value: {{ .Values.linux.kubelet }}/plugins/{{ .Values.driver.name }}/csi.sock
|
||||
imagePullPolicy: {{ .Values.image.nodeDriverRegistrar.pullPolicy }}
|
||||
volumeMounts:
|
||||
- name: socket-dir
|
||||
mountPath: /csi
|
||||
- name: registration-dir
|
||||
mountPath: /registration
|
||||
resources: {{- toYaml .Values.node.resources.nodeDriverRegistrar | nindent 12 }}
|
||||
- name: smb
|
||||
image: "{{ .Values.image.smb.repository }}:{{ .Values.image.smb.tag }}"
|
||||
imagePullPolicy: {{ .Values.image.smb.pullPolicy }}
|
||||
args:
|
||||
- "--v={{ .Values.node.logLevel }}"
|
||||
- "--drivername={{ .Values.driver.name }}"
|
||||
- "--endpoint=$(CSI_ENDPOINT)"
|
||||
- "--nodeid=$(KUBE_NODE_NAME)"
|
||||
- "--metrics-address=0.0.0.0:{{ .Values.node.metricsPort }}"
|
||||
ports:
|
||||
- containerPort: 29643
|
||||
name: healthz
|
||||
protocol: TCP
|
||||
- containerPort: {{ .Values.node.metricsPort }}
|
||||
name: metrics
|
||||
protocol: TCP
|
||||
livenessProbe:
|
||||
failureThreshold: 5
|
||||
httpGet:
|
||||
path: /healthz
|
||||
port: healthz
|
||||
initialDelaySeconds: 30
|
||||
timeoutSeconds: 10
|
||||
periodSeconds: 30
|
||||
env:
|
||||
- name: CSI_ENDPOINT
|
||||
value: unix:///csi/csi.sock
|
||||
- name: KUBE_NODE_NAME
|
||||
valueFrom:
|
||||
fieldRef:
|
||||
apiVersion: v1
|
||||
fieldPath: spec.nodeName
|
||||
securityContext:
|
||||
privileged: true
|
||||
volumeMounts:
|
||||
- mountPath: /csi
|
||||
name: socket-dir
|
||||
- mountPath: {{ .Values.linux.kubelet }}/
|
||||
mountPropagation: Bidirectional
|
||||
name: mountpoint-dir
|
||||
resources: {{- toYaml .Values.node.resources.smb | nindent 12 }}
|
||||
volumes:
|
||||
- hostPath:
|
||||
path: {{ .Values.linux.kubelet }}/plugins/{{ .Values.driver.name }}
|
||||
type: DirectoryOrCreate
|
||||
name: socket-dir
|
||||
- hostPath:
|
||||
path: {{ .Values.linux.kubelet }}/
|
||||
type: DirectoryOrCreate
|
||||
name: mountpoint-dir
|
||||
- hostPath:
|
||||
path: {{ .Values.linux.kubelet }}/plugins_registry/
|
||||
type: DirectoryOrCreate
|
||||
name: registration-dir
|
||||
{{- if .Values.securityContext }}
|
||||
securityContext: {{- toYaml .Values.securityContext | nindent 8 }}
|
||||
{{- end }}
|
||||
{{- end -}}
|
|
@ -0,0 +1,130 @@
|
|||
image:
|
||||
smb:
|
||||
repository: mcr.microsoft.com/k8s/csi/smb-csi
|
||||
tag: v1.1.0
|
||||
pullPolicy: IfNotPresent
|
||||
csiProvisioner:
|
||||
repository: registry.k8s.io/sig-storage/csi-provisioner
|
||||
tag: v2.1.0
|
||||
pullPolicy: IfNotPresent
|
||||
livenessProbe:
|
||||
repository: registry.k8s.io/sig-storage/livenessprobe
|
||||
tag: v2.3.0
|
||||
pullPolicy: IfNotPresent
|
||||
nodeDriverRegistrar:
|
||||
repository: registry.k8s.io/sig-storage/csi-node-driver-registrar
|
||||
tag: v2.2.0
|
||||
pullPolicy: IfNotPresent
|
||||
|
||||
serviceAccount:
|
||||
create: true
|
||||
|
||||
rbac:
|
||||
create: true
|
||||
|
||||
driver:
|
||||
name: smb.csi.k8s.io
|
||||
|
||||
controller:
|
||||
replicas: 2
|
||||
metricsPort: 29644
|
||||
runOnMaster: false
|
||||
logLevel: 5
|
||||
resources:
|
||||
csiProvisioner:
|
||||
limits:
|
||||
cpu: 100m
|
||||
memory: 300Mi
|
||||
requests:
|
||||
cpu: 10m
|
||||
memory: 20Mi
|
||||
livenessProbe:
|
||||
limits:
|
||||
cpu: 100m
|
||||
memory: 100Mi
|
||||
requests:
|
||||
cpu: 10m
|
||||
memory: 20Mi
|
||||
smb:
|
||||
limits:
|
||||
cpu: 200m
|
||||
memory: 200Mi
|
||||
requests:
|
||||
cpu: 10m
|
||||
memory: 20Mi
|
||||
affinity: {}
|
||||
nodeSelector: {}
|
||||
tolerations:
|
||||
- key: "node-role.kubernetes.io/master"
|
||||
operator: "Equal"
|
||||
value: "true"
|
||||
effect: "NoSchedule"
|
||||
- key: "node-role.kubernetes.io/controlplane"
|
||||
operator: "Equal"
|
||||
value: "true"
|
||||
effect: "NoSchedule"
|
||||
|
||||
node:
|
||||
metricsPort: 29645
|
||||
logLevel: 5
|
||||
livenessProbe:
|
||||
healthPort: 29643
|
||||
resources:
|
||||
livenessProbe:
|
||||
limits:
|
||||
cpu: 100m
|
||||
memory: 100Mi
|
||||
requests:
|
||||
cpu: 10m
|
||||
memory: 20Mi
|
||||
nodeDriverRegistrar:
|
||||
limits:
|
||||
cpu: 100m
|
||||
memory: 100Mi
|
||||
requests:
|
||||
cpu: 10m
|
||||
memory: 20Mi
|
||||
smb:
|
||||
limits:
|
||||
cpu: 400m
|
||||
memory: 200Mi
|
||||
requests:
|
||||
cpu: 10m
|
||||
memory: 20Mi
|
||||
affinity: {}
|
||||
nodeSelector: {}
|
||||
|
||||
linux:
|
||||
enabled: true
|
||||
kubelet: /var/lib/kubelet
|
||||
tolerations:
|
||||
- operator: "Exists"
|
||||
|
||||
windows:
|
||||
enabled: false
|
||||
kubelet: 'C:\var\lib\kubelet'
|
||||
image:
|
||||
livenessProbe:
|
||||
repository: mcr.microsoft.com/oss/kubernetes-csi/livenessprobe
|
||||
tag: v2.3.0
|
||||
pullPolicy: IfNotPresent
|
||||
nodeDriverRegistrar:
|
||||
repository: mcr.microsoft.com/oss/kubernetes-csi/csi-node-driver-registrar
|
||||
tag: v2.2.0
|
||||
pullPolicy: IfNotPresent
|
||||
tolerations:
|
||||
- key: "node.kubernetes.io/os"
|
||||
operator: "Exists"
|
||||
effect: "NoSchedule"
|
||||
|
||||
## Collection of annotations to add to all the pods
|
||||
podAnnotations: {}
|
||||
## Collection of labels to add to all the pods
|
||||
podLabels: {}
|
||||
## Leverage a PriorityClass to ensure your pods survive resource shortages
|
||||
## ref: https://kubernetes.io/docs/concepts/configuration/pod-priority-preemption/
|
||||
priorityClassName: system-cluster-critical
|
||||
## Security context give the opportunity to run container as nonroot by setting a securityContext
|
||||
## by example :
|
||||
## securityContext: { runAsUser: 1001 }
|
||||
securityContext: {}
|
Binary file not shown.
|
@ -0,0 +1,5 @@
|
|||
apiVersion: v1
|
||||
appVersion: v1.10.0
|
||||
description: SMB CSI Driver for Kubernetes
|
||||
name: csi-driver-smb
|
||||
version: v1.10.0
|
|
@ -0,0 +1,5 @@
|
|||
The CSI SMB Driver is getting deployed to your cluster.
|
||||
|
||||
To check CSI SMB Driver pods status, please run:
|
||||
|
||||
kubectl --namespace={{ .Release.Namespace }} get pods --selector="app.kubernetes.io/name={{ .Release.Name }}" --watch
|
|
@ -0,0 +1,29 @@
|
|||
{{/* vim: set filetype=mustache: */}}
|
||||
|
||||
{{/* Expand the name of the chart.*/}}
|
||||
{{- define "smb.name" -}}
|
||||
{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" -}}
|
||||
{{- end -}}
|
||||
|
||||
{{/* labels for helm resources */}}
|
||||
{{- define "smb.labels" -}}
|
||||
labels:
|
||||
app.kubernetes.io/instance: "{{ .Release.Name }}"
|
||||
app.kubernetes.io/managed-by: "{{ .Release.Service }}"
|
||||
app.kubernetes.io/name: "{{ template "smb.name" . }}"
|
||||
app.kubernetes.io/version: "{{ .Chart.AppVersion }}"
|
||||
helm.sh/chart: "{{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}"
|
||||
{{- if .Values.customLabels }}
|
||||
{{ toYaml .Values.customLabels | indent 2 -}}
|
||||
{{- end }}
|
||||
{{- end -}}
|
||||
|
||||
{{/* pull secrets for containers */}}
|
||||
{{- define "smb.pullSecrets" -}}
|
||||
{{- if .Values.imagePullSecrets }}
|
||||
imagePullSecrets:
|
||||
{{- range .Values.imagePullSecrets }}
|
||||
- name: {{ . }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
{{- end -}}
|
|
@ -0,0 +1,127 @@
|
|||
---
|
||||
kind: Deployment
|
||||
apiVersion: apps/v1
|
||||
metadata:
|
||||
name: {{ .Values.controller.name }}
|
||||
namespace: {{ .Release.Namespace }}
|
||||
{{ include "smb.labels" . | indent 2 }}
|
||||
spec:
|
||||
replicas: {{ .Values.controller.replicas }}
|
||||
selector:
|
||||
matchLabels:
|
||||
app: {{ .Values.controller.name }}
|
||||
template:
|
||||
metadata:
|
||||
{{ include "smb.labels" . | indent 6 }}
|
||||
app: {{ .Values.controller.name }}
|
||||
{{- if .Values.podLabels }}
|
||||
{{- toYaml .Values.podLabels | nindent 8 }}
|
||||
{{- end }}
|
||||
{{- if .Values.podAnnotations }}
|
||||
annotations:
|
||||
{{ toYaml .Values.podAnnotations | indent 8 }}
|
||||
{{- end }}
|
||||
spec:
|
||||
{{- with .Values.controller.affinity }}
|
||||
affinity:
|
||||
{{ toYaml . | indent 8 }}
|
||||
{{- end }}
|
||||
dnsPolicy: {{ .Values.controller.dnsPolicy }}
|
||||
serviceAccountName: {{ .Values.serviceAccount.controller }}
|
||||
nodeSelector:
|
||||
{{- with .Values.controller.nodeSelector }}
|
||||
{{ toYaml . | indent 8 }}
|
||||
{{- end }}
|
||||
kubernetes.io/os: linux
|
||||
{{- if .Values.controller.runOnMaster}}
|
||||
node-role.kubernetes.io/master: ""
|
||||
{{- end}}
|
||||
{{- if .Values.controller.runOnControlPlane}}
|
||||
node-role.kubernetes.io/control-plane: ""
|
||||
{{- end}}
|
||||
priorityClassName: system-cluster-critical
|
||||
{{- with .Values.controller.tolerations }}
|
||||
tolerations:
|
||||
{{ toYaml . | indent 8 }}
|
||||
{{- end }}
|
||||
{{- include "smb.pullSecrets" . | indent 6 }}
|
||||
containers:
|
||||
- name: csi-provisioner
|
||||
{{- if hasPrefix "/" .Values.image.csiProvisioner.repository }}
|
||||
image: "{{ .Values.image.baseRepo }}{{ .Values.image.csiProvisioner.repository }}:{{ .Values.image.csiProvisioner.tag }}"
|
||||
{{- else }}
|
||||
image: "{{ .Values.image.csiProvisioner.repository }}:{{ .Values.image.csiProvisioner.tag }}"
|
||||
{{- end }}
|
||||
args:
|
||||
- "-v=2"
|
||||
- "--csi-address=$(ADDRESS)"
|
||||
- "--leader-election"
|
||||
- "--leader-election-namespace={{ .Release.Namespace }}"
|
||||
- "--extra-create-metadata=true"
|
||||
env:
|
||||
- name: ADDRESS
|
||||
value: /csi/csi.sock
|
||||
imagePullPolicy: {{ .Values.image.csiProvisioner.pullPolicy }}
|
||||
volumeMounts:
|
||||
- mountPath: /csi
|
||||
name: socket-dir
|
||||
resources: {{- toYaml .Values.controller.resources.csiProvisioner | nindent 12 }}
|
||||
- name: liveness-probe
|
||||
{{- if hasPrefix "/" .Values.image.livenessProbe.repository }}
|
||||
image: "{{ .Values.image.baseRepo }}{{ .Values.image.livenessProbe.repository }}:{{ .Values.image.livenessProbe.tag }}"
|
||||
{{- else }}
|
||||
image: "{{ .Values.image.livenessProbe.repository }}:{{ .Values.image.livenessProbe.tag }}"
|
||||
{{- end }}
|
||||
args:
|
||||
- --csi-address=/csi/csi.sock
|
||||
- --probe-timeout=3s
|
||||
- --health-port={{ .Values.controller.livenessProbe.healthPort }}
|
||||
- --v=2
|
||||
imagePullPolicy: {{ .Values.image.livenessProbe.pullPolicy }}
|
||||
volumeMounts:
|
||||
- name: socket-dir
|
||||
mountPath: /csi
|
||||
resources: {{- toYaml .Values.controller.resources.livenessProbe | nindent 12 }}
|
||||
- name: smb
|
||||
{{- if hasPrefix "/" .Values.image.smb.repository }}
|
||||
image: "{{ .Values.image.baseRepo }}{{ .Values.image.smb.repository }}:{{ .Values.image.smb.tag }}"
|
||||
{{- else }}
|
||||
image: "{{ .Values.image.smb.repository }}:{{ .Values.image.smb.tag }}"
|
||||
{{- end }}
|
||||
imagePullPolicy: {{ .Values.image.smb.pullPolicy }}
|
||||
args:
|
||||
- "--v={{ .Values.controller.logLevel }}"
|
||||
- "--endpoint=$(CSI_ENDPOINT)"
|
||||
- "--metrics-address=0.0.0.0:{{ .Values.controller.metricsPort }}"
|
||||
- "--drivername={{ .Values.driver.name }}"
|
||||
- "--working-mount-dir={{ .Values.controller.workingMountDir }}"
|
||||
ports:
|
||||
- containerPort: {{ .Values.controller.livenessProbe.healthPort }}
|
||||
name: healthz
|
||||
protocol: TCP
|
||||
- containerPort: {{ .Values.controller.metricsPort }}
|
||||
name: metrics
|
||||
protocol: TCP
|
||||
livenessProbe:
|
||||
failureThreshold: 5
|
||||
httpGet:
|
||||
path: /healthz
|
||||
port: healthz
|
||||
initialDelaySeconds: 30
|
||||
timeoutSeconds: 10
|
||||
periodSeconds: 30
|
||||
env:
|
||||
- name: CSI_ENDPOINT
|
||||
value: unix:///csi/csi.sock
|
||||
securityContext:
|
||||
privileged: true
|
||||
volumeMounts:
|
||||
- mountPath: /csi
|
||||
name: socket-dir
|
||||
resources: {{- toYaml .Values.controller.resources.smb | nindent 12 }}
|
||||
volumes:
|
||||
- name: socket-dir
|
||||
emptyDir: {}
|
||||
{{- if .Values.securityContext }}
|
||||
securityContext: {{- toYaml .Values.securityContext | nindent 8 }}
|
||||
{{- end }}
|
|
@ -0,0 +1,8 @@
|
|||
---
|
||||
apiVersion: storage.k8s.io/v1
|
||||
kind: CSIDriver
|
||||
metadata:
|
||||
name: {{ .Values.driver.name }}
|
||||
spec:
|
||||
attachRequired: false
|
||||
podInfoOnMount: true
|
|
@ -0,0 +1,169 @@
|
|||
{{- if .Values.windows.enabled}}
|
||||
kind: DaemonSet
|
||||
apiVersion: apps/v1
|
||||
metadata:
|
||||
name: {{ .Values.windows.dsName }}
|
||||
namespace: {{ .Release.Namespace }}
|
||||
{{ include "smb.labels" . | indent 2 }}
|
||||
spec:
|
||||
updateStrategy:
|
||||
rollingUpdate:
|
||||
maxUnavailable: {{ .Values.node.maxUnavailable }}
|
||||
type: RollingUpdate
|
||||
selector:
|
||||
matchLabels:
|
||||
app: {{ .Values.windows.dsName }}
|
||||
template:
|
||||
metadata:
|
||||
{{ include "smb.labels" . | indent 6 }}
|
||||
app: {{ .Values.windows.dsName }}
|
||||
spec:
|
||||
{{- with .Values.windows.tolerations }}
|
||||
tolerations:
|
||||
{{ toYaml . | indent 8 }}
|
||||
{{- end }}
|
||||
nodeSelector:
|
||||
kubernetes.io/os: windows
|
||||
{{- with .Values.node.nodeSelector }}
|
||||
{{ toYaml . | indent 8 }}
|
||||
{{- end }}
|
||||
{{- with .Values.node.affinity }}
|
||||
affinity:
|
||||
{{ toYaml . | indent 8 }}
|
||||
{{- end }}
|
||||
priorityClassName: system-node-critical
|
||||
serviceAccountName: {{ .Values.serviceAccount.node }}
|
||||
{{- include "smb.pullSecrets" . | indent 6 }}
|
||||
containers:
|
||||
- name: liveness-probe
|
||||
volumeMounts:
|
||||
- mountPath: C:\csi
|
||||
name: plugin-dir
|
||||
{{- if hasPrefix "/" .Values.image.livenessProbe.repository }}
|
||||
image: "{{ .Values.image.baseRepo }}{{ .Values.image.livenessProbe.repository }}:{{ .Values.image.livenessProbe.tag }}"
|
||||
{{- else }}
|
||||
image: "{{ .Values.image.livenessProbe.repository }}:{{ .Values.image.livenessProbe.tag }}"
|
||||
{{- end }}
|
||||
args:
|
||||
- --csi-address=$(CSI_ENDPOINT)
|
||||
- --probe-timeout=3s
|
||||
- --health-port={{ .Values.node.livenessProbe.healthPort }}
|
||||
- --v=2
|
||||
env:
|
||||
- name: CSI_ENDPOINT
|
||||
value: unix://C:\\csi\\csi.sock
|
||||
imagePullPolicy: {{ .Values.image.livenessProbe.pullPolicy }}
|
||||
resources: {{- toYaml .Values.windows.resources.livenessProbe | nindent 12 }}
|
||||
- name: node-driver-registrar
|
||||
{{- if hasPrefix "/" .Values.image.nodeDriverRegistrar.repository }}
|
||||
image: "{{ .Values.image.baseRepo }}{{ .Values.image.nodeDriverRegistrar.repository }}:{{ .Values.image.nodeDriverRegistrar.tag }}"
|
||||
{{- else }}
|
||||
image: "{{ .Values.image.nodeDriverRegistrar.repository }}:{{ .Values.image.nodeDriverRegistrar.tag }}"
|
||||
{{- end }}
|
||||
args:
|
||||
- --v=2
|
||||
- --csi-address=$(CSI_ENDPOINT)
|
||||
- --kubelet-registration-path=$(DRIVER_REG_SOCK_PATH)
|
||||
livenessProbe:
|
||||
exec:
|
||||
command:
|
||||
- /csi-node-driver-registrar.exe
|
||||
- --kubelet-registration-path=$(DRIVER_REG_SOCK_PATH)
|
||||
- --mode=kubelet-registration-probe
|
||||
initialDelaySeconds: 60
|
||||
timeoutSeconds: 30
|
||||
env:
|
||||
- name: CSI_ENDPOINT
|
||||
value: unix://C:\\csi\\csi.sock
|
||||
- name: DRIVER_REG_SOCK_PATH
|
||||
value: {{ .Values.windows.kubelet | replace "\\" "\\\\" }}\\plugins\\{{ .Values.driver.name }}\\csi.sock
|
||||
- name: KUBE_NODE_NAME
|
||||
valueFrom:
|
||||
fieldRef:
|
||||
fieldPath: spec.nodeName
|
||||
imagePullPolicy: {{ .Values.image.nodeDriverRegistrar.pullPolicy }}
|
||||
volumeMounts:
|
||||
- name: plugin-dir
|
||||
mountPath: C:\csi
|
||||
- name: registration-dir
|
||||
mountPath: C:\registration
|
||||
resources: {{- toYaml .Values.windows.resources.nodeDriverRegistrar | nindent 12 }}
|
||||
- name: smb
|
||||
{{- if hasPrefix "/" .Values.image.smb.repository }}
|
||||
image: "{{ .Values.image.baseRepo }}{{ .Values.image.smb.repository }}:{{ .Values.image.smb.tag }}"
|
||||
{{- else }}
|
||||
image: "{{ .Values.image.smb.repository }}:{{ .Values.image.smb.tag }}"
|
||||
{{- end }}
|
||||
imagePullPolicy: {{ .Values.image.smb.pullPolicy }}
|
||||
args:
|
||||
- "--v={{ .Values.node.logLevel }}"
|
||||
- "--drivername={{ .Values.driver.name }}"
|
||||
- --endpoint=$(CSI_ENDPOINT)
|
||||
- --nodeid=$(KUBE_NODE_NAME)
|
||||
- "--metrics-address=0.0.0.0:{{ .Values.node.metricsPort }}"
|
||||
- "--enable-get-volume-stats={{ .Values.feature.enableGetVolumeStats }}"
|
||||
- "--remove-smb-mapping-during-unmount={{ .Values.windows.removeSMBMappingDuringUnmount }}"
|
||||
ports:
|
||||
- containerPort: {{ .Values.node.livenessProbe.healthPort }}
|
||||
name: healthz
|
||||
protocol: TCP
|
||||
livenessProbe:
|
||||
failureThreshold: 5
|
||||
httpGet:
|
||||
path: /healthz
|
||||
port: healthz
|
||||
initialDelaySeconds: 30
|
||||
timeoutSeconds: 10
|
||||
periodSeconds: 30
|
||||
env:
|
||||
- name: CSI_ENDPOINT
|
||||
value: unix://C:\\csi\\csi.sock
|
||||
- name: KUBE_NODE_NAME
|
||||
valueFrom:
|
||||
fieldRef:
|
||||
apiVersion: v1
|
||||
fieldPath: spec.nodeName
|
||||
volumeMounts:
|
||||
- name: kubelet-dir
|
||||
mountPath: {{ .Values.windows.kubelet }}\
|
||||
- name: plugin-dir
|
||||
mountPath: C:\csi
|
||||
- name: csi-proxy-fs-pipe-v1
|
||||
mountPath: \\.\pipe\csi-proxy-filesystem-v1
|
||||
- name: csi-proxy-smb-pipe-v1
|
||||
mountPath: \\.\pipe\csi-proxy-smb-v1
|
||||
# these paths are still included for compatibility, they're used
|
||||
# only if the node has still the beta version of the CSI proxy
|
||||
- name: csi-proxy-fs-pipe-v1beta1
|
||||
mountPath: \\.\pipe\csi-proxy-filesystem-v1beta1
|
||||
- name: csi-proxy-smb-pipe-v1beta1
|
||||
mountPath: \\.\pipe\csi-proxy-smb-v1beta1
|
||||
resources: {{- toYaml .Values.windows.resources.smb | nindent 12 }}
|
||||
volumes:
|
||||
- name: csi-proxy-fs-pipe-v1
|
||||
hostPath:
|
||||
path: \\.\pipe\csi-proxy-filesystem-v1
|
||||
- name: csi-proxy-smb-pipe-v1
|
||||
hostPath:
|
||||
path: \\.\pipe\csi-proxy-smb-v1
|
||||
# these paths are still included for compatibility, they're used
|
||||
# only if the node has still the beta version of the CSI proxy
|
||||
- name: csi-proxy-fs-pipe-v1beta1
|
||||
hostPath:
|
||||
path: \\.\pipe\csi-proxy-filesystem-v1beta1
|
||||
- name: csi-proxy-smb-pipe-v1beta1
|
||||
hostPath:
|
||||
path: \\.\pipe\csi-proxy-smb-v1beta1
|
||||
- name: registration-dir
|
||||
hostPath:
|
||||
path: {{ .Values.windows.kubelet }}\plugins_registry\
|
||||
type: Directory
|
||||
- name: kubelet-dir
|
||||
hostPath:
|
||||
path: {{ .Values.windows.kubelet }}\
|
||||
type: Directory
|
||||
- name: plugin-dir
|
||||
hostPath:
|
||||
path: {{ .Values.windows.kubelet }}\plugins\{{ .Values.driver.name }}\
|
||||
type: DirectoryOrCreate
|
||||
{{- end -}}
|
|
@ -0,0 +1,152 @@
|
|||
{{- if .Values.linux.enabled}}
|
||||
kind: DaemonSet
|
||||
apiVersion: apps/v1
|
||||
metadata:
|
||||
name: {{ .Values.linux.dsName }}
|
||||
namespace: {{ .Release.Namespace }}
|
||||
{{ include "smb.labels" . | indent 2 }}
|
||||
spec:
|
||||
updateStrategy:
|
||||
rollingUpdate:
|
||||
maxUnavailable: {{ .Values.node.maxUnavailable }}
|
||||
type: RollingUpdate
|
||||
selector:
|
||||
matchLabels:
|
||||
app: {{ .Values.linux.dsName }}
|
||||
template:
|
||||
metadata:
|
||||
{{ include "smb.labels" . | indent 6 }}
|
||||
app: {{ .Values.linux.dsName }}
|
||||
{{- if .Values.podLabels }}
|
||||
{{- toYaml .Values.podLabels | nindent 8 }}
|
||||
{{- end }}
|
||||
{{- if .Values.podAnnotations }}
|
||||
annotations:
|
||||
{{ toYaml .Values.podAnnotations | indent 8 }}
|
||||
{{- end }}
|
||||
spec:
|
||||
{{- with .Values.node.affinity }}
|
||||
affinity:
|
||||
{{ toYaml . | indent 8 }}
|
||||
{{- end }}
|
||||
hostNetwork: true
|
||||
dnsPolicy: {{ .Values.linux.dnsPolicy }}
|
||||
serviceAccountName: {{ .Values.serviceAccount.node }}
|
||||
nodeSelector:
|
||||
kubernetes.io/os: linux
|
||||
{{- with .Values.node.nodeSelector }}
|
||||
{{ toYaml . | indent 8 }}
|
||||
{{- end }}
|
||||
priorityClassName: {{ .Values.priorityClassName | quote }}
|
||||
{{- with .Values.linux.tolerations }}
|
||||
tolerations:
|
||||
{{ toYaml . | indent 8 }}
|
||||
{{- end }}
|
||||
{{- include "smb.pullSecrets" . | indent 6 }}
|
||||
containers:
|
||||
- name: liveness-probe
|
||||
volumeMounts:
|
||||
- mountPath: /csi
|
||||
name: socket-dir
|
||||
{{- if hasPrefix "/" .Values.image.livenessProbe.repository }}
|
||||
image: "{{ .Values.image.baseRepo }}{{ .Values.image.livenessProbe.repository }}:{{ .Values.image.livenessProbe.tag }}"
|
||||
{{- else }}
|
||||
image: "{{ .Values.image.livenessProbe.repository }}:{{ .Values.image.livenessProbe.tag }}"
|
||||
{{- end }}
|
||||
args:
|
||||
- --csi-address=/csi/csi.sock
|
||||
- --probe-timeout=3s
|
||||
- --health-port={{ .Values.node.livenessProbe.healthPort }}
|
||||
- --v=2
|
||||
imagePullPolicy: {{ .Values.image.livenessProbe.pullPolicy }}
|
||||
resources: {{- toYaml .Values.linux.resources.livenessProbe | nindent 12 }}
|
||||
- name: node-driver-registrar
|
||||
{{- if hasPrefix "/" .Values.image.nodeDriverRegistrar.repository }}
|
||||
image: "{{ .Values.image.baseRepo }}{{ .Values.image.nodeDriverRegistrar.repository }}:{{ .Values.image.nodeDriverRegistrar.tag }}"
|
||||
{{- else }}
|
||||
image: "{{ .Values.image.nodeDriverRegistrar.repository }}:{{ .Values.image.nodeDriverRegistrar.tag }}"
|
||||
{{- end }}
|
||||
args:
|
||||
- --csi-address=$(ADDRESS)
|
||||
- --kubelet-registration-path=$(DRIVER_REG_SOCK_PATH)
|
||||
- --v=2
|
||||
livenessProbe:
|
||||
exec:
|
||||
command:
|
||||
- /csi-node-driver-registrar
|
||||
- --kubelet-registration-path=$(DRIVER_REG_SOCK_PATH)
|
||||
- --mode=kubelet-registration-probe
|
||||
initialDelaySeconds: 30
|
||||
timeoutSeconds: 15
|
||||
env:
|
||||
- name: ADDRESS
|
||||
value: /csi/csi.sock
|
||||
- name: DRIVER_REG_SOCK_PATH
|
||||
value: {{ .Values.linux.kubelet }}/plugins/{{ .Values.driver.name }}/csi.sock
|
||||
imagePullPolicy: {{ .Values.image.nodeDriverRegistrar.pullPolicy }}
|
||||
volumeMounts:
|
||||
- name: socket-dir
|
||||
mountPath: /csi
|
||||
- name: registration-dir
|
||||
mountPath: /registration
|
||||
resources: {{- toYaml .Values.linux.resources.nodeDriverRegistrar | nindent 12 }}
|
||||
- name: smb
|
||||
{{- if hasPrefix "/" .Values.image.smb.repository }}
|
||||
image: "{{ .Values.image.baseRepo }}{{ .Values.image.smb.repository }}:{{ .Values.image.smb.tag }}"
|
||||
{{- else }}
|
||||
image: "{{ .Values.image.smb.repository }}:{{ .Values.image.smb.tag }}"
|
||||
{{- end }}
|
||||
imagePullPolicy: {{ .Values.image.smb.pullPolicy }}
|
||||
args:
|
||||
- "--v={{ .Values.node.logLevel }}"
|
||||
- "--drivername={{ .Values.driver.name }}"
|
||||
- "--endpoint=$(CSI_ENDPOINT)"
|
||||
- "--nodeid=$(KUBE_NODE_NAME)"
|
||||
- "--metrics-address=0.0.0.0:{{ .Values.node.metricsPort }}"
|
||||
- "--enable-get-volume-stats={{ .Values.feature.enableGetVolumeStats }}"
|
||||
ports:
|
||||
- containerPort: {{ .Values.node.livenessProbe.healthPort }}
|
||||
name: healthz
|
||||
protocol: TCP
|
||||
livenessProbe:
|
||||
failureThreshold: 5
|
||||
httpGet:
|
||||
path: /healthz
|
||||
port: healthz
|
||||
initialDelaySeconds: 30
|
||||
timeoutSeconds: 10
|
||||
periodSeconds: 30
|
||||
env:
|
||||
- name: CSI_ENDPOINT
|
||||
value: unix:///csi/csi.sock
|
||||
- name: KUBE_NODE_NAME
|
||||
valueFrom:
|
||||
fieldRef:
|
||||
apiVersion: v1
|
||||
fieldPath: spec.nodeName
|
||||
securityContext:
|
||||
privileged: true
|
||||
volumeMounts:
|
||||
- mountPath: /csi
|
||||
name: socket-dir
|
||||
- mountPath: {{ .Values.linux.kubelet }}/
|
||||
mountPropagation: Bidirectional
|
||||
name: mountpoint-dir
|
||||
resources: {{- toYaml .Values.linux.resources.smb | nindent 12 }}
|
||||
volumes:
|
||||
- hostPath:
|
||||
path: {{ .Values.linux.kubelet }}/plugins/{{ .Values.driver.name }}
|
||||
type: DirectoryOrCreate
|
||||
name: socket-dir
|
||||
- hostPath:
|
||||
path: {{ .Values.linux.kubelet }}/
|
||||
type: DirectoryOrCreate
|
||||
name: mountpoint-dir
|
||||
- hostPath:
|
||||
path: {{ .Values.linux.kubelet }}/plugins_registry/
|
||||
type: DirectoryOrCreate
|
||||
name: registration-dir
|
||||
{{- if .Values.securityContext }}
|
||||
securityContext: {{- toYaml .Values.securityContext | nindent 8 }}
|
||||
{{- end }}
|
||||
{{- end -}}
|
|
@ -0,0 +1,65 @@
|
|||
{{- if .Values.serviceAccount.create -}}
|
||||
---
|
||||
apiVersion: v1
|
||||
kind: ServiceAccount
|
||||
metadata:
|
||||
name: {{ .Values.serviceAccount.controller }}
|
||||
namespace: {{ .Release.Namespace }}
|
||||
{{ include "smb.labels" . | indent 2 }}
|
||||
---
|
||||
apiVersion: v1
|
||||
kind: ServiceAccount
|
||||
metadata:
|
||||
name: {{ .Values.serviceAccount.node }}
|
||||
namespace: {{ .Release.Namespace }}
|
||||
{{ include "smb.labels" . | indent 2 }}
|
||||
{{ end }}
|
||||
|
||||
{{- if .Values.rbac.create -}}
|
||||
---
|
||||
apiVersion: rbac.authorization.k8s.io/v1
|
||||
kind: ClusterRole
|
||||
metadata:
|
||||
name: {{ .Values.rbac.name }}-external-provisioner-role
|
||||
{{ include "smb.labels" . | indent 2 }}
|
||||
rules:
|
||||
- apiGroups: [""]
|
||||
resources: ["persistentvolumes"]
|
||||
verbs: ["get", "list", "watch", "create", "delete"]
|
||||
- apiGroups: [""]
|
||||
resources: ["persistentvolumeclaims"]
|
||||
verbs: ["get", "list", "watch", "update"]
|
||||
- apiGroups: ["storage.k8s.io"]
|
||||
resources: ["storageclasses"]
|
||||
verbs: ["get", "list", "watch"]
|
||||
- apiGroups: [""]
|
||||
resources: ["events"]
|
||||
verbs: ["get", "list", "watch", "create", "update", "patch"]
|
||||
- apiGroups: ["storage.k8s.io"]
|
||||
resources: ["csinodes"]
|
||||
verbs: ["get", "list", "watch"]
|
||||
- apiGroups: [""]
|
||||
resources: ["nodes"]
|
||||
verbs: ["get", "list", "watch"]
|
||||
- apiGroups: ["coordination.k8s.io"]
|
||||
resources: ["leases"]
|
||||
verbs: ["get", "list", "watch", "create", "update", "patch"]
|
||||
- apiGroups: [""]
|
||||
resources: ["secrets"]
|
||||
verbs: ["get"]
|
||||
---
|
||||
|
||||
kind: ClusterRoleBinding
|
||||
apiVersion: rbac.authorization.k8s.io/v1
|
||||
metadata:
|
||||
name: {{ .Values.rbac.name }}-csi-provisioner-binding
|
||||
{{ include "smb.labels" . | indent 2 }}
|
||||
subjects:
|
||||
- kind: ServiceAccount
|
||||
name: {{ .Values.serviceAccount.controller }}
|
||||
namespace: {{ .Release.Namespace }}
|
||||
roleRef:
|
||||
kind: ClusterRole
|
||||
name: {{ .Values.rbac.name }}-external-provisioner-role
|
||||
apiGroup: rbac.authorization.k8s.io
|
||||
{{ end }}
|
|
@ -0,0 +1,154 @@
|
|||
image:
|
||||
baseRepo: registry.k8s.io/sig-storage
|
||||
smb:
|
||||
repository: registry.k8s.io/sig-storage/smbplugin
|
||||
tag: v1.10.0
|
||||
pullPolicy: IfNotPresent
|
||||
csiProvisioner:
|
||||
repository: registry.k8s.io/sig-storage/csi-provisioner
|
||||
tag: v3.3.0
|
||||
pullPolicy: IfNotPresent
|
||||
livenessProbe:
|
||||
repository: registry.k8s.io/sig-storage/livenessprobe
|
||||
tag: v2.8.0
|
||||
pullPolicy: IfNotPresent
|
||||
nodeDriverRegistrar:
|
||||
repository: registry.k8s.io/sig-storage/csi-node-driver-registrar
|
||||
tag: v2.6.2
|
||||
pullPolicy: IfNotPresent
|
||||
|
||||
serviceAccount:
|
||||
create: true # When true, service accounts will be created for you. Set to false if you want to use your own.
|
||||
controller: csi-smb-controller-sa
|
||||
node: csi-smb-node-sa
|
||||
|
||||
rbac:
|
||||
create: true
|
||||
name: smb
|
||||
|
||||
driver:
|
||||
name: smb.csi.k8s.io
|
||||
|
||||
feature:
|
||||
enableGetVolumeStats: true
|
||||
|
||||
controller:
|
||||
name: csi-smb-controller
|
||||
replicas: 1
|
||||
dnsPolicy: Default # available values: Default, ClusterFirstWithHostNet, ClusterFirst
|
||||
metricsPort: 29644
|
||||
livenessProbe:
|
||||
healthPort: 29642
|
||||
runOnMaster: false
|
||||
runOnControlPlane: false
|
||||
logLevel: 5
|
||||
workingMountDir: "/tmp"
|
||||
resources:
|
||||
csiProvisioner:
|
||||
limits:
|
||||
memory: 300Mi
|
||||
requests:
|
||||
cpu: 10m
|
||||
memory: 20Mi
|
||||
livenessProbe:
|
||||
limits:
|
||||
memory: 100Mi
|
||||
requests:
|
||||
cpu: 10m
|
||||
memory: 20Mi
|
||||
smb:
|
||||
limits:
|
||||
memory: 200Mi
|
||||
requests:
|
||||
cpu: 10m
|
||||
memory: 20Mi
|
||||
affinity: {}
|
||||
nodeSelector: {}
|
||||
tolerations:
|
||||
- key: "node-role.kubernetes.io/master"
|
||||
operator: "Exists"
|
||||
effect: "NoSchedule"
|
||||
- key: "node-role.kubernetes.io/controlplane"
|
||||
operator: "Exists"
|
||||
effect: "NoSchedule"
|
||||
- key: "node-role.kubernetes.io/control-plane"
|
||||
operator: "Exists"
|
||||
effect: "NoSchedule"
|
||||
|
||||
node:
|
||||
maxUnavailable: 1
|
||||
metricsPort: 29645
|
||||
logLevel: 5
|
||||
livenessProbe:
|
||||
healthPort: 29643
|
||||
affinity: {}
|
||||
nodeSelector: {}
|
||||
|
||||
linux:
|
||||
enabled: true
|
||||
dsName: csi-smb-node # daemonset name
|
||||
dnsPolicy: Default # available values: Default, ClusterFirstWithHostNet, ClusterFirst
|
||||
kubelet: /var/lib/kubelet
|
||||
tolerations:
|
||||
- operator: "Exists"
|
||||
resources:
|
||||
livenessProbe:
|
||||
limits:
|
||||
memory: 100Mi
|
||||
requests:
|
||||
cpu: 10m
|
||||
memory: 20Mi
|
||||
nodeDriverRegistrar:
|
||||
limits:
|
||||
memory: 100Mi
|
||||
requests:
|
||||
cpu: 10m
|
||||
memory: 20Mi
|
||||
smb:
|
||||
limits:
|
||||
memory: 200Mi
|
||||
requests:
|
||||
cpu: 10m
|
||||
memory: 20Mi
|
||||
|
||||
windows:
|
||||
enabled: false
|
||||
dsName: csi-smb-node-win # daemonset name
|
||||
kubelet: 'C:\var\lib\kubelet'
|
||||
removeSMBMappingDuringUnmount: true
|
||||
tolerations:
|
||||
- key: "node.kubernetes.io/os"
|
||||
operator: "Exists"
|
||||
effect: "NoSchedule"
|
||||
resources:
|
||||
livenessProbe:
|
||||
limits:
|
||||
memory: 150Mi
|
||||
requests:
|
||||
cpu: 10m
|
||||
memory: 40Mi
|
||||
nodeDriverRegistrar:
|
||||
limits:
|
||||
memory: 150Mi
|
||||
requests:
|
||||
cpu: 10m
|
||||
memory: 40Mi
|
||||
smb:
|
||||
limits:
|
||||
memory: 200Mi
|
||||
requests:
|
||||
cpu: 10m
|
||||
memory: 40Mi
|
||||
|
||||
customLabels: {}
|
||||
## Collection of annotations to add to all the pods
|
||||
podAnnotations: {}
|
||||
## Collection of labels to add to all the pods
|
||||
podLabels: {}
|
||||
## Leverage a PriorityClass to ensure your pods survive resource shortages
|
||||
## ref: https://kubernetes.io/docs/concepts/configuration/pod-priority-preemption/
|
||||
priorityClassName: system-cluster-critical
|
||||
## Security context give the opportunity to run container as nonroot by setting a securityContext
|
||||
## by example :
|
||||
## securityContext: { runAsUser: 1001 }
|
||||
securityContext: {}
|
Binary file not shown.
|
@ -0,0 +1,5 @@
|
|||
apiVersion: v1
|
||||
appVersion: v1.11.0
|
||||
description: SMB CSI Driver for Kubernetes
|
||||
name: csi-driver-smb
|
||||
version: v1.11.0
|
|
@ -0,0 +1,5 @@
|
|||
The CSI SMB Driver is getting deployed to your cluster.
|
||||
|
||||
To check CSI SMB Driver pods status, please run:
|
||||
|
||||
kubectl --namespace={{ .Release.Namespace }} get pods --selector="app.kubernetes.io/name={{ .Release.Name }}" --watch
|
|
@ -0,0 +1,29 @@
|
|||
{{/* vim: set filetype=mustache: */}}
|
||||
|
||||
{{/* Expand the name of the chart.*/}}
|
||||
{{- define "smb.name" -}}
|
||||
{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" -}}
|
||||
{{- end -}}
|
||||
|
||||
{{/* labels for helm resources */}}
|
||||
{{- define "smb.labels" -}}
|
||||
labels:
|
||||
app.kubernetes.io/instance: "{{ .Release.Name }}"
|
||||
app.kubernetes.io/managed-by: "{{ .Release.Service }}"
|
||||
app.kubernetes.io/name: "{{ template "smb.name" . }}"
|
||||
app.kubernetes.io/version: "{{ .Chart.AppVersion }}"
|
||||
helm.sh/chart: "{{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}"
|
||||
{{- if .Values.customLabels }}
|
||||
{{ toYaml .Values.customLabels | indent 2 -}}
|
||||
{{- end }}
|
||||
{{- end -}}
|
||||
|
||||
{{/* pull secrets for containers */}}
|
||||
{{- define "smb.pullSecrets" -}}
|
||||
{{- if .Values.imagePullSecrets }}
|
||||
imagePullSecrets:
|
||||
{{- range .Values.imagePullSecrets }}
|
||||
- name: {{ . }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
{{- end -}}
|
|
@ -0,0 +1,132 @@
|
|||
---
|
||||
kind: Deployment
|
||||
apiVersion: apps/v1
|
||||
metadata:
|
||||
name: {{ .Values.controller.name }}
|
||||
namespace: {{ .Release.Namespace }}
|
||||
{{ include "smb.labels" . | indent 2 }}
|
||||
spec:
|
||||
replicas: {{ .Values.controller.replicas }}
|
||||
selector:
|
||||
matchLabels:
|
||||
app: {{ .Values.controller.name }}
|
||||
template:
|
||||
metadata:
|
||||
{{ include "smb.labels" . | indent 6 }}
|
||||
app: {{ .Values.controller.name }}
|
||||
{{- if .Values.podLabels }}
|
||||
{{- toYaml .Values.podLabels | nindent 8 }}
|
||||
{{- end }}
|
||||
{{- if .Values.podAnnotations }}
|
||||
annotations:
|
||||
{{ toYaml .Values.podAnnotations | indent 8 }}
|
||||
{{- end }}
|
||||
spec:
|
||||
{{- with .Values.controller.affinity }}
|
||||
affinity:
|
||||
{{ toYaml . | indent 8 }}
|
||||
{{- end }}
|
||||
hostNetwork: true
|
||||
dnsPolicy: {{ .Values.controller.dnsPolicy }}
|
||||
serviceAccountName: {{ .Values.serviceAccount.controller }}
|
||||
nodeSelector:
|
||||
{{- with .Values.controller.nodeSelector }}
|
||||
{{ toYaml . | indent 8 }}
|
||||
{{- end }}
|
||||
kubernetes.io/os: linux
|
||||
{{- if .Values.controller.runOnMaster}}
|
||||
node-role.kubernetes.io/master: ""
|
||||
{{- end}}
|
||||
{{- if .Values.controller.runOnControlPlane}}
|
||||
node-role.kubernetes.io/control-plane: ""
|
||||
{{- end}}
|
||||
priorityClassName: {{ .Values.priorityClassName | quote }}
|
||||
{{- if .Values.securityContext }}
|
||||
securityContext: {{- toYaml .Values.securityContext | nindent 8 }}
|
||||
{{- end }}
|
||||
{{- with .Values.controller.tolerations }}
|
||||
tolerations:
|
||||
{{ toYaml . | indent 8 }}
|
||||
{{- end }}
|
||||
{{- include "smb.pullSecrets" . | indent 6 }}
|
||||
containers:
|
||||
- name: csi-provisioner
|
||||
{{- if hasPrefix "/" .Values.image.csiProvisioner.repository }}
|
||||
image: "{{ .Values.image.baseRepo }}{{ .Values.image.csiProvisioner.repository }}:{{ .Values.image.csiProvisioner.tag }}"
|
||||
{{- else }}
|
||||
image: "{{ .Values.image.csiProvisioner.repository }}:{{ .Values.image.csiProvisioner.tag }}"
|
||||
{{- end }}
|
||||
args:
|
||||
- "-v=2"
|
||||
- "--csi-address=$(ADDRESS)"
|
||||
- "--leader-election"
|
||||
- "--leader-election-namespace={{ .Release.Namespace }}"
|
||||
- "--extra-create-metadata=true"
|
||||
env:
|
||||
- name: ADDRESS
|
||||
value: /csi/csi.sock
|
||||
imagePullPolicy: {{ .Values.image.csiProvisioner.pullPolicy }}
|
||||
volumeMounts:
|
||||
- mountPath: /csi
|
||||
name: socket-dir
|
||||
resources: {{- toYaml .Values.controller.resources.csiProvisioner | nindent 12 }}
|
||||
securityContext:
|
||||
readOnlyRootFilesystem: true
|
||||
- name: liveness-probe
|
||||
{{- if hasPrefix "/" .Values.image.livenessProbe.repository }}
|
||||
image: "{{ .Values.image.baseRepo }}{{ .Values.image.livenessProbe.repository }}:{{ .Values.image.livenessProbe.tag }}"
|
||||
{{- else }}
|
||||
image: "{{ .Values.image.livenessProbe.repository }}:{{ .Values.image.livenessProbe.tag }}"
|
||||
{{- end }}
|
||||
args:
|
||||
- --csi-address=/csi/csi.sock
|
||||
- --probe-timeout=3s
|
||||
- --health-port={{ .Values.controller.livenessProbe.healthPort }}
|
||||
- --v=2
|
||||
imagePullPolicy: {{ .Values.image.livenessProbe.pullPolicy }}
|
||||
volumeMounts:
|
||||
- name: socket-dir
|
||||
mountPath: /csi
|
||||
resources: {{- toYaml .Values.controller.resources.livenessProbe | nindent 12 }}
|
||||
securityContext:
|
||||
readOnlyRootFilesystem: true
|
||||
- name: smb
|
||||
{{- if hasPrefix "/" .Values.image.smb.repository }}
|
||||
image: "{{ .Values.image.baseRepo }}{{ .Values.image.smb.repository }}:{{ .Values.image.smb.tag }}"
|
||||
{{- else }}
|
||||
image: "{{ .Values.image.smb.repository }}:{{ .Values.image.smb.tag }}"
|
||||
{{- end }}
|
||||
imagePullPolicy: {{ .Values.image.smb.pullPolicy }}
|
||||
args:
|
||||
- "--v={{ .Values.controller.logLevel }}"
|
||||
- "--endpoint=$(CSI_ENDPOINT)"
|
||||
- "--metrics-address=0.0.0.0:{{ .Values.controller.metricsPort }}"
|
||||
- "--drivername={{ .Values.driver.name }}"
|
||||
- "--working-mount-dir={{ .Values.controller.workingMountDir }}"
|
||||
ports:
|
||||
- containerPort: {{ .Values.controller.livenessProbe.healthPort }}
|
||||
name: healthz
|
||||
protocol: TCP
|
||||
- containerPort: {{ .Values.controller.metricsPort }}
|
||||
name: metrics
|
||||
protocol: TCP
|
||||
livenessProbe:
|
||||
failureThreshold: 5
|
||||
httpGet:
|
||||
path: /healthz
|
||||
port: healthz
|
||||
initialDelaySeconds: 30
|
||||
timeoutSeconds: 10
|
||||
periodSeconds: 30
|
||||
env:
|
||||
- name: CSI_ENDPOINT
|
||||
value: unix:///csi/csi.sock
|
||||
securityContext:
|
||||
privileged: true
|
||||
volumeMounts:
|
||||
- mountPath: /csi
|
||||
name: socket-dir
|
||||
resources: {{- toYaml .Values.controller.resources.smb | nindent 12 }}
|
||||
volumes:
|
||||
- name: socket-dir
|
||||
emptyDir: {}
|
|
@ -0,0 +1,8 @@
|
|||
---
|
||||
apiVersion: storage.k8s.io/v1
|
||||
kind: CSIDriver
|
||||
metadata:
|
||||
name: {{ .Values.driver.name }}
|
||||
spec:
|
||||
attachRequired: false
|
||||
podInfoOnMount: true
|
|
@ -0,0 +1,171 @@
|
|||
{{- if .Values.windows.enabled}}
|
||||
kind: DaemonSet
|
||||
apiVersion: apps/v1
|
||||
metadata:
|
||||
name: {{ .Values.windows.dsName }}
|
||||
namespace: {{ .Release.Namespace }}
|
||||
{{ include "smb.labels" . | indent 2 }}
|
||||
spec:
|
||||
updateStrategy:
|
||||
rollingUpdate:
|
||||
maxUnavailable: {{ .Values.node.maxUnavailable }}
|
||||
type: RollingUpdate
|
||||
selector:
|
||||
matchLabels:
|
||||
app: {{ .Values.windows.dsName }}
|
||||
template:
|
||||
metadata:
|
||||
{{ include "smb.labels" . | indent 6 }}
|
||||
app: {{ .Values.windows.dsName }}
|
||||
spec:
|
||||
{{- with .Values.windows.tolerations }}
|
||||
tolerations:
|
||||
{{ toYaml . | indent 8 }}
|
||||
{{- end }}
|
||||
nodeSelector:
|
||||
kubernetes.io/os: windows
|
||||
{{- with .Values.node.nodeSelector }}
|
||||
{{ toYaml . | indent 8 }}
|
||||
{{- end }}
|
||||
{{- with .Values.node.affinity }}
|
||||
affinity:
|
||||
{{ toYaml . | indent 8 }}
|
||||
{{- end }}
|
||||
priorityClassName: {{ .Values.priorityClassName | quote }}
|
||||
{{- if .Values.securityContext }}
|
||||
securityContext: {{- toYaml .Values.securityContext | nindent 8 }}
|
||||
{{- end }}
|
||||
serviceAccountName: {{ .Values.serviceAccount.node }}
|
||||
{{- include "smb.pullSecrets" . | indent 6 }}
|
||||
containers:
|
||||
- name: liveness-probe
|
||||
volumeMounts:
|
||||
- mountPath: C:\csi
|
||||
name: plugin-dir
|
||||
{{- if hasPrefix "/" .Values.image.livenessProbe.repository }}
|
||||
image: "{{ .Values.image.baseRepo }}{{ .Values.image.livenessProbe.repository }}:{{ .Values.image.livenessProbe.tag }}"
|
||||
{{- else }}
|
||||
image: "{{ .Values.image.livenessProbe.repository }}:{{ .Values.image.livenessProbe.tag }}"
|
||||
{{- end }}
|
||||
args:
|
||||
- --csi-address=$(CSI_ENDPOINT)
|
||||
- --probe-timeout=3s
|
||||
- --health-port={{ .Values.node.livenessProbe.healthPort }}
|
||||
- --v=2
|
||||
env:
|
||||
- name: CSI_ENDPOINT
|
||||
value: unix://C:\\csi\\csi.sock
|
||||
imagePullPolicy: {{ .Values.image.livenessProbe.pullPolicy }}
|
||||
resources: {{- toYaml .Values.windows.resources.livenessProbe | nindent 12 }}
|
||||
- name: node-driver-registrar
|
||||
{{- if hasPrefix "/" .Values.image.nodeDriverRegistrar.repository }}
|
||||
image: "{{ .Values.image.baseRepo }}{{ .Values.image.nodeDriverRegistrar.repository }}:{{ .Values.image.nodeDriverRegistrar.tag }}"
|
||||
{{- else }}
|
||||
image: "{{ .Values.image.nodeDriverRegistrar.repository }}:{{ .Values.image.nodeDriverRegistrar.tag }}"
|
||||
{{- end }}
|
||||
args:
|
||||
- --v=2
|
||||
- --csi-address=$(CSI_ENDPOINT)
|
||||
- --kubelet-registration-path=$(DRIVER_REG_SOCK_PATH)
|
||||
livenessProbe:
|
||||
exec:
|
||||
command:
|
||||
- /csi-node-driver-registrar.exe
|
||||
- --kubelet-registration-path=$(DRIVER_REG_SOCK_PATH)
|
||||
- --mode=kubelet-registration-probe
|
||||
initialDelaySeconds: 60
|
||||
timeoutSeconds: 30
|
||||
env:
|
||||
- name: CSI_ENDPOINT
|
||||
value: unix://C:\\csi\\csi.sock
|
||||
- name: DRIVER_REG_SOCK_PATH
|
||||
value: {{ .Values.windows.kubelet | replace "\\" "\\\\" }}\\plugins\\{{ .Values.driver.name }}\\csi.sock
|
||||
- name: KUBE_NODE_NAME
|
||||
valueFrom:
|
||||
fieldRef:
|
||||
fieldPath: spec.nodeName
|
||||
imagePullPolicy: {{ .Values.image.nodeDriverRegistrar.pullPolicy }}
|
||||
volumeMounts:
|
||||
- name: plugin-dir
|
||||
mountPath: C:\csi
|
||||
- name: registration-dir
|
||||
mountPath: C:\registration
|
||||
resources: {{- toYaml .Values.windows.resources.nodeDriverRegistrar | nindent 12 }}
|
||||
- name: smb
|
||||
{{- if hasPrefix "/" .Values.image.smb.repository }}
|
||||
image: "{{ .Values.image.baseRepo }}{{ .Values.image.smb.repository }}:{{ .Values.image.smb.tag }}"
|
||||
{{- else }}
|
||||
image: "{{ .Values.image.smb.repository }}:{{ .Values.image.smb.tag }}"
|
||||
{{- end }}
|
||||
imagePullPolicy: {{ .Values.image.smb.pullPolicy }}
|
||||
args:
|
||||
- "--v={{ .Values.node.logLevel }}"
|
||||
- "--drivername={{ .Values.driver.name }}"
|
||||
- --endpoint=$(CSI_ENDPOINT)
|
||||
- --nodeid=$(KUBE_NODE_NAME)
|
||||
- "--enable-get-volume-stats={{ .Values.feature.enableGetVolumeStats }}"
|
||||
- "--remove-smb-mapping-during-unmount={{ .Values.windows.removeSMBMappingDuringUnmount }}"
|
||||
ports:
|
||||
- containerPort: {{ .Values.node.livenessProbe.healthPort }}
|
||||
name: healthz
|
||||
protocol: TCP
|
||||
livenessProbe:
|
||||
failureThreshold: 5
|
||||
httpGet:
|
||||
path: /healthz
|
||||
port: healthz
|
||||
initialDelaySeconds: 30
|
||||
timeoutSeconds: 10
|
||||
periodSeconds: 30
|
||||
env:
|
||||
- name: CSI_ENDPOINT
|
||||
value: unix://C:\\csi\\csi.sock
|
||||
- name: KUBE_NODE_NAME
|
||||
valueFrom:
|
||||
fieldRef:
|
||||
apiVersion: v1
|
||||
fieldPath: spec.nodeName
|
||||
volumeMounts:
|
||||
- name: kubelet-dir
|
||||
mountPath: {{ .Values.windows.kubelet }}\
|
||||
- name: plugin-dir
|
||||
mountPath: C:\csi
|
||||
- name: csi-proxy-fs-pipe-v1
|
||||
mountPath: \\.\pipe\csi-proxy-filesystem-v1
|
||||
- name: csi-proxy-smb-pipe-v1
|
||||
mountPath: \\.\pipe\csi-proxy-smb-v1
|
||||
# these paths are still included for compatibility, they're used
|
||||
# only if the node has still the beta version of the CSI proxy
|
||||
- name: csi-proxy-fs-pipe-v1beta1
|
||||
mountPath: \\.\pipe\csi-proxy-filesystem-v1beta1
|
||||
- name: csi-proxy-smb-pipe-v1beta1
|
||||
mountPath: \\.\pipe\csi-proxy-smb-v1beta1
|
||||
resources: {{- toYaml .Values.windows.resources.smb | nindent 12 }}
|
||||
volumes:
|
||||
- name: csi-proxy-fs-pipe-v1
|
||||
hostPath:
|
||||
path: \\.\pipe\csi-proxy-filesystem-v1
|
||||
- name: csi-proxy-smb-pipe-v1
|
||||
hostPath:
|
||||
path: \\.\pipe\csi-proxy-smb-v1
|
||||
# these paths are still included for compatibility, they're used
|
||||
# only if the node has still the beta version of the CSI proxy
|
||||
- name: csi-proxy-fs-pipe-v1beta1
|
||||
hostPath:
|
||||
path: \\.\pipe\csi-proxy-filesystem-v1beta1
|
||||
- name: csi-proxy-smb-pipe-v1beta1
|
||||
hostPath:
|
||||
path: \\.\pipe\csi-proxy-smb-v1beta1
|
||||
- name: registration-dir
|
||||
hostPath:
|
||||
path: {{ .Values.windows.kubelet }}\plugins_registry\
|
||||
type: Directory
|
||||
- name: kubelet-dir
|
||||
hostPath:
|
||||
path: {{ .Values.windows.kubelet }}\
|
||||
type: Directory
|
||||
- name: plugin-dir
|
||||
hostPath:
|
||||
path: {{ .Values.windows.kubelet }}\plugins\{{ .Values.driver.name }}\
|
||||
type: DirectoryOrCreate
|
||||
{{- end -}}
|
|
@ -0,0 +1,153 @@
|
|||
{{- if .Values.linux.enabled}}
|
||||
kind: DaemonSet
|
||||
apiVersion: apps/v1
|
||||
metadata:
|
||||
name: {{ .Values.linux.dsName }}
|
||||
namespace: {{ .Release.Namespace }}
|
||||
{{ include "smb.labels" . | indent 2 }}
|
||||
spec:
|
||||
updateStrategy:
|
||||
rollingUpdate:
|
||||
maxUnavailable: {{ .Values.node.maxUnavailable }}
|
||||
type: RollingUpdate
|
||||
selector:
|
||||
matchLabels:
|
||||
app: {{ .Values.linux.dsName }}
|
||||
template:
|
||||
metadata:
|
||||
{{ include "smb.labels" . | indent 6 }}
|
||||
app: {{ .Values.linux.dsName }}
|
||||
{{- if .Values.podLabels }}
|
||||
{{- toYaml .Values.podLabels | nindent 8 }}
|
||||
{{- end }}
|
||||
{{- if .Values.podAnnotations }}
|
||||
annotations:
|
||||
{{ toYaml .Values.podAnnotations | indent 8 }}
|
||||
{{- end }}
|
||||
spec:
|
||||
{{- with .Values.node.affinity }}
|
||||
affinity:
|
||||
{{ toYaml . | indent 8 }}
|
||||
{{- end }}
|
||||
hostNetwork: true
|
||||
dnsPolicy: {{ .Values.linux.dnsPolicy }}
|
||||
serviceAccountName: {{ .Values.serviceAccount.node }}
|
||||
nodeSelector:
|
||||
kubernetes.io/os: linux
|
||||
{{- with .Values.node.nodeSelector }}
|
||||
{{ toYaml . | indent 8 }}
|
||||
{{- end }}
|
||||
priorityClassName: {{ .Values.priorityClassName | quote }}
|
||||
{{- if .Values.securityContext }}
|
||||
securityContext: {{- toYaml .Values.securityContext | nindent 8 }}
|
||||
{{- end }}
|
||||
{{- with .Values.linux.tolerations }}
|
||||
tolerations:
|
||||
{{ toYaml . | indent 8 }}
|
||||
{{- end }}
|
||||
{{- include "smb.pullSecrets" . | indent 6 }}
|
||||
containers:
|
||||
- name: liveness-probe
|
||||
volumeMounts:
|
||||
- mountPath: /csi
|
||||
name: socket-dir
|
||||
{{- if hasPrefix "/" .Values.image.livenessProbe.repository }}
|
||||
image: "{{ .Values.image.baseRepo }}{{ .Values.image.livenessProbe.repository }}:{{ .Values.image.livenessProbe.tag }}"
|
||||
{{- else }}
|
||||
image: "{{ .Values.image.livenessProbe.repository }}:{{ .Values.image.livenessProbe.tag }}"
|
||||
{{- end }}
|
||||
args:
|
||||
- --csi-address=/csi/csi.sock
|
||||
- --probe-timeout=3s
|
||||
- --health-port={{ .Values.node.livenessProbe.healthPort }}
|
||||
- --v=2
|
||||
imagePullPolicy: {{ .Values.image.livenessProbe.pullPolicy }}
|
||||
resources: {{- toYaml .Values.linux.resources.livenessProbe | nindent 12 }}
|
||||
securityContext:
|
||||
readOnlyRootFilesystem: true
|
||||
- name: node-driver-registrar
|
||||
{{- if hasPrefix "/" .Values.image.nodeDriverRegistrar.repository }}
|
||||
image: "{{ .Values.image.baseRepo }}{{ .Values.image.nodeDriverRegistrar.repository }}:{{ .Values.image.nodeDriverRegistrar.tag }}"
|
||||
{{- else }}
|
||||
image: "{{ .Values.image.nodeDriverRegistrar.repository }}:{{ .Values.image.nodeDriverRegistrar.tag }}"
|
||||
{{- end }}
|
||||
args:
|
||||
- --csi-address=$(ADDRESS)
|
||||
- --kubelet-registration-path=$(DRIVER_REG_SOCK_PATH)
|
||||
- --v=2
|
||||
livenessProbe:
|
||||
exec:
|
||||
command:
|
||||
- /csi-node-driver-registrar
|
||||
- --kubelet-registration-path=$(DRIVER_REG_SOCK_PATH)
|
||||
- --mode=kubelet-registration-probe
|
||||
initialDelaySeconds: 30
|
||||
timeoutSeconds: 15
|
||||
env:
|
||||
- name: ADDRESS
|
||||
value: /csi/csi.sock
|
||||
- name: DRIVER_REG_SOCK_PATH
|
||||
value: {{ .Values.linux.kubelet }}/plugins/{{ .Values.driver.name }}/csi.sock
|
||||
imagePullPolicy: {{ .Values.image.nodeDriverRegistrar.pullPolicy }}
|
||||
volumeMounts:
|
||||
- name: socket-dir
|
||||
mountPath: /csi
|
||||
- name: registration-dir
|
||||
mountPath: /registration
|
||||
resources: {{- toYaml .Values.linux.resources.nodeDriverRegistrar | nindent 12 }}
|
||||
- name: smb
|
||||
{{- if hasPrefix "/" .Values.image.smb.repository }}
|
||||
image: "{{ .Values.image.baseRepo }}{{ .Values.image.smb.repository }}:{{ .Values.image.smb.tag }}"
|
||||
{{- else }}
|
||||
image: "{{ .Values.image.smb.repository }}:{{ .Values.image.smb.tag }}"
|
||||
{{- end }}
|
||||
imagePullPolicy: {{ .Values.image.smb.pullPolicy }}
|
||||
args:
|
||||
- "--v={{ .Values.node.logLevel }}"
|
||||
- "--drivername={{ .Values.driver.name }}"
|
||||
- "--endpoint=$(CSI_ENDPOINT)"
|
||||
- "--nodeid=$(KUBE_NODE_NAME)"
|
||||
- "--enable-get-volume-stats={{ .Values.feature.enableGetVolumeStats }}"
|
||||
ports:
|
||||
- containerPort: {{ .Values.node.livenessProbe.healthPort }}
|
||||
name: healthz
|
||||
protocol: TCP
|
||||
livenessProbe:
|
||||
failureThreshold: 5
|
||||
httpGet:
|
||||
path: /healthz
|
||||
port: healthz
|
||||
initialDelaySeconds: 30
|
||||
timeoutSeconds: 10
|
||||
periodSeconds: 30
|
||||
env:
|
||||
- name: CSI_ENDPOINT
|
||||
value: unix:///csi/csi.sock
|
||||
- name: KUBE_NODE_NAME
|
||||
valueFrom:
|
||||
fieldRef:
|
||||
apiVersion: v1
|
||||
fieldPath: spec.nodeName
|
||||
securityContext:
|
||||
privileged: true
|
||||
volumeMounts:
|
||||
- mountPath: /csi
|
||||
name: socket-dir
|
||||
- mountPath: {{ .Values.linux.kubelet }}/
|
||||
mountPropagation: Bidirectional
|
||||
name: mountpoint-dir
|
||||
resources: {{- toYaml .Values.linux.resources.smb | nindent 12 }}
|
||||
volumes:
|
||||
- hostPath:
|
||||
path: {{ .Values.linux.kubelet }}/plugins/{{ .Values.driver.name }}
|
||||
type: DirectoryOrCreate
|
||||
name: socket-dir
|
||||
- hostPath:
|
||||
path: {{ .Values.linux.kubelet }}/
|
||||
type: DirectoryOrCreate
|
||||
name: mountpoint-dir
|
||||
- hostPath:
|
||||
path: {{ .Values.linux.kubelet }}/plugins_registry/
|
||||
type: DirectoryOrCreate
|
||||
name: registration-dir
|
||||
{{- end -}}
|
|
@ -0,0 +1,65 @@
|
|||
{{- if .Values.serviceAccount.create -}}
|
||||
---
|
||||
apiVersion: v1
|
||||
kind: ServiceAccount
|
||||
metadata:
|
||||
name: {{ .Values.serviceAccount.controller }}
|
||||
namespace: {{ .Release.Namespace }}
|
||||
{{ include "smb.labels" . | indent 2 }}
|
||||
---
|
||||
apiVersion: v1
|
||||
kind: ServiceAccount
|
||||
metadata:
|
||||
name: {{ .Values.serviceAccount.node }}
|
||||
namespace: {{ .Release.Namespace }}
|
||||
{{ include "smb.labels" . | indent 2 }}
|
||||
{{ end }}
|
||||
|
||||
{{- if .Values.rbac.create -}}
|
||||
---
|
||||
apiVersion: rbac.authorization.k8s.io/v1
|
||||
kind: ClusterRole
|
||||
metadata:
|
||||
name: {{ .Values.rbac.name }}-external-provisioner-role
|
||||
{{ include "smb.labels" . | indent 2 }}
|
||||
rules:
|
||||
- apiGroups: [""]
|
||||
resources: ["persistentvolumes"]
|
||||
verbs: ["get", "list", "watch", "create", "delete"]
|
||||
- apiGroups: [""]
|
||||
resources: ["persistentvolumeclaims"]
|
||||
verbs: ["get", "list", "watch", "update"]
|
||||
- apiGroups: ["storage.k8s.io"]
|
||||
resources: ["storageclasses"]
|
||||
verbs: ["get", "list", "watch"]
|
||||
- apiGroups: [""]
|
||||
resources: ["events"]
|
||||
verbs: ["get", "list", "watch", "create", "update", "patch"]
|
||||
- apiGroups: ["storage.k8s.io"]
|
||||
resources: ["csinodes"]
|
||||
verbs: ["get", "list", "watch"]
|
||||
- apiGroups: [""]
|
||||
resources: ["nodes"]
|
||||
verbs: ["get", "list", "watch"]
|
||||
- apiGroups: ["coordination.k8s.io"]
|
||||
resources: ["leases"]
|
||||
verbs: ["get", "list", "watch", "create", "update", "patch"]
|
||||
- apiGroups: [""]
|
||||
resources: ["secrets"]
|
||||
verbs: ["get"]
|
||||
---
|
||||
|
||||
kind: ClusterRoleBinding
|
||||
apiVersion: rbac.authorization.k8s.io/v1
|
||||
metadata:
|
||||
name: {{ .Values.rbac.name }}-csi-provisioner-binding
|
||||
{{ include "smb.labels" . | indent 2 }}
|
||||
subjects:
|
||||
- kind: ServiceAccount
|
||||
name: {{ .Values.serviceAccount.controller }}
|
||||
namespace: {{ .Release.Namespace }}
|
||||
roleRef:
|
||||
kind: ClusterRole
|
||||
name: {{ .Values.rbac.name }}-external-provisioner-role
|
||||
apiGroup: rbac.authorization.k8s.io
|
||||
{{ end }}
|
|
@ -0,0 +1,153 @@
|
|||
image:
|
||||
baseRepo: registry.k8s.io/sig-storage
|
||||
smb:
|
||||
repository: registry.k8s.io/sig-storage/smbplugin
|
||||
tag: v1.11.0
|
||||
pullPolicy: IfNotPresent
|
||||
csiProvisioner:
|
||||
repository: registry.k8s.io/sig-storage/csi-provisioner
|
||||
tag: v3.5.0
|
||||
pullPolicy: IfNotPresent
|
||||
livenessProbe:
|
||||
repository: registry.k8s.io/sig-storage/livenessprobe
|
||||
tag: v2.10.0
|
||||
pullPolicy: IfNotPresent
|
||||
nodeDriverRegistrar:
|
||||
repository: registry.k8s.io/sig-storage/csi-node-driver-registrar
|
||||
tag: v2.8.0
|
||||
pullPolicy: IfNotPresent
|
||||
|
||||
serviceAccount:
|
||||
create: true # When true, service accounts will be created for you. Set to false if you want to use your own.
|
||||
controller: csi-smb-controller-sa
|
||||
node: csi-smb-node-sa
|
||||
|
||||
rbac:
|
||||
create: true
|
||||
name: smb
|
||||
|
||||
driver:
|
||||
name: smb.csi.k8s.io
|
||||
|
||||
feature:
|
||||
enableGetVolumeStats: true
|
||||
|
||||
controller:
|
||||
name: csi-smb-controller
|
||||
replicas: 1
|
||||
dnsPolicy: ClusterFirstWithHostNet # available values: Default, ClusterFirstWithHostNet, ClusterFirst
|
||||
metricsPort: 29644
|
||||
livenessProbe:
|
||||
healthPort: 29642
|
||||
runOnMaster: false
|
||||
runOnControlPlane: false
|
||||
logLevel: 5
|
||||
workingMountDir: "/tmp"
|
||||
resources:
|
||||
csiProvisioner:
|
||||
limits:
|
||||
memory: 300Mi
|
||||
requests:
|
||||
cpu: 10m
|
||||
memory: 20Mi
|
||||
livenessProbe:
|
||||
limits:
|
||||
memory: 100Mi
|
||||
requests:
|
||||
cpu: 10m
|
||||
memory: 20Mi
|
||||
smb:
|
||||
limits:
|
||||
memory: 200Mi
|
||||
requests:
|
||||
cpu: 10m
|
||||
memory: 20Mi
|
||||
affinity: {}
|
||||
nodeSelector: {}
|
||||
tolerations:
|
||||
- key: "node-role.kubernetes.io/master"
|
||||
operator: "Exists"
|
||||
effect: "NoSchedule"
|
||||
- key: "node-role.kubernetes.io/controlplane"
|
||||
operator: "Exists"
|
||||
effect: "NoSchedule"
|
||||
- key: "node-role.kubernetes.io/control-plane"
|
||||
operator: "Exists"
|
||||
effect: "NoSchedule"
|
||||
|
||||
node:
|
||||
maxUnavailable: 1
|
||||
logLevel: 5
|
||||
livenessProbe:
|
||||
healthPort: 29643
|
||||
affinity: {}
|
||||
nodeSelector: {}
|
||||
|
||||
linux:
|
||||
enabled: true
|
||||
dsName: csi-smb-node # daemonset name
|
||||
dnsPolicy: ClusterFirstWithHostNet # available values: Default, ClusterFirstWithHostNet, ClusterFirst
|
||||
kubelet: /var/lib/kubelet
|
||||
tolerations:
|
||||
- operator: "Exists"
|
||||
resources:
|
||||
livenessProbe:
|
||||
limits:
|
||||
memory: 100Mi
|
||||
requests:
|
||||
cpu: 10m
|
||||
memory: 20Mi
|
||||
nodeDriverRegistrar:
|
||||
limits:
|
||||
memory: 100Mi
|
||||
requests:
|
||||
cpu: 10m
|
||||
memory: 20Mi
|
||||
smb:
|
||||
limits:
|
||||
memory: 200Mi
|
||||
requests:
|
||||
cpu: 10m
|
||||
memory: 20Mi
|
||||
|
||||
windows:
|
||||
enabled: false
|
||||
dsName: csi-smb-node-win # daemonset name
|
||||
kubelet: 'C:\var\lib\kubelet'
|
||||
removeSMBMappingDuringUnmount: true
|
||||
tolerations:
|
||||
- key: "node.kubernetes.io/os"
|
||||
operator: "Exists"
|
||||
effect: "NoSchedule"
|
||||
resources:
|
||||
livenessProbe:
|
||||
limits:
|
||||
memory: 150Mi
|
||||
requests:
|
||||
cpu: 10m
|
||||
memory: 40Mi
|
||||
nodeDriverRegistrar:
|
||||
limits:
|
||||
memory: 150Mi
|
||||
requests:
|
||||
cpu: 10m
|
||||
memory: 40Mi
|
||||
smb:
|
||||
limits:
|
||||
memory: 200Mi
|
||||
requests:
|
||||
cpu: 10m
|
||||
memory: 40Mi
|
||||
|
||||
customLabels: {}
|
||||
## Collection of annotations to add to all the pods
|
||||
podAnnotations: {}
|
||||
## Collection of labels to add to all the pods
|
||||
podLabels: {}
|
||||
## Leverage a PriorityClass to ensure your pods survive resource shortages
|
||||
## ref: https://kubernetes.io/docs/concepts/configuration/pod-priority-preemption/
|
||||
priorityClassName: system-cluster-critical
|
||||
## Security context give the opportunity to run container as nonroot by setting a securityContext
|
||||
## by example :
|
||||
## securityContext: { runAsUser: 1001 }
|
||||
securityContext: { seccompProfile: {type: RuntimeDefault} }
|
Binary file not shown.
|
@ -0,0 +1,5 @@
|
|||
apiVersion: v1
|
||||
appVersion: v1.12.0
|
||||
description: SMB CSI Driver for Kubernetes
|
||||
name: csi-driver-smb
|
||||
version: v1.12.0
|
|
@ -0,0 +1,5 @@
|
|||
The CSI SMB Driver is getting deployed to your cluster.
|
||||
|
||||
To check CSI SMB Driver pods status, please run:
|
||||
|
||||
kubectl --namespace={{ .Release.Namespace }} get pods --selector="app.kubernetes.io/name={{ .Release.Name }}" --watch
|
|
@ -0,0 +1,29 @@
|
|||
{{/* vim: set filetype=mustache: */}}
|
||||
|
||||
{{/* Expand the name of the chart.*/}}
|
||||
{{- define "smb.name" -}}
|
||||
{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" -}}
|
||||
{{- end -}}
|
||||
|
||||
{{/* labels for helm resources */}}
|
||||
{{- define "smb.labels" -}}
|
||||
labels:
|
||||
app.kubernetes.io/instance: "{{ .Release.Name }}"
|
||||
app.kubernetes.io/managed-by: "{{ .Release.Service }}"
|
||||
app.kubernetes.io/name: "{{ template "smb.name" . }}"
|
||||
app.kubernetes.io/version: "{{ .Chart.AppVersion }}"
|
||||
helm.sh/chart: "{{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}"
|
||||
{{- if .Values.customLabels }}
|
||||
{{ toYaml .Values.customLabels | indent 2 -}}
|
||||
{{- end }}
|
||||
{{- end -}}
|
||||
|
||||
{{/* pull secrets for containers */}}
|
||||
{{- define "smb.pullSecrets" -}}
|
||||
{{- if .Values.imagePullSecrets }}
|
||||
imagePullSecrets:
|
||||
{{- range .Values.imagePullSecrets }}
|
||||
- name: {{ . }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
{{- end -}}
|
|
@ -0,0 +1,48 @@
|
|||
{{- if .Values.windows.csiproxy.enabled}}
|
||||
kind: DaemonSet
|
||||
apiVersion: apps/v1
|
||||
metadata:
|
||||
name: {{ .Values.windows.csiproxy.dsName }}
|
||||
namespace: {{ .Release.Namespace }}
|
||||
{{ include "smb.labels" . | indent 2 }}
|
||||
spec:
|
||||
updateStrategy:
|
||||
rollingUpdate:
|
||||
maxUnavailable: {{ .Values.node.maxUnavailable }}
|
||||
type: RollingUpdate
|
||||
selector:
|
||||
matchLabels:
|
||||
app: {{ .Values.windows.csiproxy.dsName }}
|
||||
template:
|
||||
metadata:
|
||||
{{ include "smb.labels" . | indent 6 }}
|
||||
app: {{ .Values.windows.csiproxy.dsName }}
|
||||
spec:
|
||||
{{- with .Values.windows.csiproxy.tolerations }}
|
||||
tolerations:
|
||||
{{ toYaml . | indent 8 }}
|
||||
{{- end }}
|
||||
securityContext:
|
||||
windowsOptions:
|
||||
hostProcess: true
|
||||
runAsUserName: {{ .Values.windows.csiproxy.username | quote }}
|
||||
hostNetwork: true
|
||||
nodeSelector:
|
||||
{{- with .Values.windows.csiproxy.nodeSelector }}
|
||||
{{ toYaml . | indent 8 }}
|
||||
{{- end }}
|
||||
{{- with .Values.node.affinity }}
|
||||
affinity:
|
||||
{{ toYaml . | indent 8 }}
|
||||
{{- end }}
|
||||
priorityClassName: {{ .Values.priorityClassName | quote }}
|
||||
{{- include "smb.pullSecrets" . | indent 6 }}
|
||||
containers:
|
||||
- name: csi-proxy
|
||||
{{- if hasPrefix "/" .Values.image.csiproxy.repository }}
|
||||
image: "{{ .Values.image.baseRepo }}{{ .Values.image.csiproxy.repository }}:{{ .Values.image.csiproxy.tag }}"
|
||||
{{- else }}
|
||||
image: "{{ .Values.image.csiproxy.repository }}:{{ .Values.image.csiproxy.tag }}"
|
||||
{{- end }}
|
||||
imagePullPolicy: {{ .Values.image.csiproxy.pullPolicy }}
|
||||
{{- end -}}
|
|
@ -0,0 +1,132 @@
|
|||
---
|
||||
kind: Deployment
|
||||
apiVersion: apps/v1
|
||||
metadata:
|
||||
name: {{ .Values.controller.name }}
|
||||
namespace: {{ .Release.Namespace }}
|
||||
{{ include "smb.labels" . | indent 2 }}
|
||||
spec:
|
||||
replicas: {{ .Values.controller.replicas }}
|
||||
selector:
|
||||
matchLabels:
|
||||
app: {{ .Values.controller.name }}
|
||||
template:
|
||||
metadata:
|
||||
{{ include "smb.labels" . | indent 6 }}
|
||||
app: {{ .Values.controller.name }}
|
||||
{{- if .Values.podLabels }}
|
||||
{{- toYaml .Values.podLabels | nindent 8 }}
|
||||
{{- end }}
|
||||
{{- if .Values.podAnnotations }}
|
||||
annotations:
|
||||
{{ toYaml .Values.podAnnotations | indent 8 }}
|
||||
{{- end }}
|
||||
spec:
|
||||
{{- with .Values.controller.affinity }}
|
||||
affinity:
|
||||
{{ toYaml . | indent 8 }}
|
||||
{{- end }}
|
||||
hostNetwork: true
|
||||
dnsPolicy: {{ .Values.controller.dnsPolicy }}
|
||||
serviceAccountName: {{ .Values.serviceAccount.controller }}
|
||||
nodeSelector:
|
||||
{{- with .Values.controller.nodeSelector }}
|
||||
{{ toYaml . | indent 8 }}
|
||||
{{- end }}
|
||||
kubernetes.io/os: linux
|
||||
{{- if .Values.controller.runOnMaster}}
|
||||
node-role.kubernetes.io/master: ""
|
||||
{{- end}}
|
||||
{{- if .Values.controller.runOnControlPlane}}
|
||||
node-role.kubernetes.io/control-plane: ""
|
||||
{{- end}}
|
||||
priorityClassName: {{ .Values.priorityClassName | quote }}
|
||||
{{- if .Values.securityContext }}
|
||||
securityContext: {{- toYaml .Values.securityContext | nindent 8 }}
|
||||
{{- end }}
|
||||
{{- with .Values.controller.tolerations }}
|
||||
tolerations:
|
||||
{{ toYaml . | indent 8 }}
|
||||
{{- end }}
|
||||
{{- include "smb.pullSecrets" . | indent 6 }}
|
||||
containers:
|
||||
- name: csi-provisioner
|
||||
{{- if hasPrefix "/" .Values.image.csiProvisioner.repository }}
|
||||
image: "{{ .Values.image.baseRepo }}{{ .Values.image.csiProvisioner.repository }}:{{ .Values.image.csiProvisioner.tag }}"
|
||||
{{- else }}
|
||||
image: "{{ .Values.image.csiProvisioner.repository }}:{{ .Values.image.csiProvisioner.tag }}"
|
||||
{{- end }}
|
||||
args:
|
||||
- "-v=2"
|
||||
- "--csi-address=$(ADDRESS)"
|
||||
- "--leader-election"
|
||||
- "--leader-election-namespace={{ .Release.Namespace }}"
|
||||
- "--extra-create-metadata=true"
|
||||
env:
|
||||
- name: ADDRESS
|
||||
value: /csi/csi.sock
|
||||
imagePullPolicy: {{ .Values.image.csiProvisioner.pullPolicy }}
|
||||
volumeMounts:
|
||||
- mountPath: /csi
|
||||
name: socket-dir
|
||||
resources: {{- toYaml .Values.controller.resources.csiProvisioner | nindent 12 }}
|
||||
securityContext:
|
||||
readOnlyRootFilesystem: true
|
||||
- name: liveness-probe
|
||||
{{- if hasPrefix "/" .Values.image.livenessProbe.repository }}
|
||||
image: "{{ .Values.image.baseRepo }}{{ .Values.image.livenessProbe.repository }}:{{ .Values.image.livenessProbe.tag }}"
|
||||
{{- else }}
|
||||
image: "{{ .Values.image.livenessProbe.repository }}:{{ .Values.image.livenessProbe.tag }}"
|
||||
{{- end }}
|
||||
args:
|
||||
- --csi-address=/csi/csi.sock
|
||||
- --probe-timeout=3s
|
||||
- --health-port={{ .Values.controller.livenessProbe.healthPort }}
|
||||
- --v=2
|
||||
imagePullPolicy: {{ .Values.image.livenessProbe.pullPolicy }}
|
||||
volumeMounts:
|
||||
- name: socket-dir
|
||||
mountPath: /csi
|
||||
resources: {{- toYaml .Values.controller.resources.livenessProbe | nindent 12 }}
|
||||
securityContext:
|
||||
readOnlyRootFilesystem: true
|
||||
- name: smb
|
||||
{{- if hasPrefix "/" .Values.image.smb.repository }}
|
||||
image: "{{ .Values.image.baseRepo }}{{ .Values.image.smb.repository }}:{{ .Values.image.smb.tag }}"
|
||||
{{- else }}
|
||||
image: "{{ .Values.image.smb.repository }}:{{ .Values.image.smb.tag }}"
|
||||
{{- end }}
|
||||
imagePullPolicy: {{ .Values.image.smb.pullPolicy }}
|
||||
args:
|
||||
- "--v={{ .Values.controller.logLevel }}"
|
||||
- "--endpoint=$(CSI_ENDPOINT)"
|
||||
- "--metrics-address=0.0.0.0:{{ .Values.controller.metricsPort }}"
|
||||
- "--drivername={{ .Values.driver.name }}"
|
||||
- "--working-mount-dir={{ .Values.controller.workingMountDir }}"
|
||||
ports:
|
||||
- containerPort: {{ .Values.controller.livenessProbe.healthPort }}
|
||||
name: healthz
|
||||
protocol: TCP
|
||||
- containerPort: {{ .Values.controller.metricsPort }}
|
||||
name: metrics
|
||||
protocol: TCP
|
||||
livenessProbe:
|
||||
failureThreshold: 5
|
||||
httpGet:
|
||||
path: /healthz
|
||||
port: healthz
|
||||
initialDelaySeconds: 30
|
||||
timeoutSeconds: 10
|
||||
periodSeconds: 30
|
||||
env:
|
||||
- name: CSI_ENDPOINT
|
||||
value: unix:///csi/csi.sock
|
||||
securityContext:
|
||||
privileged: true
|
||||
volumeMounts:
|
||||
- mountPath: /csi
|
||||
name: socket-dir
|
||||
resources: {{- toYaml .Values.controller.resources.smb | nindent 12 }}
|
||||
volumes:
|
||||
- name: socket-dir
|
||||
emptyDir: {}
|
|
@ -0,0 +1,8 @@
|
|||
---
|
||||
apiVersion: storage.k8s.io/v1
|
||||
kind: CSIDriver
|
||||
metadata:
|
||||
name: {{ .Values.driver.name }}
|
||||
spec:
|
||||
attachRequired: false
|
||||
podInfoOnMount: true
|
|
@ -0,0 +1,171 @@
|
|||
{{- if .Values.windows.enabled}}
|
||||
kind: DaemonSet
|
||||
apiVersion: apps/v1
|
||||
metadata:
|
||||
name: {{ .Values.windows.dsName }}
|
||||
namespace: {{ .Release.Namespace }}
|
||||
{{ include "smb.labels" . | indent 2 }}
|
||||
spec:
|
||||
updateStrategy:
|
||||
rollingUpdate:
|
||||
maxUnavailable: {{ .Values.node.maxUnavailable }}
|
||||
type: RollingUpdate
|
||||
selector:
|
||||
matchLabels:
|
||||
app: {{ .Values.windows.dsName }}
|
||||
template:
|
||||
metadata:
|
||||
{{ include "smb.labels" . | indent 6 }}
|
||||
app: {{ .Values.windows.dsName }}
|
||||
spec:
|
||||
{{- with .Values.windows.tolerations }}
|
||||
tolerations:
|
||||
{{ toYaml . | indent 8 }}
|
||||
{{- end }}
|
||||
nodeSelector:
|
||||
kubernetes.io/os: windows
|
||||
{{- with .Values.node.nodeSelector }}
|
||||
{{ toYaml . | indent 8 }}
|
||||
{{- end }}
|
||||
{{- with .Values.node.affinity }}
|
||||
affinity:
|
||||
{{ toYaml . | indent 8 }}
|
||||
{{- end }}
|
||||
priorityClassName: {{ .Values.priorityClassName | quote }}
|
||||
{{- if .Values.securityContext }}
|
||||
securityContext: {{- toYaml .Values.securityContext | nindent 8 }}
|
||||
{{- end }}
|
||||
serviceAccountName: {{ .Values.serviceAccount.node }}
|
||||
{{- include "smb.pullSecrets" . | indent 6 }}
|
||||
containers:
|
||||
- name: liveness-probe
|
||||
volumeMounts:
|
||||
- mountPath: C:\csi
|
||||
name: plugin-dir
|
||||
{{- if hasPrefix "/" .Values.image.livenessProbe.repository }}
|
||||
image: "{{ .Values.image.baseRepo }}{{ .Values.image.livenessProbe.repository }}:{{ .Values.image.livenessProbe.tag }}"
|
||||
{{- else }}
|
||||
image: "{{ .Values.image.livenessProbe.repository }}:{{ .Values.image.livenessProbe.tag }}"
|
||||
{{- end }}
|
||||
args:
|
||||
- --csi-address=$(CSI_ENDPOINT)
|
||||
- --probe-timeout=3s
|
||||
- --health-port={{ .Values.node.livenessProbe.healthPort }}
|
||||
- --v=2
|
||||
env:
|
||||
- name: CSI_ENDPOINT
|
||||
value: unix://C:\\csi\\csi.sock
|
||||
imagePullPolicy: {{ .Values.image.livenessProbe.pullPolicy }}
|
||||
resources: {{- toYaml .Values.windows.resources.livenessProbe | nindent 12 }}
|
||||
- name: node-driver-registrar
|
||||
{{- if hasPrefix "/" .Values.image.nodeDriverRegistrar.repository }}
|
||||
image: "{{ .Values.image.baseRepo }}{{ .Values.image.nodeDriverRegistrar.repository }}:{{ .Values.image.nodeDriverRegistrar.tag }}"
|
||||
{{- else }}
|
||||
image: "{{ .Values.image.nodeDriverRegistrar.repository }}:{{ .Values.image.nodeDriverRegistrar.tag }}"
|
||||
{{- end }}
|
||||
args:
|
||||
- --v=2
|
||||
- --csi-address=$(CSI_ENDPOINT)
|
||||
- --kubelet-registration-path=$(DRIVER_REG_SOCK_PATH)
|
||||
livenessProbe:
|
||||
exec:
|
||||
command:
|
||||
- /csi-node-driver-registrar.exe
|
||||
- --kubelet-registration-path=$(DRIVER_REG_SOCK_PATH)
|
||||
- --mode=kubelet-registration-probe
|
||||
initialDelaySeconds: 60
|
||||
timeoutSeconds: 30
|
||||
env:
|
||||
- name: CSI_ENDPOINT
|
||||
value: unix://C:\\csi\\csi.sock
|
||||
- name: DRIVER_REG_SOCK_PATH
|
||||
value: {{ .Values.windows.kubelet | replace "\\" "\\\\" }}\\plugins\\{{ .Values.driver.name }}\\csi.sock
|
||||
- name: KUBE_NODE_NAME
|
||||
valueFrom:
|
||||
fieldRef:
|
||||
fieldPath: spec.nodeName
|
||||
imagePullPolicy: {{ .Values.image.nodeDriverRegistrar.pullPolicy }}
|
||||
volumeMounts:
|
||||
- name: plugin-dir
|
||||
mountPath: C:\csi
|
||||
- name: registration-dir
|
||||
mountPath: C:\registration
|
||||
resources: {{- toYaml .Values.windows.resources.nodeDriverRegistrar | nindent 12 }}
|
||||
- name: smb
|
||||
{{- if hasPrefix "/" .Values.image.smb.repository }}
|
||||
image: "{{ .Values.image.baseRepo }}{{ .Values.image.smb.repository }}:{{ .Values.image.smb.tag }}"
|
||||
{{- else }}
|
||||
image: "{{ .Values.image.smb.repository }}:{{ .Values.image.smb.tag }}"
|
||||
{{- end }}
|
||||
imagePullPolicy: {{ .Values.image.smb.pullPolicy }}
|
||||
args:
|
||||
- "--v={{ .Values.node.logLevel }}"
|
||||
- "--drivername={{ .Values.driver.name }}"
|
||||
- --endpoint=$(CSI_ENDPOINT)
|
||||
- --nodeid=$(KUBE_NODE_NAME)
|
||||
- "--enable-get-volume-stats={{ .Values.feature.enableGetVolumeStats }}"
|
||||
- "--remove-smb-mapping-during-unmount={{ .Values.windows.removeSMBMappingDuringUnmount }}"
|
||||
ports:
|
||||
- containerPort: {{ .Values.node.livenessProbe.healthPort }}
|
||||
name: healthz
|
||||
protocol: TCP
|
||||
livenessProbe:
|
||||
failureThreshold: 5
|
||||
httpGet:
|
||||
path: /healthz
|
||||
port: healthz
|
||||
initialDelaySeconds: 30
|
||||
timeoutSeconds: 10
|
||||
periodSeconds: 30
|
||||
env:
|
||||
- name: CSI_ENDPOINT
|
||||
value: unix://C:\\csi\\csi.sock
|
||||
- name: KUBE_NODE_NAME
|
||||
valueFrom:
|
||||
fieldRef:
|
||||
apiVersion: v1
|
||||
fieldPath: spec.nodeName
|
||||
volumeMounts:
|
||||
- name: kubelet-dir
|
||||
mountPath: {{ .Values.windows.kubelet }}\
|
||||
- name: plugin-dir
|
||||
mountPath: C:\csi
|
||||
- name: csi-proxy-fs-pipe-v1
|
||||
mountPath: \\.\pipe\csi-proxy-filesystem-v1
|
||||
- name: csi-proxy-smb-pipe-v1
|
||||
mountPath: \\.\pipe\csi-proxy-smb-v1
|
||||
# these paths are still included for compatibility, they're used
|
||||
# only if the node has still the beta version of the CSI proxy
|
||||
- name: csi-proxy-fs-pipe-v1beta1
|
||||
mountPath: \\.\pipe\csi-proxy-filesystem-v1beta1
|
||||
- name: csi-proxy-smb-pipe-v1beta1
|
||||
mountPath: \\.\pipe\csi-proxy-smb-v1beta1
|
||||
resources: {{- toYaml .Values.windows.resources.smb | nindent 12 }}
|
||||
volumes:
|
||||
- name: csi-proxy-fs-pipe-v1
|
||||
hostPath:
|
||||
path: \\.\pipe\csi-proxy-filesystem-v1
|
||||
- name: csi-proxy-smb-pipe-v1
|
||||
hostPath:
|
||||
path: \\.\pipe\csi-proxy-smb-v1
|
||||
# these paths are still included for compatibility, they're used
|
||||
# only if the node has still the beta version of the CSI proxy
|
||||
- name: csi-proxy-fs-pipe-v1beta1
|
||||
hostPath:
|
||||
path: \\.\pipe\csi-proxy-filesystem-v1beta1
|
||||
- name: csi-proxy-smb-pipe-v1beta1
|
||||
hostPath:
|
||||
path: \\.\pipe\csi-proxy-smb-v1beta1
|
||||
- name: registration-dir
|
||||
hostPath:
|
||||
path: {{ .Values.windows.kubelet }}\plugins_registry\
|
||||
type: Directory
|
||||
- name: kubelet-dir
|
||||
hostPath:
|
||||
path: {{ .Values.windows.kubelet }}\
|
||||
type: Directory
|
||||
- name: plugin-dir
|
||||
hostPath:
|
||||
path: {{ .Values.windows.kubelet }}\plugins\{{ .Values.driver.name }}\
|
||||
type: DirectoryOrCreate
|
||||
{{- end -}}
|
|
@ -0,0 +1,153 @@
|
|||
{{- if .Values.linux.enabled}}
|
||||
kind: DaemonSet
|
||||
apiVersion: apps/v1
|
||||
metadata:
|
||||
name: {{ .Values.linux.dsName }}
|
||||
namespace: {{ .Release.Namespace }}
|
||||
{{ include "smb.labels" . | indent 2 }}
|
||||
spec:
|
||||
updateStrategy:
|
||||
rollingUpdate:
|
||||
maxUnavailable: {{ .Values.node.maxUnavailable }}
|
||||
type: RollingUpdate
|
||||
selector:
|
||||
matchLabels:
|
||||
app: {{ .Values.linux.dsName }}
|
||||
template:
|
||||
metadata:
|
||||
{{ include "smb.labels" . | indent 6 }}
|
||||
app: {{ .Values.linux.dsName }}
|
||||
{{- if .Values.podLabels }}
|
||||
{{- toYaml .Values.podLabels | nindent 8 }}
|
||||
{{- end }}
|
||||
{{- if .Values.podAnnotations }}
|
||||
annotations:
|
||||
{{ toYaml .Values.podAnnotations | indent 8 }}
|
||||
{{- end }}
|
||||
spec:
|
||||
{{- with .Values.node.affinity }}
|
||||
affinity:
|
||||
{{ toYaml . | indent 8 }}
|
||||
{{- end }}
|
||||
hostNetwork: true
|
||||
dnsPolicy: {{ .Values.linux.dnsPolicy }}
|
||||
serviceAccountName: {{ .Values.serviceAccount.node }}
|
||||
nodeSelector:
|
||||
kubernetes.io/os: linux
|
||||
{{- with .Values.node.nodeSelector }}
|
||||
{{ toYaml . | indent 8 }}
|
||||
{{- end }}
|
||||
priorityClassName: {{ .Values.priorityClassName | quote }}
|
||||
{{- if .Values.securityContext }}
|
||||
securityContext: {{- toYaml .Values.securityContext | nindent 8 }}
|
||||
{{- end }}
|
||||
{{- with .Values.linux.tolerations }}
|
||||
tolerations:
|
||||
{{ toYaml . | indent 8 }}
|
||||
{{- end }}
|
||||
{{- include "smb.pullSecrets" . | indent 6 }}
|
||||
containers:
|
||||
- name: liveness-probe
|
||||
volumeMounts:
|
||||
- mountPath: /csi
|
||||
name: socket-dir
|
||||
{{- if hasPrefix "/" .Values.image.livenessProbe.repository }}
|
||||
image: "{{ .Values.image.baseRepo }}{{ .Values.image.livenessProbe.repository }}:{{ .Values.image.livenessProbe.tag }}"
|
||||
{{- else }}
|
||||
image: "{{ .Values.image.livenessProbe.repository }}:{{ .Values.image.livenessProbe.tag }}"
|
||||
{{- end }}
|
||||
args:
|
||||
- --csi-address=/csi/csi.sock
|
||||
- --probe-timeout=3s
|
||||
- --health-port={{ .Values.node.livenessProbe.healthPort }}
|
||||
- --v=2
|
||||
imagePullPolicy: {{ .Values.image.livenessProbe.pullPolicy }}
|
||||
resources: {{- toYaml .Values.linux.resources.livenessProbe | nindent 12 }}
|
||||
securityContext:
|
||||
readOnlyRootFilesystem: true
|
||||
- name: node-driver-registrar
|
||||
{{- if hasPrefix "/" .Values.image.nodeDriverRegistrar.repository }}
|
||||
image: "{{ .Values.image.baseRepo }}{{ .Values.image.nodeDriverRegistrar.repository }}:{{ .Values.image.nodeDriverRegistrar.tag }}"
|
||||
{{- else }}
|
||||
image: "{{ .Values.image.nodeDriverRegistrar.repository }}:{{ .Values.image.nodeDriverRegistrar.tag }}"
|
||||
{{- end }}
|
||||
args:
|
||||
- --csi-address=$(ADDRESS)
|
||||
- --kubelet-registration-path=$(DRIVER_REG_SOCK_PATH)
|
||||
- --v=2
|
||||
livenessProbe:
|
||||
exec:
|
||||
command:
|
||||
- /csi-node-driver-registrar
|
||||
- --kubelet-registration-path=$(DRIVER_REG_SOCK_PATH)
|
||||
- --mode=kubelet-registration-probe
|
||||
initialDelaySeconds: 30
|
||||
timeoutSeconds: 15
|
||||
env:
|
||||
- name: ADDRESS
|
||||
value: /csi/csi.sock
|
||||
- name: DRIVER_REG_SOCK_PATH
|
||||
value: {{ .Values.linux.kubelet }}/plugins/{{ .Values.driver.name }}/csi.sock
|
||||
imagePullPolicy: {{ .Values.image.nodeDriverRegistrar.pullPolicy }}
|
||||
volumeMounts:
|
||||
- name: socket-dir
|
||||
mountPath: /csi
|
||||
- name: registration-dir
|
||||
mountPath: /registration
|
||||
resources: {{- toYaml .Values.linux.resources.nodeDriverRegistrar | nindent 12 }}
|
||||
- name: smb
|
||||
{{- if hasPrefix "/" .Values.image.smb.repository }}
|
||||
image: "{{ .Values.image.baseRepo }}{{ .Values.image.smb.repository }}:{{ .Values.image.smb.tag }}"
|
||||
{{- else }}
|
||||
image: "{{ .Values.image.smb.repository }}:{{ .Values.image.smb.tag }}"
|
||||
{{- end }}
|
||||
imagePullPolicy: {{ .Values.image.smb.pullPolicy }}
|
||||
args:
|
||||
- "--v={{ .Values.node.logLevel }}"
|
||||
- "--drivername={{ .Values.driver.name }}"
|
||||
- "--endpoint=$(CSI_ENDPOINT)"
|
||||
- "--nodeid=$(KUBE_NODE_NAME)"
|
||||
- "--enable-get-volume-stats={{ .Values.feature.enableGetVolumeStats }}"
|
||||
ports:
|
||||
- containerPort: {{ .Values.node.livenessProbe.healthPort }}
|
||||
name: healthz
|
||||
protocol: TCP
|
||||
livenessProbe:
|
||||
failureThreshold: 5
|
||||
httpGet:
|
||||
path: /healthz
|
||||
port: healthz
|
||||
initialDelaySeconds: 30
|
||||
timeoutSeconds: 10
|
||||
periodSeconds: 30
|
||||
env:
|
||||
- name: CSI_ENDPOINT
|
||||
value: unix:///csi/csi.sock
|
||||
- name: KUBE_NODE_NAME
|
||||
valueFrom:
|
||||
fieldRef:
|
||||
apiVersion: v1
|
||||
fieldPath: spec.nodeName
|
||||
securityContext:
|
||||
privileged: true
|
||||
volumeMounts:
|
||||
- mountPath: /csi
|
||||
name: socket-dir
|
||||
- mountPath: {{ .Values.linux.kubelet }}/
|
||||
mountPropagation: Bidirectional
|
||||
name: mountpoint-dir
|
||||
resources: {{- toYaml .Values.linux.resources.smb | nindent 12 }}
|
||||
volumes:
|
||||
- hostPath:
|
||||
path: {{ .Values.linux.kubelet }}/plugins/{{ .Values.driver.name }}
|
||||
type: DirectoryOrCreate
|
||||
name: socket-dir
|
||||
- hostPath:
|
||||
path: {{ .Values.linux.kubelet }}/
|
||||
type: DirectoryOrCreate
|
||||
name: mountpoint-dir
|
||||
- hostPath:
|
||||
path: {{ .Values.linux.kubelet }}/plugins_registry/
|
||||
type: DirectoryOrCreate
|
||||
name: registration-dir
|
||||
{{- end -}}
|
|
@ -0,0 +1,65 @@
|
|||
{{- if .Values.serviceAccount.create -}}
|
||||
---
|
||||
apiVersion: v1
|
||||
kind: ServiceAccount
|
||||
metadata:
|
||||
name: {{ .Values.serviceAccount.controller }}
|
||||
namespace: {{ .Release.Namespace }}
|
||||
{{ include "smb.labels" . | indent 2 }}
|
||||
---
|
||||
apiVersion: v1
|
||||
kind: ServiceAccount
|
||||
metadata:
|
||||
name: {{ .Values.serviceAccount.node }}
|
||||
namespace: {{ .Release.Namespace }}
|
||||
{{ include "smb.labels" . | indent 2 }}
|
||||
{{ end }}
|
||||
|
||||
{{- if .Values.rbac.create -}}
|
||||
---
|
||||
apiVersion: rbac.authorization.k8s.io/v1
|
||||
kind: ClusterRole
|
||||
metadata:
|
||||
name: {{ .Values.rbac.name }}-external-provisioner-role
|
||||
{{ include "smb.labels" . | indent 2 }}
|
||||
rules:
|
||||
- apiGroups: [""]
|
||||
resources: ["persistentvolumes"]
|
||||
verbs: ["get", "list", "watch", "create", "delete"]
|
||||
- apiGroups: [""]
|
||||
resources: ["persistentvolumeclaims"]
|
||||
verbs: ["get", "list", "watch", "update"]
|
||||
- apiGroups: ["storage.k8s.io"]
|
||||
resources: ["storageclasses"]
|
||||
verbs: ["get", "list", "watch"]
|
||||
- apiGroups: [""]
|
||||
resources: ["events"]
|
||||
verbs: ["get", "list", "watch", "create", "update", "patch"]
|
||||
- apiGroups: ["storage.k8s.io"]
|
||||
resources: ["csinodes"]
|
||||
verbs: ["get", "list", "watch"]
|
||||
- apiGroups: [""]
|
||||
resources: ["nodes"]
|
||||
verbs: ["get", "list", "watch"]
|
||||
- apiGroups: ["coordination.k8s.io"]
|
||||
resources: ["leases"]
|
||||
verbs: ["get", "list", "watch", "create", "update", "patch"]
|
||||
- apiGroups: [""]
|
||||
resources: ["secrets"]
|
||||
verbs: ["get"]
|
||||
---
|
||||
|
||||
kind: ClusterRoleBinding
|
||||
apiVersion: rbac.authorization.k8s.io/v1
|
||||
metadata:
|
||||
name: {{ .Values.rbac.name }}-csi-provisioner-binding
|
||||
{{ include "smb.labels" . | indent 2 }}
|
||||
subjects:
|
||||
- kind: ServiceAccount
|
||||
name: {{ .Values.serviceAccount.controller }}
|
||||
namespace: {{ .Release.Namespace }}
|
||||
roleRef:
|
||||
kind: ClusterRole
|
||||
name: {{ .Values.rbac.name }}-external-provisioner-role
|
||||
apiGroup: rbac.authorization.k8s.io
|
||||
{{ end }}
|
|
@ -0,0 +1,164 @@
|
|||
image:
|
||||
baseRepo: registry.k8s.io/sig-storage
|
||||
smb:
|
||||
repository: registry.k8s.io/sig-storage/smbplugin
|
||||
tag: v1.12.0
|
||||
pullPolicy: IfNotPresent
|
||||
csiProvisioner:
|
||||
repository: registry.k8s.io/sig-storage/csi-provisioner
|
||||
tag: v3.5.0
|
||||
pullPolicy: IfNotPresent
|
||||
livenessProbe:
|
||||
repository: registry.k8s.io/sig-storage/livenessprobe
|
||||
tag: v2.10.0
|
||||
pullPolicy: IfNotPresent
|
||||
nodeDriverRegistrar:
|
||||
repository: registry.k8s.io/sig-storage/csi-node-driver-registrar
|
||||
tag: v2.8.0
|
||||
pullPolicy: IfNotPresent
|
||||
csiproxy:
|
||||
repository: ghcr.io/kubernetes-sigs/sig-windows/csi-provisioner
|
||||
tag: v1.1.2
|
||||
pullPolicy: IfNotPresent
|
||||
|
||||
serviceAccount:
|
||||
create: true # When true, service accounts will be created for you. Set to false if you want to use your own.
|
||||
controller: csi-smb-controller-sa
|
||||
node: csi-smb-node-sa
|
||||
|
||||
rbac:
|
||||
create: true
|
||||
name: smb
|
||||
|
||||
driver:
|
||||
name: smb.csi.k8s.io
|
||||
|
||||
feature:
|
||||
enableGetVolumeStats: true
|
||||
|
||||
controller:
|
||||
name: csi-smb-controller
|
||||
replicas: 1
|
||||
dnsPolicy: ClusterFirstWithHostNet # available values: Default, ClusterFirstWithHostNet, ClusterFirst
|
||||
metricsPort: 29644
|
||||
livenessProbe:
|
||||
healthPort: 29642
|
||||
runOnMaster: false
|
||||
runOnControlPlane: false
|
||||
logLevel: 5
|
||||
workingMountDir: "/tmp"
|
||||
resources:
|
||||
csiProvisioner:
|
||||
limits:
|
||||
memory: 300Mi
|
||||
requests:
|
||||
cpu: 10m
|
||||
memory: 20Mi
|
||||
livenessProbe:
|
||||
limits:
|
||||
memory: 100Mi
|
||||
requests:
|
||||
cpu: 10m
|
||||
memory: 20Mi
|
||||
smb:
|
||||
limits:
|
||||
memory: 200Mi
|
||||
requests:
|
||||
cpu: 10m
|
||||
memory: 20Mi
|
||||
affinity: {}
|
||||
nodeSelector: {}
|
||||
tolerations:
|
||||
- key: "node-role.kubernetes.io/master"
|
||||
operator: "Exists"
|
||||
effect: "NoSchedule"
|
||||
- key: "node-role.kubernetes.io/controlplane"
|
||||
operator: "Exists"
|
||||
effect: "NoSchedule"
|
||||
- key: "node-role.kubernetes.io/control-plane"
|
||||
operator: "Exists"
|
||||
effect: "NoSchedule"
|
||||
|
||||
node:
|
||||
maxUnavailable: 1
|
||||
logLevel: 5
|
||||
livenessProbe:
|
||||
healthPort: 29643
|
||||
affinity: {}
|
||||
nodeSelector: {}
|
||||
|
||||
linux:
|
||||
enabled: true
|
||||
dsName: csi-smb-node # daemonset name
|
||||
dnsPolicy: ClusterFirstWithHostNet # available values: Default, ClusterFirstWithHostNet, ClusterFirst
|
||||
kubelet: /var/lib/kubelet
|
||||
tolerations:
|
||||
- operator: "Exists"
|
||||
resources:
|
||||
livenessProbe:
|
||||
limits:
|
||||
memory: 100Mi
|
||||
requests:
|
||||
cpu: 10m
|
||||
memory: 20Mi
|
||||
nodeDriverRegistrar:
|
||||
limits:
|
||||
memory: 100Mi
|
||||
requests:
|
||||
cpu: 10m
|
||||
memory: 20Mi
|
||||
smb:
|
||||
limits:
|
||||
memory: 200Mi
|
||||
requests:
|
||||
cpu: 10m
|
||||
memory: 20Mi
|
||||
|
||||
windows:
|
||||
enabled: false # Unless you already had csi proxy installed, windows.csiproxy.enabled=true is required
|
||||
dsName: csi-smb-node-win # daemonset name
|
||||
kubelet: 'C:\var\lib\kubelet'
|
||||
removeSMBMappingDuringUnmount: true
|
||||
tolerations:
|
||||
- key: "node.kubernetes.io/os"
|
||||
operator: "Exists"
|
||||
effect: "NoSchedule"
|
||||
resources:
|
||||
livenessProbe:
|
||||
limits:
|
||||
memory: 150Mi
|
||||
requests:
|
||||
cpu: 10m
|
||||
memory: 40Mi
|
||||
nodeDriverRegistrar:
|
||||
limits:
|
||||
memory: 150Mi
|
||||
requests:
|
||||
cpu: 10m
|
||||
memory: 40Mi
|
||||
smb:
|
||||
limits:
|
||||
memory: 200Mi
|
||||
requests:
|
||||
cpu: 10m
|
||||
memory: 40Mi
|
||||
csiproxy:
|
||||
enabled: false # required if windows.enabled is true, but may be installed manually also
|
||||
dsName: csi-proxy-win # daemonset name
|
||||
tolerations: {}
|
||||
affinity: {}
|
||||
nodeSelector:
|
||||
"kubernetes.io/os": windows
|
||||
|
||||
customLabels: {}
|
||||
## Collection of annotations to add to all the pods
|
||||
podAnnotations: {}
|
||||
## Collection of labels to add to all the pods
|
||||
podLabels: {}
|
||||
## Leverage a PriorityClass to ensure your pods survive resource shortages
|
||||
## ref: https://kubernetes.io/docs/concepts/configuration/pod-priority-preemption/
|
||||
priorityClassName: system-cluster-critical
|
||||
## Security context give the opportunity to run container as nonroot by setting a securityContext
|
||||
## by example :
|
||||
## securityContext: { runAsUser: 1001 }
|
||||
securityContext: { seccompProfile: {type: RuntimeDefault} }
|
Binary file not shown.
|
@ -0,0 +1,5 @@
|
|||
apiVersion: v1
|
||||
appVersion: v1.13.0
|
||||
description: SMB CSI Driver for Kubernetes
|
||||
name: csi-driver-smb
|
||||
version: v1.13.0
|
|
@ -0,0 +1,5 @@
|
|||
The CSI SMB Driver is getting deployed to your cluster.
|
||||
|
||||
To check CSI SMB Driver pods status, please run:
|
||||
|
||||
kubectl --namespace={{ .Release.Namespace }} get pods --selector="app.kubernetes.io/name={{ .Release.Name }}" --watch
|
|
@ -0,0 +1,29 @@
|
|||
{{/* vim: set filetype=mustache: */}}
|
||||
|
||||
{{/* Expand the name of the chart.*/}}
|
||||
{{- define "smb.name" -}}
|
||||
{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" -}}
|
||||
{{- end -}}
|
||||
|
||||
{{/* labels for helm resources */}}
|
||||
{{- define "smb.labels" -}}
|
||||
labels:
|
||||
app.kubernetes.io/instance: "{{ .Release.Name }}"
|
||||
app.kubernetes.io/managed-by: "{{ .Release.Service }}"
|
||||
app.kubernetes.io/name: "{{ template "smb.name" . }}"
|
||||
app.kubernetes.io/version: "{{ .Chart.AppVersion }}"
|
||||
helm.sh/chart: "{{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}"
|
||||
{{- if .Values.customLabels }}
|
||||
{{ toYaml .Values.customLabels | indent 2 -}}
|
||||
{{- end }}
|
||||
{{- end -}}
|
||||
|
||||
{{/* pull secrets for containers */}}
|
||||
{{- define "smb.pullSecrets" -}}
|
||||
{{- if .Values.imagePullSecrets }}
|
||||
imagePullSecrets:
|
||||
{{- range .Values.imagePullSecrets }}
|
||||
- name: {{ . }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
{{- end -}}
|
|
@ -0,0 +1,48 @@
|
|||
{{- if .Values.windows.csiproxy.enabled}}
|
||||
kind: DaemonSet
|
||||
apiVersion: apps/v1
|
||||
metadata:
|
||||
name: {{ .Values.windows.csiproxy.dsName }}
|
||||
namespace: {{ .Release.Namespace }}
|
||||
{{ include "smb.labels" . | indent 2 }}
|
||||
spec:
|
||||
updateStrategy:
|
||||
rollingUpdate:
|
||||
maxUnavailable: {{ .Values.node.maxUnavailable }}
|
||||
type: RollingUpdate
|
||||
selector:
|
||||
matchLabels:
|
||||
app: {{ .Values.windows.csiproxy.dsName }}
|
||||
template:
|
||||
metadata:
|
||||
{{ include "smb.labels" . | indent 6 }}
|
||||
app: {{ .Values.windows.csiproxy.dsName }}
|
||||
spec:
|
||||
{{- with .Values.windows.csiproxy.tolerations }}
|
||||
tolerations:
|
||||
{{ toYaml . | indent 8 }}
|
||||
{{- end }}
|
||||
securityContext:
|
||||
windowsOptions:
|
||||
hostProcess: true
|
||||
runAsUserName: {{ .Values.windows.csiproxy.username | quote }}
|
||||
hostNetwork: true
|
||||
nodeSelector:
|
||||
{{- with .Values.windows.csiproxy.nodeSelector }}
|
||||
{{ toYaml . | indent 8 }}
|
||||
{{- end }}
|
||||
{{- with .Values.node.affinity }}
|
||||
affinity:
|
||||
{{ toYaml . | indent 8 }}
|
||||
{{- end }}
|
||||
priorityClassName: {{ .Values.priorityClassName | quote }}
|
||||
{{- include "smb.pullSecrets" . | indent 6 }}
|
||||
containers:
|
||||
- name: csi-proxy
|
||||
{{- if hasPrefix "/" .Values.image.csiproxy.repository }}
|
||||
image: "{{ .Values.image.baseRepo }}{{ .Values.image.csiproxy.repository }}:{{ .Values.image.csiproxy.tag }}"
|
||||
{{- else }}
|
||||
image: "{{ .Values.image.csiproxy.repository }}:{{ .Values.image.csiproxy.tag }}"
|
||||
{{- end }}
|
||||
imagePullPolicy: {{ .Values.image.csiproxy.pullPolicy }}
|
||||
{{- end -}}
|
|
@ -0,0 +1,143 @@
|
|||
---
|
||||
kind: Deployment
|
||||
apiVersion: apps/v1
|
||||
metadata:
|
||||
name: {{ .Values.controller.name }}
|
||||
namespace: {{ .Release.Namespace }}
|
||||
{{ include "smb.labels" . | indent 2 }}
|
||||
spec:
|
||||
strategy:
|
||||
type: Recreate
|
||||
replicas: {{ .Values.controller.replicas }}
|
||||
selector:
|
||||
matchLabels:
|
||||
app: {{ .Values.controller.name }}
|
||||
template:
|
||||
metadata:
|
||||
{{ include "smb.labels" . | indent 6 }}
|
||||
app: {{ .Values.controller.name }}
|
||||
{{- if .Values.podLabels }}
|
||||
{{- toYaml .Values.podLabels | nindent 8 }}
|
||||
{{- end }}
|
||||
{{- if .Values.podAnnotations }}
|
||||
annotations:
|
||||
{{ toYaml .Values.podAnnotations | indent 8 }}
|
||||
{{- end }}
|
||||
spec:
|
||||
{{- with .Values.controller.affinity }}
|
||||
affinity:
|
||||
{{ toYaml . | indent 8 }}
|
||||
{{- end }}
|
||||
hostNetwork: true
|
||||
dnsPolicy: {{ .Values.controller.dnsPolicy }}
|
||||
serviceAccountName: {{ .Values.serviceAccount.controller }}
|
||||
nodeSelector:
|
||||
{{- with .Values.controller.nodeSelector }}
|
||||
{{ toYaml . | indent 8 }}
|
||||
{{- end }}
|
||||
kubernetes.io/os: linux
|
||||
{{- if .Values.controller.runOnMaster}}
|
||||
node-role.kubernetes.io/master: ""
|
||||
{{- end}}
|
||||
{{- if .Values.controller.runOnControlPlane}}
|
||||
node-role.kubernetes.io/control-plane: ""
|
||||
{{- end}}
|
||||
priorityClassName: {{ .Values.priorityClassName | quote }}
|
||||
{{- if .Values.securityContext }}
|
||||
securityContext: {{- toYaml .Values.securityContext | nindent 8 }}
|
||||
{{- end }}
|
||||
{{- with .Values.controller.tolerations }}
|
||||
tolerations:
|
||||
{{ toYaml . | indent 8 }}
|
||||
{{- end }}
|
||||
{{- include "smb.pullSecrets" . | indent 6 }}
|
||||
containers:
|
||||
- name: csi-provisioner
|
||||
{{- if hasPrefix "/" .Values.image.csiProvisioner.repository }}
|
||||
image: "{{ .Values.image.baseRepo }}{{ .Values.image.csiProvisioner.repository }}:{{ .Values.image.csiProvisioner.tag }}"
|
||||
{{- else }}
|
||||
image: "{{ .Values.image.csiProvisioner.repository }}:{{ .Values.image.csiProvisioner.tag }}"
|
||||
{{- end }}
|
||||
args:
|
||||
- "-v=2"
|
||||
- "--csi-address=$(ADDRESS)"
|
||||
- "--leader-election"
|
||||
- "--leader-election-namespace={{ .Release.Namespace }}"
|
||||
- "--extra-create-metadata=true"
|
||||
env:
|
||||
- name: ADDRESS
|
||||
value: /csi/csi.sock
|
||||
imagePullPolicy: {{ .Values.image.csiProvisioner.pullPolicy }}
|
||||
volumeMounts:
|
||||
- mountPath: /csi
|
||||
name: socket-dir
|
||||
resources: {{- toYaml .Values.controller.resources.csiProvisioner | nindent 12 }}
|
||||
securityContext:
|
||||
readOnlyRootFilesystem: true
|
||||
capabilities:
|
||||
drop:
|
||||
- ALL
|
||||
- name: liveness-probe
|
||||
{{- if hasPrefix "/" .Values.image.livenessProbe.repository }}
|
||||
image: "{{ .Values.image.baseRepo }}{{ .Values.image.livenessProbe.repository }}:{{ .Values.image.livenessProbe.tag }}"
|
||||
{{- else }}
|
||||
image: "{{ .Values.image.livenessProbe.repository }}:{{ .Values.image.livenessProbe.tag }}"
|
||||
{{- end }}
|
||||
args:
|
||||
- --csi-address=/csi/csi.sock
|
||||
- --probe-timeout=3s
|
||||
- --health-port={{ .Values.controller.livenessProbe.healthPort }}
|
||||
- --v=2
|
||||
imagePullPolicy: {{ .Values.image.livenessProbe.pullPolicy }}
|
||||
volumeMounts:
|
||||
- name: socket-dir
|
||||
mountPath: /csi
|
||||
resources: {{- toYaml .Values.controller.resources.livenessProbe | nindent 12 }}
|
||||
securityContext:
|
||||
readOnlyRootFilesystem: true
|
||||
capabilities:
|
||||
drop:
|
||||
- ALL
|
||||
- name: smb
|
||||
{{- if hasPrefix "/" .Values.image.smb.repository }}
|
||||
image: "{{ .Values.image.baseRepo }}{{ .Values.image.smb.repository }}:{{ .Values.image.smb.tag }}"
|
||||
{{- else }}
|
||||
image: "{{ .Values.image.smb.repository }}:{{ .Values.image.smb.tag }}"
|
||||
{{- end }}
|
||||
imagePullPolicy: {{ .Values.image.smb.pullPolicy }}
|
||||
args:
|
||||
- "--v={{ .Values.controller.logLevel }}"
|
||||
- "--endpoint=$(CSI_ENDPOINT)"
|
||||
- "--metrics-address=0.0.0.0:{{ .Values.controller.metricsPort }}"
|
||||
- "--drivername={{ .Values.driver.name }}"
|
||||
- "--working-mount-dir={{ .Values.controller.workingMountDir }}"
|
||||
ports:
|
||||
- containerPort: {{ .Values.controller.livenessProbe.healthPort }}
|
||||
name: healthz
|
||||
protocol: TCP
|
||||
- containerPort: {{ .Values.controller.metricsPort }}
|
||||
name: metrics
|
||||
protocol: TCP
|
||||
livenessProbe:
|
||||
failureThreshold: 5
|
||||
httpGet:
|
||||
path: /healthz
|
||||
port: healthz
|
||||
initialDelaySeconds: 30
|
||||
timeoutSeconds: 10
|
||||
periodSeconds: 30
|
||||
env:
|
||||
- name: CSI_ENDPOINT
|
||||
value: unix:///csi/csi.sock
|
||||
securityContext:
|
||||
privileged: true
|
||||
capabilities:
|
||||
drop:
|
||||
- ALL
|
||||
volumeMounts:
|
||||
- mountPath: /csi
|
||||
name: socket-dir
|
||||
resources: {{- toYaml .Values.controller.resources.smb | nindent 12 }}
|
||||
volumes:
|
||||
- name: socket-dir
|
||||
emptyDir: {}
|
|
@ -0,0 +1,8 @@
|
|||
---
|
||||
apiVersion: storage.k8s.io/v1
|
||||
kind: CSIDriver
|
||||
metadata:
|
||||
name: {{ .Values.driver.name }}
|
||||
spec:
|
||||
attachRequired: false
|
||||
podInfoOnMount: true
|
|
@ -0,0 +1,183 @@
|
|||
{{- if .Values.windows.enabled}}
|
||||
kind: DaemonSet
|
||||
apiVersion: apps/v1
|
||||
metadata:
|
||||
name: {{ .Values.windows.dsName }}
|
||||
namespace: {{ .Release.Namespace }}
|
||||
{{ include "smb.labels" . | indent 2 }}
|
||||
spec:
|
||||
updateStrategy:
|
||||
rollingUpdate:
|
||||
maxUnavailable: {{ .Values.node.maxUnavailable }}
|
||||
type: RollingUpdate
|
||||
selector:
|
||||
matchLabels:
|
||||
app: {{ .Values.windows.dsName }}
|
||||
template:
|
||||
metadata:
|
||||
{{ include "smb.labels" . | indent 6 }}
|
||||
app: {{ .Values.windows.dsName }}
|
||||
spec:
|
||||
{{- with .Values.windows.tolerations }}
|
||||
tolerations:
|
||||
{{ toYaml . | indent 8 }}
|
||||
{{- end }}
|
||||
nodeSelector:
|
||||
kubernetes.io/os: windows
|
||||
{{- with .Values.node.nodeSelector }}
|
||||
{{ toYaml . | indent 8 }}
|
||||
{{- end }}
|
||||
{{- with .Values.node.affinity }}
|
||||
affinity:
|
||||
{{ toYaml . | indent 8 }}
|
||||
{{- end }}
|
||||
priorityClassName: {{ .Values.priorityClassName | quote }}
|
||||
{{- if .Values.securityContext }}
|
||||
securityContext: {{- toYaml .Values.securityContext | nindent 8 }}
|
||||
{{- end }}
|
||||
serviceAccountName: {{ .Values.serviceAccount.node }}
|
||||
{{- include "smb.pullSecrets" . | indent 6 }}
|
||||
containers:
|
||||
- name: liveness-probe
|
||||
volumeMounts:
|
||||
- mountPath: C:\csi
|
||||
name: plugin-dir
|
||||
{{- if hasPrefix "/" .Values.image.livenessProbe.repository }}
|
||||
image: "{{ .Values.image.baseRepo }}{{ .Values.image.livenessProbe.repository }}:{{ .Values.image.livenessProbe.tag }}"
|
||||
{{- else }}
|
||||
image: "{{ .Values.image.livenessProbe.repository }}:{{ .Values.image.livenessProbe.tag }}"
|
||||
{{- end }}
|
||||
args:
|
||||
- --csi-address=$(CSI_ENDPOINT)
|
||||
- --probe-timeout=3s
|
||||
- --health-port={{ .Values.node.livenessProbe.healthPort }}
|
||||
- --v=2
|
||||
env:
|
||||
- name: CSI_ENDPOINT
|
||||
value: unix://C:\\csi\\csi.sock
|
||||
imagePullPolicy: {{ .Values.image.livenessProbe.pullPolicy }}
|
||||
resources: {{- toYaml .Values.windows.resources.livenessProbe | nindent 12 }}
|
||||
securityContext:
|
||||
capabilities:
|
||||
drop:
|
||||
- ALL
|
||||
- name: node-driver-registrar
|
||||
{{- if hasPrefix "/" .Values.image.nodeDriverRegistrar.repository }}
|
||||
image: "{{ .Values.image.baseRepo }}{{ .Values.image.nodeDriverRegistrar.repository }}:{{ .Values.image.nodeDriverRegistrar.tag }}"
|
||||
{{- else }}
|
||||
image: "{{ .Values.image.nodeDriverRegistrar.repository }}:{{ .Values.image.nodeDriverRegistrar.tag }}"
|
||||
{{- end }}
|
||||
args:
|
||||
- --v=2
|
||||
- --csi-address=$(CSI_ENDPOINT)
|
||||
- --kubelet-registration-path=$(DRIVER_REG_SOCK_PATH)
|
||||
livenessProbe:
|
||||
exec:
|
||||
command:
|
||||
- /csi-node-driver-registrar.exe
|
||||
- --kubelet-registration-path=$(DRIVER_REG_SOCK_PATH)
|
||||
- --mode=kubelet-registration-probe
|
||||
initialDelaySeconds: 60
|
||||
timeoutSeconds: 30
|
||||
env:
|
||||
- name: CSI_ENDPOINT
|
||||
value: unix://C:\\csi\\csi.sock
|
||||
- name: DRIVER_REG_SOCK_PATH
|
||||
value: {{ .Values.windows.kubelet | replace "\\" "\\\\" }}\\plugins\\{{ .Values.driver.name }}\\csi.sock
|
||||
- name: KUBE_NODE_NAME
|
||||
valueFrom:
|
||||
fieldRef:
|
||||
fieldPath: spec.nodeName
|
||||
imagePullPolicy: {{ .Values.image.nodeDriverRegistrar.pullPolicy }}
|
||||
volumeMounts:
|
||||
- name: plugin-dir
|
||||
mountPath: C:\csi
|
||||
- name: registration-dir
|
||||
mountPath: C:\registration
|
||||
resources: {{- toYaml .Values.windows.resources.nodeDriverRegistrar | nindent 12 }}
|
||||
securityContext:
|
||||
capabilities:
|
||||
drop:
|
||||
- ALL
|
||||
- name: smb
|
||||
{{- if hasPrefix "/" .Values.image.smb.repository }}
|
||||
image: "{{ .Values.image.baseRepo }}{{ .Values.image.smb.repository }}:{{ .Values.image.smb.tag }}"
|
||||
{{- else }}
|
||||
image: "{{ .Values.image.smb.repository }}:{{ .Values.image.smb.tag }}"
|
||||
{{- end }}
|
||||
imagePullPolicy: {{ .Values.image.smb.pullPolicy }}
|
||||
args:
|
||||
- "--v={{ .Values.node.logLevel }}"
|
||||
- "--drivername={{ .Values.driver.name }}"
|
||||
- --endpoint=$(CSI_ENDPOINT)
|
||||
- --nodeid=$(KUBE_NODE_NAME)
|
||||
- "--enable-get-volume-stats={{ .Values.feature.enableGetVolumeStats }}"
|
||||
- "--remove-smb-mapping-during-unmount={{ .Values.windows.removeSMBMappingDuringUnmount }}"
|
||||
ports:
|
||||
- containerPort: {{ .Values.node.livenessProbe.healthPort }}
|
||||
name: healthz
|
||||
protocol: TCP
|
||||
livenessProbe:
|
||||
failureThreshold: 5
|
||||
httpGet:
|
||||
path: /healthz
|
||||
port: healthz
|
||||
initialDelaySeconds: 30
|
||||
timeoutSeconds: 10
|
||||
periodSeconds: 30
|
||||
env:
|
||||
- name: CSI_ENDPOINT
|
||||
value: unix://C:\\csi\\csi.sock
|
||||
- name: KUBE_NODE_NAME
|
||||
valueFrom:
|
||||
fieldRef:
|
||||
apiVersion: v1
|
||||
fieldPath: spec.nodeName
|
||||
volumeMounts:
|
||||
- name: kubelet-dir
|
||||
mountPath: {{ .Values.windows.kubelet }}\
|
||||
- name: plugin-dir
|
||||
mountPath: C:\csi
|
||||
- name: csi-proxy-fs-pipe-v1
|
||||
mountPath: \\.\pipe\csi-proxy-filesystem-v1
|
||||
- name: csi-proxy-smb-pipe-v1
|
||||
mountPath: \\.\pipe\csi-proxy-smb-v1
|
||||
# these paths are still included for compatibility, they're used
|
||||
# only if the node has still the beta version of the CSI proxy
|
||||
- name: csi-proxy-fs-pipe-v1beta1
|
||||
mountPath: \\.\pipe\csi-proxy-filesystem-v1beta1
|
||||
- name: csi-proxy-smb-pipe-v1beta1
|
||||
mountPath: \\.\pipe\csi-proxy-smb-v1beta1
|
||||
resources: {{- toYaml .Values.windows.resources.smb | nindent 12 }}
|
||||
securityContext:
|
||||
capabilities:
|
||||
drop:
|
||||
- ALL
|
||||
volumes:
|
||||
- name: csi-proxy-fs-pipe-v1
|
||||
hostPath:
|
||||
path: \\.\pipe\csi-proxy-filesystem-v1
|
||||
- name: csi-proxy-smb-pipe-v1
|
||||
hostPath:
|
||||
path: \\.\pipe\csi-proxy-smb-v1
|
||||
# these paths are still included for compatibility, they're used
|
||||
# only if the node has still the beta version of the CSI proxy
|
||||
- name: csi-proxy-fs-pipe-v1beta1
|
||||
hostPath:
|
||||
path: \\.\pipe\csi-proxy-filesystem-v1beta1
|
||||
- name: csi-proxy-smb-pipe-v1beta1
|
||||
hostPath:
|
||||
path: \\.\pipe\csi-proxy-smb-v1beta1
|
||||
- name: registration-dir
|
||||
hostPath:
|
||||
path: {{ .Values.windows.kubelet }}\plugins_registry\
|
||||
type: Directory
|
||||
- name: kubelet-dir
|
||||
hostPath:
|
||||
path: {{ .Values.windows.kubelet }}\
|
||||
type: Directory
|
||||
- name: plugin-dir
|
||||
hostPath:
|
||||
path: {{ .Values.windows.kubelet }}\plugins\{{ .Values.driver.name }}\
|
||||
type: DirectoryOrCreate
|
||||
{{- end -}}
|
|
@ -0,0 +1,163 @@
|
|||
{{- if .Values.linux.enabled}}
|
||||
kind: DaemonSet
|
||||
apiVersion: apps/v1
|
||||
metadata:
|
||||
name: {{ .Values.linux.dsName }}
|
||||
namespace: {{ .Release.Namespace }}
|
||||
{{ include "smb.labels" . | indent 2 }}
|
||||
spec:
|
||||
updateStrategy:
|
||||
rollingUpdate:
|
||||
maxUnavailable: {{ .Values.node.maxUnavailable }}
|
||||
type: RollingUpdate
|
||||
selector:
|
||||
matchLabels:
|
||||
app: {{ .Values.linux.dsName }}
|
||||
template:
|
||||
metadata:
|
||||
{{ include "smb.labels" . | indent 6 }}
|
||||
app: {{ .Values.linux.dsName }}
|
||||
{{- if .Values.podLabels }}
|
||||
{{- toYaml .Values.podLabels | nindent 8 }}
|
||||
{{- end }}
|
||||
{{- if .Values.podAnnotations }}
|
||||
annotations:
|
||||
{{ toYaml .Values.podAnnotations | indent 8 }}
|
||||
{{- end }}
|
||||
spec:
|
||||
{{- with .Values.node.affinity }}
|
||||
affinity:
|
||||
{{ toYaml . | indent 8 }}
|
||||
{{- end }}
|
||||
hostNetwork: true
|
||||
dnsPolicy: {{ .Values.linux.dnsPolicy }}
|
||||
serviceAccountName: {{ .Values.serviceAccount.node }}
|
||||
nodeSelector:
|
||||
kubernetes.io/os: linux
|
||||
{{- with .Values.node.nodeSelector }}
|
||||
{{ toYaml . | indent 8 }}
|
||||
{{- end }}
|
||||
priorityClassName: {{ .Values.priorityClassName | quote }}
|
||||
{{- if .Values.securityContext }}
|
||||
securityContext: {{- toYaml .Values.securityContext | nindent 8 }}
|
||||
{{- end }}
|
||||
{{- with .Values.linux.tolerations }}
|
||||
tolerations:
|
||||
{{ toYaml . | indent 8 }}
|
||||
{{- end }}
|
||||
{{- include "smb.pullSecrets" . | indent 6 }}
|
||||
containers:
|
||||
- name: liveness-probe
|
||||
volumeMounts:
|
||||
- mountPath: /csi
|
||||
name: socket-dir
|
||||
{{- if hasPrefix "/" .Values.image.livenessProbe.repository }}
|
||||
image: "{{ .Values.image.baseRepo }}{{ .Values.image.livenessProbe.repository }}:{{ .Values.image.livenessProbe.tag }}"
|
||||
{{- else }}
|
||||
image: "{{ .Values.image.livenessProbe.repository }}:{{ .Values.image.livenessProbe.tag }}"
|
||||
{{- end }}
|
||||
args:
|
||||
- --csi-address=/csi/csi.sock
|
||||
- --probe-timeout=3s
|
||||
- --health-port={{ .Values.node.livenessProbe.healthPort }}
|
||||
- --v=2
|
||||
imagePullPolicy: {{ .Values.image.livenessProbe.pullPolicy }}
|
||||
resources: {{- toYaml .Values.linux.resources.livenessProbe | nindent 12 }}
|
||||
securityContext:
|
||||
readOnlyRootFilesystem: true
|
||||
capabilities:
|
||||
drop:
|
||||
- ALL
|
||||
- name: node-driver-registrar
|
||||
{{- if hasPrefix "/" .Values.image.nodeDriverRegistrar.repository }}
|
||||
image: "{{ .Values.image.baseRepo }}{{ .Values.image.nodeDriverRegistrar.repository }}:{{ .Values.image.nodeDriverRegistrar.tag }}"
|
||||
{{- else }}
|
||||
image: "{{ .Values.image.nodeDriverRegistrar.repository }}:{{ .Values.image.nodeDriverRegistrar.tag }}"
|
||||
{{- end }}
|
||||
args:
|
||||
- --csi-address=$(ADDRESS)
|
||||
- --kubelet-registration-path=$(DRIVER_REG_SOCK_PATH)
|
||||
- --v=2
|
||||
livenessProbe:
|
||||
exec:
|
||||
command:
|
||||
- /csi-node-driver-registrar
|
||||
- --kubelet-registration-path=$(DRIVER_REG_SOCK_PATH)
|
||||
- --mode=kubelet-registration-probe
|
||||
initialDelaySeconds: 30
|
||||
timeoutSeconds: 15
|
||||
env:
|
||||
- name: ADDRESS
|
||||
value: /csi/csi.sock
|
||||
- name: DRIVER_REG_SOCK_PATH
|
||||
value: {{ .Values.linux.kubelet }}/plugins/{{ .Values.driver.name }}/csi.sock
|
||||
imagePullPolicy: {{ .Values.image.nodeDriverRegistrar.pullPolicy }}
|
||||
volumeMounts:
|
||||
- name: socket-dir
|
||||
mountPath: /csi
|
||||
- name: registration-dir
|
||||
mountPath: /registration
|
||||
resources: {{- toYaml .Values.linux.resources.nodeDriverRegistrar | nindent 12 }}
|
||||
securityContext:
|
||||
capabilities:
|
||||
drop:
|
||||
- ALL
|
||||
- name: smb
|
||||
{{- if hasPrefix "/" .Values.image.smb.repository }}
|
||||
image: "{{ .Values.image.baseRepo }}{{ .Values.image.smb.repository }}:{{ .Values.image.smb.tag }}"
|
||||
{{- else }}
|
||||
image: "{{ .Values.image.smb.repository }}:{{ .Values.image.smb.tag }}"
|
||||
{{- end }}
|
||||
imagePullPolicy: {{ .Values.image.smb.pullPolicy }}
|
||||
args:
|
||||
- "--v={{ .Values.node.logLevel }}"
|
||||
- "--drivername={{ .Values.driver.name }}"
|
||||
- "--endpoint=$(CSI_ENDPOINT)"
|
||||
- "--nodeid=$(KUBE_NODE_NAME)"
|
||||
- "--enable-get-volume-stats={{ .Values.feature.enableGetVolumeStats }}"
|
||||
ports:
|
||||
- containerPort: {{ .Values.node.livenessProbe.healthPort }}
|
||||
name: healthz
|
||||
protocol: TCP
|
||||
livenessProbe:
|
||||
failureThreshold: 5
|
||||
httpGet:
|
||||
path: /healthz
|
||||
port: healthz
|
||||
initialDelaySeconds: 30
|
||||
timeoutSeconds: 10
|
||||
periodSeconds: 30
|
||||
env:
|
||||
- name: CSI_ENDPOINT
|
||||
value: unix:///csi/csi.sock
|
||||
- name: KUBE_NODE_NAME
|
||||
valueFrom:
|
||||
fieldRef:
|
||||
apiVersion: v1
|
||||
fieldPath: spec.nodeName
|
||||
securityContext:
|
||||
privileged: true
|
||||
capabilities:
|
||||
drop:
|
||||
- ALL
|
||||
volumeMounts:
|
||||
- mountPath: /csi
|
||||
name: socket-dir
|
||||
- mountPath: {{ .Values.linux.kubelet }}/
|
||||
mountPropagation: Bidirectional
|
||||
name: mountpoint-dir
|
||||
resources: {{- toYaml .Values.linux.resources.smb | nindent 12 }}
|
||||
volumes:
|
||||
- hostPath:
|
||||
path: {{ .Values.linux.kubelet }}/plugins/{{ .Values.driver.name }}
|
||||
type: DirectoryOrCreate
|
||||
name: socket-dir
|
||||
- hostPath:
|
||||
path: {{ .Values.linux.kubelet }}/
|
||||
type: DirectoryOrCreate
|
||||
name: mountpoint-dir
|
||||
- hostPath:
|
||||
path: {{ .Values.linux.kubelet }}/plugins_registry/
|
||||
type: DirectoryOrCreate
|
||||
name: registration-dir
|
||||
{{- end -}}
|
|
@ -0,0 +1,65 @@
|
|||
{{- if .Values.serviceAccount.create -}}
|
||||
---
|
||||
apiVersion: v1
|
||||
kind: ServiceAccount
|
||||
metadata:
|
||||
name: {{ .Values.serviceAccount.controller }}
|
||||
namespace: {{ .Release.Namespace }}
|
||||
{{ include "smb.labels" . | indent 2 }}
|
||||
---
|
||||
apiVersion: v1
|
||||
kind: ServiceAccount
|
||||
metadata:
|
||||
name: {{ .Values.serviceAccount.node }}
|
||||
namespace: {{ .Release.Namespace }}
|
||||
{{ include "smb.labels" . | indent 2 }}
|
||||
{{ end }}
|
||||
|
||||
{{- if .Values.rbac.create -}}
|
||||
---
|
||||
apiVersion: rbac.authorization.k8s.io/v1
|
||||
kind: ClusterRole
|
||||
metadata:
|
||||
name: {{ .Values.rbac.name }}-external-provisioner-role
|
||||
{{ include "smb.labels" . | indent 2 }}
|
||||
rules:
|
||||
- apiGroups: [""]
|
||||
resources: ["persistentvolumes"]
|
||||
verbs: ["get", "list", "watch", "create", "delete"]
|
||||
- apiGroups: [""]
|
||||
resources: ["persistentvolumeclaims"]
|
||||
verbs: ["get", "list", "watch", "update"]
|
||||
- apiGroups: ["storage.k8s.io"]
|
||||
resources: ["storageclasses"]
|
||||
verbs: ["get", "list", "watch"]
|
||||
- apiGroups: [""]
|
||||
resources: ["events"]
|
||||
verbs: ["get", "list", "watch", "create", "update", "patch"]
|
||||
- apiGroups: ["storage.k8s.io"]
|
||||
resources: ["csinodes"]
|
||||
verbs: ["get", "list", "watch"]
|
||||
- apiGroups: [""]
|
||||
resources: ["nodes"]
|
||||
verbs: ["get", "list", "watch"]
|
||||
- apiGroups: ["coordination.k8s.io"]
|
||||
resources: ["leases"]
|
||||
verbs: ["get", "list", "watch", "create", "update", "patch"]
|
||||
- apiGroups: [""]
|
||||
resources: ["secrets"]
|
||||
verbs: ["get"]
|
||||
---
|
||||
|
||||
kind: ClusterRoleBinding
|
||||
apiVersion: rbac.authorization.k8s.io/v1
|
||||
metadata:
|
||||
name: {{ .Values.rbac.name }}-csi-provisioner-binding
|
||||
{{ include "smb.labels" . | indent 2 }}
|
||||
subjects:
|
||||
- kind: ServiceAccount
|
||||
name: {{ .Values.serviceAccount.controller }}
|
||||
namespace: {{ .Release.Namespace }}
|
||||
roleRef:
|
||||
kind: ClusterRole
|
||||
name: {{ .Values.rbac.name }}-external-provisioner-role
|
||||
apiGroup: rbac.authorization.k8s.io
|
||||
{{ end }}
|
|
@ -0,0 +1,165 @@
|
|||
image:
|
||||
baseRepo: registry.k8s.io/sig-storage
|
||||
smb:
|
||||
repository: registry.k8s.io/sig-storage/smbplugin
|
||||
tag: v1.13.0
|
||||
pullPolicy: IfNotPresent
|
||||
csiProvisioner:
|
||||
repository: registry.k8s.io/sig-storage/csi-provisioner
|
||||
tag: v3.6.1
|
||||
pullPolicy: IfNotPresent
|
||||
livenessProbe:
|
||||
repository: registry.k8s.io/sig-storage/livenessprobe
|
||||
tag: v2.11.0
|
||||
pullPolicy: IfNotPresent
|
||||
nodeDriverRegistrar:
|
||||
repository: registry.k8s.io/sig-storage/csi-node-driver-registrar
|
||||
tag: v2.9.0
|
||||
pullPolicy: IfNotPresent
|
||||
csiproxy:
|
||||
repository: ghcr.io/kubernetes-sigs/sig-windows/csi-proxy
|
||||
tag: v1.1.2
|
||||
pullPolicy: IfNotPresent
|
||||
|
||||
serviceAccount:
|
||||
create: true # When true, service accounts will be created for you. Set to false if you want to use your own.
|
||||
controller: csi-smb-controller-sa
|
||||
node: csi-smb-node-sa
|
||||
|
||||
rbac:
|
||||
create: true
|
||||
name: smb
|
||||
|
||||
driver:
|
||||
name: smb.csi.k8s.io
|
||||
|
||||
feature:
|
||||
enableGetVolumeStats: true
|
||||
|
||||
controller:
|
||||
name: csi-smb-controller
|
||||
replicas: 1
|
||||
dnsPolicy: ClusterFirstWithHostNet # available values: Default, ClusterFirstWithHostNet, ClusterFirst
|
||||
metricsPort: 29644
|
||||
livenessProbe:
|
||||
healthPort: 29642
|
||||
runOnMaster: false
|
||||
runOnControlPlane: false
|
||||
logLevel: 5
|
||||
workingMountDir: "/tmp"
|
||||
resources:
|
||||
csiProvisioner:
|
||||
limits:
|
||||
memory: 300Mi
|
||||
requests:
|
||||
cpu: 10m
|
||||
memory: 20Mi
|
||||
livenessProbe:
|
||||
limits:
|
||||
memory: 100Mi
|
||||
requests:
|
||||
cpu: 10m
|
||||
memory: 20Mi
|
||||
smb:
|
||||
limits:
|
||||
memory: 200Mi
|
||||
requests:
|
||||
cpu: 10m
|
||||
memory: 20Mi
|
||||
affinity: {}
|
||||
nodeSelector: {}
|
||||
tolerations:
|
||||
- key: "node-role.kubernetes.io/master"
|
||||
operator: "Exists"
|
||||
effect: "NoSchedule"
|
||||
- key: "node-role.kubernetes.io/controlplane"
|
||||
operator: "Exists"
|
||||
effect: "NoSchedule"
|
||||
- key: "node-role.kubernetes.io/control-plane"
|
||||
operator: "Exists"
|
||||
effect: "NoSchedule"
|
||||
|
||||
node:
|
||||
maxUnavailable: 1
|
||||
logLevel: 5
|
||||
livenessProbe:
|
||||
healthPort: 29643
|
||||
affinity: {}
|
||||
nodeSelector: {}
|
||||
|
||||
linux:
|
||||
enabled: true
|
||||
dsName: csi-smb-node # daemonset name
|
||||
dnsPolicy: ClusterFirstWithHostNet # available values: Default, ClusterFirstWithHostNet, ClusterFirst
|
||||
kubelet: /var/lib/kubelet
|
||||
tolerations:
|
||||
- operator: "Exists"
|
||||
resources:
|
||||
livenessProbe:
|
||||
limits:
|
||||
memory: 100Mi
|
||||
requests:
|
||||
cpu: 10m
|
||||
memory: 20Mi
|
||||
nodeDriverRegistrar:
|
||||
limits:
|
||||
memory: 100Mi
|
||||
requests:
|
||||
cpu: 10m
|
||||
memory: 20Mi
|
||||
smb:
|
||||
limits:
|
||||
memory: 200Mi
|
||||
requests:
|
||||
cpu: 10m
|
||||
memory: 20Mi
|
||||
|
||||
windows:
|
||||
enabled: false # Unless you already had csi proxy installed, windows.csiproxy.enabled=true is required
|
||||
dsName: csi-smb-node-win # daemonset name
|
||||
kubelet: 'C:\var\lib\kubelet'
|
||||
removeSMBMappingDuringUnmount: true
|
||||
tolerations:
|
||||
- key: "node.kubernetes.io/os"
|
||||
operator: "Exists"
|
||||
effect: "NoSchedule"
|
||||
resources:
|
||||
livenessProbe:
|
||||
limits:
|
||||
memory: 150Mi
|
||||
requests:
|
||||
cpu: 10m
|
||||
memory: 40Mi
|
||||
nodeDriverRegistrar:
|
||||
limits:
|
||||
memory: 150Mi
|
||||
requests:
|
||||
cpu: 10m
|
||||
memory: 40Mi
|
||||
smb:
|
||||
limits:
|
||||
memory: 200Mi
|
||||
requests:
|
||||
cpu: 10m
|
||||
memory: 40Mi
|
||||
csiproxy:
|
||||
enabled: false # required if windows.enabled is true, but may be installed manually also
|
||||
dsName: csi-proxy-win # daemonset name
|
||||
tolerations: {}
|
||||
affinity: {}
|
||||
username: "NT AUTHORITY\\SYSTEM"
|
||||
nodeSelector:
|
||||
"kubernetes.io/os": windows
|
||||
|
||||
customLabels: {}
|
||||
## Collection of annotations to add to all the pods
|
||||
podAnnotations: {}
|
||||
## Collection of labels to add to all the pods
|
||||
podLabels: {}
|
||||
## Leverage a PriorityClass to ensure your pods survive resource shortages
|
||||
## ref: https://kubernetes.io/docs/concepts/configuration/pod-priority-preemption/
|
||||
priorityClassName: system-cluster-critical
|
||||
## Security context give the opportunity to run container as nonroot by setting a securityContext
|
||||
## by example :
|
||||
## securityContext: { runAsUser: 1001 }
|
||||
securityContext: { seccompProfile: {type: RuntimeDefault} }
|
Binary file not shown.
|
@ -0,0 +1,5 @@
|
|||
apiVersion: v1
|
||||
appVersion: v1.14.0
|
||||
description: SMB CSI Driver for Kubernetes
|
||||
name: csi-driver-smb
|
||||
version: v1.14.0
|
|
@ -0,0 +1,5 @@
|
|||
The CSI SMB Driver is getting deployed to your cluster.
|
||||
|
||||
To check CSI SMB Driver pods status, please run:
|
||||
|
||||
kubectl --namespace={{ .Release.Namespace }} get pods --selector="app.kubernetes.io/name={{ .Release.Name }}" --watch
|
|
@ -0,0 +1,29 @@
|
|||
{{/* vim: set filetype=mustache: */}}
|
||||
|
||||
{{/* Expand the name of the chart.*/}}
|
||||
{{- define "smb.name" -}}
|
||||
{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" -}}
|
||||
{{- end -}}
|
||||
|
||||
{{/* labels for helm resources */}}
|
||||
{{- define "smb.labels" -}}
|
||||
labels:
|
||||
app.kubernetes.io/instance: "{{ .Release.Name }}"
|
||||
app.kubernetes.io/managed-by: "{{ .Release.Service }}"
|
||||
app.kubernetes.io/name: "{{ template "smb.name" . }}"
|
||||
app.kubernetes.io/version: "{{ .Chart.AppVersion }}"
|
||||
helm.sh/chart: "{{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}"
|
||||
{{- if .Values.customLabels }}
|
||||
{{ toYaml .Values.customLabels | indent 2 -}}
|
||||
{{- end }}
|
||||
{{- end -}}
|
||||
|
||||
{{/* pull secrets for containers */}}
|
||||
{{- define "smb.pullSecrets" -}}
|
||||
{{- if .Values.imagePullSecrets }}
|
||||
imagePullSecrets:
|
||||
{{- range .Values.imagePullSecrets }}
|
||||
- name: {{ . }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
{{- end -}}
|
|
@ -0,0 +1,48 @@
|
|||
{{- if .Values.windows.csiproxy.enabled}}
|
||||
kind: DaemonSet
|
||||
apiVersion: apps/v1
|
||||
metadata:
|
||||
name: {{ .Values.windows.csiproxy.dsName }}
|
||||
namespace: {{ .Release.Namespace }}
|
||||
{{ include "smb.labels" . | indent 2 }}
|
||||
spec:
|
||||
updateStrategy:
|
||||
rollingUpdate:
|
||||
maxUnavailable: {{ .Values.node.maxUnavailable }}
|
||||
type: RollingUpdate
|
||||
selector:
|
||||
matchLabels:
|
||||
app: {{ .Values.windows.csiproxy.dsName }}
|
||||
template:
|
||||
metadata:
|
||||
{{ include "smb.labels" . | indent 6 }}
|
||||
app: {{ .Values.windows.csiproxy.dsName }}
|
||||
spec:
|
||||
{{- with .Values.windows.csiproxy.tolerations }}
|
||||
tolerations:
|
||||
{{ toYaml . | indent 8 }}
|
||||
{{- end }}
|
||||
securityContext:
|
||||
windowsOptions:
|
||||
hostProcess: true
|
||||
runAsUserName: {{ .Values.windows.csiproxy.username | quote }}
|
||||
hostNetwork: true
|
||||
nodeSelector:
|
||||
{{- with .Values.windows.csiproxy.nodeSelector }}
|
||||
{{ toYaml . | indent 8 }}
|
||||
{{- end }}
|
||||
{{- with .Values.node.affinity }}
|
||||
affinity:
|
||||
{{ toYaml . | indent 8 }}
|
||||
{{- end }}
|
||||
priorityClassName: {{ .Values.priorityClassName | quote }}
|
||||
{{- include "smb.pullSecrets" . | indent 6 }}
|
||||
containers:
|
||||
- name: csi-proxy
|
||||
{{- if hasPrefix "/" .Values.image.csiproxy.repository }}
|
||||
image: "{{ .Values.image.baseRepo }}{{ .Values.image.csiproxy.repository }}:{{ .Values.image.csiproxy.tag }}"
|
||||
{{- else }}
|
||||
image: "{{ .Values.image.csiproxy.repository }}:{{ .Values.image.csiproxy.tag }}"
|
||||
{{- end }}
|
||||
imagePullPolicy: {{ .Values.image.csiproxy.pullPolicy }}
|
||||
{{- end -}}
|
|
@ -0,0 +1,141 @@
|
|||
---
|
||||
kind: Deployment
|
||||
apiVersion: apps/v1
|
||||
metadata:
|
||||
name: {{ .Values.controller.name }}
|
||||
namespace: {{ .Release.Namespace }}
|
||||
{{ include "smb.labels" . | indent 2 }}
|
||||
spec:
|
||||
strategy:
|
||||
type: Recreate
|
||||
replicas: {{ .Values.controller.replicas }}
|
||||
selector:
|
||||
matchLabels:
|
||||
app: {{ .Values.controller.name }}
|
||||
template:
|
||||
metadata:
|
||||
{{ include "smb.labels" . | indent 6 }}
|
||||
app: {{ .Values.controller.name }}
|
||||
{{- if .Values.podLabels }}
|
||||
{{- toYaml .Values.podLabels | nindent 8 }}
|
||||
{{- end }}
|
||||
{{- if .Values.podAnnotations }}
|
||||
annotations:
|
||||
{{ toYaml .Values.podAnnotations | indent 8 }}
|
||||
{{- end }}
|
||||
spec:
|
||||
{{- with .Values.controller.affinity }}
|
||||
affinity:
|
||||
{{ toYaml . | indent 8 }}
|
||||
{{- end }}
|
||||
hostNetwork: true
|
||||
dnsPolicy: {{ .Values.controller.dnsPolicy }}
|
||||
serviceAccountName: {{ .Values.serviceAccount.controller }}
|
||||
nodeSelector:
|
||||
{{- with .Values.controller.nodeSelector }}
|
||||
{{ toYaml . | indent 8 }}
|
||||
{{- end }}
|
||||
kubernetes.io/os: linux
|
||||
{{- if .Values.controller.runOnMaster}}
|
||||
node-role.kubernetes.io/master: ""
|
||||
{{- end}}
|
||||
{{- if .Values.controller.runOnControlPlane}}
|
||||
node-role.kubernetes.io/control-plane: ""
|
||||
{{- end}}
|
||||
priorityClassName: {{ .Values.priorityClassName | quote }}
|
||||
{{- if .Values.securityContext }}
|
||||
securityContext: {{- toYaml .Values.securityContext | nindent 8 }}
|
||||
{{- end }}
|
||||
{{- with .Values.controller.tolerations }}
|
||||
tolerations:
|
||||
{{ toYaml . | indent 8 }}
|
||||
{{- end }}
|
||||
{{- include "smb.pullSecrets" . | indent 6 }}
|
||||
containers:
|
||||
- name: csi-provisioner
|
||||
{{- if hasPrefix "/" .Values.image.csiProvisioner.repository }}
|
||||
image: "{{ .Values.image.baseRepo }}{{ .Values.image.csiProvisioner.repository }}:{{ .Values.image.csiProvisioner.tag }}"
|
||||
{{- else }}
|
||||
image: "{{ .Values.image.csiProvisioner.repository }}:{{ .Values.image.csiProvisioner.tag }}"
|
||||
{{- end }}
|
||||
args:
|
||||
- "-v=2"
|
||||
- "--csi-address=$(ADDRESS)"
|
||||
- "--leader-election"
|
||||
- "--leader-election-namespace={{ .Release.Namespace }}"
|
||||
- "--extra-create-metadata=true"
|
||||
env:
|
||||
- name: ADDRESS
|
||||
value: /csi/csi.sock
|
||||
imagePullPolicy: {{ .Values.image.csiProvisioner.pullPolicy }}
|
||||
volumeMounts:
|
||||
- mountPath: /csi
|
||||
name: socket-dir
|
||||
resources: {{- toYaml .Values.controller.resources.csiProvisioner | nindent 12 }}
|
||||
securityContext:
|
||||
readOnlyRootFilesystem: true
|
||||
capabilities:
|
||||
drop:
|
||||
- ALL
|
||||
- name: liveness-probe
|
||||
{{- if hasPrefix "/" .Values.image.livenessProbe.repository }}
|
||||
image: "{{ .Values.image.baseRepo }}{{ .Values.image.livenessProbe.repository }}:{{ .Values.image.livenessProbe.tag }}"
|
||||
{{- else }}
|
||||
image: "{{ .Values.image.livenessProbe.repository }}:{{ .Values.image.livenessProbe.tag }}"
|
||||
{{- end }}
|
||||
args:
|
||||
- --csi-address=/csi/csi.sock
|
||||
- --probe-timeout=3s
|
||||
- --http-endpoint=localhost:{{ .Values.controller.livenessProbe.healthPort }}
|
||||
- --v=2
|
||||
imagePullPolicy: {{ .Values.image.livenessProbe.pullPolicy }}
|
||||
volumeMounts:
|
||||
- name: socket-dir
|
||||
mountPath: /csi
|
||||
resources: {{- toYaml .Values.controller.resources.livenessProbe | nindent 12 }}
|
||||
securityContext:
|
||||
readOnlyRootFilesystem: true
|
||||
capabilities:
|
||||
drop:
|
||||
- ALL
|
||||
- name: smb
|
||||
{{- if hasPrefix "/" .Values.image.smb.repository }}
|
||||
image: "{{ .Values.image.baseRepo }}{{ .Values.image.smb.repository }}:{{ .Values.image.smb.tag }}"
|
||||
{{- else }}
|
||||
image: "{{ .Values.image.smb.repository }}:{{ .Values.image.smb.tag }}"
|
||||
{{- end }}
|
||||
imagePullPolicy: {{ .Values.image.smb.pullPolicy }}
|
||||
args:
|
||||
- "--v={{ .Values.controller.logLevel }}"
|
||||
- "--endpoint=$(CSI_ENDPOINT)"
|
||||
- "--metrics-address=0.0.0.0:{{ .Values.controller.metricsPort }}"
|
||||
- "--drivername={{ .Values.driver.name }}"
|
||||
- "--working-mount-dir={{ .Values.controller.workingMountDir }}"
|
||||
ports:
|
||||
- containerPort: {{ .Values.controller.metricsPort }}
|
||||
name: metrics
|
||||
protocol: TCP
|
||||
livenessProbe:
|
||||
failureThreshold: 5
|
||||
httpGet:
|
||||
host: localhost
|
||||
path: /healthz
|
||||
port: {{ .Values.controller.livenessProbe.healthPort }}
|
||||
initialDelaySeconds: 30
|
||||
timeoutSeconds: 10
|
||||
periodSeconds: 30
|
||||
env:
|
||||
- name: CSI_ENDPOINT
|
||||
value: unix:///csi/csi.sock
|
||||
securityContext:
|
||||
privileged: true
|
||||
capabilities:
|
||||
drop:
|
||||
- ALL
|
||||
volumeMounts:
|
||||
- mountPath: /csi
|
||||
name: socket-dir
|
||||
resources: {{- toYaml .Values.controller.resources.smb | nindent 12 }}
|
||||
volumes:
|
||||
- name: socket-dir
|
||||
emptyDir: {}
|
|
@ -0,0 +1,8 @@
|
|||
---
|
||||
apiVersion: storage.k8s.io/v1
|
||||
kind: CSIDriver
|
||||
metadata:
|
||||
name: {{ .Values.driver.name }}
|
||||
spec:
|
||||
attachRequired: false
|
||||
podInfoOnMount: true
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue