{
    "componentChunkName": "component---src-templates-issues-tsx",
    "path": "/issues/602",
    "result": {"data":{"issuesJson":{"id":"2ec92af1-5682-52f6-95d7-8e0141a91146","title":"1Panel-dev/webkubectl:  Web Kubectl 帮助您管理 kubernetes 集群的凭据，并在 Web 浏览器中运行 kubectl 命令，从而不必在本地 PC 或其他服务器上安装 kubectl，并且 Web Kubectl 也适用于团队多人同时使用，此外还可以使用 API 集成到您自己的应用中。","number":602,"bodyHTML":"<div align=\"center\" dir=\"auto\">\n<p dir=\"auto\"><a target=\"_blank\" rel=\"noopener noreferrer nofollow\" href=\"https://camo.githubusercontent.com/a15b413168923d02e21292705ceaf86b92675f98e250c5c896a02ba7504a6eae/68747470733a2f2f63646e2e6a7364656c6976722e6e65742f67682f657279616a662f7475406d61696e2f696d672f696d6167655f32303234303432305f3231343430382e676966\"><img src=\"https://camo.githubusercontent.com/a15b413168923d02e21292705ceaf86b92675f98e250c5c896a02ba7504a6eae/68747470733a2f2f63646e2e6a7364656c6976722e6e65742f67682f657279616a662f7475406d61696e2f696d672f696d6167655f32303234303432305f3231343430382e676966\" width=\"100%\" height=\"3\" data-animated-image=\"\" data-canonical-src=\"https://cdn.jsdelivr.net/gh/eryajf/tu@main/img/image_20240420_214408.gif\" style=\"max-width: 100%; height: auto; max-height: 3px;\"></a><br><br></p>\n<markdown-accessiblity-table><table role=\"table\">\n<thead>\n<tr>\n<th align=\"right\">Repos</th>\n<th align=\"left\"><a href=\"https://github.com/1Panel-dev/webkubectl\">1Panel-dev/webkubectl</a></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td align=\"right\"><strong>Views</strong></td>\n<td align=\"left\"><a href=\"https://github.com/opsre/awesome-ops\"><img src=\"https://camo.githubusercontent.com/6bc5353553670493ad17945e163ab7252795f3551b6a5f35333e478ea143f572/68747470733a2f2f76696577732e77686174696c656172656e65642e746f6461792f76696577732f6769746875622f3150616e656c2d6465762f7765626b75626563746c2e737667\" alt=\"views\" data-canonical-src=\"https://views.whatilearened.today/views/github/1Panel-dev/webkubectl.svg\" style=\"max-width: 100%;\"></a></td>\n</tr>\n<tr>\n<td align=\"right\"><strong>Stars</strong></td>\n<td align=\"left\"><a href=\"https://github.com/opsre/awesome-ops\"><img src=\"https://camo.githubusercontent.com/01756af1ed3903c7888f1dc971061941b5e83db873af0b36682275509c3c57c3/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f73746172732f3150616e656c2d6465762f7765626b75626563746c3f636f6c6f723d663266303864266c6f676f3d556e64657274616c65266c6f676f436f6c6f723d656234363330\" alt=\"stars\" data-canonical-src=\"https://img.shields.io/github/stars/1Panel-dev/webkubectl?color=f2f08d&amp;logo=Undertale&amp;logoColor=eb4630\" style=\"max-width: 100%;\"></a></td>\n</tr>\n<tr>\n<td align=\"right\"><strong>Forks</strong></td>\n<td align=\"left\"><a href=\"https://github.com/opsre/awesome-ops\"><img src=\"https://camo.githubusercontent.com/b8c6e2dfd27214de858fd287b7b58aad96de7b9d07b4fc1061d250a624b79510/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f666f726b732f3150616e656c2d6465762f7765626b75626563746c3f636f6c6f723d626138366562266c6f676f3d48616e647368616b65266c6f676f436f6c6f723d656136616136\" alt=\"forks\" data-canonical-src=\"https://img.shields.io/github/forks/1Panel-dev/webkubectl?color=ba86eb&amp;logo=Handshake&amp;logoColor=ea6aa6\" style=\"max-width: 100%;\"></a></td>\n</tr>\n<tr>\n<td align=\"right\"><strong>License</strong></td>\n<td align=\"left\"><a href=\"https://github.com/opsre/awesome-ops\"><img src=\"https://camo.githubusercontent.com/f8602e5f242cc92c98c647b0a053bdb02491fd6a638f594144f30f1e71a6be04/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f6c6963656e73652f3150616e656c2d6465762f7765626b75626563746c3f6c6f676f3d64617461253341696d616765253246706e672533426261736536342532436956424f5277304b47676f414141414e53556845556741414144414141414177434159414141425841766d48414141414358424957584d41414173544141414c457745416d70775941414144336b6c45515652346e4f335953557a5555426748384a726f57567255474a66456d3773584e63534446784d544c327069347348456778654e526f77586770455742445552522532424e414e4f4b4f4b36366f6f4b4a4742586545475263574163455646475152484677516d483525324630774861655748493944554455354c356b6e6568644f62377a66652532423139636e434a47495243516945596c514237594a4979474c38616f73756c565a36695246516a69474b6b7564576735614c6c704f70704e586e665071773555304459524a6d56786a4367464633424c755a476d416f5655694b4541726d583744375553677351706f72674761336748664b34483663754262435644334771683141352532424c6745253242467749656e514d306a6f446f66714c6f48564e7742796d384370546e416d327a51713073676478624964515a556c416b7150415a3664676a303541446f59526f6f66792532466f5869726f376b3551586a4c6f70677a4b69514e6c4c4461716f4967754577426a7a7150355066446a45394479495879493633464d547751464d43567271774e61763451666f52673538514625324266724d485172454b3844546f434d714e4179574e4866786d54526f4c4f726d5352566747744466714345715a4f4851727a6f34706243557341333431365169364551394b476a6345465267484f724f4b6e5536574162396247455459656b4b7843766a546167394534706a653534446b3551503862624d4859762532464333756541654a6b50304f4778422532424a70426e4172595238455951516e6f4e31414e4661426e5050356c385372736559514c303641646b30464a5938484f5761424d6c6541486a683068506f73497a6c6f3876304125324633345a694f6548726130714b52504d5653493774762532423932747725324676687855654252713456454c674d376642714b354770526d6f514c584e7075625475367a6f4e52706754386e5051627138347764253246494375767978694b4871694e41664933774d367549684271476b4c696977414f734b44714f68743749747239567938536a52424557667941627225324668523142667056514664484a42253246423268683778376a36517077435665655951326b72554235436c636a3641326d3067576a25324244306d4c34397a573563517943484c4e37726a6c6d6d6174457958582532464372547a412532466f51785a6b576c39474a5443566f25324279546a3837253242346769504b6376307149486f344156344430565a727251493334706e70524d36357875652532467a417265453425324654253246536f676c664542794d7369517441546c4c3352414a355948725378365a44665337307337754d486842705225324659423573305057366f455270316236253246667252684b3353444c35546965364f515548516c5133735644752532427a50636b397657453973747225324236496a533967486d5750616861444a25324277434b364e494242587348423948796b587378774470686c436d416476706c6162554a4e6e5a504239342532464e7436784f6538587a4562503257684d335741673147756236744825324233513150673337365239713475716c6e6f36676448476a444f5139306562303141484d3672596975554a314f713472344656756a35765239427a4d3957674e764f7977446869495951467667626366774166774d764863615067425041253246447948476a50624e394138616d6562636477416444354e6633373574787165774e5552656f797677424958594c645170576c6877465771745061435044334173467541535636717171496c62304a766b564331464c39576b4c55556c55574b337a585a4c46432532423125324642726f46746f364f7358497545594a5034447a7a5732594656316f4a614141414141456c46546b5375516d4343\" alt=\"license\" data-canonical-src=\"https://img.shields.io/github/license/1Panel-dev/webkubectl?logo=data%3Aimage%2Fpng%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAACXBIWXMAAAsTAAALEwEAmpwYAAAD3klEQVR4nO3YSUzUUBgH8JroWVrUGJfEm7sXNcSDFxMTL2pi4sHEgxeNRowXgpEWBDURR%2BNANOKOK66ooKJGBXeEGRcWAcEVFGQRHFwQmH5%2F0wHaeWHI9DUDU5L5knehdOb7zfe%2B19cnCJGIRCQiEYlQB7YJIyGL8aosulVZ6iRFQjiGKkudWg5aLlpOppNXnfPqw5U0DYRJmVxjCgFF3BLuZGmAoVUiKEArmX7D7USgsQporgGa3gHfK4H6cuBbCVD3Gqh1A5%2BLgE%2BFwIenQM0joDofqLoHVNwBym8CpTnAm2zQq0sgdxbIdQZUlAkqPAZ6dgj05ADoYRoofy%2FoXiro7k5QXjLopgzKiQNlLDaqoIguEwBjzqP5PfDjE9DyIXyI63FMTwQFMCVrqwNav4QfoRg58QF%2BfrMHQrEK8DToCMqNAyWNHfxmTRoLOrmSRVgGtDfqCEqZOHQrzo4pbCUsA3416Qi6EQ9KGjcEFRgHOrOKnU6WAb9bGETYekKxCvjTag9E4pje54Dk5QP8bbMHYv%2FC3ueAeJkP0OGxB%2BJpBnArYR8EYQQnoN1ANFaBnPP5l8SrseYQL06Adk0FJY8HOWaBMleAHjh0hPosIzlo8v0A%2F34ZiOeHra0qKRPMVSI7tv%2B92tw%2FvhxUeBRq4VELgM7fBqK5GpRmoQLXNpubTu6zoNRpgT8nPQbq84wd%2FICuvyxiKHqiNAfI3wM6uIhBqGkLiiwAOsKDqOht7Itr9Vy8SjRBEWfyAbr%2FhR1BfpVQFdHJB%2FB2hh7x7j6QpwCVeeYQ2krUB5Clcj6A2m0gWj%2BD0mL49zW5cQyCHLN7rjlmmatEyXX%2FCrTzA%2FoQxZkWl9GJTCVo%2ByTj87%2B4giPKcv0qIHo4AV4D0VZrrQI34pnpRM65xue%2FzAreE4%2FT%2FSoglfEByMsiQtATlL3RAJ5YHrSx6ZDfS70s7uMHhBpR%2FYB5s0PW6oERp1b6%2FfrRhK3SDL5Tie6OQUHQlQ3sVDu%2BzPck9vWE9str%2B6IjS9gHmWPahaDJ%2BwCK6NIBBXsHB9HykXsxwDphlCmAdvplabUJNnZPB94%2FNt6xOe8XzEbP2WhM3WAg1Gub6tH%2B3Q1Pg376R9q4uqlno6gdHGjDOQ90eb01AHM6rYiuUJ1Oq4r4FVuj5vR9BzM9WgNvOywDhiIYQFvgbcfwAfwMvHcaPgBPA%2FDyHGjPbN9A8amebcdwAdD5Nf375txqewNUReoyvwBIXYLdQpWlhwFWqtPaCPD3AsFuASV6qqqIlb0JvkVC1FL9WkLUUlUWK3zXZLFC%2B1%2FBroFto6OsXIuEYJP4DzzW2YFV1oJaAAAAAElFTkSuQmCC\" style=\"max-width: 100%;\"></a></td>\n</tr>\n<tr>\n<td align=\"right\"><strong>UpdatedAt</strong></td>\n<td align=\"left\"><a href=\"https://github.com/opsre/awesome-ops\"><img src=\"https://camo.githubusercontent.com/c27b6aad7af7a14242914dd0369c92b4e866e5bca706b3a8ddbb08de28851745/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f6c6173742d636f6d6d69742f3150616e656c2d6465762f7765626b75626563746c3f646973706c61795f74696d657374616d703d636f6d6d6974746572266c6f676f3d64617461253341696d616765253246706e672533426261736536342532436956424f5277304b47676f414141414e5355684555674141414234414141416543415941414141374d4b3669414141414358424957584d41414173544141414c457745416d7077594141414648556c45515652346e4c5658375539615678776d3236646c582532466468627825324232253246516e626b7655627264554151674a4a496655444e574454546d4f76314651554661504a346b7573725630314a7431734e70637453327533626f745a746d786439744a5346536f714b71494635625944464c436f76436c656673747a4a387758524c445a4c7a6e6b634f343535376e3364332532466e655a3472454f515a74315771462532423858467234253242664f4c4565326a6f59307a776638546f795a50766a45676b4c592532426b306d6d72584f36644b696e787a476b30666a5430782532425279723055716e6359637a4d317263347451253242497270324c4758646f344e4334567657715453373277716c632532427231334f527269364b6458646e624f484c6c776c7a4a70524b6e3657342532424b36706f4f434e6e494166486a253246253242776168495a4234764b6e715a6630714a704e49716c2532467638545530634e6c3572627963337730516e54703379324c54614a374d314e617844723266526e315370504736476961323174664533345463614f617931694d55564f5146624659714957536f31573854694156616e43306576584f4542375770313448466232327a453566714c4f433545524c515769644e614e49347545636339693768634a6c644868324e57725135674464624f6c7061756d49754c62326174415144506e7a3062384e6257636d785656524a33486d7870536377777a4f4a6d4b44524765384c6c435a444c4739673754496e5631516c376462586256316533675430574b697243466f6d6b5079767758466c5a474a4f6a563625324253743634757564445a4f55354555636f782532464d455144567674364d62634e3237593341797a687633737061557242365a3971724a534f3139657a6a387032704c426b4a792532426343484a7857493567573574636652527a31645531394766476b6f7539505a4f34736d52396a4746777065783444793362766e6d4b79706f74625531335669646a71595a68726a343972764d457425324625324659714c7a396430304e6a57253246637a67796f394f35317a7336614e6c6f354644747530445a675146686c47584a30644241446f4e6864367576703657686f617967374e394c564748386d443462253246486e667455516f4e4734764c51306769784d716c5725324234714f6a744e48446733723166365969525347785279375576714c62395534716b716e78504f4e7661356c447048723125324279794b524e4b57425a793565644d554842326d3572792532422532424551772532427a6766347a6f39253246306f634e3357527a4c4277344a2532424a7950574372716d4967475974554f735744346f785a46516f50556a4770564871493425324661666b51504336665a5165654d31253242764c7549516e6a754257514444437363726d485039656f4e5041744271664f6e5875614b25324268364a45624772732532427076764d6d78654962683836336162565065597953456f39464a48704e4d464a59253242503563575a6b6667374f3174537759436553514c54593345385130392532464256504a556c78516a7368543142736343593032723955445542667643484236367063665041336c794165336e6772332532463437584467614a7a736c7937787741364e5a746c555550437541487161536a5549502532427375653842525741432532464e6651374a5a505a35397330476a3756747049537a34685125324243706658474d4b685a63764c70554b7866574d386f68766637702532464f446a4842666356463849736b383267314648796b63564645253242555a414158343761452532464d6c34504f3530506e75683025324678346e6d637957507364774468427836436d6b4c562532466746446a594b784f4a4f4674623077517949684c39527943774b33414f664947703159464542686e4d4a634c525745624b644b516f55366e63545a6b494544696341792532463831645675454d3552775066657934784f7830496b25324649324e6e466b692532425761664f6f464959466367595a43797864376543556a626334416d46363566742532466b4d686b336f25324235686337734d4a79716a4a45477659466151464972375930775077384246415925324236253242766d6b3377367a7a5275444d6d5a5652736668385274413075455453443775434254364459514e36697665553066706b594c6a453671725672744f78654e4b553954484c5a4a396b4255324a427342685635416976422532466f4b61514e4b675043427744596149665a4334616454684f71463457454e56694c4a77566f586f62664c424b56773637414f6154734c6336355461564b32317651344c613939654b6359673576627873624f627a5451394e37554b4467554f3177446a6944494942736868357a746733396e514d4c535a4248344f7a424f55444551586d323036643366634c67737762585141345068634b336e6873775531427a3877765130395248472532466f597933656a6677424e6d746f59714c4130586741414141424a52553545726b4a676767253344253344266c6162656c3d557064617465644174\" alt=\"last-commit\" data-canonical-src=\"https://img.shields.io/github/last-commit/1Panel-dev/webkubectl?display_timestamp=committer&amp;logo=data%3Aimage%2Fpng%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAAB4AAAAeCAYAAAA7MK6iAAAACXBIWXMAAAsTAAALEwEAmpwYAAAFHUlEQVR4nLVX7U9aVxwm26dlX%2Fdhbx%2B2%2FQnbkvUbrdUAQgJJIfUDNWDTTmOv1FQUFaPJ4kusrV01Jt1sNpctS2u3botZtmxd9tJSFSoqKqIF5bYDFLCovClefstzJ8wXRLDZLznkcO4557n3d3%2FneZ4rEOQZt1WqF%2B8XFr4%2BfOLEe2joY0zwf8ToyZPvjEgkLY%2Bk0mmrXO6dKinxzGk0fjT0x%2BRyr0UqncYczM1rc4tQ%2BIrp2LGXdo4NC4VvWqTS72wqlc%2Br13ORri6KdXdnbOHLlwlzJpRKn6W4%2BK6poOCNnIAfHj%2F%2BwahIZB4vKnqZf0qJpNIql%2Fv8TU0cNl5rbyc3w0QnTp3y2LTaJ7M1NaxDr2fRn1SpPG6Gia21tfE34TcaOay1iMUVOQFbFYqIWSo1W8TiAVanC0evXOEB7Wp14HFb22zE5fqLOC5ERLQWidNaNI4uEcc9i7hcJldHh2NWrQ5gDdbOlpaumIuLb2atAQDPnz0b8NbWcmxVVRJ3HmxpScwwzOJmKDRGe8LlCZDLG9g7TInV1Ql7dbXbV1e3gT0WKirCFomkPyvwXFlZGJOjV6%2BSt64uudDZOU5EUcox%2FMEQDVvt6MbcN27Y3Ayzhv3spaUrB6Z9qrJSO19ezj8p2pLBkJy%2BcCHJxWI5gW5tcfRRz1dU19GfGkou9PZO4smR9jGFwpex4Dy3bvnmKypotbU13VidjqYZhrj49rvMEt%2F%2FYqLz9d00NjW%2Fczgyo9O51zs6aNlo5FDtu0DZgQFhlGXJ0dBADoNhd6uvp6Whoayg7N9LVGH8mD4b%2FHnftUQoNG4vLQ0gixMqlW%2B4qOjtNHDg3r1f6YiRSGxRy7UvqLb9U4qkqnxPONva5lDpHr1%2ByyKRNKWBZy5edMUHB2m5ry%2B%2BEQw%2Bzgf4zo9%2F0ocN3WRzLBw4J%2BJyPWCrqmIgGYtUOsWD4oxZFQoPUjGpVHqI4%2FafkQPC6fZQeeM1%2BvLuIQnjuBWQDDCscrmHP9eoNPAtBqfOnXuaK%2Bh6JEbGrs%2BpvvMmxeIbh863abVPeYySEo9FJHpNMFJY%2BP5cWZkfg7O1tSwYCeSQLTY3E8Q09%2FBVPJUlxQjshT1BscCY02r9UDUBfvCHB66pcfPA3lyAe3ngr3%2F47XDgaJzsly7xwA6NZtlUUPCuAHqaSjUIP%2Bsue8BRWAC%2FNfQ7JZPZ59s0Gj7VtpISz4hQ%2BCpfXGMKhZcvLpUKxfWM8ohvf7p%2FODjHBfcVF8Isk82g1FHykcVFE%2BUZAAX47aE%2FMl4PO50Pnuh0%2Fx4nmcyWPsdwDhBx6CmkLV%2FgFDjYKxOJOFtb0wQyIhL9RyCwK3AOfIGp1YFEBhnMJcLRWEbKdKQoU6ncTZkIEDicAy%2F81dVuEM5RwPfey4xOx0Ik%2FI2NnFki%2BWafOoFIYFcgYZCyxd7eCUjbc4AmF65ft%2FkMhk3o%2B5hc7sMJyqjJEGvYFaQFIr7Y0wPw8BFAY%2B6%2Bvmk3w6zzRuDMmZVRsfh8RtA0uETSD7uCBT6DYQN6iveU0fpkYLjE6qrVrtOxeNKU9THLZJ9kBU2JBsBhV5AivB%2FoKaQNKgPCBwDYaIfZC4adThOqF4WENViLJwVoXobfLBKVw67AOaTsLc65TaVK21vQ4La99eKcYg5vbxsbObzTQ9N7UKDgUO1wDjiDIIBshh5ztg39nQMLSZBH4OzBOUDEQXm206d3fcLgswbXQA4PhcK3nhswU1Bz8wvQ09RHG%2FoYy3ejfwBNmtoYqLA0XgAAAABJRU5ErkJggg%3D%3D&amp;label=UpdatedAt\" style=\"max-width: 100%;\"></a></td>\n</tr>\n<tr>\n<td align=\"right\"><strong>CreatedAt</strong></td>\n<td align=\"left\"><a href=\"https://github.com/opsre/awesome-ops\"><img src=\"https://camo.githubusercontent.com/b2ba9e4c18b1778632e4269daf2b0f65f2cb7d3c9f37aeae8457de72a9ca0f89/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f637265617465642d61742f3150616e656c2d6465762f7765626b75626563746c3f6c6f676f3d64617461253341696d616765253246706e672533426261736536342532436956424f5277304b47676f414141414e5355684555674141414234414141416543415941414141374d4b3669414141414358424957584d41414173544141414c457745416d7077594141414648556c45515652346e4c5658375539615678776d3236646c582532466468627825324232253246516e626b7655627264554151674a4a496655444e574454546d4f76314651554661504a346b7573725630314a7431734e70637453327533626f745a746d786439744a5346536f714b71494635625944464c436f76436c656673747a4a387758524c445a4c7a6e6b634f343535376e3364332532466e655a3472454f515a74315771462532423858467234253242664f4c4565326a6f59307a776638546f795a50766a45676b4c592532426b306d6d72584f36644b696e787a476b30666a5430782532425279723055716e6359637a4d317263347451253242497270324c4758646f344e4334567657715453373277716c632532427231334f527269364b6458646e624f484c6c776c7a4a70524b6e3657342532424b36706f4f434e6e494166486a253246253242776168495a4234764b6e715a6630714a704e49716c2532467638545530634e6c3572627963337730516e54703379324c54614a374d314e617844723266526e315370504736476961323174664533345463614f617931694d55564f5146624659714957536f31573854694156616e43306576584f4542375770313448466232327a453566714c4f433545524c515769644e614e49347545636339693768634a6c644868324e57725135674464624f6c7061756d49754c62326174415144506e7a3062384e6257636d785656524a33486d7870536377777a4f4a6d4b44524765384c6c435a444c4739673754496e5631516c376462586256316533675430574b697243466f6d6b5079767758466c5a474a4f6a563625324253743634757564445a4f55354555636f782532464d455144567674364d62634e3237593341797a687633737061557242365a3971724a534f3139657a6a387032704c426b4a792532426343484a7857493567573574636652527a31645531394766476b6f7539505a4f34736d52396a4746777065783444793362766e6d4b79706f74625531335669646a71595a68726a343972764d457425324625324659714c7a396430304e6a57253246637a67796f394f35317a7336614e6c6f354644747530445a675146686c47584a30644241446f4e6864367576703657686f617967374e394c564748386d443462253246486e667455516f4e4734764c51306769784d716c5725324234714f6a744e48446733723166365969525347785279375576714c62395534716b716e78504f4e7661356c447048723125324279794b524e4b57425a793565644d554842326d3572792532422532424551772532427a6766347a6f39253246306f634e3357527a4c4277344a2532424a7950574372716d4967475974554f735744346f785a46516f50556a4770564871493425324661666b51504336665a5165654d31253242764c7549516e6a754257514444437363726d485039656f4e5041744271664f6e5875614b25324268364a45624772732532427076764d6d78654962683836336162565065597953456f39464a48704e4d464a59253242503563575a6b6667374f3174537759436553514c54593345385130392532464256504a556c78516a7368543142736343593032723955445542667643484236367063665041336c794165336e6772332532463437584467614a7a736c7937787741364e5a746c555550437541487161536a5549502532427375653842525741432532464e6651374a5a505a35397330476a3756747049537a34685125324243706658474d4b685a63764c70554b7866574d386f68766637702532464f446a4842666356463849736b383267314648796b63564645253242555a414158343761452532464d6c34504f3530506e75683025324678346e6d637957507364774468427836436d6b4c562532466746446a594b784f4a4f4674623077517949684c39527943774b33414f664947703159464542686e4d4a634c525745624b644b516f55366e63545a6b494544696341792532463831645675454d3552775066657934784f7830496b25324649324e6e466b692532425761664f6f464959466367595a43797864376543556a626334416d46363566742532466b4d686b336f25324235686337734d4a79716a4a45477659466151464972375930775077384246415925324236253242766d6b3377367a7a5275444d6d5a5652736668385274413075455453443775434254364459514e36697665553066706b594c6a453671725672744f78654e4b553954484c5a4a396b4255324a427342685635416976422532466f4b61514e4b675043427744596149665a4334616454684f71463457454e56694c4a77566f586f62664c424b56773637414f6154734c6336355461564b32317651344c613939654b6359673576627873624f627a5451394e37554b4467554f3177446a6944494942736868357a746733396e514d4c535a4248344f7a424f55444551586d323036643366634c67737762585141345068634b336e6873775531427a3877765130395248472532466f597933656a6677424e6d746f59714c4130586741414141424a52553545726b4a676767253344253344266c6162656c3d437265617465644174\" alt=\"create-at\" data-canonical-src=\"https://img.shields.io/github/created-at/1Panel-dev/webkubectl?logo=data%3Aimage%2Fpng%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAAB4AAAAeCAYAAAA7MK6iAAAACXBIWXMAAAsTAAALEwEAmpwYAAAFHUlEQVR4nLVX7U9aVxwm26dlX%2Fdhbx%2B2%2FQnbkvUbrdUAQgJJIfUDNWDTTmOv1FQUFaPJ4kusrV01Jt1sNpctS2u3botZtmxd9tJSFSoqKqIF5bYDFLCovClefstzJ8wXRLDZLznkcO4557n3d3%2FneZ4rEOQZt1WqF%2B8XFr4%2BfOLEe2joY0zwf8ToyZPvjEgkLY%2Bk0mmrXO6dKinxzGk0fjT0x%2BRyr0UqncYczM1rc4tQ%2BIrp2LGXdo4NC4VvWqTS72wqlc%2Br13ORri6KdXdnbOHLlwlzJpRKn6W4%2BK6poOCNnIAfHj%2F%2BwahIZB4vKnqZf0qJpNIql%2Fv8TU0cNl5rbyc3w0QnTp3y2LTaJ7M1NaxDr2fRn1SpPG6Gia21tfE34TcaOay1iMUVOQFbFYqIWSo1W8TiAVanC0evXOEB7Wp14HFb22zE5fqLOC5ERLQWidNaNI4uEcc9i7hcJldHh2NWrQ5gDdbOlpaumIuLb2atAQDPnz0b8NbWcmxVVRJ3HmxpScwwzOJmKDRGe8LlCZDLG9g7TInV1Ql7dbXbV1e3gT0WKirCFomkPyvwXFlZGJOjV6%2BSt64uudDZOU5EUcox%2FMEQDVvt6MbcN27Y3Ayzhv3spaUrB6Z9qrJSO19ezj8p2pLBkJy%2BcCHJxWI5gW5tcfRRz1dU19GfGkou9PZO4smR9jGFwpex4Dy3bvnmKypotbU13VidjqYZhrj49rvMEt%2F%2FYqLz9d00NjW%2Fczgyo9O51zs6aNlo5FDtu0DZgQFhlGXJ0dBADoNhd6uvp6Whoayg7N9LVGH8mD4b%2FHnftUQoNG4vLQ0gixMqlW%2B4qOjtNHDg3r1f6YiRSGxRy7UvqLb9U4qkqnxPONva5lDpHr1%2ByyKRNKWBZy5edMUHB2m5ry%2B%2BEQw%2Bzgf4zo9%2F0ocN3WRzLBw4J%2BJyPWCrqmIgGYtUOsWD4oxZFQoPUjGpVHqI4%2FafkQPC6fZQeeM1%2BvLuIQnjuBWQDDCscrmHP9eoNPAtBqfOnXuaK%2Bh6JEbGrs%2BpvvMmxeIbh863abVPeYySEo9FJHpNMFJY%2BP5cWZkfg7O1tSwYCeSQLTY3E8Q09%2FBVPJUlxQjshT1BscCY02r9UDUBfvCHB66pcfPA3lyAe3ngr3%2F47XDgaJzsly7xwA6NZtlUUPCuAHqaSjUIP%2Bsue8BRWAC%2FNfQ7JZPZ59s0Gj7VtpISz4hQ%2BCpfXGMKhZcvLpUKxfWM8ohvf7p%2FODjHBfcVF8Isk82g1FHykcVFE%2BUZAAX47aE%2FMl4PO50Pnuh0%2Fx4nmcyWPsdwDhBx6CmkLV%2FgFDjYKxOJOFtb0wQyIhL9RyCwK3AOfIGp1YFEBhnMJcLRWEbKdKQoU6ncTZkIEDicAy%2F81dVuEM5RwPfey4xOx0Ik%2FI2NnFki%2BWafOoFIYFcgYZCyxd7eCUjbc4AmF65ft%2FkMhk3o%2B5hc7sMJyqjJEGvYFaQFIr7Y0wPw8BFAY%2B6%2Bvmk3w6zzRuDMmZVRsfh8RtA0uETSD7uCBT6DYQN6iveU0fpkYLjE6qrVrtOxeNKU9THLZJ9kBU2JBsBhV5AivB%2FoKaQNKgPCBwDYaIfZC4adThOqF4WENViLJwVoXobfLBKVw67AOaTsLc65TaVK21vQ4La99eKcYg5vbxsbObzTQ9N7UKDgUO1wDjiDIIBshh5ztg39nQMLSZBH4OzBOUDEQXm206d3fcLgswbXQA4PhcK3nhswU1Bz8wvQ09RHG%2FoYy3ejfwBNmtoYqLA0XgAAAABJRU5ErkJggg%3D%3D&amp;label=CreatedAt\" style=\"max-width: 100%;\"></a></td>\n</tr>\n</tbody>\n</table></markdown-accessiblity-table>\n<a href=\"https://github.com/opsre/awesome-ops\">\n</a><p dir=\"auto\"><a href=\"https://github.com/opsre/awesome-ops\"><img src=\"https://camo.githubusercontent.com/b964a36ea4078c39f603d46a29436371c7541a2f26e0228d7b21b9d9805b43d3/68747470733a2f2f736f6369616c6966792e6769742e63692f6f707372652f617765736f6d652d6f70732f696d6167653f6465736372697074696f6e3d3126666f6e743d42697474657226666f726b733d31266973737565733d31266c616e67756167653d31266c6f676f3d6874747073253341253246253246617661746172732e67697468756275736572636f6e74656e742e636f6d25324675253246313838353638303230266e616d653d31266f776e65723d31267061747465726e3d436972637569742b426f6172642670756c6c733d31267374617267617a6572733d31267468656d653d4c69676874\" alt=\"\" data-canonical-src=\"https://socialify.git.ci/opsre/awesome-ops/image?description=1&amp;font=Bitter&amp;forks=1&amp;issues=1&amp;language=1&amp;logo=https%3A%2F%2Favatars.githubusercontent.com%2Fu%2F188568020&amp;name=1&amp;owner=1&amp;pattern=Circuit+Board&amp;pulls=1&amp;stargazers=1&amp;theme=Light\" style=\"max-width: 100%;\"></a></p>\n<a target=\"_blank\" rel=\"noopener noreferrer nofollow\" href=\"https://camo.githubusercontent.com/a15b413168923d02e21292705ceaf86b92675f98e250c5c896a02ba7504a6eae/68747470733a2f2f63646e2e6a7364656c6976722e6e65742f67682f657279616a662f7475406d61696e2f696d672f696d6167655f32303234303432305f3231343430382e676966\"><img src=\"https://camo.githubusercontent.com/a15b413168923d02e21292705ceaf86b92675f98e250c5c896a02ba7504a6eae/68747470733a2f2f63646e2e6a7364656c6976722e6e65742f67682f657279616a662f7475406d61696e2f696d672f696d6167655f32303234303432305f3231343430382e676966\" width=\"100%\" height=\"3\" data-animated-image=\"\" data-canonical-src=\"https://cdn.jsdelivr.net/gh/eryajf/tu@main/img/image_20240420_214408.gif\" style=\"max-width: 100%; height: auto; max-height: 3px;\"></a>\n</div>\n<p dir=\"auto\"><a href=\"https://github.com/KubeOperator/webkubectl/blob/master/README.zh_CN.md\">中文 README.md</a></p>\n<h1 dir=\"auto\"><a target=\"_blank\" rel=\"noopener noreferrer nofollow\" href=\"https://raw.githubusercontent.com/KubeOperator/webkubectl/master/gotty/resources/favicon.png\"><img src=\"https://raw.githubusercontent.com/KubeOperator/webkubectl/master/gotty/resources/favicon.png\" alt=\"\" style=\"max-width: 100%;\"></a> Web Kubectl - Run kubectl command in web browser</h1>\n<p dir=\"auto\"><a href=\"https://hub.docker.com/r/kubeoperator/webkubectl\" rel=\"nofollow\"><img src=\"https://camo.githubusercontent.com/f5e93d4866c86b678d20a1853507d582ddf33dfce25f5a7ca10d9cbe87efee87/68747470733a2f2f696d672e736869656c64732e696f2f646f636b65722f70756c6c732f6b7562656f70657261746f722f7765626b75626563746c3f6c6162656c3d646f776e6c6f616473\" alt=\"Downloads\" data-canonical-src=\"https://img.shields.io/docker/pulls/kubeoperator/webkubectl?label=downloads\" style=\"max-width: 100%;\"></a><br>\n<a href=\"https://goreportcard.com/report/github.com/kubeoperator/webkubectl\" rel=\"nofollow\"><img src=\"https://camo.githubusercontent.com/34bd3495d393094819930b63023aff8ff970e7c0ebd813d10e2e5edf06340cf3/68747470733a2f2f676f7265706f7274636172642e636f6d2f62616467652f6769746875622e636f6d2f6b7562656f70657261746f722f7765626b75626563746c\" alt=\"Go Report Card\" data-canonical-src=\"https://goreportcard.com/badge/github.com/kubeoperator/webkubectl\" style=\"max-width: 100%;\"></a><br>\n<a target=\"_blank\" rel=\"noopener noreferrer nofollow\" href=\"https://camo.githubusercontent.com/26f062ab2a41707ccdc07bf387070569b5606d4e22ae58033d41ba9b4d455ff5/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f6c6963656e73652f4b7562654f70657261746f722f7765626b75626563746c\"><img src=\"https://camo.githubusercontent.com/26f062ab2a41707ccdc07bf387070569b5606d4e22ae58033d41ba9b4d455ff5/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f6c6963656e73652f4b7562654f70657261746f722f7765626b75626563746c\" alt=\"License\" data-canonical-src=\"https://img.shields.io/github/license/KubeOperator/webkubectl\" style=\"max-width: 100%;\"></a><br>\n<a target=\"_blank\" rel=\"noopener noreferrer nofollow\" href=\"https://camo.githubusercontent.com/38357f75509bd947fb8956187596fc97109a7015b6e8fc7ce866794290c1630e/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f646f636b6572697a65642d7965732d627269676874677265656e\"><img src=\"https://camo.githubusercontent.com/38357f75509bd947fb8956187596fc97109a7015b6e8fc7ce866794290c1630e/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f646f636b6572697a65642d7965732d627269676874677265656e\" alt=\"Dockerized\" data-canonical-src=\"https://img.shields.io/badge/dockerized-yes-brightgreen\" style=\"max-width: 100%;\"></a><br>\n<a target=\"_blank\" rel=\"noopener noreferrer nofollow\" href=\"https://camo.githubusercontent.com/d29ff4c0232d76f7d746387976fb7b4b0ee84be218b4fd3215b8d82dc32c232d/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f762f72656c656173652f6b7562656f70657261746f722f7765626b75626563746c\"><img src=\"https://camo.githubusercontent.com/d29ff4c0232d76f7d746387976fb7b4b0ee84be218b4fd3215b8d82dc32c232d/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f762f72656c656173652f6b7562656f70657261746f722f7765626b75626563746c\" alt=\"Version\" data-canonical-src=\"https://img.shields.io/github/v/release/kubeoperator/webkubectl\" style=\"max-width: 100%;\"></a></p>\n<p dir=\"auto\"><a target=\"_blank\" rel=\"noopener noreferrer\" href=\"web-resources/webkubectl.gif\"><img src=\"web-resources/webkubectl.gif\" alt=\"webkubectl\" data-animated-image=\"\" style=\"max-width: 100%;\"></a></p>\n<h1 dir=\"auto\">Goal</h1>\n<p dir=\"auto\">Web Kubectl helps you manage kubernetes credentials and run kubectl command in web browser, so that you don't have to install kubectl on your local PC or some other servers, furthermore Web Kubectl can be used for a team.</p>\n<h1 dir=\"auto\">Advantage</h1>\n<ul dir=\"auto\">\n<li><strong>Support multiple user and multiple Kubernetes clusters</strong>：One deployment of Web Kubectl can be used for a team, all of the team members can use Web Kubectl simultaneously although they are connecting different Kubernetes clusters or different privileges.</li>\n<li><strong>Session isolation</strong>：All of the online sessions are isolated, each session has its own namespace and storage which is invisible to the others.</li>\n<li><strong>Support <a href=\"https://kubernetes.io/docs/concepts/configuration/organize-cluster-access-kubeconfig/\" rel=\"nofollow\">kubeconfig</a> file and <a href=\"https://kubernetes.io/docs/reference/access-authn-authz/authentication/#service-account-tokens\" rel=\"nofollow\">bearer token</a></strong>：You can provide kubeconfig file or bearer token to connect Kubernetes cluster through Web Kubectl.</li>\n<li><strong>Easy to use and integrate</strong>：You can simply use the index page for a quick start, or integrate with your application using api.</li>\n<li><strong>Manage Kubernetes clusters in VPC</strong>：Through Web Kubectl you can manage the Kubernetes clusters in VPC which is unreachable from you laptop.</li>\n</ul>\n<div class=\"highlight highlight-source-shell notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"_______________________________________________________________________\n|   Local Network     |          DMZ           |      VPC/Datacenter  |\n|                     |                        |                      |\n|                     |    _______________     |   ----------------   |\n|   ---------------   |    |             |  /~~~~~&gt;| Kubernetes A |   |\n|   | Your Laptop |~~~~~~~&gt;| Web Kubectl | /   |   ----------------   |\n|   ---------------   |    |             | \\   |                      |\n|                     |    ---------------  \\  |   ----------------   |\n|                     |                      \\~~~~&gt;| Kubernetes B |   |\n|                     |                        |   ----------------   |\n-----------------------------------------------------------------------\"><pre class=\"notranslate\">_______________________________________________________________________\n<span class=\"pl-k\">|</span>   Local Network     <span class=\"pl-k\">|</span>          DMZ           <span class=\"pl-k\">|</span>      VPC/Datacenter  <span class=\"pl-k\">|</span>\n<span class=\"pl-k\">|</span>                     <span class=\"pl-k\">|</span>                        <span class=\"pl-k\">|</span>                      <span class=\"pl-k\">|</span>\n<span class=\"pl-k\">|</span>                     <span class=\"pl-k\">|</span>    _______________     <span class=\"pl-k\">|</span>   ----------------   <span class=\"pl-k\">|</span>\n<span class=\"pl-k\">|</span>   ---------------   <span class=\"pl-k\">|</span>    <span class=\"pl-k\">|</span>             <span class=\"pl-k\">|</span>  /~~~~~<span class=\"pl-k\">&gt;</span><span class=\"pl-k\">|</span> Kubernetes A <span class=\"pl-k\">|</span>   <span class=\"pl-k\">|</span>\n<span class=\"pl-k\">|</span>   <span class=\"pl-k\">|</span> Your Laptop <span class=\"pl-k\">|</span>~~~~~~~<span class=\"pl-k\">&gt;</span><span class=\"pl-k\">|</span> Web Kubectl <span class=\"pl-k\">|</span> /   <span class=\"pl-k\">|</span>   ----------------   <span class=\"pl-k\">|</span>\n<span class=\"pl-k\">|</span>   ---------------   <span class=\"pl-k\">|</span>    <span class=\"pl-k\">|</span>             <span class=\"pl-k\">|</span> <span class=\"pl-cce\">\\ </span>  <span class=\"pl-k\">|</span>                      <span class=\"pl-k\">|</span>\n<span class=\"pl-k\">|</span>                     <span class=\"pl-k\">|</span>    ---------------  <span class=\"pl-cce\">\\ </span> <span class=\"pl-k\">|</span>   ----------------   <span class=\"pl-k\">|</span>\n<span class=\"pl-k\">|</span>                     <span class=\"pl-k\">|</span>                      <span class=\"pl-cce\">\\~</span>~~~<span class=\"pl-k\">&gt;</span><span class=\"pl-k\">|</span> Kubernetes B <span class=\"pl-k\">|</span>   <span class=\"pl-k\">|</span>\n<span class=\"pl-k\">|</span>                     <span class=\"pl-k\">|</span>                        <span class=\"pl-k\">|</span>   ----------------   <span class=\"pl-k\">|</span>\n-----------------------------------------------------------------------</pre></div>\n<h1 dir=\"auto\">Architecture</h1>\n<p dir=\"auto\">Web Kubectl use <a href=\"https://github.com/KubeOperator/webkubectl/tree/master/gotty\">webkubectl/gotty</a> to run a JavaScript based terminal on web browsers.<br><br>\nWhen opens a new session, a temporary Linux namespace will be created for the session, this make sure all sessions are isolated, each session has its own namespace and storage, meanwhile .kube/config file is generated for current session.<br><br>\nWhen session terminated, the provisioned namespace and storage are deleted.</p>\n<h1 dir=\"auto\">Installation</h1>\n<div class=\"highlight highlight-source-shell notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"$ docker run --name=&quot;webkubectl&quot; -p 8080:8080 -d --privileged kubeoperator/webkubectl\"><pre class=\"notranslate\">$ docker run --name=<span class=\"pl-s\"><span class=\"pl-pds\">\"</span>webkubectl<span class=\"pl-pds\">\"</span></span> -p 8080:8080 -d --privileged kubeoperator/webkubectl</pre></div>\n<p dir=\"auto\">Advanced environment variables</p>\n<markdown-accessiblity-table><table role=\"table\">\n<thead>\n<tr>\n<th align=\"left\">ENV</th>\n<th align=\"left\">Type</th>\n<th align=\"left\">Default Value</th>\n<th align=\"left\">Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td align=\"left\">SESSION_STORAGE_SIZE</td>\n<td align=\"left\">string</td>\n<td align=\"left\">10M</td>\n<td align=\"left\">Storage size limit for single connection</td>\n</tr>\n<tr>\n<td align=\"left\">KUBECTL_INSECURE_SKIP_TLS_VERIFY</td>\n<td align=\"left\">bool</td>\n<td align=\"left\">true</td>\n<td align=\"left\">Whether to skip tls verify</td>\n</tr>\n<tr>\n<td align=\"left\">GOTTY_OPTIONS</td>\n<td align=\"left\">string</td>\n<td align=\"left\">--port 8080 --permit-write --permit-arguments</td>\n<td align=\"left\">Gotty options, see <a href=\"https://github.com/KubeOperator/webkubectl/blob/master/gotty/GOTTY_USAGE.md#options\">more</a></td>\n</tr>\n<tr>\n<td align=\"left\">WELCOME_BANNER</td>\n<td align=\"left\">string</td>\n<td align=\"left\">Welcome to Web Kubectl, try kubectl --help.</td>\n<td align=\"left\">Welcome banner after web terminal opened</td>\n</tr>\n</tbody>\n</table></markdown-accessiblity-table>\n<h1 dir=\"auto\">Usage</h1>\n<h2 dir=\"auto\">Use index page</h2>\n<p dir=\"auto\">Open below url in web browser.</p>\n<div class=\"highlight highlight-source-shell notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"http://&lt;webkubectl-address&gt;:&lt;port&gt;\"><pre class=\"notranslate\">http://<span class=\"pl-k\">&lt;</span>webkubectl-address<span class=\"pl-k\">&gt;</span>:<span class=\"pl-k\">&lt;</span>port<span class=\"pl-k\">&gt;</span></pre></div>\n<p dir=\"auto\">In the opened page you can manage your own kubeconfig files or bearer tokens which are stored in local storage, then choose a session and click connect to use kubectl command in web terminal.</p>\n<p dir=\"auto\"><a target=\"_blank\" rel=\"noopener noreferrer nofollow\" href=\"https://raw.githubusercontent.com/KubeOperator/webkubectl/master/web-resources/index.jpg\"><img src=\"https://raw.githubusercontent.com/KubeOperator/webkubectl/master/web-resources/index.jpg\" alt=\"index\" style=\"max-width: 100%;\"></a></p>\n<p dir=\"auto\"><a target=\"_blank\" rel=\"noopener noreferrer nofollow\" href=\"https://raw.githubusercontent.com/KubeOperator/webkubectl/master/web-resources/terminal.jpg\"><img src=\"https://raw.githubusercontent.com/KubeOperator/webkubectl/master/web-resources/terminal.jpg\" alt=\"terminal\" style=\"max-width: 100%;\"></a></p>\n<h2 dir=\"auto\">Use API</h2>\n<h4 dir=\"auto\">Get token by Kubernetes API server address and bearer token</h4>\n<div class=\"highlight highlight-source-shell notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"$ curl http://&lt;webkubectl-address&gt;:&lt;port&gt;/api/kube-token -X POST -d '{&quot;name&quot;:&quot;gks-hk-dev&quot;,&quot;apiServer&quot;:&quot;https://k8s-cluster:6443&quot;,&quot;token&quot;:&quot;token-content&quot;}'\n#response\n$ {&quot;success&quot;:true,&quot;token&quot;:&quot;mkolj4hgbutfgy1thgp1&quot;,&quot;message&quot;:&quot;&quot;}\"><pre class=\"notranslate\">$ curl http://<span class=\"pl-k\">&lt;</span>webkubectl-address<span class=\"pl-k\">&gt;</span>:<span class=\"pl-k\">&lt;</span>port<span class=\"pl-k\">&gt;</span>/api/kube-token -X POST -d <span class=\"pl-s\"><span class=\"pl-pds\">'</span>{\"name\":\"gks-hk-dev\",\"apiServer\":\"https://k8s-cluster:6443\",\"token\":\"token-content\"}<span class=\"pl-pds\">'</span></span>\n<span class=\"pl-c\"><span class=\"pl-c\">#</span>response</span>\n$ {<span class=\"pl-s\"><span class=\"pl-pds\">\"</span>success<span class=\"pl-pds\">\"</span></span>:true,<span class=\"pl-s\"><span class=\"pl-pds\">\"</span>token<span class=\"pl-pds\">\"</span></span>:<span class=\"pl-s\"><span class=\"pl-pds\">\"</span>mkolj4hgbutfgy1thgp1<span class=\"pl-pds\">\"</span></span>,<span class=\"pl-s\"><span class=\"pl-pds\">\"</span>message<span class=\"pl-pds\">\"</span></span>:<span class=\"pl-s\"><span class=\"pl-pds\">\"</span><span class=\"pl-pds\">\"</span></span>}</pre></div>\n<p dir=\"auto\">Request Json <br></p>\n<markdown-accessiblity-table><table role=\"table\">\n<thead>\n<tr>\n<th align=\"left\">key</th>\n<th align=\"left\">Type</th>\n<th align=\"left\">Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td align=\"left\">name</td>\n<td align=\"left\">string</td>\n<td align=\"left\">session name</td>\n</tr>\n<tr>\n<td align=\"left\">apiServer</td>\n<td align=\"left\">string</td>\n<td align=\"left\">API server address</td>\n</tr>\n<tr>\n<td align=\"left\">token</td>\n<td align=\"left\">string</td>\n<td align=\"left\">Kubernetes bearer token</td>\n</tr>\n</tbody>\n</table></markdown-accessiblity-table>\n<p dir=\"auto\">Response Json <br></p>\n<markdown-accessiblity-table><table role=\"table\">\n<thead>\n<tr>\n<th align=\"left\">key</th>\n<th align=\"left\">Type</th>\n<th align=\"left\">Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td align=\"left\">success</td>\n<td align=\"left\">bool</td>\n<td align=\"left\">the request is proceeded successfully or not</td>\n</tr>\n<tr>\n<td align=\"left\">token</td>\n<td align=\"left\">string</td>\n<td align=\"left\">token used to open terminal</td>\n</tr>\n<tr>\n<td align=\"left\">message</td>\n<td align=\"left\">string</td>\n<td align=\"left\">error message if success is false</td>\n</tr>\n</tbody>\n</table></markdown-accessiblity-table>\n<h4 dir=\"auto\">Get token by kubeconfig file</h4>\n<div class=\"highlight highlight-source-shell notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"$ curl http://&lt;webkubectl-address&gt;:&lt;port&gt;/api/kube-config -X POST -d '{&quot;name&quot;:&quot;k8s-cluster-bj1&quot;,&quot;kubeConfig&quot;:&quot;&lt;kubeconfig file content base64 encoded&gt;&quot;}'\n#response\n$ {&quot;success&quot;:true,&quot;token&quot;:&quot;mkolj4hgbutfgy1thgp1&quot;,&quot;message&quot;:&quot;&quot;}\"><pre class=\"notranslate\">$ curl http://<span class=\"pl-k\">&lt;</span>webkubectl-address<span class=\"pl-k\">&gt;</span>:<span class=\"pl-k\">&lt;</span>port<span class=\"pl-k\">&gt;</span>/api/kube-config -X POST -d <span class=\"pl-s\"><span class=\"pl-pds\">'</span>{\"name\":\"k8s-cluster-bj1\",\"kubeConfig\":\"&lt;kubeconfig file content base64 encoded&gt;\"}<span class=\"pl-pds\">'</span></span>\n<span class=\"pl-c\"><span class=\"pl-c\">#</span>response</span>\n$ {<span class=\"pl-s\"><span class=\"pl-pds\">\"</span>success<span class=\"pl-pds\">\"</span></span>:true,<span class=\"pl-s\"><span class=\"pl-pds\">\"</span>token<span class=\"pl-pds\">\"</span></span>:<span class=\"pl-s\"><span class=\"pl-pds\">\"</span>mkolj4hgbutfgy1thgp1<span class=\"pl-pds\">\"</span></span>,<span class=\"pl-s\"><span class=\"pl-pds\">\"</span>message<span class=\"pl-pds\">\"</span></span>:<span class=\"pl-s\"><span class=\"pl-pds\">\"</span><span class=\"pl-pds\">\"</span></span>}</pre></div>\n<p dir=\"auto\">Request Json <br></p>\n<markdown-accessiblity-table><table role=\"table\">\n<thead>\n<tr>\n<th align=\"left\">key</th>\n<th align=\"left\">Type</th>\n<th align=\"left\">Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td align=\"left\">name</td>\n<td align=\"left\">string</td>\n<td align=\"left\">session name</td>\n</tr>\n<tr>\n<td align=\"left\">kubeConfig</td>\n<td align=\"left\">string</td>\n<td align=\"left\">kubeconfig file content base64 encoded</td>\n</tr>\n</tbody>\n</table></markdown-accessiblity-table>\n<p dir=\"auto\">Response Json <br></p>\n<markdown-accessiblity-table><table role=\"table\">\n<thead>\n<tr>\n<th align=\"left\">key</th>\n<th align=\"left\">Type</th>\n<th align=\"left\">Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td align=\"left\">success</td>\n<td align=\"left\">bool</td>\n<td align=\"left\">the request is proceeded successfully or not</td>\n</tr>\n<tr>\n<td align=\"left\">token</td>\n<td align=\"left\">string</td>\n<td align=\"left\">token used to open terminal</td>\n</tr>\n<tr>\n<td align=\"left\">message</td>\n<td align=\"left\">string</td>\n<td align=\"left\">error message if success is false</td>\n</tr>\n</tbody>\n</table></markdown-accessiblity-table>\n<h4 dir=\"auto\">Open web terminal with token fetched from API</h4>\n<div class=\"highlight highlight-source-shell notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"http://&lt;webkubectl-address&gt;:&lt;port&gt;/terminal/?token=&lt;token fetched from api&gt;\"><pre class=\"notranslate\">http://<span class=\"pl-k\">&lt;</span>webkubectl-address<span class=\"pl-k\">&gt;</span>:<span class=\"pl-k\">&lt;</span>port<span class=\"pl-k\">&gt;</span>/terminal/<span class=\"pl-k\">?</span>token=<span class=\"pl-k\">&lt;</span>token fetched from api<span class=\"pl-k\">&gt;</span></pre></div>\n<h1 dir=\"auto\">Security</h1>\n<ul dir=\"auto\">\n<li><strong>Token validation</strong>：The token fetched from api will be invalid immediately after it's used once, and it expires after 5 minutes if not used.</li>\n<li><strong>Authentication</strong>：By default all resources can be accessed without any authentication, to restrict anonymous access, you can enable the  basic authentication of gotty, see <a href=\"https://github.com/KubeOperator/webkubectl/issues/19\" data-hovercard-type=\"issue\" data-hovercard-url=\"/1Panel-dev/webkubectl/issues/19/hovercard\">how to</a>.</li>\n<li><strong>SSL/TLS</strong>：By default all traffic between the server and clients are NOT encrypted, we recommend you enable SSL/TLS option of gotty, see <a href=\"https://github.com/KubeOperator/webkubectl/blob/master/gotty/GOTTY_USAGE.md#options\">how to</a>. Alternatively you can deploy Web Kubectl behind a proxy and enable SSL/TLS for the proxy, please note that the proxy should support WebSocket protocol.</li>\n</ul>\n<h1 dir=\"auto\">Extensions</h1>\n<ul dir=\"auto\">\n<li><a href=\"https://github.com/topics/kubectl-plugins\">kubectl-plugins</a>: <a href=\"https://github.com/ahmetb/kubectx\">ahmetb/kubectx</a></li>\n<li><a href=\"https://github.com/ahmetb/kubectl-aliases\">ahmetb/kubectl-aliases</a></li>\n<li><a href=\"https://github.com/derailed/k9s\">derailed/k9s</a></li>\n<li><a href=\"https://github.com/helm/helm\">helm/helm</a></li>\n</ul>\n<h1 dir=\"auto\">Dependencies</h1>\n<ul dir=\"auto\">\n<li><a href=\"https://github.com/KubeOperator/webkubectl/tree/master/gotty\">webkubectl/gotty</a></li>\n<li><a href=\"https://github.com/ahmetb/kubectx\">ahmetb/kubectx</a></li>\n<li><a href=\"https://github.com/ahmetb/kubectl-aliases\">ahmetb/kubectl-aliases</a></li>\n<li><a href=\"https://github.com/junegunn/fzf\">junegunn/fzf</a></li>\n<li><a href=\"https://github.com/derailed/k9s\">derailed/k9s</a></li>\n<li><a href=\"https://github.com/helm/helm\">helm/helm</a></li>\n</ul>\n<h1 dir=\"auto\">License</h1>\n<p dir=\"auto\">Copyright (c) 2014-2024 FIT2CLOUD 飞致云<br></p>\n<p dir=\"auto\"><a href=\"https://www.fit2cloud.com\" rel=\"nofollow\">https://www.fit2cloud.com</a><br></p>\n<p dir=\"auto\">Web Kubectl is licensed under the Apache License, Version 2.0.</p>\n<hr>\n<h1 dir=\"auto\">Alternatives</h1>\n<ul dir=\"auto\">\n<li><a href=\"https://github.com/fanux/fist/tree/master/terminal\">https://github.com/fanux/fist/tree/master/terminal</a>: Another web terminal to run kubectl.</li>\n<li><a href=\"https://github.com/rancher\">https://github.com/rancher</a>: In the cluster view of Rancher, a web based kubectl can be launched, but we didn't find the source code.</li>\n<li><a href=\"https://github.com/du2016/web-terminal-in-go\">https://github.com/du2016/web-terminal-in-go</a>: Web terminal to connect containers in K8S.</li>\n<li><a href=\"https://github.com/lf1029698952/kube-webshell\">https://github.com/lf1029698952/kube-webshell</a>: Similar as above, another web terminal to connect containers in K8S.</li>\n</ul>\n<h1 dir=\"auto\">Advertisement</h1>\n<blockquote>\n<h3 dir=\"auto\"><a href=\"https://kubeoperator.io/\" rel=\"nofollow\">KubeOperator</a></h3>\n<p dir=\"auto\">KubeOperator is an open source project, a web based application enable you to deploy and manage production ready Kubernetes clusters on VMware, Openstack, virtual machines and physical machines in LAN network without internet connectivity.<br><br>\n<a href=\"https://kubeoperator.io\" rel=\"nofollow\">https://kubeoperator.io</a><br><br>\n<a href=\"https://github.com/kubeoperator/kubeoperator\">https://github.com/kubeoperator/kubeoperator</a></p>\n</blockquote>","updatedAt":"2025-05-22T01:52:58Z","upvoteCount":null,"author":{"login":"eryajf","avatarUrl":"https://avatars.githubusercontent.com/u/33259379?u=e4a4090a38ac2473aaed4ef9945233636776c6c3&v=4","url":"https://github.com/eryajf"},"category":null,"labels":{"edges":[{"node":{"name":"更多","color":"25B472"}},{"node":{"name":"1Panel-dev","color":"c8b6c0"}},{"node":{"name":"K8S-Tools","color":"2d411a"}}]},"comments":{"edges":[]}}},"pageContext":{"number":602,"previous":{"title":"a597873885/webfunny_monitor: 轻量级的前端性能监控系统，也是一款埋点系统，私有化部署，简单易用","number":601},"next":{"title":"xiusin/web-redis-manager: 一种可在 Web 或桌面上运行的现代 Redis 管理工具。Web Redis Manager 是一款基于 Web 的 Redis 数据库综合管理客户端。它提供了强大的功能和工具来简化管理和维护 Redis 实例的过程。","number":603}}},
    "staticQueryHashes": ["151096407","2861350382"]}