kop-cli 0.1.0a7__tar.gz → 0.2.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (158) hide show
  1. {kop_cli-0.1.0a7 → kop_cli-0.2.0}/PKG-INFO +35 -33
  2. {kop_cli-0.1.0a7 → kop_cli-0.2.0}/README.md +29 -29
  3. kop_cli-0.2.0/docs/faq.md +45 -0
  4. {kop_cli-0.1.0a7 → kop_cli-0.2.0}/docs/getting_started.md +30 -1
  5. kop_cli-0.2.0/docs/guide/ClusterRoleBindings.md +48 -0
  6. kop_cli-0.2.0/docs/guide/ClusterRoles.md +48 -0
  7. kop_cli-0.1.0a7/docs/tutorial.md → kop_cli-0.2.0/docs/guide/Clusters.md +5 -4
  8. kop_cli-0.2.0/docs/guide/ConfigMaps.md +48 -0
  9. kop_cli-0.2.0/docs/guide/CronJobs.md +81 -0
  10. kop_cli-0.2.0/docs/guide/DaemonSets.md +65 -0
  11. kop_cli-0.2.0/docs/guide/Deployments.md +79 -0
  12. kop_cli-0.2.0/docs/guide/EndpointSlices.md +48 -0
  13. kop_cli-0.2.0/docs/guide/Endpoints.md +48 -0
  14. kop_cli-0.2.0/docs/guide/IngressClasses.md +65 -0
  15. kop_cli-0.2.0/docs/guide/Ingresses.md +48 -0
  16. kop_cli-0.2.0/docs/guide/Jobs.md +48 -0
  17. kop_cli-0.2.0/docs/guide/Namespaces.md +48 -0
  18. kop_cli-0.2.0/docs/guide/NetworkPolicies.md +48 -0
  19. kop_cli-0.2.0/docs/guide/Nodes.md +99 -0
  20. kop_cli-0.2.0/docs/guide/PersistentVolumeClaims.md +48 -0
  21. kop_cli-0.2.0/docs/guide/PersistentVolumes.md +48 -0
  22. kop_cli-0.2.0/docs/guide/Pods.md +132 -0
  23. kop_cli-0.2.0/docs/guide/RoleBindings.md +48 -0
  24. kop_cli-0.2.0/docs/guide/Roles.md +48 -0
  25. kop_cli-0.2.0/docs/guide/Secrets.md +48 -0
  26. kop_cli-0.2.0/docs/guide/ServiceAccounts.md +48 -0
  27. kop_cli-0.2.0/docs/guide/Services.md +48 -0
  28. kop_cli-0.2.0/docs/guide/StatefulSets.md +81 -0
  29. kop_cli-0.2.0/docs/guide/StorageClasses.md +48 -0
  30. kop_cli-0.2.0/docs/guide/index.md +29 -0
  31. kop_cli-0.2.0/docs/guide/zh/pods-zh.md +120 -0
  32. kop_cli-0.2.0/docs/images/tutorial/action_workspace.png +0 -0
  33. kop_cli-0.2.0/docs/images/tutorial/cluster_area.png +0 -0
  34. kop_cli-0.2.0/docs/images/tutorial/detail_view.png +0 -0
  35. kop_cli-0.2.0/docs/images/tutorial/keys.png +0 -0
  36. kop_cli-0.2.0/docs/images/tutorial/resource_view.png +0 -0
  37. kop_cli-0.2.0/docs/images/tutorial/startup.png +0 -0
  38. kop_cli-0.2.0/docs/images/tutorial/themes.png +0 -0
  39. {kop_cli-0.1.0a7 → kop_cli-0.2.0}/docs/index.md +11 -3
  40. kop_cli-0.2.0/docs/tutorial.md +75 -0
  41. kop_cli-0.2.0/mkdocs.yml +54 -0
  42. {kop_cli-0.1.0a7 → kop_cli-0.2.0}/pyproject.toml +6 -4
  43. kop_cli-0.2.0/scripts/set_release_version.py +52 -0
  44. kop_cli-0.2.0/src/kop/__init__.py +2 -0
  45. {kop_cli-0.1.0a7 → kop_cli-0.2.0}/src/kop/controllers/handler.py +410 -27
  46. {kop_cli-0.1.0a7 → kop_cli-0.2.0}/src/kop/factory.py +122 -34
  47. {kop_cli-0.1.0a7 → kop_cli-0.2.0}/src/kop/models.py +44 -1
  48. {kop_cli-0.1.0a7 → kop_cli-0.2.0}/src/kop/provider/client.py +60 -18
  49. {kop_cli-0.1.0a7 → kop_cli-0.2.0}/src/kop/provider/forward.py +15 -1
  50. {kop_cli-0.1.0a7 → kop_cli-0.2.0}/src/kop/provider/logs.py +4 -4
  51. kop_cli-0.2.0/src/kop/provider/utils.py +7 -0
  52. {kop_cli-0.1.0a7 → kop_cli-0.2.0}/src/kop/renderers/details.py +10 -0
  53. {kop_cli-0.1.0a7 → kop_cli-0.2.0}/src/kop/renderers/fields.py +9 -1
  54. {kop_cli-0.1.0a7 → kop_cli-0.2.0}/src/kop/renderers/formatter.py +35 -0
  55. kop_cli-0.2.0/src/kop/templates/resource/clusterrolebindings.yaml +13 -0
  56. kop_cli-0.2.0/src/kop/templates/resource/clusterroles.yaml +12 -0
  57. {kop_cli-0.1.0a7 → kop_cli-0.2.0}/src/kop/templates/resource/configmaps.yaml +3 -0
  58. kop_cli-0.2.0/src/kop/templates/resource/deployments.yaml +21 -0
  59. kop_cli-0.2.0/src/kop/templates/resource/endpointslices.yaml +19 -0
  60. kop_cli-0.2.0/src/kop/templates/resource/ingressclasses.yaml +10 -0
  61. kop_cli-0.2.0/src/kop/templates/resource/ingresses.yaml +16 -0
  62. kop_cli-0.2.0/src/kop/templates/resource/namespaces.yaml +4 -0
  63. kop_cli-0.2.0/src/kop/templates/resource/networkpolicies.yaml +35 -0
  64. kop_cli-0.2.0/src/kop/templates/resource/persistentvolumeclaims.yaml +17 -0
  65. kop_cli-0.2.0/src/kop/templates/resource/persistentvolumes.yaml +18 -0
  66. kop_cli-0.2.0/src/kop/templates/resource/pods.yaml +10 -0
  67. kop_cli-0.2.0/src/kop/templates/resource/rolebindings.yaml +17 -0
  68. kop_cli-0.2.0/src/kop/templates/resource/roles.yaml +9 -0
  69. kop_cli-0.2.0/src/kop/templates/resource/secrets.yaml +23 -0
  70. kop_cli-0.2.0/src/kop/templates/resource/serviceaccounts.yaml +7 -0
  71. kop_cli-0.2.0/src/kop/templates/resource/services.yaml +11 -0
  72. kop_cli-0.2.0/src/kop/templates/resource/storageclasses.yaml +14 -0
  73. kop_cli-0.2.0/src/kop/views/ActionWorkspace.py +179 -0
  74. {kop_cli-0.1.0a7 → kop_cli-0.2.0}/src/kop/views/EditView.py +35 -9
  75. {kop_cli-0.1.0a7 → kop_cli-0.2.0}/src/kop/views/PodAttach.py +14 -4
  76. {kop_cli-0.1.0a7 → kop_cli-0.2.0}/src/kop/views/PodLog.py +13 -4
  77. {kop_cli-0.1.0a7 → kop_cli-0.2.0}/src/kop/views/PodTerminal.py +13 -3
  78. {kop_cli-0.1.0a7 → kop_cli-0.2.0}/src/kop/views/ResourceView.py +57 -19
  79. {kop_cli-0.1.0a7 → kop_cli-0.2.0}/src/kop/views/StartupView.py +1 -1
  80. {kop_cli-0.1.0a7 → kop_cli-0.2.0}/src/kop/widgets/Edit.py +24 -12
  81. {kop_cli-0.1.0a7 → kop_cli-0.2.0}/src/kop/widgets/Forward.py +2 -3
  82. {kop_cli-0.1.0a7 → kop_cli-0.2.0}/src/kop/widgets/Log.py +2 -1
  83. {kop_cli-0.1.0a7 → kop_cli-0.2.0}/src/kop/widgets/Modals.py +181 -0
  84. {kop_cli-0.1.0a7 → kop_cli-0.2.0}/src/kop/widgets/Panel.py +28 -2
  85. {kop_cli-0.1.0a7 → kop_cli-0.2.0}/src/kop/widgets/Pty.py +38 -31
  86. {kop_cli-0.1.0a7 → kop_cli-0.2.0}/src/kop/widgets/SideMenu.py +1 -0
  87. kop_cli-0.2.0/tests/test_action_workspace.py +46 -0
  88. {kop_cli-0.1.0a7 → kop_cli-0.2.0}/tests/test_edit_view.py +25 -0
  89. {kop_cli-0.1.0a7 → kop_cli-0.2.0}/tests/test_resource_view.py +180 -8
  90. kop_cli-0.1.0a7/mkdocs.yml +0 -23
  91. kop_cli-0.1.0a7/src/kop/__init__.py +0 -2
  92. kop_cli-0.1.0a7/src/kop/templates/resource/deployments.yaml +0 -19
  93. kop_cli-0.1.0a7/src/kop/templates/resource/pods.yaml +0 -9
  94. {kop_cli-0.1.0a7 → kop_cli-0.2.0}/.gitignore +0 -0
  95. {kop_cli-0.1.0a7 → kop_cli-0.2.0}/.python-version +0 -0
  96. {kop_cli-0.1.0a7 → kop_cli-0.2.0}/CODE_OF_CONDUCT.md +0 -0
  97. {kop_cli-0.1.0a7 → kop_cli-0.2.0}/LICENSE +0 -0
  98. {kop_cli-0.1.0a7 → kop_cli-0.2.0}/NOTICE +0 -0
  99. {kop_cli-0.1.0a7 → kop_cli-0.2.0}/__init__.py +0 -0
  100. {kop_cli-0.1.0a7 → kop_cli-0.2.0}/docs/guide.md +0 -0
  101. {kop_cli-0.1.0a7 → kop_cli-0.2.0}/docs/images/guide/create_resource.png +0 -0
  102. {kop_cli-0.1.0a7 → kop_cli-0.2.0}/docs/images/guide/edit_resource.png +0 -0
  103. {kop_cli-0.1.0a7 → kop_cli-0.2.0}/docs/images/guide/forward_port.png +0 -0
  104. {kop_cli-0.1.0a7 → kop_cli-0.2.0}/docs/images/guide/pod_logs.png +0 -0
  105. {kop_cli-0.1.0a7 → kop_cli-0.2.0}/docs/images/guide/resource_detail.png +0 -0
  106. {kop_cli-0.1.0a7 → kop_cli-0.2.0}/docs/images/guide/scale_resource.png +0 -0
  107. {kop_cli-0.1.0a7 → kop_cli-0.2.0}/docs/images/guide/search_kinds.png +0 -0
  108. {kop_cli-0.1.0a7 → kop_cli-0.2.0}/docs/images/guide/select_namespace.png +0 -0
  109. {kop_cli-0.1.0a7 → kop_cli-0.2.0}/docs/images/sample.png +0 -0
  110. {kop_cli-0.1.0a7 → kop_cli-0.2.0}/docs/images/tutorial/add_new_cluster.png +0 -0
  111. {kop_cli-0.1.0a7 → kop_cli-0.2.0}/docs/images/tutorial/startup_without_cluster.png +0 -0
  112. {kop_cli-0.1.0a7 → kop_cli-0.2.0}/docs/readme_ch.md +0 -0
  113. {kop_cli-0.1.0a7 → kop_cli-0.2.0}/scripts/event.py +0 -0
  114. {kop_cli-0.1.0a7 → kop_cli-0.2.0}/scripts/forward.py +0 -0
  115. {kop_cli-0.1.0a7 → kop_cli-0.2.0}/scripts/kube_client.py +0 -0
  116. {kop_cli-0.1.0a7 → kop_cli-0.2.0}/scripts/mock_resource_view_deployment.py +0 -0
  117. {kop_cli-0.1.0a7 → kop_cli-0.2.0}/scripts/mock_resource_view_pod.py +0 -0
  118. {kop_cli-0.1.0a7 → kop_cli-0.2.0}/scripts/multiple_select.py +0 -0
  119. {kop_cli-0.1.0a7 → kop_cli-0.2.0}/scripts/pixels.py +0 -0
  120. {kop_cli-0.1.0a7 → kop_cli-0.2.0}/scripts/pod_logs.py +0 -0
  121. {kop_cli-0.1.0a7 → kop_cli-0.2.0}/scripts/rich_detail.py +0 -0
  122. {kop_cli-0.1.0a7 → kop_cli-0.2.0}/scripts/view_pod_logs.py +0 -0
  123. {kop_cli-0.1.0a7 → kop_cli-0.2.0}/src/kop/app/__init__.py +0 -0
  124. {kop_cli-0.1.0a7 → kop_cli-0.2.0}/src/kop/app/main.py +0 -0
  125. {kop_cli-0.1.0a7 → kop_cli-0.2.0}/src/kop/provider/attach.py +0 -0
  126. {kop_cli-0.1.0a7 → kop_cli-0.2.0}/src/kop/provider/config.py +0 -0
  127. {kop_cli-0.1.0a7 → kop_cli-0.2.0}/src/kop/provider/events.py +0 -0
  128. {kop_cli-0.1.0a7 → kop_cli-0.2.0}/src/kop/provider/exec.py +0 -0
  129. {kop_cli-0.1.0a7 → kop_cli-0.2.0}/src/kop/registry.py +0 -0
  130. {kop_cli-0.1.0a7 → kop_cli-0.2.0}/src/kop/renderers/forms.py +0 -0
  131. {kop_cli-0.1.0a7 → kop_cli-0.2.0}/src/kop/renderers/table.py +0 -0
  132. {kop_cli-0.1.0a7 → kop_cli-0.2.0}/src/kop/templates/resource/cronjobs.yaml +0 -0
  133. {kop_cli-0.1.0a7 → kop_cli-0.2.0}/src/kop/templates/resource/daemonsets.yaml +0 -0
  134. {kop_cli-0.1.0a7 → kop_cli-0.2.0}/src/kop/templates/resource/jobs.yaml +0 -0
  135. {kop_cli-0.1.0a7 → kop_cli-0.2.0}/src/kop/templates/resource/node-shell-pod.yaml +0 -0
  136. {kop_cli-0.1.0a7 → kop_cli-0.2.0}/src/kop/templates/resource/statefulsets.yaml +0 -0
  137. {kop_cli-0.1.0a7 → kop_cli-0.2.0}/src/kop/validations.py +0 -0
  138. {kop_cli-0.1.0a7 → kop_cli-0.2.0}/src/kop/widgets/Actions.py +0 -0
  139. {kop_cli-0.1.0a7 → kop_cli-0.2.0}/src/kop/widgets/Attach.py +0 -0
  140. {kop_cli-0.1.0a7 → kop_cli-0.2.0}/src/kop/widgets/Columns.py +0 -0
  141. {kop_cli-0.1.0a7 → kop_cli-0.2.0}/src/kop/widgets/Detail.py +0 -0
  142. {kop_cli-0.1.0a7 → kop_cli-0.2.0}/src/kop/widgets/Directory.py +0 -0
  143. {kop_cli-0.1.0a7 → kop_cli-0.2.0}/src/kop/widgets/Dynamic.py +0 -0
  144. {kop_cli-0.1.0a7 → kop_cli-0.2.0}/src/kop/widgets/Events.py +0 -0
  145. {kop_cli-0.1.0a7 → kop_cli-0.2.0}/src/kop/widgets/Expandable.py +0 -0
  146. {kop_cli-0.1.0a7 → kop_cli-0.2.0}/src/kop/widgets/Focusable.py +0 -0
  147. {kop_cli-0.1.0a7 → kop_cli-0.2.0}/src/kop/widgets/MultipleSelect.py +0 -0
  148. {kop_cli-0.1.0a7 → kop_cli-0.2.0}/src/kop/widgets/RichDetail.py +0 -0
  149. {kop_cli-0.1.0a7 → kop_cli-0.2.0}/src/kop/widgets/Rules.py +0 -0
  150. {kop_cli-0.1.0a7 → kop_cli-0.2.0}/src/kop/widgets/__init__.py +0 -0
  151. {kop_cli-0.1.0a7 → kop_cli-0.2.0}/tests/test_detail_modal_renderer.py +0 -0
  152. {kop_cli-0.1.0a7 → kop_cli-0.2.0}/tests/test_event_service.py +0 -0
  153. {kop_cli-0.1.0a7 → kop_cli-0.2.0}/tests/test_log_controller.py +0 -0
  154. {kop_cli-0.1.0a7 → kop_cli-0.2.0}/tests/test_pagination_integration.py +0 -0
  155. {kop_cli-0.1.0a7 → kop_cli-0.2.0}/tests/test_pod_logs.py +0 -0
  156. {kop_cli-0.1.0a7 → kop_cli-0.2.0}/tests/test_startup_view.py +0 -0
  157. {kop_cli-0.1.0a7 → kop_cli-0.2.0}/tests/test_table_renderer.py +0 -0
  158. {kop_cli-0.1.0a7 → kop_cli-0.2.0}/uv.lock +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: kop-cli
3
- Version: 0.1.0a7
3
+ Version: 0.2.0
4
4
  Summary: Terminal-based kubernetes operation platform
5
5
  Author-email: vegaoqiang <vegaoqiang@gmail.com>
6
6
  License-Expression: Apache-2.0
@@ -26,10 +26,12 @@ Classifier: Topic :: Software Development
26
26
  Classifier: Topic :: System :: Systems Administration
27
27
  Classifier: Topic :: Terminals
28
28
  Requires-Python: >=3.9
29
- Requires-Dist: kubernetes>=33.1.0
29
+ Requires-Dist: kubernetes==33.1.0
30
30
  Requires-Dist: pyte
31
- Requires-Dist: textual>=8.1.1
32
- Requires-Dist: textual[syntax]
31
+ Requires-Dist: textual==8.2.7
32
+ Requires-Dist: tree-sitter-bash
33
+ Requires-Dist: tree-sitter-json
34
+ Requires-Dist: tree-sitter-yaml
33
35
  Provides-Extra: dev
34
36
  Requires-Dist: pytest-asyncio; extra == 'dev'
35
37
  Requires-Dist: pytest>=9.0.2; extra == 'dev'
@@ -47,23 +49,43 @@ Description-Content-Type: text/markdown
47
49
  `kop` is a terminal-based (TUI) Kubernetes operations platform. Its goal is to provide an interactive experience similar to desktop cluster management tools, but fully within the terminal command line, aiming to solve the problem of conveniently operating Kubernetes clusters when no desktop environment is available.
48
50
 
49
51
 
50
- ## Requirements
52
+ ## Installation
53
+ Here's how to install kop.
51
54
 
52
- - Python `>=3.9`
53
- - Terminal environment with TUI support (TrueColor/xterm-256color/Mouse Tracking)
55
+ ### Install from PyPI
54
56
 
55
- ## Installation
57
+ You can install kop via PyPI with the following command:
56
58
 
57
- ```bash
59
+ ```shell
58
60
  pip install kop-cli
59
61
  ```
60
62
 
61
- After installation, you can directly run:
62
-
63
- ```bash
63
+ After installation, you can run:
64
+ ```shell
64
65
  kop --version
65
66
  ```
66
67
 
68
+ ### Install from an offline binary package
69
+
70
+ If the target machine cannot access PyPI, download the offline binary package from the [GitHub Releases](https://github.com/vegaoqiang/kop/releases) page on another machine first.
71
+
72
+ 1. Open the release version you want to install.
73
+ 2. Download the binary package that matches your operating system and CPU architecture.
74
+ 3. Copy the package to the target machine.
75
+ 4. Extract the package and run the `kop` binary.
76
+
77
+ On Linux or macOS, you may need to grant execute permission before running it:
78
+
79
+ ```shell
80
+ chmod +x kop
81
+ ./kop --version
82
+ ```
83
+
84
+ On Windows, run `kop.exe` from PowerShell or Command Prompt:
85
+
86
+ ```powershell
87
+ .\kop.exe --version
88
+ ```
67
89
 
68
90
  ## Usage
69
91
 
@@ -90,30 +112,10 @@ In this mode, the file path and kubeconfig validity are verified, and after vali
90
112
 
91
113
  ## Operations and Shortcuts
92
114
  See demo video:
93
- [![Watch the demo](https://img.youtube.com/vi/sEXl9UQQxVc/maxresdefault.jpg)](https://www.youtube.com/watch?v=sEXl9UQQxVc)
115
+ [![Watch the demo](https://img.youtube.com/vi/6L1jOtYvKYg/maxresdefault.jpg)](https://www.youtube.com/watch?v=6L1jOtYvKYg)
94
116
 
95
117
  Please refer to the [Documentation](https://vegaoqiang.github.io/kop/) for more detailed usage instructions.
96
118
 
97
- ### Startup Page (Cluster List)
98
-
99
- - `a`: Add cluster
100
- - `c` / `Enter`: Connect to cluster
101
- - `d`: Delete cluster
102
- - `e`: Edit cluster
103
- - `s`: Sync local kubeconfig
104
- - Arrow keys `↑↓←→`: Move between cluster cards
105
-
106
- ### Resource Page
107
-
108
- - Select resource type from the left-side menu
109
- - `]`: Quickly focus the namespace selector
110
- - `/`: Search (menu or resources)
111
- - `c`: Create resource (when supported by the current resource type)
112
- - `Esc`: Return to cluster home page
113
-
114
- Tip: Available actions differ by resource in the details/operation panel. The bottom of the interface shows available key hints.
115
-
116
-
117
119
  ## FAQ
118
120
 
119
121
  ### Mouse click not working
@@ -9,23 +9,43 @@
9
9
  `kop` is a terminal-based (TUI) Kubernetes operations platform. Its goal is to provide an interactive experience similar to desktop cluster management tools, but fully within the terminal command line, aiming to solve the problem of conveniently operating Kubernetes clusters when no desktop environment is available.
10
10
 
11
11
 
12
- ## Requirements
12
+ ## Installation
13
+ Here's how to install kop.
13
14
 
14
- - Python `>=3.9`
15
- - Terminal environment with TUI support (TrueColor/xterm-256color/Mouse Tracking)
15
+ ### Install from PyPI
16
16
 
17
- ## Installation
17
+ You can install kop via PyPI with the following command:
18
18
 
19
- ```bash
19
+ ```shell
20
20
  pip install kop-cli
21
21
  ```
22
22
 
23
- After installation, you can directly run:
24
-
25
- ```bash
23
+ After installation, you can run:
24
+ ```shell
26
25
  kop --version
27
26
  ```
28
27
 
28
+ ### Install from an offline binary package
29
+
30
+ If the target machine cannot access PyPI, download the offline binary package from the [GitHub Releases](https://github.com/vegaoqiang/kop/releases) page on another machine first.
31
+
32
+ 1. Open the release version you want to install.
33
+ 2. Download the binary package that matches your operating system and CPU architecture.
34
+ 3. Copy the package to the target machine.
35
+ 4. Extract the package and run the `kop` binary.
36
+
37
+ On Linux or macOS, you may need to grant execute permission before running it:
38
+
39
+ ```shell
40
+ chmod +x kop
41
+ ./kop --version
42
+ ```
43
+
44
+ On Windows, run `kop.exe` from PowerShell or Command Prompt:
45
+
46
+ ```powershell
47
+ .\kop.exe --version
48
+ ```
29
49
 
30
50
  ## Usage
31
51
 
@@ -52,30 +72,10 @@ In this mode, the file path and kubeconfig validity are verified, and after vali
52
72
 
53
73
  ## Operations and Shortcuts
54
74
  See demo video:
55
- [![Watch the demo](https://img.youtube.com/vi/sEXl9UQQxVc/maxresdefault.jpg)](https://www.youtube.com/watch?v=sEXl9UQQxVc)
75
+ [![Watch the demo](https://img.youtube.com/vi/6L1jOtYvKYg/maxresdefault.jpg)](https://www.youtube.com/watch?v=6L1jOtYvKYg)
56
76
 
57
77
  Please refer to the [Documentation](https://vegaoqiang.github.io/kop/) for more detailed usage instructions.
58
78
 
59
- ### Startup Page (Cluster List)
60
-
61
- - `a`: Add cluster
62
- - `c` / `Enter`: Connect to cluster
63
- - `d`: Delete cluster
64
- - `e`: Edit cluster
65
- - `s`: Sync local kubeconfig
66
- - Arrow keys `↑↓←→`: Move between cluster cards
67
-
68
- ### Resource Page
69
-
70
- - Select resource type from the left-side menu
71
- - `]`: Quickly focus the namespace selector
72
- - `/`: Search (menu or resources)
73
- - `c`: Create resource (when supported by the current resource type)
74
- - `Esc`: Return to cluster home page
75
-
76
- Tip: Available actions differ by resource in the details/operation panel. The bottom of the interface shows available key hints.
77
-
78
-
79
79
  ## FAQ
80
80
 
81
81
  ### Mouse click not working
@@ -0,0 +1,45 @@
1
+ ---
2
+ hide:
3
+ - navigation
4
+ ---
5
+
6
+ # FAQ
7
+
8
+ ## Mouse click not working
9
+
10
+ When using iTerm2 on macOS to SSH into a remote host and run kop, mouse clicks may not work. This happens because in Linux environments, most command-line programs rely on the `$TERM` variable to determine terminal capabilities (such as colors and bold text). A common value is `xterm-256color`. While `xterm-256color` is a general standard, it does not cover all extensions of modern terminals (such as advanced mouse protocols or synchronized updates). `Textual` is a very advanced TUI (text user interface) framework. To provide the best experience, it tries to detect which terminal is actually running. For `iTerm2`, it supports many non-standard advanced features. Textual has internal optimization logic: when it detects `TERM_PROGRAM=iTerm.app`, it switches to an interaction mode optimized for `iTerm2`. If Textual does not see `TERM_PROGRAM=iTerm.app`, it may avoid enabling some advanced interaction features, or due to configuration conflicts, it may fail to properly fall back to a generic mouse mode.
11
+
12
+ Solutions:
13
+
14
+ 1. Manually run `export TERM_PROGRAM=iTerm.app` on the remote host. After restarting `kop`, mouse clicks should work normally.
15
+ 2. Update local SSH config on macOS: `~/.ssh/config`, add:
16
+
17
+ ```shell
18
+ Host *
19
+ SendEnv TERM_PROGRAM
20
+ ```
21
+
22
+ Update remote host `sshd` config: `/etc/ssh/sshd_config`, add:
23
+
24
+ ```shell
25
+ AcceptEnv TERM_PROGRAM
26
+ ```
27
+
28
+ After restarting the `sshd` service, disconnect and reconnect to the remote host, then run `kop` again. Mouse clicking should be restored.
29
+
30
+
31
+ ## Why doesn't kop look good on macOS?
32
+ kop is built with Textual for terminal UI. Please refer to the Textual FAQ section about display issues in the default macOS terminal for fixes: https://textual.textualize.io/FAQ/#why-doesnt-textual-look-good-on-macos
33
+
34
+ ## Abnormal display on Linux console
35
+
36
+ You may use kop on Linux console (a monitor connected to a server via a VGA cable) and find kop UI rendering issues or even crashes. This is because Linux kernel built-in virtual terminals (`tty1`~`tty6`):
37
+
38
+ * ❌ Do not support True Color (24-bit)
39
+ * ❌ Do not support 256 colors
40
+ * ✅ Only support 16 colors (sometimes even only 8)
41
+ * ✅ Rendering is controlled by the kernel (not by a terminal emulator)
42
+
43
+ There is currently no good solution. If you must use kop on a physical terminal, one compromise is `kmscon`.
44
+
45
+ Kmscon is a simple terminal emulator based on linux kernel mode setting (KMS). It is an attempt to replace the in-kernel VT implementation with a userspace console. See https://github.com/kmscon/kmscon
@@ -1,3 +1,8 @@
1
+ ---
2
+ hide:
3
+ - navigation
4
+ ---
5
+
1
6
  # Getting started
2
7
 
3
8
  ## Requirements
@@ -23,7 +28,9 @@ The new [Windows Terminal](https://apps.microsoft.com/store/detail/windows-termi
23
28
  ## Installation
24
29
  Here's how to install kop.
25
30
 
26
- You can install kop via PyPI, with the following command:
31
+ ### Install from PyPI
32
+
33
+ You can install kop via PyPI with the following command:
27
34
 
28
35
  ```shell
29
36
  pip install kop-cli
@@ -34,6 +41,28 @@ After installation, you can run:
34
41
  kop --version
35
42
  ```
36
43
 
44
+ ### Install from an offline binary package
45
+
46
+ If the target machine cannot access PyPI, download the offline binary package from the [GitHub Releases](https://github.com/vegaoqiang/kop/releases) page on another machine first.
47
+
48
+ 1. Open the release version you want to install.
49
+ 2. Download the binary package that matches your operating system and CPU architecture.
50
+ 3. Copy the package to the target machine.
51
+ 4. Extract the package and run the `kop` binary.
52
+
53
+ On Linux or macOS, you may need to grant execute permission before running it:
54
+
55
+ ```shell
56
+ chmod +x kop
57
+ ./kop --version
58
+ ```
59
+
60
+ On Windows, run `kop.exe` from PowerShell or Command Prompt:
61
+
62
+ ```powershell
63
+ .\kop.exe --version
64
+ ```
65
+
37
66
  ## Usage
38
67
 
39
68
  ### 1. Startup
@@ -0,0 +1,48 @@
1
+ # Cluster Role Bindings
2
+ This document explains how to operate Cluster Role Bindings through kop.
3
+
4
+ ## Binding keys
5
+ Available shortcuts for ClusterRoleBinding-related operations are shown in the Footer area at the bottom of the page. Available actions may vary slightly by context; always use the real-time prompts in the Footer as the source of truth.
6
+
7
+ | Key | Action |
8
+ | --- | --- |
9
+ | `d` | Delete ClusterRoleBinding |
10
+ | `e` | Edit ClusterRoleBinding |
11
+ | `n` | Next Page |
12
+ | `p` | Previous Page |
13
+
14
+ > Some `keys` are shown in the Footer only under specific conditions. For example, `n` and `p` are displayed only when the total number of resources exceeds the current screen height.
15
+
16
+ ## Actions
17
+ The following sections describe what each action does and how to use it.
18
+
19
+ ### Edit ClusterRoleBinding
20
+ Edits the ClusterRoleBinding YAML configuration and submits changes.
21
+
22
+ **Steps:**
23
+
24
+ 1. In the left resource navigator, go to `Cluster Role Bindings`.
25
+ 2. Select the target ClusterRoleBinding in the list.
26
+ 3. Press `e` to open the YAML editor view.
27
+ 4. Modify the content and save to submit.
28
+
29
+ **Notes:**
30
+
31
+ - Invalid or immutable field changes are rejected by the Kubernetes API.
32
+ - If an update fails, adjust based on the error message and retry.
33
+ - `Edit ClusterRoleBinding` opens in the `Action Workspace`. See [Action Workspace](../tutorial.md#action-workspace) for details.
34
+
35
+ ### Delete ClusterRoleBinding
36
+ Deletes the currently selected ClusterRoleBinding resource.
37
+
38
+ **Steps:**
39
+
40
+ 1. Select the target ClusterRoleBinding in the `Cluster Role Bindings` list.
41
+ 2. Press `d` to trigger deletion.
42
+ 3. Confirm the action in the prompt.
43
+
44
+ **Notes:**
45
+
46
+ - Deletion removes the selected ClusterRoleBinding object from the cluster.
47
+ - Check dependent workloads before deletion to avoid service impact.
48
+
@@ -0,0 +1,48 @@
1
+ # Cluster Roles
2
+ This document explains how to operate Cluster Roles through kop.
3
+
4
+ ## Binding keys
5
+ Available shortcuts for ClusterRole-related operations are shown in the Footer area at the bottom of the page. Available actions may vary slightly by context; always use the real-time prompts in the Footer as the source of truth.
6
+
7
+ | Key | Action |
8
+ | --- | --- |
9
+ | `d` | Delete ClusterRole |
10
+ | `e` | Edit ClusterRole |
11
+ | `n` | Next Page |
12
+ | `p` | Previous Page |
13
+
14
+ > Some `keys` are shown in the Footer only under specific conditions. For example, `n` and `p` are displayed only when the total number of resources exceeds the current screen height.
15
+
16
+ ## Actions
17
+ The following sections describe what each action does and how to use it.
18
+
19
+ ### Edit ClusterRole
20
+ Edits the ClusterRole YAML configuration and submits changes.
21
+
22
+ **Steps:**
23
+
24
+ 1. In the left resource navigator, go to `Cluster Roles`.
25
+ 2. Select the target ClusterRole in the list.
26
+ 3. Press `e` to open the YAML editor view.
27
+ 4. Modify the content and save to submit.
28
+
29
+ **Notes:**
30
+
31
+ - Invalid or immutable field changes are rejected by the Kubernetes API.
32
+ - If an update fails, adjust based on the error message and retry.
33
+ - `Edit ClusterRole` opens in the `Action Workspace`. See [Action Workspace](../tutorial.md#action-workspace) for details.
34
+
35
+ ### Delete ClusterRole
36
+ Deletes the currently selected ClusterRole resource.
37
+
38
+ **Steps:**
39
+
40
+ 1. Select the target ClusterRole in the `Cluster Roles` list.
41
+ 2. Press `d` to trigger deletion.
42
+ 3. Confirm the action in the prompt.
43
+
44
+ **Notes:**
45
+
46
+ - Deletion removes the selected ClusterRole object from the cluster.
47
+ - Check dependent workloads before deletion to avoid service impact.
48
+
@@ -1,6 +1,7 @@
1
- # Tutorial
1
+ # Clusters
2
+ kop support manage multiple kubernetes clusters, the documents show how to add or sync kubernetes cluster to kop
2
3
 
3
- ## Add Kubernetes CLuster
4
+ ## Add Kubernetes Cluster
4
5
 
5
6
  After starting kop, it reads the ~/.kube/config file by default.
6
7
 
@@ -9,11 +10,11 @@ After starting kop, it reads the ~/.kube/config file by default.
9
10
 
10
11
  If the host running kop does not have Kubernetes (connecting to a remote Kubernetes cluster over the network). After starting kop, you will see relevant prompts.
11
12
 
12
- ![startup_without_cluster](images/tutorial/startup_without_cluster.png)
13
+ ![startup_without_cluster](../images/tutorial/startup_without_cluster.png)
13
14
 
14
15
  At this point, you can open the `Add Cluster` view by clicking the `[Add]` button with the mouse or pressing `a` on the keyboard.
15
16
 
16
- ![add_new_cluster](images/tutorial/add_new_cluster.png)
17
+ ![add_new_cluster](../images/tutorial/add_new_cluster.png)
17
18
 
18
19
  Then paste the contents of your kubeconfig file into the `Paste Your Cluster Config` area. Then paste the contents of your kubeconfig file into the content area, and then click the `[Save]` button or press `'ctrl+s'` to save.
19
20
 
@@ -0,0 +1,48 @@
1
+ # ConfigMaps
2
+ This document explains how to operate ConfigMaps through kop.
3
+
4
+ ## Binding keys
5
+ Available shortcuts for ConfigMap-related operations are shown in the Footer area at the bottom of the page. Available actions may vary slightly by context; always use the real-time prompts in the Footer as the source of truth.
6
+
7
+ | Key | Action |
8
+ | --- | --- |
9
+ | `d` | Delete ConfigMap |
10
+ | `e` | Edit ConfigMap |
11
+ | `n` | Next Page |
12
+ | `p` | Previous Page |
13
+
14
+ > Some `keys` are shown in the Footer only under specific conditions. For example, `n` and `p` are displayed only when the total number of resources exceeds the current screen height.
15
+
16
+ ## Actions
17
+ The following sections describe what each action does and how to use it.
18
+
19
+ ### Edit ConfigMap
20
+ Edits the ConfigMap YAML configuration and submits changes.
21
+
22
+ **Steps:**
23
+
24
+ 1. In the left resource navigator, go to `ConfigMaps`.
25
+ 2. Select the target ConfigMap in the list.
26
+ 3. Press `e` to open the YAML editor view.
27
+ 4. Modify the content and save to submit.
28
+
29
+ **Notes:**
30
+
31
+ - Invalid or immutable field changes are rejected by the Kubernetes API.
32
+ - If an update fails, adjust based on the error message and retry.
33
+ - `Edit ConfigMap` opens in the `Action Workspace`. See [Action Workspace](../tutorial.md#action-workspace) for details.
34
+
35
+ ### Delete ConfigMap
36
+ Deletes the currently selected ConfigMap resource.
37
+
38
+ **Steps:**
39
+
40
+ 1. Select the target ConfigMap in the `ConfigMaps` list.
41
+ 2. Press `d` to trigger deletion.
42
+ 3. Confirm the action in the prompt.
43
+
44
+ **Notes:**
45
+
46
+ - Deletion removes the selected ConfigMap object from the cluster.
47
+ - Check dependent workloads before deletion to avoid service impact.
48
+
@@ -0,0 +1,81 @@
1
+ # CronJobs
2
+ This document explains how to operate CronJobs through kop.
3
+
4
+ ## Binding keys
5
+ Available shortcuts for CronJob-related operations are shown in the Footer area at the bottom of the page. Available actions may vary slightly by context; always use the real-time prompts in the Footer as the source of truth.
6
+
7
+ | Key | Action |
8
+ | --- | --- |
9
+ | `d` | Delete CronJob |
10
+ | `e` | Edit CronJob |
11
+ | `s` | Suspend/Resume CronJob |
12
+ | `t` | Trigger CronJob |
13
+ | `n` | Next Page |
14
+ | `p` | Previous Page |
15
+
16
+ > Some `keys` are shown in the Footer only under specific conditions. For example, `n` and `p` are displayed only when the total number of resources exceeds the current screen height.
17
+
18
+ ## Actions
19
+ The following sections describe what each action does and how to use it.
20
+
21
+ ### Trigger CronJob
22
+ Creates a one-off Job immediately from the selected CronJob.
23
+
24
+ **Steps:**
25
+
26
+ 1. In the left resource navigator, go to `CronJobs`.
27
+ 2. Select the target CronJob in the list.
28
+ 3. Press `t` to trigger a one-off run.
29
+ 4. Confirm the action in the prompt.
30
+ 5. Verify the new Job appears in related resources.
31
+
32
+ **Notes:**
33
+
34
+ - Trigger does not change the regular schedule.
35
+ - Use this action to validate the job template on demand.
36
+
37
+ ### Suspend/Resume CronJob
38
+ Suspends or resumes scheduling for the selected CronJob.
39
+
40
+ **Steps:**
41
+
42
+ 1. Select the target CronJob in the `CronJobs` list.
43
+ 2. Press `s` to toggle scheduling state.
44
+ 3. Confirm the action in the prompt.
45
+ 4. Check the updated state in the resource table or detail view.
46
+
47
+ **Notes:**
48
+
49
+ - Suspend stops future schedule triggers but does not cancel already started Jobs.
50
+ - Resume re-enables schedule-based execution.
51
+
52
+ ### Edit CronJob
53
+ Edits the CronJob YAML configuration and submits changes.
54
+
55
+ **Steps:**
56
+
57
+ 1. In the left resource navigator, go to `CronJobs`.
58
+ 2. Select the target CronJob in the list.
59
+ 3. Press `e` to open the YAML editor view.
60
+ 4. Modify the content and save to submit.
61
+
62
+ **Notes:**
63
+
64
+ - Invalid or immutable field changes are rejected by the Kubernetes API.
65
+ - If an update fails, adjust based on the error message and retry.
66
+ - `Edit CronJob` opens in the `Action Workspace`. See [Action Workspace](../tutorial.md#action-workspace) for details.
67
+
68
+ ### Delete CronJob
69
+ Deletes the currently selected CronJob resource.
70
+
71
+ **Steps:**
72
+
73
+ 1. Select the target CronJob in the `CronJobs` list.
74
+ 2. Press `d` to trigger deletion.
75
+ 3. Confirm the action in the prompt.
76
+
77
+ **Notes:**
78
+
79
+ - Deletion removes the selected CronJob object from the cluster.
80
+ - Check dependent workloads before deletion to avoid service impact.
81
+
@@ -0,0 +1,65 @@
1
+ # DaemonSets
2
+ This document explains how to operate DaemonSets through kop.
3
+
4
+ ## Binding keys
5
+ Available shortcuts for DaemonSet-related operations are shown in the Footer area at the bottom of the page. Available actions may vary slightly by context; always use the real-time prompts in the Footer as the source of truth.
6
+
7
+ | Key | Action |
8
+ | --- | --- |
9
+ | `d` | Delete DaemonSet |
10
+ | `e` | Edit DaemonSet |
11
+ | `r` | Restart DaemonSet |
12
+ | `n` | Next Page |
13
+ | `p` | Previous Page |
14
+
15
+ > Some `keys` are shown in the Footer only under specific conditions. For example, `n` and `p` are displayed only when the total number of resources exceeds the current screen height.
16
+
17
+ ## Actions
18
+ The following sections describe what each action does and how to use it.
19
+
20
+ ### Restart DaemonSet
21
+ Triggers a rolling restart for the selected DaemonSet.
22
+
23
+ **Steps:**
24
+
25
+ 1. In the left resource navigator, go to `DaemonSets`.
26
+ 2. Select the target DaemonSet in the list.
27
+ 3. Press `r` to trigger restart.
28
+ 4. Confirm the action in the prompt.
29
+ 5. Monitor Pod replacement progress on each node.
30
+
31
+ **Notes:**
32
+
33
+ - Restart updates the Pod template restart annotation and performs a rolling replacement.
34
+ - During rolling restart, old and new Pods may coexist briefly.
35
+
36
+ ### Edit DaemonSet
37
+ Edits the DaemonSet YAML configuration and submits changes.
38
+
39
+ **Steps:**
40
+
41
+ 1. In the left resource navigator, go to `DaemonSets`.
42
+ 2. Select the target DaemonSet in the list.
43
+ 3. Press `e` to open the YAML editor view.
44
+ 4. Modify the content and save to submit.
45
+
46
+ **Notes:**
47
+
48
+ - Invalid or immutable field changes are rejected by the Kubernetes API.
49
+ - If an update fails, adjust based on the error message and retry.
50
+ - `Edit DaemonSet` opens in the `Action Workspace`. See [Action Workspace](../tutorial.md#action-workspace) for details.
51
+
52
+ ### Delete DaemonSet
53
+ Deletes the currently selected DaemonSet resource.
54
+
55
+ **Steps:**
56
+
57
+ 1. Select the target DaemonSet in the `DaemonSets` list.
58
+ 2. Press `d` to trigger deletion.
59
+ 3. Confirm the action in the prompt.
60
+
61
+ **Notes:**
62
+
63
+ - Deletion removes the selected DaemonSet object from the cluster.
64
+ - Check dependent workloads before deletion to avoid service impact.
65
+
@@ -0,0 +1,79 @@
1
+ # Deployments
2
+ This document explains how to operate Deployments through kop.
3
+
4
+ ## Binding keys
5
+ Available shortcuts for Deployment-related operations are shown in the Footer area at the bottom of the page. Available actions may vary slightly by context; always use the real-time prompts in the Footer as the source of truth.
6
+
7
+ | Key | Action |
8
+ | --- | --- |
9
+ | `d` | Delete Deployment |
10
+ | `e` | Edit Deployment |
11
+ | `n` | Next Page |
12
+ | `p` | Previous Page |
13
+ | `r` | Restart Deployment |
14
+ | `s` | Scale Deployment |
15
+
16
+ > Some `keys` are shown in the Footer only under specific conditions. For example, `n` and `p` are displayed only when the total number of resources exceeds the current screen height.
17
+
18
+ ## Actions
19
+ The following sections describe what each action does and how to use it.
20
+
21
+ ### Scale Deployment
22
+ Scales the number of desired replicas for the selected Deployment.
23
+
24
+ **Steps:**
25
+
26
+ 1. In the left resource navigator, go to `Deployments`.
27
+ 2. Select the target Deployment in the list.
28
+ 3. Press `s` to open the scale dialog.
29
+ 4. Enter the target replica count and confirm.
30
+ 5. Monitor Pod rollout status until the desired state is reached.
31
+
32
+ **Notes:**
33
+
34
+ - Scaling up creates more Pods; scaling down removes Pods.
35
+ - Make sure cluster capacity and workload requirements match the target replica count.
36
+
37
+ ### Restart Deployment
38
+ Triggers a rolling restart for the selected Deployment.
39
+
40
+ **Steps:**
41
+
42
+ 1. Select the target Deployment in the `Deployments` list.
43
+ 2. Press `r` to trigger restart.
44
+ 3. Confirm the action in the prompt.
45
+ 4. Monitor rollout progress and Pod readiness.
46
+
47
+ **Notes:**
48
+
49
+ - Restart updates the Pod template restart annotation and performs a rolling replacement.
50
+ - During rolling restart, old and new Pods may coexist briefly.
51
+
52
+ ### Edit Deployment
53
+ Edits the Deployment YAML configuration and submits changes.
54
+
55
+ **Steps:**
56
+
57
+ 1. Select the target Deployment.
58
+ 2. Press `e` to open the YAML editor view.
59
+ 3. Modify the content and save to submit.
60
+
61
+ **Notes:**
62
+
63
+ - Invalid or immutable field changes are rejected by the Kubernetes API.
64
+ - If an update fails, adjust based on the error message and retry.
65
+ - `Edit Deployment` opens in the `Action Workspace`. See [Action Workspace](../tutorial.md#action-workspace) for details.
66
+
67
+ ### Delete Deployment
68
+ Deletes the currently selected Deployment resource.
69
+
70
+ **Steps:**
71
+
72
+ 1. Select the target Deployment in the `Deployments` list.
73
+ 2. Press `d` to trigger deletion.
74
+ 3. Confirm the action in the prompt.
75
+
76
+ **Notes:**
77
+
78
+ - Deleting a Deployment stops controller management for its Pods.
79
+ - ReplicaSet and Pod cleanup behavior depends on the deletion policy and current cluster state.