Compare commits

...

1554 Commits

Author SHA1 Message Date
dongjiang
12af25f3f7 [release 3.2] cherry pick #6223 to release 3.2 (#6234)
cherry pick 6223 to release 3.2

Signed-off-by: dongjiang1989 <dongjiang1989@126.com>
2024-10-23 17:00:48 +08:00
KubeSphere CI Bot
5c1f73134a Merge pull request #4473 from ks-ci-bot/cherry-pick-4471-to-release-3.2
[release-3.2] fix groupbinding controller unittest
2021-11-29 16:03:52 +08:00
hongming
20cb04aedf fix groupbinding controller unittest 2021-11-25 06:41:54 +00:00
KubeSphere CI Bot
e029adfb84 Merge pull request #4458 from ks-ci-bot/cherry-pick-4457-to-release-3.2
[release-3.2] Namespace should not be filterd for Cluster Gateway
2021-11-18 20:13:13 +08:00
Roland.Ma
7a8712bda1 Namespace should not be filterd for Cluster Gateway
Signed-off-by: Roland.Ma <rolandma@kubesphere.io>
2021-11-18 11:54:42 +00:00
KubeSphere CI Bot
f1a99bd1d8 Merge pull request #4439 from ks-ci-bot/cherry-pick-4436-to-release-3.2
[release-3.2] fix: users can't login with ldap provider
2021-11-15 14:21:11 +08:00
KubeSphere CI Bot
a8b93b9abf Merge pull request #4438 from ks-ci-bot/cherry-pick-4434-to-release-3.2
[release-3.2] Support query pods by status
2021-11-12 10:45:34 +08:00
Roland.Ma
0efb3c671f fixs users can't login with ldap provider
Signed-off-by: Roland.Ma <rolandma@kubesphere.io>
2021-11-12 01:59:41 +00:00
Xinzhao Xu
a8b79e85b6 Support query pods by status 2021-11-11 09:17:44 +00:00
KubeSphere CI Bot
579d45465a Merge pull request #4422 from ks-ci-bot/cherry-pick-4418-to-release-3.2
[release-3.2] Allows to override nginx ingress controller image in kubesphere config
2021-11-08 16:14:30 +08:00
Roland.Ma
fab6336e91 allow to override docker image in kubesphere config
Signed-off-by: Roland.Ma <rolandma@kubesphere.io>
2021-11-05 06:55:05 +00:00
KubeSphere CI Bot
18527f895e Merge pull request #4385 from liuan1986/master
if error is not NULL,Maybe return error would be better.
2021-10-22 12:30:11 +08:00
KubeSphere CI Bot
8ab489c51b Merge pull request #4377 from 123liubao/hotfix/fix-4367
Refactor the Chinese version of README
2021-10-22 12:20:11 +08:00
KubeSphere CI Bot
5a855a8306 Merge pull request #4387 from RolandMa1986/fix-e2e
fix e2e auth error
2021-10-22 11:19:11 +08:00
123liubao
d865305983 Modify the document 2021-10-22 10:10:18 +08:00
Roland.Ma
64a4b65d66 fix e2e auth error
Signed-off-by: Roland.Ma <rolandma@kubesphere.io>
2021-10-22 01:27:17 +00:00
KubeSphere CI Bot
d341e55b8b Merge pull request #4382 from wansir/master
Fix failed to delete workspace in multi-cluster enviroment
2021-10-21 17:40:02 +08:00
liuan
8657cd31b2 if error is not NULL,return error 2021-10-21 17:23:42 +08:00
hongming
20163dd795 Fix no kind FederatedGroupBinding is registered 2021-10-21 11:49:47 +08:00
123liubao
3a50e1c244 Optimized code 2021-10-20 15:58:29 +08:00
123liubao
738a451433 URL modified to Chinese 2021-10-20 15:29:15 +08:00
KubeSphere CI Bot
744233b3a3 Merge pull request #4374 from iawia002/bump-controller-runtime-version-0.9
Bump controller-runtime version to the latest of release-0.9
2021-10-20 14:55:03 +08:00
iawia002
dae7d92dab Bump controller-runtime version to the latest of release-0.9 2021-10-20 10:11:21 +08:00
iawia002
2eeb7262c6 update vendor 2021-10-20 10:09:48 +08:00
123liubao
840a3d25f8 fix:Refactor the Chinese version of README 2021-10-19 23:17:31 +08:00
KubeSphere CI Bot
9720aa9806 Merge pull request #4365 from wansir/fix-4364
Fix namespace cannot be deleted after workspace has been deleted
2021-10-18 09:16:02 +08:00
hongming
0e3159e1e8 Fix namespace cannot be deleted after workspace has been deleted 2021-10-15 15:12:28 +08:00
zryfish
edcd8e1449 fix gitMajor and gitMinor missing in version api (#4361)
* fix version missing
* suppress shellcheck warnings
2021-10-13 17:40:54 +08:00
KubeSphere CI Bot
98b9009a58 Merge pull request #4351 from wansir/fix-regression-bug
Fix NPE in user_controller
2021-10-13 15:04:06 +08:00
KubeSphere CI Bot
e82236366d Merge pull request #4356 from RolandMa1986/feat-gateway-log-export
Supports to export gateway logs
2021-10-13 15:04:00 +08:00
hongming
776593001e Fix NPE in user_controller 2021-10-13 11:02:43 +08:00
Roland.Ma
6dc99e181e supports to export gateway logs
Signed-off-by: Roland.Ma <rolandma@kubesphere.io>
2021-10-12 08:15:58 +00:00
KubeSphere CI Bot
735f0c7731 Merge pull request #4337 from RolandMa1986/fix-4333
Fix: support fuzzy query with ObjectMeta for gateway query api
2021-10-11 13:27:59 +08:00
KubeSphere CI Bot
2af76aff79 Merge pull request #4325 from wansir/fix-regression-bug
Fix failed to delete rolebindings
2021-10-11 09:43:59 +08:00
KubeSphere CI Bot
7a0dafd59d Merge pull request #4331 from wansir/fix-remote-ip
Fix incorrect source IP
2021-10-10 22:09:59 +08:00
KubeSphere CI Bot
813c341574 Merge pull request #4342 from RolandMa1986/fix-metric
Use regex query instead of equal in promethues query
2021-10-09 19:40:56 +08:00
Roland.Ma
59e03a0c19 append status to all gateways
Signed-off-by: Roland.Ma <rolandma@kubesphere.io>
2021-10-09 10:01:49 +00:00
Roland.Ma
2d066f86d4 use regex query instead of equal
Signed-off-by: Roland.Ma <rolandma@kubesphere.io>
2021-10-09 08:35:09 +00:00
KubeSphere CI Bot
b94c7966d1 Merge pull request #4336 from LinuxSuRen/fix-buildx-err
Fix the docker build error due to missing buildx setting
2021-10-09 09:39:55 +08:00
Roland.Ma
6b3af2d19d fuzzy query with defautl ObjectMeta
Signed-off-by: Roland.Ma <rolandma@kubesphere.io>
2021-10-09 01:13:44 +00:00
rick
d8fc168948 Fix the docker build error due to missing buildx setting
Signed-off-by: rick <1450685+LinuxSuRen@users.noreply.github.com>
2021-10-08 23:06:59 +08:00
hongming
1641b9920b Fix incorrect source IP 2021-10-08 16:19:27 +08:00
hongming
1956f83af0 Fix failed to delete rolebindings 2021-10-08 11:17:02 +08:00
KubeSphere CI Bot
22a8bebcae Merge pull request #4321 from mazak-ui/master
Updating readme CNCF deprecated links
2021-10-07 16:57:54 +08:00
mazak-ui
d0ae0f210f Update CNCF Landscape URL
Updating the deprecated link, as it is currently redirecting to the new one and an orange banner appears.
2021-10-03 09:11:37 -05:00
mazak-ui
8ef0605858 Update CNCF Landscape URL
Updating the deprecated link, as it is currently redirecting to the new one and an orange banner appears.
2021-10-03 09:10:36 -05:00
zryfish
6f434252df fix missing constants (#4308) 2021-09-29 14:25:01 +08:00
zryfish
185ab75053 update vendor directory (#4305) 2021-09-29 13:50:34 +08:00
zryfish
84f66199ed add kind-e2e to Makefile (#4304) 2021-09-29 12:11:29 +08:00
KubeSphere CI Bot
22ae83a431 Merge pull request #4250 from xyz-li/app_store
Dynamically load helm app into app-store
2021-09-29 10:14:54 +08:00
LiHui
09fc2867c4 remove mathutil.Max 2021-09-29 09:35:18 +08:00
KubeSphere CI Bot
60af01c10d Merge pull request #4302 from pixiake/master
Add scheduling parameters for ks-core chart
2021-09-28 19:45:54 +08:00
pixiake
1bd8ede93d Add scheduling parameters for ks-core chart
Signed-off-by: pixiake <guofeng@yunify.com>
2021-09-28 18:18:43 +08:00
KubeSphere CI Bot
1cf3493e8f Merge pull request #4290 from f10atin9/capability
update capability_controller.go, make sure that annotations is genera…
2021-09-28 18:13:55 +08:00
zryfish
e83b77dc3a fix workflow syntax error (#4301) 2021-09-28 18:12:11 +08:00
zryfish
ef398dd56f simply github workflow since we migrate most of CI steps to prow (#4299) 2021-09-28 17:54:07 +08:00
f10atin9
60cd523a0f [fix] fix update logic
Now controller will judge whether the storageClassClient need to send the update request.

Signed-off-by: f10atin9 <f10atin9@kubesphere.io>
2021-09-28 16:20:10 +08:00
KubeSphere CI Bot
09ef175e90 Merge pull request #4286 from RolandMa1986/feat-gateway-logging
Search gateway logs with ES
2021-09-28 15:25:55 +08:00
f10atin9
be5421f00b update capability_controller.go, make sure that annotations is generated correctly.StorageClass without csiDriver will no longer generate false annotations.
Signed-off-by: f10atin9 <f10atin9@kubesphere.io>
2021-09-27 16:42:19 +08:00
LiHui
ad69b08a75 add display fields
Signed-off-by: LiHui <andrewli@kubesphere.io>
2021-09-27 15:44:00 +08:00
LiHui
4eb5401f76 calculate the category for the app
Signed-off-by: LiHui <andrewli@kubesphere.io>
2021-09-27 15:35:29 +08:00
LiHui
745ca088a7 add built-in repo to dynamiclly load app into app-store
Signed-off-by: LiHui <andrewli@kubesphere.io>
2021-09-27 15:35:29 +08:00
LiHui
b8d85fb75c add sync period to helm repo
Signed-off-by: LiHui <andrewli@kubesphere.io>
2021-09-27 15:35:29 +08:00
KubeSphere CI Bot
bab5cf27e3 Merge pull request #4284 from RolandMa1986/fix-ingress
update ingress version in ks-core chart
2021-09-27 15:19:53 +08:00
Roland.Ma
fb2e557baa remove docker mount
Signed-off-by: Roland.Ma <rolandma@kubesphere.io>
2021-09-27 03:23:42 +00:00
Roland.Ma
28f6784aff Search gateway logs with ES
Signed-off-by: Roland.Ma <rolandma@kubesphere.io>
2021-09-26 10:33:34 +00:00
Roland.Ma
5ad7d16788 update ingress version in ks-core chart
Signed-off-by: Roland.Ma <rolandma@kubesphere.io>
2021-09-26 07:36:52 +00:00
KubeSphere CI Bot
15205cbc40 Merge pull request #4271 from LinuxSuRen/fix-am-devops-client
Fix the devopsProjectLister is nil
2021-09-24 11:51:54 +08:00
KubeSphere CI Bot
9734c99508 Merge pull request #4273 from RolandMa1986/fix-4265
fix: duplicated items show in the list api
2021-09-24 11:49:54 +08:00
Roland.Ma
49204f64be fix: duplicated items show in the list api
Signed-off-by: Roland.Ma <rolandma@kubesphere.io>
2021-09-24 02:08:13 +00:00
KubeSphere CI Bot
cbfdb545ab Merge pull request #4254 from wansir/fix-regression-bug
fix regression bug failed to create federateduser
2021-09-24 08:59:54 +08:00
rick
182c4acbbb Fix the devopsProjectLister is nil
Signed-off-by: rick <1450685+LinuxSuRen@users.noreply.github.com>
2021-09-23 19:32:20 +08:00
KubeSphere CI Bot
a56368e125 Merge pull request #4264 from RolandMa1986/feat-gateway-affinity
feat: add default gateway pod affinity
2021-09-23 13:59:54 +08:00
Roland.Ma
949b1c790b add default pod antiaffinity
Signed-off-by: Roland.Ma <rolandma@kubesphere.io>
2021-09-22 09:28:11 +00:00
hongming
b087afed65 fix regression bug failed to create federateduser
Signed-off-by: hongming <hongming@kubesphere.io>
2021-09-18 16:02:13 +08:00
KubeSphere CI Bot
d9c6a75f65 Merge pull request #3525 from wansir/oidc-protocol
support OIDC protocol
2021-09-17 20:05:52 +08:00
hongming
97326a89b9 add userinfo endpoint
Signed-off-by: hongming <hongming@kubesphere.io>
2021-09-17 18:03:32 +08:00
hongming
8c5c6a7dee support OIDC protocol
Signed-off-by: hongming <hongming@kubesphere.io>
2021-09-17 16:39:21 +08:00
hongming
4b5b1c64bc Refactor authenticator
Signed-off-by: hongming <hongming@kubesphere.io>
2021-09-17 16:39:20 +08:00
KubeSphere CI Bot
83df7d1ffd Merge pull request #4228 from wansir/fix-4167
Fix inconsistent user status in member cluster
2021-09-17 16:09:52 +08:00
KubeSphere CI Bot
0cdbe3821f Merge pull request #4238 from wansir/feat-4177
Support skip information reconfirm when using external IDP
2021-09-17 09:18:51 +08:00
KubeSphere CI Bot
47d891a6bd Merge pull request #4243 from RolandMa1986/feat-gateway-pods
feat: get gateway's workload and status
2021-09-16 22:32:52 +08:00
KubeSphere CI Bot
511d0d02ff Merge pull request #4227 from RolandMa1986/feat-gateway-matrics
feat: ingress metrics query apis
2021-09-16 22:30:52 +08:00
Roland.Ma
e3a14ca299 retrive pods and logs by gateway
Signed-off-by: Roland.Ma <rolandma@kubesphere.io>
2021-09-16 07:21:08 +00:00
Roland.Ma
81c19701ef append service status of the gateway
Signed-off-by: Roland.Ma <rolandma@kubesphere.io>
2021-09-16 07:20:23 +00:00
KubeSphere CI Bot
e44f4ec81d Merge pull request #4216 from wenchajun/notification
Add notification setting validation API
2021-09-16 14:25:51 +08:00
root
c455afeccf Add notification setting validation API
Signed-off-by: root <dehaocheng@yunify.com>
2021-09-16 14:21:06 +08:00
hongming
cb947ce505 Support skip information reconfirm when using external IDP
Signed-off-by: hongming <hongming@kubesphere.io>
2021-09-16 11:46:02 +08:00
hongming
559a378ca4 Fix inconsistent user status in member cluster
Signed-off-by: hongming <hongming@kubesphere.io>
2021-09-16 10:20:42 +08:00
Roland.Ma
19ac4bc2b0 cpu and memory matric
Signed-off-by: Roland.Ma <rolandma@kubesphere.io>
2021-09-15 09:01:59 +00:00
Roland.Ma
4b4c6e0f79 add duration parameter
Signed-off-by: Roland.Ma <rolandma@kubesphere.io>
2021-09-15 06:54:05 +00:00
KubeSphere CI Bot
8586e36e52 Merge pull request #4224 from yuswift/validate-name
add validation for host cluster name
2021-09-15 10:48:51 +08:00
KubeSphere CI Bot
f0ea384a47 Merge pull request #4230 from RolandMa1986/fix-gateway-upgrade
feat: upgrade gateway with all legacy settings
2021-09-15 10:35:51 +08:00
KubeSphere CI Bot
7f2397678d Merge pull request #4225 from zhu733756/master
feat: integrate API GPU kinds
2021-09-14 18:47:51 +08:00
zhu733756
eb64401e8c fix gpu options stripEmptyOptions
Signed-off-by: zhu733756 <talonzhu@yunify.com>
2021-09-14 16:23:36 +08:00
zhu733756
48f63c3da0 feat: integrate API GPU kinds to group config.kubesphere.io
Signed-off-by: zhu733756 <talonzhu@yunify.com>
2021-09-14 15:53:12 +08:00
KubeSphere CI Bot
fa4c899667 Merge pull request #4220 from yuswift/default_name
support setting cluster name under single cluster scenario
2021-09-13 10:20:51 +08:00
Roland.Ma
2219fd3041 format imports
Signed-off-by: Roland.Ma <rolandma@kubesphere.io>
2021-09-10 10:32:17 +00:00
Roland.Ma
57eb59e8c7 feat: upgrade gateway with lagaccy configmap configs
Signed-off-by: Roland.Ma <rolandma@kubesphere.io>
2021-09-10 09:06:06 +00:00
Roland.Ma
1ee5e49ac0 feat: ingress metrics query apis
Signed-off-by: Roland.Ma <rolandma@yunify.com>
2021-09-10 02:13:22 +00:00
KubeSphere CI Bot
565bf0d496 Merge pull request #4223 from junotx/master
add etcd_server_is_leader metric to query
2021-09-09 17:35:12 +08:00
yuswift
afca5672d6 add validation for cluster name
Signed-off-by: yuswift <yuswift2018@gmail.com>
2021-09-09 15:20:56 +08:00
yuswift
854c036a58 support setting cluster name under signle cluster scenario
Signed-off-by: yuswift <yuswift2018@gmail.com>
2021-09-09 11:49:53 +08:00
junot
c1dfd9937b add etcd_server_is_leader metric to query
Signed-off-by: junot <junotxiang@yunify.com>
2021-09-09 11:37:40 +08:00
KubeSphere CI Bot
12e5131aaf Merge pull request #4222 from yuswift/webhook
upgrade ValidatingWebhookConfiguration to v1
2021-09-09 11:34:16 +08:00
KubeSphere CI Bot
ff8df62b88 Merge pull request #4205 from f10atin9/update_csiDriver
Update csi driver apiVersion
2021-09-09 11:33:15 +08:00
yuswift
8741c6014a upgrade ValidatingWebhookConfiguration to v1
Signed-off-by: yuswift <yuswift2018@gmail.com>
2021-09-08 18:03:56 +08:00
KubeSphere CI Bot
b0506c35a4 Merge pull request #4128 from xyz-li/cleanup_app
clean up app when workspace is deleted
2021-09-07 16:58:15 +08:00
KubeSphere CI Bot
3797049cba Merge pull request #4208 from RolandMa1986/feat-gateway-image
feat: package gateway helm chart into docker image
2021-09-07 15:14:15 +08:00
KubeSphere CI Bot
f88e5811d5 Merge pull request #4215 from dkeven/moveresourcegetter
Move scope-misplaced resource getters to the right place
2021-09-07 15:13:15 +08:00
f10atin9
22b77960c9 update apiserver
Signed-off-by: f10atin9 <f10atin9@kubesphere.io>
2021-09-07 14:18:37 +08:00
f10atin9
a82617af5f remove snapshotter v3
Signed-off-by: f10atin9 <f10atin9@kubesphere.io>
2021-09-06 18:08:08 +08:00
f10atin9
8e4d729f79 resolve conflicted
Signed-off-by: f10atin9 <f10atin9@kubesphere.io>
2021-09-06 18:05:59 +08:00
f10atin9
1755ac5443 update snapshotter
Signed-off-by: f10atin9 <f10atin9@kubesphere.io>
2021-09-06 18:05:59 +08:00
f10atin9
d99434f60d update csiDriver apiVersion
Signed-off-by: f10atin9 <f10atin9@kubesphere.io>
2021-09-06 18:05:59 +08:00
f10atin9
b68ff57e60 update csiDriver apiVersion
Signed-off-by: f10atin9 <f10atin9@kubesphere.io>
2021-09-06 18:05:59 +08:00
KubeSphere CI Bot
9455ab92a9 Merge pull request #4209 from f10atin9/manage_pv
Manage pv in console
2021-09-06 17:21:15 +08:00
KubeSphere CI Bot
59c633fb5d Merge pull request #4193 from RolandMa1986/feat-gateway-api
Feat: add gateway api
2021-09-06 17:20:15 +08:00
KubeSphere CI Bot
15edef636f Merge pull request #4211 from yuswift/host-name
feature: support setting host cluster name
2021-09-06 16:29:15 +08:00
dkeven
89c792b584 Move scope-misplaced resource getters to the right place
Signed-off-by: dkeven <keven@kubesphere.io>
2021-09-06 13:14:24 +08:00
f10atin9
463feb8a61 update return and apiserver
Signed-off-by: f10atin9 <f10atin9@kubesphere.io>
2021-09-06 11:30:19 +08:00
Roland.Ma
9360dfd1b2 add config property to save the additional configuration
Signed-off-by: Roland.Ma <rolandma@yunify.com>
2021-09-06 03:16:23 +00:00
Roland.Ma
f5b98a39e5 add cluster list api
Signed-off-by: Roland.Ma <rolandma@yunify.com>
2021-09-06 03:15:19 +00:00
KubeSphere CI Bot
51955831a7 Merge pull request #4212 from LinuxSuRen/fix-ci-failed
Fix the nightly build failed due to rely on a missing file
2021-09-06 09:53:14 +08:00
rick
dc55e2e1a4 Fix the nightly build failed due to rely on a missing file
Signed-off-by: rick <1450685+LinuxSuRen@users.noreply.github.com>
2021-09-06 09:27:53 +08:00
yuswift
8da8c5deb1 support setting host cluster name
Signed-off-by: yuswift <yuswift2018@gmail.com>
2021-09-05 23:26:37 +08:00
f10atin9
faca834364 update goimports
Signed-off-by: f10atin9 <f10atin9@kubesphere.io>
2021-09-03 16:22:10 +08:00
f10atin9
a2efda820d add pv.go
Signed-off-by: f10atin9 <f10atin9@kubesphere.io>
2021-09-03 14:29:50 +08:00
Roland.Ma
261fb8f29d package gateway helm chart into docker image
Signed-off-by: Roland.Ma <rolandma@yunify.com>
2021-09-03 06:14:01 +00:00
KubeSphere CI Bot
73b65b12ec Merge pull request #4204 from RolandMa1986/feat-helm
helm: allows ks-core to mount extra volumes
2021-09-03 11:20:13 +08:00
Roland.Ma
638f0c9fa0 refine comments
Signed-off-by: Roland.Ma <rolandma@yunify.com>
2021-09-03 01:20:20 +00:00
KubeSphere CI Bot
02f9fd5212 Merge pull request #4206 from jrkeen/fix/deadlock_for_node_getter
fix deadlock for node getter
2021-09-02 18:19:14 +08:00
jrkeen
d359d03dc3 fix deadlock for node getter
Signed-off-by: jrkeen <jrkeen@hotmail.com>
2021-09-02 17:42:19 +08:00
KubeSphere CI Bot
3ddb05b8bf Merge pull request #4203 from zhu733756/master
fix API specification for #4194
2021-09-02 11:45:13 +08:00
zhu733756
f328e909d7 convert clusterdashboard to clusterdashboards.
Signed-off-by: zhu733756 <talonzhu@yunify.com>
2021-09-02 10:48:52 +08:00
zhu733756
4d19d1a0e4 add field description for the API
Signed-off-by: zhu733756 <talonzhu@yunify.com>
2021-09-02 09:32:07 +08:00
KubeSphere CI Bot
89a474ef70 Merge pull request #4199 from wansir/csrv1
Fix CertificateSigningRequest create failed after upgrade to certificates.k8s.io/v1
2021-09-01 19:52:13 +08:00
zhu733756
ad02644674 fix API specification for #4194
Signed-off-by: zhu733756 <talonzhu@yunify.com>
2021-09-01 15:34:11 +08:00
KubeSphere CI Bot
52c0cbbee8 Merge pull request #4188 from nathan-415/nathan/remove-kubebuilder
Removed hack/install_kubebuilder.sh
2021-09-01 13:45:13 +08:00
nathannaveen
1de0490637 Removed Install kubebuilder 2021-08-31 18:01:39 -05:00
nathannaveen
5d5f7366d5 Removed hack/install_kubebuilder.sh
* removed hack/install_kubebuilder.sh https://github.com/kubesphere/kubesphere/issues/4187
2021-08-31 18:01:39 -05:00
Roland.Ma
9cab2b8339 add gateway api
Signed-off-by: Roland.Ma <rolandma@yunify.com>
2021-08-31 08:44:54 +00:00
KubeSphere CI Bot
80c2290b14 Merge pull request #4202 from zhu733756/master
fix: revert packages from vendor/kubesphere.io
2021-08-31 16:25:03 +08:00
zhu733756
5920e35651 revert packages from vendor/kubesphere.io
Signed-off-by: zhu733756 <talonzhu@yunify.com>
2021-08-31 16:09:19 +08:00
hongming
db1a70a45b Fix CertificateSigningRequest create failed after upgrade to v1
Signed-off-by: hongming <hongming@kubesphere.io>
2021-08-31 14:21:51 +08:00
KubeSphere CI Bot
5a5db211df Merge pull request #4194 from zhu733756/master
[v3.2] Add grafana dashboard importing API
2021-08-31 14:18:13 +08:00
zhu733756
242ceb54f6 [v3.2] Add grafana dashboard importing API (#11)
* Add API to import grafana templates to kubesphere dashboard
* Merge and fix the latest codes from kubesphere #2501

Signed-off-by: zhu733756 <talonzhu@yunify.com>
2021-08-31 12:24:46 +08:00
KubeSphere CI Bot
9df6df5544 Merge pull request #4181 from yuswift/bump-ingress
bump Ingress version from v1beta1 to v1
2021-08-31 10:13:12 +08:00
yuswift
524d5d858e bump Ingress version from v1beta1 to v1
Signed-off-by: yuswift <yuswift2018@gmail.com>
2021-08-31 09:37:34 +08:00
KubeSphere CI Bot
2bdc2ac0c6 Merge pull request #4178 from RolandMa1986/feat-gateway-controller
feat: integrate a helm sdk that use to install gateway helm chart
2021-08-31 08:56:13 +08:00
KubeSphere CI Bot
dbdef5fc3c Merge pull request #4186 from yuswift/upgrade-kubebuilder
upgrade kubebuilder envtest to v3
2021-08-31 08:55:13 +08:00
yuswift
a242eaa4eb fix shellcheck typo
Signed-off-by: yuswift <yuswift2018@gmail.com>
2021-08-30 19:40:39 +08:00
yuswift
6064853692 add new entry for env setup
Signed-off-by: yuswift <yuswift2018@gmail.com>
2021-08-30 18:04:18 +08:00
Roland.Ma
52f7a51007 fix coding style
Signed-off-by: Roland.Ma <rolandma@yunify.com>
2021-08-30 04:53:18 +00:00
KubeSphere CI Bot
da7c041310 Merge pull request #4190 from yuswift/csr-patch
patch: bump CertificateSigningRequest version from v1beta1 to v1
2021-08-30 12:06:12 +08:00
KubeSphere CI Bot
1f0cb0bd72 Merge pull request #4183 from FeynmanZhou/master
update the outdated information in README
2021-08-30 12:05:01 +08:00
yuswift
0bb1f468f5 patch: bump CertificateSigningRequest version from v1beta1 to v1
Signed-off-by: yuswift <yuswift2018@gmail.com>
2021-08-28 13:00:42 +08:00
yuswift
60977b150c upgrade kubebuilder envtest way
Signed-off-by: yuswift <yuswift2018@gmail.com>
2021-08-27 22:59:29 +08:00
Roland.Ma
818d41b394 add helm operator sdk and gateway helm chart
Signed-off-by: Roland.Ma <rolandma@yunify.com>
2021-08-27 06:37:31 +00:00
Roland.Ma
7bb8124a61 pin dependencies
Signed-off-by: Roland.Ma <rolandma@yunify.com>
2021-08-27 06:37:31 +00:00
FeynmanZhou
8d6ef13738 update the outdated information in README
Signed-off-by: FeynmanZhou <pengfeizhou@yunify.com>
2021-08-27 13:39:44 +08:00
KubeSphere CI Bot
eae248b3c9 Merge pull request #4180 from yuswift/upgrade-csr
bump CertificateSigningRequest version from v1beta1 to v1
2021-08-27 13:39:12 +08:00
KubeSphere CI Bot
2b32df1c3f Merge pull request #4172 from zryfish/refactor_registry
Refactor registry API to remove dependency on docker.sock
2021-08-27 13:38:11 +08:00
yuswift
620178ce81 bump CertificateSigningRequest version from v1beta1 to v1
Signed-off-by: yuswift <yuswift2018@gmail.com>
2021-08-27 00:20:24 +08:00
KubeSphere CI Bot
d313d8f307 Merge pull request #4176 from wanjunlei/https
Support external es that enables HTTPS
2021-08-26 14:26:11 +08:00
Jeff
136a2fd1fc change registry secret verify api path 2021-08-26 13:56:41 +08:00
KubeSphere CI Bot
360221a0fe Merge pull request #4163 from f10atin9/storage_capability
remove capability CRDs and update controller
2021-08-26 10:08:10 +08:00
KubeSphere CI Bot
9ea452a647 Merge pull request #4175 from styshoo/master
fix duplicate args generated when creating more than one ingress-controllers
2021-08-25 22:31:11 +08:00
KubeSphere CI Bot
2720916aa3 Merge pull request #4174 from RolandMa1986/update-rule
Update kubesphere/api sync rule
2021-08-25 22:26:10 +08:00
wanjunlei
41b3551526 Support external es that enables HTTPS
Signed-off-by: wanjunlei <wanjunlei@yunify.com>
2021-08-25 16:39:53 +08:00
Roland.Ma
8796ba46e8 update sync rule
Signed-off-by: Roland.Ma <rolandma@yunify.com>
2021-08-25 03:51:42 +00:00
styshoo
637e3a4b0a when create more than two ingress-controllers, the ingress-controller pod args are duplicate 2021-08-25 11:19:30 +08:00
f10atin9
a8d36f232a rename snapshot_controller to snapshotclass_controller
Signed-off-by: f10atin9 <f10atin9@kubesphere.io>
2021-08-25 10:36:05 +08:00
KubeSphere CI Bot
9dfb736a03 Merge pull request #4166 from RolandMa1986/fix-kubesphereapi
fix: kubesphere/api package UT failed
2021-08-25 10:19:11 +08:00
KubeSphere CI Bot
f4efd86b40 Merge pull request #4130 from ks-ci-bot/cherry-pick-3960-to-master
[master] Fix kubesphere_app_template_count always be 0 when GetKubeSphereStats
2021-08-25 10:04:10 +08:00
Jeff
3d2fd1b538 This PR does the following things:
1. add new registry api under resources.kubesphere.io/v1alpha3
2. deprecate registry api v1alpha2

Registry API v1alpha2 uses docker client to authenticate image registry
secret, which depends on docker.sock. We used to mount host
`/var/run/docker.sock` to deployment. It will prevent us imgrating to
containerd since no `docker.sock` exists. Registry API v1alpha3 comes to
rescure, it wraps library go-containerregistry and compatible with
docker registry, Harbor etc.
2021-08-24 13:37:42 +08:00
KubeSphere CI Bot
52d2df08a6 Merge pull request #4162 from LinuxSuRen/fix-apiserver-panic
Fix the ks-apiserver panic due to the devopsprojects CRD missing
2021-08-24 11:19:52 +08:00
f10atin9
b3123547a4 Capability controller can add annotations, no matter whether the storageClass has CSIDriver. Snapshot controller will create volumeSnapshotClass based on allowSnapshot annotation.
Signed-off-by: f10atin9 <f10atin9@kubesphere.io>
2021-08-23 18:04:19 +08:00
f10atin9
5e9679941b split snapshot controller and update capability.
Signed-off-by: f10atin9 <f10atin9@kubesphere.io>
2021-08-23 13:05:24 +08:00
KubeSphere CI Bot
c740fef5b4 Merge pull request #4164 from wenhuwang/upgrade_ingress_apigroup
Upgrade ingress api version to networking.k8s.io/v1
2021-08-23 12:59:51 +08:00
Roland.Ma
709e0c92f1 helm: allows to mount extra volumes
Signed-off-by: Roland.Ma <rolandma@yunify.com>
2021-08-23 02:34:00 +00:00
Roland.Ma
5a4f172b31 taddclient-go and api package ut to makefile
Signed-off-by: Roland.Ma <rolandma@yunify.com>
2021-08-20 10:28:01 +00:00
Roland.Ma
0b4c22a72c fix client-go go mod
Signed-off-by: Roland.Ma <rolandma@yunify.com>
2021-08-20 09:53:19 +00:00
Roland.Ma
373f78f2ed fix: kubesphere/api package UT failed
Signed-off-by: Roland.Ma <rolandma@yunify.com>
2021-08-20 08:46:26 +00:00
wenhuwang
adfd3d7aaf Upgrade ingress api version to networking.k8s.io/v1
Signed-off-by: wenhuwang <976400757@qq.com>
2021-08-19 15:36:04 +08:00
f10atin9
574eb221ab remove capability CRDs and update controller
Signed-off-by: f10atin9 <f10atin9@kubesphere.io>
2021-08-19 15:12:04 +08:00
KubeSphere CI Bot
ddc645838d Merge pull request #4159 from yuswift/remove-webhook-file
remove config/webhook config/samples config/servicemesh config/rbac config/default dir
2021-08-19 14:10:09 +08:00
rick
23af4462bc Fix the ks-apiserver panic due to the devopsprojects CRD missing
Signed-off-by: rick <1450685+LinuxSuRen@users.noreply.github.com>
2021-08-19 13:28:34 +08:00
KubeSphere CI Bot
75cf8b51c8 Merge pull request #4161 from yuswift/fix-api
fix `go mod tidy` error
2021-08-19 12:58:09 +08:00
yuswift
91fa1b352e fix api go mod tidy error
Signed-off-by: yuswift <yuswift2018@gmail.com>
2021-08-19 11:15:25 +08:00
yuswift
fd128c213f remove config/webhook config/samples config /servicemesh config/rbac config/default dir
Signed-off-by: yuswift <yuswift2018@gmail.com>
2021-08-18 16:11:16 +08:00
KubeSphere CI Bot
1ad5a07a58 Merge pull request #4141 from RolandMa1986/upgrade-k8s
Upgrade k8s package version
2021-08-17 09:54:08 +08:00
Roland.Ma
457d8c36be remove unused module
Signed-off-by: Roland.Ma <rolandma@yunify.com>
2021-08-16 06:59:20 +00:00
Roland.Ma
5899bb5041 fix github build pipeline
Signed-off-by: Roland.Ma <rolandma@yunify.com>
2021-08-16 06:59:20 +00:00
Roland.Ma
c23c1adcd1 fix openapi build
Signed-off-by: Roland.Ma <rolandma@yunify.com>
2021-08-16 06:59:20 +00:00
Roland.Ma
3bfae73318 fix ks-apiserver missing interfaces
Signed-off-by: Roland.Ma <rolandma@yunify.com>
2021-08-16 06:58:12 +00:00
Roland.Ma
2fcfb81066 fix controller Start method signature
Signed-off-by: Roland.Ma <rolandma@yunify.com>
2021-08-16 06:58:12 +00:00
Roland.Ma
810bfb618a fix client.Object type
Signed-off-by: Roland.Ma <rolandma@yunify.com>
2021-08-16 06:58:12 +00:00
Roland.Ma
d5f4b2f5ef pin go mod
Signed-off-by: Roland.Ma <rolandma@yunify.com>
2021-08-16 06:58:12 +00:00
Roland.Ma
ea8f47c73a update vendor
Signed-off-by: Roland.Ma <rolandma@yunify.com>
2021-08-16 06:58:12 +00:00
KubeSphere CI Bot
a18f72b565 Merge pull request #4144 from liangyuanpeng/feature_support_makehelp
Support make help
2021-08-16 11:12:44 +08:00
Lan Liang
58cc37f123 format desc 2021-08-15 23:28:34 +08:00
Lan Liang
989ab40952 Support make help 2021-08-13 00:15:37 +08:00
KubeSphere CI Bot
a923715062 Merge pull request #4121 from wenhuwang/remove_expansion_controller
remove workload auto-restart function when pvc expanded
2021-08-12 17:33:49 +08:00
KubeSphere CI Bot
0f55ea521d Merge pull request #4129 from LinuxSuRen/devops-proxy
Add proxy devops APIs request to ks-devops
2021-08-12 10:05:40 +08:00
LiHui
06cdab56f6 Fix typo && Add comments
Signed-off-by: LiHui <andrewli@yunify.com>
2021-08-10 14:13:39 +08:00
x893675
f29a5488a8 Fix kubesphere_app_template_count always be 0 when GetKubeSphereStats
Signed-off-by: x893675 <x893675@icloud.com>
2021-08-06 09:50:26 +00:00
LiHui
3e5822a0b2 cleanup app when workspace is deleted
Signed-off-by: LiHui <andrewli@yunify.com>
2021-08-06 17:27:04 +08:00
rick
6d9cf166c6 Add proxy devops APIs request to ks-devops
move devops controllers into ks-devops

Signed-off-by: rick <1450685+LinuxSuRen@users.noreply.github.com>
2021-08-06 17:11:59 +08:00
wang_wenhu
364941d5d2 remove workload auto-restart function when pvc expanded
Signed-off-by: wang_wenhu <976400757@qq.com>
2021-08-05 13:58:46 +08:00
KubeSphere CI Bot
418a2a09c7 Merge pull request #4116 from xyz-li/upgrade_kustomize
upgrade kustomize to v4.2.0
2021-08-04 16:23:46 +08:00
LiHui
e49f3f4910 upgrade kustomize version
Signed-off-by: LiHui <andrewli@yunify.com>
2021-08-04 15:14:36 +08:00
KubeSphere CI Bot
b4e510966f Merge pull request #4112 from nanjofan/nanjobranch
modify comments in pkg/apiserver/authentication/identityprovider/identity_provider.go
2021-08-04 14:24:47 +08:00
nanjofan
ad6acc5fb6 Update pkg/apiserver/authentication/identityprovider/identity_provider.go
Co-authored-by: hongming <coder.scala@gmail.com>
2021-08-04 13:48:06 +08:00
Yoshino
8fbfc734d2 Modify function error comments:"RegisterGenericProvider" and "GetOAuthProvider" 2021-08-03 14:48:06 +08:00
KubeSphere CI Bot
0e975d3f65 Merge pull request #4103 from RolandMa1986/feat-env-param
feat: load configuration from Environment variables
2021-08-03 11:13:46 +08:00
KubeSphere CI Bot
2aa55c5d6b Merge pull request #4095 from xyz-li/master
go build with vendor by default
2021-07-30 10:34:45 +08:00
Roland.Ma
14adfc4326 inject env with helm values
Signed-off-by: Roland.Ma <rolandma@yunify.com>
2021-07-30 02:10:46 +00:00
Roland.Ma
4c16276a8d feat: load configuration from Environment variables
Signed-off-by: Roland.Ma <rolandma@yunify.com>
2021-07-29 06:23:10 +00:00
LiHui
1b5590d3dd downloads vendor for hack/tools 2021-07-21 17:23:55 +08:00
LiHui
059eb64c9b go build with vendor
Signed-off-by: LiHui <andrewli@yunify.com>
2021-07-21 16:05:23 +08:00
KubeSphere CI Bot
6560337a0a Merge pull request #4048 from RolandMa1986/feat-kialiauth
Add kiali client with authentication supports
2021-07-21 16:02:10 +08:00
KubeSphere CI Bot
703efe9b84 Merge pull request #4073 from zryfish/fix_make_cross
fix make cross target failed
2021-07-21 14:45:49 +08:00
Jeff
c6c61cb5a2 fix make cross target failed 2021-07-20 07:01:36 +00:00
Roland.Ma
85fd94b922 add kiali client with authentication supports
Signed-off-by: Roland.Ma <rolandma@yunify.com>
2021-07-19 08:36:08 +00:00
KubeSphere CI Bot
a897caa366 Merge pull request #4063 from yuswift/update-gofmt
fix gofmt typo and spelling typo and shellcheck typo to pass the prow ci
2021-07-19 14:45:10 +08:00
yuswift
04645180c4 fix shellcheck typo
Signed-off-by: yuswift <yuswift2018@gmail.com>
2021-07-15 12:14:35 +08:00
yuswift
e9695cba4c fix spelling typo
Signed-off-by: yuswift <yuswift2018@gmail.com>
2021-07-15 11:06:07 +08:00
yuswift
cd30e6eba5 update gofmt
Signed-off-by: yuswift <yuswift2018@gmail.com>
2021-07-15 10:13:04 +08:00
KubeSphere CI Bot
8b7a7b3342 Merge pull request #4050 from RolandMa1986/fix-e2e
Update kind-action to v1.2.0
2021-07-09 11:39:30 +08:00
Roland.Ma
1fbe5d305c update kind-action to v1.2.0
Signed-off-by: Roland.Ma <rolandma@yunify.com>
2021-07-09 03:25:14 +00:00
KubeSphere CI Bot
900b230d72 Merge pull request #4044 from RolandMa1986/fix-template
Fix typo in kubesphere gateway template and bookstore sample
2021-07-06 20:34:29 +08:00
KubeSphere CI Bot
1c5510138d Merge pull request #4042 from xyz-li/master
Change helm path
2021-07-05 18:35:28 +08:00
LiHui
4d03665cba Change helm path
Signed-off-by: LiHui <andrewli@yunify.com>
2021-07-05 18:00:48 +08:00
Roland.Ma
1aabaf8cc5 fix typo in comfigmap
Signed-off-by: Roland.Ma <rolandma@yunify.com>
2021-07-05 08:18:05 +00:00
KubeSphere CI Bot
bacc717bf2 Merge pull request #4034 from wansir/fix-image-push
Fix failed to push docker images with a specified tag
2021-07-02 10:21:25 +08:00
hongming
1f4098b70c Fix failed to push docker images with a specified tag
Signed-off-by: hongming <talonwan@yunify.com>
2021-07-02 09:50:57 +08:00
Zhengyi Lai
427c3fb6c1 Merge pull request #4026 from yuswift/fix_.gitbug
fix .dockerignore file ignores .git dir bug
2021-07-01 19:01:19 +08:00
yuswift
8c0462e89f fix .dockerignore file ignores .git dir bug
Signed-off-by: yuswift <yuswift2018@gmail.com>
2021-07-01 18:42:28 +08:00
KubeSphere CI Bot
cfacc18736 Merge pull request #4019 from yuswift/fix_nightly_build
fix wrong Makefile usage in nightly build workflow
2021-06-30 22:35:25 +08:00
yuswift
bb7294cdce fix nightly build error
Signed-off-by: yuswift <yuswift2018@gmail.com>
2021-06-30 18:04:19 +08:00
KubeSphere CI Bot
b34767e7fd Merge pull request #4003 from wansir/fix-3041
Fix panic due to nil pointer exception
2021-06-25 15:13:21 +08:00
KubeSphere CI Bot
bb4af5aded Merge pull request #3871 from xyz-li/metering
Fix: parse openpitrix resources, so that these resources will be included in billing.
2021-06-25 15:13:00 +08:00
hongming
df98ea98cc Fix panic due to nil pointer exception
Signed-off-by: hongming <talonwan@yunify.com>
2021-06-25 14:52:51 +08:00
KubeSphere CI Bot
ca404cf5a8 Merge pull request #4000 from zryfish/fix_typo_in_dockerfile
fix wrong target in Dockerfile
2021-06-25 14:43:28 +08:00
Jeff
341a51d28e fix wrong target in Dockerfile
Signed-off-by: Jeff <jeffzhang@yunify.com>
2021-06-25 06:21:30 +00:00
KubeSphere CI Bot
290bf309ff Merge pull request #3990 from zryfish/refactor_makefile
Add development verify scripts and refactor Dockerfile
2021-06-25 13:56:00 +08:00
KubeSphere CI Bot
9e59ce3516 Merge pull request #3997 from RolandMa1986/fix-cve
Update golang.org/x/crypto module to latest release
2021-06-25 13:49:22 +08:00
KubeSphere CI Bot
2baa0faa75 Merge pull request #3936 from wansir/remove-useless-crd
Remove useless federated resources(users, roles, rolebindings) CRD files from config/crds
2021-06-25 09:38:22 +08:00
KubeSphere CI Bot
8fc6533a2d Merge pull request #3956 from wansir/fix-3041
Verify the permission of create pods exec before creating terminal WebSocket connection
2021-06-24 18:02:00 +08:00
Roland.Ma
016165072d update golang.org/x/crypto module to latest release
Signed-off-by: Roland.Ma <rolandma@yunify.com>
2021-06-24 01:31:13 +00:00
Jeff
4d90295474 remove unused line
Signed-off-by: Jeff <jeffzhang@yunify.com>
2021-06-23 16:38:24 +00:00
Jeff
6cdd050184 * rewrite dockerfile to multiple stage build
* add verification scripts

Signed-off-by: Jeff <jeffzhang@yunify.com>
2021-06-23 16:27:05 +00:00
KubeSphere CI Bot
d1fdc7c9e0 Merge pull request #3978 from opsnull/remote-redundant-gvr
apiserver: remove redundant GroupVersionResource
2021-06-23 23:27:21 +08:00
ZhangJun
6d264572dc apiserver: remove redundant GroupVersionResource
Signed-off-by: opsnull <geekard@qq.com>
2021-06-22 18:43:05 +08:00
KubeSphere CI Bot
d4be6d704a Merge pull request #3961 from LinuxSuRen/feat-k8s-local-client
Make ks-apiserver be easier to run locally with kube config
2021-06-21 14:07:27 +08:00
KubeSphere CI Bot
9eed3382bd Merge pull request #3967 from zryfish/update_pr_template
update pull request template
2021-06-21 11:26:59 +08:00
Jeff
cfc0ac1eed update pull request template
Signed-off-by: Jeff <jeffzhang@yunify.com>

fix goimports

Signed-off-by: Jeff <jeffzhang@yunify.com>
2021-06-21 01:02:51 +00:00
rick
8e40702b75 try os/user.HomeDir when $HOME is unset when find kubeconfig file
Signed-off-by: rick <linuxsuren@users.noreply.github.com>
2021-06-18 11:32:23 +08:00
rick
90f5a44911 Make ks-apiserver be easier to run locally with kube config
Signed-off-by: rick <linuxsuren@users.noreply.github.com>
2021-06-18 11:31:50 +08:00
KubeSphere CI Bot
c2c5348f9b Merge pull request #3944 from RolandMa1986/update-deps
update protobuf to v1.3.2
2021-06-17 11:28:54 +08:00
KubeSphere CI Bot
5cb68808c1 Merge pull request #3965 from dkkb/s3
Improve the s3 uploader for better performance.
2021-06-17 11:24:05 +08:00
dkkb
3ec5a5aea6 Improve the s3 uploader for better performance.
Signed-off-by: dkkb <dabkb@aol.com>
2021-06-16 12:29:31 +08:00
KubeSphere CI Bot
d97bdffd94 Merge pull request #3964 from zryfish/update_owner
add approvers and reviewers
2021-06-15 14:50:46 +08:00
Jeff
55b7c000b0 fix typo
Signed-off-by: Jeff <jeffzhang@yunify.com>
2021-06-15 02:19:45 +00:00
Jeff
67083e9def add more reviewers
Signed-off-by: Jeff <jeffzhang@yunify.com>
2021-06-15 02:18:30 +00:00
Jeff
2ab926adb7 add approvers and reviewers
Signed-off-by: Jeff <jeffzhang@yunify.com>
2021-06-15 02:10:09 +00:00
KubeSphere CI Bot
ec7d392b7b Merge pull request #3946 from RolandMa1986/update-jwt
Moving to a fork for jwt-go
2021-06-15 10:05:46 +08:00
KubeSphere CI Bot
f3d7cb3394 Merge pull request #3947 from dkeven/removecapdetection
remove storage capability auto detection
2021-06-11 10:52:12 +08:00
hongming
2c60762cfc Fix container terminal security risk
Signed-off-by: hongming <talonwan@yunify.com>
2021-06-10 16:25:55 +08:00
dkven
eadf8cc4c8 remove storage capability auto detection
Signed-off-by: dkven <dkvvven@gmail.com>
2021-06-09 14:49:58 +08:00
Roland.Ma
e6736a4e0e moving jwt-go from github.com/dgrijalva/jwt-go v3.2.0 to github.com/form3tech-oss/jwt-go v3.2.2
Signed-off-by: Roland.Ma <rolandma@yunify.com>
2021-06-08 10:11:56 +00:00
Roland.Ma
43959a714d update protobuf to v1.3.2
Signed-off-by: Roland.Ma <rolandma@yunify.com>
2021-06-08 09:07:01 +00:00
KubeSphere CI Bot
b77beedbf7 Merge pull request #3931 from yuswift/update-Makefile-for-helm
Feature: support installing kubesphere-core with helm
2021-06-06 10:27:09 +08:00
hongming
3f1830397f Remove useless CRD
Signed-off-by: hongming <talonwan@yunify.com>
2021-06-03 18:50:03 +08:00
yuswift
70c53cc723 update Makefile for helm-deplp && helm-uninstall
Signed-off-by: yuswift <yuswiftli@yunify.com>
2021-06-03 10:50:03 +08:00
KubeSphere CI Bot
2cc897534d Merge pull request #3929 from LinuxSuRen/fix-wrong-ctrl-mgr-ver-output
Fix the wrong version output of controller-manager
2021-06-01 16:40:17 +08:00
rick
679109969f Fix the wrong version output of controller-manager
Signed-off-by: rick <linuxsuren@users.noreply.github.com>
2021-06-01 15:38:39 +08:00
KubeSphere CI Bot
cc99cdc9c6 Merge pull request #3924 from wansir/cherry-pick
Add cherry_pick_pull.sh
2021-06-01 15:09:18 +08:00
hongming
3d391ec31b Add cherry_pick_pull.sh
Signed-off-by: hongming <talonwan@yunify.com>
2021-06-01 14:16:30 +08:00
KubeSphere CI Bot
113bb73061 Merge pull request #3896 from RolandMa1986/feat-helmchart
create helm chart for ks-core
2021-06-01 14:09:42 +08:00
KubeSphere CI Bot
49cad3a411 Merge pull request #3894 from xyz-li/app-fix2
Fix: nil pointer when enable HTTPS
2021-06-01 14:09:18 +08:00
KubeSphere CI Bot
318ecfdfd5 Merge pull request #3919 from RolandMa1986/fix-manifests
change controller-gen crds source path
2021-06-01 13:34:35 +08:00
KubeSphere CI Bot
902ca0ed6d Merge pull request #3902 from zackzhangkai/master
fix servicemesh traffic governance
2021-06-01 11:21:17 +08:00
Roland.Ma
02d4378765 fix: notification ut test
Signed-off-by: Roland.Ma <rolandma@yunify.com>
2021-05-31 09:37:02 +00:00
Roland.Ma
0ba9f28aac fix: dashboard ut test
Signed-off-by: Roland.Ma <rolandma@yunify.com>
2021-05-31 07:42:46 +00:00
Roland.Ma
e5bde9e00b generate crds by folder
Signed-off-by: Roland.Ma <rolandma@yunify.com>
2021-05-31 02:28:48 +00:00
Roland.Ma
25bfb3d199 delete snapshot crds
Signed-off-by: Roland.Ma <rolandma@yunify.com>
2021-05-31 02:24:00 +00:00
Roland.Ma
e908150836 delete istio crds
Signed-off-by: Roland.Ma <rolandma@yunify.com>
2021-05-31 02:19:39 +00:00
Roland.Ma
98dc7ac691 delete calico crds
Signed-off-by: Roland.Ma <rolandma@yunify.com>
2021-05-31 02:18:38 +00:00
Roland.Ma
9666cab2c2 delete auditing,monitoring,notification crds
Signed-off-by: Roland.Ma <rolandma@yunify.com>
2021-05-31 02:16:26 +00:00
Roland.Ma
bd99daac2f delete kubefed crds, they should be generated by kubefedctl
Signed-off-by: Roland.Ma <rolandma@yunify.com>
2021-05-31 02:03:56 +00:00
KubeSphere CI Bot
9aeb2d55a8 Merge pull request #3886 from xyz-li/app-fix
Fix: parse chart data by loader.LoadArchive
2021-05-28 14:46:32 +08:00
Roland.Ma
a97163b88c change controller-gen crds source path
Signed-off-by: Roland.Ma <rolandma@yunify.com>
2021-05-27 09:12:34 +00:00
Roland.Ma
91ebc2cd01 use helm release variable for service account name and namespace
Signed-off-by: Roland.Ma <rolandma@yunify.com>
2021-05-26 09:55:04 +00:00
Roland.Ma
999711f1cf replace podAntiAffinity namespaces with helm release name
Signed-off-by: Roland.Ma <rolandma@yunify.com>
2021-05-26 09:17:35 +00:00
Roland.Ma
dc3d5bf08c user helm release namespace
Signed-off-by: Roland.Ma <rolandma@yunify.com>
2021-05-26 09:09:49 +00:00
KubeSphere CI Bot
3361a51d44 Merge pull request #3897 from RolandMa1986/rolebinding-api
Query workspacerolebindings by rolename
2021-05-24 19:50:13 +08:00
KubeSphere CI Bot
d15e29fa0b Merge pull request #3868 from JohnNiang/fix/typo
Fix client typo
2021-05-24 16:41:13 +08:00
KubeSphere CI Bot
1703eafba9 Merge pull request #3859 from yunkunrao/master
Fixed namespace resource filter.
2021-05-24 16:40:13 +08:00
Roland.Ma
f7d7ed55ff inital admin account
Signed-off-by: Roland.Ma <rolandma@yunify.com>
2021-05-21 09:10:13 +00:00
zackzhangkai
afaafbfea7 fix servicemesh traffic governance
Signed-off-by: zackzhangkai <zhangkaiamm@gmail.com>
2021-05-20 11:18:21 +08:00
Roland.Ma
7b565e2412 generate random jwtSecret
Signed-off-by: Roland.Ma <rolandma@yunify.com>
2021-05-20 02:42:15 +00:00
Roland.Ma
2a258c4530 create helm chart for ks-core
Signed-off-by: Roland.Ma <rolandma@yunify.com>
2021-05-19 07:10:04 +00:00
LiHui
e7f7497a39 Fix: nil pointer when enable secure port
Signed-off-by: LiHui <andrewli@yunify.com>
2021-05-18 14:38:25 +08:00
LiHui
b0e727bf4e Fix: parse chart data by loader.LoadArchive
Signed-off-by: LiHui <andrewli@yunify.com>
2021-05-17 15:19:34 +08:00
Roland.Ma
ee55e26e3c query role by rolename
Signed-off-by: Roland.Ma <rolandma@yunify.com>
2021-05-14 02:08:16 +00:00
KubeSphere CI Bot
738b1eecc4 Merge pull request #3848 from zackzhangkai/master
fix servicemesh crd
2021-05-13 16:52:54 +08:00
KubeSphere CI Bot
fcff981be8 Merge pull request #3864 from 94rain/fix-link-in-readme
fix dead links and update versions in README
2021-05-12 20:35:54 +08:00
LiHui
8db1e3772b Fix: resolve openpitrix resources
Signed-off-by: LiHui <andrewli@yunify.com>
2021-05-12 14:01:30 +08:00
johnniang
d88de6dca7 Fix client typo
Signed-off-by: johnniang <johnniang@fastmail.com>
2021-05-11 22:42:07 +08:00
KubeSphere CI Bot
c879c0497e Merge pull request #3863 from RolandMa1986/fix-api-mod
Fix: UT failed in api repo
2021-05-11 16:19:53 +08:00
94rain
57949a24fb fix dead links and update versions in README
Signed-off-by: 94rain <94rain@msn.com>
2021-05-10 20:57:12 +08:00
Roland.Ma
bd3cf2cf44 fix ut error for api repo
Signed-off-by: Roland.Ma <rolandma@yunify.com>
2021-05-10 10:07:15 +00:00
Roland.Ma
6eb3c9f158 fix go mod tidy error
Signed-off-by: Roland.Ma <rolandma@yunify.com>
2021-05-10 10:06:09 +00:00
Rao Yunkun
80d3e91791 Fixed namespace resource filter.
Signed-off-by: Rao Yunkun <yunkunrao@yunify.com>
2021-05-10 15:20:06 +08:00
KubeSphere CI Bot
9d64b8104a Merge pull request #3855 from RolandMa1986/fix-e2e
Remove useless e2e test
2021-05-10 09:43:53 +08:00
KubeSphere CI Bot
f19f77da61 Merge pull request #3795 from RolandMa1986/fix-crd
add RawExtension type annotation
2021-05-10 09:42:53 +08:00
Roland.Ma
d580e13e80 remove useless e2e test
Signed-off-by: Roland.Ma <rolandma@yunify.com>
2021-05-09 00:36:47 +00:00
Roland.Ma
b05ef6714c fix ClusterOverride field
Signed-off-by: Roland.Ma <rolandma@yunify.com>
2021-05-08 02:54:04 +00:00
Roland.Ma
ad6f22c715 add RawExtension type annotation
Signed-off-by: Roland.Ma <rolandma@yunify.com>
2021-05-08 02:54:03 +00:00
KubeSphere CI Bot
cc6b1f9f0a Merge pull request #3767 from xyz-li/app-fix
Fix: validate repo when modify url
2021-05-08 10:47:34 +08:00
KubeSphere CI Bot
ae9e0d84bc Merge pull request #3831 from RolandMa1986/feat-refactorapi
move api to staging and sychnorized to kubepshere/api repo
2021-05-08 10:46:52 +08:00
zackzhangkai
7b84622fb6 fix servicemesh crd
Signed-off-by: zackzhangkai <zhangkaiamm@gmail.com>
2021-05-07 16:58:50 +08:00
KubeSphere CI Bot
1f57ec2e38 Merge pull request #3838 from RolandMa1986/add-sync
sync release-3.1 branch
2021-04-30 17:11:05 +08:00
Roland.Ma
f6601d9e8b sync release-3.1 branch
Signed-off-by: Roland.Ma <rolandma@yunify.com>
2021-04-30 08:05:57 +00:00
Roland.Ma
cb7ca04d37 fix openapi build
Signed-off-by: Roland.Ma <rolandma@yunify.com>
2021-04-29 09:33:30 +00:00
Roland.Ma
c37a11c5f9 move api to staging
Signed-off-by: Roland.Ma <rolandma@yunify.com>
2021-04-29 08:20:05 +00:00
KubeSphere CI Bot
24ee83271f Merge pull request #3796 from wansir/fix-3784
Fix SelectorFromSet ignore errors and select everything
2021-04-29 12:38:05 +08:00
KubeSphere CI Bot
cf8d71c4ca Merge pull request #3823 from lxm/hotfix/mulitarch-build
multi arch build error
2021-04-28 14:39:12 +08:00
lxm
b7043621f1 multi arch build error
Signed-off-by: lxm <lxm.xupt@gmail.com>
2021-04-28 13:51:14 +08:00
KubeSphere CI Bot
cad6296f4e Merge pull request #3704 from lxm/feature/multiarch
[feature] use buildx to produce multi arch image #3683
2021-04-27 16:15:04 +08:00
lxm
ae641d957f only trigger github action on push
Signed-off-by: lxm <lxm.xupt@gmail.com>
2021-04-26 18:53:01 +08:00
KubeSphere CI Bot
c3522d940a Merge pull request #3797 from zackzhangkai/master
allow notification to slact when e2e failed
2021-04-26 16:53:04 +08:00
KubeSphere CI Bot
4ab94c1b7e Merge pull request #3806 from yunkunrao/master
Fix metering chart display error when switched into network flows consumption.
2021-04-26 10:09:03 +08:00
KubeSphere CI Bot
133a596c32 Merge pull request #3799 from LinuxSuRen/clean-up-devops-roadmap
Update the status of DevOps roadmap for upgrade section and the 3.0 section
2021-04-26 10:00:04 +08:00
Rao Yunkun
e9fdb01a96 Fix issue #3805
Signed-off-by: Rao Yunkun <yunkunrao@yunify.com>
2021-04-25 15:07:39 +08:00
Zhengyi Lai
895c0c449a Merge pull request #3798 from xyz-li/app-fix1
update roadmap
2021-04-23 22:15:37 +08:00
Zhengyi Lai
b72f794004 Mark metering completed in roadmap
Signed-off-by: Zhengyi Lai <zheng1@yunify.com>
2021-04-23 22:14:46 +08:00
rick
291317ca86 Update the status of DevOps roadmap for upgrade section and the 3.0 section
Signed-off-by: rick <1450685+LinuxSuRen@users.noreply.github.com>
2021-04-23 17:02:02 +08:00
LiHui
685f82d077 update roadmap
Signed-off-by: LiHui <andrewli@yunify.com>
2021-04-23 16:53:08 +08:00
zackzhangkai
3762701fa2 allow notification to slact when e2e failed
Signed-off-by: zackzhangkai <zhangkaiamm@gmail.com>
2021-04-23 15:15:37 +08:00
hongming
1b33d6e31b Fix SelectorFromSet ignore errors and select everything
Signed-off-by: hongming <talonwan@yunify.com>
2021-04-23 14:29:42 +08:00
KubeSphere CI Bot
a77ed95a5b Merge pull request #3792 from wansir/roadmap
Update roadmap for multitenancy & IAM
2021-04-22 16:39:13 +08:00
hongming
cec6c297db Update roadmap
Signed-off-by: hongming <talonwan@yunify.com>
2021-04-22 16:09:33 +08:00
KubeSphere CI Bot
7a8aaeeb83 Merge pull request #3790 from LinuxSuRen/roadmap-devops
Mark all DevOps roadmap item as complete
2021-04-22 15:44:13 +08:00
KubeSphere CI Bot
c943f0d99e Merge pull request #3791 from benjaminhuo/master
Update roadmap for o11y & edge
2021-04-22 15:43:13 +08:00
Benjamin
1a77bbb54b Update roadmap for o11y & edge
Signed-off-by: Benjamin <benjamin@yunify.com>
2021-04-22 15:24:17 +08:00
rick
2d3e2a7d1e Mark all DevOps roadmap item as complete
Signed-off-by: rick <1450685+LinuxSuRen@users.noreply.github.com>
2021-04-22 15:09:20 +08:00
lxm
31fbe51327 add suffix to image tag
Signed-off-by: lxm <lxm.xupt@gmail.com>
2021-04-22 11:34:13 +08:00
KubeSphere CI Bot
d4451205dc Merge pull request #3781 from yuswift/fix_crd_upgrade
fix crd upgrade error
2021-04-21 17:40:12 +08:00
yuswift
556219a5ed fix crd update error
Signed-off-by: yuswiftli <yuswiftli@yunify.com>
2021-04-21 17:19:05 +08:00
KubeSphere CI Bot
e9c963c58d Merge pull request #3776 from wansir/feat-logout
Support RP-Initiated Logout
2021-04-20 20:17:12 +08:00
KubeSphere CI Bot
3a7caffc36 Merge pull request #3779 from junotx/ca
remove trailing dollar char of namespacedResourcesFilter for monitoring api
2021-04-20 17:20:12 +08:00
hongming
8fdd8beb08 Support RP-Initiated Logout
Signed-off-by: hongming <talonwan@yunify.com>
2021-04-20 15:17:40 +08:00
junot
8ed8a61bd0 remove trailing dollar char of namespacedResourcesFilter for monitoring api
Signed-off-by: junot <junotxiang@yunify.com>
2021-04-20 15:09:52 +08:00
KubeSphere CI Bot
763b3f1899 Merge pull request #3768 from wansir/ldap-idp
Fix issue with case-sensitive username
2021-04-20 14:54:11 +08:00
hongming
595f7a03e4 Fix issue with case-sensitive username
Signed-off-by: hongming <talonwan@yunify.com>
2021-04-20 14:18:31 +08:00
KubeSphere CI Bot
b9ea449a4b Merge pull request #3773 from LinuxSuRen/fix-filter-parse-err
Fix the error caused by the wrong filter parse
2021-04-20 14:06:11 +08:00
KubeSphere CI Bot
fa088425ff Merge pull request #3770 from yunkunrao/master
Remove metering ConfigMap dependency.
2021-04-20 14:03:20 +08:00
Rao Yunkun
bc387ca3fd Add metering default config.
Signed-off-by: Rao Yunkun <yunkunrao@yunify.com>
2021-04-20 12:10:41 +08:00
Rao Yunkun
796d667e48 Add comments for metering price info struct.
Signed-off-by: Rao Yunkun <yunkunrao@yunify.com>
2021-04-20 11:40:23 +08:00
Rao Yunkun
ab86f606a8 Update UT.
Signed-off-by: Rao Yunkun <yunkunrao@yunify.com>
2021-04-20 10:02:46 +08:00
rick
4ba8645bcf Fix the error caused by the wrong filter parse
Signed-off-by: rick <1450685+LinuxSuRen@users.noreply.github.com>
2021-04-19 22:28:11 +08:00
Rao Yunkun
5904e2e9be Remove metering ConfigMap dependency.
Signed-off-by: Rao Yunkun <yunkunrao@yunify.com>
2021-04-19 17:36:01 +08:00
LiHui
77f6c9067d Fix: validate repo when modify url
Signed-off-by: LiHui <andrewli@yunify.com>
2021-04-19 17:13:02 +08:00
KubeSphere CI Bot
37c53db57f Merge pull request #3743 from xyz-li/app-fix
Fix: return all items when limit=-1
2021-04-19 10:59:10 +08:00
KubeSphere CI Bot
f43685f5a7 Merge pull request #3753 from yunkunrao/master
Keep 3 decimal places for metering fee value.
2021-04-19 10:44:10 +08:00
Rao Yunkun
6952cf218f Update Unit Test.
Signed-off-by: Rao Yunkun <yunkunrao@yunify.com>
2021-04-17 09:39:31 +08:00
Rao Yunkun
129ae3d6ee Keep 3 decimal places for metering fee value.
Signed-off-by: Rao Yunkun <yunkunrao@yunify.com>
2021-04-16 17:34:43 +08:00
LiHui
5b3c524afa Fix: return all items when limit=-1
Signed-off-by: LiHui <andrewli@yunify.com>
2021-04-16 16:57:14 +08:00
KubeSphere CI Bot
330148094f Merge pull request #3750 from wansir/master
Fix user status change after update
2021-04-16 13:08:02 +08:00
KubeSphere CI Bot
3b589cb5d2 Merge pull request #3731 from Sherlock113/automes
Update host cluster desc
2021-04-16 13:07:08 +08:00
hongming
744f88ea19 Fix user status change after update
Signed-off-by: hongming <talonwan@yunify.com>
2021-04-16 11:24:48 +08:00
KubeSphere CI Bot
f3dc09ffe4 Merge pull request #3727 from xyz-li/app-fix1
Add labels to all objects but not selectors
2021-04-16 11:23:18 +08:00
KubeSphere CI Bot
ffb0de0f5a Merge pull request #3741 from xyz-li/app-fix
Fix search bugs in app template page
2021-04-15 18:20:07 +08:00
LiHui
5e09533483 Fix: make search case-insensitive
Signed-off-by: LiHui <andrewli@yunify.com>
2021-04-15 16:36:48 +08:00
LiHui
e88f83c167 Add labels to all objects but not selectors
Signed-off-by: LiHui <andrewli@yunify.com>
2021-04-15 15:46:50 +08:00
LiHui
ce4cfbee51 update modules kustomize add helm
Signed-off-by: LiHui <andrewli@yunify.com>
2021-04-15 15:45:47 +08:00
LiHui
8697fd5d3c Fix: trim chart name prefix from chart file path
Signed-off-by: LiHui <andrewli@yunify.com>
2021-04-15 14:58:05 +08:00
KubeSphere CI Bot
e587887aac Merge pull request #3733 from zhu733756/master
fix bug that edge metrcis test run failed
2021-04-15 10:59:07 +08:00
zhu733756
c3cf47a6a6 fix bug that edge metrcis test run failed
Signed-off-by: zhu733756 <talonzhu@yunify.com>
2021-04-15 10:00:17 +08:00
KubeSphere CI Bot
0f55e466ab Merge pull request #3728 from xyz-li/app-fix
Fix: add kubeconfig when check release status
2021-04-15 09:49:07 +08:00
Sherlock113
cdcd42a6a3 Update host cluster desc
Signed-off-by: Sherlock113 <sherlockxu@yunify.com>
2021-04-14 17:46:29 +08:00
LiHui
b50c677593 Fix: add kubeconfig when check release status
Signed-off-by: LiHui <andrewli@yunify.com>
2021-04-14 16:01:37 +08:00
Zhengyi Lai
8d43b2a909 Merge pull request #3710 from xyz-li/app
Add owner files for the application relevant code base
2021-04-14 10:07:02 +08:00
KubeSphere CI Bot
1a24c99c45 Merge pull request #3715 from zhu733756/fix-bug-for-node-metrics-on-overview-page
fix bug for node metrics on overview page
2021-04-13 23:01:02 +08:00
KubeSphere CI Bot
4a4d5d4a03 Merge pull request #3721 from xyz-li/app-fix1
Fix: filter app by app_id
2021-04-13 18:33:02 +08:00
zryfish
1031853757 Fix: filter app by app_id
Signed-off-by: LiHui <andrewli@yunify.com>
2021-04-13 17:43:10 +08:00
zhu733756
f49a9c1620 fix bug for node metrics on overview page
Signed-off-by: zhu733756 <talonzhu@yunify.com>
2021-04-13 15:46:22 +08:00
zryfish
26e5c31d8f fix nightly build version (#3717)
Signed-off-by: Jeff <jeffzhang@yunify.com>
2021-04-13 15:42:16 +08:00
KubeSphere CI Bot
fdfdc3c995 Merge pull request #3702 from yuswift/update_manifests
upgrade crd to apiextensions.k8s.io/v1 && generate crd files
2021-04-13 15:41:16 +08:00
yuswift
644a08aff3 upgrade controller-tools to v0.4.1
Signed-off-by: yuswift <yuswift2018@gmail.com>
2021-04-12 16:31:10 +08:00
KubeSphere CI Bot
a9a0be79d1 Merge pull request #3711 from yuswift/upgrade_crd
upgrade crd to apiextensions/v1
2021-04-11 13:35:15 +08:00
KubeSphere CI Bot
a055e8edd1 Merge pull request #3709 from faweizhao26/master1
Fix the broken link of 'what-is-kubesphere'
2021-04-11 13:33:00 +08:00
KubeSphere CI Bot
f75e049187 Merge pull request #3698 from zhu733756/fix-bug-for-pod-metrics-on-edge-node
fix bug where the edge node container groups tab could not see pod metrics
2021-04-11 13:32:01 +08:00
KubeSphere CI Bot
0f3e48ba30 Merge pull request #3694 from xyz-li/app-fix
check release resources status
2021-04-11 13:31:15 +08:00
lxm
af536c0c96 [feature] use buildx to produce multi arch image kubesphere#3683
Signed-off-by: lxm <lxm.xupt@gmail.com>
2021-04-10 00:06:07 +08:00
KubeSphere CI Bot
c3530af84a Merge pull request #3712 from xyz-li/app-fix1
Fix: update time of charts
2021-04-09 17:15:59 +08:00
LiHui
5bb2884f76 Fix: update time of charts
Signed-off-by: LiHui <andrewli@yunify.com>
2021-04-09 16:55:09 +08:00
yuswift
a35da047f3 upgrade crd to apiextensions/v1
Signed-off-by: yuswift <yuswift2018@gmail.com>
2021-04-09 16:00:28 +08:00
zhu733756
f6dd42f494 fix-bug-for-pod-metrics-on-edge-node
Signed-off-by: zhu733756 <talonzhu@yunify.com>
2021-04-09 13:01:32 +08:00
LiHui
620f65410a add OWNERS file
Signed-off-by: LiHui <andrewli@yunify.com>
2021-04-09 11:50:57 +08:00
KubeSphere CI Bot
6ef2a019c9 Merge pull request #3703 from xyz-li/app-fix1
Fix: update chart data & sort by time of release list
2021-04-09 11:43:59 +08:00
LiHui
74fb76a48e reverse order of release list
Signed-off-by: LiHui <andrewli@yunify.com>
2021-04-09 11:27:10 +08:00
LiHui
c023fb13a0 update chart data
Signed-off-by: LiHui <andrewli@yunify.com>
2021-04-09 11:27:05 +08:00
faweizhao26
db344c84d0 modified README_zh.md
Signed-off-by: faweizhao26 <faweizhao@yunify.com>
2021-04-09 11:16:38 +08:00
KubeSphere CI Bot
bb440927d2 Merge pull request #3706 from junotx/ca
fix notification triggering again after alerting rule changes
2021-04-09 10:27:59 +08:00
KubeSphere CI Bot
0688ca4472 Merge pull request #3696 from wanjunlei/notification
fix bug member cluster can not view the notification channels
2021-04-09 10:02:59 +08:00
LiHui
0d99eb483b add exetra labels to application resource
Signed-off-by: LiHui <andrewli@yunify.com>
2021-04-08 18:36:31 +08:00
LiHui
fc165f97d8 check helm release is ready or not
Signed-off-by: LiHui <andrewli@yunify.com>
2021-04-08 18:36:29 +08:00
junot
5346c6b1ae fix notification triggering again after alerting rule changes
Signed-off-by: junot <junotxiang@yunify.com>
2021-04-08 17:18:36 +08:00
yuswift
adef4b5e43 upgrade crd to apiextensions.k8s.io/v1 && generate crd files
Signed-off-by: yuswift <yuswiftli@yunify.com>
2021-04-08 17:05:04 +08:00
zryfish
6a58572167 set fetch depth of checkout action to fetch all history and tags (#3699)
Signed-off-by: Jeff <jeffzhang@yunify.com>
2021-04-08 12:00:21 +08:00
wanjunlei
cbdc81a10a resolve conversation and add some test code
Signed-off-by: wanjunlei <wanjunlei@yunify.com>
2021-04-08 11:48:20 +08:00
KubeSphere CI Bot
4fc4e48d35 Merge pull request #3692 from yunkunrao/bug-fix
Add namespacedResourcesFilter field back in reqParams struct.
2021-04-07 23:03:13 +08:00
wanjunlei
8f62294760 fix bug member cluster can not view the notification channels
Signed-off-by: wanjunlei <wanjunlei@yunify.com>
2021-04-07 18:13:02 +08:00
Rao Yunkun
d531d6b671 Update UT.
Signed-off-by: Rao Yunkun <yunkunrao@yunify.com>
2021-04-07 17:15:44 +08:00
KubeSphere CI Bot
3bebc4f03b Merge pull request #3688 from RolandMa1986/feat-deleteworkspace
feat: optional cascade delete resources when deleting workspace
2021-04-07 16:58:13 +08:00
KubeSphere CI Bot
ea80ca727a Merge pull request #3691 from yuswift/add_ksVersion_field
add kubesphereversion field for cluser.status
2021-04-07 15:29:13 +08:00
Rao Yunkun
43eaf904f6 Add namespacedResourcesFilter field back in reqParams struct.
Signed-off-by: Rao Yunkun <yunkunrao@yunify.com>
2021-04-07 15:22:56 +08:00
yuswift
3b00fc6d5e add kubesphereversion field for cluser.status
Signed-off-by: yuswift <yuswiftli@yunify.com>

adopt reviews from @LinuxSuRen
2021-04-07 15:12:15 +08:00
Roland.Ma
68e8327453 refine code
Signed-off-by: Roland.Ma <rolandma@yunify.com>
2021-04-07 03:53:05 +00:00
KubeSphere CI Bot
f382847fb7 Merge pull request #3690 from yuswift/update_kubefed_dependency
upgrade kubefed client to v0.6.1
2021-04-07 10:23:58 +08:00
yuswift
82cd5c454e upgrade kubefed client to v0.6.1
Signed-off-by: yuswift <yuswiftli@yunify.com>
2021-04-06 19:43:43 +08:00
KubeSphere CI Bot
565a97fb6d Merge pull request #3547 from pingstar/dev
Fix: the panic caused by parsing requestinfo slice access out of bounds
2021-04-06 16:29:13 +08:00
Roland.Ma
c3723a3738 refined e2e testing
Signed-off-by: Roland.Ma <rolandma@yunify.com>
2021-04-06 07:32:53 +00:00
Roland.Ma
133a67ce92 feat: optional cascade delete resources when deleting workspace
Signed-off-by: Roland.Ma <rolandma@yunify.com>
2021-04-06 02:38:04 +00:00
KubeSphere CI Bot
828d2c6d37 Merge pull request #3687 from zryfish/add_version_sub_command
add version sub command
2021-04-06 10:01:56 +08:00
Jeff
2952bf4a3b add version sub command
Signed-off-by: Jeff <zw0948@gmail.com>
2021-04-06 02:00:33 +00:00
Jeff
d98c4e8311 add version sub command
Signed-off-by: Jeff <zw0948@gmail.com>
2021-04-05 15:44:27 +00:00
KubeSphere CI Bot
5f325bd0d2 Merge pull request #3635 from daniel-hutao/feat-basicAuth
Let ks-apiserver optionally support authentication enabled and es without authentication enabled;
2021-04-02 21:43:53 +08:00
KubeSphere CI Bot
06fa276d60 Merge pull request #3680 from RolandMa1986/fix-3671
Cascade deleting groups when workspace is deleted
2021-04-02 21:42:53 +08:00
KubeSphere CI Bot
162a949982 Merge pull request #3643 from yunkunrao/master
Intergate OpenPitrix metrics into metering.
2021-04-02 21:41:53 +08:00
Roland.Ma
94a50e5c6b add ut
Signed-off-by: Roland.Ma <rolandma@yunify.com>
2021-04-02 08:28:37 +00:00
Roland.Ma
2e5adb6e36 cascade deleting groups when workspace is deleted.
Signed-off-by: Roland.Ma <rolandma@yunify.com>
2021-04-02 06:11:44 +00:00
Daniel Hu
3798959eef Let ks-apiserver optionally support authentication enabled and es without authentication enabled
Signed-off-by: Daniel Hu <farmer.hutao@outlook.com>
2021-04-02 05:59:57 +00:00
KubeSphere CI Bot
066dfe7066 Merge pull request #3674 from junotx/ca
fix case-insensitive keyword query and consistent state for alerting
2021-04-02 11:07:10 +08:00
KubeSphere CI Bot
524f98c50f Merge pull request #3662 from RolandMa1986/fix-fedgroup
fix:group was updated continuously in member cluster
2021-04-02 11:06:53 +08:00
junotx
935df8622a make func more readable for alerting
Signed-off-by: junotx <junotxiang@yunify.com>
2021-04-02 10:53:44 +08:00
junotx
66c0e0dad1 fix consistent state for alerting rule
Signed-off-by: junotx <junotxiang@yunify.com>
2021-04-02 10:53:05 +08:00
junotx
68b0b8f4ba fix case-insensitive keyword query for alerting
Signed-off-by: junotx <junotxiang@yunify.com>
2021-04-02 10:51:14 +08:00
KubeSphere CI Bot
0c40dd854d Merge pull request #3627 from wansir/fix-3598
decoupling with Jenkins and LDAP
2021-04-02 10:14:53 +08:00
KubeSphere CI Bot
e0cecf9fa4 Merge pull request #3663 from yuswift/update_verify-goimports.sh
ignore pkg/apis dir when running make goimports
2021-04-02 10:09:10 +08:00
KubeSphere CI Bot
6973f7895c Merge pull request #3667 from wansir/fix-3652
Fix workspace controller manager
2021-04-01 19:04:52 +08:00
Rao Yunkun
bb024d8ad4 Add code comments and clean code.
Signed-off-by: Rao Yunkun <yunkunrao@yunify.com>
2021-04-01 18:37:33 +08:00
KubeSphere CI Bot
364c806ddd Merge pull request #3659 from RolandMa1986/fix-3620
Renew kubeconfig certificate
2021-04-01 17:45:52 +08:00
hongming
f23771b3eb Fix owner reference conflict
Signed-off-by: hongming <talonwan@yunify.com>
2021-04-01 12:09:38 +08:00
Roland.Ma
8e1aa7848d refine comments
Signed-off-by: Roland.Ma <rolandma@yunify.com>
2021-04-01 03:15:14 +00:00
hongming
3e8597cf76 decoupling Jenkins and LDAP
Signed-off-by: hongming <talonwan@yunify.com>
2021-04-01 11:10:02 +08:00
KubeSphere CI Bot
cae0c6c37e Merge pull request #3654 from wansir/fix-3652
Fix owner reference conflict
2021-04-01 11:02:53 +08:00
yuswift
9bc6e6eedb ignore pkg/apis dir when running make goimports
Signed-off-by: yuswift <yuswiftli@yunify.com>
2021-04-01 10:29:30 +08:00
hongming
b7f0ce44f2 Fix owner reference conflict
Signed-off-by: hongming <talonwan@yunify.com>
2021-04-01 09:59:15 +08:00
Roland.Ma
60f1f5240b fix:group was updated continuously in member cluster
Signed-off-by: Roland.Ma <rolandma@yunify.com>
2021-03-31 14:16:27 +00:00
Rao Yunkun
836b279fee Update metering UT.
Signed-off-by: Rao Yunkun <yunkunrao@yunify.com>
2021-03-31 22:04:17 +08:00
KubeSphere CI Bot
a7cbc6f878 Merge pull request #3651 from xyz-li/app-fix
Fix: fix app repo and helm app bugs
2021-03-31 20:29:52 +08:00
KubeSphere CI Bot
20106d9f92 Merge pull request #3658 from yuswift/upgrade_kubefed
upgrade kubefed to v0.7.0
2021-03-31 19:49:52 +08:00
Roland.Ma
23b6ca3806 renew kubeconfig certificate
Signed-off-by: Roland.Ma <rolandma@yunify.com>
2021-03-31 10:13:37 +00:00
yuswift
b34c9fb9f5 upgrade kubefed to v0.7.0
Signed-off-by: yuswift <yuswiftli@yunify.com>
2021-03-31 18:12:10 +08:00
Rao Yunkun
76ffaa8794 Update UT
Signed-off-by: Rao Yunkun <yunkunrao@yunify.com>
2021-03-31 16:58:10 +08:00
LiHui
610393bb57 Fix: show app icon
Signed-off-by: LiHui <andrewli@yunify.com>
2021-03-31 15:00:37 +08:00
LiHui
61a990c75e Fix: update repo
Signed-off-by: LiHui <andrewli@yunify.com>
2021-03-31 15:00:37 +08:00
LiHui
2ae3823a5e Fix: show app name in review list
Signed-off-by: LiHui <andrewli@yunify.com>
2021-03-31 15:00:30 +08:00
KubeSphere CI Bot
6cdbf33635 Merge pull request #3526 from zhu733756/add-pod-level-metrics
Add pod level metrics for edge node
2021-03-31 14:43:48 +08:00
zhu733756
96d60da98e add pod level metrics for edge node
Signed-off-by: zhu733756 <talonzhu@yunify.com>
2021-03-31 11:54:33 +08:00
LiHui
9e235ce0df Fix: update application status when it has changed
Signed-off-by: LiHui <andrewli@yunify.com>
2021-03-31 11:48:58 +08:00
Rao Yunkun
845f6bbe89 Intergate OpenPitrix metrics into metering.
Signed-off-by: Rao Yunkun <yunkunrao@yunify.com>
2021-03-30 18:13:18 +08:00
KubeSphere CI Bot
ea93f3832d Merge pull request #3638 from LinuxSuRen/bitbucket-org-key
Add Bitbucket organization field "key"
2021-03-30 16:53:09 +08:00
KubeSphere CI Bot
2dfa248952 Merge pull request #3441 from yunkunrao/master
Update metering csv export format and intergrate metering module.
2021-03-30 16:52:35 +08:00
Rao Yunkun
d08e402384 Integate metering module and support metering data csv format export.
Signed-off-by: Rao Yunkun <yunkunrao@yunify.com>
2021-03-30 15:46:16 +08:00
rick
2ecaff3b6e Add Bitbucket organization field "key"
Signed-off-by: rick <1450685+LinuxSuRen@users.noreply.github.com>
2021-03-30 14:18:07 +08:00
zryfish
ac275b6e98 add goimports format action (#3630)
Signed-off-by: Jeff <jeffzhang@yunify.com>
2021-03-30 13:44:24 +08:00
KubeSphere CI Bot
40e3751e43 Merge pull request #3588 from LinuxSuRen/pipeline-json-missing-env
Fix fields missing when convert Jenkinsfile to JSON
2021-03-29 18:07:30 +08:00
KubeSphere CI Bot
64fc89212f Merge pull request #3590 from xyz-li/app-fix1
Fix: remove checks when delete release
2021-03-29 14:54:47 +08:00
KubeSphere CI Bot
7d661e90b9 Merge pull request #3486 from wansir/update-vendor
update vendor directory
2021-03-29 10:54:47 +08:00
rick
a545effee9 Fix fields missing when convert Jenkinsfile to JSON
Signed-off-by: rick <1450685+LinuxSuRen@users.noreply.github.com>
2021-03-29 10:50:24 +08:00
KubeSphere CI Bot
652c1a4c68 Merge pull request #3595 from LinuxSuRen/fix-pipe-input-admin
Fix that devops admin users cannot approve a Pipeline input
2021-03-29 10:42:09 +08:00
KubeSphere CI Bot
0f2ac8ae17 Merge pull request #3584 from wansir/refactor
Remove useless log output
2021-03-29 09:04:09 +08:00
KubeSphere CI Bot
f9c807fab3 Merge pull request #3594 from zhu733756/fix-request-edgenode-metrics-everytime
Request edge metrics only if prometheus metrics data is empty
2021-03-29 08:35:47 +08:00
KubeSphere CI Bot
c356789aca Merge pull request #3600 from yuswift/change_http_code
change http response code to 400 when the cluster is not ready
2021-03-29 08:34:09 +08:00
yuswift
fe23feff85 change http response code to 400 when the cluster is not ready
Signed-off-by: yuswift <yuswiftli@yunify.com>
2021-03-26 16:00:29 +08:00
rick
baa7ae4d69 Fix that devops admin users cannot approve a Pipeline input
Signed-off-by: rick <1450685+LinuxSuRen@users.noreply.github.com>
2021-03-26 13:29:25 +08:00
zhu733756
78a97fea05 fix variable naming errors
Signed-off-by: zhu733756 <talonzhu@yunify.com>
2021-03-26 11:18:47 +08:00
hongming
b83b3232cb remove useless log output
Signed-off-by: hongming <talonwan@yunify.com>
2021-03-26 11:15:45 +08:00
zhu733756
5b3bced5d7 Request edge metrics only if prometheus metrics data is empty
Signed-off-by: zhu733756 <talonzhu@yunify.com>
2021-03-26 10:30:18 +08:00
KubeSphere CI Bot
fbd200b4ab Merge pull request #3589 from yuswift/fix/502_error_when_joining_clusters_again
fix 502 error when joining the same cluster with a different name
2021-03-26 09:32:29 +08:00
天璇
cba14936c5 Update powered-by-kubesphere.md (#3576) 2021-03-26 09:25:48 +08:00
KubeSphere CI Bot
40e5920c3e Merge pull request #3574 from xyz-li/app-fix
Fix: handle invalid semver
2021-03-26 09:24:45 +08:00
KubeSphere CI Bot
84d28f3186 Merge pull request #3575 from RolandMa1986/fix-uttimeout
fix ut timeout issue example
2021-03-26 09:19:07 +08:00
LiHui
cac5daa429 Fix: save description when install release
Signed-off-by: LiHui <andrewli@yunify.com>
2021-03-25 23:57:39 +08:00
LiHui
9fc0f8d89b Fix: remove checks of the exists of release when delete app and repo
Signed-off-by: LiHui <andrewli@yunify.com>
2021-03-25 23:57:39 +08:00
LiHui
542eb180c5 Fix: return app creator
Signed-off-by: LiHui <andrewli@yunify.com>
2021-03-25 23:57:33 +08:00
yuswift
ce3b5a026a fix 502 error when joining the same cluster with a different name
Signed-off-by: yuswift <yuswiftli@yunify.com>
2021-03-25 22:08:08 +08:00
LiHui
231d2213d3 Fix: handlet invalid semver
Signed-off-by: LiHui <andrewli@yunify.com>
2021-03-25 21:52:34 +08:00
KubeSphere CI Bot
8ca0c86b39 Merge pull request #3577 from wansir/fix-unit-test
fix unit test timeout
2021-03-25 12:18:07 +08:00
hongming
c1574175e1 update vendor directory
Signed-off-by: hongming <talonwan@yunify.com>
2021-03-25 11:33:41 +08:00
hongming
4663f70ec4 fix unit test timeout
Signed-off-by: hongming <talonwan@yunify.com>
2021-03-25 11:28:13 +08:00
Roland.Ma
702d181fb6 fix ut timeout issue
Signed-off-by: Roland.Ma <rolandma@yunify.com>
2021-03-25 02:00:00 +00:00
KubeSphere CI Bot
e6bbff1111 Merge pull request #3548 from zackzhangkai/master
fix import error
2021-03-25 08:56:46 +08:00
KubeSphere CI Bot
d5fdfd5172 Merge pull request #3550 from LinuxSuRen/fix-url-redundant-check
Fix the BitBucket endpoint URL redundant checking
2021-03-25 08:55:45 +08:00
KubeSphere CI Bot
46e064870e Merge pull request #3522 from LinuxSuRen/fix-pipeline-runs-paging
Fix the Pipeline runs paging issues caused by BlueOcean plugin
2021-03-24 09:42:44 +08:00
KubeSphere CI Bot
8d96805592 Merge pull request #3527 from wanjunlei/nm
fix bug can not delete notification secret
2021-03-24 09:07:07 +08:00
rick
57ffd36282 Fix the BitBucket endpoint URL redundant checking
Signed-off-by: rick <1450685+LinuxSuRen@users.noreply.github.com>
2021-03-23 10:25:52 +08:00
zackzhangkai
ab7abe5e35 fix import error
Signed-off-by: zackzhangkai <zhangkaiamm@gmail.com>
2021-03-23 09:33:18 +08:00
pingstar
8e2fc3a425 Fix: the panic caused by parsing requestinfo slice access out of bounds
Signed-off-by: pingstar <kubeshared.com@gmail.com>
2021-03-22 22:29:55 +08:00
rick
a2ef07ed82 Move the code lines about getting pipelineRuns with remote paging into a new function: listPipelineRunsByRemotePaging
Signed-off-by: rick <1450685+LinuxSuRen@users.noreply.github.com>
2021-03-22 13:38:09 +08:00
KubeSphere CI Bot
6fbaedfaf2 Merge pull request #3524 from LinuxSuRen/set-default-weather-score
Set default value of weatherScore to 100
2021-03-22 13:17:06 +08:00
zryfish
fb2db3e164 fix concurrent map writes (#3529)
Signed-off-by: Jeff <jeffzhang@yunify.com>
2021-03-22 13:14:14 +08:00
wanjunlei
1fdeeaeb42 fix bug can not delete notification secret
Signed-off-by: wanjunlei <wanjunlei@yunify.com>
2021-03-21 09:50:34 +08:00
rick
727dffffe2 Set default value of weatherScore to 100
Having a ressonable default value can avoid confusing result. 0 should not be default value of weatherScore

Signed-off-by: rick <1450685+LinuxSuRen@users.noreply.github.com>
2021-03-19 15:12:37 +08:00
KubeSphere CI Bot
9c614bef98 Merge pull request #3490 from wanjunlei/nm
change kubesphere-monitoring-federated to system namespace
2021-03-19 14:48:06 +08:00
KubeSphere CI Bot
d6c7b0ae9e Merge pull request #3505 from LinuxSuRen/fix-multi-branch-input
Fix Pipeline input failed in multi-branch mode
2021-03-19 14:22:05 +08:00
KubeSphere CI Bot
0a40cfdf0c Merge pull request #3465 from xyz-li/app-fix
Fix nil pointer and delete helmRelease
2021-03-19 14:20:05 +08:00
KubeSphere CI Bot
b2fc11808b Merge pull request #3462 from junotx/cmfix
add monitoring dashboard query api
2021-03-19 14:19:05 +08:00
rick
8d8f685dc3 Fix the Pipeline runs paging issues caused by BlueOcean plugin
Signed-off-by: rick <1450685+LinuxSuRen@users.noreply.github.com>
2021-03-19 09:14:06 +08:00
LiHui
dd8429c542 Fix: nil s3Client of attachment api
Signed-off-by: LiHui <andrewli@yunify.com>

format code

Signed-off-by: LiHui <andrewli@yunify.com>

Fix: delete helmRelease on host when delete member cluster

Signed-off-by: LiHui <andrewli@yunify.com>

Fix: modify repo credential

Signed-off-by: LiHui <andrewli@yunify.com>

remove not exitsts charts from helm repo

Signed-off-by: LiHui <andrewli@yunify.com>
2021-03-18 15:26:23 +08:00
rick
bc0be03603 Fix Pipeline input failed in multi-branch mode
Signed-off-by: rick <1450685+LinuxSuRen@users.noreply.github.com>
2021-03-18 08:36:21 +08:00
KubeSphere CI Bot
ac3e83b4eb Merge pull request #3491 from duanjiong/ippool
modify ippool api resource to namespace scope
2021-03-17 10:15:41 +08:00
Duan Jiong
ff1587f445 modify ippool api resource to namespace scope
sync namespace annotation when ippool is deleting

Signed-off-by: Duan Jiong <djduanjiong@gmail.com>
2021-03-16 19:41:26 +08:00
wanjunlei
3ff10a65d2 resolve conversation
Signed-off-by: wanjunlei <wanjunlei@yunify.com>
2021-03-16 19:13:04 +08:00
wanjunlei
8e28925df3 change kubesphere-monitoring-federated to system namespace
Signed-off-by: wanjunlei <wanjunlei@yunify.com>
2021-03-16 18:40:26 +08:00
KubeSphere CI Bot
3a79df0da5 Merge pull request #3467 from RolandMa1986/feat-e2e-restclient
Refine group e2e test
2021-03-16 11:49:40 +08:00
junotx
a8b9211416 updating dashboard dependency version and resolve conflicts
Signed-off-by: junotx <junotx@126.com>
2021-03-16 10:49:49 +08:00
junotx
0c1f994695 monitoring dashboard dependency vendor
Signed-off-by: junotx <junotx@126.com>
2021-03-16 10:27:20 +08:00
junotx
4f5c1378f8 add monitoring dashboard query api
Signed-off-by: junotx <junotx@126.com>
2021-03-16 10:27:19 +08:00
Roland.Ma
8a1c453412 refine group e2e test
Signed-off-by: Roland.Ma <rolandma@yunify.com>
2021-03-15 02:54:31 +00:00
KubeSphere CI Bot
b573d7ec58 Merge pull request #3461 from wansir/fix-3460
fix unauthorized resource access
2021-03-14 21:08:39 +08:00
KubeSphere CI Bot
686b180f3f Merge pull request #3442 from xyz-li/app
add extra annotations and labels to helm release
2021-03-14 21:04:02 +08:00
hongming
ad38e692ff fix unauthorized resource access
Signed-off-by: hongming <talonwan@yunify.com>
2021-03-12 18:13:00 +08:00
KubeSphere CI Bot
147f502257 Merge pull request #3356 from wanjunlei/nm
support customize notification receiver
2021-03-12 16:53:01 +08:00
KubeSphere CI Bot
fcdcdbee0c Merge pull request #3458 from xyz-li/app-fix
Fix nil pointer and missing router
2021-03-12 14:21:01 +08:00
LiHui
263f07fe30 Fix: add router
Signed-off-by: LiHui <andrewli@yunify.com>
2021-03-12 10:05:44 +08:00
LiHui
0b1a119f76 Fix: add extra annotations and labels to helm release
Signed-off-by: LiHui <andrewli@yunify.com>
2021-03-11 23:34:06 +08:00
LiHui
87c71ed2dd Fix: handle openpititx config
Signed-off-by: LiHui <andrewli@yunify.com>
2021-03-11 18:25:49 +08:00
KubeSphere CI Bot
4f8fc3d483 Merge pull request #3447 from wanjunlei/es
fix bug can not search auditing logs with nil namespace
2021-03-11 11:40:01 +08:00
KubeSphere CI Bot
93ede4b770 Merge pull request #3440 from junotx/ca
fix alerts not retriggered when updating rule
2021-03-11 11:39:37 +08:00
KubeSphere CI Bot
2407511da3 Merge pull request #3437 from zackzhangkai/support_multi_port
support virtualservice multi port
2021-03-11 11:33:01 +08:00
zackzhangkai
676062d760 support virtualservice multi port
Signed-off-by: zackzhangkai <zhangkaiamm@gmail.com>
2021-03-11 11:12:51 +08:00
wanjunlei
e3cf58e84b Integrate all receivers into one crd, and all configs into another crd
Signed-off-by: wanjunlei <wanjunlei@yunify.com>
2021-03-10 18:55:46 +08:00
wanjunlei
d6d2cf002f resolve conversation
Signed-off-by: wanjunlei <wanjunlei@yunify.com>
2021-03-10 17:40:51 +08:00
wanjunlei
f4f5f8283e change notification crd version to v2alpha1
Signed-off-by: wanjunlei <wanjunlei@yunify.com>
2021-03-10 17:36:06 +08:00
wanjunlei
d79104b8a2 change api version to v2alpha1
Signed-off-by: wanjunlei <wanjunlei@yunify.com>
2021-03-10 17:33:30 +08:00
wanjunlei
5e39b7c752 add tenant-level apis for notification secret
Signed-off-by: wanjunlei <wanjunlei@yunify.com>
2021-03-10 17:32:49 +08:00
wanjunlei
d4a8f9bf88 resolve conversation
Signed-off-by: wanjunlei <wanjunlei@yunify.com>
2021-03-10 17:32:49 +08:00
wanjunlei
f9213fcdc8 support customize notification receiver
Signed-off-by: wanjunlei <wanjunlei@yunify.com>
2021-03-10 17:32:48 +08:00
wanjunlei
a6cb91e6fb fix bug can not search auditing logs with nil namespace
Signed-off-by: wanjunlei <wanjunlei@yunify.com>
2021-03-10 14:56:42 +08:00
KubeSphere CI Bot
01600081f6 Merge pull request #3334 from xyz-li/app
manage openpitrix with crd
2021-03-09 19:36:00 +08:00
LiHui
83e6221f3a openpitrix crd
Signed-off-by: LiHui <andrewli@yunify.com>

delete helm repo, release and app

Signed-off-by: LiHui <andrewli@yunify.com>

Fix Dockerfile

Signed-off-by: LiHui <andrewli@yunify.com>

add unit test for category controller

Signed-off-by: LiHui <andrewli@yunify.com>

resource api

Signed-off-by: LiHui <andrewli@yunify.com>

miscellaneous

Signed-off-by: LiHui <andrewli@yunify.com>

resource api

Signed-off-by: LiHui <andrewli@yunify.com>

add s3 repo indx

Signed-off-by: LiHui <andrewli@yunify.com>

attachment api

Signed-off-by: LiHui <andrewli@yunify.com>

repo controller test

Signed-off-by: LiHui <andrewli@yunify.com>

application controller test

Signed-off-by: LiHui <andrewli@yunify.com>

release metric

Signed-off-by: LiHui <andrewli@yunify.com>

helm release controller test

Signed-off-by: LiHui <andrewli@yunify.com>

move constants to /pkg/apis/application

Signed-off-by: LiHui <andrewli@yunify.com>

remove unused code

Signed-off-by: LiHui <andrewli@yunify.com>

add license header

Signed-off-by: LiHui <andrewli@yunify.com>

Fix bugs

Signed-off-by: LiHui <andrewli@yunify.com>

cluster cluent

Signed-off-by: LiHui <andrewli@yunify.com>

format code

Signed-off-by: LiHui <andrewli@yunify.com>

move workspace,cluster from spec to labels

Signed-off-by: LiHui <andrewli@yunify.com>

add license header

Signed-off-by: LiHui <andrewli@yunify.com>

openpitrix test

Signed-off-by: LiHui <andrewli@yunify.com>

add worksapce labels for app in appstore

Signed-off-by: LiHui <andrewli@yunify.com>
2021-03-09 18:30:02 +08:00
junotx
a3d44252f2 fix alerts unretriggered when updating rule
Signed-off-by: junotx <junotx@126.com>
2021-03-09 18:22:05 +08:00
KubeSphere CI Bot
f652be4395 Merge pull request #3436 from lshmouse/typo
Fix a typo of Amazon and the doc link of GKE
2021-03-09 16:41:36 +08:00
Shaohui Liu
2e3d8c4e3b Fix a typo of Amazon and some wrong doc links in README.md
Signed-off-by: Shaohui Liu <liushaohui@xiaomi.com>
2021-03-08 20:09:24 +08:00
KubeSphere CI Bot
6f719e0af6 Merge pull request #3427 from Ma-Dan/master
Add kubeedge API
2021-03-08 19:24:36 +08:00
root
eaf937b15f Add kubeedge API
Signed-off-by: Ma-Dan <danma@yunify.com>
2021-03-08 17:09:05 +08:00
KubeSphere CI Bot
000acad7aa Merge pull request #3432 from LinuxSuRen/fix-choices-param
Fix the issues caused by the differences XML structure between the simple pipline and the multi-branch pipeline
2021-03-08 14:29:36 +08:00
KubeSphere CI Bot
737639020b Merge pull request #3433 from wansir/loginrecord
limit login record entries
2021-03-06 19:47:04 +08:00
KubeSphere CI Bot
88eb1af436 Merge pull request #3409 from junotx/ca
add alerting rule bulk api
2021-03-06 19:46:29 +08:00
hongming
70a0ee40d6 limit login record entries
Signed-off-by: hongming <talonwan@yunify.com>
2021-03-06 14:45:11 +08:00
junotx
302000a650 tweak some variables and comments to alerting bulk
Signed-off-by: junotx <junotx@126.com>
2021-03-05 21:54:56 +08:00
KubeSphere CI Bot
490bb9ec30 Merge pull request #3018 from yunkunrao/metering
Add metering api
2021-03-05 15:34:29 +08:00
Rao Yunkun
d9b681dd8d Merge branch 'master' into metering
Signed-off-by: Rao Yunkun <yunkunrao@yunify.com>
2021-03-05 14:43:30 +08:00
Rao Yunkun
36a6b6682d code clean
Signed-off-by: Rao Yunkun <yunkunrao@yunify.com>
2021-03-05 14:33:51 +08:00
KubeSphere CI Bot
9e3324d5c1 Merge pull request #3431 from LinuxSuRen/fix-boolean-param
Fix unmarshal bool into Go struct due to the boolean parameter
2021-03-05 14:19:28 +08:00
KubeSphere CI Bot
6428160dae Merge pull request #3410 from duanjiong/ippool
fix ippool status statistics
2021-03-05 13:39:03 +08:00
junotx
c92431547f add some comments to alerting bulk
Signed-off-by: junotx <junotx@126.com>
2021-03-05 10:57:39 +08:00
junotx
91f85254aa add alerting rule bulk api
Signed-off-by: junotx <junotx@126.com>
2021-03-05 10:57:39 +08:00
junotx
390647c82a limit size of a rule group
Signed-off-by: junotx <junotx@126.com>
2021-03-05 10:57:39 +08:00
KubeSphere CI Bot
5acce77ad0 Merge pull request #3429 from RolandMa1986/staging-rules
Update staging repo sync rules
2021-03-04 19:04:27 +08:00
Duan Jiong
67cbff464f fix ippool status statistics
and delete ippool label while workspace is deleted

sync default ippool to namespace annotation

Signed-off-by: Duan Jiong <djduanjiong@gmail.com>
2021-03-04 17:50:14 +08:00
rick
39af05f8eb Fix the issues caused by the differences XML structure between the simple pipline and the multi-branch pipeline
Signed-off-by: rick <1450685+LinuxSuRen@users.noreply.github.com>
2021-03-04 16:46:44 +08:00
rick
fe2f2172ba Fix unmarshal bool into Go struct due to the boolean parameter
Signed-off-by: rick <1450685+LinuxSuRen@users.noreply.github.com>
2021-03-04 16:32:33 +08:00
Roland.Ma
e058f938d1 staging repo sync rules
Signed-off-by: Roland.Ma <rolandma@yunify.com>
2021-03-04 06:51:20 +00:00
KubeSphere CI Bot
65f935d0df Merge pull request #3344 from wansir/workspace-quota
support workspace resource quota
2021-03-03 11:19:59 +08:00
KubeSphere CI Bot
b4b7cc4d67 Merge pull request #3412 from yuswift/update_roadmap
update roadmap for multi-cluster
2021-03-03 09:58:25 +08:00
KubeSphere CI Bot
3004ed0eb1 Merge pull request #3423 from RolandMa1986/fix-vendor
Fix update-vendor.sh script
2021-03-02 16:26:24 +08:00
KubeSphere CI Bot
454ffb3288 Merge pull request #3424 from shaowenchen/master
fix: pipeline sync annotations
2021-03-02 15:29:24 +08:00
shaowenchen
921341d8ce fix: pipeline sync annotations
Signed-off-by: shaowenchen <mail@chenshaowen.com>
2021-03-02 15:11:12 +08:00
Roland.Ma
298a5d3827 fix update vendor script
Signed-off-by: Roland.Ma <rolandma@yunify.com>
2021-03-02 05:35:05 +00:00
Rao Yunkun
5bddda51e7 Change metering exported format to csv.
Signed-off-by: Rao Yunkun <yunkunrao@yunify.com>
2021-03-02 11:56:08 +08:00
hongming
70fa24010c support workspace resource quota
Signed-off-by: hongming <talonwan@yunify.com>
2021-03-02 10:42:09 +08:00
KubeSphere CI Bot
d412fdae98 Merge pull request #3416 from zryfish/fix_fmt_issue
fix code format issues
2021-03-01 15:47:58 +08:00
Jeff
a2ede11ee7 fix code format issues
Signed-off-by: Jeff <jeffzhang@yunify.com>
2021-03-01 15:21:15 +08:00
KubeSphere CI Bot
12f8407218 Merge pull request #3403 from zryfish/reconcile_application_with_specified_label
support selective application reconcilation
2021-03-01 15:19:24 +08:00
Jeff
c28afabdd5 application controller will only reconcile applications matched with given label selector
Signed-off-by: Jeff <jeffzhang@yunify.com>
2021-03-01 13:19:26 +08:00
yuswift
88eb5b8f3a update roadmap for multi-cluster
Signed-off-by: yuswift <yuswiftli@yunify.com>
2021-03-01 11:16:45 +08:00
KubeSphere CI Bot
befebadc21 Merge pull request #3408 from wansir/fix-3407
Fix cannot modify UserSpec
2021-02-27 17:23:23 +08:00
hongming
7929dd361e Fix cannot modify UserSpec
Signed-off-by: hongming <talonwan@yunify.com>
2021-02-26 16:13:25 +08:00
KubeSphere CI Bot
ee9c2d114c Merge pull request #3375 from RolandMa1986/feat-e2e-pipeline
add e2e github action
2021-02-26 13:53:10 +08:00
KubeSphere CI Bot
1ff873141a Merge pull request #3396 from RolandMa1986/fix-devopsrole
DevOps roles not been initialed
2021-02-26 13:52:56 +08:00
Roland.Ma
d0c766c311 fix: devops roles not been initialed
Signed-off-by: Roland.Ma <rolandma@yunify.com>
2021-02-25 06:32:44 +00:00
KubeSphere CI Bot
8500a22803 Merge pull request #3394 from duanjiong/ippool
Update calico lib
2021-02-25 11:42:21 +08:00
KubeSphere CI Bot
a57359e97a Merge pull request #3383 from shaowenchen/add_annotations_to_pipeline
feature: add annotations to pipelines for getting syncstatus
2021-02-25 11:05:17 +08:00
KubeSphere CI Bot
e48306d74b Merge pull request #3380 from yuswift/refactor_cluster_controller
refactor cluster controller
2021-02-25 10:52:58 +08:00
Duan Jiong
2705d25e83 Update calico lib
fix struct definition error in v3

Signed-off-by: Duan Jiong <djduanjiong@gmail.com>
2021-02-24 18:06:36 +08:00
Roland.Ma
7aa602e124 e2e github action
Signed-off-by: Roland.Ma <rolandma@yunify.com>
2021-02-24 06:56:23 +00:00
shaowenchen
f6bcdc50fd feature: add annotations to pipelines for getting syncstatus
Signed-off-by: shaowenchen <mail@chenshaowen.com>
2021-02-24 14:19:09 +08:00
yuswift
194d054973 refactor cluster controller
Signed-off-by: yuswift <yuswiftli@yunify.com>
2021-02-24 10:12:42 +08:00
KubeSphere CI Bot
000d309785 Merge pull request #3376 from duanjiong/ippool
Don't exit while synchronizing calico ippool
2021-02-23 14:51:57 +08:00
Duan Jiong
78c7b81ce5 Don't exit while synchronizing calico ippool
Signed-off-by: Duan Jiong <djduanjiong@gmail.com>
2021-02-23 11:31:05 +08:00
KubeSphere CI Bot
a4310e67ee Merge pull request #3372 from benjaminhuo/master
Update roadmap for o11y & edge
2021-02-23 10:16:57 +08:00
KubeSphere CI Bot
68ff7b8328 Merge pull request #3364 from LinuxSuRen/devops-credential-sync
Fix the issues that devops credentials cannot be deleted
2021-02-22 16:54:56 +08:00
KubeSphere CI Bot
898ba72bcb Merge pull request #3370 from zheng1/master
Update OpenPitrix and Network roadmap
2021-02-22 16:38:19 +08:00
Benjamin
27eb3f7da6 Update roadmap for o11y & edge
Signed-off-by: Benjamin <benjamin@yunify.com>
2021-02-22 15:43:34 +08:00
Zhengyi Lai
c7e522afc2 Update OpenPitrix and Network roadmap
Signed-off-by: Zhengyi Lai <zheng1@yunify.com>
2021-02-22 14:51:05 +08:00
KubeSphere CI Bot
e74ca0ead0 Merge pull request #3335 from LinuxSuRen/fix-pipeline-run-err-count
Fix the wrong count of total Pipeline Run number
2021-02-22 14:32:19 +08:00
yunkunrao
e9073f0486 Add metering api.
Signed-off-by: yunkunrao <yunkunrao@yunify.com>
2021-02-22 14:31:10 +08:00
rick
a5ec7b4b00 Set a explicit loggger level in func SendPureRequestWithHeaderResp
Signed-off-by: rick <1450685+LinuxSuRen@users.noreply.github.com>
2021-02-22 14:29:53 +08:00
rick
054d85e6c4 Fix the wrong count of total Pipeline Run number
Signed-off-by: rick <rick@jenkins-zh.cn>
2021-02-22 14:22:08 +08:00
KubeSphere CI Bot
2f5202f38a Merge pull request #3366 from RolandMa1986/feat-e2e
e2e: add client library
2021-02-22 12:19:52 +08:00
KubeSphere CI Bot
dfa1566bb9 Merge pull request #3342 from LinuxSuRen/fix-pip-filter
Fix the Pipeline name filter issues
2021-02-22 11:59:19 +08:00
Roland.Ma
72441f4f14 update e2e build script
Signed-off-by: Roland.Ma <rolandma@yunify.com>
2021-02-22 02:01:13 +00:00
KubeSphere CI Bot
470a87ef63 Merge pull request #3352 from wansir/feature-cas
support CAS identity provider
2021-02-21 11:39:19 +08:00
Rick
6fc5baaca0 Fix the issues that devops credentials cannot be deleted
Signed-off-by: rick <1450685+LinuxSuRen@users.noreply.github.com>
2021-02-20 18:49:08 +08:00
Roland.Ma
fd2f213f3a e2e test framework
Signed-off-by: Roland.Ma <rolandma@yunify.com>
2021-02-20 07:34:31 +00:00
hongming
5f0727cf34 support CAS identity provider
Signed-off-by: hongming <talonwan@yunify.com>
2021-02-20 10:45:55 +08:00
KubeSphere CI Bot
5972c4b66a Merge pull request #3349 from LinuxSuRen/get-latest-resource-version
Trying to avoid the error of `Operation cannot be fulfilled on` by getting the latest resourceVersion
2021-02-20 10:11:18 +08:00
KubeSphere CI Bot
2d73e777f4 Merge pull request #3362 from LinuxSuRen/remove-k8s.io-module
Remove k8s.io/kubernetes from go.mod
2021-02-19 11:59:53 +08:00
rick
5a8e8ca35e Remove k8s.io/kubernetes from go.mod
Signed-off-by: rick <rick@jenkins-zh.cn>
2021-02-19 10:05:19 +08:00
KubeSphere CI Bot
5d9445d18a Merge pull request #3254 from yuswift/feature/validate-member_cluster-config
validate member cluster config while joining member clusters.
2021-02-18 16:57:26 +08:00
KubeSphere CI Bot
e477a213b5 Merge pull request #3360 from yuswift/update_dependency
run update-vendor.sh to update dependencies
2021-02-18 16:38:27 +08:00
yuswift
dcf451dd41 run update-vendor.sh to update dependcy
Signed-off-by: yuswift <yuswiftli@yunify.com>
2021-02-18 15:49:08 +08:00
yuswift
93addfd1cc validate member cluster config
Signed-off-by: yuswift <yuswiftli@yunify.com>
2021-02-18 15:36:36 +08:00
KubeSphere CI Bot
57d72472c3 Merge pull request #3286 from LinuxSuRen/fix-pip-input-approve-check
Fix the incorrect approvable check of Pipeline input
2021-02-18 10:41:26 +08:00
KubeSphere CI Bot
a0780e2bee Merge pull request #3338 from junotx/ca
custom alerting tuning
2021-02-18 10:40:26 +08:00
rick
ff384d30a6 trying to avoid the error of Operation cannot be fulfilled on by getting the latest resourceVersion
Signed-off-by: rick <rick@jenkins-zh.cn>
2021-02-05 09:43:52 +08:00
KubeSphere CI Bot
166dd4ff73 Merge pull request #3346 from RolandMa1986/fix-3343
Fix workspace member count
2021-02-04 22:18:46 +08:00
KubeSphere CI Bot
71b038990b Merge pull request #3330 from zackzhangkai/application-unit-test
add application unit test files
2021-02-04 22:08:46 +08:00
KubeSphere CI Bot
5331ad8fa5 Merge pull request #3319 from yuswift/remove_http1.1_support_code
remove http1.1 support code
2021-02-04 22:07:46 +08:00
Roland.Ma
dc9f0ed4cf fix workspace member count
Signed-off-by: Roland.Ma <rolandma@yunify.com>
2021-02-03 06:38:30 +00:00
junotx
bac3d66fd2 alerting rules default to sort by update time
Signed-off-by: junotx <junotx@126.com>
2021-02-02 17:52:48 +08:00
rick
cab4915795 Fix the Pipeline name filter issues
Signed-off-by: rick <rick@jenkins-zh.cn>
2021-02-02 15:19:55 +08:00
yuswift
c83a0a508e remove_http1.1_support_code
Signed-off-by: yuswift <yuswiftli@yunify.com>
2021-02-02 14:43:45 +08:00
junotx
f57d91511d optimize operations for the latest rule resources
Signed-off-by: junotx <junotx@126.com>
2021-02-02 10:24:49 +08:00
KubeSphere CI Bot
f32e53fce3 Merge pull request #3294 from LinuxSuRen/fix-jenkins-api-proxy
Add support to proxy Jenkins API with POST method
2021-02-01 17:39:17 +08:00
KubeSphere CI Bot
b83b8f89a6 Merge pull request #3337 from shaowenchen/clear_devops
improvement: update owners for devops
2021-02-01 17:34:17 +08:00
junotx
5e7f40e6b9 exclude alerting rule replica label
Signed-off-by: junotx <junotx@126.com>
2021-02-01 17:25:56 +08:00
junotx
a120969be7 optimize alerting rule concurrency
Signed-off-by: junotx <junotx@126.com>
2021-02-01 17:25:30 +08:00
junotx
2893f4cc0e update alerting page param
Signed-off-by: junotx <junotx@126.com>
2021-02-01 17:24:45 +08:00
junotx
cdbce887dd enhance the alerting rule validation
Signed-off-by: junotx <junotx@126.com>
2021-02-01 17:23:35 +08:00
junotx
3a0e089129 add request err with api not enabled to alerting
Signed-off-by: junotx <junotx@126.com>
2021-02-01 17:22:43 +08:00
junotx
5467b2a1a3 make the responses of listing alerts apis consistent
Signed-off-by: junotx <junotx@126.com>
2021-02-01 17:22:18 +08:00
KubeSphere CI Bot
2f490470db Merge pull request #3317 from shaowenchen/fix_query_image
add parameter to allow ignore cert
2021-02-01 17:17:17 +08:00
shaowenchen
2380c3b5cc improvement: update owners for devops
Signed-off-by: shaowenchen <mail@chenshaowen.com>
2021-02-01 17:11:02 +08:00
KubeSphere CI Bot
626c30b9ab Merge pull request #3296 from SxunS/bugfix/ipv4
When the ip4 addres is nil, it should try the next.
2021-02-01 10:59:44 +08:00
zackzhang
31f5f8477b add application unit test files
Signed-off-by: zackzhang <zackzhang@yunify.com>
2021-02-01 09:59:04 +08:00
shaowenchen
774cefcbee add parameter to allow ignore cert
Signed-off-by: shaowenchen <mail@chenshaowen.com>
2021-01-29 18:17:35 +08:00
KubeSphere CI Bot
4fd6e3e95f Merge pull request #3173 from Ma-Dan/master
Add metrics-server client to monitoring
2021-01-29 15:55:43 +08:00
KubeSphere CI Bot
011c4853cc Merge pull request #3291 from LinuxSuRen/pipeline-choice-param
Fix the wrong XML parse of Pipeline choice parameter
2021-01-29 15:23:44 +08:00
KubeSphere CI Bot
c029751dc0 Merge pull request #3289 from yuswift/bugfix/proxy-upgrade
fix proxy upgrade error when using kubeconfig with token
2021-01-29 15:21:43 +08:00
yuswift
a97048b08d fix proxy upgrade error when using kubeconfig with token
Signed-off-by: yuswift <yuswiftli@yunify.com>
2021-01-28 16:07:39 +08:00
rick
530c6911a5 Fix the incorrect approvable check of Pipeline input
Signed-off-by: rick <rick@jenkins-zh.cn>
2021-01-27 11:25:14 +08:00
root
3095fd9403 Add test code to metrics client, and fix metrics items process
Signed-off-by: root <danma@yunify.com>
2021-01-26 08:30:41 +00:00
黎咏
cd4cbf1962 When the ip4 addres is nil, it should try the next.
Signed-off-by: 黎咏 <s_xun_s@163.com>
2021-01-26 12:42:56 +08:00
root
8c86c9e1a5 Add metrics-server client to monitoring
Signed-off-by: root <danma@yunify.com>
2021-01-25 07:10:41 +00:00
KubeSphere CI Bot
38eaa5cde0 Merge pull request #3279 from LinuxSuRen/fix-pipe-list
Fix the pipeline list with incorrect paging calculating
2021-01-25 14:58:41 +08:00
KubeSphere CI Bot
e6365c62d5 Merge pull request #3214 from yuswift/feature/support_configurable_cluster_resync_perioud
Configurable cluster resync perioud
2021-01-25 14:04:42 +08:00
rick
81c0df01fe Fix the wrong XML parse of Pipeline choice parameter
Signed-off-by: rick <rick@jenkins-zh.cn>
2021-01-25 12:01:04 +08:00
rick
2e9367fb70 Add support to proxy Jenkins API with POST method
Signed-off-by: rick <rick@jenkins-zh.cn>
2021-01-25 11:25:59 +08:00
yuswift
9e0a4b69e8 support configurable cluster resync perioud
Signed-off-by: yuswift <yuswiftli@yunify.com>
2021-01-22 18:06:13 +08:00
KubeSphere CI Bot
3c79548262 Merge pull request #3268 from RolandMa1986/feat-sa
Feat ServiceAccount management
2021-01-21 20:03:40 +08:00
KubeSphere CI Bot
7ab1eb1d6a Merge pull request #3189 from wansir/oidc
support OIDC identity provider
2021-01-21 16:13:40 +08:00
KubeSphere CI Bot
eca6a2d07c Merge pull request #3267 from zackzhangkai/fix-controller-manager
fix application reconcile
2021-01-21 15:57:40 +08:00
KubeSphere CI Bot
2e9b42eaf1 Merge pull request #3242 from zackzhangkai/roadmap
add microservice roadmap
2021-01-19 17:11:39 +08:00
KubeSphere CI Bot
bed6465993 Merge pull request #3212 from wanjunlei/es
add a es client for auditing, events, and logging
2021-01-19 17:09:19 +08:00
zackzhang
2b0b36672b fix application reconcile
Signed-off-by: zackzhang <zackzhang@yunify.com>
2021-01-19 14:58:07 +08:00
hongming
ac2bdf2509 support oidc identity provider
Signed-off-by: hongming <talonwan@yunify.com>
2021-01-18 15:12:35 +08:00
rick
c72a106bab Fix the pipeline list with incorrect paging calculating
Signed-off-by: rick <rick@jenkins-zh.cn>
2021-01-18 10:48:35 +08:00
KubeSphere CI Bot
1f4d5cb686 Merge pull request #3181 from junotx/custom-alerting
feature: custom alerting
2021-01-18 10:19:14 +08:00
KubeSphere CI Bot
edbbd682b5 Merge pull request #3239 from yuswift/multi-cluster-roadmap
add roadmap for multi-cluster
2021-01-18 10:17:38 +08:00
yuswift
99c33b37ef add roadmap for multi-cluster
Signed-off-by: yuswift <yuswiftli@yunify.com>
2021-01-18 10:10:37 +08:00
junotx
514fec7eb4 custom alerting use the same API group and flagset to alerting
Signed-off-by: junotx <junotx@126.com>
2021-01-15 13:48:48 +08:00
Roland.Ma
02b0d9247f add serviceaccount contorller
Signed-off-by: Roland.Ma <rolandma@yunify.com>
2021-01-15 05:23:58 +00:00
Roland.Ma
35f7e46c65 feat: add serviceaccounts api
Signed-off-by: Roland.Ma <rolandma@yunify.com>
2021-01-15 05:23:57 +00:00
zackzhang
1ddea23f27 add microservice roadmap
Signed-off-by: zackzhang <zackzhang@yunify.com>
2021-01-15 12:13:34 +08:00
KubeSphere CI Bot
f5e2b05240 Merge pull request #3220 from xyz-li/master
add metrics
2021-01-15 10:16:37 +08:00
KubeSphere CI Bot
ff0861bd1c Merge pull request #3243 from zheng1/roadmap
Add AppStore/Network/Metering Roadmap in v3.1
2021-01-15 10:07:08 +08:00
junotx
6f9d306368 custom alerting resolve conflicts
Signed-off-by: junotx <junotx@126.com>
2021-01-12 16:52:37 +08:00
junotx
9831eb3533 custom alerting optimize
Signed-off-by: junotx <junotx@126.com>
2021-01-12 16:52:36 +08:00
junotx
371c9b187d custom alerting
Signed-off-by: junotx <junotx@126.com>
2021-01-12 16:52:36 +08:00
KubeSphere CI Bot
242193ddb0 Merge pull request #3255 from benjaminhuo/master
Add roadmap for O11y and Edge
2021-01-12 13:57:35 +08:00
KubeSphere CI Bot
a638df58ab Merge pull request #3235 from LinuxSuRen/fix-pipeline-not-sync
Fix the pipeline do not sync with Jenkins
2021-01-11 10:13:35 +08:00
KubeSphere CI Bot
3788124641 Merge pull request #3256 from zheng1/network.topology
Add network.topology into conf.ToMap()
2021-01-11 10:03:35 +08:00
LiHui
e57e602b69 change method name
Signed-off-by: LiHui <andrewli@yunify.com>
2021-01-08 14:16:02 +08:00
KubeSphere CI Bot
b3b7f53583 Merge pull request #3224 from junotx/cme
fix metrics query bug for pods with duplicate name in one node
2021-01-08 14:01:34 +08:00
junotx
9304e839b1 fix metrics query bug for pods with duplicate name in one node
Signed-off-by: junotx <junotx@126.com>
2021-01-08 13:53:49 +08:00
Benjamin
1cfe84d217 Add roadmap for O11y and Edge
Signed-off-by: Benjamin <benjamin@yunify.com>
2021-01-07 18:07:42 +08:00
Zhengyi Lai
492b4ae8c2 Add network.topology into conf.ToMap()
Signed-off-by: Zhengyi Lai <zheng1@yunify.com>
2021-01-06 15:04:43 +08:00
LiHui
bc9fe7f656 add process and goroutine metrics
Signed-off-by: LiHui <andrewli@yunify.com>
2021-01-06 10:23:30 +08:00
LiHui
1ecec78379 enable metrics by default
Signed-off-by: LiHui <andrewli@yunify.com>
2021-01-06 10:18:14 +08:00
LiHui
611f1c6991 add metrics to controller-manager
Signed-off-by: LiHui <andrewli@yunify.com>
2021-01-06 10:18:14 +08:00
LiHui
056bebdec6 fix test
Signed-off-by: LiHui <andrewli@yunify.com>
2021-01-06 10:18:14 +08:00
LiHui
5c8ac10d26 add metrics
Signed-off-by: LiHui <andrewli@yunify.com>
2021-01-06 10:18:14 +08:00
rick
14367d1954 Fix the pipeline do not sync with Jenkins
Signed-off-by: rick <rick@jenkins-zh.cn>
2021-01-06 10:11:59 +08:00
KubeSphere CI Bot
f2e96bce7f Merge pull request #3250 from zackzhangkai/support-customized-repo
support pass customized repo
2021-01-06 09:56:33 +08:00
KubeSphere CI Bot
80a6faf95a Merge pull request #3249 from shaowenchen/feature_devops_roadmap
feature: add devops roadmap
2021-01-06 09:55:33 +08:00
KubeSphere CI Bot
db54eff566 Merge pull request #3240 from wansir/roadmap
update roadmap
2021-01-06 09:54:33 +08:00
KubeSphere CI Bot
ee373b8e55 Merge pull request #3247 from RolandMa1986/group-parent
Cascading deletion of children groups
2021-01-06 09:50:33 +08:00
KubeSphere CI Bot
a7c58617e1 Merge pull request #3222 from wansir/master
update dependencies
2021-01-06 09:47:33 +08:00
zackzhang
324f4aebbb support pass customized repo
Signed-off-by: zackzhang <zackzhang@yunify.com>
2021-01-05 16:21:25 +08:00
Zhengyi Lai
a4cc1d189a Add AppStore/Network/Metering Roadmap in v3.1
Signed-off-by: Zhengyi Lai <zheng1@yunify.com>
2021-01-05 13:34:47 +08:00
shaowenchen
e97947870e feature: add devops 3.1 roadmap
Signed-off-by: shaowenchen <mail@chenshaowen.com>
2021-01-05 11:41:35 +08:00
Zack Zhang
f20c1f33f1 refactor application controller
Signed-off-by: zackzhang <zackzhang@yunify.com>
2021-01-04 16:34:04 +08:00
Roland.Ma
2d6b7fef8b cascading deletion of children groups
Signed-off-by: Roland.Ma <rolandma@yunify.com>
2021-01-04 07:39:50 +00:00
hongming
fe6c5de00f update dependencies
Signed-off-by: hongming <talonwan@yunify.com>
2021-01-04 15:35:32 +08:00
hongming
6a68925d19 update roadmap
Signed-off-by: hongming <talonwan@yunify.com>
2021-01-04 13:18:57 +08:00
KubeSphere CI Bot
4a11a50544 Merge pull request #3238 from RolandMa1986/roadmap
Updates roadmap
2021-01-04 10:48:56 +08:00
Roland.Ma
c8d47446ae update roadmap
Signed-off-by: Roland.Ma <rolandma@yunify.com>
2020-12-31 03:04:58 +00:00
zryfish
d7c214acf5 add v3.1 roadmap (#3237)
Signed-off-by: Jeff <jeffzhang@yunify.com>
2020-12-30 20:17:52 +08:00
KubeSphere CI Bot
078dead7fe Merge pull request #3216 from duanjiong/ippool
add ippool resource api
2020-12-29 19:47:52 +08:00
wanjunlei
83c010c691 resolve conversation
Signed-off-by: wanjunlei <wanjunlei@yunify.com>
2020-12-29 14:58:26 +08:00
Duan Jiong
27b335a9c9 Support ippool configuration status field
Signed-off-by: Duan Jiong <djduanjiong@gmail.com>
2020-12-29 14:32:21 +08:00
Duan Jiong
24e3ac865f add ippool resource api
add ippool webhook and fix some bugs

Signed-off-by: Duan Jiong <djduanjiong@gmail.com>
2020-12-29 14:32:21 +08:00
wanjunlei
039507c9ae add a es client for auditing, events, and logging
Signed-off-by: wanjunlei <wanjunlei@yunify.com>
2020-12-29 14:17:21 +08:00
KubeSphere CI Bot
8a6ce2d7ac Merge pull request #3233 from wansir/informer
fix no informer found
2020-12-29 11:02:52 +08:00
KubeSphere CI Bot
7b0d0682a8 Merge pull request #3228 from LinuxSuRen/daily-build
Add a GitHub action for building nightly images
2020-12-29 10:57:52 +08:00
hongming
0fa3dab250 fix no informer found
Signed-off-by: hongming <talonwan@yunify.com>
2020-12-29 10:26:38 +08:00
KubeSphere CI Bot
d7a8490cde Merge pull request #3229 from wanjunlei/audit-ldap
fix bug Failed to configure LDAP login, error message: socket hang up
2020-12-29 10:23:53 +08:00
KubeSphere CI Bot
d672b6cc98 Merge pull request #3179 from wansir/workspace
refactor workspace controller
2020-12-28 15:06:52 +08:00
hongming
a900b6af4e refactor workspace controller
Signed-off-by: hongming <talonwan@yunify.com>
2020-12-28 14:31:48 +08:00
KubeSphere CI Bot
51c853c886 Merge pull request #3203 from yuswift/bugfix/proxy-cluster-status-sync
[BugFix] Fix cluster unjoin federation plane when using proxy connection
2020-12-28 13:55:52 +08:00
KubeSphere CI Bot
ed18749172 Merge pull request #3201 from wanjunlei/auditing-log2
fix bug get goroutine for audit timeout
2020-12-28 13:55:40 +08:00
KubeSphere CI Bot
eaf8cc40c4 Merge pull request #3217 from RolandMa1986/feat-groupapi
add group api
2020-12-25 22:29:50 +08:00
KubeSphere CI Bot
5ffc76dee9 Merge pull request #3206 from RolandMa1986/fix-clusterjoin
Validate member cluster's workspaces when joining clusters
2020-12-25 17:53:50 +08:00
wanjunlei
ea34bda865 fix bug #3226
Signed-off-by: wanjunlei <wanjunlei@yunify.com>
2020-12-25 11:56:02 +08:00
rick
490a2802c1 Add a GitHub action for building nightly images
Signed-off-by: rick <rick@jenkins-zh.cn>
2020-12-25 11:16:52 +08:00
Roland.Ma
84f5fb7e69 valid member cluster's workspaces when joining
Signed-off-by: Roland.Ma <rolandma@yunify.com>
2020-12-25 03:16:03 +00:00
Roland.Ma
ab6e1f171c UT
Signed-off-by: Roland.Ma <rolandma@yunify.com>
2020-12-24 10:10:39 +00:00
Roland.Ma
bec38d7e0f add group api
Signed-off-by: Roland.Ma <rolandma@yunify.com>
2020-12-24 09:27:59 +00:00
KubeSphere CI Bot
d814d5db7b Merge pull request #3195 from LinuxSuRen/fix/devops-project-del
Fix devops project cannot be deleted due to mess up with finalizer control
2020-12-18 14:03:47 +08:00
KubeSphere CI Bot
ce9ca401c3 Merge pull request #3146 from zackzhangkai/kiali-use-pod-2
using Kiali API directly
2020-12-18 14:02:48 +08:00
zackzhangkai
f153390468 support using Kiali API directly
Signed-off-by: zackzhangkai <zackzhang@yunify.com>
2020-12-17 21:28:16 +08:00
rick
f908aa42f7 Fix devops project cannot be deleted due to mess up with finalizer control
Signed-off-by: rick <rick@jenkins-zh.cn>
2020-12-16 10:08:34 +08:00
KubeSphere CI Bot
ce0f417949 Merge pull request #3149 from LinuxSuRen/import-pipeline-list
Mix up the pipeline list between ks and Jenkins
2020-12-15 11:35:46 +08:00
zryfish
6da7ab03dd remove unused package (#3204)
Signed-off-by: Jeff <jeffzhang@yunify.com>
2020-12-15 11:32:05 +08:00
KubeSphere CI Bot
41fc9636c3 Merge pull request #3199 from fafucoder/master
fixed: check the cluster has initialized
2020-12-14 16:05:45 +08:00
wanjunlei
ee95aeff15 resolve conversation
Signed-off-by: wanjunlei <wanjunlei@yunify.com>
2020-12-14 15:38:11 +08:00
yuswift
ee13aa7c8a fix #3202
Signed-off-by: yuswift <yuswiftli@yunify.com>
2020-12-14 15:30:48 +08:00
linruichao
98ae80207f fixed: check the cluster has initialized
Previously, always check whether the cluster has been initialized, but the updateClusterCondition function always removes the old condition and then adds the new condition, resulting in always returning after updating the initialized condition.

This commit check the cluster has initialized, if initialized will not updated condition

Signed-off-by: linruichao <linruichao@ruijie.com.cn>
2020-12-14 15:02:30 +08:00
wanjunlei
b543ae1a12 fix bug get goroutine for audit timeout
Signed-off-by: wanjunlei <wanjunlei@yunify.com>
2020-12-14 11:10:40 +08:00
rick
e2fee2cd90 Fix two issues according to review opinions
Signed-off-by: rick <rick@jenkins-zh.cn>
2020-12-11 13:38:25 +08:00
rick
3d12019e23 Mix up the pipeline list between ks and Jenkins
Technically we should take the Pipeline list from ks or mixup the instead of only taking it from Jenkins. Because we always manipulate Pipeline from ks.

Signed-off-by: rick <rick@jenkins-zh.cn>
2020-12-11 13:38:20 +08:00
KubeSphere CI Bot
a314b31bf0 Merge pull request #3177 from LinuxSuRen/fix/multi-branch-panic-with-nil
Fix ks-controller panic due to missing nil checking in mutli-branch pipeline
2020-12-11 12:00:45 +08:00
KubeSphere CI Bot
d7607b3eaf Merge pull request #3167 from wansir/sensitive-config
config data desensitization
2020-12-11 10:06:45 +08:00
KubeSphere CI Bot
af5b1fe6be Merge pull request #3193 from junotx/custom-monitoring-enhance
custom monitoring with cluster level
2020-12-11 09:54:45 +08:00
KubeSphere CI Bot
cdc03e78e6 Merge pull request #3190 from LinuxSuRen/fix/artifact-download-er
Fix devops artifact cannot be download due to auth checking
2020-12-10 21:48:44 +08:00
rick
4d9268be3d Fix devops artifact cannot be download due to auth checking
Signed-off-by: rick <rick@jenkins-zh.cn>
2020-12-10 20:33:42 +08:00
KubeSphere CI Bot
1e5fdea5f2 Merge pull request #3140 from wansir/identity-provider
improve identity provider plugin
2020-12-10 19:39:44 +08:00
junotx
933d0b5571 custom monitoring with cluster level
Signed-off-by: junotx <junotx@126.com>
2020-12-10 17:16:38 +08:00
KubeSphere CI Bot
8330e9eb7a Merge pull request #3186 from junotx/monitoring
support for querying pods metrics from the cluster level
2020-12-10 14:38:44 +08:00
hongming
dfaefa5ffb improve identity provider plugin
Signed-off-by: hongming <talonwan@yunify.com>
2020-12-10 14:35:56 +08:00
KubeSphere CI Bot
dab0842a32 Merge pull request #3161 from RolandMa1986/feat-group-fedsync
enable multicluster sync for groups
2020-12-09 15:17:43 +08:00
rick
f50f30e6a3 Refactory pr discover with Bitbucket, avoid using number to compare
Signed-off-by: rick <rick@jenkins-zh.cn>
2020-12-09 14:27:06 +08:00
KubeSphere CI Bot
e4e6405c8c Merge pull request #3178 from RolandMa1986/feat-group-api
filter groupbinding by user field
2020-12-09 13:59:43 +08:00
rick
e4782b37f0 Remove the specified version of jenkins plugin scm-api
Signed-off-by: rick <rick@jenkins-zh.cn>
2020-12-09 13:41:01 +08:00
junotx
1df035ed06 support for querying pods metrics from the cluster level
Signed-off-by: junotx <junotx@126.com>
2020-12-09 10:23:33 +08:00
Roland.Ma
ca041bf4bd filter groupbinding by user field
Signed-off-by: Roland.Ma <rolandma@yunify.com>
2020-12-08 14:27:20 +00:00
KubeSphere CI Bot
91c2e05616 Merge pull request #3180 from LinuxSuRen/fix/pipeline-finalizer
Fix pipeline cannot be removed due to finalizers
2020-12-08 18:01:40 +08:00
KubeSphere CI Bot
1d2204cdfa Merge pull request #3165 from LinuxSuRen/fix/pipeline-cron-tips
Fix the inapproprite errors handle with cron expression checking
2020-12-08 17:59:43 +08:00
KubeSphere CI Bot
bfdef0e67b Merge pull request #3156 from LinuxSuRen/pipeline-approve
Restrict only specific users or admin can approve a pipeline
2020-12-08 17:49:43 +08:00
KubeSphere CI Bot
68979b8f02 Merge pull request #3175 from zackzhangkai/master
add kubeconfig check
2020-12-07 11:55:42 +08:00
rick
4d19c4dbb4 Provide a specific log level instead of using log.error
unifi variable declare style

Signed-off-by: rick <rick@jenkins-zh.cn>
2020-12-07 11:09:37 +08:00
rick
349a4ac965 Fix pipeline cannot be removed due to finalizers
Signed-off-by: rick <rick@jenkins-zh.cn>
2020-12-04 10:22:57 +08:00
Roland.Ma
5248e622f2 enable multicluster sync for groups
Signed-off-by: Roland.Ma <rolandma@yunify.com>
2020-12-03 07:19:31 +00:00
zackzhangkai
062c688287 kiali add kubeconfig check
Signed-off-by: zackzhangkai <zackzhang@yunify.com>
2020-12-03 14:58:42 +08:00
rick
0b4ed3f8c8 Fix ks-controller panic due to missing nil checking in mutli-branch pipeline
Signed-off-by: rick <rick@jenkins-zh.cn>
2020-12-03 13:48:25 +08:00
rick
730657166c Add more error handling when request cron validation
Signed-off-by: rick <rick@jenkins-zh.cn>
2020-12-03 09:45:25 +08:00
KubeSphere CI Bot
e16219be55 Merge pull request #3163 from LinuxSuRen/improve-docker-build
Improve the process of build docker images.
2020-12-02 17:47:40 +08:00
KubeSphere CI Bot
18bb1c116b Merge pull request #3145 from LinuxSuRen/master
Provide a hunman readable error message instead of the raw
2020-12-02 17:44:40 +08:00
KubeSphere CI Bot
efde8dc9a5 Merge pull request #3168 from zackzhangkai/fix_comments
fix comments
2020-12-02 17:41:40 +08:00
rick
164ffbbfda Discard these changes base the discussion on github
discussion thread is here https://github.com/kubesphere/kubesphere/pull/3163#discussion_r533959311

Signed-off-by: rick <rick@jenkins-zh.cn>
2020-12-02 16:12:41 +08:00
rick
92e7349cf9 Fix an issue which the pipeline owner cannot approve his pipeline
Signed-off-by: rick <rick@jenkins-zh.cn>
2020-12-02 14:07:55 +08:00
hongming
13ede7dacc config data desensitization
Signed-off-by: hongming <talonwan@yunify.com>
2020-12-01 15:08:00 +08:00
zackzhangkai
96fe71173a fix comments
Signed-off-by: zackzhangkai <zackzhang@yunify.com>
2020-12-01 12:50:30 +08:00
KubeSphere CI Bot
a31b8dc1cb Merge pull request #3159 from LinuxSuRen/fix/docker-login-issues
Fix the docker login isseus
2020-12-01 11:22:39 +08:00
rick
66dd5ac784 Keep the orignal error messages with log printing instead swallow them
Signed-off-by: rick <rick@jenkins-zh.cn>
2020-12-01 11:14:42 +08:00
KubeSphere CI Bot
2845d4b03b Merge pull request #3151 from zackzhangkai/kiali-filter-ns
just filter out namespace started with kube-
2020-12-01 11:11:39 +08:00
KubeSphere CI Bot
0ce8564535 Merge pull request #3148 from RolandMa1986/feat-userapi
add group filter for user api
2020-12-01 11:09:40 +08:00
KubeSphere CI Bot
fafe5f14e6 Merge pull request #3131 from LinuxSuRen/gitlab-multi-branch-pipeline
Add gitlab multi-branch pipeline support
2020-12-01 10:56:39 +08:00
rick
039dbf8033 Fix the inapproprite errors handle with cron expression checking
Signed-off-by: rick <rick@jenkins-zh.cn>
2020-12-01 10:07:57 +08:00
rick
53c3204902 Allow users to specific goos via env variable
Signed-off-by: rick <rick@jenkins-zh.cn>
2020-11-30 15:20:33 +08:00
rick
8451c18277 Add unit tests for pipeline approve functions
Signed-off-by: rick <rick@jenkins-zh.cn>
2020-11-30 14:09:44 +08:00
rick
df34ee9978 Adding approvable field to indicate if current user can approve a particular step
Signed-off-by: rick <rick@jenkins-zh.cn>
2020-11-30 11:42:41 +08:00
rick
8f4a6d9b93 Restrict only specific users or admin can approve a pipeline
Signed-off-by: rick <rick@jenkins-zh.cn>
2020-11-30 09:28:08 +08:00
zackzhangkai
d78d7f0ad0 just filter out kube-* namespaces
Signed-off-by: zackzhangkai <zackzhang@yunify.com>
2020-11-29 22:30:18 +08:00
rick
dab77ef369 Fix the docker login isseus
It was caused by a unknown situation after improve docker_build.sh.

Fixes #3158

Signed-off-by: rick <rick@jenkins-zh.cn>
2020-11-28 21:31:25 +08:00
KubeSphere CI Bot
c5de21af4a Merge pull request #3129 from LinuxSuRen/fix-docker-login-issues
Avoid docker login everytime even it is done before
2020-11-26 19:35:37 +08:00
KubeSphere CI Bot
1e1c976bca Merge pull request #3147 from LinuxSuRen/fix/default-jenkinsfile
Fix panic against with pipeline-multibranch-defaults-plugin
2020-11-25 19:56:32 +08:00
Roland.Ma
30216c411b add group filter for user api
Signed-off-by: Roland.Ma <rolandma@yunify.com>
2020-11-25 09:41:26 +00:00
rick
00e8b0e5ef Fix panic against with pipeline-multibranch-defaults-plugin
Signed-off-by: rick <rick@jenkins-zh.cn>
2020-11-25 15:38:07 +08:00
rick
d35e22f0be Provide a hunman readable error message instead of the raw
Signed-off-by: rick <rick@jenkins-zh.cn>
2020-11-25 09:07:20 +08:00
zryfish
2e1d75f383 fix makefile build on mac (#3144)
Signed-off-by: Jeff <jeffzhang@yunify.com>
2020-11-24 20:49:51 +08:00
rick
af471bce59 Add unit test cases for gitlab multi-branch pipeline
Signed-off-by: rick <rick@jenkins-zh.cn>
2020-11-24 16:40:26 +08:00
KubeSphere CI Bot
f6186a39c3 Merge pull request #3141 from LinuxSuRen/feature-request-template
Adding a feature request issue template
2020-11-24 14:28:36 +08:00
rick
52c6f5f479 Use camel case style according to review comments
Signed-off-by: rick <rick@jenkins-zh.cn>
2020-11-24 13:54:35 +08:00
rick
573dab2208 Make the logger level as 8 in the DevOps code lines
Signed-off-by: rick <rick@jenkins-zh.cn>
2020-11-24 13:48:29 +08:00
rick
3293948b33 Add gitlab multi-branch pipeline support
Signed-off-by: rick <rick@jenkins-zh.cn>
2020-11-24 13:48:25 +08:00
KubeSphere CI Bot
75e0cf27e4 Merge pull request #3126 from shaowenchen/add_state_for_pipeline
feature: add sync state for devops
2020-11-24 11:46:36 +08:00
KubeSphere CI Bot
5a816f72fc Merge pull request #3125 from LinuxSuRen/discover-tag-support
Add support discover tags for multi-branch pipeline
2020-11-24 11:35:36 +08:00
KubeSphere CI Bot
ab7ecee910 Merge pull request #3138 from RolandMa1986/controller-refactoring
refactor controllers
2020-11-24 11:30:36 +08:00
KubeSphere CI Bot
b5e2037f88 Merge pull request #3139 from wansir/ldap-idp
improve LDAP identity provider
2020-11-24 11:29:36 +08:00
KubeSphere CI Bot
6ca2ecf4b6 Merge pull request #3127 from RolandMa1986/feat-group-rolebinding
add rolebinding api
2020-11-24 11:26:36 +08:00
hongming
00920d3d51 improve LDAP identity provider
Signed-off-by: hongming <talonwan@yunify.com>
2020-11-23 17:29:46 +08:00
Roland.Ma
2f916f4dd9 move package
Signed-off-by: Roland.Ma <rolandma@yunify.com>
2020-11-23 08:47:09 +00:00
Roland.Ma
f8903f19f6 refactor controllers
Signed-off-by: Roland.Ma <rolandma@yunify.com>
2020-11-23 08:47:09 +00:00
Roland.Ma
aa471f998c refine methods
Signed-off-by: Roland.Ma <rolandma@yunify.com>
2020-11-23 06:11:49 +00:00
rick
d8397a1c13 Fix the potential issue caused by commented area mark
Signed-off-by: rick <rick@jenkins-zh.cn>
2020-11-23 11:29:59 +08:00
Roland.Ma
079b43e301 add rolebinding api
Signed-off-by: Roland.Ma <rolandma@yunify.com>
2020-11-23 02:59:48 +00:00
rick
c240fe11e6 Typo fixes
Signed-off-by: rick <rick@jenkins-zh.cn>
2020-11-23 10:47:27 +08:00
rick
1a41519b8b Adding a feature request issue template
Using an issue template is always a good practice when we try to submit an issue.

Signed-off-by: rick <rick@jenkins-zh.cn>
2020-11-23 10:31:48 +08:00
rick
cec7793534 Make the logger level as 8 in the DevOps code lines
Signed-off-by: rick <rick@jenkins-zh.cn>
2020-11-23 09:31:56 +08:00
KubeSphere CI Bot
08d3726da3 Merge pull request #3136 from yuswift/bugfix/multi-cluster-condition
bugfix: multi-cluster-status-condition
2020-11-20 18:13:35 +08:00
yuswift
62b39810a4 bugfix: multi-cluster-status-condition
Signed-off-by: yuswift <yuswiftli@yunify.com>
2020-11-20 16:19:42 +08:00
KubeSphere CI Bot
0d0b1d888f Merge pull request #3098 from wansir/fix-2912
fix: cascade delete resources
2020-11-20 12:09:34 +08:00
KubeSphere CI Bot
954a425e20 Merge pull request #3113 from wansir/fix-3112
fix: private key not match public key
2020-11-20 12:04:34 +08:00
rick
9a9b768aca Add a command to builder docker image without test
Signed-off-by: rick <rick@jenkins-zh.cn>
2020-11-19 15:37:39 +08:00
rick
1783b75c98 Add support discover tags for multi-branch pipeline
Signed-off-by: rick <rick@jenkins-zh.cn>
2020-11-19 15:29:44 +08:00
rick
eb503f4051 Avoid docker login everytime even it is done before
Signed-off-by: rick <rick@jenkins-zh.cn>
2020-11-18 22:35:08 +08:00
KubeSphere CI Bot
f6fea24a75 Merge pull request #3097 from zackzhangkai/update-prom-client-2
Upgrade prometheus dependencies
2020-11-18 10:08:33 +08:00
shaowenchen
38ca2ea39b feature: add sync state for devops
Signed-off-by: shaowenchen <mail@chenshaowen.com>
2020-11-18 00:21:56 +08:00
hongming
f2c99071c2 fix wrong owner reference
Signed-off-by: hongming <talonwan@yunify.com>
2020-11-17 18:27:22 +08:00
zackzhangkai
745ede8519 upgrade prometheus client-go
Signed-off-by: zackzhangkai <zackzhang@yunify.com>
2020-11-17 18:13:43 +08:00
KubeSphere CI Bot
89de94dbf8 Merge pull request #3121 from LinuxSuRen/fix/vet-errs
Fix the errors found by go vet
2020-11-17 18:03:33 +08:00
KubeSphere CI Bot
01cc686cd3 Merge pull request #3080 from zheng1/weave
Add param WeaveScopeHost
2020-11-17 17:25:33 +08:00
Zhengyi Lai
c8f814acf2 Add param WeaveScopeHost
Signed-off-by: Zhengyi Lai <zheng1@yunify.com>
2020-11-17 16:57:11 +08:00
KubeSphere CI Bot
343b2e60f4 Merge pull request #3120 from yuswift/feature/lightweight-membercluster-installation
Feat: support runnig ks-apiserver without redis option && change log level
2020-11-17 11:32:25 +08:00
yuswift
2278132d08 Feat: support runnig ks-apiserver without redis option && change log level
Signed-off-by: yuswift <yuswiftli@yunify.com>
2020-11-17 10:51:07 +08:00
rick
4d19901025 Fix the errors found by go vet
Signed-off-by: rick <rick@jenkins-zh.cn>
2020-11-17 09:23:07 +08:00
KubeSphere CI Bot
e9f709057a Merge pull request #3042 from wansir/fix-3041
Fix container terminal security risk
2020-11-16 13:35:33 +08:00
KubeSphere CI Bot
e7a5955aa5 Merge pull request #3118 from yuswift/feature/lightweight-membercluster-installation
Feat: support runnig ks-controller-manager without ldap option
2020-11-16 13:34:32 +08:00
yuswift
69a27e40aa Feat: support runnig ks-controller-manager without ldap option
Signed-off-by: yuswift <yuswiftli@yunify.com>
2020-11-16 12:19:07 +08:00
hongming
617e969a55 fix: private key not match public key
Signed-off-by: hongming <talonwan@yunify.com>
2020-11-13 18:40:52 +08:00
KubeSphere CI Bot
0b18c571a4 Merge pull request #3109 from RolandMa1986/fix-e2e
fix e2e build issue
2020-11-13 16:38:32 +08:00
hongming
cd99f78768 Fix container terminal security risk
Signed-off-by: hongming <talonwan@yunify.com>
2020-11-13 16:37:33 +08:00
KubeSphere CI Bot
1cb1eb4f6d Merge pull request #3104 from LinuxSuRen/imporove-issues-template
Make the issues template can keep comment section
2020-11-13 14:28:08 +08:00
Roland.Ma
37abb4f313 fix e2e build issue
Signed-off-by: Roland.Ma <rolandma@yunify.com>
2020-11-13 02:26:07 +00:00
rick
4bbb18f902 Make the issues template can keep comment section
Always clean the unnecessary part of issues template is really a boring thing. But we can just keep it by using comment syntax of markdown

Signed-off-by: rick <rick@jenkins-zh.cn>
2020-11-12 09:45:37 +08:00
KubeSphere CI Bot
b14081ce9f Merge pull request #3073 from RolandMa1986/feat-group-api
feat: group auth, add group & groupbinding api
2020-11-11 17:10:30 +08:00
KubeSphere CI Bot
6736379888 Merge pull request #3032 from RolandMa1986/feat-group-auth-v5
feat: add group and groupbinding controller
2020-11-11 17:05:32 +08:00
Roland.Ma
0a5e04d186 Add UT
Signed-off-by: Roland.Ma <rolandma@yunify.com>
2020-11-11 05:31:25 +00:00
Roland.Ma
5500e93b5f update comments
Signed-off-by: Roland.Ma <rolandma@yunify.com>
2020-11-11 05:31:25 +00:00
Roland.Ma
fc5235ae29 refine groupbinding controller
Signed-off-by: Roland.Ma <rolandma@yunify.com>
2020-11-11 05:31:25 +00:00
Roland.Ma
80f3db3d42 feat: authentication users with group's RoleBindings in API Server
Signed-off-by: Roland.Ma <rolandma@yunify.com>
2020-11-11 05:31:25 +00:00
Roland.Ma
447a5a562f feat: add group and groupbinding controller
Signed-off-by: Roland.Ma <rolandma@yunify.com>
2020-11-11 05:31:25 +00:00
KubeSphere CI Bot
6f7e59ca16 Merge pull request #3045 from zackzhangkai/ks-kiali-support-out-cluster
kiali k8s client support out-cluster
2020-11-11 10:49:31 +08:00
Roland.Ma
af271a49ce feat: group auth, add group & groupbinding api
Signed-off-by: Roland.Ma <rolandma@yunify.com>
2020-11-10 07:19:59 +00:00
zackzhangkai
e4049e4e66 kiali k8s client support out-cluster
Signed-off-by: zackzhangkai <zackzhang@yunify.com>
2020-11-07 17:53:49 +08:00
KubeSphere CI Bot
675823b978 Merge pull request #3087 from yuswift/bugfix/print-configfile-load-error
fix issue #3086
2020-11-06 18:02:37 +08:00
KubeSphere CI Bot
1b0bcb5d63 Merge pull request #3069 from huanggze/master
minor cleanup
2020-11-06 17:49:38 +08:00
KubeSphere CI Bot
aa64c745c9 Merge pull request #3033 from duanjiong/ippool
implement ippool
2020-11-06 17:32:43 +08:00
KubeSphere CI Bot
c86dfbc7ad Merge pull request #3002 from yunkunrao/add_kubelet_pleg_relist_quantile
Add node metric: node_pleg_quantile
2020-11-06 17:24:58 +08:00
KubeSphere CI Bot
ed271f0205 Merge pull request #3046 from shaowenchen/fix_inscm_bool_parameter
fix: adapt to  different parameter types for pipeline
2020-11-06 17:19:45 +08:00
KubeSphere CI Bot
a227f04e84 Merge pull request #3016 from OhBonsai/master
chore: fix typing error
2020-11-05 18:17:24 +08:00
yuswift
51168c730c fix issue #3086
Signed-off-by: yuswift <yuswiftli@yunify.com>
2020-11-05 15:26:12 +08:00
huanggze
10fedfe432 minor cleanup
Signed-off-by: huanggze <loganhuang@yunify.com>
2020-11-03 11:58:16 +08:00
KubeSphere CI Bot
f61d882046 Merge pull request #3050 from FeynmanZhou/master
Fix the out-of-date slack invitation link in the issue and PR templates
2020-11-01 18:26:50 +08:00
FeynmanZhou
2f5cfae35e fix the out-of-date slack invitation link
Signed-off-by: FeynmanZhou <pengfeizhou@yunify.com>
2020-11-01 18:07:48 +08:00
FeynmanZhou
5e9c6fc02a Merge branch 'master' of https://github.com/kubesphere/kubesphere 2020-11-01 11:10:19 +08:00
shaowenchen
635de6da45 fix: adapt to different parameter types for pipeline
Signed-off-by: shaowenchen <mail@chenshaowen.com>
2020-10-30 15:22:29 +08:00
pengfei
b4ab781439 Merge pull request #3039 from stoneshi-yunify/fix-readme
fix dead links in readme
2020-10-29 11:07:29 +08:00
Duan Jiong
43d1d6f243 implement ippool
1. support vlan ippool management
2. support calico ippool management

Signed-off-by: Duan Jiong <djduanjiong@gmail.com>
2020-10-29 09:59:27 +08:00
stoneshi-yunify
b792438106 fix dead links in readme
Signed-off-by: stoneshi-yunify <stoneshi@yunify.com>
2020-10-28 18:02:16 +08:00
KubeSphere CI Bot
abe9975b95 Merge pull request #3029 from wansir/master
refine api docs
2020-10-27 20:01:32 +08:00
hongming
496db42be6 refine api docs
Signed-off-by: hongming <talonwan@yunify.com>
2020-10-27 18:48:36 +08:00
KubeSphere CI Bot
a7d31930f8 Merge pull request #3023 from RolandMa1986/feat-group-auth-crds
feat: group authorization
2020-10-23 10:25:59 +08:00
Roland.Ma
7c6723da46 feat:group authorizetion. Add group and groupbinding crds, generated clientset
Signed-off-by: Roland.Ma <rolandma@yunify.com>
2020-10-21 08:26:50 +00:00
zryfish
44799ae68a skip reconcile cluster if not join federation (#3021)
Signed-off-by: Jeff <jeffzhang@yunify.com>
2020-10-15 17:11:05 +08:00
KubeSphere CI Bot
ffa995f2a4 Merge pull request #3014 from zackzhangkai/fix_app_status
fix application status
2020-10-15 16:50:26 +08:00
OhBonsai
419d66e7c1 chore: fix typing error
Signed-off-by: OhBonsai <letbonsaibe@gmail.com>
2020-10-14 16:52:43 +08:00
zackzhangkai
d1e7f35b3e fix application status
Signed-off-by: zackzhangkai <zackzhang@yunify.com>
2020-10-13 10:13:51 +08:00
KubeSphere CI Bot
9961a1df60 Merge pull request #2997 from lxm/oauth-aliyunidaas
support aliyun idaas oauth login
2020-10-09 19:50:47 +08:00
KubeSphere CI Bot
686dfef96b Merge pull request #3003 from Howie59/master
Fix for issue #2832
2020-10-09 19:47:47 +08:00
lihaowei
d5c1d93fe5 Merge branch 'master' of https://github.com/kubesphere/kubesphere 2020-10-09 19:32:14 +08:00
min zhang
34d84dc865 fmt (#3004)
Signed-off-by: zhangmin <arminzhang@yunify.com>
2020-10-09 15:00:03 +08:00
lihaowei
2c1fdd35f6 squash err handle
Signed-off-by: lihaowei <haoweili35@gmail.com>
2020-10-09 14:34:10 +08:00
KubeSphere CI Bot
98bcc70b0d Merge pull request #2980 from min-zh/dev
add status deleting of volumesnapshot
2020-10-09 10:25:47 +08:00
KubeSphere CI Bot
5e7561ecaa Merge pull request #2935 from shaowenchen/fix_update_credential
fix: upgrade credential
2020-10-09 10:04:25 +08:00
Rao Yunkun
97b054d99d Add node metric: node_pleg_quantile
Signed-off-by: Rao Yunkun <yunkunrao@yunify.com>
2020-10-06 20:06:27 +08:00
luxingmin
1a39d62f63 support aliyun idaas oauth login
Signed-off-by: luxingmin <luxingmin@hongyaa.com.cn>
2020-09-29 11:14:23 +08:00
KubeSphere CI Bot
a8c9be6dae Merge pull request #2992 from stoneshi-yunify/addreviewer
add stone as reviewer
2020-09-25 17:38:56 +08:00
stoneshi-yunify
320a7dd1a7 add stone as reviewer
Signed-off-by: stoneshi-yunify <stoneshi@yunify.com>
2020-09-25 16:51:26 +08:00
KubeSphere CI Bot
c8e8dc66bb Merge pull request #2987 from zheng1/op_swagger
Add OpenPitrix API in swagger file
2020-09-23 13:48:13 +08:00
Zhengyi Lai
8cb40c46cd Add OpenPitrix API in swagger file
Signed-off-by: Zhengyi Lai <zheng1@yunify.com>
2020-09-23 12:08:57 +08:00
KubeSphere CI Bot
84e815f620 Merge pull request #2984 from RolandMa1986/fix-build
optimize docker build
2020-09-22 19:05:02 +08:00
Roland.Ma
979cfdaf38 optimize docker build
Signed-off-by: Roland.Ma <rolandma@yunify.com>
2020-09-22 09:14:52 +00:00
Zhengyi Lai
0689ec6049 Merge pull request #2976 from stoneshi-yunify/fix1109
fix: add nil check for storage class name
2020-09-21 13:21:40 +08:00
zhangmin
20f4c4ba7d add status deleting of volumesnapshot
Signed-off-by: zhangmin <arminzhang@yunify.com>
2020-09-21 11:43:42 +08:00
stoneshi-yunify
7fe78e485b add ut for storageclasses.go
Signed-off-by: stoneshi-yunify <70880165+stoneshi-yunify@users.noreply.github.com>
2020-09-21 10:44:20 +08:00
stoneshi-yunify
81fe75fae2 fix: add nil check for storage class name
Signed-off-by: stoneshi-yunify <70880165+stoneshi-yunify@users.noreply.github.com>
2020-09-14 18:40:07 +08:00
pengfei
6f12f72d3a update Readme-zh to v3.0.0 (#2972)
Signed-off-by: FeynmanZhou <pengfeizhou@yunify.com>
2020-09-14 09:14:42 +08:00
FeynmanZhou
c99badb230 update Readme-zh to v3.0.0
Signed-off-by: FeynmanZhou <pengfeizhou@yunify.com>
2020-09-11 17:04:22 +08:00
KubeSphere CI Bot
ca34a8ce87 Merge pull request #2971 from FeynmanZhou/master
update readme to v3.0.0.
2020-09-11 12:34:06 +08:00
FeynmanZhou
22aa18bfa8 update the URLs to v3.0.0
Signed-off-by: FeynmanZhou <pengfeizhou@yunify.com>
2020-09-10 18:39:13 +08:00
FeynmanZhou
18a945c4b9 update readme to 3.00.
Signed-off-by: FeynmanZhou <pengfeizhou@yunify.com>
2020-09-10 15:47:51 +08:00
zryfish
454caf27dd Create codeql-analysis.yml
Setup codeql analysis
2020-09-10 10:38:10 +08:00
zryfish
05fe1d9e1d Update build.yml (#2968)
Add release branch to pull request ci
2020-09-08 17:45:55 +08:00
shaowenchen
1bd6c7f489 fix: upgrade credential
Signed-off-by: shaowenchen <mail@chenshaowen.com>
2020-08-28 20:44:24 +08:00
KubeSphere CI Bot
d567f438ff Merge pull request #2934 from shaowenchen/fix_scm_choice
fix: scm choices
2020-08-28 18:04:59 +08:00
shaowenchen
018a18e784 fix: scm choices
Signed-off-by: shaowenchen <mail@chenshaowen.com>
2020-08-28 17:44:25 +08:00
KubeSphere CI Bot
34d5bee27d Merge pull request #2931 from shaowenchen/fix_credential_sync
fix crendential sync
2020-08-28 17:34:59 +08:00
shaowenchen
2dcabb0bdb fix crendential sync
Signed-off-by: shaowenchen <mail@chenshaowen.com>
2020-08-28 16:54:07 +08:00
zryfish
f5b3491d7f fix unauthorized if using token kubeconfig (#2930)
Signed-off-by: Jeff <jeffzhang@yunify.com>
2020-08-27 22:51:00 +08:00
KubeSphere CI Bot
d6ab60bdb4 Merge pull request #2910 from shaowenchen/fix_multibranch_sonarqube
fix:multibranch sonarqube missing
2020-08-23 08:07:59 +08:00
shaowenchen
2bdf23ae98 fix:multibranch sonarqube missing
Signed-off-by: shaowenchen <mail@chenshaowen.com>
2020-08-21 15:21:46 +08:00
KubeSphere CI Bot
fddf7202e8 Merge pull request #2907 from wansir/master
fix: missing role template after upgrade
2020-08-20 23:39:57 +08:00
hongming
66d79aaf75 fix: missing role template after upgrade
Signed-off-by: hongming <talonwan@yunify.com>
2020-08-20 23:06:59 +08:00
zryfish
1fcef6966f fix search node with invalid name bug (#2902)
Signed-off-by: Jeff <jeffzhang@yunify.com>
2020-08-20 15:04:44 +08:00
shaowenchen
8b4028cc30 fix jenkins download (#2898)
Signed-off-by: shaowenchen <mail@chenshaowen.com>
2020-08-20 09:57:58 +08:00
zryfish
b5d9d29fc6 fix servicemesh strategy not applied bug (#2892)
Signed-off-by: Jeff <jeffzhang@yunify.com>
2020-08-19 14:50:18 +08:00
zryfish
9eba26b707 fix node resources requests not returned bug (#2877)
Signed-off-by: Jeff <jeffzhang@yunify.com>
2020-08-14 17:34:20 +08:00
KubeSphere CI Bot
2aa120f8f5 Merge pull request #2871 from huanggze/master
fix: time skew in monitoring responses
2020-08-14 09:42:55 +08:00
huanggze
0f09020359 fix: time skew in monitoring responses
Signed-off-by: huanggze <loganhuang@yunify.com>
2020-08-13 17:33:36 +08:00
zryfish
95cd23b7a3 fix servicemesh controller nil pointer exception (#2870)
Signed-off-by: Jeff <zw0948@gmail.com>
2020-08-13 15:33:00 +08:00
zryfish
6f367e4f22 fix some swagger json errors (#2869)
Signed-off-by: Jeff <zw0948@gmail.com>
2020-08-13 13:24:58 +08:00
KubeSphere CI Bot
2ac81e9962 Merge pull request #2852 from wansir/iam
fix: can't list pipeline if no global role assigned
2020-08-12 14:18:55 +08:00
hongming
aa6713c2d0 can't list pipeline if no global role assigned
Signed-off-by: hongming <talonwan@yunify.com>
2020-08-12 13:58:24 +08:00
KubeSphere CI Bot
3f6af47013 Merge pull request #2846 from huanggze/master
fix: exported logs are incomplete
2020-08-12 10:45:55 +08:00
huanggze
57adb94911 fix: exported logs are incomplete
Signed-off-by: huanggze <loganhuang@yunify.com>
2020-08-11 15:12:46 +08:00
KubeSphere CI Bot
7257455c40 Merge pull request #2839 from huanggze/master
fix: resources_filter not working for workload metric query
2020-08-11 15:01:54 +08:00
KubeSphere CI Bot
6a28091284 Merge pull request #2827 from zheng1/op_bugfix1
Bugfix: catch error from ParseConditions and refactor ParseConditions
2020-08-11 12:53:55 +08:00
zryfish
2064340c3a fix job search bug (#2840)
Signed-off-by: Jeff <zw0948@gmail.com>
2020-08-11 11:20:58 +08:00
huanggze
575513182b fix: resources_filter not working for workload metric query
Signed-off-by: huanggze <loganhuang@yunify.com>
2020-08-11 11:19:20 +08:00
zryfish
21a5f83082 fix unable to setup webhook server under leader election (#2830)
Signed-off-by: Jeff <zw0948@gmail.com>
2020-08-10 15:14:20 +08:00
Zhengyi Lai
3c48abcc47 Bugfix: catch error from ParseConditions and refactor ParseConditions
Signed-off-by: Zhengyi Lai <zheng1@yunify.com>
2020-08-10 13:54:55 +08:00
KubeSphere CI Bot
48e77cbb79 Merge pull request #2798 from huanggze/master
fix: calulating days between two timestamps
2020-08-10 10:33:54 +08:00
KubeSphere CI Bot
f9d7a4f62a Merge pull request #2821 from wansir/iam
fix member detail API
2020-08-10 10:19:54 +08:00
hongming
9e35ff1678 fix member detail API
Signed-off-by: hongming <talonwan@yunify.com>
2020-08-09 10:52:28 +08:00
KubeSphere CI Bot
f64cdf733f Merge pull request #2796 from wansir/iam
fix password modify logic
2020-08-07 18:20:53 +08:00
hongming
b188dcb8a2 fix password modify logic
Signed-off-by: hongming <talonwan@yunify.com>
2020-08-07 16:55:19 +08:00
huanggze
76e7805642 fix: calulating days between two dates
Signed-off-by: huanggze <loganhuang@yunify.com>
2020-08-07 04:12:47 +08:00
KubeSphere CI Bot
50a50e5213 Merge pull request #2782 from zryfish/fix_miss_caching_federatedworkspace
fix mistakenly caching federatedworkspace in non multicluster env
2020-08-06 18:24:53 +08:00
Jeff
028deb0482 fix mistakenly cache federatedworkspace in non multicluster env
Signed-off-by: Jeff <zw0948@gmail.com>
2020-08-06 18:11:48 +08:00
KubeSphere CI Bot
723e9e27d7 Merge pull request #2770 from wansir/tenant
fix workspacetemplate patch API not working
2020-08-06 16:31:53 +08:00
hongming
e8c1acdcf3 fix workspacetemplate patch API not working
Signed-off-by: hongming <talonwan@yunify.com>
2020-08-06 16:17:49 +08:00
zryfish
9ef0a87e4a fix generated kubeconfig bug (#2776)
Signed-off-by: Jeff <zw0948@gmail.com>
2020-08-05 17:48:05 +08:00
zryfish
dbc33fe5d2 add license header (#2761)
Signed-off-by: Jeff <zw0948@gmail.com>
2020-08-05 15:54:17 +08:00
hongming
719c687fcb fix kubectl pod creation failed (#2771)
Signed-off-by: hongming <talonwan@yunify.com>
2020-08-05 11:36:59 +08:00
KubeSphere CI Bot
fd4790a64f Merge pull request #2766 from wansir/tenant
fix kubectl pod owner reference
2020-08-04 17:35:52 +08:00
hongming
0448522901 fix kubectl pod owner reference
Signed-off-by: hongming <talonwan@yunify.com>
2020-08-04 16:32:04 +08:00
KubeSphere CI Bot
b030e9c2dd Merge pull request #2760 from wansir/tenant
fix labelSelector not working
2020-08-04 11:48:53 +08:00
hongming
1d9c9bc0c2 fix labelSelector not working
Signed-off-by: hongming <talonwan@yunify.com>
2020-08-04 11:35:53 +08:00
zryfish
1cfac3721d Update stale.yml 2020-08-04 11:01:45 +08:00
KubeSphere CI Bot
22ee45d796 Merge pull request #2759 from wansir/iam
fix role patch API
2020-08-04 09:56:52 +08:00
zryfish
774dc78a10 Update stale.yml 2020-08-04 09:20:15 +08:00
hongming
fbfbb8b8d2 fix role patch API
Signed-off-by: hongming <talonwan@yunify.com>
2020-08-03 22:33:54 +08:00
zryfish
2d60c57942 Rename stale.yaml to stale.yml 2020-08-03 15:53:10 +08:00
zryfish
171322040e rename stale bot configuration file name (#2753)
Signed-off-by: Jeff <zw0948@gmail.com>
2020-08-03 15:46:50 +08:00
zryfish
56fd0deef3 fix some bugs (#2751)
Signed-off-by: Jeff <zw0948@gmail.com>
2020-08-03 14:49:40 +08:00
KubeSphere CI Bot
f43047069c Merge pull request #2730 from wansir/iam
remove LastAppliedConfig annotation after password encrypted
2020-08-03 13:02:52 +08:00
zryfish
0a893d20bc fix missing cache federatedapplication (#2733)
Signed-off-by: Jeff <zw0948@gmail.com>
2020-08-01 13:22:39 +08:00
KubeSphere CI Bot
b74d5a336b Merge pull request #2729 from shaowenchen/add_query_parameter_for_devops_credential
add query parameter for devops credential
2020-08-01 11:18:51 +08:00
KubeSphere CI Bot
2dd0efb092 Merge pull request #2719 from wansir/rolebase
initial role differentiation of DevOps project and namespace
2020-08-01 09:51:52 +08:00
hongming
6acea75a76 remove LastAppliedConfig annotation after password encrypted
Signed-off-by: hongming <talonwan@yunify.com>
2020-07-31 23:57:42 +08:00
hongming
03e7987655 initial role differentiation of DevOps project and namespace
Signed-off-by: hongming <talonwan@yunify.com>
2020-07-31 23:27:20 +08:00
shaowenchen
b82dc56eee add query parameter for devops credential
Signed-off-by: shaowenchen <mail@chenshaowen.com>
2020-07-31 20:36:04 +08:00
KubeSphere CI Bot
2c2f01d018 Merge pull request #2727 from shaowenchen/improvement_promopt_info
add more details info for jenkins api
2020-07-31 20:35:51 +08:00
zryfish
bf55d23de9 add missing federated resources (#2728)
Signed-off-by: Jeff <zw0948@gmail.com>
2020-07-31 18:22:23 +08:00
shaowenchen
9cb4935b92 add more details info for jenkins api
Signed-off-by: shaowenchen <mail@chenshaowen.com>
2020-07-31 18:00:15 +08:00
zryfish
4702beb6ac add federated resource api (#2725)
Signed-off-by: Jeff <zw0948@gmail.com>
2020-07-31 17:12:58 +08:00
KubeSphere CI Bot
74533cb533 Merge pull request #2718 from wanjunlei/master
fix bug auditing can't search anything using keyword with '-' for fuzzy
2020-07-31 10:12:51 +08:00
wanjunlei
e71697f864 fix bug auditing can't search anything using keyword with '-' for fuzzy
Signed-off-by: wanjunlei <wanjunlei@yunify.com>
2020-07-30 22:39:14 +08:00
KubeSphere CI Bot
12ec25d449 Merge pull request #2685 from wansir/devops
legacy API compatibility
2020-07-30 20:13:51 +08:00
hongming
7884bcef95 legacy API compatibility
Signed-off-by: hongming <talonwan@yunify.com>
2020-07-30 18:30:41 +08:00
zryfish
114fad5eb0 sanitizer error message to avoid emitting xss error message (#2712)
Signed-off-by: Jeff <zw0948@gmail.com>
2020-07-30 17:45:29 +08:00
KubeSphere CI Bot
67c6a8c510 Merge pull request #2672 from wanjunlei/auditing-log
make ws admin can be aware of anything happened in its workspace.
2020-07-30 13:33:51 +08:00
KubeSphere CI Bot
5b02440628 Merge pull request #2708 from wansir/tenant
fix tenant resource list API
2020-07-30 13:17:51 +08:00
hongming
13ffbe8968 fix tenant resource list API
Signed-off-by: hongming <talonwan@yunify.com>
2020-07-30 11:48:55 +08:00
KubeSphere CI Bot
b71ce47788 Merge pull request #2706 from wansir/iam
fix request info resource scope
2020-07-30 10:09:51 +08:00
KubeSphere CI Bot
3a703d4371 Merge pull request #2703 from shaowenchen/fix_to_json
add parameter for to_json
2020-07-30 09:52:52 +08:00
KubeSphere CI Bot
9834baf230 Merge pull request #2688 from huanggze/master
Allow global admins to view deleted namespace logs
2020-07-30 09:50:51 +08:00
hongming
02c71e9b79 fix request info resource scope
Signed-off-by: hongming <talonwan@yunify.com>
2020-07-30 00:23:29 +08:00
zryfish
3c8fbe39b9 fix websocket lost query string bug (#2705)
Signed-off-by: Jeff <zw0948@gmail.com>
2020-07-29 21:51:55 +08:00
wanjunlei
6f90e24b83 change resourceGetter to devopsGetter
Signed-off-by: wanjunlei <wanjunlei@yunify.com>
2020-07-29 19:31:20 +08:00
wanjunlei
9306b6abf7 change match_phrase_prefix to match_phrase
Signed-off-by: wanjunlei <wanjunlei@yunify.com>
2020-07-29 18:48:34 +08:00
wanjunlei
b5392b97c0 add ns and ws query parameter to es query body
Signed-off-by: wanjunlei <wanjunlei@yunify.com>
2020-07-29 18:48:34 +08:00
wanjunlei
b51a5c22f2 resolve conversation
Signed-off-by: wanjunlei <wanjunlei@yunify.com>
2020-07-29 18:48:34 +08:00
wanjunlei
713c646bfd make ws admin aware of anything happened in its workspace.
Signed-off-by: wanjunlei <wanjunlei@yunify.com>
2020-07-29 18:48:34 +08:00
shaowenchen
62a2cc02b0 add parameter for to_json
Signed-off-by: shaowenchen <mail@chenshaowen.com>
2020-07-29 18:12:53 +08:00
zryfish
388729e9b1 fix incorrect error log (#2694)
Signed-off-by: Jeff <zw0948@gmail.com>
2020-07-29 13:25:52 +08:00
huanggze
70d0d5fe18 Allow global admins to view deleted namespace logs
Signed-off-by: huanggze <loganhuang@yunify.com>
2020-07-29 10:26:38 +08:00
zryfish
93b123c1f0 add last login time for user (#2679)
Signed-off-by: Jeff <zw0948@gmail.com>
2020-07-28 17:26:13 +08:00
KubeSphere CI Bot
e4510972dd Merge pull request #2676 from wansir/devops
fix panic
2020-07-28 16:03:51 +08:00
hongming
e494cae010 fix panic
Signed-off-by: hongming <talonwan@yunify.com>
2020-07-28 14:16:23 +08:00
KubeSphere CI Bot
822f5f25d7 Merge pull request #2599 from duanjiong/networkpolicy-fix
add new parameters allowedIngressNamespaces for user customization
2020-07-28 14:05:51 +08:00
KubeSphere CI Bot
324bc38ea2 Merge pull request #2668 from min-zh/storage-capability
get storage capapbility from provioner capability first
2020-07-28 11:21:50 +08:00
zhangmin
a87892f901 get storage capapbility from provioner capability first
Signed-off-by: zhangmin <arminzhang@yunify.com>
2020-07-28 11:15:57 +08:00
KubeSphere CI Bot
659316da9a Merge pull request #2661 from wansir/devops
fix: devops IAM bugs
2020-07-28 11:05:51 +08:00
Duan Jiong
eb21606602 networkpolicy: add new parameters allowedIngressNamespaces for user customization
Signed-off-by: Duan Jiong <djduanjiong@gmail.com>
2020-07-28 10:55:16 +08:00
hongming
bda48c240f fix: devop IAM bugs
Signed-off-by: hongming <talonwan@yunify.com>
2020-07-28 10:01:50 +08:00
KubeSphere CI Bot
afcd0efea2 Merge pull request #2629 from wansir/authorizer
Reorder request filters
2020-07-26 23:33:50 +08:00
zryfish
c5a63500a4 add application controller (#2652)
Signed-off-by: Jeff <zw0948@gmail.com>
2020-07-26 23:11:56 +08:00
KubeSphere CI Bot
d4272ef4c5 Merge pull request #2639 from wansir/bug
fix: auth failed response
2020-07-26 19:26:50 +08:00
hongming
ffc78cbb94 fix: auth failed response
Signed-off-by: hongming <talonwan@yunify.com>
2020-07-26 18:44:37 +08:00
KubeSphere CI Bot
5ba910ce37 Merge pull request #2634 from zheng1/refactor_op
Bugfix: the count of uncategory apps is incorrect
2020-07-26 14:23:50 +08:00
Zhengyi Lai
519d008db9 Bugfix: the count of uncategory apps is incorrect
Signed-off-by: Zhengyi Lai <zheng1@yunify.com>
2020-07-26 13:11:39 +08:00
hongming
f8c0e9addc Reorder request filters
Signed-off-by: hongming <talonwan@yunify.com>
2020-07-26 10:35:22 +08:00
KubeSphere CI Bot
72e9f7da90 Merge pull request #2596 from wanjunlei/master
fix bug multi tenant auditing, logging and event is incorrect
2020-07-25 22:30:50 +08:00
wanjunlei
bf87894512 resolve conversation
Signed-off-by: wanjunlei <wanjunlei@yunify.com>
2020-07-25 18:15:21 +08:00
KubeSphere CI Bot
9bb5427ee8 Merge pull request #2613 from wanjunlei/kubectl
add host local time to kubectl from toolbox
2020-07-25 14:29:50 +08:00
zryfish
051893eb71 Use 429 for auth limit exceeded requests (#2591)
* fix login with email

Signed-off-by: Jeff <zw0948@gmail.com>

* use 429 for auth limit exceeded error

Signed-off-by: Jeff <zw0948@gmail.com>
2020-07-25 14:27:03 +08:00
wanjunlei
31d615fa84 add host local time to kubectl from toolbox
Signed-off-by: wanjunlei <wanjunlei@yunify.com>
2020-07-25 13:44:40 +08:00
wanjunlei
6585881d01 fix bug multi tenant auditing, logging and event is incorrect
Signed-off-by: wanjunlei <wanjunlei@yunify.com>
2020-07-25 12:19:29 +08:00
KubeSphere CI Bot
b814c5ba4f Merge pull request #2609 from wansir/master
fix RBAC authorizer
2020-07-25 10:09:50 +08:00
hongming
982ea74185 fix RBAC authorizer
Signed-off-by: hongming <talonwan@yunify.com>
2020-07-25 09:51:39 +08:00
KubeSphere CI Bot
14462c3842 Merge pull request #2585 from shaowenchen/add_total_runs
fix query parameters
2020-07-24 17:28:50 +08:00
zryfish
93b7c30aea fix login with email (#2584)
Signed-off-by: Jeff <zw0948@gmail.com>
2020-07-24 15:51:30 +08:00
shaowenchen
9f9d276cef fix query parameters
Signed-off-by: shaowenchen <mail@chenshaowen.com>
2020-07-24 15:46:54 +08:00
zryfish
f1146f5d6c fix cannot create success login (#2576)
Signed-off-by: Jeff <zw0948@gmail.com>
2020-07-24 13:09:38 +08:00
zryfish
06932926a0 fix creating login records for user failed (#2572)
Signed-off-by: Jeff <zw0948@gmail.com>

Co-authored-by: hongming <talonwan@yunify.com>
2020-07-23 23:36:11 +08:00
zryfish
3d74bb0589 login record CRD (#2565)
* Signed-off-by: hongming <talonwan@yunify.com>

support ldap identity provider

Signed-off-by: hongming <talonwan@yunify.com>

* add login record

Signed-off-by: Jeff <zw0948@gmail.com>

Co-authored-by: hongming <talonwan@yunify.com>
2020-07-23 22:10:39 +08:00
KubeSphere CI Bot
50a6c7b2b5 Merge pull request #2567 from zheng1/refactor_op
Bugfix: create repo have no workspace
2020-07-23 21:45:50 +08:00
Zhengyi Lai
36ec2cdc9e Bugfix: create repo have no workspace
Signed-off-by: Zhengyi Lai <zheng1@yunify.com>
2020-07-23 21:03:13 +08:00
KubeSphere CI Bot
616fcb1740 Merge pull request #2334 from wansir/kubectl-image
Configuring kubectl image from command line
2020-07-23 15:00:49 +08:00
KubeSphere CI Bot
8699fc806b Merge pull request #2544 from wansir/status-code
conflict status code
2020-07-23 09:00:49 +08:00
KubeSphere CI Bot
971c1af0ef Merge pull request #2532 from junotx/master
fix events search bug when no events
2020-07-23 08:59:50 +08:00
KubeSphere CI Bot
d31a09e8c0 Merge pull request #2543 from wansir/federatednamespaces
fix federatednamespace resource scope
2020-07-23 08:55:49 +08:00
hongming
f7ea1603c6 conflict status code
Signed-off-by: hongming <talonwan@yunify.com>
2020-07-23 03:09:29 +08:00
hongming
d1f98b3289 Configuring kubectl image from command line
Signed-off-by: hongming <talonwan@yunify.com>
2020-07-23 02:29:56 +08:00
hongming
c103f47abd fix federatednamespace resource scope
Signed-off-by: hongming <talonwan@yunify.com>
2020-07-22 22:42:53 +08:00
junotx
393386a32a fix events search bug when no events
Signed-off-by: junotx <junotx@126.com>
2020-07-22 21:40:37 +08:00
zryfish
f1af770965 Don't fail ci if coverage upload failed 2020-07-22 20:29:48 +08:00
KubeSphere CI Bot
da66157482 Merge pull request #2542 from zheng1/refactor_op
Bugfix: list repos
2020-07-22 19:34:50 +08:00
zryfish
24c06da9bc fix cronjob sort bug, daemonsets status bug, add ingress to v1alpha3 (#2541)
Signed-off-by: Jeff <zw0948@gmail.com>
2020-07-22 19:33:25 +08:00
Zhengyi Lai
90e6565327 Bugfix: list repos
Signed-off-by: Zhengyi Lai <zheng1@yunify.com>
2020-07-22 18:57:07 +08:00
KubeSphere CI Bot
1096eb8adb Merge pull request #2498 from wansir/federatednamespaces
add tenant federated namespaces API
2020-07-22 15:23:49 +08:00
KubeSphere CI Bot
2a388ad493 Merge pull request #2533 from min-zh/storage
fix pvc count of sc
2020-07-22 14:52:49 +08:00
KubeSphere CI Bot
26ac41d086 Merge pull request #2517 from shaowenchen/add_total_runs
add total num for runs
2020-07-22 13:19:49 +08:00
zhangmin
997cb0930d fix pvc count of sc
Signed-off-by: zhangmin <arminzhang@yunify.com>
2020-07-22 11:09:04 +08:00
shaowenchen
85f22cc2e1 add total num for runs
Signed-off-by: shaowenchen <mail@chenshaowen.com>
2020-07-22 10:53:06 +08:00
KubeSphere CI Bot
ae2f4a8abe Merge pull request #2526 from wansir/log
fix: exit without error log
2020-07-22 10:40:49 +08:00
hongming
a42fa6afaf fix: exit without error log
Signed-off-by: hongming <talonwan@yunify.com>
2020-07-21 19:15:21 +08:00
zryfish
35989d911c use root for controller manager cause we need to access csi plugins sock (#2505)
Signed-off-by: Jeff <zw0948@gmail.com>
2020-07-20 22:36:18 +08:00
KubeSphere CI Bot
bc419d02cb Merge pull request #2466 from wanjunlei/auditing-es
reuse package esutil to improve auditing log search performance
2020-07-20 22:21:50 +08:00
hongming
3525fc5507 add federatednamespaces tenant API
Signed-off-by: hongming <talonwan@yunify.com>
2020-07-20 17:39:46 +08:00
KubeSphere CI Bot
b2402105f8 Merge pull request #2441 from junotx/master
lazy init events client and optimize events search
2020-07-20 14:56:49 +08:00
KubeSphere CI Bot
bd6f46a5c9 Merge pull request #2427 from wanjunlei/auditing-log
ignore dryRun k8s request when auditing
2020-07-20 14:55:49 +08:00
zryfish
71b8d96a45 change image user kubesphere to group docker (#2487)
Signed-off-by: Jeff <zw0948@gmail.com>
2020-07-20 14:54:04 +08:00
zryfish
8241a0f9c5 cache v1beta1 crd instead of v1 version, cause v1 is not available in kubernetes v1.15.x (#2482)
Signed-off-by: Jeff <zw0948@gmail.com>
2020-07-20 10:03:26 +08:00
KubeSphere CI Bot
9ed96cddc3 Merge pull request #2480 from wansir/2475
fix: Change user role failed
2020-07-20 09:45:49 +08:00
hongming
d7440ae0f9 fix: Change user role failed
Signed-off-by: hongming <talonwan@yunify.com>
2020-07-19 11:19:26 +08:00
zryfish
89f850466d fix host cluster reconcile bug (#2479)
Signed-off-by: Jeff <zw0948@gmail.com>
2020-07-19 01:22:32 +08:00
wanjunlei
ccc6ba1e80 ignore unavailable index
Signed-off-by: wanjunlei <wanjunlei@yunify.com>
2020-07-17 18:14:09 +08:00
wanjunlei
5d99024f0b resovle conversation
Signed-off-by: wanjunlei <wanjunlei@yunify.com>
2020-07-17 15:39:52 +08:00
wanjunlei
a0255d6409 ignore dryRun k8s request when auditing
Signed-off-by: wanjunlei <wanjunlei@yunify.com>
2020-07-17 15:39:36 +08:00
wanjunlei
e913957e27 reuse package esutil to improve auditing log search performance
Signed-off-by: wanjunlei <wanjunlei@yunify.com>
2020-07-17 15:33:17 +08:00
KubeSphere CI Bot
b7eb64dd95 Merge pull request #2446 from wansir/label-selector
fix: migration some resource API to v1alpha3
2020-07-17 12:59:48 +08:00
KubeSphere CI Bot
f706d264dd Merge pull request #2392 from shaowenchen/fix_devops
add interface for iam
2020-07-17 12:57:48 +08:00
zryfish
97580d3776 use 8443 for webhook port (#2458)
Signed-off-by: Jeff <zw0948@gmail.com>
2020-07-17 12:56:21 +08:00
zryfish
a1767d4245 use non root user for building image (#2449)
Signed-off-by: Jeff <zw0948@gmail.com>
2020-07-16 18:52:51 +08:00
hongming
bd22856dbc fix: migration some resource API to v1alpha3
Signed-off-by: hongming <talonwan@yunify.com>
2020-07-16 18:36:32 +08:00
KubeSphere CI Bot
fcea347780 Merge pull request #2368 from shaowenchen/add_dowload
using /v1alpha2/jenkins replace /jenkins.kubesphere.io api
2020-07-16 17:11:48 +08:00
KubeSphere CI Bot
f04135a86e Merge pull request #2419 from wanjunlei/auditing-es
lazy initializing es client of auditing
2020-07-16 17:10:48 +08:00
KubeSphere CI Bot
9e1dc89ced Merge pull request #2439 from wansir/node
fix: node status filter
2020-07-16 17:08:48 +08:00
KubeSphere CI Bot
34aec8df65 Merge pull request #2416 from min-zh/storage-capability
fix "Failed to list *v1beta1.VolumeSnapshotClass" on k8s 1.16
2020-07-16 16:51:48 +08:00
junotx
53eabed3ca lazy init events client and optimize events search 2020-07-16 15:15:30 +08:00
hongming
4f3007c143 fix: node status filter
Signed-off-by: hongming <talonwan@yunify.com>
2020-07-16 12:10:59 +08:00
zhangmin
1549dd396f fix "Failed to list *v1beta1.VolumeSnapshotClass" on k8s 1.16 2020-07-16 11:36:47 +08:00
shaowenchen
895d8b838f add interface for iam
Signed-off-by: shaowenchen <mail@chenshaowen.com>
2020-07-15 17:51:08 +08:00
KubeSphere CI Bot
de5f4c36e0 Merge pull request #2423 from huanggze/multi-indices
significantly improve log search performance
2020-07-15 17:09:47 +08:00
shaowenchen
6090874cc4 using /jenkins replace jenkins.kubesphere.io api
Signed-off-by: shaowenchen <mail@chenshaowen.com>
2020-07-15 17:06:54 +08:00
KubeSphere CI Bot
42b543ec5e Merge pull request #2415 from wansir/kubeconfig
fix: empty server host
2020-07-15 10:29:48 +08:00
huanggze
6a5738d66a significantly improve log search performance
Signed-off-by: huanggze <loganhuang@yunify.com>
2020-07-14 19:42:48 +08:00
wanjunlei
1c436f8b48 lazy initializing es client of auditing 2020-07-14 15:39:30 +08:00
hongming
311c5289aa fix: empty server host
Signed-off-by: hongming <talonwan@yunify.com>
2020-07-14 14:00:38 +08:00
KubeSphere CI Bot
0f63b5ba5f Merge pull request #2287 from huanggze/es
lazy initializing es client
2020-07-14 12:08:47 +08:00
KubeSphere CI Bot
fea34315d0 Merge pull request #2404 from huanggze/sort
fix: cannot sort in ascending order
2020-07-14 12:03:48 +08:00
KubeSphere CI Bot
5fb22a23ff Merge pull request #2408 from duanjiong/networkpolicy-fix
modify the field networkIsolate in workspace
2020-07-14 12:02:47 +08:00
Duan Jiong
7e8bef6bfd modify the field networkIsolate in workspace
Signed-off-by: Duan Jiong <djduanjiong@gmail.com>
2020-07-13 19:13:26 +08:00
huanggze
4df7ae2636 lazy initializing es client
Signed-off-by: huanggze <loganhuang@yunify.com>
2020-07-13 17:06:15 +08:00
huanggze
b4f899b337 fix: cannot sorting in ascending order
Signed-off-by: huanggze <loganhuang@yunify.com>
2020-07-13 12:01:56 +08:00
KubeSphere CI Bot
78159e9636 Merge pull request #2333 from wansir/workspacerole-ownerref
fix: resource lifecycle
2020-07-10 14:26:47 +08:00
hongming
ed8bb437e8 fix: resource lifecycle
Signed-off-by: hongming <talonwan@yunify.com>
2020-07-10 13:23:18 +08:00
zryfish
eeaa4b646a use more friendly error messages (#2364) 2020-07-09 18:33:24 +08:00
KubeSphere CI Bot
b479195aea Merge pull request #2373 from wansir/2358
fix: forbidden update user
2020-07-09 18:28:47 +08:00
KubeSphere CI Bot
013b89df4f Merge pull request #2370 from shaowenchen/fix_kubeconfig
fix sync kubeconfig bug
2020-07-09 18:27:47 +08:00
hongming
3c6ca85e30 fix: forbidden update user
Signed-off-by: hongming <talonwan@yunify.com>
2020-07-09 18:25:30 +08:00
zryfish
97b619452b change error message when there is no proxy address (#2372) 2020-07-09 18:06:37 +08:00
shaowenchen
fbaeddb897 fix sync kubeconfig bug
Signed-off-by: shaowenchen <mail@chenshaowen.com>
2020-07-09 17:50:13 +08:00
KubeSphere CI Bot
f187f97c76 Merge pull request #2353 from zheng1/refactor_op
Add /workspaces/{workspace}/apps/{app}
2020-07-09 16:00:46 +08:00
Zhengyi Lai
fdb22d0191 Bugfix: create app within user
Signed-off-by: Zhengyi Lai <zheng1@yunify.com>
2020-07-09 10:34:11 +08:00
zryfish
7516019be5 fix typo (#2355) 2020-07-09 00:31:24 +08:00
zryfish
693a4143db reconcile host cluster (#2354)
print friendly error when component failed

update dockerfile
2020-07-08 23:55:13 +08:00
Zhengyi Lai
f53fc243f5 Add /workspaces/{workspace}/apps/{app} 2020-07-08 23:24:35 +08:00
hongming
99aff3c7da fix: resource scope (#2280)
Signed-off-by: hongming <talonwan@yunify.com>
2020-07-07 15:24:10 +08:00
KubeSphere CI Bot
d50e59bc9e Merge pull request #2324 from wanjunlei/auditing
make the ResponseCapture implements CloseNotify interface
2020-07-07 14:38:46 +08:00
KubeSphere CI Bot
a8432d1881 Merge pull request #2322 from wansir/fix-636
fix: DaemonSet status search returns wrong result
2020-07-07 14:37:46 +08:00
KubeSphere CI Bot
cdd78e8bcd Merge pull request #2264 from wansir/iam
fix: password modify
2020-07-07 14:17:45 +08:00
hongming
ddd6e1aac8 fix: Daemonset status search returns wrong result
Signed-off-by: hongming <talonwan@yunify.com>
2020-07-06 22:08:57 +08:00
wanjunlei
cb5f98cf97 make the ResponseCapture implements CloseNotify interface 2020-07-06 22:06:32 +08:00
KubeSphere CI Bot
ff329e1548 Merge pull request #2318 from wansir/op
revert openpitrix API
2020-07-06 21:24:45 +08:00
hongming
9e71c58472 revert openpitrix API
Signed-off-by: hongming <talonwan@yunify.com>
2020-07-06 21:16:14 +08:00
calvinyv
c3700b78d9 Merge pull request #2265 from min-zh/storage-capability
capability for non CSI storage
2020-07-06 19:36:22 +08:00
zhangmin
052b1b5f25 capability for non CSI storage 2020-07-06 16:01:57 +08:00
hongming
77a3722b4e fix: password modify
Signed-off-by: hongming <talonwan@yunify.com>
2020-07-06 15:12:11 +08:00
KubeSphere CI Bot
c870209edd Merge pull request #2293 from zheng1/refactor_op
Refactor OpenPitrix API path
2020-07-06 11:04:45 +08:00
KubeSphere CI Bot
5223362cc8 Merge pull request #2290 from wansir/requestinfo
fix: implicit workspace info in query
2020-07-06 11:02:45 +08:00
hongming
b52db8732b fix: implicit workspace info in query
Signed-off-by: hongming <talonwan@yunify.com>
2020-07-03 21:14:52 +08:00
Zhengyi Lai
ebca5a0091 Refactor OpenPitrix API path
Signed-off-by: Zhengyi Lai <zheng1@yunify.com>
2020-07-03 19:14:25 +08:00
zryfish
3c99b3ca9e fix issue #2289 Can't create fed project (#2291) 2020-07-03 18:06:02 +08:00
KubeSphere CI Bot
86a027e496 Merge pull request #2288 from wansir/clusters
fix: federated workspace cluster selector
2020-07-02 21:56:45 +08:00
hongming
8515e01f55 fix: federated workspace cluster selector
Signed-off-by: hongming <talonwan@yunify.com>
2020-07-02 21:38:04 +08:00
KubeSphere CI Bot
031d6b3b6a Merge pull request #2270 from wansir/ldap
fix: synchronize users to LDAP
2020-07-02 17:54:44 +08:00
hongming
48f80d8c1a fix: Synchronize users to LDAP
Signed-off-by: hongming <talonwan@yunify.com>
2020-07-02 15:43:21 +08:00
KubeSphere CI Bot
38a4bc7a26 Merge pull request #2258 from duanjiong/networkpolicy-fix
fix nsnp webhook to validate all fileds in it
2020-07-01 14:40:44 +08:00
KubeSphere CI Bot
550e9c1f8f Merge pull request #2273 from Sherlock113/link630
Centos version and link change in readme
2020-06-30 12:47:43 +08:00
sherlock
975eecac9d centos version and link change in readme
Signed-off-by: sherlock <sherlockxu@yunify.com>
2020-06-30 12:19:05 +08:00
KubeSphere CI Bot
2e09566f04 Merge pull request #2260 from wanjunlei/auditing
fix bug auditing search error when es index does not exist
2020-06-30 11:25:43 +08:00
wanjunlei
c4dcd086d0 fix bug auditing search error when es index is not exist 2020-06-28 16:44:44 +08:00
Duan Jiong
655fd26cbf fix nsnp webhook to validate all fileds in it
such as ipblock, service.
And the crd openAPIV3Schema could not validate all scenarios

Signed-off-by: Duan Jiong <djduanjiong@gmail.com>
2020-06-28 09:44:05 +08:00
KubeSphere CI Bot
52abbeb355 Merge pull request #2227 from wanjunlei/master
process audit information for resource creating requests
2020-06-27 20:51:43 +08:00
KubeSphere CI Bot
2a05365871 Merge pull request #2257 from wanjunlei/auditing-authority
add resourcescope to AttributesRecord when determine whether the user…
2020-06-27 20:45:42 +08:00
KubeSphere CI Bot
eb1001d2b8 Merge pull request #2256 from huanggze/role
logging: update rolebinding check
2020-06-27 20:43:43 +08:00
KubeSphere CI Bot
d5e58c1338 Merge pull request #2254 from junotx/master
fix: listIntersectedNamespaces for observability
2020-06-27 20:41:43 +08:00
KubeSphere CI Bot
9615f1f46b Merge pull request #2253 from wanjunlei/auditing
fix wrong total audit event number
2020-06-27 20:38:43 +08:00
KubeSphere CI Bot
dda1bfeecf Merge pull request #2252 from wansir/federatedworkspaces
fix: federatedworkspace clusterSelector zero value
2020-06-27 20:37:44 +08:00
wanjunlei
0e6277ed66 add resourcescope to AttributesRecord when determine whether the user can list namespace 2020-06-27 19:21:00 +08:00
wanjunlei
7338b81254 Delete modification of permission and submit as a pr separately 2020-06-27 11:13:26 +08:00
huanggze
b92e768beb logging: update rolebinding check
Signed-off-by: huanggze <loganhuang@yunify.com>
2020-06-27 10:37:59 +08:00
wanjunlei
9a02d77093 add resourcescope to AttributesRecord when determine whether the user can list namespace 2020-06-24 22:55:33 +08:00
junotx
f0ae82793e fix: listIntersectedNamespaces for observability 2020-06-24 19:16:22 +08:00
wanjunlei
dba32a1c5b fix bug total result of auditing time topology error 2020-06-24 16:26:51 +08:00
hongming
a0a53a69af fix: federatedworkspace clusterSelector zero value
Signed-off-by: hongming <talonwan@yunify.com>
2020-06-24 16:03:08 +08:00
KubeSphere CI Bot
d91047588f Merge pull request #2245 from huanggze/master
update metrics
2020-06-24 10:48:42 +08:00
wanjunlei
37346150d3 resolve conversation 2020-06-23 16:26:24 +08:00
huanggze
28887b65f1 update metrics
Signed-off-by: huanggze <loganhuang@yunify.com>
2020-06-23 12:20:28 +08:00
zryfish
ad1471a4a7 only run virtualservice and destinationrule controller when servicemesh is enabled (#2243) 2020-06-23 11:48:50 +08:00
KubeSphere CI Bot
a5d77abdab Merge pull request #2244 from zheng1/op_bugfix
Add API for Describe the specified application of the namespace
2020-06-22 21:47:42 +08:00
Zhengyi Lai
6fecd62f13 Add API for Describe the specified application of the namespace
Signed-off-by: Zhengyi Lai <zheng1@yunify.com>
2020-06-22 20:11:38 +08:00
zryfish
48081f91af fix kubeapiserver proxy rejects all dryRun requests (#2241) 2020-06-22 16:37:52 +08:00
zryfish
5caee71b25 fix kubeapiserver proxy rejects all dryRun requests (#2240) 2020-06-22 14:24:59 +08:00
KubeSphere CI Bot
60444ba945 Merge pull request #2233 from pengcong06/op_listapp
feat: add api list application
2020-06-19 18:46:41 +08:00
pengcong06
8970fffedf feat: add api list application 2020-06-19 18:39:49 +08:00
KubeSphere CI Bot
a5a6d48fdc Merge pull request #2232 from huanggze/patch-2
update comment
2020-06-19 17:41:41 +08:00
KubeSphere CI Bot
42422710e0 Merge pull request #2231 from junotx/master
fix: total in histogram response of events search
2020-06-19 17:40:41 +08:00
KubeSphere CI Bot
e1fd9492a9 Merge pull request #2230 from wansir/master
fix: multi-cluster proxy authentication
2020-06-19 17:38:41 +08:00
Guangzhe Huang
1fcb5116df update comment 2020-06-19 16:55:39 +08:00
junotx
217dd4f713 fix: total in histogram response of events search 2020-06-19 16:20:17 +08:00
hongming
ee741858b6 fix: multi-cluster proxy authentication
Signed-off-by: hongming <talonwan@yunify.com>
2020-06-19 15:20:43 +08:00
KubeSphere CI Bot
0493a352dc Merge pull request #2225 from wansir/controller-bug
fix: workspace label missing after update
2020-06-19 10:23:40 +08:00
wanjunlei
7393ef91fa processing audit information of non-standard request
Signed-off-by: wanjunlei <wanjunlei@yunify.com>
2020-06-18 22:56:25 +08:00
hongming
618a4bb424 fix: workspace label missing after update
Signed-off-by: hongming <talonwan@yunify.com>
2020-06-18 15:23:28 +08:00
KubeSphere CI Bot
197591baea Merge pull request #2219 from wansir/workspacerole-patch
add role patch API
2020-06-18 11:45:40 +08:00
hongming
56cf6d1028 add role patch API
Signed-off-by: hongming <talonwan@yunify.com>
2020-06-18 11:31:55 +08:00
zryfish
b661e0d1b6 fix cluster import validation bug (#2223) 2020-06-18 10:54:20 +08:00
KubeSphere CI Bot
0ac6d069dc Merge pull request #2221 from wansir/master
fix: controller panic
2020-06-17 19:34:40 +08:00
hongming
1f23f2ad8b fix: controller panic
Signed-off-by: hongming <talonwan@yunify.com>
2020-06-17 18:57:10 +08:00
KubeSphere CI Bot
2f6f37b158 Merge pull request #2217 from wansir/master
fix: workspace cluster authorize
2020-06-17 16:57:40 +08:00
KubeSphere CI Bot
cc3554d049 Merge pull request #2218 from wansir/label-filter
fix: label filter logic
2020-06-17 16:51:40 +08:00
KubeSphere CI Bot
85d08dede8 Merge pull request #2216 from wanjunlei/auditing
fix the bug "Cannot read property 'get' of undefined"
2020-06-17 16:39:40 +08:00
hongming
01944c05ee fix: label filter logic
Signed-off-by: hongming <talonwan@yunify.com>
2020-06-17 16:11:22 +08:00
hongming
8aa934bfb7 fix: workspace cluster authorize
Signed-off-by: hongming <talonwan@yunify.com>
2020-06-17 13:10:11 +08:00
wanjunlei
0933e2f185 add test 2020-06-17 09:48:56 +08:00
wanjunlei
bdb123b95a fix the bug "Cannot read property 'get' of undefined" 2020-06-17 00:04:28 +08:00
KubeSphere CI Bot
692271bb56 Merge pull request #2212 from wansir/workspace-manager
fix: auto create workspace manager rolebinding
2020-06-16 18:15:40 +08:00
KubeSphere CI Bot
85581a4f57 Merge pull request #2206 from wansir/label-filter
fix: label filter
2020-06-16 18:12:40 +08:00
hongming
203fde784a fix: auto create workspace manager rolebinding
Signed-off-by: hongming <talonwan@yunify.com>
2020-06-16 16:30:40 +08:00
hongming
c7a9f103ee fix: label filter
Signed-off-by: hongming <talonwan@yunify.com>
2020-06-16 13:02:34 +08:00
zryfish
5d9542025a create openpitrix runtime when new cluster added (#2204) 2020-06-15 23:17:16 +08:00
KubeSphere CI Bot
bef5eb46b1 Merge pull request #2164 from wansir/controller
improve multicluster resource controller
2020-06-15 22:43:40 +08:00
hongming
4fcaa78b45 improve multicluster resource controller
Signed-off-by: hongming <talonwan@yunify.com>
2020-06-15 21:40:24 +08:00
KubeSphere CI Bot
8c5e022450 Merge pull request #2203 from zheng1/refactor_op
Bugfix: UpsertRuntime create wrong runtime_id
2020-06-15 21:39:40 +08:00
Zhengyi Lai
887186b7b5 Bugfix: UpsertRuntime create wrong runtime_id
Signed-off-by: Zhengyi Lai <zheng1@yunify.com>
2020-06-15 21:10:35 +08:00
KubeSphere CI Bot
977e30700e Merge pull request #2187 from wanjunlei/master
add audit components
2020-06-15 11:40:40 +08:00
KubeSphere CI Bot
0ff0ab3f10 Merge pull request #2190 from duanjiong/networkpolicy-fix
only accept validated CIDR in namespace networkpolicy
2020-06-15 11:37:40 +08:00
KubeSphere CI Bot
61d827db54 Merge pull request #2195 from zheng1/refactor_op
Refactor with OpenPitrix
2020-06-15 11:06:40 +08:00
wanjunlei
a3561550bb modify annotation of Event 2020-06-14 11:25:28 +08:00
wanjunlei
b96537b27f delete auditing controller 2020-06-13 17:42:27 +08:00
wanjunlei
584bdda50e Add two elements Message and Devops into Event struct.
Pass the event object instead of RequestInfo by request context to request handler.
2020-06-13 17:13:55 +08:00
Zhengyi Lai
3778abf767 Cleanup namespace controller 2020-06-13 00:32:13 +08:00
KubeSphere CI Bot
ce55e44ee9 Merge pull request #2197 from zheng1/cluster_network
Add option to enable network policy or not
2020-06-12 15:53:40 +08:00
Zhengyi Lai
e1e2b6b5e4 Remove WeaveScopeHost from network
Signed-off-by: Zhengyi Lai <zheng1@yunify.com>
2020-06-12 15:23:00 +08:00
Zhengyi Lai
1055df5fce Add option to enable network policy or not 2020-06-12 15:12:38 +08:00
KubeSphere CI Bot
df36ae5c0e Merge pull request #2191 from wansir/tenant-api
add tenant resource API
2020-06-12 13:20:39 +08:00
wanjunlei
dd03cab01c change log level of get crd webhook error 2020-06-12 13:20:18 +08:00
KubeSphere CI Bot
63d2463d20 Merge pull request #2193 from shaowenchen/fix_pipeline
fix apiresult
2020-06-12 12:34:39 +08:00
hongming
b1d996f4a7 add test case
Signed-off-by: hongming <talonwan@yunify.com>
2020-06-12 12:29:46 +08:00
wanjunlei
356560ac74 resolve conversation
formater

Signed-off-by: wanjunlei <wanjunlei@yunify.com>

debug

debug

Signed-off-by: wanjunlei <wanjunlei@yunify.com>
2020-06-12 11:19:27 +08:00
Zhengyi Lai
cf162559e3 Refactor with OpenPitrix
Signed-off-by: Zhengyi Lai <zheng1@yunify.com> (+2 squashed commits)
2020-06-12 00:29:39 +08:00
shaowenchen
8a11cbc875 fix apiresult
Signed-off-by: shaowenchen <mail@chenshaowen.com>
2020-06-11 18:29:22 +08:00
zryfish
79e3597173 fix cluster status (#2192) 2020-06-11 16:10:19 +08:00
hongming
bafeecfee6 add tenant resource API
Signed-off-by: hongming <talonwan@yunify.com>
2020-06-11 01:47:25 +08:00
pengcong06
55354bf20d add list events 2020-06-10 21:28:07 +08:00
pengcong06
59839439d5 feat:multi cluster application 2020-06-10 21:28:07 +08:00
wanjunlei
4cb84de44d add audit components
Signed-off-by: wanjunlei <wanjunlei@yunify.com>

debug

add test

add test

add test
2020-06-10 20:21:07 +08:00
Duan Jiong
825e026930 validate cidr
only accept validated cidr.
And fix the error handle when network-isotate is diabled.
And remove the useless crd.

Signed-off-by: Duan Jiong <djduanjiong@gmail.com>
2020-06-10 18:11:05 +08:00
zryfish
d4b7d88b4b fix cluster status unchanged when cluster agent is already unavailable (#2188) 2020-06-10 17:27:41 +08:00
KubeSphere CI Bot
259971c0ed Merge pull request #2180 from shaowenchen/fix_pipeline
add field for pipeline branch
2020-06-10 17:04:39 +08:00
shaowenchen
3b2714982a add field for pipeline branch
Signed-off-by: shaowenchen <mail@chenshaowen.com>
2020-06-09 15:24:55 +08:00
KubeSphere CI Bot
0316223f0d Merge pull request #2168 from wansir/csr-controller
fix csr controller bug
2020-06-09 14:46:38 +08:00
KubeSphere CI Bot
cc736e475f Merge pull request #2115 from shaowenchen/fix_query_credential
Fix query credential
2020-06-09 13:02:38 +08:00
shaowenchen
266e85dbee fix filter credential
Signed-off-by: shaowenchen <mail@chenshaowen.com>
2020-06-09 12:00:47 +08:00
KubeSphere CI Bot
5993bdd654 Merge pull request #2161 from shaowenchen/fix_jenkin_basic
fix jenkins basic auth
2020-06-09 11:21:39 +08:00
KubeSphere CI Bot
dfed2a5afe Merge pull request #2179 from duanjiong/rename-controller
rename nsnp controller
2020-06-09 10:12:38 +08:00
Duan Jiong
3c21a21bd7 rename nsnp controller
Signed-off-by: Duan Jiong <djduanjiong@gmail.com>
2020-06-08 22:36:49 +08:00
shaowenchen
e723038abc fix jenkins basic
Signed-off-by: shaowenchen <mail@chenshaowen.com>
2020-06-08 18:34:42 +08:00
zryfish
e7c5c5a1f3 fix namespace controller crash when openpitrix is not enabled (#2167) 2020-06-07 23:15:43 +08:00
hongming
80953f5945 fix csr controller bug
Signed-off-by: hongming <talonwan@yunify.com>
2020-06-07 22:45:19 +08:00
zryfish
4f98fac39d fix namespace controller crash when openpitrix is not enabled (#2166) 2020-06-07 21:46:25 +08:00
zryfish
9b16c0589c fix openpitrix return non nil client when enpoint is empty (#2165) 2020-06-07 20:00:27 +08:00
KubeSphere CI Bot
df348b199f Merge pull request #2155 from wanjunlei/master
add response_code_filter parameter in auditing events search api
2020-06-05 14:56:38 +08:00
KubeSphere CI Bot
38274c61f9 Merge pull request #2157 from min-zh/snapshot-crds
add snapshot crds
2020-06-05 14:55:37 +08:00
zryfish
bb4d3fee7a add component status to cluster status (#2160) 2020-06-05 14:51:05 +08:00
KubeSphere CI Bot
98b34a7760 Merge pull request #2159 from zheng1/fix_owners
Update network&openpitrix OWNERS
2020-06-04 20:08:37 +08:00
Zhengyi Lai
72939ab397 Update network&openpitrix OWNERS
Signed-off-by: Zhengyi Lai <zheng1@yunify.com>
2020-06-04 20:07:47 +08:00
zhangmin
8bda24e53a add snapshot crds 2020-06-04 17:01:54 +08:00
KubeSphere CI Bot
eb99025fe7 Merge pull request #2149 from min-zh/snapshot
storage capability
2020-06-04 12:47:37 +08:00
KubeSphere CI Bot
d42d20c23c Merge pull request #2154 from wansir/role-templates
fix: clusterrolebinding controller bug
2020-06-04 12:41:37 +08:00
hongming
4e418bbe03 fix: clusterrolebinding controller bug
Signed-off-by: hongming <talonwan@yunify.com>
2020-06-04 12:18:00 +08:00
wanjunlei
3d3b9d5af5 add response_code_filter parameter in auditing events search api 2020-06-04 12:06:56 +08:00
zhangmin
c6158a7cd3 storage capability 2020-06-04 10:36:13 +08:00
KubeSphere CI Bot
1882b20e6e Merge pull request #2132 from wansir/role-templates
update user's role templates API
2020-06-04 00:03:36 +08:00
hongming
ce3cd21a76 update user's role templates API
Signed-off-by: hongming <talonwan@yunify.com>
2020-06-03 23:49:49 +08:00
KubeSphere CI Bot
78eae543dd Merge pull request #2152 from zheng1/fix_owners
Update network OWNERS files
2020-06-03 16:16:37 +08:00
Zhengyi Lai
c9400359b1 Update network OWNERS files
Signed-off-by: Zhengyi Lai <zheng1@yunify.com>
2020-06-03 16:11:40 +08:00
KubeSphere CI Bot
43a02c8c6e Merge pull request #2151 from duanjiong/networkpolicy-fix
fix namespace networkpolicy
2020-06-03 16:06:36 +08:00
Duan Jiong
e922a85dec fix namespace networkpolicy
add prefix when set key, otherwise the k8s rule will not be deleted
don't append ingress when ingress is empty, otherwise all ingress traffic will be allowed.

Signed-off-by: Duan Jiong <djduanjiong@gmail.com>
2020-06-03 12:08:30 +08:00
KubeSphere CI Bot
3f86b8b35d Merge pull request #2138 from wansir/options
fix: crash if config file not provide
2020-06-03 11:26:36 +08:00
zryfish
ee5afd7d44 Merge branch 'master' into options 2020-06-03 11:14:42 +08:00
KubeSphere CI Bot
2f650dbac5 Merge pull request #2148 from shaowenchen/devops_log
set devops log level to 8
2020-06-02 16:31:37 +08:00
shaowenchen
2e04009547 set devops log level to 8
Signed-off-by: shaowenchen <mail@chenshaowen.com>
2020-06-02 16:23:01 +08:00
zryfish
845887a325 fix proxy bug (#2146) 2020-06-02 14:26:31 +08:00
zryfish
68029de64c fix authorization header stripped by kube-apiserver (#2145) 2020-06-02 11:59:46 +08:00
KubeSphere CI Bot
a86f2a10c8 Merge pull request #2137 from huanggze/logging-fix
logging: start_time and end_time are not required params
2020-06-01 20:20:36 +08:00
zryfish
59900f6e1c use kube-apiserver proxy if no kubesphere api endpoint provided (#2144) 2020-06-01 19:54:05 +08:00
zryfish
345ce1ac0f fix audit options default empty (#2143) 2020-06-01 13:57:38 +08:00
KubeSphere CI Bot
b681193c1f Merge pull request #2129 from wanjunlei/master
add auditing events search api
2020-06-01 11:45:37 +08:00
KubeSphere CI Bot
82b93f8962 Merge pull request #2134 from huanggze/monitor-fix
config: remove prometheus secondary-endpoint flag
2020-05-30 23:54:36 +08:00
zryfish
b9c2ebc97c fix jaeger api endpoint bug (#2140) 2020-05-30 23:54:21 +08:00
KubeSphere CI Bot
5509f6483b Merge pull request #2135 from klj890/fix/ingressController
add configmap default suffix
2020-05-30 23:53:36 +08:00
hongming
9699f6c566 fix: crash if configfile not provide
Signed-off-by: hongming <talonwan@yunify.com>
2020-05-30 10:27:43 +08:00
huanggze
71b2b78c38 logging: start_time and end_time are not required params
Signed-off-by: huanggze <loganhuang@yunify.com>
2020-05-29 18:59:36 +08:00
Tony Wang
decb160a4e Update routers.go
add configMap Suffix.
2020-05-29 17:56:00 +08:00
huanggze
22cbbb30b1 config: remove prometheus secondary-endpoint flag
Signed-off-by: huanggze <loganhuang@yunify.com>
2020-05-29 17:12:43 +08:00
KubeSphere CI Bot
a575c3eda8 Merge pull request #2117 from shaowenchen/fix_devops_api
modify devops api for tenant
2020-05-29 15:34:35 +08:00
root
951c31189a add auditing events search api 2020-05-28 09:55:14 +08:00
KubeSphere CI Bot
ea2e87697d Merge pull request #2126 from junotx/master
fix events search
2020-05-27 18:11:36 +08:00
zryfish
27ca024bb7 add version api (#2127)
add cluster validation api
2020-05-27 18:11:27 +08:00
junotx
5818733481 fix events search 2020-05-27 14:24:34 +08:00
KubeSphere CI Bot
e119fd8a36 Merge pull request #2114 from huanggze/op
monitor: fix platform-level statistics
2020-05-27 14:17:35 +08:00
huanggze
0e83717914 monitor: fix platform-level statistics
Signed-off-by: huanggze <loganhuang@yunify.com>
2020-05-27 13:58:07 +08:00
KubeSphere CI Bot
e71cd79c2b Merge pull request #2112 from shaowenchen/fix_s2i_api
fix SecretRef nil
2020-05-27 11:19:35 +08:00
zryfish
ccb7a89061 fix 415 unsupported media type (#2122) 2020-05-26 15:29:06 +08:00
KubeSphere CI Bot
5c44d17d9e Merge pull request #2118 from rayzhou2017/master
Add license info in code file as a sample for devops compoment
2020-05-26 15:28:34 +08:00
zryfish
cb65048926 remove consumes and produces on root webservice (#2120) 2020-05-26 14:33:16 +08:00
KubeSphere CI Bot
453c08f410 Merge pull request #2119 from shaowenchen/add_license_for_devops
add license for devops
2020-05-26 11:02:35 +08:00
shaowenchen
0a087c634b Merge branch 'master' into add_license_for_devops 2020-05-26 11:01:08 +08:00
shaowenchen
d83ac69d80 add license for devops
Signed-off-by: shaowenchen <mail@chenshaowen.com>
2020-05-26 10:31:14 +08:00
Ray Zhou
66609a8511 Add license info in code file as a sample for devops compoment 2020-05-26 09:49:42 +08:00
shaowenchen
6d3647405c fix devops api for tenant 2020-05-26 09:46:43 +08:00
KubeSphere CI Bot
b8f6a97340 Merge pull request #2100 from huanggze/logging
logging: integrate new IAM
2020-05-25 21:43:34 +08:00
KubeSphere CI Bot
c104516ce0 Merge pull request #2111 from wansir/update-copyright
copyright license update
2020-05-25 17:17:34 +08:00
huanggze
9b6f38d857 logging: integrate new IAM
Signed-off-by: huanggze <loganhuang@yunify.com>
2020-05-25 16:58:20 +08:00
shaowenchen
3b8dc4bac4 fix SecretRef nil
Signed-off-by: shaowenchen <mail@chenshaowen.com>
2020-05-25 15:39:20 +08:00
KubeSphere CI Bot
19d546a973 Merge pull request #2106 from wansir/master
fix user's resource lifecycle
2020-05-25 15:15:34 +08:00
KubeSphere CI Bot
dc4ec5e51e Merge pull request #2108 from shaowenchen/fix_project_info
fix project info
2020-05-25 15:07:35 +08:00
hongming
85b61dce7c copyright license update
Signed-off-by: hongming <talonwan@yunify.com>
2020-05-25 14:51:24 +08:00
shaowenchen
3facb060ac fix project info
Signed-off-by: shaowenchen <mail@chenshaowen.com>
2020-05-25 14:25:22 +08:00
zryfish
48db63b91f fix registry public hub search (#2110) 2020-05-25 14:21:18 +08:00
KubeSphere CI Bot
bb94d6da24 Merge pull request #2107 from shaowenchen/complete_dockerfileignore
add .git to .dockerfileignore
2020-05-25 10:52:35 +08:00
KubeSphere CI Bot
8362f59adc Merge pull request #2104 from huanggze/monitoring
monitor: add platform metrics
2020-05-25 10:49:34 +08:00
shaowenchen
42f1f38a51 add .git to .dockerfileignore
Signed-off-by: shaowenchen <mail@chenshaowen.com>
2020-05-24 16:19:25 +08:00
hongming
57acaeba41 use ownerReference control the lifecycle of user's kubeconfig and kubectl pod
Signed-off-by: hongming <talonwan@yunify.com>
2020-05-23 21:26:28 +08:00
KubeSphere CI Bot
4074e73a1b Merge pull request #2072 from shaowenchen/fix_create_pipeline
fix pipeline bugs
2020-05-23 21:15:34 +08:00
KubeSphere CI Bot
5a89ce7394 Merge pull request #2056 from wansir/master
improve IAM module
2020-05-23 21:02:35 +08:00
hongming
8f93266ec0 improve IAM module
Signed-off-by: hongming <talonwan@yunify.com>
2020-05-23 20:48:19 +08:00
huanggze
5c695a1c90 monitor: add platform metrics
Signed-off-by: huanggze <loganhuang@yunify.com>
2020-05-23 15:09:20 +08:00
shaowenchen
11b72a8817 fix create pipeline error
fix get pipelinerun list

feature kapi for devopsproject pipeline credential

fix get pipelinebranch

fix create credential api

Signed-off-by: shaowenchen <mail@chenshaowen.com>
2020-05-22 14:56:34 +08:00
KubeSphere CI Bot
b8e6a670d7 Merge pull request #2099 from duanjiong/networkpolicy-fix
fix namespace networkpolicy
2020-05-22 14:54:34 +08:00
KubeSphere CI Bot
62566b9712 Merge pull request #2096 from rayzhou2017/master
Fix grammer errors in code comments
2020-05-22 13:55:33 +08:00
Duan Jiong
7a0b18315f fix namespace networkpolicy
add filter on namespace event func
delete the code which do same work with namespace controller

Signed-off-by: Duan Jiong <djduanjiong@gmail.com>
2020-05-21 11:02:34 +08:00
zryfish
0d12529051 bump kiali version (#2097) 2020-05-20 23:55:44 +08:00
Ray Zhou
66a312a1e0 Fix grammer errors in code comments 2020-05-20 20:31:19 +08:00
KubeSphere CI Bot
6f97e3df14 Merge pull request #2093 from pengcong06/opbug
params key error: app -> app_id
2020-05-20 19:10:33 +08:00
pengcong06
b568f824d0 params key error: app -> app_id 2020-05-20 00:32:29 +08:00
KubeSphere CI Bot
e49b2de7b9 Merge pull request #2086 from huanggze/monitor-fix
monitoring: fix metric value NaN
2020-05-19 19:24:33 +08:00
KubeSphere CI Bot
28a9e072f4 Merge pull request #2080 from duanjiong/networkpolicy-fix
fix namespace networkpolicy
2020-05-19 19:22:33 +08:00
KubeSphere CI Bot
2f2770eced Merge pull request #2089 from donhui/patch-1
typo fix
2020-05-19 15:50:32 +08:00
Donghui Wang
028e882420 typo fix 2020-05-19 15:19:44 +08:00
huanggze
14069b95f2 monitoring: fix metric value NaN
Signed-off-by: huanggze <loganhuang@yunify.com>
2020-05-18 22:30:36 +08:00
KubeSphere CI Bot
af341f6fbe Merge pull request #2085 from chinazj/krole
add unit test for job controller
2020-05-18 21:14:32 +08:00
jian.zhang
df49775acb add unit test for job
Signed-off-by: jian.zhang <jian.zhang@jhlinux.com>
2020-05-18 20:21:57 +08:00
zryfish
17200172a8 remove specific version of generic proxy server (#2084) 2020-05-18 18:31:57 +08:00
KubeSphere CI Bot
4e3d37a994 Merge pull request #2079 from huanggze/master
monitoring: update node_pod_quota
2020-05-18 14:01:32 +08:00
Duan Jiong
4e45d659c0 fix namespace networkpolicy
1. allow egress when isolate is enabled
2. add nsnp prefix "nsnp-"
3. remove some useless log

Signed-off-by: Duan Jiong <djduanjiong@gmail.com>
2020-05-18 09:10:33 +08:00
huanggze
4f39094e2f monitoring: update node_pod_quota
Signed-off-by: huanggze <loganhuang@yunify.com>
2020-05-15 21:01:29 +08:00
KubeSphere CI Bot
f0749ac442 Merge pull request #2076 from huanggze/custom-monitoring
api: list metric labels and values
2020-05-15 19:52:32 +08:00
KubeSphere CI Bot
ec903222a7 Merge pull request #2069 from junotx/master
add events search apis
2020-05-15 19:51:31 +08:00
huanggze
8b913abd61 api: list metric labels and values
Signed-off-by: huanggze <loganhuang@yunify.com>
2020-05-15 19:22:23 +08:00
zryfish
d2600705c6 Add requests to nodes (#2078)
* add requests and limits to nodes

* add requests and limits to nodes
2020-05-15 17:31:38 +08:00
junotx
8f5ca7673d add events search apis 2020-05-15 10:28:12 +08:00
Guangzhe Huang
044dd8eba3 monitoring: update builtin metrics (#2074)
Signed-off-by: huanggze <loganhuang@yunify.com>
2020-05-15 10:20:01 +08:00
KubeSphere CI Bot
c3d74660d1 Merge pull request #2071 from shaowenchen/feature_add_pipeline_api
add pipeline api
2020-05-14 23:47:32 +08:00
KubeSphere CI Bot
4abaf96757 Merge pull request #2065 from shaowenchen/fix_create_devops
fix devops create and delete bug
2020-05-14 23:46:31 +08:00
shaowenchen
78080afbf5 fix test 2020-05-14 19:09:53 +08:00
KubeSphere CI Bot
d80cbff938 Merge pull request #2068 from pengcong06/dev
init opClient
2020-05-14 16:33:31 +08:00
pengcong06
070aa863fb init opClient 2020-05-14 14:14:30 +08:00
shaowenchen
b84f261942 add pipeline api 2020-05-14 14:13:07 +08:00
zryfish
1bd660c370 fix proxy bug (#2070) 2020-05-14 13:22:30 +08:00
shaowenchen
8f40bb2d3e fix delete devops failed 2020-05-14 10:01:46 +08:00
shaowenchen
9b656196e3 fix delete devops 2020-05-13 23:13:13 +08:00
shaowenchen
f52cb829c2 fix create devops 2020-05-13 23:01:26 +08:00
zryfish
d358d9ab1a add notification apis (#2066)
add alerting apis

add generic proxy
2020-05-13 21:50:26 +08:00
shaowenchen
4f9c77383e fix create devopsproject 2020-05-13 21:34:16 +08:00
shaowenchen
4fc56de7c0 fix create devopsproject 2020-05-13 21:32:31 +08:00
KubeSphere CI Bot
1464ca197d Merge pull request #2057 from min-zh/snapshot
fix bug of pvc api
2020-05-13 17:24:31 +08:00
zhangmin
250dd4b065 fix bugs of pvc api 2020-05-13 15:56:13 +08:00
zryfish
1d48ca3446 fix ws authorization bug (#2059) 2020-05-12 16:08:05 +08:00
zryfish
dcd341e70f fix websocket bug (#2058) 2020-05-12 15:31:13 +08:00
KubeSphere CI Bot
f34a4e1c2a Merge pull request #2051 from wansir/dev
fix list namespaces
2020-05-08 23:08:29 +08:00
zryfish
18ab887640 add cluster and crd to resources api group (#2053) 2020-05-08 17:30:15 +08:00
KubeSphere CI Bot
256b178927 Merge pull request #2050 from min-zh/snapshot
volume snapshot
2020-05-07 11:40:29 +08:00
zhangmin
4f17b7a07f volume snapshot 2020-05-07 10:47:44 +08:00
hongming
992be764a1 fix list namespaces
Signed-off-by: hongming <talonwan@yunify.com>
2020-05-07 09:14:54 +08:00
zryfish
87e567eaf5 fix cluster controller bug (#2049) 2020-05-06 16:23:38 +08:00
zryfish
dc6c9cc58e fix generation bug (#2048) 2020-05-06 13:53:18 +08:00
KubeSphere CI Bot
738a6102a0 Merge pull request #2045 from wansir/dev
fuzzy matching name by default
2020-05-06 11:17:28 +08:00
zryfish
7cdf67f9f2 fix generation bug (#2047) 2020-05-06 10:52:56 +08:00
KubeSphere CI Bot
3ff82c7299 Merge pull request #2041 from duanjiong/networkpolicy-resource
add k8s networkpolicy resource
2020-05-06 10:40:29 +08:00
hongming
af59940ed2 fuzzy matching name by default
Signed-off-by: hongming <talonwan@yunify.com>
2020-05-04 23:53:57 +08:00
Duan Jiong
7e0983ad47 add k8s networkpolicy resource
Signed-off-by: Duan Jiong <djduanjiong@gmail.com>
2020-05-03 09:17:24 +08:00
zryfish
98f44fac99 fix generation bug (#2043) 2020-05-01 13:12:54 +08:00
zryfish
933207d247 add cluster proxy gerneration code (#2042) 2020-04-30 22:33:23 +08:00
zryfish
cdd116242a Merge pull request #2039 from zryfish/master
Merge dev branch
2020-04-29 20:46:18 +08:00
Jeff
c62254696c fix openapi schema bug 2020-04-29 20:19:48 +08:00
Jeff
edcec868dc fix merge conflicts 2020-04-29 19:48:40 +08:00
Jeff
4e8e840d1f Merge branch 'dev' 2020-04-29 19:20:59 +08:00
Jeff
19f1971215 rearrange workflow 2020-04-29 17:05:30 +08:00
Jeff
2bac1a24d9 rebase 2020-04-29 17:05:30 +08:00
zryfish
31436b451d fix multicluster options (#2037) 2020-04-29 14:36:40 +08:00
KubeSphere CI Bot
8af14d79ef Merge pull request #1890 from wnxn/set-default-sc
Add patch api header
2020-04-29 10:45:27 +08:00
KubeSphere CI Bot
566ed4d4b9 Merge pull request #2012 from duanjiong/network-policy
Network policy
2020-04-29 10:44:27 +08:00
KubeSphere CI Bot
25e95c4c3f Merge pull request #2018 from wansir/dev
migrate legacy API
2020-04-29 10:42:26 +08:00
hongming
8976ee242f remove useless go moudle
Signed-off-by: hongming <talonwan@yunify.com>
2020-04-29 10:28:25 +08:00
KubeSphere CI Bot
e4cb3b784a Merge pull request #1806 from wansir/master
multi-tenancy 3.0 roadmap
2020-04-28 15:36:27 +08:00
KubeSphere CI Bot
96eeee56e5 Merge pull request #1792 from benjaminhuo/master
Add v3.0 observability roadmap
2020-04-28 15:35:27 +08:00
KubeSphere CI Bot
640baf6624 Merge pull request #1805 from wnxn/roadmap
Add storage roadmap for ks 3.0
2020-04-28 15:34:27 +08:00
KubeSphere CI Bot
ec93d14a49 Merge pull request #2035 from shaowenchen/patch-1
Update OWNERS
2020-04-28 15:03:27 +08:00
pengfei
ccc6b58aab Merge pull request #1795 from runzexia/patch-1
devops 3.0 roadmap
2020-04-28 12:03:10 +08:00
shaowenchen
588cc853df Update OWNERS 2020-04-28 12:00:20 +08:00
Duan Jiong
e8cee7be68 update vendor
Signed-off-by: Duan Jiong <djduanjiong@gmail.com>
2020-04-28 10:54:41 +08:00
Duan Jiong
4fb9d84fea allow dns traffic and host node traffic
Signed-off-by: Duan Jiong <djduanjiong@gmail.com>
2020-04-28 10:21:58 +08:00
Duan Jiong
1ab7d67e51 allow ip/port in service when config service nsnp
Signed-off-by: Duan Jiong <djduanjiong@gmail.com>
2020-04-28 10:21:58 +08:00
Duan Jiong
d3bdcd0465 network: support network isolate
Add new crd to convert kubesphere network policy to k8s network policy, and then other network
plugin will do the rest work.

Use  cache.go from calico project's kube-controller,  it aim to  sync nsnp with k8s np, delete unused np, and relieve the pressure on k8s restful client.

If you want higher performance, you can implement interface  NsNetworkPolicyProvider in pkg/controller/provider/namespace_np.go.

Signed-off-by: Duan Jiong <djduanjiong@gmail.com>
2020-04-28 10:21:50 +08:00
Duan Jiong
fc373b18e3 update workspace spec
Add field networkIsolate in workspace spec, in order to support workspace network isolate

Signed-off-by: Duan Jiong <djduanjiong@gmail.com>
2020-04-28 10:06:54 +08:00
Duan Jiong
26d014302e namespace: add namespace label
in order to select namespace when convert nsnp to k8snp

Signed-off-by: Duan Jiong <djduanjiong@gmail.com>
2020-04-28 10:06:53 +08:00
hongming
b7a2705ac9 Merge remote-tracking branch 'upstream/dev' into dev
# Conflicts:
#	go.mod
#	pkg/apiserver/apiserver.go
#	pkg/apiserver/config/config.go
2020-04-28 00:52:30 +08:00
hongming
7db2ba662c migrate legacy API
Signed-off-by: hongming <talonwan@yunify.com>
2020-04-28 00:45:12 +08:00
zryfish
5a3eb651f3 change cluster schema (#2026)
* change cluster schema

* change cluster schema
2020-04-27 17:34:02 +08:00
KubeSphere CI Bot
794f388306 Merge pull request #2022 from zheng1/sdn
Regenerate swagger.json
2020-04-27 13:53:26 +08:00
KubeSphere CI Bot
3fada47623 Merge pull request #2032 from wansir/update-makefile
update makefile
2020-04-26 15:15:26 +08:00
hongming
bfd3d21540 multi-tenancy 3.0 roadmap
Signed-off-by: hongming <talonwan@yunify.com>
2020-04-26 14:42:23 +08:00
hongming
014f0c4df2 update makefile
Signed-off-by: hongming <talonwan@yunify.com>
2020-04-26 14:33:58 +08:00
KubeSphere CI Bot
748cc161fc Merge pull request #2027 from huanggze/dev-fix
monitoring: some bug fix
2020-04-24 21:45:26 +08:00
huanggze
fc56333d3c monitoring: some bug fix
Signed-off-by: huanggze <loganhuang@yunify.com>
2020-04-24 21:00:59 +08:00
KubeSphere CI Bot
f717172971 Merge pull request #2021 from wansir/makefile
update makefile
2020-04-24 16:21:25 +08:00
Zhengyi Lai
878d0fe517 Generate swagger.json 2020-04-22 19:24:43 +08:00
KubeSphere CI Bot
3f89eaef7e Merge pull request #2016 from huanggze/dev-fix
fix isRangeQuery
2020-04-21 13:37:23 +08:00
hongming
acac0b6888 update makefile
Signed-off-by: hongming <talonwan@yunify.com>
2020-04-21 12:32:06 +08:00
KubeSphere CI Bot
3f1efb8e45 Merge pull request #2007 from huanggze/dev-custom
feat: custom monitoring
2020-04-20 20:04:22 +08:00
huanggze
dd78c1a036 feat: custom monitoring
Signed-off-by: huanggze <loganhuang@yunify.com>
2020-04-20 17:33:06 +08:00
KubeSphere CI Bot
88d90b3964 Merge pull request #2017 from rayzhou2017/master
Update Makefile header license description
2020-04-19 10:18:22 +08:00
KubeSphere CI Bot
d2a8b27a76 Merge pull request #1985 from zheng1/sdn
Add network topology APIs
2020-04-19 09:40:21 +08:00
Ray Zhou
34d5340005 Update makefile header license description 2020-04-18 14:25:38 +08:00
Ray Zhou
1e21c0ff42 Revert "Update Makefile license description"
This reverts commit b736078e3c.
2020-04-18 14:22:38 +08:00
Ray Zhou
b736078e3c Update Makefile license description 2020-04-18 14:17:56 +08:00
Zhengyi Lai
8ad17a4648 Add network configuration to apiserver/config 2020-04-17 23:27:57 +08:00
huanggze
9709161540 fix isRangeQuery
Signed-off-by: huanggze <loganhuang@yunify.com>
2020-04-17 16:48:07 +08:00
huanggze
6ef372a923 upgrade monitoring api version (#2015)
Signed-off-by: huanggze <loganhuang@yunify.com>
2020-04-17 16:00:01 +08:00
Zhengyi Lai
828f7726fd Add network topology APIs
Signed-off-by: Zhengyi Lai <zheng1@yunify.com>
2020-04-16 16:13:06 +08:00
zryfish
b51013333d Fix openapi schema (#2013)
* fix openapi spec

fix openapi schema bug

* fix api schema bug
2020-04-16 15:27:19 +08:00
KubeSphere CI Bot
ff7f99c589 Merge pull request #2011 from wansir/dev
migrate legacy API
2020-04-15 17:21:21 +08:00
hongming
5f951508c5 migrate legacy API
Signed-off-by: hongming <talonwan@yunify.com>
2020-04-15 16:59:13 +08:00
KubeSphere CI Bot
d38e396e8c Merge pull request #1961 from runzexia/devops-refactor
add test for s2i controller & devops CRD
2020-04-15 13:48:21 +08:00
runzexia
df3ad79786 rm unused file 2020-04-15 11:44:13 +08:00
runzexia
052af22761 regenerate 2020-04-15 11:37:52 +08:00
runzexia
d8259160b8 Merge branch 'dev' into devops-refactor
# Conflicts:
#	Makefile
#	api/api-rules/violation_exceptions.list
#	api/openapi-spec/swagger.json
#	cmd/controller-manager/app/controllers.go
#	hack/generate_client.sh
#	pkg/apis/cluster/v1alpha1/openapi_generated.go
#	pkg/client/informers/externalversions/generic.go
#	pkg/kapis/tenant/v1alpha2/register.go
#	pkg/models/tenant/devops.go
#	pkg/models/tenant/workspaces.go
#	pkg/simple/client/devops/fake/fakedevops.go
#	tools/cmd/crd-doc-gen/main.go
2020-04-15 11:33:05 +08:00
runzexia
9a6ba04a37 clean old devops code
todo impl use informer

Signed-off-by: runzexia <runzexia@yunify.com>
2020-04-15 11:03:08 +08:00
hongming
bb9e12be3d fix iam admission webhook (#2008)
Signed-off-by: hongming <talonwan@yunify.com>
2020-04-14 00:15:18 +08:00
KubeSphere CI Bot
864b244cc3 Merge pull request #2005 from wansir/token-cache-config
token cache config
2020-04-13 19:50:21 +08:00
hongming
3ce4a0d77c token cache config
Signed-off-by: hongming <talonwan@yunify.com>
2020-04-13 19:14:41 +08:00
KubeSphere CI Bot
ff2523e515 Merge pull request #1984 from huanggze/dev-monitoring
monitor: add tests
2020-04-13 14:14:20 +08:00
zryfish
372a52e70e monitor: add tests
Signed-off-by: huanggze <loganhuang@yunify.com>
2020-04-13 09:37:37 +08:00
KubeSphere CI Bot
17013d3519 Merge pull request #1989 from wansir/dev
add iam crd
2020-04-12 21:21:21 +08:00
hongming
8d18fc3657 update
Signed-off-by: hongming <talonwan@yunify.com>
2020-04-12 18:56:33 +08:00
zryfish
c3c6ed8898 fix proxy bug (#2002) 2020-04-11 21:05:40 +08:00
hongming
5ac915ad2e Merge remote-tracking branch 'upstream/dev' into dev
# Conflicts:
#	pkg/apis/iam/v1alpha2/user_types.go
2020-04-10 15:49:31 +08:00
hongming
a3d3c8e427 update
Signed-off-by: hongming <talonwan@yunify.com>
2020-04-10 15:41:23 +08:00
zryfish
6b4fd9b8fa Update build.yml 2020-04-10 15:21:10 +08:00
zryfish
dd5b96254c fix cluster bug (#1997) 2020-04-10 14:47:41 +08:00
zryfish
69c6d91fdb fix cluster controller (#1996) 2020-04-10 12:37:05 +08:00
hongming
0e814bb5e4 add iam crd
Signed-off-by: hongming <talonwan@yunify.com>
2020-04-10 04:05:23 +08:00
KubeSphere CI Bot
1604ed4b1a Merge pull request #1976 from rayzhou2017/master
Update README
2020-04-08 22:40:19 +08:00
zryfish
e174dcb3d6 add cluster controller (#1993) 2020-04-08 00:40:28 +08:00
zryfish
cfaeb10dc6 add cluster api group (#1992) 2020-04-07 19:33:45 +08:00
Ray Zhou
aa65b6b58e Add google group communication channel 2020-04-02 14:43:02 +08:00
Ray Zhou
0e81cc025e Update README 2020-04-02 13:55:39 +08:00
runzexia
56482f1feb fmt
Signed-off-by: runzexia <runzexia@yunify.com>
2020-04-02 10:29:47 +08:00
runzexia
7a6b27d77b Merge branch 'dev' into devops-refactor 2020-04-02 10:25:36 +08:00
runzexia
2aa343465e update
Signed-off-by: runzexia <runzexia@yunify.com>
2020-04-02 10:21:34 +08:00
zryfish
3c73471f79 fix path authorizer give no opinion on resource requests (#1981) 2020-04-01 17:41:50 +08:00
runzexia
449b5e042e trigger GitHub actions 2020-04-01 17:28:25 +08:00
runzexia
559c1fcf76 clean old devops code
todo impl use informer

Signed-off-by: runzexia <runzexia@yunify.com>
2020-04-01 15:54:57 +08:00
zryfish
c8dc3a4044 fix requestinfo bug (#1980) 2020-04-01 15:50:57 +08:00
zryfish
95f6d75c19 fix proxy host bug (#1977) 2020-04-01 15:23:29 +08:00
runzexia
c80a17f4b4 sonar handler init 2020-04-01 15:21:15 +08:00
runzexia
9ec99d1a63 clean import 2020-04-01 15:11:19 +08:00
runzexia
09576fdc15 updatee 2020-04-01 15:06:30 +08:00
runzexia
564d39caf0 clean codee 2020-04-01 12:04:05 +08:00
runzexia
30be09e012 refmt 2020-04-01 11:10:07 +08:00
runzexia
1a6f563da1 Merge branch 'dev' into devops-refactor
# Conflicts:
#	cmd/controller-manager/app/controllers.go
#	hack/generate_client.sh
#	pkg/client/clientset/versioned/clientset.go
#	pkg/client/clientset/versioned/fake/clientset_generated.go
#	pkg/client/clientset/versioned/fake/register.go
#	pkg/client/clientset/versioned/scheme/register.go
#	pkg/client/informers/externalversions/generic.go
2020-04-01 11:04:09 +08:00
KubeSphere CI Bot
1bf8beb1e6 Merge pull request #1971 from wansir/dev
implement identity provider and built-in oauth server
2020-03-31 07:32:17 +08:00
hongming
34dfc2048a add default oauth client
Signed-off-by: hongming <talonwan@yunify.com>
2020-03-30 19:40:57 +08:00
KubeSphere CI Bot
038bc7907b Merge pull request #1975 from rayzhou2017/master
Update README.md
2020-03-30 16:37:16 +08:00
Ray Zhou
b1767e78fe Update README.md 2020-03-30 16:21:15 +08:00
hongming
4746c72806 Merge remote-tracking branch 'upstream/dev' into dev
# Conflicts:
#	hack/generate_client.sh
2020-03-30 15:48:10 +08:00
hongming
0d2279f5e4 fix somme error in controller-manager
Signed-off-by: hongming <talonwan@yunify.com>
2020-03-30 15:40:03 +08:00
runzexia
d55fcdcfe4 remove check role
Signed-off-by: runzexia <runzexia@yunify.com>
2020-03-30 15:02:12 +08:00
runzexia
8892c63adb Merge branch 'dev' into devops-refactor 2020-03-30 10:26:13 +08:00
zryfish
7121e3609c move agent crd to kubesphere (#1974) 2020-03-29 16:49:11 +08:00
hongming
54fc52c0e3 add user crd
Signed-off-by: hongming <talonwan@yunify.com>
2020-03-28 21:14:43 +08:00
hongming
96a1d3825e update
Signed-off-by: hongming <talonwan@yunify.com>
2020-03-28 14:09:39 +08:00
runzexia
443eb3f74c enable controller
Signed-off-by: runzexia <runzexia@yunify.com>
2020-03-27 15:20:53 +08:00
runzexia
f827116a1d add credential usage hander
Signed-off-by: runzexia <runzexia@yunify.com>
2020-03-27 15:03:17 +08:00
runzexia
98fed531ac refmt
Signed-off-by: runzexia <runzexia@yunify.com>
2020-03-27 11:25:56 +08:00
runzexia
2fce04efd3 fix ut test
Signed-off-by: runzexia <runzexia@yunify.com>
2020-03-27 11:19:37 +08:00
runzexia
f411bec10b add ut test 2020-03-27 10:52:39 +08:00
zryfish
96ddf4cfa0 add workflow to dev branch (#1972) 2020-03-27 10:35:10 +08:00
hongming
9b9d4021ec implement identity provider and built-in oauth server
Signed-off-by: hongming <talonwan@yunify.com>
2020-03-26 15:19:20 +08:00
runzexia
af3b87ddca add devops credential controller
Signed-off-by: runzexia <runzexia@yunify.com>
2020-03-26 14:53:33 +08:00
runzexia
e8b9d9cdf3 add pipeline openapi docs
Signed-off-by: runzexia <runzexia@yunify.com>
2020-03-25 11:01:51 +08:00
runzexia
23c8d71a5a pipeline crd
Signed-off-by: runzexia <runzexia@yunify.com>
2020-03-25 10:58:39 +08:00
KubeSphere CI Bot
1e6e108597 Merge pull request #1967 from FeynmanZhou/readme
refine readme, remove the out-of-date docs
2020-03-25 10:20:59 +08:00
FeynmanZhou
75cd7e0677 refine README - CN
Signed-off-by: FeynmanZhou <pengfeizhou@yunify.com>
2020-03-24 17:10:53 +08:00
FeynmanZhou
8c1f621de5 refine readme, remove the out-of-date docs
Signed-off-by: FeynmanZhou <pengfeizhou@yunify.com>
2020-03-24 16:45:01 +08:00
zryfish
179fbdb67a move to github actions (#1965)
* move to github actions
2020-03-23 18:15:16 +08:00
runzexia
7a00f9e3e4 add multi version crd docs support &add crd docs gen
Signed-off-by: runzexia <runzexia@yunify.com>
2020-03-23 17:11:50 +08:00
runzexia
a48d7f5478 create devops job with admin ns name
Signed-off-by: runzexia <runzexia@yunify.com>
2020-03-23 16:13:49 +08:00
runzexia
e06a1a8335 create admin ns for devops project
Signed-off-by: runzexia <runzexia@yunify.com>
2020-03-23 15:56:37 +08:00
KubeSphere CI Bot
59002cd176 Merge pull request #1960 from wansir/dev
implement authorizer filter
2020-03-23 10:33:57 +08:00
runzexia
0ac15ea744 refmt code
Signed-off-by: runzexia <runzexia@yunify.com>
2020-03-23 10:01:22 +08:00
hongming
aa05c2baf4 update
Signed-off-by: hongming <talonwan@yunify.com>
2020-03-22 23:17:43 +08:00
hongming
cae7843832 update
Signed-off-by: hongming <talonwan@yunify.com>
2020-03-22 15:57:29 +08:00
hongming
b9bdcd824c update
Signed-off-by: hongming <talonwan@yunify.com>
2020-03-22 04:29:06 +08:00
hongming
aadb5e91e8 update
Signed-off-by: hongming <talonwan@yunify.com>
2020-03-21 20:31:01 +08:00
hongming
1f26e62105 update
Signed-off-by: hongming <talonwan@yunify.com>
2020-03-21 18:52:28 +08:00
runzexia
16d392065e fix go vet
Signed-off-by: runzexia <runzexia@yunify.com>
2020-03-20 10:37:37 +08:00
runzexia
ba4ab97cb6 fix comment
Signed-off-by: runzexia <runzexia@yunify.com>
2020-03-20 10:28:05 +08:00
hongming
9769357005 update
Signed-off-by: hongming <talonwan@yunify.com>
2020-03-20 02:16:11 +08:00
runzexia
91dd82891f devops project should be cluster
Signed-off-by: runzexia <runzexia@yunify.com>
2020-03-19 15:25:04 +08:00
runzexia
e86c27bc2c gen devops crd yaml
Signed-off-by: runzexia <runzexia@yunify.com>
2020-03-19 15:14:01 +08:00
runzexia
7ffee72b1f filter wach && list action
Signed-off-by: runzexia <runzexia@yunify.com>
2020-03-19 14:49:47 +08:00
runzexia
5dffb7305f add code comments
Signed-off-by: runzexia <runzexia@yunify.com>
2020-03-19 14:44:45 +08:00
runzexia
e4f2cdc3d2 fix go vet
Signed-off-by: runzexia <runzexia@yunify.com>
2020-03-19 14:28:35 +08:00
runzexia
3e998c3498 add devops project test
Signed-off-by: runzexia <runzexia@yunify.com>
2020-03-19 11:52:30 +08:00
hongming
23f6be88c6 implement authorizer filter
Signed-off-by: hongming <talonwan@yunify.com>
2020-03-19 11:17:21 +08:00
runzexia
71898e59dd add s2irun controller test
Signed-off-by: runzexia <runzexia@yunify.com>
2020-03-19 10:35:15 +08:00
runzexia
6a7bf0a86f add s2i controller test
Signed-off-by: runzexia <runzexia@yunify.com>
2020-03-19 09:53:16 +08:00
runzexia
93461cfb0b add devops project controller
Signed-off-by: runzexia <runzexia@yunify.com>
2020-03-18 14:48:41 +08:00
zryfish
0a07e5f652 refactor authentication (#1951)
* refactor authentication

* refactor authentication
2020-03-15 23:26:32 +08:00
zryfish
eb8a3c0dc6 refactor authentication (#1950) 2020-03-15 17:55:55 +08:00
zryfish
abf0d66b22 Add more tests (#1949)
* add more test code

* add more test code
2020-03-15 10:22:39 +08:00
zryfish
f8e7d06b07 move apigateway into apiserver (#1948) 2020-03-13 21:57:48 +08:00
runzexia
dab71e710b fix openapi gen tools (#1944)
Signed-off-by: runzexia <runzexia@yunify.com>
2020-03-10 15:46:46 +08:00
zryfish
641615b299 This is a huge commit, it does following things: (#1942)
1. Remove ks-iam standalone binary, move it to ks-apiserver
2. Generate all devops apis inside kubesphere repository, no need to
import s2ioperator.
3. Reorganize ldap code, make it more flexible to use.
2020-03-10 13:50:17 +08:00
KubeSphere CI Bot
fbd1904843 Merge pull request #1940 from Hugome/patch-1
Fix little year typo in the README
2020-03-07 17:06:39 +08:00
Hugome
bd4a529f7f Fix little year typo in the README
I was afraid the project was dead last year
2020-03-07 08:35:57 +01:00
runzexia
7270307b66 fix devops go vet (#1928)
Signed-off-by: runzexia <runzexia@yunify.com>
2020-03-07 12:46:09 +08:00
Guangzhe Huang
148a804726 refactor monitoring (#1751)
Signed-off-by: huanggze <loganhuang@yunify.com>
2020-03-07 12:34:52 +08:00
Guangzhe Huang
6c6bfb2677 [WIP] logging refactor (#1794)
* refactor logging

Signed-off-by: huanggze <loganhuang@yunify.com>

* refactor logging

Signed-off-by: huanggze <loganhuang@yunify.com>
2020-03-02 10:53:43 +08:00
KubeSphere CI Bot
112b962784 Merge pull request #1934 from FeynmanZhou/readme
refine readme, update download url to 2.1.1
2020-03-02 10:32:38 +08:00
FeynmanZhou
4e07963e42 refine readme, update download url to 2.1.1
Signed-off-by: FeynmanZhou <pengfeizhou@yunify.com>
2020-03-01 17:49:47 +08:00
hongming
a9e1183f3c code refactor (#1924)
* code refactor

Signed-off-by: hongming <talonwan@yunify.com>

* code refactor

Signed-off-by: hongming <talonwan@yunify.com>
2020-02-26 10:08:13 +08:00
hongming
570ef8b60a code refactor (#1923)
Signed-off-by: hongming <talonwan@yunify.com>
2020-02-25 20:47:59 +08:00
hongming
0664eeb559 code refactor (#1922)
Signed-off-by: hongming <talonwan@yunify.com>
2020-02-25 18:16:51 +08:00
KubeSphere CI Bot
0bc5529ea1 Merge pull request #1681 from huanggze/logging-doc
add logging dev guides
2020-02-24 16:31:36 +08:00
KubeSphere CI Bot
a44ee0d0fe Merge pull request #1689 from soulseen/s2i-doc
update s2i docs
2020-02-24 16:30:36 +08:00
KubeSphere CI Bot
dee8c54e18 Merge pull request #1685 from huanggze/monitoring-doc
add monitoring dev guides
2020-02-24 16:29:35 +08:00
hongming
abf9fee845 code refactor (#1786)
* implement LDAP mock client

Signed-off-by: hongming <talonwan@yunify.com>

* update

Signed-off-by: hongming <talonwan@yunify.com>

* update

Signed-off-by: hongming <talonwan@yunify.com>

* resolve conflict

Signed-off-by: hongming <talonwan@yunify.com>
2020-02-24 15:39:36 +08:00
runzexia
96aee0e60b Devops refactor (#1894)
* add devops client interface

Signed-off-by: runzexia <runzexia@yunify.com>

* direct return jenkins

Signed-off-by: runzexia <runzexia@yunify.com>

* add some interface

Signed-off-by: runzexia <runzexia@yunify.com>

* update

Signed-off-by: runzexia <runzexia@yunify.com>

* update interface

Signed-off-by: runzexia <runzexia@yunify.com>

* update

Signed-off-by: runzexia <runzexia@yunify.com>

* credential op structs

Signed-off-by: runzexia <runzexia@yunify.com>

* status

Signed-off-by: zhuxiaoyang <sunzhu@yunify.com>

* update interface

Signed-off-by: zhuxiaoyang <sunzhu@yunify.com>

* credential handler

Signed-off-by: runzexia <runzexia@yunify.com>

* update devopsoperator func

Signed-off-by: zhuxiaoyang <sunzhu@yunify.com>

* get build sonar

Signed-off-by: runzexia <runzexia@yunify.com>

* sonar handler

* mv code to cilent

Signed-off-by: runzexia <runzexia@yunify.com>

* update

Signed-off-by: runzexia <runzexia@yunify.com>

* project member handler

Signed-off-by: runzexia <runzexia@yunify.com>

* update pipeline operator interface

Signed-off-by: zhuxiaoyang <sunzhu@yunify.com>

* add tenant devops handler

Signed-off-by: runzexia <runzexia@yunify.com>

* update merge

Signed-off-by: runzexia <runzexia@yunify.com>

* clean

Signed-off-by: runzexia <runzexia@yunify.com>

* fmt

Signed-off-by: runzexia <runzexia@yunify.com>

* update ListPipelineRuns

Signed-off-by: zhuxiaoyang <sunzhu@yunify.com>

* complate pipelineOperator interface

Signed-off-by: zhuxiaoyang <sunzhu@yunify.com>

* update HttpParameters

Signed-off-by: zhuxiaoyang <sunzhu@yunify.com>

* add pipeline steps interface

Signed-off-by: zhuxiaoyang <sunzhu@yunify.com>

* update pipeline GetNodesDetail

Signed-off-by: zhuxiaoyang <sunzhu@yunify.com>

* add s2i api

Signed-off-by: runzexia <runzexia@yunify.com>

* add branch pipeline interface and update handler

Signed-off-by: zhuxiaoyang <sunzhu@yunify.com>

* add scan branch interface and update handler

Signed-off-by: zhuxiaoyang <sunzhu@yunify.com>

* add common interface and update handler

Signed-off-by: zhuxiaoyang <sunzhu@yunify.com>

* add SCM interface and update handler

Signed-off-by: zhuxiaoyang <sunzhu@yunify.com>

* add handler

Signed-off-by: runzexia <runzexia@yunify.com>

* add fake s3

Signed-off-by: runzexia <runzexia@yunify.com>

* add webhook&check interface and update handler

Signed-off-by: zhuxiaoyang <sunzhu@yunify.com>

* clean

Signed-off-by: zhuxiaoyang <sunzhu@yunify.com>

* clean

Signed-off-by: zhuxiaoyang <sunzhu@yunify.com>

* format

Signed-off-by: zhuxiaoyang <sunzhu@yunify.com>

* add some func

Signed-off-by: runzexia <runzexia@yunify.com>

* clean code

Signed-off-by: runzexia <runzexia@yunify.com>

* implement interface

Signed-off-by: zhuxiaoyang <sunzhu@yunify.com>

* fix interface GetBranchArtifacts

Signed-off-by: zhuxiaoyang <sunzhu@yunify.com>

* add s2ibinary upload test

Signed-off-by: runzexia <runzexia@yunify.com>

* tenant devops

Signed-off-by: runzexia <runzexia@yunify.com>

* update tenant

Signed-off-by: runzexia <runzexia@yunify.com>

* fake

Signed-off-by: zhuxiaoyang <sunzhu@yunify.com>

* add some unit test

Signed-off-by: zhuxiaoyang <sunzhu@yunify.com>

* add devops tenant handler

Signed-off-by: runzexia <runzexia@yunify.com>

* status

Signed-off-by: zhuxiaoyang <sunzhu@yunify.com>

* status

Signed-off-by: zhuxiaoyang <sunzhu@yunify.com>

* status

Signed-off-by: zhuxiaoyang <sunzhu@yunify.com>

* update fake test

Signed-off-by: zhuxiaoyang <sunzhu@yunify.com>

* update unit test and fake data

Signed-off-by: zhuxiaoyang <sunzhu@yunify.com>

* update

* enable devops client

Signed-off-by: runzexia <runzexia@yunify.com>

* enable devops client

Signed-off-by: runzexia <runzexia@yunify.com>

Co-authored-by: Xiaoyang Zhu <sunzhu@yunify.com>
2020-02-24 15:39:04 +08:00
Xin Wang
0dd83136e6 Add patch api header
Signed-off-by: Xin Wang <wileywang@yunify.com>
2020-02-18 17:10:22 +08:00
rayzhou2017
3466ee9a31 Merge pull request #1853 from eliaskoromilas/patch-1
Update powered-by-kubesphere.md
2020-02-12 22:45:19 +08:00
Elias Koromilas
6f01a520e5 Update powered-by-kubesphere.md
Added InAccel to the list
2020-02-12 12:15:28 +02:00
KubeSphere CI Bot
8caeb9d482 Merge pull request #1804 from FeynmanZhou/readme
update issue template to emphasize English only
2020-02-04 15:29:30 +08:00
Xin Wang
6f1082586e Add storage roadmap for ks 3.0
Signed-off-by: Xin Wang <wileywang@yunify.com>
2020-02-04 15:16:55 +08:00
runzexia
c5a340a2b4 devops refactor (#1739)
* add devops client interface

Signed-off-by: runzexia <runzexia@yunify.com>

* direct return jenkins

Signed-off-by: runzexia <runzexia@yunify.com>

* add some interface

Signed-off-by: runzexia <runzexia@yunify.com>

* update

Signed-off-by: runzexia <runzexia@yunify.com>

* update interface

Signed-off-by: runzexia <runzexia@yunify.com>

* update

Signed-off-by: runzexia <runzexia@yunify.com>

* credential op structs

Signed-off-by: runzexia <runzexia@yunify.com>

* status

Signed-off-by: zhuxiaoyang <sunzhu@yunify.com>

* update interface

Signed-off-by: zhuxiaoyang <sunzhu@yunify.com>

* credential handler

Signed-off-by: runzexia <runzexia@yunify.com>

* update devopsoperator func

Signed-off-by: zhuxiaoyang <sunzhu@yunify.com>

* get build sonar

Signed-off-by: runzexia <runzexia@yunify.com>

* sonar handler

* mv code to cilent

Signed-off-by: runzexia <runzexia@yunify.com>

* update

Signed-off-by: runzexia <runzexia@yunify.com>

* project member handler

Signed-off-by: runzexia <runzexia@yunify.com>

* update pipeline operator interface

Signed-off-by: zhuxiaoyang <sunzhu@yunify.com>

* add tenant devops handler

Signed-off-by: runzexia <runzexia@yunify.com>

* update merge

Signed-off-by: runzexia <runzexia@yunify.com>

* clean

Signed-off-by: runzexia <runzexia@yunify.com>

* fmt

Signed-off-by: runzexia <runzexia@yunify.com>

* update ListPipelineRuns

Signed-off-by: zhuxiaoyang <sunzhu@yunify.com>

* complate pipelineOperator interface

Signed-off-by: zhuxiaoyang <sunzhu@yunify.com>

* update HttpParameters

Signed-off-by: zhuxiaoyang <sunzhu@yunify.com>

* add pipeline steps interface

Signed-off-by: zhuxiaoyang <sunzhu@yunify.com>

* update pipeline GetNodesDetail

Signed-off-by: zhuxiaoyang <sunzhu@yunify.com>

* add s2i api

Signed-off-by: runzexia <runzexia@yunify.com>

* add branch pipeline interface and update handler

Signed-off-by: zhuxiaoyang <sunzhu@yunify.com>

* add scan branch interface and update handler

Signed-off-by: zhuxiaoyang <sunzhu@yunify.com>

* add common interface and update handler

Signed-off-by: zhuxiaoyang <sunzhu@yunify.com>

* add SCM interface and update handler

Signed-off-by: zhuxiaoyang <sunzhu@yunify.com>

* add handler

Signed-off-by: runzexia <runzexia@yunify.com>

* add fake s3

Signed-off-by: runzexia <runzexia@yunify.com>

* add webhook&check interface and update handler

Signed-off-by: zhuxiaoyang <sunzhu@yunify.com>

* clean

Signed-off-by: zhuxiaoyang <sunzhu@yunify.com>

* clean

Signed-off-by: zhuxiaoyang <sunzhu@yunify.com>

* format

Signed-off-by: zhuxiaoyang <sunzhu@yunify.com>

* add some func

Signed-off-by: runzexia <runzexia@yunify.com>

* clean code

Signed-off-by: runzexia <runzexia@yunify.com>

* implement interface

Signed-off-by: zhuxiaoyang <sunzhu@yunify.com>

* fix interface GetBranchArtifacts

Signed-off-by: zhuxiaoyang <sunzhu@yunify.com>

* add s2ibinary upload test

Signed-off-by: runzexia <runzexia@yunify.com>

* tenant devops

Signed-off-by: runzexia <runzexia@yunify.com>

* update tenant

Signed-off-by: runzexia <runzexia@yunify.com>

* fake

Signed-off-by: zhuxiaoyang <sunzhu@yunify.com>

* add some unit test

Signed-off-by: zhuxiaoyang <sunzhu@yunify.com>

* add devops tenant handler

Signed-off-by: runzexia <runzexia@yunify.com>

* status

Signed-off-by: zhuxiaoyang <sunzhu@yunify.com>

* status

Signed-off-by: zhuxiaoyang <sunzhu@yunify.com>

* status

Signed-off-by: zhuxiaoyang <sunzhu@yunify.com>

* update fake test

Signed-off-by: zhuxiaoyang <sunzhu@yunify.com>

* update unit test and fake data

Signed-off-by: zhuxiaoyang <sunzhu@yunify.com>

* update

Co-authored-by: Xiaoyang Zhu <sunzhu@yunify.com>
2020-02-04 10:40:36 +08:00
Xin Wang
e2fdb9ceef Add storage roadmap for ks 3.0
Signed-off-by: Xin Wang <wileywang@yunify.com>
2020-02-03 18:15:59 +08:00
周鹏飞@yunify
af327088b5 update issue template to emphasize English only
Signed-off-by: 周鹏飞@yunify <pengfeizhou@yunify.com>
2020-02-03 14:19:52 +08:00
周鹏飞@yunify
5d583f47db Merge branch 'master' of https://github.com/kubesphere/kubesphere into readme 2020-02-03 12:59:29 +08:00
runzexia
3f6cbc3d8c devops 3.0 roadmap 2020-01-20 13:18:16 +08:00
Benjamin
d9a2efafb4 Add v3.0 observability roadmap
Signed-off-by: Benjamin <benjamin@yunify.com>
2020-01-19 16:35:09 +08:00
KubeSphere CI Bot
461dd9a00c Merge pull request #1628 from soulseen/fix/image_search
remove schema if required and add check SSL
2020-01-16 10:29:00 +08:00
zhuxiaoyang
1e68170f89 update unit test
Signed-off-by: zhuxiaoyang <sunzhu@yunify.com>
2020-01-15 18:59:48 +08:00
zhuxiaoyang
444e24bd48 remove schema if requiredss and add Check SSL
Signed-off-by: zhuxiaoyang <sunzhu@yunify.com>
2020-01-14 20:37:05 +08:00
pengfei
62d8d6aaab fix typo in roadmap.md, add new diagram, refine README (#1766)
* fix typo in roadmap.md, add new diagram, refine README

* fix typo

Signed-off-by: 周鹏飞@yunify <pengfeizhou@yunify.com>
2020-01-14 20:00:32 +08:00
Wiley Wang
66850ee3ee Add API for setting default storage class (#1757)
Signed-off-by: Xin Wang <wileywang@yunify.com>
2020-01-14 19:57:34 +08:00
zryfish
f022b28ccc Update .travis.yml (#1771) 2020-01-14 19:57:12 +08:00
zryfish
f6dba744f9 Update .travis.yml 2020-01-14 19:18:46 +08:00
周鹏飞@yunify
7fa0306035 fix typo
Signed-off-by: 周鹏飞@yunify <pengfeizhou@yunify.com>
2020-01-14 16:37:24 +08:00
周鹏飞@yunify
841bd3aa5c fix typo in roadmap.md, add new diagram, refine README 2020-01-14 16:21:25 +08:00
KubeSphere CI Bot
4068757534 Merge pull request #1753 from FeynmanZhou/readme
refine readme guide, remove R icon in logo
2020-01-13 15:32:59 +08:00
周鹏飞@yunify
0447701b13 update com.cn to io, add roadmap
Signed-off-by: 周鹏飞@yunify <pengfeizhou@yunify.com>

Signed-off-by: 周鹏飞@yunify <pengfeizhou@yunify.com>

Signed-off-by: 周鹏飞@yunify <pengfeizhou@yunify.com>
2020-01-13 14:38:17 +08:00
hongming
71849f028f [WIP] API refactor (#1737)
* refactor openpitrix API

Signed-off-by: hongming <talonwan@yunify.com>

* add openpitrix mock client

Signed-off-by: hongming <talonwan@yunify.com>

* refactor tenant API

Signed-off-by: hongming <talonwan@yunify.com>

* refactor IAM API

Signed-off-by: hongming <talonwan@yunify.com>

* refactor IAM API

Signed-off-by: hongming <talonwan@yunify.com>
2020-01-13 13:36:21 +08:00
周鹏飞@yunify
a15c4ac24a refine readme guide
Signed-off-by: 周鹏飞@yunify <pengfeizhou@yunify.com>
2020-01-11 12:43:37 +08:00
KubeSphere CI Bot
ba809e3497 Merge pull request #1677 from runzexia/devops-crontribute-guide
devops dev guides
2020-01-06 12:17:00 +08:00
zryfish
c40d1542a2 refactor code structure (#1738) 2020-01-04 12:44:54 +08:00
zryfish
eceadec69c devlopment branch (#1736) 2020-01-02 20:52:00 +08:00
huanggze
4edf909c2f add monitoring dev guides
Signed-off-by: huanggze <loganhuang@yunify.com>
2019-12-23 21:46:50 +08:00
huanggze
8022de126c add logging dev guides
Signed-off-by: huanggze <loganhuang@yunify.com>
2019-12-23 21:12:08 +08:00
runzexia
af028b8d92 Update Kubesphere-code-layout.md 2019-12-23 16:36:52 +08:00
zhuxiaoyang
0427296dcb update s2i doc
Signed-off-by: zhuxiaoyang <sunzhu@yunify.com>
2019-12-23 11:49:42 +08:00
pengfei
5812b88848 refine devops-pipeline-overview.md 2019-12-23 11:40:30 +08:00
zhuxiaoyang
c022517637 Merge branch 's2i-doc' of https://github.com/soulseen/kubesphere into s2i-doc 2019-12-23 11:02:13 +08:00
zhuxiaoyang
5d12701ca4 update s2i arch
Signed-off-by: zhuxiaoyang <sunzhu@yunify.com>
2019-12-23 11:01:47 +08:00
pengfei
f7b797eda9 refine README.md 2019-12-23 11:01:21 +08:00
pengfei
5a1bfcc0ef refine s2i_b2i_overview.md 2019-12-23 10:47:25 +08:00
KubeSphere CI Bot
ff0ffe8650 Merge pull request #1691 from FeynmanZhou/master
add powered-by-kubesphere.md
2019-12-20 16:22:50 +08:00
周鹏飞@yunify
81cf0b6499 update markdown format
Signed-off-by: 周鹏飞@yunify <pengfeizhou@yunify.com>
2019-12-20 16:21:07 +08:00
周鹏飞@yunify
b51b2f56fc add powered-by-kubesphere.md
Signed-off-by: 周鹏飞@yunify <pengfeizhou@yunify.com>

Signed-off-by: 周鹏飞@yunify <pengfeizhou@yunify.com>

Signed-off-by: 周鹏飞@yunify <pengfeizhou@yunify.com>
2019-12-20 12:17:49 +08:00
zhuxiaoyang
7eebc47784 update s2i docs
Signed-off-by: zhuxiaoyang <sunzhu@yunify.com>
2019-12-19 19:19:10 +08:00
runzexia
656e6cba21 add some docs for kubesphere code layout
Signed-off-by: runzexia <runzexia@yunify.com>
2019-12-19 15:59:50 +08:00
KubeSphere CI Bot
1bcc27a68f Merge pull request #1679 from rayzhou2017/master
Update Readme
2019-12-19 14:32:49 +08:00
pengfei
4e9f833726 refine Readme description 2019-12-19 14:30:52 +08:00
Ray Zhou
685d7e9821 Update Readme
>>>>>>> 13f4c4a289f66e9a012327c508c62ee953e3025c
2019-12-18 12:22:49 +08:00
runzexia
de093a20f7 devops dev guides
Signed-off-by: runzexia <runzexia@yunify.com>
2019-12-17 16:48:54 +08:00
zryfish
ea88c8803d use istio client-go library instead of knative (#1661)
use istio client-go library instead of knative
bump kubernetes dependency version
change code coverage to codecov
2019-12-13 11:26:18 +08:00
KubeSphere CI Bot
f249a6e081 Merge pull request #1659 from soulseen/fix/struct_memory_address
fix jenkins request func parameters
2019-12-12 15:01:47 +08:00
zhuxiaoyang
6d45c9cbac fix jenkins request func parameters
Signed-off-by: zhuxiaoyang <sunzhu@yunify.com>
2019-12-12 14:39:28 +08:00
zryfish
1b67c43731 remove dependency on kubernetes repo (#1651)
remove dependency on kubernetes/kubernetes repo
2019-12-10 14:46:55 +08:00
KubeSphere CI Bot
c9a51f913e Merge pull request #1646 from zryfish/add_router_crd
move custom apis to kapis
2019-12-09 14:41:46 +08:00
KubeSphere CI Bot
09aa278247 Merge pull request #1626 from zehuaiWANG/kubesphere-review
modified the resources
2019-12-09 14:29:46 +08:00
Jeff
432bd3310a move custom apis to kapis 2019-12-09 11:48:44 +08:00
Jeff
2968666376 move custom apis to kapis 2019-12-09 11:12:45 +08:00
KubeSphere CI Bot
455169b825 Merge pull request #1622 from FeynmanZhou/docs-2.1
add KubeSphere CLA
2019-12-05 19:31:45 +08:00
KubeSphere CI Bot
86b91a562f Merge pull request #1551 from runzexia/update-contribute-guide
contributing guide
2019-12-05 10:25:45 +08:00
zehuaiWANG
45ef79795d modified the resources 2019-12-03 14:12:23 +08:00
KubeSphere CI Bot
4cf7014ac7 Merge pull request #1625 from zehuaiWANG/kubesphere-add-default-param
kubesphere-add-default-param
2019-12-03 11:34:44 +08:00
zehuaiWANG
3b927ba847 kubesphere-add-default-param 2019-12-03 10:38:47 +08:00
runzexia
907a4f5f2b update
Signed-off-by: runzexia <runzexia@yunify.com>
2019-12-02 10:53:02 +08:00
周鹏飞@yunify
9431926a67 add demo environment info
Signed-off-by: 周鹏飞@yunify <pengfeizhou@yunify.com>
2019-12-02 00:24:04 +08:00
周鹏飞@yunify
696aa71300 add KubeSphere CLA
Signed-off-by: 周鹏飞@yunify <pengfeizhou@yunify.com>
2019-12-01 23:16:05 +08:00
pengfei
92d1a025bf Update How-to-run-KubeSphere-core.md 2019-11-29 00:26:40 +08:00
pengfei
5db70bce77 Update How-to-connect-remote-service.md 2019-11-29 00:13:11 +08:00
pengfei
99bf6d6219 refine how-to-build 2019-11-29 00:07:49 +08:00
runzexia
1d599c2634 all should run test
build should run fmt & vet

Signed-off-by: runzexia <runzexia@yunify.com>
2019-11-26 20:53:51 +08:00
runzexia
50bc00b004 use telepresence to debug remote service
Signed-off-by: runzexia <runzexia@yunify.com>
2019-11-26 19:25:01 +08:00
runzexia
de2baa695b add project overrview
Signed-off-by: runzexia <runzexia@yunify.com>
2019-11-26 19:25:01 +08:00
runzexia
d9ac3c69b9 run kubesphere core in local env
Signed-off-by: runzexia <runzexia@yunify.com>
2019-11-26 19:25:00 +08:00
runzexia
1baa16b0aa contribete guide
Signed-off-by: runzexia <runzexia@yunify.com>
2019-11-26 19:25:00 +08:00
zryfish
618328e62e change router underlying resource apiversion (#1590) 2019-11-26 19:18:27 +08:00
zryfish
16d9c2aebb Change router apiversion (#1586)
* change router underlying resource apiversion
2019-11-26 16:53:01 +08:00
Jeff
c3069c7dfd add coveralls test coverage stats 2019-11-26 16:32:28 +08:00
Jeff
36bcfdcd99 add coveralls test coverage stats 2019-11-26 16:32:28 +08:00
KubeSphere CI Bot
97ea468121 Merge pull request #1565 from soulseen/fix/typo
fix typo
2019-11-21 22:04:48 +08:00
zhuxiaoyang
6db3a0ba3e fix typo
Signed-off-by: zhuxiaoyang <sunzhu@yunify.com>
2019-11-21 19:25:32 +08:00
zryfish
a7f67bd70c Update README.md
Add go report badge
2019-11-21 17:50:32 +08:00
zryfish
d3724bd36e Update .travis.yml
Remove golint installation
2019-11-21 11:19:00 +08:00
10567 changed files with 1532930 additions and 532915 deletions

View File

@@ -1 +1,4 @@
tmp/
# exclude all files and folders except bin folder
!bin
.idea/
.vscode/

16
.github/.stale.yaml vendored
View File

@@ -1,16 +0,0 @@
# Number of days of inactivity before an issue becomes stale
daysUntilStale: 30
# Number of days of inactivity before a stale issue is closed
daysUntilClose: 14
# Issues with these labels will never be considered stale
exemptLabels:
- frozen
staleLabel: stale
# Comment to post when marking an issue as stale. Set to `false` to disable
markComment: >
This issue has been automatically marked as stale because it has not had
recent activity. It will be closed if no further activity occurs. Any further update will
cause the issue/pull request to no longer be considered stale. Thank you for your contributions.
# Comment to post when closing a stale issue. Set to `false` to disable
closeComment: >
This issue is being automatically closed due to inactivity.

View File

@@ -3,40 +3,39 @@ name: Bug report
about: Create a report to help us improve
---
**General remarks**
<!--
You don't need to remove this comment section, it's invisible on the issues page.
> Please delete this section including header before submitting
> 也可以使用中文
>
> This form is to report bugs. For general usage questions refer to our Slack channel
> [KubeSphere-users](https://join.slack.com/t/kubesphere/shared_invite/enQtNTE3MDIxNzUxNzQ0LTdkNTc3OTdmNzdiODViZjViNTU5ZDY3M2I2MzY4MTI4OGZlOTJmMDg5ZTFiMDAwYzNlZDY5NjA0NzZlNDU5NmY)
## General remarks
**Describe the bug(描述下问题)**
* Attention, please fill out this issues form using English only!
* 注意GitHub Issue 仅支持英文,中文 Issue 请在 [论坛](https://kubesphere.com.cn/forum/) 提交。
* This form is to report bugs. For general usage questions you can join our Slack channel
[KubeSphere-users](https://join.slack.com/t/kubesphere/shared_invite/enQtNTE3MDIxNzUxNzQ0LTZkNTdkYWNiYTVkMTM5ZThhODY1MjAyZmVlYWEwZmQ3ODQ1NmM1MGVkNWEzZTRhNzk0MzM5MmY4NDc3ZWVhMjE)
-->
**Describe the Bug**
A clear and concise description of what the bug is.
For UI issues please also add a screenshot that shows the issue.
**Versions used(KubeSphere/Kubernetes的版本)**
**Versions Used**
KubeSphere:
Kubernetes: (If KubeSphere installer used, you can skip this)
**Environment(环境的硬件配置)**
How many nodes and their hardware configuration:
For example:
3 masters: 8cpu/8g
3 nodes: 8cpu/16g
**Environment**
How many nodes and their hardware configuration:
For example: CentOS 7.5 / 3 masters: 8cpu/8g; 3 nodes: 8cpu/16g
(and other info are welcomed to help us debugging)
**To Reproduce(复现步骤)**
**How To Reproduce**
Steps to reproduce the behavior:
1. Go to '...'
2. Click on '....'
3. Scroll down to '....'
4. See error
**Expected behavior(预期行为)**
**Expected behavior**
A clear and concise description of what you expected to happen.

View File

@@ -0,0 +1,69 @@
---
name: Feature Request
about: Have a good idea? Please don't hesitate to write it down, describe the new feature.
---
<!--
You don't need to remove this comment section, it's invisible on the issues page.
## General remarks
* Attention, please fill out this issues form using English only!
* 注意GitHub Issue 仅支持英文,中文 Issue 请在 [论坛](https://kubesphere.com.cn/forum/) 提交。
* This form is to report bugs. For general usage questions, you can join our Slack channel
[KubeSphere-users](https://join.slack.com/t/kubesphere/shared_invite/enQtNTE3MDIxNzUxNzQ0LTZkNTdkYWNiYTVkMTM5ZThhODY1MjAyZmVlYWEwZmQ3ODQ1NmM1MGVkNWEzZTRhNzk0MzM5MmY4NDc3ZWVhMjE)
-->
**What's it about?**
<!--
A clear and concise description of what this feature request is.
-->
**What's the reason why we need it?**
<!--
Please tell us if you think it's a necessary feature for Kubesphere. Give us as many details about it as you can.
Two or more use cases might be very helpful when other contributors try to go through this request. If you have some references,
please just add it below.
-->
I believe this is an important feature for Kubesphere. There're a few use cases:
* case one
* case two
* ...
Please leave your comments below if there's anyone agrees with me. Or just give me a thumb up.
**Area Suggestion**
<!--
In order to have a clear issue list, giving an accuracy area is necessary. If you are not sure about it, please just leave it alone.
You can find some possible areas below. Please attention, sometimes crossing multiple areas might be possible. So, you
can keep one or more areas in this issue.
> /area alerting
> /area api
> /area apiserver
> /area app-management
> /area audit
> /area console
> /area devops
> /area documentation
> /area edge
> /area iam
> /area installation
> /area logging
> /area microservice
> /area monitoring
> /area multicluster
> /area networking
> /area notification
> /area observability
> /area performance
> /area security
> /area storage
> /area test
> /area upgrade
-->
/kind feature-request

View File

@@ -1,16 +1,30 @@
---
name: 安装问题
about: Create a report to help us improve
name: Installation Issue
about: Create an issue to help us improve installation
---
[备注]: <> (请补全下面信息帮助我们更快地定位问题。提交问题前预览下issue看下是否有格式错误)
## English only!
**问题描述**
**注意GitHub Issue 仅支持英文,中文 Issue 请在 [论坛](https://kubesphere.com.cn/forum/) 提交。**
**安装环境的硬件配置**
**General remarks**
[备注]: <> (请说明节点的运行环境是否是物理机云主机VMware虚拟机)
> Please delete this section including header before submitting
>
> This form is to report installation issues. For general usage questions you can refer to [KubeSphere Documentation](https://kubesphere.io/docs) or join our Slack channel
> [KubeSphere-users](https://join.slack.com/t/kubesphere/shared_invite/enQtNTE3MDIxNzUxNzQ0LTZkNTdkYWNiYTVkMTM5ZThhODY1MjAyZmVlYWEwZmQ3ODQ1NmM1MGVkNWEzZTRhNzk0MzM5MmY4NDc3ZWVhMjE)
**错误信息或截图**
**What's your question**
**Installer版本**
**Environment: OS & Hardware Information**
> Important: You must describe your environment clearly, e.g. VMware or Bare Metal, CentOS 7.5, 8 C / 16 G (If you install on Linux), Or Kubernetes v1.16 (If you install on K8s).
**Error logs or message (Attach logs or screenshot)**
**Installer Version**
> e.g. v2.1.0, v2.1.1, v3.0.0

View File

@@ -1,30 +1,54 @@
**What type of PR is this?**
> Uncomment only one ` /kind <>` line, hit enter to put that in a new line, and remove leading whitespaces from that line:
>
> /kind api-change
> /kind bug
> /kind cleanup
> /kind design
> /kind documentation
> /kind failing-test
> /kind feature
> /kind flake
<!-- Thanks for sending a pull request! Here are some tips for you:
**What this PR does / why we need it**:
1. If you want **faster** PR reviews, read how: https://github.com/kubesphere/community/blob/master/developer-guide/development/the-pr-author-guide-to-getting-through-code-review.md
2. In case you want to know how your PR got reviewed, read: https://github.com/kubesphere/community/blob/master/developer-guide/development/code-review-guide.md
3. Here are some coding convetions followed by KubeSphere community: https://github.com/kubesphere/community/blob/master/developer-guide/development/coding-conventions.md
-->
**Which issue(s) this PR fixes**:
### What type of PR is this?
<!--
Add one of the following kinds:
/kind bug
/kind cleanup
/kind documentation
/kind feature
/kind design
Optionally add one or more of the following kinds if applicable:
/kind api-change
/kind deprecation
/kind failing-test
/kind flake
/kind regression
-->
### What this PR does / why we need it:
### Which issue(s) this PR fixes:
<!--
Usage: `Fixes #<issue number>`, or `Fixes (paste link of issue)`.
_If PR is about `failing-tests or flakes`, please post the related issues/tests in a comment and do not use `Fixes`_*
-->
Fixes #
**Special notes for reviewers**:
### Special notes for reviewers:
```
```
**Additional documentation, usage docs, etc.**:
### Does this PR introduced a user-facing change?
<!--
If no, just write "None" in the release-note block below.
If yes, a release note is required:
Enter your extended release note in the block below. If the PR requires additional action from users switching to the new release, include the string "action required".
For more information on release notes see: https://github.com/kubernetes/community/blob/master/contributors/guide/release-notes.md
-->
```release-note
```
### Additional documentation, usage docs, etc.:
<!--
This section can be blank if this pull request does not require a release note.
Please use the following format for linking documentation or pass the

20
.github/stale.yml vendored Normal file
View File

@@ -0,0 +1,20 @@
# Number of days of inactivity before an issue becomes stale
daysUntilStale: 90
# Number of days of inactivity before a stale issue is closed
daysUntilClose: 30
# Issues with these labels will never be considered stale
exemptLabels:
- frozen
- kind/feature-request
- kind/feature
- kind/security
- kind/design
staleLabel: stale
# Comment to post when marking an issue as stale. Set to `false` to disable
markComment: >
This issue has been automatically marked as stale because it has not had
recent activity. It will be closed if no further activity occurs. Any further update will
cause the issue/pull request to no longer be considered stale. Thank you for your contributions.
# Comment to post when closing a stale issue. Set to `false` to disable
closeComment: >
This issue is being automatically closed due to inactivity.

42
.github/workflows/build-multiarch.yaml vendored Normal file
View File

@@ -0,0 +1,42 @@
name: BuildContainerImage
on:
push:
branches:
- 'master'
- 'release-*'
tags:
- 'v*'
pull_request:
branches:
- 'master'
- 'release-*'
jobs:
build:
name: Build
runs-on: ubuntu-latest
env:
GO111MODULE: on
steps:
- name: Check out code into the Go module directory
uses: actions/checkout@v2
with:
fetch-depth: 0
- name: Set up QEMU
uses: docker/setup-qemu-action@v1
with:
platforms: all
- name: Set up Docker buildx
uses: docker/setup-buildx-action@v1
- name: Build and push docker images
env:
DOCKER_USERNAME: ${{ secrets.DOCKER_USERNAME }}
DOCKER_PASSWORD: ${{ secrets.DOCKER_PASSWORD }}
if: github.event_name == 'push'
run: |
echo ${{ secrets.DOCKER_PASSWORD }} | docker login -u ${{ secrets.DOCKER_USERNAME }} --password-stdin
REPO=kubespheredev TAG="${GITHUB_REF#refs/*/}" make container-cross-push

44
.github/workflows/e2e-test.yml vendored Normal file
View File

@@ -0,0 +1,44 @@
name: e2e
on:
schedule:
# run e2e test every 4 hours
- cron: 0 */4 * * *
workflow_dispatch:
jobs:
build:
name: Test
runs-on: ubuntu-latest
env:
GO111MODULE: on
steps:
- name: Set up Go 1.16
uses: actions/setup-go@v2
with:
go-version: 1.16
id: go
- name: Check out code into the Go module directory
uses: actions/checkout@v2
- name: Create kind cluster
uses: helm/kind-action@v1.2.0
with:
config: .github/workflows/kind/kind.yaml
- name: Deploy KubeSphere to Kind
run: KIND_CLUSTER_NAME=chart-testing hack/deploy-kubesphere.sh
- name: Run e2e testing
run: go test ./test/e2e
- name: slack
uses: 8398a7/action-slack@v3
env:
SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }}
with:
status: ${{ job.status }}
fields: repo,message,commit,author,action,eventName,ref,workflow,job,took
if: failure()

11
.github/workflows/kind/kind.yaml vendored Normal file
View File

@@ -0,0 +1,11 @@
kind: Cluster
apiVersion: kind.x-k8s.io/v1alpha4
nodes:
- role: control-plane
image: kindest/node:v1.19.7
extraMounts:
- hostPath: /etc/localtime
containerPath: /etc/localtime
extraPortMappings:
- containerPort: 30881
hostPort: 9090

53
.github/workflows/nightly-builds.yml vendored Normal file
View File

@@ -0,0 +1,53 @@
name: NightlyBuild
on:
schedule:
# This is a UTC time
- cron: "0 16 * * *"
# Keep it only for test purpose, comment it once everything is ok
workflow_dispatch:
jobs:
build:
name: Build
runs-on: ubuntu-latest
env:
GO111MODULE: on
steps:
- name: Set up Go 1.16
uses: actions/setup-go@v2
with:
go-version: 1.16
id: go
- name: Check out code into the Go module directory
uses: actions/checkout@v2
with:
fetch-depth: 0
- name: Set up QEMU
uses: docker/setup-qemu-action@v1
with:
platforms: all
- name: Set up Docker buildx
uses: docker/setup-buildx-action@v1
- name: Build and push docker images
env:
DOCKER_USERNAME: ${{ secrets.DOCKER_USERNAME }}
DOCKER_PASSWORD: ${{ secrets.DOCKER_PASSWORD }}
run: |
echo ${{ secrets.DOCKER_PASSWORD }} | docker login -u ${{ secrets.DOCKER_USERNAME }} --password-stdin
tag=nightly-$(date '+%Y%m%d')
REPO=kubespheredev TAG=${tag} make container-cross-push
- name: slack
uses: 8398a7/action-slack@v3
env:
SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }}
with:
status: ${{ job.status }}
fields: repo,message,commit,author,action,eventName,ref,workflow,job,took
if: failure()

13
.gitignore vendored
View File

@@ -19,14 +19,17 @@ bin/
# Vscode files
.vscode/
tmp/
apiserver.local.config
__debug_bin
# OSX trash
.DS_Store
api.json
*.coverprofile
cover.out
coverage.txt
kustomize/network/etcd
kustomize/network/etcd
apiserver.local.config
tmp/
kubesphere.yaml
testbin/

View File

@@ -1,36 +0,0 @@
services:
- docker
language: go
dist: xenial
git:
depth: false
go:
- "1.12.x"
env:
- GO111MODULE=on
cache:
directories:
- $HOME/gopath/pkg/mod
before_script:
- docker --version
- bash hack/install_kubebuilder.sh
script:
- diff -u <(echo -n) <(gofmt -d ./pkg ./cmd ./tools)
- make openapi
- make all
install:
- go get golang.org/x/lint/golint
deploy:
skip_cleanup: true
provider: script
script: bash hack/docker_build.sh
on:
branch: master

View File

@@ -1,221 +1,3 @@
# Development Guide
# Guide
This document walks you through how to get started developing KubeSphere and development workflow.
## Preparing the environment
### Go
KubeSphere development is based on [Kubernetes](https://github.com/kubernetes/kubernetes), both of them are written in [Go](http://golang.org/). If you don't have a Go development environment, please [set one up](http://golang.org/doc/code.html).
| Kubernetes | requires Go |
|----------------|-------------|
| 1.13+ | >= 1.12 |
> Tips:
> - Ensure your GOPATH and PATH have been configured in accordance with the Go
environment instructions.
> - It's recommended to install [macOS GNU tools](https://www.topbug.net/blog/2013/04/14/install-and-use-gnu-command-line-tools-in-mac-os-x) for Mac OS.
### Docker
KubeSphere components are often deployed as containers in Kubernetes. If you need to rebuild the KubeSphere components in the Kubernetes cluster, you will need to [install Docker](https://docs.docker.com/install/).
### Dependency management
KubeSphere uses [Go Modules](https://github.com/golang/go/wiki/Modules) to manage dependencies in the `vendor/` tree.
#### Dependencies
[kubesphere/kubesphere](https://github.com/kubesphere/kubesphere) repository contains the source code . If you're looking for its dependent components, they live in their own repositories since they can be individual and universal.
- [Alert](https://github.com/kubesphere/alert): Alert is an enterprise-grade general-purpose high-performance alerting system.
- [Notification](https://github.com/openpitrix/notification): Notification is an enterprise-grade general-purpose high-performance notification system, it provides email notification service for KubeSphere currently.
- [OpenPitrix](https://github.com/openpitrix/openpitrix): Application management platform on multi-cloud environment, it provides application template and application management for KubeSphere currently.
- [SonarQube](https://github.com/SonarSource/sonarqube): Integrated in KubeSphere DevOps, it provides the capability to not only show health of an application but also to highlight issues newly introduced.
## Building KubeSphere on a local OS/shell environment
### For Quick Taste Binary
```bash
mkdir ks-tmp
cd ks-tmp
echo 'module kubesphere' > go.mod
echo 'replace (
github.com/Sirupsen/logrus v1.4.1 => github.com/sirupsen/logrus v1.4.1
github.com/kiali/kiali => github.com/kubesphere/kiali v0.15.1-0.20190407071308-6b5b818211c3
github.com/kubernetes-sigs/application => github.com/kubesphere/application v0.0.0-20190518133311-b9d9eb0b5cf7
)' >> go.mod
GO111MODULE=on go get kubesphere.io/kubesphere@d649e3d0bbc64bfba18816c904819e4850d021e0
GO111MODULE=on go build -o ks-apiserver kubesphere.io/kubesphere/cmd/ks-apiserver # build ks-apiserver
GO111MODULE=on go build -o ks-apigateway kubesphere.io/kubesphere/cmd/ks-apigateway # build ks-apigateway
GO111MODULE=on go build -o ks-controller-manager kubesphere.io/kubesphere/cmd/controller-manager # build ks-controller-manager
GO111MODULE=on go build -o ks-iam kubesphere.io/kubesphere/cmd/ks-iam # build ks-iam
```
### For Building KubeSphere Images
KubeSphere components are often deployed as a container in a kubernetes cluster, you may need to build a Docker image locally.
1. Clone repo to local
```bash
git clone https://github.com/kubesphere/kubesphere.git
```
2. Run Docker command to build image
```bash
# $REPO is the docker registry to push to
# $Tag is the tag name of the docker image
# The full go build process will be executed in the Dockerfile, so you may need to set GOPROXY in it.
docker build -f build/ks-apigateway/Dockerfile -t $REPO/ks-apigateway:$TAG .
docker build -f build/ks-apiserver/Dockerfile -t $REPO/ks-apiserver:$TAG .
docker build -f build/ks-iam/Dockerfile -t $REPO/ks-account:$TAG .
docker build -f build/ks-controller-manager/Dockerfile -t $REPO/ks-controller-manager:$TAG .
docker build -f ./pkg/db/Dockerfile -t $REPO/ks-devops:flyway-$TAG ./pkg/db/
```
### Test
In the development process, it is recommended to use local Kubernetes clusters, such as [minikube](https://kubernetes.io/docs/tasks/tools/install-minikube/), or to install an single-node [all-in-one](https://github.com/kubesphere/kubesphere#all-in-one) environment (Kubernetes-based) for quick testing.
> Tip: It also supports to use Docker for Desktop ships with Kubernetes as the test environment.
## Development Workflow
![ks-workflow](docs/images/ks-workflow.png)
### 1 Fork in the cloud
1. Visit https://github.com/kubesphere/kubesphere
2. Click `Fork` button to establish a cloud-based fork.
### 2 Clone fork to local storage
Per Go's [workspace instructions](https://golang.org/doc/code.html#Workspaces), place KubeSphere' code on your `GOPATH` using the following cloning procedure.
1. Define a local working directory:
```bash
$ export working_dir=$GOPATH/src/kubesphere.io
$ export user={your github profile name}
```
2. Create your clone locally:
```bash
$ mkdir -p $working_dir
$ cd $working_dir
$ git clone https://github.com/$user/kubesphere.git
$ cd $working_dir/kubesphere
$ git remote add upstream https://github.com/kubesphere/kubesphere.git
# Never push to upstream master
$ git remote set-url --push upstream no_push
# Confirm that your remotes make sense:
$ git remote -v
```
### 3 Keep your branch in sync
```bash
git fetch upstream
git checkout master
git rebase upstream/master
```
### 4 Add new features or fix issues
Branch from it:
```bash
$ git checkout -b myfeature
```
Then edit code on the myfeature branch.
**Test and build**
Currently, make rules only contain simple checks such as vet, unit test, will add e2e tests soon.
**Using KubeBuilder**
- For Linux OS, you can download and execute this [KubeBuilder script](https://raw.githubusercontent.com/kubesphere/kubesphere/master/hack/install_kubebuilder.sh).
- For MacOS, you can install KubeBuilder by following this [guide](https://book.kubebuilder.io/quick-start.html).
**Run and test**
```bash
$ make all
# Run every unit test
$ make test
```
Run `make help` for additional information on these make targets.
### 5 Development in new branch
**Sync with upstream**
After the test is completed, suggest you to keep your local in sync with upstream which can avoid conflicts.
```
# Rebase your the master branch of your local repo.
$ git checkout master
$ git rebase upstream/master
# Then make your development branch in sync with master branch
git checkout new_feature
git rebase -i master
```
**Commit local changes**
```bash
$ git add <file>
$ git commit -s -m "add your description"
```
### 6 Push to your folk
When ready to review (or just to establish an offsite backup or your work), push your branch to your fork on github.com:
```
$ git push -f ${your_remote_name} myfeature
```
### 7 Create a PR
- Visit your fork at https://github.com/$user/kubesphere
- Click the` Compare & Pull Request` button next to your myfeature branch.
- Check out the [pull request process](pull-request.md) for more details and advice.
## CI/CD
KubeSphere uses [Travis CI](https://travis-ci.org/) as a CI/CD tool.
The components of KubeSphere need to be compiled and build include following:
`ks-apiserver, ks-controller-manager, ks-account, ks-apigateway, ks-devops`
After your PR is mergedTravis CI will compile the entire project and build the image, and push the image `kubespheredev/[component-name]:latest` to Dockerhub (e.g. `kubespheredev/ks-apiserver:latest`)
## API Reference
KubeSphere provides standard RESTFul API and detailed API documentations for developers, see [KubeSphere API Reference](https://docs.kubesphere.io/advanced-v2.0/zh-CN/api-reference/api-docs/) for more information.
## Code conventions
Please reference [Code conventions](https://github.com/kubernetes/community/blob/master/contributors/guide/coding-conventions.md) and follow with the rules.
**Note:**
> - All new packages and most new significant functionality must come with unit tests
> - Comment your code in English, see [Go's commenting conventions
](http://blog.golang.org/godoc-documenting-go-code)
This [document](https://github.com/kubesphere/community) walks you through how to get started contributing KubeSphere.

168
Makefile
View File

@@ -2,12 +2,12 @@
# Use of this source code is governed by a Apache license
# that can be found in the LICENSE file.
# The binary to build
BIN ?= ks-apiserver
# Produce CRDs that work back to Kubernetes 1.11 (no version conversion)
CRD_OPTIONS ?= "crd:trivialVersions=true"
GV="network:v1alpha1 servicemesh:v1alpha2 tenant:v1alpha1 tenant:v1alpha2 devops:v1alpha1 iam:v1alpha2 devops:v1alpha3 cluster:v1alpha1 storage:v1alpha1 auditing:v1alpha1 types:v1beta1 quota:v1alpha2 application:v1alpha1 notification:v2beta1"
# Get the currently used golang install path (in GOPATH/bin, unless GOBIN is set)
ifeq (,$(shell go env GOBIN))
GOBIN=$(shell go env GOPATH)/bin
@@ -15,10 +15,11 @@ else
GOBIN=$(shell go env GOBIN)
endif
IMG ?= kubespheredev/ks-apiserver
OUTPUT_DIR=bin
GOFLAGS=-mod=vendor
ifeq (${GOFLAGS},)
# go build with vendor by default.
export GOFLAGS=-mod=vendor
endif
define ALL_HELP_INFO
# Build code.
#
@@ -39,96 +40,121 @@ define ALL_HELP_INFO
# debugging tools like delve.
endef
.PHONY: all
all: hypersphere ks-apiserver ks-apigateway ks-iam controller-manager
all: test ks-apiserver ks-controller-manager;$(info $(M)...Begin to test and build all of binary.) @ ## Test and build all of binary.
help:
@grep -hE '^[ a-zA-Z0-9_-]+:.*?## .*$$' $(MAKEFILE_LIST) | \
awk 'BEGIN {FS = ":.*?## "}; {printf "\033[36m%-17s\033[0m %s\n", $$1, $$2}'
.PHONY: binary
# Build all of binary
binary: | ks-apiserver ks-controller-manager; $(info $(M)...Build all of binary.) @ ## Build all of binary.
# Build ks-apiserver binary
ks-apiserver: test
hack/gobuild.sh cmd/ks-apiserver
ks-apiserver: ; $(info $(M)...Begin to build ks-apiserver binary.) @ ## Build ks-apiserver.
hack/gobuild.sh cmd/ks-apiserver;
# Build ks-apigateway binary
ks-apigateway: test
hack/gobuild.sh cmd/ks-apigateway
# Build ks-iam binary
ks-iam: test
hack/gobuild.sh cmd/ks-iam
# Build controller-manager binary
controller-manager: test
# Build ks-controller-manager binary
ks-controller-manager: ; $(info $(M)...Begin to build ks-controller-manager binary.) @ ## Build ks-controller-manager.
hack/gobuild.sh cmd/controller-manager
# Build hypersphere binary
hypersphere: test
hack/gobuild.sh cmd/hypersphere
# Run all verify scripts hack/verify-*.sh
verify-all: ; $(info $(M)...Begin to run all verify scripts hack/verify-*.sh.) @ ## Run all verify scripts hack/verify-*.sh.
hack/verify-all.sh
# Build e2e binary
e2e: ;$(info $(M)...Begin to build e2e binary.) @ ## Build e2e binary.
hack/build_e2e.sh test/e2e
kind-e2e: ;$(info $(M)...Run e2e test.) @ ## Run e2e test in kind.
hack/kind_e2e.sh
# Run go fmt against code
fmt: generate
fmt: ;$(info $(M)...Begin to run go fmt against code.) @ ## Run go fmt against code.
gofmt -w ./pkg ./cmd ./tools ./api
# Format all import, `goimports` is required.
goimports: ;$(info $(M)...Begin to Format all import.) @ ## Format all import, `goimports` is required.
@hack/update-goimports.sh
# Run go vet against code
vet: generate
vet: ;$(info $(M)...Begin to run go vet against code.) @ ## Run go vet against code.
go vet ./pkg/... ./cmd/...
# Generate manifests e.g. CRD, RBAC etc.
manifests:
go run ./vendor/sigs.k8s.io/controller-tools/cmd/controller-gen/main.go all
manifests: ;$(info $(M)...Begin to generate manifests e.g. CRD, RBAC etc..) @ ## Generate manifests e.g. CRD, RBAC etc.
go run ./vendor/sigs.k8s.io/controller-tools/cmd/controller-gen/main.go object:headerFile=./hack/boilerplate.go.txt paths=kubesphere.io/api/application/... rbac:roleName=controller-perms ${CRD_OPTIONS} output:crd:artifacts:config=config/crds
go run ./vendor/sigs.k8s.io/controller-tools/cmd/controller-gen/main.go object:headerFile=./hack/boilerplate.go.txt paths=kubesphere.io/api/cluster/... rbac:roleName=controller-perms ${CRD_OPTIONS} output:crd:artifacts:config=config/crds
go run ./vendor/sigs.k8s.io/controller-tools/cmd/controller-gen/main.go object:headerFile=./hack/boilerplate.go.txt paths=kubesphere.io/api/devops/... rbac:roleName=controller-perms ${CRD_OPTIONS} output:crd:artifacts:config=config/crds
go run ./vendor/sigs.k8s.io/controller-tools/cmd/controller-gen/main.go object:headerFile=./hack/boilerplate.go.txt paths=kubesphere.io/api/iam/... rbac:roleName=controller-perms ${CRD_OPTIONS} output:crd:artifacts:config=config/crds
go run ./vendor/sigs.k8s.io/controller-tools/cmd/controller-gen/main.go object:headerFile=./hack/boilerplate.go.txt paths=kubesphere.io/api/network/v1alpha1/... rbac:roleName=controller-perms ${CRD_OPTIONS} output:crd:artifacts:config=config/crds
go run ./vendor/sigs.k8s.io/controller-tools/cmd/controller-gen/main.go object:headerFile=./hack/boilerplate.go.txt paths=kubesphere.io/api/quota/... rbac:roleName=controller-perms ${CRD_OPTIONS} output:crd:artifacts:config=config/crds
go run ./vendor/sigs.k8s.io/controller-tools/cmd/controller-gen/main.go object:headerFile=./hack/boilerplate.go.txt paths=kubesphere.io/api/storage/... rbac:roleName=controller-perms ${CRD_OPTIONS} output:crd:artifacts:config=config/crds
go run ./vendor/sigs.k8s.io/controller-tools/cmd/controller-gen/main.go object:headerFile=./hack/boilerplate.go.txt paths=kubesphere.io/api/tenant/... rbac:roleName=controller-perms ${CRD_OPTIONS} output:crd:artifacts:config=config/crds
deploy: manifests
deploy: manifests ;$(info $(M)...Begin to deploy.) @ ## Deploy.
kubectl apply -f config/crds
kustomize build config/default | kubectl apply -f -
# generate will generate crds' deepcopy & go openapi structs
# Futher more about go:genreate . https://blog.golang.org/generate
generate:
go generate ./pkg/... ./cmd/...
mockgen: ;$(info $(M)...Begin to mockgen.) @ ## Mockgen.
mockgen -package=openpitrix -source=pkg/simple/client/openpitrix/openpitrix.go -destination=pkg/simple/client/openpitrix/mock.go
deepcopy:
GO111MODULE=on go install -mod=vendor k8s.io/code-generator/cmd/deepcopy-gen
${GOPATH}/bin/deepcopy-gen -i kubesphere.io/kubesphere/pkg/apis/... -h ./hack/boilerplate.go.txt -O zz_generated.deepcopy
deepcopy: ;$(info $(M)...Begin to deepcopy.) @ ## Deepcopy.
hack/generate_group.sh "deepcopy" kubesphere.io/api kubesphere.io/api ${GV} --output-base=staging/src/ -h "hack/boilerplate.go.txt"
openapi:
go run ./vendor/k8s.io/kube-openapi/cmd/openapi-gen/openapi-gen.go -O openapi_generated -i ./vendor/k8s.io/apimachinery/pkg/apis/meta/v1,./pkg/apis/tenant/v1alpha1 -p kubesphere.io/kubesphere/pkg/apis/tenant/v1alpha1 -h ./hack/boilerplate.go.txt --report-filename ./api/api-rules/violation_exceptions.list
go run ./vendor/k8s.io/kube-openapi/cmd/openapi-gen/openapi-gen.go -O openapi_generated -i ./vendor/k8s.io/apimachinery/pkg/apis/meta/v1,./pkg/apis/servicemesh/v1alpha2 -p kubesphere.io/kubesphere/pkg/apis/servicemesh/v1alpha2 -h ./hack/boilerplate.go.txt --report-filename ./api/api-rules/violation_exceptions.list
go run ./vendor/k8s.io/kube-openapi/cmd/openapi-gen/openapi-gen.go -O openapi_generated -i ./vendor/k8s.io/api/networking/v1,./vendor/k8s.io/apimachinery/pkg/apis/meta/v1,./pkg/apis/network/v1alpha1 -p kubesphere.io/kubesphere/pkg/apis/network/v1alpha1 -h ./hack/boilerplate.go.txt --report-filename ./api/api-rules/violation_exceptions.list
go run ./vendor/k8s.io/kube-openapi/cmd/openapi-gen/openapi-gen.go -O openapi_generated -i ./vendor/k8s.io/apimachinery/pkg/apis/meta/v1,./pkg/apis/devops/v1alpha1 -p kubesphere.io/kubesphere/pkg/apis/devops/v1alpha1 -h ./hack/boilerplate.go.txt --report-filename ./api/api-rules/violation_exceptions.list
openapi: ;$(info $(M)...Begin to openapi.) @ ## Openapi.
go run ./vendor/k8s.io/kube-openapi/cmd/openapi-gen/openapi-gen.go -O openapi_generated -i ./vendor/k8s.io/apimachinery/pkg/apis/meta/v1,./vendor/kubesphere.io/api/tenant/v1alpha1 -p kubesphere.io/api/tenant/v1alpha1 -h ./hack/boilerplate.go.txt --report-filename ./api/api-rules/violation_exceptions.list --output-base=staging/src/
go run ./vendor/k8s.io/kube-openapi/cmd/openapi-gen/openapi-gen.go -O openapi_generated -i ./vendor/k8s.io/apimachinery/pkg/apis/meta/v1,./vendor/kubesphere.io/api/network/v1alpha1 -p kubesphere.io/api/network/v1alpha1 -h ./hack/boilerplate.go.txt --report-filename ./api/api-rules/violation_exceptions.list --output-base=staging/src/
go run ./vendor/k8s.io/kube-openapi/cmd/openapi-gen/openapi-gen.go -O openapi_generated -i ./vendor/k8s.io/apimachinery/pkg/apis/meta/v1,./vendor/kubesphere.io/api/servicemesh/v1alpha2 -p kubesphere.io/api/servicemesh/v1alpha2 -h ./hack/boilerplate.go.txt --report-filename ./api/api-rules/violation_exceptions.list --output-base=staging/src/
go run ./vendor/k8s.io/kube-openapi/cmd/openapi-gen/openapi-gen.go -O openapi_generated -i ./vendor/k8s.io/api/networking/v1,./vendor/k8s.io/apimachinery/pkg/apis/meta/v1,./vendor/k8s.io/apimachinery/pkg/util/intstr,./vendor/kubesphere.io/api/network/v1alpha1 -p kubesphere.io/api/network/v1alpha1 -h ./hack/boilerplate.go.txt --report-filename ./api/api-rules/violation_exceptions.list --output-base=staging/src/
go run ./vendor/k8s.io/kube-openapi/cmd/openapi-gen/openapi-gen.go -O openapi_generated -i ./vendor/k8s.io/apimachinery/pkg/apis/meta/v1,./vendor/kubesphere.io/api/devops/v1alpha1,./vendor/k8s.io/apimachinery/pkg/runtime,./vendor/k8s.io/api/core/v1 -p kubesphere.io/api/devops/v1alpha1 -h ./hack/boilerplate.go.txt --report-filename ./api/api-rules/violation_exceptions.list --output-base=staging/src/
go run ./vendor/k8s.io/kube-openapi/cmd/openapi-gen/openapi-gen.go -O openapi_generated -i ./vendor/k8s.io/apimachinery/pkg/apis/meta/v1,./vendor/kubesphere.io/api/cluster/v1alpha1,./vendor/k8s.io/apimachinery/pkg/runtime,./vendor/k8s.io/api/core/v1 -p kubesphere.io/api/cluster/v1alpha1 -h ./hack/boilerplate.go.txt --report-filename ./api/api-rules/violation_exceptions.list --output-base=staging/src/
go run ./vendor/k8s.io/kube-openapi/cmd/openapi-gen/openapi-gen.go -O openapi_generated -i ./vendor/k8s.io/apimachinery/pkg/apis/meta/v1,./vendor/kubesphere.io/api/devops/v1alpha3,./vendor/k8s.io/apimachinery/pkg/runtime -p kubesphere.io/api/devops/v1alpha3 -h ./hack/boilerplate.go.txt --report-filename ./api/api-rules/violation_exceptions.list --output-base=staging/src/
go run ./tools/cmd/crd-doc-gen/main.go
# Build the docker image
docker-build: all
docker build . -t ${IMG}
go run ./tools/cmd/doc-gen/main.go
container: ;$(info $(M)...Begin to build the docker image.) @ ## Build the docker image.
DRY_RUN=true hack/docker_build.sh
container-push: ;$(info $(M)...Begin to build and push.) @ ## Build and Push.
hack/docker_build.sh
container-cross: ; $(info $(M)...Begin to build container images for multiple platforms.) @ ## Build container images for multiple platforms. Currently, only linux/amd64,linux/arm64 are supported.
DRY_RUN=true hack/docker_build_multiarch.sh
container-cross-push: ; $(info $(M)...Begin to build and push.) @ ## Build and Push.
hack/docker_build_multiarch.sh
helm-package: ; $(info $(M)...Begin to helm-package.) @ ## Helm-package.
ls config/crds/ | xargs -i cp -r config/crds/{} config/ks-core/crds/
helm package config/ks-core --app-version=v3.1.0 --version=0.1.0 -d ./bin
helm-deploy: ; $(info $(M)...Begin to helm-deploy.) @ ## Helm-deploy.
ls config/crds/ | xargs -i cp -r config/crds/{} config/ks-core/crds/
- kubectl create ns kubesphere-controls-system
helm upgrade --install ks-core ./config/ks-core -n kubesphere-system --create-namespace
kubectl apply -f https://raw.githubusercontent.com/kubesphere/ks-installer/master/roles/ks-core/prepare/files/ks-init/role-templates.yaml
helm-uninstall: ; $(info $(M)...Begin to helm-uninstall.) @ ## Helm-uninstall.
- kubectl delete ns kubesphere-controls-system
helm uninstall ks-core -n kubesphere-system
kubectl delete -f https://raw.githubusercontent.com/kubesphere/ks-installer/master/roles/ks-core/prepare/files/ks-init/role-templates.yaml
# Run tests
test: fmt vet
export KUBEBUILDER_CONTROLPLANE_START_TIMEOUT=1m; go test ./pkg/... ./cmd/... -coverprofile cover.out
ENVTEST_ASSETS_DIR=$(shell pwd)/testbin
test: vet test-env ;$(info $(M)...Begin to run tests.) @ ## Run tests.
export KUBEBUILDER_ASSETS=$(shell pwd)/testbin/bin; go test ./pkg/... ./cmd/... -covermode=atomic -coverprofile=coverage.txt
cd staging/src/kubesphere.io/api ; GOFLAGS="" go test ./...
cd staging/src/kubesphere.io/client-go ; GOFLAGS="" go test ./...
.PHONY: test-env
test-env: ;$(info $(M)...Begin to setup test env) @ ## Download unit test libraries e.g. kube-apiserver etcd.
@hack/setup-kubebuilder-env.sh
.PHONY: clean
clean:
clean: ;$(info $(M)...Begin to clean.) @ ## Clean.
-make -C ./pkg/version clean
@echo "ok"
# find or download controller-gen
# download controller-gen if necessary
clientset:
./hack/generate_client.sh
# Currently in the upgrade phase of controller tools.
# But the new controller tools are not compatible with the old version.
# With these commands you may need to manually modify the generated code
# So don't use it unless you know it very deeply
internal-crds:
$(CONTROLLER_GEN) $(CRD_OPTIONS) rbac:roleName=manager-role webhook paths="./pkg/apis/network/..." output:crd:artifacts:config=config/crd/bases
internal-generate-apis: internal-controller-gen
$(CONTROLLER_GEN) object:headerFile=./hack/boilerplate.go.txt paths=./pkg/apis/network/...
internal-controller-gen:
ifeq (, $(shell which controller-gen))
go get sigs.k8s.io/controller-tools/cmd/controller-gen@v0.2.0-beta.4
CONTROLLER_GEN=$(GOBIN)/controller-gen
else
CONTROLLER_GEN=$(shell which controller-gen)
endif
network-rbac:
$(CONTROLLER_GEN) paths=./pkg/controller/network/provider/ paths=./pkg/controller/network/ rbac:roleName=network-manager output:rbac:artifacts:config=kustomize/network/calico-k8s
$(CONTROLLER_GEN) paths=./pkg/controller/network/ rbac:roleName=network-manager output:rbac:artifacts:config=kustomize/network/calico-etcd
clientset: ;$(info $(M)...Begin to find or download controller-gen.) @ ## Find or download controller-gen,download controller-gen if necessary.
./hack/generate_client.sh ${GV}

20
OWNERS
View File

@@ -1,6 +1,9 @@
approvers:
- zryfish #oncall
- rayzhou2017
- wansir
- zheng1
- benjaminhuo
reviewers:
- rayzhou2017
@@ -8,13 +11,16 @@ reviewers:
- benjaminhuo
- calvinyv
- FeynmanZhou
- huanggze
- huojiao2006
- Ma-Dan
- magicsong
- pixiake
- runzexia
- wansir
- wnxn
- zheng1
- soulseen
- stoneshi-yunify
- linuxsuren
- RolandMa1986
- wanjunlei
- xyz-li
- junotx
- yuswift
- zhu733756
- JohnNiang
- dkeven

226
README.md
View File

@@ -1,9 +1,20 @@
# KubeSphere
[![License](http://img.shields.io/badge/license-apache%20v2-blue.svg)](https://github.com/KubeSphere/KubeSphere/blob/master/LICENSE)
[![Build Status](https://travis-ci.org/kubesphere/kubesphere.svg?branch=master)](https://travis-ci.org/kubesphere/kubesphere)
[![KubeSphere release](https://img.shields.io/github/release/kubesphere/kubesphere.svg?color=release&label=release&logo=release&logoColor=release)](https://github.com/kubesphere/kubesphere/releases/tag/advanced-2.0.2)
<p align="center">
<img src="docs/images/kubesphere-logo.png" alt="banner" width="200px">
</p>
<p align="center">
<b>The container platform tailored for <i>Kubernetes multi-cloud, datacenter, and edge</i> management</b>
</p>
<p align=center>
<a href="https://goreportcard.com/report/github.com/kubesphere/kubesphere"><img src="https://goreportcard.com/badge/github.com/kubesphere/kubesphere" alt="A+"></a>
<a href="https://hub.docker.com/r/kubesphere/ks-installer"><img src="https://img.shields.io/docker/pulls/kubesphere/ks-installer"></a>
<a href="https://github.com/search?q=user%3Akubesphere+user%3Akubesphere-sigs+label%3A%22good+first+issue%22+state%3Aopen&type=Issues&ref=advsearch&l=&l="><img src="https://img.shields.io/github/issues/badges/shields/good%20first%20issue" alt="good first"></a>
<a href="https://twitter.com/intent/follow?screen_name=KubeSphere"><img src="https://img.shields.io/twitter/follow/KubeSphere?style=social" alt="follow on Twitter"></a>
<a href="https://join.slack.com/t/kubesphere/shared_invite/enQtNTE3MDIxNzUxNzQ0LTZkNTdkYWNiYTVkMTM5ZThhODY1MjAyZmVlYWEwZmQ3ODQ1NmM1MGVkNWEzZTRhNzk0MzM5MmY4NDc3ZWVhMjE"><img src="https://img.shields.io/badge/Slack-600%2B-blueviolet?logo=slack&amp;logoColor=white"></a>
<a href="https://www.youtube.com/channel/UCyTdUQUYjf7XLjxECx63Hpw"><img src="https://img.shields.io/youtube/channel/subscribers/UCyTdUQUYjf7XLjxECx63Hpw?style=social"></a>
</p>
![logo](docs/images/kubesphere-logo.png)
----
@@ -11,172 +22,155 @@
> English | [中文](README_zh.md)
[KubeSphere](https://kubesphere.io/) is an enterprise-grade multi-tenant container management platform that built on [Kubernetes](https://kubernetes.io). It provides an easy-to-use UI for users to manage computing resources with a few clicks, which reduces the learning curve and empowers the DevOps teams. It greatly reduces the complexity of the daily work of development, testing, operation and maintenance, aiming to alleviate the pain points of Kubernetes' storage, network, security and ease of use, etc.
## Screenshots
> Note: See the [Screenshots](docs/screenshots.md) of KubeSphere to have a most intuitive understanding of KubeSphere dashboard and features.
[KubeSphere](https://kubesphere.io/) is a **distributed operating system for cloud-native application management**, using [Kubernetes](https://kubernetes.io) as its kernel. It provides a plug-and-play architecture, allowing third-party applications to be seamlessly integrated into its ecosystem. KubeSphere is also a multi-tenant container platform with full-stack automated IT operation and streamlined DevOps workflows. It provides developer-friendly wizard web UI, helping enterprises to build out a more robust and feature-rich platform, which includes most common functionalities needed for enterprise Kubernetes strategy, see [Feature List](#features) for details.
The following screenshots give a close insight into KubeSphere. Please check [What is KubeSphere](https://kubesphere.io/docs/introduction/what-is-kubesphere/) for further information.
<table>
<tr>
<td width="50%" align="center"><b>KubeSphere Dashboard</b></td>
<td width="50%" align="center"><b>Workbench</b></td>
<td width="50%" align="center"><b>Project Resources</b></td>
</tr>
<tr>
<td><img src="https://pek3b.qingstor.com/kubesphere-docs/png/20191112094014.png"/></td>
<td><img src="https://pek3b.qingstor.com/kubesphere-docs/png/20191112094426.png"/></td>
<td><img src="docs/images/console.png"/></td>
<td><img src="docs/images/project.png"/></td>
</tr>
<tr>
<td width="50%" align="center"><b>CI/CD Pipeline</b></td>
<td width="50%" align="center"><b>Application Store</b></td>
<td width="50%" align="center"><b>App Store</b></td>
</tr>
<tr>
<td><img src="https://pek3b.qingstor.com/kubesphere-docs/png/20190925000712.png"/></td>
<td><img src="https://pek3b.qingstor.com/kubesphere-docs/png/20191112095006.png"/></td>
<td><img src="docs/images/cicd.png"/></td>
<td><img src="docs/images/app-store.png"/></td>
</tr>
</table>
## Video on Youtube
## Demo Environment
[![KubeSphere](https://pek3b.qingstor.com/kubesphere-docs/png/20191112093503.png)](https://youtu.be/u5lQvhi_Xlc)
🎮 Using the account `demo1 / Demo123` to log in the [demo environment](https://demo.kubesphere.io/). Please note the account is granted view access.
🖥 You can also have a quick view of [Demo video](https://youtu.be/YxZ1YUv0CYs).
## Features
KubeSphere provides an easy-to-use console with the awesome user experience that allows you to quickly get started with a container management platform. KubeSphere provides and supports following core features:
<details>
<summary><b>🕸 Provisioning Kubernetes Cluster</b></summary>
Support deploy Kubernetes on any infrastructure, support online and air-gapped installation, <a href="https://kubesphere.io/docs/installing-on-linux/introduction/intro/">learn more</a>.
</details>
<details>
<summary><b>🔗 Kubernetes Multi-cluster Management</b></summary>
Provide a centralized control plane to manage multiple Kubernetes clusters, support propagate an app to multiple K8s clusters across different cloud providers.
</details>
- Workload management
- Service mesh (Istio-based)
- DevOps
- Source to Image
- Multi-tenant management
- Multi-dimensional and Multi-tenant Monitoring, Logging, Alerting, Notification
- Service and network management
- Application template and repository
- Infrastructure management, image registry management
- Integrate Harbor and GitLab
- LB controller for Kubernetes on bare metal ([Porter](https://github.com/kubesphere/porter)), [cloud LB plugin](https://github.com/yunify/qingcloud-cloud-controller-manager)
- Support GPU node
<details>
<summary><b>🤖 Kubernetes DevOps</b></summary>
Provide out-of-box CI/CD based on Jenkins, and offers automated workflow tools including binary-to-image (B2I) and source-to-image (S2I), <a href="https://kubesphere.io/devops/">learn more</a>.
</details>
<details>
<summary><b>🔎 Cloud Native Observability</b></summary>
Multi-dimensional monitoring, events and auditing logs are supported; multi-tenant log query and collection, alerting and notification are built-in, <a href="https://kubesphere.io/observability/">learn more</a>.
</details>
It also supports multiple open source storage and high-performance cloud storage as the persistent storage services, as well as supports multiple open source network plugins.
<details>
<summary><b>🧩 Service Mesh (Istio-based)</b></summary>
Provide fine-grained traffic management, observability and tracing for distributed microservice applications, provides visualization for traffic topology, <a href="https://kubesphere.io/service-mesh/">learn more</a>.
</details>
> Note: See this [document](https://docs.kubesphere.io/advanced-v2.0/zh-CN/introduction/features/) that elaborates on the KubeSphere features and services from a professional point of view.
<details>
<summary><b>💻 App Store</b></summary>
Provide an App Store for Helm-based applications, and offer application lifecycle management on Kubernetes platform, <a href="https://kubesphere.io/docs/pluggable-components/app-store/">learn more</a>.
</details>
----
<details>
<summary><b>💡 Edge Computing Platform</b></summary>
KubeSphere integrates <a href="https://kubeedge.io/en/">KubeEdge</a> to enable users to deploy applications on the edge devices and view logs and monitoring metrics of them on the console, <a href="https://kubesphere.io/docs/pluggable-components/kubeedge/">learn more</a>.
</details>
<details>
<summary><b>📊 Metering and Billing</b></summary>
Track resource consumption at different levels on a unified dashboard, which helps you make better-informed decisions on planning and reduce the cost, <a href="https://kubesphere.io/docs/toolbox/metering-and-billing/view-resource-consumption/">learn more</a>.
</details>
<details>
<summary><b>🗃 Support Multiple Storage and Networking Solutions</b></summary>
<li>Support GlusterFS, CephRBD, NFS, LocalPV solutions, and provide CSI plugins to consume storage from multiple cloud providers.</li><li>Provide Load Balancer Implementation <a href="https://github.com/kubesphere/openelb">OpenELB</a> for Kubernetes in bare-metal, edge, and virtualization.</li><li> Provides network policy and Pod IP pools management, support Calico, Flannel, Kube-OVN</li>.</li>.
</details>
<details>
<summary><b>🏘 Multi-tenancy</b></summary>
Provide unified authentication with fine-grained roles and three-tier authorization system, and support AD/LDAP authentication.
</details>
## Architecture
KubeSphere adopts the separation of front and back ends, each component is drawn in the architecture diagram below. KubeSphere can run anywhere from on-premise datacenter to any cloud to edge. In addition, it can be deployed on any Kubernetes distribution.
KubeSphere uses a loosely-coupled architecture that separates the [frontend](https://github.com/kubesphere/console) from the [backend](https://github.com/kubesphere/kubesphere). External systems can access the components of the backend through the REST APIs.
![](https://pek3b.qingstor.com/kubesphere-docs/png/20190810073322.png)
![Architecture](docs/images/architecture.png)
----
## Latest Release
KubeSphere 2.1.0 was released on **November 12nd, 2019**. See the [Release Notes For 2.1.0](https://kubesphere.io/docs/v2.1/zh-CN/release/release-v210/) to preview the updates.
🎉 KubeSphere 3.1.1 is now available! See the [Release Notes For 3.1.1](https://kubesphere.io/docs/release/release-v311/) for the updates.
## Installation
> Attention: Following section is only used for minimal installation by default, KubeSphere has decoupled some core components in v2.1.0, for more pluggable components installation, see `Enable Pluggable Components` below.
### Deploy On Kubernetes
**Prerequisites**
> - `Kubernetes version` `1.13.0 ≤ K8s version < 1.16`;
> - `Helm version` >= `2.10.0`see [Install and Configure Helm in Kubernetes](https://devopscube.com/install-configure-helm-kubernetes/);
> - CPU > 1 CoreMemory > 2 G;
> - An existing Storage Class in your Kubernetes clusters, use `kubectl get sc` to verify it.
When all Pods of KubeSphere are running, it means the installation is successsful. Then you can use `http://IP:30880` to access the dashboard with default account `admin/P@88w0rd`.
```yaml
$ kubectl apply -f https://raw.githubusercontent.com/kubesphere/ks-installer/master/kubesphere-minimal.yaml
```
### Deploy on Linux
- Operating Systems
- CentOS 7.5 (64 bit)
- Ubuntu 16.04/18.04 LTS (64 bit)
- Red Hat Enterprise Linux Server 7.4 (64 bit)
- Debian Stretch 9.5 (64 bit)
- Hardware
- CPU2 Core, Memory4 G, Disk Space100 G
### All-in-One
For those who are new to KubeSphere and looking for the fastest way to install and experience the dashboard. Execute following commands to download and install KubeSphere in a single node.
```bash
$ curl -L https://kubesphere.io/download/stable/v2.1.0 > installer.tar.gz \
&& tar -zxf installer.tar.gz && cd kubesphere-all-v2.1.0/scripts
$ ./install.sh
```
Choose `"1) All-in-one"` to trigger the installation. Generally, you can install it directly without any configuration..
> Note: In a formal environment, it's highly recommended to install KubeSphere with Multi-Node Installation.
### Enable Pluggable Components
The above two methods is only used for minimal installation by default, execute following command to enable more pluggable components installation, make sure your cluster has enough CPU and memory in advance.
```
$ kubectl edit cm -n kubesphere-system ks-installer
```
## To start using KubeSphere
KubeSphere can run anywhere from on-premise datacenter to any cloud to edge. In addition, it can be deployed on any version-compatible Kubernetes cluster.
### Quick Start
KubeSphere provides 12 quick-start tutorials to walk you through the process and common manipulation, with a quick overview of the core features of KubeSphere that helps you to get familiar with it.
1. Run the following commands to install KubeSphere on an exiting Kubernetes cluster:
- [Get Started - En](https://github.com/kubesphere/kubesphere.github.io/tree/master/blog/advanced-2.0/en)
- [Get Started - 中](https://kubesphere.io/docs/advanced-v2.0/zh-CN/quick-start/quick-start-guide/)
```yaml
kubectl apply -f https://github.com/kubesphere/ks-installer/releases/download/v3.1.1/kubesphere-installer.yaml
kubectl apply -f https://github.com/kubesphere/ks-installer/releases/download/v3.1.1/cluster-configuration.yaml
```
2. You can run the following command to view the installation logs. After KubeSphere is successfully installed, you can use `http://IP:30880` to access the KubeSphere Console with the default account and password (admin/P@88w0rd).
### Documentation
```yaml
kubectl logs -n kubesphere-system $(kubectl get pod -n kubesphere-system -l app=ks-install -o jsonpath='{.items[0].metadata.name}') -f
```
- [KubeSphere Documentation (En/中) ](https://kubesphere.io/docs)
- [API Documentation](https://kubesphere.io/docs/advanced-v2.0/zh-CN/api-reference/api-docs/)
> 👨‍💻 No Kubernetes cluster? Try [All-in-one](https://kubesphere.io/docs/quick-start/all-in-one-on-linux/) to install a single-node Kubernetes and KubeSphere on your Linux machine.
### KubeSphere for hosted Kubernetes services
## To start developing KubeSphere
KubeSphere is hosted on the following cloud providers, you can try KubeSphere by one-click installation on their hosted Kubernetes services.
The [development guide](CONTRIBUTING.md) hosts all information about building KubeSphere from source, git workflow, how to contribute code and how to test.
- [KubeSphere for Amazon EKS](https://aws.amazon.com/quickstart/architecture/qingcloud-kubesphere/)
- [KubeSphere for Azure AKS](https://market.azure.cn/marketplace/apps/qingcloud.kubesphere)
- [KubeSphere for DigitalOcean Kubernetes](https://marketplace.digitalocean.com/apps/kubesphere)
- [KubeSphere on QingCloud AppCenter(QKE)](https://www.qingcloud.com/products/kubesphereqke)
## RoadMap
You can also install KubeSphere on other hosted Kubernetes services within minutes, see the [step-by-step guides](https://kubesphere.io/docs/installing-on-kubernetes/) to get started.
Currently, KubeSphere has released the following 4 major editions. The future releases will include Multicluster, Big data, AI, SDN, etc.
> 👨‍💻 No internet access? Refer to the [Air-gapped Installation on Kubernetes](https://kubesphere.io/docs/installing-on-kubernetes/on-prem-kubernetes/install-ks-on-linux-airgapped/) or [Air-gapped Installation on Linux](https://kubesphere.io/docs/installing-on-linux/introduction/air-gapped-installation/) for instructions on how to use private registry to install KubeSphere.
**Express Edition** => **v1.0.x** => **v2.0.x** => **v2.1.0**
## Contributing, Support, Discussion, and Community
![](https://pek3b.qingstor.com/kubesphere-docs/png/20190926000413.png)
We :heart: your contribution. The [community](https://github.com/kubesphere/community) walks you through how to get started contributing KubeSphere. The [development guide](https://github.com/kubesphere/community/tree/master/developer-guide/development) explains how to set up development environment.
- [Slack Channel](https://join.slack.com/t/kubesphere/shared_invite/enQtNTE3MDIxNzUxNzQ0LTZkNTdkYWNiYTVkMTM5ZThhODY1MjAyZmVlYWEwZmQ3ODQ1NmM1MGVkNWEzZTRhNzk0MzM5MmY4NDc3ZWVhMjE)
- [Youtube](https://www.youtube.com/channel/UCyTdUQUYjf7XLjxECx63Hpw)
- [Follow us on Twitter](https://twitter.com/KubeSphere)
Please submit any KubeSphere bugs, issues, and feature requests to [KubeSphere GitHub Issue](https://github.com/kubesphere/kubesphere/issues).
## Who are using KubeSphere
The [user case studies](https://kubesphere.io/case/) page includes the user list of the project. You can [leave a comment](https://github.com/kubesphere/kubesphere/issues/4123) to let us know your use case.
## Landscapes
<p align="center">
<br/><br/>
<img src="https://landscape.cncf.io/images/left-logo.svg" width="150"/>&nbsp;&nbsp;<img src="https://landscape.cncf.io/images/right-logo.svg" width="200"/>&nbsp;&nbsp;<img src="https://www.cncf.io/wp-content/uploads/2017/11/certified_kubernetes_color.png" height="40" width="30"/>
<img src="https://landscape.cncf.io/images/left-logo.svg" width="150"/>&nbsp;&nbsp;<img src="https://landscape.cncf.io/images/right-logo.svg" width="200"/>&nbsp;&nbsp;
<br/><br/>
KubeSphere is a member of CNCF and a <a href="https://www.cncf.io/certification/software-conformance/#logos">Kubernetes Conformance Certified platform
</a>, which enriches the <a href="https://landscape.cncf.io/landscape=observability-and-analysis&license=apache-license-2-0">CNCF CLOUD NATIVE Landscape.
</a>, which enriches the <a href="https://landscape.cncf.io/?landscape=observability-and-analysis&license=apache-license-2-0">CNCF CLOUD NATIVE Landscape.
</a>
</p>
## Support, Discussion, and Community
If you need any help with KubeSphere, please join us at [Slack Channel](https://join.slack.com/t/kubesphere/shared_invite/enQtNTE3MDIxNzUxNzQ0LTZkNTdkYWNiYTVkMTM5ZThhODY1MjAyZmVlYWEwZmQ3ODQ1NmM1MGVkNWEzZTRhNzk0MzM5MmY4NDc3ZWVhMjE).
Please submit any KubeSphere bugs, issues, and feature requests to [KubeSphere GitHub Issue](https://github.com/kubesphere/kubesphere/issues).
## Contributing to the project
All members of the KubeSphere community must abide by [Code of Conduct](docs/code-of-conduct.md). Only by respecting each other can we develop a productive, collaborative community.
How to submit a pull request to KubeSphere? See [Pull Request Instruction](docs/pull-requests.md).

View File

@@ -1,9 +1,20 @@
# KubeSphere
[![License](http://img.shields.io/badge/license-apache%20v2-blue.svg)](https://github.com/KubeSphere/KubeSphere/blob/master/LICENSE)
[![Build Status](https://travis-ci.org/kubesphere/kubesphere.svg?branch=master)](https://travis-ci.org/kubesphere/kubesphere)
[![KubeSphere release](https://img.shields.io/github/release/kubesphere/kubesphere.svg?color=release&label=release&logo=release&logoColor=release)](https://github.com/kubesphere/kubesphere/releases/tag/advanced-2.0.2)
<p align="center">
<img src="docs/images/kubesphere-logo.png" alt="banner" width="200px">
</p>
<p align="center">
<b>为<i> Kubernetes 多云、数据中心和边缘 </i>管理而定制的容器平台</b>
</p>
<p align=center>
<a href="https://goreportcard.com/report/github.com/kubesphere/kubesphere"><img src="https://goreportcard.com/badge/github.com/kubesphere/kubesphere" alt="A+"></a>
<a href="https://hub.docker.com/r/kubesphere/ks-installer"><img src="https://img.shields.io/docker/pulls/kubesphere/ks-installer"></a>
<a href="https://github.com/search?q=user%3Akubesphere+user%3Akubesphere-sigs+label%3A%22good+first+issue%22+state%3Aopen&type=Issues&ref=advsearch&l=&l="><img src="https://img.shields.io/github/issues/badges/shields/good%20first%20issue" alt="good first"></a>
<a href="https://twitter.com/intent/follow?screen_name=KubeSphere"><img src="https://img.shields.io/twitter/follow/KubeSphere?style=social" alt="follow on Twitter"></a>
<a href="https://join.slack.com/t/kubesphere/shared_invite/enQtNTE3MDIxNzUxNzQ0LTZkNTdkYWNiYTVkMTM5ZThhODY1MjAyZmVlYWEwZmQ3ODQ1NmM1MGVkNWEzZTRhNzk0MzM5MmY4NDc3ZWVhMjE"><img src="https://img.shields.io/badge/Slack-600%2B-blueviolet?logo=slack&amp;logoColor=white"></a>
<a href="https://www.youtube.com/channel/UCyTdUQUYjf7XLjxECx63Hpw"><img src="https://img.shields.io/youtube/channel/subscribers/UCyTdUQUYjf7XLjxECx63Hpw?style=social"></a>
</p>
![logo](docs/images/kubesphere-logo.png)
----
@@ -11,162 +22,157 @@
> [English](README.md) | 中文
[KubeSphere](https://kubesphere.io/) 是在 [Kubernetes](https://kubernetes.io) 之上构建的以**应用为中心的**多租户**容器管理平台**,支持部署和运行在**任何基础设施之上**,提供**简单易用的操作界面**以及**向导式操作**方式,在降低用户使用容器调度平台学习成本的同时,极大减轻开发、测试、运维的日常工作的复杂度,旨在解决 Kubernetes 本身存在的存储、网络、安全和易用性等痛点。帮助企业轻松应对**敏捷开发、自动化运维、应用快速交付、微服务治理、多租户管理、监控日志告警、服务与网络管理、镜像仓库**等业务场景
[KubeSphere](https://kubesphere.io/zh/) 愿景是打造一个以 [Kubernetes](https://kubernetes.io/zh/) 为内核的 **云原生分布式操作系统**它的架构可以非常方便地使第三方应用与云原生生态组件进行即插即用plug-and-play的集成支持云原生应用在多云与多集群的统一分发和运维管理。 KubeSphere 也是一个多租户容器平台,提供全栈的 IT 自动化运维的能力,简化企业的 DevOps 工作流。KubeSphere 提供了运维友好的向导式操作界面,帮助企业快速构建一个强大和功能丰富的容器云平台,详情请参阅 [平台功能](#平台功能)
KubeSphere 已大规模服务于社区用户,广泛地应用在以容器为中心的开发测试及生产环境,大量服务平稳地运行在 KubeSphere 之上
> 说明KubeSphere 目前最新的版本为高级版 2.0.2,并且所有版本 100% 开源,关于 KubeSphere 更详细的介绍与说明请参阅 [产品介绍](https://docs.kubesphere.io/advanced-v2.0/zh-CN/introduction/intro/)。
点击 [KubeSphere 快览](docs/screenshots.md) 快速查看 KubeSphere UI
下面的屏幕截图让我们进一步了解 KubeSphere关于 KubeSphere 更详细的介绍与说明请参阅 [什么是 KubeSphere](https://kubesphere.io/zh/docs/introduction/what-is-kubesphere/)
<table>
<tr>
<td width="50%" align="center"><b>KubeSphere Dashboard</b></td>
<td width="50%" align="center"><b>Project Resources</b></td>
<td width="50%" align="center"><b>工作台</b></td>
<td width="50%" align="center"><b>项目资源</b></td>
</tr>
<tr>
<td><img src="https://pek3b.qingstor.com/kubesphere-docs/png/20191112094014.png"/></td>
<td><img src="https://pek3b.qingstor.com/kubesphere-docs/png/20191112094426.png"/></td>
<td><img src="docs/images/console.png"/></td>
<td><img src="docs/images/project.png"/></td>
</tr>
<tr>
<td width="50%" align="center"><b>CI/CD Pipeline</b></td>
<td width="50%" align="center"><b>Application Store</b></td>
<td width="50%" align="center"><b>CI/CD 流水线</b></td>
<td width="50%" align="center"><b>应用商店</b></td>
</tr>
<tr>
<td><img src="https://pek3b.qingstor.com/kubesphere-docs/png/20190925000712.png"/></td>
<td><img src="https://pek3b.qingstor.com/kubesphere-docs/png/20191112095006.png"/></td>
<td><img src="docs/images/cicd.png"/></td>
<td><img src="docs/images/app-store.png"/></td>
</tr>
</table>
## Video on Youtube
## Demo 环境
[![KubeSphere](https://pek3b.qingstor.com/kubesphere-docs/png/20191112093503.png)](https://youtu.be/u5lQvhi_Xlc)
🎮 使用账号 `demo1 / Demo123` 登录 [Demo 环境](https://demo.kubesphere.io/) 。请注意,该帐户仅授予了 view 权限。
## 核心功能
🖥 您还可以快速查看[Demo 视频](https://youtu.be/YxZ1YUv0CYs) 。
- Kubernetes 资源管理:纳管多种类型的 K8s 资源,提供易用友好的向导式 UI
- 应用编排与管理:包括**一键部署应用**、**Helm Chart 可视化管理**、**应用生命周期管理**,后续将支持计量计费
- 微服务治理:基于 Istio 提供可视化无代码侵入的**灰度发布、熔断、流量管控、Tracing**,兼容**Spring Cloud & Dubbo**
- 一站式 DevOps提供**可视化编辑 CI/CD 流水线**,包括从开发测试到持续部署上线的**全流程管理**,提供 [S2i](https://kubesphere.io/docs/v2.0/zh-CN/quick-start/source-to-image/)、[B2i](https://kubesphere.io/docs/v2.1/zh-CN/quick-start/b2i-war/)
- 多租户管理:提供基于角色的细粒度 [多租户统一认证](https://kubesphere.io/docs/v2.1/zh-CN/multi-tenant/intro/),支持**对接企业 LDAP/AD**,提供多层级的权限管理满足多组织架构的企业用户
- 日志查询与收集:提供基于多租户和多维度的 [日志查询](https://kubesphere.io/docs/v2.1/zh-CN/toolbox/log-search/),并支持快速对接多种日志收集平台
- 多维度监控:提供集群与应用级别多项监控指标,提供按节点、企业空间、项目等资源用量的排行
- 多租户告警系统:支持基于多租户、多维度的告警,提供丰富的监控告警指标,可自定义告警策略,支持邮件通知
- 基础设施管理提供主机管理、存储类型管理、CPU 与内存等资源配额管理
- 支持多种网络方案:支持 Calico、Flannel提供面向物理部署 Kubernetes 的 LB 插件 [Porter](https://github.com/kubesphere/porter) 和云上[负载均衡器插件](https://github.com/yunify/qingcloud-cloud-controller-manager)
- 支持多种存储:支持 GlusterFS、CephRBD、NFS支持 [企业级分布式存储 NeonSAN](https://www.qingcloud.com/products/qingstor-neonsan/) 和 [QingCloud 云平台块存储](https://docs.qingcloud.com/product/storage/volume/)
- 支持 GPU 节点
## 平台功能
<details>
<summary><b>🕸 部署 Kubernetes 集群</b></summary>
支持在任何基础设施上部署 Kubernetes支持在线安装和离线安装<a href="https://kubesphere.io/zh/docs/installing-on-linux/introduction/intro/">了解更多</a> 。
</details>
> 更多详细的功能解读与说明,请查阅 [产品功能](https://kubesphere.io/docs/v2.1/zh-CN/introduction/features/)。
<details>
<summary><b>🔗 Kubernetes 多集群管理</b></summary>
提供集中控制平台来管理多个 Kubernetes 集群支持将应用程序发布到跨不同云供应商的多个k8集群上。
</details>
<details>
<summary><b>🤖 Kubernetes DevOps</b></summary>
提供开箱即用的基于 Jenkins 的 CI/CD并内置自动化流水线插件包括Binary-to-Image (B2I) 和Source-to-Image (S2I)<a href="https://kubesphere.io/zh/devops/">了解更多</a> 。
</details>
<details>
<summary><b>🔎 云原生可观测性</b></summary>
支持多维度监控、事件和审计日志;内置多租户日志查询和收集,告警和通知,<a href="https://kubesphere.io/zh/observability/">了解更多</a> 。
</details>
<details>
<summary><b>🧩 基于 Istio 的微服务治理</b></summary>
为分布式微服务应用程序提供细粒度的流量管理、可观测性和服务跟踪,支持可视化的流量拓扑,<a href="https://kubesphere.io/zh/service-mesh/">了解更多</a> 。
</details>
<details>
<summary><b>💻 应用商店</b></summary>
为基于 Helm 的应用程序提供应用商店,并在 Kubernetes 平台上提供应用程序生命周期管理功能,<a href="https://kubesphere.io/zh/docs/pluggable-components/app-store/">了解更多</a> 。
</details>
<details>
<summary><b>💡 Kubernetes 边缘节点管理</b></summary>
基于 <a href="https://kubeedge.io/zh/">KubeEdge</a> 实现应用与工作负载在云端与边缘节点的统一分发与管理,解决在海量边、端设备上完成应用交付、运维、管控的需求,<a href= "https://kubesphere.io/zh/docs/pluggable-components/kubeedge/">了解更多</a> 。
</details>
<details>
<summary><b>📊 多维度计量与计费</b></summary>
提供基于集群与租户的多维度资源计量与计费的监控报表,让 Kubernetes 运营成本更透明,<a href="https://kubesphere.io/zh/docs/toolbox/metering-and-billing/view-resource-consumption/">了解更多</a> 。
</details>
<details>
<summary><b>🗃 支持多种存储和网络解决方案</b></summary>
<li>支持 GlusterFS、CephRBD、NFS、LocalPV ,并提供多个 CSI 插件对接公有云与企业级存储。</li><li>提供Kubernetes在裸机、边缘和虚拟化中的负载均衡器实现 <a href="https://github.com/kubesphere/openelb">OpenELB</a> 。</li><li>提供网络策略和容器组 IP 池管理,支持 Calico、Flannel、Kube-OVN。</li>
</details>
<details>
<summary><b>🏘 多租户</b></summary>
提供统一的认证鉴权与细粒度的基于角色的授权系统,支持对接 AD/LDAP 。
</details>
## 架构说明
KubeSphere 使用前后端分离的架构,将 [前端](https://github.com/kubesphere/console) 与 [后端](https://github.com/kubesphere/kubesphere) 分开。后端的各个功能组件可通过 REST API 对接外部系统。
![Architecture](docs/images/architecture.png)
----
## 架构
## 最新版本
KubeSphere 采用了前后端分离的架构设计,后端的各个功能组件可通过 REST API 对接外部系统KubeSphere 可以运行在任何 Kubernetes、私有云、公有云、VM 或物理环境之上
🎉 KubeSphere 3.1.1 全新发布!相关更新信息,请参阅 [Release Notes For 3.1.1](https://kubesphere.io/zh/docs/release/release-v311/)
![](docs/images/architecture-zh.png)
## 安装
## 最新发布
KubeSphere 2.1.0 已于 2019 年 11 月 12 日 正式发布,点击 [Release Notes For 2.1.0](https://kubesphere.io/docs/v2.1/zh-CN/release/release-v210/) 查看 2.1.0 版本的更新详情。
## 快速安装
### 部署在 Linux
- 操作系统
- CentOS 7.5 (64 bit)
- Ubuntu 16.04/18.04 LTS (64 bit)
- Red Hat Enterprise Linux Server 7.4 (64 bit)
- Debian Stretch 9.5 (64 bit)
- 配置规格(最低)
- CPU2 Core 内存4 G 硬盘100 G
#### All-in-One
[All-in-One](https://kubesphere.io/docs/v2.1/zh-CN/installation/all-in-one/): 对于首次接触 KubeSphere 高级版的用户,想寻找一个最快安装和体验 KubeSphere 高级版核心功能的方式All-in-one 模式支持一键安装 KubeSphere 至一台目标机器,建议使用干净的机器安装。
```bash
$ curl -L https://kubesphere.io/download/stable/v2.1.0 > installer.tar.gz \
&& tar -zxf installer.tar.gz && cd kubesphere-all-v2.1.0/scripts
$ ./install.sh
```
直接选择 `"1) All-in-one"` 即可开始快速安装。
> 注意All-in-One 仅适用于**测试体验****正式环境** 安装和使用请参考 [安装说明](https://kubesphere.io/docs/v2.1/zh-CN/installation/intro/#%E6%AD%A3%E5%BC%8F%E7%8E%AF%E5%A2%83%E5%AE%89%E8%A3%85)。
### 部署在 Kubernetes
**前提条件**
> - `Kubernetes` 版本: `1.13.0 ≤ K8s version < 1.16`
> - `Helm`,版本 `>= 2.10.0`,且已安装了 Tiller参考 [如何安装与配置 Helm](https://devopscube.com/install-configure-helm-kubernetes/)
> - 集群的可用 CPU > 1 C可用内存 > 2 G且集群能够访问外网
> - 集群已有存储类型StorageClass
可参考 [前提条件](https://kubesphere.io/docs/v2.1/zh-CN/installation/prerequisites/) 验证,若待安装的环境满足以上条件则可以开始部署 KubeSphere当 KubeSphere 的所有 Pod 都为 RRunning 则说明安装成功。使用 `http://IP:30880` 访问 Dashboard默认账号为 `admin/P@88w0rd`
```yaml
$ kubectl apply -f https://raw.githubusercontent.com/kubesphere/ks-installer/master/kubesphere-minimal.yaml
```
注意,以上两种安装方式默认是 **最小化安装**,由于 2.1.0 已对大部分功能组件解耦,实现了功能组件的可插拔,因此可在 **安装完成后** 执行以下命令开启可插拔功能组件的安装,开启安装前确认您的机器资源已符合 [资源最低要求](https://kubesphere.io/docs/v2.1/zh-CN/installation/intro/#%E5%8F%AF%E6%8F%92%E6%8B%94%E5%8A%9F%E8%83%BD%E7%BB%84%E4%BB%B6%E5%88%97%E8%A1%A8)。
```
$ kubectl edit cm -n kubesphere-system ks-installer
```
## 开始使用 KubeSphere
KubeSphere 支持在任意平台运行从本地数据中心到混合多云再走向边缘。此外KubeSphere 可以部署在任何版本兼容的 Kubernetes 集群上。
### 快速入门
[KubeSphere 快速入门](https://kubesphere.io/docs/v2.1/zh-CN/quick-start/quick-start-guide/) 通过 14 个 Step-by-Step 的快速入门的示例教程帮助您了解 KubeSphere 容器平台的基本使用流程,带您快速上手 KubeSphere
1. 运行以下命令以在现有 Kubernetes 集群上安装 KubeSphere
### 文档
```yaml
kubectl apply -f https://github.com/kubesphere/ks-installer/releases/download/v3.1.1/kubesphere-installer.yaml
kubectl apply -f https://github.com/kubesphere/ks-installer/releases/download/v3.1.1/cluster-configuration.yaml
```
- [KubeSphere 文档中心 (En/中) ](https://kubesphere.io/docs/)
- [API 文档](https://kubesphere.io/docs/advanced-v2.0/zh-CN/api-reference/api-docs/)
2. 您可以运行以下命令查看安装日志。 KubeSphere 安装成功后,您可以使用`http://IP:30880` 以默认账号和密码admin/P@88w0rd访问KubeSphere 控制台。
```yaml
kubectl logs -n kubesphere-system $(kubectl get pod -n kubesphere-system -l app=ks-install -o jsonpath='{.items[0].metadata.name}') -f
```
## 开发 KubeSphere
> 👨‍💻 没有 Kubernetes 集群? 可以尝试在 Linux 上以[All-in-one](https://kubesphere.io/zh/docs/quick-start/all-in-one-on-linux/) 模式来安装单节点 Kubernetes 和 KubeSphere
[开发指南](CONTRIBUTING.md) 详细说明了如何从源码编译、KubeSphere 的 GitHub 工作流、如何贡献代码以及如何测试等。
### 在托管 Kubernetes 上部署 KubeSphere
KubeSphere 托管在以下云供应商上,您可以通过在其托管的 Kubernetes 服务上一键安装来部署 KubeSphere。
## 路线图
- [在 Amazon EKS 上部署 KubeSphere](https://aws.amazon.com/quickstart/architecture/qingcloud-kubesphere/)
- [在 Azure AKS 上部署 KubeSphere](https://market.azure.cn/marketplace/apps/qingcloud.kubesphere)
- [在 DigitalOcean 上部署 KubeSphere](https://marketplace.digitalocean.com/apps/kubesphere)
- [在青云QingCloud QKE 上部署 KubeSphere](https://www.qingcloud.com/products/kubesphereqke)
目前KubeSphere 已发布了 4 个大版本和 3 个小版本,所有版本都是完全开源的,为 KubeSphere 社区用户提供服务
您还可以在几分钟内在其他托管的 Kubernetes 服务上安装 KubeSphere请参阅 [官方文档](https://kubesphere.io/zh/docs/installing-on-kubernetes/) 以开始使用
**Express Edition** => **v1.0.x** => **v2.0.x** => **v2.1.0**
> 👨‍💻 不能访问网络?参考 [在Kubernetes上离线安装](https://kubesphere.io/zh/docs/installing-on-kubernetes/on-prem-kubernetes/install-ks-on-linux-airgapped/) 或者 [在 Linux 上离线安装](https://kubesphere.io/zh/docs/installing-on-linux/introduction/air-gapped-installation/) 了解如何使用私有仓库来安装 KubeSphere。
![](https://pek3b.qingstor.com/kubesphere-docs/png/20190926000514.png)
## 贡献、支持、讨论和社区
我们 :heart: 您的贡献。[社区](https://github.com/kubesphere/community) 将引导您了解如何开始贡献 KubeSphere。[开发指南](https://github.com/kubesphere/community/tree/master/developer-guide/development) 说明了如何安装开发环境。
- [中文论坛](https://kubesphere.com.cn/forum/)
- [社区微信群(见官网底部)](https://kubesphere.com.cn/)
- [Slack Channel](https://join.slack.com/t/kubesphere/shared_invite/enQtNTE3MDIxNzUxNzQ0LTZkNTdkYWNiYTVkMTM5ZThhODY1MjAyZmVlYWEwZmQ3ODQ1NmM1MGVkNWEzZTRhNzk0MzM5MmY4NDc3ZWVhMjE)
- [Youtube](https://www.youtube.com/channel/UCyTdUQUYjf7XLjxECx63Hpw)
- [在推特上关注我们](https://twitter.com/KubeSphere)
请将任何 KubeSphere 错误、问题和功能请求提交到 [KubeSphere GitHub Issue](https://github.com/kubesphere/kubesphere/issues) 。
## 谁在使用 KubeSphere
[用户案例学习](https://kubesphere.com.cn/case/) 列出了哪些企业在使用 KubeSphere。欢迎 [发表评论](https://github.com/kubesphere/kubesphere/issues/4123) 来分享您的使用案例。
## Landscapes
<p align="center">
<br/><br/>
<img src="https://landscape.cncf.io/images/left-logo.svg" width="150"/>&nbsp;&nbsp;<img src="https://landscape.cncf.io/images/right-logo.svg" width="200"/>&nbsp;&nbsp;<img src="https://www.cncf.io/wp-content/uploads/2017/11/certified_kubernetes_color.png" height="40" width="30"/>
<img src="https://landscape.cncf.io/images/left-logo.svg" width="150"/>&nbsp;&nbsp;<img src="https://landscape.cncf.io/images/right-logo.svg" width="200"/>&nbsp;&nbsp;
<br/><br/>
KubeSphere 是 CNCF 基金会成员并且通过了 <a href="https://www.cncf.io/certification/software-conformance/#logos">Kubernetes 一致性认证
</a>,进一步丰富了 <a href="https://landscape.cncf.io/landscape=observability-and-analysis&license=apache-license-2-0">CNCF 云原生的生态。
</a>,进一步丰富了 <a href="https://landscape.cncf.io/?landscape=observability-and-analysis&license=apache-license-2-0">CNCF 云原生的生态。
</a>
</p>
## 技术社区
- [Slack Channel](https://join.slack.com/t/kubesphere/shared_invite/enQtNTE3MDIxNzUxNzQ0LTZkNTdkYWNiYTVkMTM5ZThhODY1MjAyZmVlYWEwZmQ3ODQ1NmM1MGVkNWEzZTRhNzk0MzM5MmY4NDc3ZWVhMjE)
- [技术论坛](https://kubesphere.io/forum/)
- 微信群 (与工程师和用户们交流云原生技术,请备注 “公司 - 名字”)
<img width="150px" src="https://pek3b.qingstor.com/kubesphere-docs/png/20190902002055.png" />
## Bug 与建议反馈
KubeSphere 的日益完善与快速发展离不开社区用户的支持KubeSphere 也一直在反哺社区,为开源用户提供更多的支持。若您安装使用时有任何建议问题、反馈或发现的 Bug欢迎在 [GitHub Issue](https://github.com/kubesphere/kubesphere/issues) 提交 Issue。

View File

@@ -1,3 +1,31 @@
API rule violation: list_type_missing,k8s.io/apimachinery/pkg/apis/meta/v1,APIGroup,ServerAddressByClientCIDRs
API rule violation: list_type_missing,k8s.io/apimachinery/pkg/apis/meta/v1,APIGroup,Versions
API rule violation: list_type_missing,k8s.io/apimachinery/pkg/apis/meta/v1,APIGroupList,Groups
API rule violation: list_type_missing,k8s.io/apimachinery/pkg/apis/meta/v1,APIResource,Categories
API rule violation: list_type_missing,k8s.io/apimachinery/pkg/apis/meta/v1,APIResource,ShortNames
API rule violation: list_type_missing,k8s.io/apimachinery/pkg/apis/meta/v1,APIResourceList,APIResources
API rule violation: list_type_missing,k8s.io/apimachinery/pkg/apis/meta/v1,APIVersions,ServerAddressByClientCIDRs
API rule violation: list_type_missing,k8s.io/apimachinery/pkg/apis/meta/v1,APIVersions,Versions
API rule violation: list_type_missing,k8s.io/apimachinery/pkg/apis/meta/v1,ApplyOptions,DryRun
API rule violation: list_type_missing,k8s.io/apimachinery/pkg/apis/meta/v1,CreateOptions,DryRun
API rule violation: list_type_missing,k8s.io/apimachinery/pkg/apis/meta/v1,DeleteOptions,DryRun
API rule violation: list_type_missing,k8s.io/apimachinery/pkg/apis/meta/v1,FieldsV1,Raw
API rule violation: list_type_missing,k8s.io/apimachinery/pkg/apis/meta/v1,LabelSelector,MatchExpressions
API rule violation: list_type_missing,k8s.io/apimachinery/pkg/apis/meta/v1,LabelSelectorRequirement,Values
API rule violation: list_type_missing,k8s.io/apimachinery/pkg/apis/meta/v1,ObjectMeta,Finalizers
API rule violation: list_type_missing,k8s.io/apimachinery/pkg/apis/meta/v1,ObjectMeta,ManagedFields
API rule violation: list_type_missing,k8s.io/apimachinery/pkg/apis/meta/v1,ObjectMeta,OwnerReferences
API rule violation: list_type_missing,k8s.io/apimachinery/pkg/apis/meta/v1,PatchOptions,DryRun
API rule violation: list_type_missing,k8s.io/apimachinery/pkg/apis/meta/v1,RootPaths,Paths
API rule violation: list_type_missing,k8s.io/apimachinery/pkg/apis/meta/v1,StatusDetails,Causes
API rule violation: list_type_missing,k8s.io/apimachinery/pkg/apis/meta/v1,Table,ColumnDefinitions
API rule violation: list_type_missing,k8s.io/apimachinery/pkg/apis/meta/v1,Table,Rows
API rule violation: list_type_missing,k8s.io/apimachinery/pkg/apis/meta/v1,TableRow,Cells
API rule violation: list_type_missing,k8s.io/apimachinery/pkg/apis/meta/v1,TableRow,Conditions
API rule violation: list_type_missing,k8s.io/apimachinery/pkg/apis/meta/v1,UpdateOptions,DryRun
API rule violation: list_type_missing,k8s.io/apimachinery/pkg/runtime,RawExtension,Raw
API rule violation: list_type_missing,k8s.io/apimachinery/pkg/runtime,Unknown,Raw
API rule violation: list_type_missing,kubesphere.io/api/devops/v1alpha3,NoScmPipeline,Parameters
API rule violation: names_match,k8s.io/apimachinery/pkg/apis/meta/v1,APIResourceList,APIResources
API rule violation: names_match,k8s.io/apimachinery/pkg/apis/meta/v1,Duration,Duration
API rule violation: names_match,k8s.io/apimachinery/pkg/apis/meta/v1,InternalEvent,Object
@@ -5,4 +33,63 @@ API rule violation: names_match,k8s.io/apimachinery/pkg/apis/meta/v1,InternalEve
API rule violation: names_match,k8s.io/apimachinery/pkg/apis/meta/v1,MicroTime,Time
API rule violation: names_match,k8s.io/apimachinery/pkg/apis/meta/v1,StatusCause,Type
API rule violation: names_match,k8s.io/apimachinery/pkg/apis/meta/v1,Time,Time
API rule violation: names_match,kubesphere.io/kubesphere/pkg/apis/devops/v1alpha1,S2iBinarySpec,MD5
API rule violation: names_match,k8s.io/apimachinery/pkg/runtime,Unknown,ContentEncoding
API rule violation: names_match,k8s.io/apimachinery/pkg/runtime,Unknown,ContentType
API rule violation: names_match,k8s.io/apimachinery/pkg/runtime,Unknown,Raw
API rule violation: names_match,kubesphere.io/api/devops/v1alpha3,BitbucketServerSource,ApiUri
API rule violation: names_match,kubesphere.io/api/devops/v1alpha3,BitbucketServerSource,CloneOption
API rule violation: names_match,kubesphere.io/api/devops/v1alpha3,BitbucketServerSource,CredentialId
API rule violation: names_match,kubesphere.io/api/devops/v1alpha3,BitbucketServerSource,DiscoverBranches
API rule violation: names_match,kubesphere.io/api/devops/v1alpha3,BitbucketServerSource,DiscoverPRFromForks
API rule violation: names_match,kubesphere.io/api/devops/v1alpha3,BitbucketServerSource,DiscoverPRFromOrigin
API rule violation: names_match,kubesphere.io/api/devops/v1alpha3,BitbucketServerSource,DiscoverTags
API rule violation: names_match,kubesphere.io/api/devops/v1alpha3,BitbucketServerSource,RegexFilter
API rule violation: names_match,kubesphere.io/api/devops/v1alpha3,BitbucketServerSource,ScmId
API rule violation: names_match,kubesphere.io/api/devops/v1alpha3,DiscarderProperty,DaysToKeep
API rule violation: names_match,kubesphere.io/api/devops/v1alpha3,DiscarderProperty,NumToKeep
API rule violation: names_match,kubesphere.io/api/devops/v1alpha3,GitSource,CloneOption
API rule violation: names_match,kubesphere.io/api/devops/v1alpha3,GitSource,CredentialId
API rule violation: names_match,kubesphere.io/api/devops/v1alpha3,GitSource,DiscoverBranches
API rule violation: names_match,kubesphere.io/api/devops/v1alpha3,GitSource,DiscoverTags
API rule violation: names_match,kubesphere.io/api/devops/v1alpha3,GitSource,RegexFilter
API rule violation: names_match,kubesphere.io/api/devops/v1alpha3,GitSource,ScmId
API rule violation: names_match,kubesphere.io/api/devops/v1alpha3,GithubSource,ApiUri
API rule violation: names_match,kubesphere.io/api/devops/v1alpha3,GithubSource,CloneOption
API rule violation: names_match,kubesphere.io/api/devops/v1alpha3,GithubSource,CredentialId
API rule violation: names_match,kubesphere.io/api/devops/v1alpha3,GithubSource,DiscoverBranches
API rule violation: names_match,kubesphere.io/api/devops/v1alpha3,GithubSource,DiscoverPRFromForks
API rule violation: names_match,kubesphere.io/api/devops/v1alpha3,GithubSource,DiscoverPRFromOrigin
API rule violation: names_match,kubesphere.io/api/devops/v1alpha3,GithubSource,DiscoverTags
API rule violation: names_match,kubesphere.io/api/devops/v1alpha3,GithubSource,RegexFilter
API rule violation: names_match,kubesphere.io/api/devops/v1alpha3,GithubSource,ScmId
API rule violation: names_match,kubesphere.io/api/devops/v1alpha3,GitlabSource,ApiUri
API rule violation: names_match,kubesphere.io/api/devops/v1alpha3,GitlabSource,CloneOption
API rule violation: names_match,kubesphere.io/api/devops/v1alpha3,GitlabSource,CredentialId
API rule violation: names_match,kubesphere.io/api/devops/v1alpha3,GitlabSource,DiscoverBranches
API rule violation: names_match,kubesphere.io/api/devops/v1alpha3,GitlabSource,DiscoverPRFromForks
API rule violation: names_match,kubesphere.io/api/devops/v1alpha3,GitlabSource,DiscoverPRFromOrigin
API rule violation: names_match,kubesphere.io/api/devops/v1alpha3,GitlabSource,DiscoverTags
API rule violation: names_match,kubesphere.io/api/devops/v1alpha3,GitlabSource,RegexFilter
API rule violation: names_match,kubesphere.io/api/devops/v1alpha3,GitlabSource,ScmId
API rule violation: names_match,kubesphere.io/api/devops/v1alpha3,GitlabSource,ServerName
API rule violation: names_match,kubesphere.io/api/devops/v1alpha3,MultiBranchJobTrigger,CreateActionJobsToTrigger
API rule violation: names_match,kubesphere.io/api/devops/v1alpha3,MultiBranchJobTrigger,DeleteActionJobsToTrigger
API rule violation: names_match,kubesphere.io/api/devops/v1alpha3,MultiBranchPipeline,BitbucketServerSource
API rule violation: names_match,kubesphere.io/api/devops/v1alpha3,MultiBranchPipeline,GitHubSource
API rule violation: names_match,kubesphere.io/api/devops/v1alpha3,MultiBranchPipeline,GitSource
API rule violation: names_match,kubesphere.io/api/devops/v1alpha3,MultiBranchPipeline,GitlabSource
API rule violation: names_match,kubesphere.io/api/devops/v1alpha3,MultiBranchPipeline,MultiBranchJobTrigger
API rule violation: names_match,kubesphere.io/api/devops/v1alpha3,MultiBranchPipeline,ScriptPath
API rule violation: names_match,kubesphere.io/api/devops/v1alpha3,MultiBranchPipeline,SingleSvnSource
API rule violation: names_match,kubesphere.io/api/devops/v1alpha3,MultiBranchPipeline,SourceType
API rule violation: names_match,kubesphere.io/api/devops/v1alpha3,MultiBranchPipeline,SvnSource
API rule violation: names_match,kubesphere.io/api/devops/v1alpha3,MultiBranchPipeline,TimerTrigger
API rule violation: names_match,kubesphere.io/api/devops/v1alpha3,NoScmPipeline,DisableConcurrent
API rule violation: names_match,kubesphere.io/api/devops/v1alpha3,NoScmPipeline,RemoteTrigger
API rule violation: names_match,kubesphere.io/api/devops/v1alpha3,NoScmPipeline,TimerTrigger
API rule violation: names_match,kubesphere.io/api/devops/v1alpha3,Parameter,DefaultValue
API rule violation: names_match,kubesphere.io/api/devops/v1alpha3,PipelineSpec,MultiBranchPipeline
API rule violation: names_match,kubesphere.io/api/devops/v1alpha3,SingleSvnSource,CredentialId
API rule violation: names_match,kubesphere.io/api/devops/v1alpha3,SingleSvnSource,ScmId
API rule violation: names_match,kubesphere.io/api/devops/v1alpha3,SvnSource,CredentialId
API rule violation: names_match,kubesphere.io/api/devops/v1alpha3,SvnSource,ScmId

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -1,18 +0,0 @@
# Copyright 2018 The KubeSphere Authors. All rights reserved.
# Use of this source code is governed by a Apache license
# that can be found in the LICENSE file.
# Copyright 2018 The KubeSphere Authors. All rights reserved.
# Use of this source code is governed by a Apache license
# that can be found in the LICENSE file.
FROM golang:1.12 as hypersphere-builder
COPY / /go/src/kubesphere.io/kubesphere
WORKDIR /go/src/kubesphere.io/kubesphere
RUN CGO_ENABLED=0 GO111MODULE=on GOOS=linux GOARCH=amd64 GOFLAGS=-mod=vendor go build -i -ldflags '-w -s' -o hypersphere cmd/hypersphere/hypersphere.go
FROM alpine:3.9
RUN apk add --update ca-certificates && update-ca-certificates
COPY --from=hypersphere-builder /go/src/kubesphere.io/kubesphere/hypersphere /usr/local/bin/
CMD ["sh"]

View File

@@ -1,20 +0,0 @@
# Copyright 2018 The KubeSphere Authors. All rights reserved.
# Use of this source code is governed by a Apache license
# that can be found in the LICENSE file.
# Copyright 2018 The KubeSphere Authors. All rights reserved.
# Use of this source code is governed by a Apache license
# that can be found in the LICENSE file.
FROM golang:1.12 as ks-apigateway-builder
COPY / /go/src/kubesphere.io/kubesphere
WORKDIR /go/src/kubesphere.io/kubesphere
RUN CGO_ENABLED=0 GO111MODULE=on GOOS=linux GOARCH=amd64 GOFLAGS=-mod=vendor go build -i -ldflags '-w -s' -o ks-apigateway cmd/ks-apigateway/apiserver.go && \
go run tools/cmd/doc-gen/main.go --output=install/swagger-ui/api.json
FROM alpine:3.9
RUN apk add --update ca-certificates && update-ca-certificates
COPY --from=ks-apigateway-builder /go/src/kubesphere.io/kubesphere/ks-apigateway /usr/local/bin/
COPY --from=ks-apigateway-builder /go/src/kubesphere.io/kubesphere/install/swagger-ui /var/static/swagger-ui
CMD ["sh"]

View File

@@ -1,18 +1,48 @@
# Copyright 2018 The KubeSphere Authors. All rights reserved.
# Use of this source code is governed by a Apache license
# Copyright 2020 The KubeSphere Authors. All rights reserved.
# Use of this source code is governed by an Apache license
# that can be found in the LICENSE file.
# Copyright 2018 The KubeSphere Authors. All rights reserved.
# Use of this source code is governed by a Apache license
# that can be found in the LICENSE file.
FROM golang:1.12 as ks-apiserver-builder
# Download dependencies
FROM alpine:3.11 as base_os_context
COPY / /go/src/kubesphere.io/kubesphere
ARG TARGETARCH
ARG TARGETOS
ARG HELM_VERSION=v3.5.2
WORKDIR /go/src/kubesphere.io/kubesphere
RUN CGO_ENABLED=0 GO111MODULE=on GOOS=linux GOARCH=amd64 GOFLAGS=-mod=vendor go build -i -ldflags '-w -s' -o ks-apiserver cmd/ks-apiserver/apiserver.go
ENV OUTDIR=/out
RUN mkdir -p ${OUTDIR}/usr/local/bin/
FROM alpine:3.9
RUN apk add --update ca-certificates && update-ca-certificates
COPY --from=ks-apiserver-builder /go/src/kubesphere.io/kubesphere/ks-apiserver /usr/local/bin/
WORKDIR /tmp
RUN apk add --no-cache ca-certificates
# install helm
ADD https://get.helm.sh/helm-${HELM_VERSION}-${TARGETOS}-${TARGETARCH}.tar.gz /tmp
RUN tar xvzf /tmp/helm-${HELM_VERSION}-${TARGETOS}-${TARGETARCH}.tar.gz -C /tmp
RUN mv /tmp/${TARGETOS}-${TARGETARCH}/helm ${OUTDIR}/usr/local/bin/
# Build
FROM golang:1.16.3 as build_context
ENV OUTDIR=/out
RUN mkdir -p ${OUTDIR}/usr/local/bin/
WORKDIR /workspace
ADD . /workspace/
RUN make ks-apiserver
RUN mv /workspace/bin/cmd/ks-apiserver ${OUTDIR}/usr/local/bin/
##############
# Final image
#############
FROM alpine:3.11
COPY --from=base_os_context /out/ /
COPY --from=build_context /out/ /
WORKDIR /
EXPOSE 9090
CMD ["sh"]

View File

@@ -1,18 +1,67 @@
# Copyright 2018 The KubeSphere Authors. All rights reserved.
# Use of this source code is governed by a Apache license
# Copyright 2020 The KubeSphere Authors. All rights reserved.
# Use of this source code is governed by an Apache license
# that can be found in the LICENSE file.
# Copyright 2018 The KubeSphere Authors. All rights reserved.
# Use of this source code is governed by a Apache license
# that can be found in the LICENSE file.
FROM golang:1.12 as controller-manager-builder
# Download dependencies
FROM alpine:3.11 as base_os_context
COPY / /go/src/kubesphere.io/kubesphere
WORKDIR /go/src/kubesphere.io/kubesphere
ARG TARGETARCH
ARG TARGETOS
ARG HELM_VERSION=v3.5.2
ARG KUSTOMIZE_VERSION=v4.2.0
ARG INGRESS_NGINX_VERSION=3.35.0
RUN CGO_ENABLED=0 GO111MODULE=on GOOS=linux GOARCH=amd64 GOFLAGS=-mod=vendor go build --ldflags "-extldflags -static" -o controller-manager ./cmd/controller-manager/
ENV OUTDIR=/out
RUN mkdir -p ${OUTDIR}/usr/local/bin
RUN mkdir -p ${OUTDIR}/var/helm-charts
FROM alpine:3.7
RUN apk add --update ca-certificates && update-ca-certificates
COPY --from=controller-manager-builder /go/src/kubesphere.io/kubesphere/controller-manager /usr/local/bin/
CMD controller-manager
WORKDIR /tmp
RUN apk add --no-cache ca-certificates
# Install helm
ADD https://get.helm.sh/helm-${HELM_VERSION}-${TARGETOS}-${TARGETARCH}.tar.gz /tmp
RUN tar xvzf /tmp/helm-${HELM_VERSION}-${TARGETOS}-${TARGETARCH}.tar.gz -C /tmp
RUN mv /tmp/${TARGETOS}-${TARGETARCH}/helm ${OUTDIR}/usr/local/bin/
# install kustomize
ADD https://github.com/kubernetes-sigs/kustomize/releases/download/kustomize%2F${KUSTOMIZE_VERSION}/kustomize_${KUSTOMIZE_VERSION}_${TARGETOS}_${TARGETARCH}.tar.gz /tmp
RUN tar xvzf /tmp/kustomize_${KUSTOMIZE_VERSION}_linux_${TARGETARCH}.tar.gz -C /tmp
RUN mv /tmp/kustomize ${OUTDIR}/usr/local/bin/
# Install Nginx Ingress Helm Chart
ADD https://github.com/kubernetes/ingress-nginx/releases/download/helm-chart-${INGRESS_NGINX_VERSION}/ingress-nginx-${INGRESS_NGINX_VERSION}.tgz /tmp
RUN tar xvzf /tmp/ingress-nginx-${INGRESS_NGINX_VERSION}.tgz -C /tmp
RUN mv /tmp/ingress-nginx ${OUTDIR}/var/helm-charts/
# Build
FROM golang:1.16.3 as build_context
ENV OUTDIR=/out
RUN mkdir -p ${OUTDIR}/usr/local/bin/
RUN mkdir -p ${OUTDIR}/var/helm-charts
WORKDIR /workspace
ADD . /workspace/
RUN make ks-controller-manager
RUN mv /workspace/bin/cmd/controller-manager ${OUTDIR}/usr/local/bin/
# Copy gateway config and helm chart
RUN mv /workspace/config/gateway ${OUTDIR}/var/helm-charts/
RUN mv /workspace/config/watches.yaml ${OUTDIR}/var/helm-charts/
# Final Image
FROM alpine:3.11
COPY --from=base_os_context /out/ /
COPY --from=build_context /out/ /
WORKDIR /
EXPOSE 8443 8080
CMD ["sh"]

View File

@@ -1,18 +0,0 @@
# Copyright 2018 The KubeSphere Authors. All rights reserved.
# Use of this source code is governed by a Apache license
# that can be found in the LICENSE file.
# Copyright 2018 The KubeSphere Authors. All rights reserved.
# Use of this source code is governed by a Apache license
# that can be found in the LICENSE file.
FROM golang:1.12 as ks-iam-builder
COPY / /go/src/kubesphere.io/kubesphere
WORKDIR /go/src/kubesphere.io/kubesphere
RUN CGO_ENABLED=0 GO111MODULE=on GOOS=linux GOARCH=amd64 GOFLAGS=-mod=vendor go build -i -ldflags '-w -s' -o ks-iam cmd/ks-iam/apiserver.go
FROM alpine:3.9
RUN apk add --update ca-certificates && update-ca-certificates
COPY --from=ks-iam-builder /go/src/kubesphere.io/kubesphere/ks-iam /usr/local/bin/
CMD ["sh"]

View File

@@ -1,4 +0,0 @@
FROM gcr.io/distroless/static:latest
WORKDIR /
COPY ks-network .
ENTRYPOINT ["/ks-network"]

View File

@@ -1,154 +1,240 @@
/*
Copyright 2019 The KubeSphere Authors.
Copyright 2019 The KubeSphere Authors.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
package app
import (
"k8s.io/client-go/informers"
"k8s.io/client-go/kubernetes"
"k8s.io/client-go/rest"
"kubesphere.io/kubesphere/pkg/controller/application"
"kubesphere.io/kubesphere/pkg/controller/destinationrule"
"kubesphere.io/kubesphere/pkg/controller/job"
"kubesphere.io/kubesphere/pkg/controller/s2ibinary"
"kubesphere.io/kubesphere/pkg/controller/s2irun"
"kubesphere.io/kubesphere/pkg/controller/storage/expansion"
//"kubesphere.io/kubesphere/pkg/controller/job"
"kubesphere.io/kubesphere/pkg/controller/virtualservice"
"k8s.io/client-go/tools/cache"
"k8s.io/klog"
runtimeclient "sigs.k8s.io/controller-runtime/pkg/client"
"sigs.k8s.io/controller-runtime/pkg/manager"
"time"
"sigs.k8s.io/kubefed/pkg/controller/util"
logf "sigs.k8s.io/controller-runtime/pkg/runtime/log"
"kubesphere.io/kubesphere/pkg/controller/storage/snapshotclass"
istioclientset "github.com/knative/pkg/client/clientset/versioned"
istioinformers "github.com/knative/pkg/client/informers/externalversions"
applicationclientset "github.com/kubernetes-sigs/application/pkg/client/clientset/versioned"
applicationinformers "github.com/kubernetes-sigs/application/pkg/client/informers/externalversions"
s2iclientset "github.com/kubesphere/s2ioperator/pkg/client/clientset/versioned"
s2iinformers "github.com/kubesphere/s2ioperator/pkg/client/informers/externalversions"
kubesphereclientset "kubesphere.io/kubesphere/pkg/client/clientset/versioned"
kubesphereinformers "kubesphere.io/kubesphere/pkg/client/informers/externalversions"
"kubesphere.io/kubesphere/pkg/apiserver/authentication"
iamv1alpha2 "kubesphere.io/api/iam/v1alpha2"
"kubesphere.io/kubesphere/pkg/controller/certificatesigningrequest"
"kubesphere.io/kubesphere/pkg/controller/cluster"
"kubesphere.io/kubesphere/pkg/controller/clusterrolebinding"
"kubesphere.io/kubesphere/pkg/controller/destinationrule"
"kubesphere.io/kubesphere/pkg/controller/globalrole"
"kubesphere.io/kubesphere/pkg/controller/globalrolebinding"
"kubesphere.io/kubesphere/pkg/controller/group"
"kubesphere.io/kubesphere/pkg/controller/groupbinding"
"kubesphere.io/kubesphere/pkg/controller/job"
"kubesphere.io/kubesphere/pkg/controller/loginrecord"
"kubesphere.io/kubesphere/pkg/controller/network/ippool"
"kubesphere.io/kubesphere/pkg/controller/network/nsnetworkpolicy"
"kubesphere.io/kubesphere/pkg/controller/network/nsnetworkpolicy/provider"
"kubesphere.io/kubesphere/pkg/controller/notification"
"kubesphere.io/kubesphere/pkg/controller/storage/capability"
"kubesphere.io/kubesphere/pkg/controller/virtualservice"
"kubesphere.io/kubesphere/pkg/informers"
"kubesphere.io/kubesphere/pkg/simple/client/devops"
"kubesphere.io/kubesphere/pkg/simple/client/k8s"
ldapclient "kubesphere.io/kubesphere/pkg/simple/client/ldap"
"kubesphere.io/kubesphere/pkg/simple/client/multicluster"
"kubesphere.io/kubesphere/pkg/simple/client/network"
ippoolclient "kubesphere.io/kubesphere/pkg/simple/client/network/ippool"
"kubesphere.io/kubesphere/pkg/simple/client/s3"
)
const defaultResync = 600 * time.Second
func addControllers(
mgr manager.Manager,
client k8s.Client,
informerFactory informers.InformerFactory,
devopsClient devops.Interface,
s3Client s3.Interface,
ldapClient ldapclient.Interface,
options *k8s.KubernetesOptions,
authenticationOptions *authentication.Options,
multiClusterOptions *multicluster.Options,
networkOptions *network.Options,
serviceMeshEnabled bool,
kubectlImage string,
stopCh <-chan struct{}) error {
var log = logf.Log.WithName("controller-manager")
kubernetesInformer := informerFactory.KubernetesSharedInformerFactory()
istioInformer := informerFactory.IstioSharedInformerFactory()
kubesphereInformer := informerFactory.KubeSphereSharedInformerFactory()
func AddControllers(mgr manager.Manager, cfg *rest.Config, stopCh <-chan struct{}) error {
multiClusterEnabled := multiClusterOptions.Enable
kubeClient, err := kubernetes.NewForConfig(cfg)
if err != nil {
log.Error(err, "building kubernetes client failed")
var vsController, drController manager.Runnable
if serviceMeshEnabled {
vsController = virtualservice.NewVirtualServiceController(kubernetesInformer.Core().V1().Services(),
istioInformer.Networking().V1alpha3().VirtualServices(),
istioInformer.Networking().V1alpha3().DestinationRules(),
kubesphereInformer.Servicemesh().V1alpha2().Strategies(),
client.Kubernetes(),
client.Istio(),
client.KubeSphere())
drController = destinationrule.NewDestinationRuleController(kubernetesInformer.Apps().V1().Deployments(),
istioInformer.Networking().V1alpha3().DestinationRules(),
kubernetesInformer.Core().V1().Services(),
kubesphereInformer.Servicemesh().V1alpha2().ServicePolicies(),
client.Kubernetes(),
client.Istio(),
client.KubeSphere())
}
istioclient, err := istioclientset.NewForConfig(cfg)
if err != nil {
log.Error(err, "create istio client failed")
return err
jobController := job.NewJobController(kubernetesInformer.Batch().V1().Jobs(), client.Kubernetes())
storageCapabilityController := capability.NewController(
client.Kubernetes().StorageV1().StorageClasses(),
kubernetesInformer.Storage().V1().StorageClasses(),
kubernetesInformer.Storage().V1().CSIDrivers(),
)
volumeSnapshotController := snapshotclass.NewController(
kubernetesInformer.Storage().V1().StorageClasses(),
client.Snapshot().SnapshotV1().VolumeSnapshotClasses(),
informerFactory.SnapshotSharedInformerFactory().Snapshot().V1().VolumeSnapshotClasses(),
)
var fedGlobalRoleBindingCache, fedGlobalRoleCache cache.Store
var fedGlobalRoleBindingCacheController, fedGlobalRoleCacheController cache.Controller
if multiClusterEnabled {
fedGlobalRoleClient, err := util.NewResourceClient(client.Config(), &iamv1alpha2.FedGlobalRoleResource)
if err != nil {
klog.Error(err)
return err
}
fedGlobalRoleBindingClient, err := util.NewResourceClient(client.Config(), &iamv1alpha2.FedGlobalRoleBindingResource)
if err != nil {
klog.Error(err)
return err
}
fedGlobalRoleCache, fedGlobalRoleCacheController = util.NewResourceInformer(fedGlobalRoleClient, "", &iamv1alpha2.FedGlobalRoleResource, func(object runtimeclient.Object) {})
fedGlobalRoleBindingCache, fedGlobalRoleBindingCacheController = util.NewResourceInformer(fedGlobalRoleBindingClient, "", &iamv1alpha2.FedGlobalRoleBindingResource, func(object runtimeclient.Object) {})
go fedGlobalRoleCacheController.Run(stopCh)
go fedGlobalRoleBindingCacheController.Run(stopCh)
}
applicationClient, err := applicationclientset.NewForConfig(cfg)
if err != nil {
log.Error(err, "create application client failed")
return err
}
s2iclient, err := s2iclientset.NewForConfig(cfg)
if err != nil {
log.Error(err, "create s2i client failed")
return err
}
kubesphereclient, err := kubesphereclientset.NewForConfig(cfg)
if err != nil {
log.Error(err, "create kubesphere client failed")
return err
loginRecordController := loginrecord.NewLoginRecordController(
client.Kubernetes(),
client.KubeSphere(),
kubesphereInformer.Iam().V1alpha2().LoginRecords(),
kubesphereInformer.Iam().V1alpha2().Users(),
authenticationOptions.LoginHistoryRetentionPeriod,
authenticationOptions.LoginHistoryMaximumEntries)
csrController := certificatesigningrequest.NewController(client.Kubernetes(),
kubernetesInformer.Certificates().V1().CertificateSigningRequests(),
kubernetesInformer.Core().V1().ConfigMaps(), client.Config())
clusterRoleBindingController := clusterrolebinding.NewController(client.Kubernetes(),
kubernetesInformer.Rbac().V1().ClusterRoleBindings(),
kubernetesInformer.Apps().V1().Deployments(),
kubernetesInformer.Core().V1().Pods(),
kubesphereInformer.Iam().V1alpha2().Users(),
kubectlImage)
globalRoleController := globalrole.NewController(client.Kubernetes(), client.KubeSphere(),
kubesphereInformer.Iam().V1alpha2().GlobalRoles(), fedGlobalRoleCache, fedGlobalRoleCacheController)
globalRoleBindingController := globalrolebinding.NewController(client.Kubernetes(), client.KubeSphere(),
kubesphereInformer.Iam().V1alpha2().GlobalRoleBindings(),
fedGlobalRoleBindingCache, fedGlobalRoleBindingCacheController,
multiClusterEnabled)
groupBindingController := groupbinding.NewController(client.Kubernetes(), client.KubeSphere(),
kubesphereInformer.Iam().V1alpha2().GroupBindings(),
kubesphereInformer.Types().V1beta1().FederatedGroupBindings(),
multiClusterEnabled)
groupController := group.NewController(client.Kubernetes(), client.KubeSphere(),
kubesphereInformer.Iam().V1alpha2().Groups(),
kubesphereInformer.Types().V1beta1().FederatedGroups(),
multiClusterEnabled)
var clusterController manager.Runnable
if multiClusterEnabled {
clusterController = cluster.NewClusterController(
client.Kubernetes(),
client.Config(),
kubesphereInformer.Cluster().V1alpha1().Clusters(),
client.KubeSphere().ClusterV1alpha1().Clusters(),
multiClusterOptions.ClusterControllerResyncPeriod,
multiClusterOptions.HostClusterName)
}
informerFactory := informers.NewSharedInformerFactory(kubeClient, defaultResync)
istioInformer := istioinformers.NewSharedInformerFactory(istioclient, defaultResync)
applicationInformer := applicationinformers.NewSharedInformerFactory(applicationClient, defaultResync)
s2iInformer := s2iinformers.NewSharedInformerFactory(s2iclient, defaultResync)
var nsnpController manager.Runnable
if networkOptions.EnableNetworkPolicy {
nsnpProvider, err := provider.NewNsNetworkPolicyProvider(client.Kubernetes(), kubernetesInformer.Networking().V1().NetworkPolicies())
if err != nil {
return err
}
kubesphereInformer := kubesphereinformers.NewSharedInformerFactory(kubesphereclient, defaultResync)
nsnpController = nsnetworkpolicy.NewNSNetworkPolicyController(client.Kubernetes(),
client.KubeSphere().NetworkV1alpha1(),
kubesphereInformer.Network().V1alpha1().NamespaceNetworkPolicies(),
kubernetesInformer.Core().V1().Services(),
kubernetesInformer.Core().V1().Nodes(),
kubesphereInformer.Tenant().V1alpha1().Workspaces(),
kubernetesInformer.Core().V1().Namespaces(), nsnpProvider, networkOptions.NSNPOptions)
}
vsController := virtualservice.NewVirtualServiceController(informerFactory.Core().V1().Services(),
istioInformer.Networking().V1alpha3().VirtualServices(),
istioInformer.Networking().V1alpha3().DestinationRules(),
kubesphereInformer.Servicemesh().V1alpha2().Strategies(),
kubeClient,
istioclient,
kubesphereclient)
drController := destinationrule.NewDestinationRuleController(informerFactory.Apps().V1().Deployments(),
istioInformer.Networking().V1alpha3().DestinationRules(),
informerFactory.Core().V1().Services(),
kubesphereInformer.Servicemesh().V1alpha2().ServicePolicies(),
kubeClient,
istioclient,
kubesphereclient)
apController := application.NewApplicationController(informerFactory.Core().V1().Services(),
informerFactory.Apps().V1().Deployments(),
informerFactory.Apps().V1().StatefulSets(),
kubesphereInformer.Servicemesh().V1alpha2().Strategies(),
kubesphereInformer.Servicemesh().V1alpha2().ServicePolicies(),
applicationInformer.App().V1beta1().Applications(),
kubeClient,
applicationClient)
jobController := job.NewJobController(informerFactory.Batch().V1().Jobs(), kubeClient)
s2iBinaryController := s2ibinary.NewController(kubesphereclient,
kubeClient,
kubesphereInformer.Devops().V1alpha1().S2iBinaries())
s2iRunController := s2irun.NewController(kubesphereclient, s2iclient, kubeClient,
kubesphereInformer.Devops().V1alpha1().S2iBinaries(),
s2iInformer.Devops().V1alpha1().S2iRuns())
volumeExpansionController := expansion.NewVolumeExpansionController(
kubeClient,
informerFactory.Core().V1().PersistentVolumeClaims(),
informerFactory.Storage().V1().StorageClasses(),
informerFactory.Core().V1().Pods(),
informerFactory.Apps().V1().Deployments(),
informerFactory.Apps().V1().ReplicaSets(),
informerFactory.Apps().V1().StatefulSets())
kubesphereInformer.Start(stopCh)
istioInformer.Start(stopCh)
informerFactory.Start(stopCh)
applicationInformer.Start(stopCh)
s2iInformer.Start(stopCh)
var ippoolController manager.Runnable
ippoolProvider := ippoolclient.NewProvider(kubernetesInformer, client.KubeSphere(), client.Kubernetes(), networkOptions.IPPoolType, options)
if ippoolProvider != nil {
ippoolController = ippool.NewIPPoolController(kubesphereInformer, kubernetesInformer, client.Kubernetes(), client.KubeSphere(), ippoolProvider)
}
controllers := map[string]manager.Runnable{
"virtualservice-controller": vsController,
"destinationrule-controller": drController,
"application-controller": apController,
"job-controller": jobController,
"s2ibinary-controller": s2iBinaryController,
"s2irun-controller": s2iRunController,
"volumeexpansion-controller": volumeExpansionController,
"virtualservice-controller": vsController,
"destinationrule-controller": drController,
"job-controller": jobController,
"storagecapability-controller": storageCapabilityController,
"volumesnapshot-controller": volumeSnapshotController,
"loginrecord-controller": loginRecordController,
"cluster-controller": clusterController,
"nsnp-controller": nsnpController,
"csr-controller": csrController,
"clusterrolebinding-controller": clusterRoleBindingController,
"globalrolebinding-controller": globalRoleBindingController,
"ippool-controller": ippoolController,
"groupbinding-controller": groupBindingController,
"group-controller": groupController,
}
if multiClusterEnabled {
controllers["globalrole-controller"] = globalRoleController
notificationController, err := notification.NewController(client.Kubernetes(), mgr.GetClient(), mgr.GetCache())
if err != nil {
return err
}
controllers["notification-controller"] = notificationController
}
for name, ctrl := range controllers {
err = mgr.Add(ctrl)
if err != nil {
log.Error(err, "add controller to manager failed", "name", name)
if ctrl == nil {
klog.V(4).Infof("%s is not going to run due to dependent component disabled.", name)
continue
}
if err := mgr.Add(ctrl); err != nil {
klog.Error(err, "add controller to manager failed", "name", name)
return err
}
}

View File

@@ -1,21 +1,39 @@
/*
Copyright 2020 KubeSphere Authors
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
package app
import (
"context"
"fmt"
"net/http"
"time"
"k8s.io/apiextensions-apiserver/pkg/client/clientset/clientset"
"k8s.io/apimachinery/pkg/util/wait"
"k8s.io/klog"
"net/http"
"time"
)
// WaitForAPIServer waits for the API Server's /healthz endpoint to report "ok" with timeout.
// WaitForAPIServer waits for the API Server's /healthz endpoint to report "ok" before timeout.
func WaitForAPIServer(client clientset.Interface, timeout time.Duration) error {
var lastErr error
err := wait.PollImmediate(time.Second, timeout, func() (bool, error) {
healthStatus := 0
result := client.Discovery().RESTClient().Get().AbsPath("/healthz").Do().StatusCode(&healthStatus)
result := client.Discovery().RESTClient().Get().AbsPath("/healthz").Do(context.Background()).StatusCode(&healthStatus)
if result.Error() != nil {
lastErr = fmt.Errorf("failed to get apiserver /healthz status: %v", result.Error())
return false, nil

View File

@@ -1,65 +1,125 @@
/*
Copyright 2020 KubeSphere Authors
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
package options
import (
"flag"
v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
apiserverconfig "k8s.io/apiserver/pkg/apis/config"
cliflag "k8s.io/component-base/cli/flag"
"k8s.io/klog"
"k8s.io/kubernetes/pkg/client/leaderelectionconfig"
kubesphereconfig "kubesphere.io/kubesphere/pkg/server/config"
"kubesphere.io/kubesphere/pkg/simple/client/devops"
"kubesphere.io/kubesphere/pkg/simple/client/k8s"
"kubesphere.io/kubesphere/pkg/simple/client/openpitrix"
"kubesphere.io/kubesphere/pkg/simple/client/s2is3"
"strings"
"time"
"kubesphere.io/kubesphere/pkg/apiserver/authentication"
"k8s.io/apimachinery/pkg/labels"
"github.com/spf13/pflag"
"k8s.io/client-go/tools/leaderelection"
cliflag "k8s.io/component-base/cli/flag"
"k8s.io/klog"
"kubesphere.io/kubesphere/pkg/simple/client/devops/jenkins"
"kubesphere.io/kubesphere/pkg/simple/client/gateway"
"kubesphere.io/kubesphere/pkg/simple/client/k8s"
ldapclient "kubesphere.io/kubesphere/pkg/simple/client/ldap"
"kubesphere.io/kubesphere/pkg/simple/client/multicluster"
"kubesphere.io/kubesphere/pkg/simple/client/network"
"kubesphere.io/kubesphere/pkg/simple/client/openpitrix"
"kubesphere.io/kubesphere/pkg/simple/client/s3"
"kubesphere.io/kubesphere/pkg/simple/client/servicemesh"
)
type KubeSphereControllerManagerOptions struct {
KubernetesOptions *k8s.KubernetesOptions
DevopsOptions *devops.DevopsOptions
S3Options *s2is3.S3Options
OpenPitrixOptions *openpitrix.OpenPitrixOptions
KubernetesOptions *k8s.KubernetesOptions
DevopsOptions *jenkins.Options
S3Options *s3.Options
AuthenticationOptions *authentication.Options
LdapOptions *ldapclient.Options
OpenPitrixOptions *openpitrix.Options
NetworkOptions *network.Options
MultiClusterOptions *multicluster.Options
ServiceMeshOptions *servicemesh.Options
GatewayOptions *gateway.Options
LeaderElect bool
LeaderElection *leaderelection.LeaderElectionConfig
WebhookCertDir string
LeaderElection *apiserverconfig.LeaderElectionConfiguration
// KubeSphere is using sigs.k8s.io/application as fundamental object to implement Application Management.
// There are other projects also built on sigs.k8s.io/application, when KubeSphere installed along side
// them, conflicts happen. So we leave an option to only reconcile applications matched with the given
// selector. Default will reconcile all applications.
// For example
// "kubesphere.io/creator=" means reconcile applications with this label key
// "!kubesphere.io/creator" means exclude applications with this key
ApplicationSelector string
}
func NewKubeSphereControllerManagerOptions() *KubeSphereControllerManagerOptions {
s := &KubeSphereControllerManagerOptions{
KubernetesOptions: k8s.NewKubernetesOptions(),
DevopsOptions: devops.NewDevopsOptions(),
S3Options: s2is3.NewS3Options(),
OpenPitrixOptions: openpitrix.NewOpenPitrixOptions(),
LeaderElection: &apiserverconfig.LeaderElectionConfiguration{
LeaderElect: false,
LeaseDuration: v1.Duration{Duration: 30 * time.Second},
RenewDeadline: v1.Duration{Duration: 15 * time.Second},
RetryPeriod: v1.Duration{Duration: 5 * time.Second},
ResourceLock: "ks-controller-manager-leader-election",
KubernetesOptions: k8s.NewKubernetesOptions(),
DevopsOptions: jenkins.NewDevopsOptions(),
S3Options: s3.NewS3Options(),
LdapOptions: ldapclient.NewOptions(),
OpenPitrixOptions: openpitrix.NewOptions(),
NetworkOptions: network.NewNetworkOptions(),
MultiClusterOptions: multicluster.NewOptions(),
ServiceMeshOptions: servicemesh.NewServiceMeshOptions(),
AuthenticationOptions: authentication.NewOptions(),
GatewayOptions: gateway.NewGatewayOptions(),
LeaderElection: &leaderelection.LeaderElectionConfig{
LeaseDuration: 30 * time.Second,
RenewDeadline: 15 * time.Second,
RetryPeriod: 5 * time.Second,
},
LeaderElect: false,
WebhookCertDir: "",
ApplicationSelector: "",
}
return s
}
func (s *KubeSphereControllerManagerOptions) ApplyTo(conf *kubesphereconfig.Config) {
s.S3Options.ApplyTo(conf.S3Options)
s.KubernetesOptions.ApplyTo(conf.KubernetesOptions)
s.DevopsOptions.ApplyTo(conf.DevopsOptions)
s.OpenPitrixOptions.ApplyTo(conf.OpenPitrixOptions)
}
func (s *KubeSphereControllerManagerOptions) Flags() cliflag.NamedFlagSets {
fss := cliflag.NamedFlagSets{}
s.KubernetesOptions.AddFlags(fss.FlagSet("kubernetes"))
s.DevopsOptions.AddFlags(fss.FlagSet("devops"))
s.S3Options.AddFlags(fss.FlagSet("s3"))
s.OpenPitrixOptions.AddFlags(fss.FlagSet("openpitrix"))
s.KubernetesOptions.AddFlags(fss.FlagSet("kubernetes"), s.KubernetesOptions)
s.DevopsOptions.AddFlags(fss.FlagSet("devops"), s.DevopsOptions)
s.S3Options.AddFlags(fss.FlagSet("s3"), s.S3Options)
s.AuthenticationOptions.AddFlags(fss.FlagSet("authentication"), s.AuthenticationOptions)
s.LdapOptions.AddFlags(fss.FlagSet("ldap"), s.LdapOptions)
s.OpenPitrixOptions.AddFlags(fss.FlagSet("openpitrix"), s.OpenPitrixOptions)
s.NetworkOptions.AddFlags(fss.FlagSet("network"), s.NetworkOptions)
s.MultiClusterOptions.AddFlags(fss.FlagSet("multicluster"), s.MultiClusterOptions)
s.ServiceMeshOptions.AddFlags(fss.FlagSet("servicemesh"), s.ServiceMeshOptions)
s.GatewayOptions.AddFlags(fss.FlagSet("gateway"), s.GatewayOptions)
fs := fss.FlagSet("leaderelection")
leaderelectionconfig.BindFlags(s.LeaderElection, fs)
s.bindLeaderElectionFlags(s.LeaderElection, fs)
fs.BoolVar(&s.LeaderElect, "leader-elect", s.LeaderElect, ""+
"Whether to enable leader election. This field should be enabled when controller manager"+
"deployed with multiple replicas.")
fs.StringVar(&s.WebhookCertDir, "webhook-cert-dir", s.WebhookCertDir, ""+
"Certificate directory used to setup webhooks, need tls.crt and tls.key placed inside."+
"if not set, webhook server would look up the server key and certificate in"+
"{TempDir}/k8s-webhook-server/serving-certs")
gfs := fss.FlagSet("generic")
gfs.StringVar(&s.ApplicationSelector, "application-selector", s.ApplicationSelector, ""+
"Only reconcile application(sigs.k8s.io/application) objects match given selector, this could avoid conflicts with "+
"other projects built on top of sig-application. Default behavior is to reconcile all of application objects.")
kfs := fss.FlagSet("klog")
local := flag.NewFlagSet("klog", flag.ExitOnError)
@@ -78,5 +138,32 @@ func (s *KubeSphereControllerManagerOptions) Validate() []error {
errs = append(errs, s.KubernetesOptions.Validate()...)
errs = append(errs, s.S3Options.Validate()...)
errs = append(errs, s.OpenPitrixOptions.Validate()...)
errs = append(errs, s.NetworkOptions.Validate()...)
errs = append(errs, s.LdapOptions.Validate()...)
errs = append(errs, s.MultiClusterOptions.Validate()...)
if len(s.ApplicationSelector) != 0 {
_, err := labels.Parse(s.ApplicationSelector)
if err != nil {
errs = append(errs, err)
}
}
return errs
}
func (s *KubeSphereControllerManagerOptions) bindLeaderElectionFlags(l *leaderelection.LeaderElectionConfig, fs *pflag.FlagSet) {
fs.DurationVar(&l.LeaseDuration, "leader-elect-lease-duration", l.LeaseDuration, ""+
"The duration that non-leader candidates will wait after observing a leadership "+
"renewal until attempting to acquire leadership of a led but unrenewed leader "+
"slot. This is effectively the maximum duration that a leader can be stopped "+
"before it is replaced by another candidate. This is only applicable if leader "+
"election is enabled.")
fs.DurationVar(&l.RenewDeadline, "leader-elect-renew-deadline", l.RenewDeadline, ""+
"The interval between attempts by the acting master to renew a leadership slot "+
"before it stops leading. This must be less than or equal to the lease duration. "+
"This is only applicable if leader election is enabled.")
fs.DurationVar(&l.RetryPeriod, "leader-elect-retry-period", l.RetryPeriod, ""+
"The duration the clients should wait between attempting acquisition and renewal "+
"of a leadership. This is only applicable if leader election is enabled.")
}

View File

@@ -1,19 +1,17 @@
/*
Copyright 2019 The KubeSphere Authors.
Copyright 2019 The KubeSphere Authors.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
package app
@@ -21,52 +19,90 @@ package app
import (
"context"
"fmt"
"os"
"kubesphere.io/kubesphere/pkg/models/kubeconfig"
"github.com/spf13/cobra"
v1 "k8s.io/api/core/v1"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/labels"
utilerrors "k8s.io/apimachinery/pkg/util/errors"
"k8s.io/apimachinery/pkg/util/uuid"
"k8s.io/client-go/tools/leaderelection"
"k8s.io/client-go/tools/leaderelection/resourcelock"
"k8s.io/client-go/tools/record"
cliflag "k8s.io/component-base/cli/flag"
"k8s.io/klog"
"k8s.io/klog/klogr"
ctrl "sigs.k8s.io/controller-runtime"
"sigs.k8s.io/controller-runtime/pkg/manager"
"sigs.k8s.io/controller-runtime/pkg/manager/signals"
"sigs.k8s.io/controller-runtime/pkg/webhook"
"kubesphere.io/kubesphere/cmd/controller-manager/app/options"
"kubesphere.io/kubesphere/pkg/apis"
"kubesphere.io/kubesphere/pkg/client/clientset/versioned/scheme"
"kubesphere.io/kubesphere/pkg/controller"
controllerconfig "kubesphere.io/kubesphere/pkg/server/config"
"kubesphere.io/kubesphere/pkg/simple/client"
controllerconfig "kubesphere.io/kubesphere/pkg/apiserver/config"
"kubesphere.io/kubesphere/pkg/controller/application"
"kubesphere.io/kubesphere/pkg/controller/helm"
"kubesphere.io/kubesphere/pkg/controller/namespace"
"kubesphere.io/kubesphere/pkg/controller/network/webhooks"
"kubesphere.io/kubesphere/pkg/controller/openpitrix/helmapplication"
"kubesphere.io/kubesphere/pkg/controller/openpitrix/helmcategory"
"kubesphere.io/kubesphere/pkg/controller/openpitrix/helmrelease"
"kubesphere.io/kubesphere/pkg/controller/openpitrix/helmrepo"
"kubesphere.io/kubesphere/pkg/controller/quota"
"kubesphere.io/kubesphere/pkg/controller/serviceaccount"
"kubesphere.io/kubesphere/pkg/controller/user"
"kubesphere.io/kubesphere/pkg/controller/workspace"
"kubesphere.io/kubesphere/pkg/controller/workspacerole"
"kubesphere.io/kubesphere/pkg/controller/workspacerolebinding"
"kubesphere.io/kubesphere/pkg/controller/workspacetemplate"
"kubesphere.io/kubesphere/pkg/informers"
"kubesphere.io/kubesphere/pkg/simple/client/devops"
"kubesphere.io/kubesphere/pkg/simple/client/devops/jenkins"
"kubesphere.io/kubesphere/pkg/simple/client/k8s"
ldapclient "kubesphere.io/kubesphere/pkg/simple/client/ldap"
"kubesphere.io/kubesphere/pkg/simple/client/s3"
"kubesphere.io/kubesphere/pkg/utils/metrics"
"kubesphere.io/kubesphere/pkg/utils/term"
"os"
"sigs.k8s.io/controller-runtime/pkg/manager"
"sigs.k8s.io/controller-runtime/pkg/runtime/signals"
"kubesphere.io/kubesphere/pkg/version"
)
func NewControllerManagerCommand() *cobra.Command {
s := options.NewKubeSphereControllerManagerOptions()
conf, err := controllerconfig.TryLoadFromDisk()
if err == nil {
// make sure LeaderElection is not nil
s = &options.KubeSphereControllerManagerOptions{
KubernetesOptions: conf.KubernetesOptions,
DevopsOptions: conf.DevopsOptions,
S3Options: conf.S3Options,
AuthenticationOptions: conf.AuthenticationOptions,
LdapOptions: conf.LdapOptions,
OpenPitrixOptions: conf.OpenPitrixOptions,
NetworkOptions: conf.NetworkOptions,
MultiClusterOptions: conf.MultiClusterOptions,
ServiceMeshOptions: conf.ServiceMeshOptions,
GatewayOptions: conf.GatewayOptions,
LeaderElection: s.LeaderElection,
LeaderElect: s.LeaderElect,
WebhookCertDir: s.WebhookCertDir,
}
} else {
klog.Fatal("Failed to load configuration from disk", err)
}
cmd := &cobra.Command{
Use: "controller-manager",
Long: `KubeSphere controller manager is a daemon that`,
Run: func(cmd *cobra.Command, args []string) {
err := controllerconfig.Load()
if err != nil {
klog.Fatal(err)
os.Exit(1)
}
s = Complete(s)
if errs := s.Validate(); len(errs) != 0 {
klog.Error(utilerrors.NewAggregate(errs))
os.Exit(1)
}
if err = Run(s, signals.SetupSignalHandler()); err != nil {
if err = run(s, signals.SetupSignalHandler()); err != nil {
klog.Error(err)
os.Exit(1)
}
},
SilenceUsage: true,
}
fs := cmd.Flags()
@@ -79,135 +115,258 @@ func NewControllerManagerCommand() *cobra.Command {
usageFmt := "Usage:\n %s\n"
cols, _, _ := term.TerminalSize(cmd.OutOrStdout())
cmd.SetHelpFunc(func(cmd *cobra.Command, args []string) {
fmt.Fprintf(cmd.OutOrStdout(), "%s\n\n"+usageFmt, cmd.Long, cmd.UseLine())
_, _ = fmt.Fprintf(cmd.OutOrStdout(), "%s\n\n"+usageFmt, cmd.Long, cmd.UseLine())
cliflag.PrintSections(cmd.OutOrStdout(), namedFlagSets, cols)
})
versionCmd := &cobra.Command{
Use: "version",
Short: "Print the version of KubeSphere controller-manager",
Run: func(cmd *cobra.Command, args []string) {
cmd.Println(version.Get())
},
}
cmd.AddCommand(versionCmd)
return cmd
}
func Complete(s *options.KubeSphereControllerManagerOptions) *options.KubeSphereControllerManagerOptions {
conf := controllerconfig.Get()
func run(s *options.KubeSphereControllerManagerOptions, ctx context.Context) error {
conf.Apply(&controllerconfig.Config{
DevopsOptions: s.DevopsOptions,
KubernetesOptions: s.KubernetesOptions,
S3Options: s.S3Options,
OpenPitrixOptions: s.OpenPitrixOptions,
})
out := &options.KubeSphereControllerManagerOptions{
KubernetesOptions: conf.KubernetesOptions,
DevopsOptions: conf.DevopsOptions,
S3Options: conf.S3Options,
OpenPitrixOptions: conf.OpenPitrixOptions,
LeaderElection: s.LeaderElection,
}
return out
}
func CreateClientSet(conf *controllerconfig.Config, stopCh <-chan struct{}) error {
csop := &client.ClientSetOptions{}
csop.SetKubernetesOptions(conf.KubernetesOptions).
SetDevopsOptions(conf.DevopsOptions).
SetS3Options(conf.S3Options).
SetOpenPitrixOptions(conf.OpenPitrixOptions).
SetKubeSphereOptions(conf.KubeSphereOptions)
client.NewClientSetFactory(csop, stopCh)
return nil
}
func Run(s *options.KubeSphereControllerManagerOptions, stopCh <-chan struct{}) error {
err := CreateClientSet(controllerconfig.Get(), stopCh)
kubernetesClient, err := k8s.NewKubernetesClient(s.KubernetesOptions)
if err != nil {
klog.Error(err)
klog.Errorf("Failed to create kubernetes clientset %v", err)
return err
}
config := client.ClientSets().K8s().Config()
run := func(ctx context.Context) {
klog.V(0).Info("setting up manager")
mgr, err := manager.New(config, manager.Options{})
var devopsClient devops.Interface
if s.DevopsOptions != nil && len(s.DevopsOptions.Host) != 0 {
devopsClient, err = jenkins.NewDevopsClient(s.DevopsOptions)
if err != nil {
klog.Fatalf("unable to set up overall controller manager: %v", err)
return fmt.Errorf("failed to connect jenkins, please check jenkins status, error: %v", err)
}
klog.V(0).Info("setting up scheme")
if err := apis.AddToScheme(mgr.GetScheme()); err != nil {
klog.Fatalf("unable add APIs to scheme: %v", err)
}
klog.V(0).Info("Setting up controllers")
if err := controller.AddToManager(mgr); err != nil {
klog.Fatalf("unable to register controllers to the manager: %v", err)
}
if err := AddControllers(mgr, config, stopCh); err != nil {
klog.Fatalf("unable to register controllers to the manager: %v", err)
}
klog.V(0).Info("Starting the Cmd.")
if err := mgr.Start(stopCh); err != nil {
klog.Fatalf("unable to run the manager: %v", err)
}
select {}
}
if !s.LeaderElection.LeaderElect {
run(context.TODO())
var ldapClient ldapclient.Interface
// when there is no ldapOption, we set ldapClient as nil, which means we don't need to sync user info into ldap.
if s.LdapOptions != nil && len(s.LdapOptions.Host) != 0 {
if s.LdapOptions.Host == ldapclient.FAKE_HOST { // for debug only
ldapClient = ldapclient.NewSimpleLdap()
} else {
ldapClient, err = ldapclient.NewLdapClient(s.LdapOptions, ctx.Done())
if err != nil {
return fmt.Errorf("failed to connect to ldap service, please check ldap status, error: %v", err)
}
}
} else {
klog.Warning("ks-controller-manager starts without ldap provided, it will not sync user into ldap")
}
ctx, cancel := context.WithCancel(context.Background())
defer cancel()
var s3Client s3.Interface
if s.S3Options != nil && len(s.S3Options.Endpoint) != 0 {
s3Client, err = s3.NewS3Client(s.S3Options)
if err != nil {
return fmt.Errorf("failed to connect to s3, please check s3 service status, error: %v", err)
}
}
go func() {
<-stopCh
cancel()
}()
informerFactory := informers.NewInformerFactories(
kubernetesClient.Kubernetes(),
kubernetesClient.KubeSphere(),
kubernetesClient.Istio(),
kubernetesClient.Snapshot(),
kubernetesClient.ApiExtensions(),
kubernetesClient.Prometheus())
id, err := os.Hostname()
mgrOptions := manager.Options{
CertDir: s.WebhookCertDir,
Port: 8443,
}
if s.LeaderElect {
mgrOptions = manager.Options{
CertDir: s.WebhookCertDir,
Port: 8443,
LeaderElection: s.LeaderElect,
LeaderElectionNamespace: "kubesphere-system",
LeaderElectionID: "ks-controller-manager-leader-election",
LeaseDuration: &s.LeaderElection.LeaseDuration,
RetryPeriod: &s.LeaderElection.RetryPeriod,
RenewDeadline: &s.LeaderElection.RenewDeadline,
}
}
klog.V(0).Info("setting up manager")
ctrl.SetLogger(klogr.New())
// Use 8443 instead of 443 cause we need root permission to bind port 443
mgr, err := manager.New(kubernetesClient.Config(), mgrOptions)
if err != nil {
return err
klog.Fatalf("unable to set up overall controller manager: %v", err)
}
// add a uniquifier so that two processes on the same host don't accidentally both become active
id = id + "_" + string(uuid.NewUUID())
if err = apis.AddToScheme(mgr.GetScheme()); err != nil {
klog.Fatalf("unable add APIs to scheme: %v", err)
}
// TODO: change lockType to lease
// once we finished moving to Kubernetes v1.16+, we
// change lockType to lease
lock, err := resourcelock.New("endpoints",
"kubesphere-system",
s.LeaderElection.ResourceLock,
client.ClientSets().K8s().Kubernetes().CoreV1(),
resourcelock.ResourceLockConfig{
Identity: id,
EventRecorder: record.NewBroadcaster().NewRecorder(scheme.Scheme, v1.EventSource{
Component: "ks-controller-manager",
}),
})
// register common meta types into schemas.
metav1.AddToGroupVersion(mgr.GetScheme(), metav1.SchemeGroupVersion)
kubeconfigClient := kubeconfig.NewOperator(kubernetesClient.Kubernetes(),
informerFactory.KubernetesSharedInformerFactory().Core().V1().ConfigMaps().Lister(),
kubernetesClient.Config())
userController := user.Reconciler{
MultiClusterEnabled: s.MultiClusterOptions.Enable,
MaxConcurrentReconciles: 4,
LdapClient: ldapClient,
DevopsClient: devopsClient,
KubeconfigClient: kubeconfigClient,
AuthenticationOptions: s.AuthenticationOptions,
}
if err = userController.SetupWithManager(mgr); err != nil {
klog.Fatalf("Unable to create user controller: %v", err)
}
workspaceTemplateReconciler := &workspacetemplate.Reconciler{MultiClusterEnabled: s.MultiClusterOptions.Enable}
if err = workspaceTemplateReconciler.SetupWithManager(mgr); err != nil {
klog.Fatalf("Unable to create workspace template controller: %v", err)
}
workspaceReconciler := &workspace.Reconciler{}
if err = workspaceReconciler.SetupWithManager(mgr); err != nil {
klog.Fatalf("Unable to create workspace controller: %v", err)
}
workspaceRoleReconciler := &workspacerole.Reconciler{MultiClusterEnabled: s.MultiClusterOptions.Enable}
if err = workspaceRoleReconciler.SetupWithManager(mgr); err != nil {
klog.Fatalf("Unable to create workspace role controller: %v", err)
}
workspaceRoleBindingReconciler := &workspacerolebinding.Reconciler{MultiClusterEnabled: s.MultiClusterOptions.Enable}
if err = workspaceRoleBindingReconciler.SetupWithManager(mgr); err != nil {
klog.Fatalf("Unable to create workspace role binding controller: %v", err)
}
namespaceReconciler := &namespace.Reconciler{}
if err = namespaceReconciler.SetupWithManager(mgr); err != nil {
klog.Fatalf("Unable to create namespace controller: %v", err)
}
err = helmrepo.Add(mgr)
if err != nil {
klog.Fatal("Unable to create helm repo controller")
}
err = helmcategory.Add(mgr)
if err != nil {
klog.Fatal("Unable to create helm category controller")
}
var opS3Client s3.Interface
if !s.OpenPitrixOptions.AppStoreConfIsEmpty() {
opS3Client, err = s3.NewS3Client(s.OpenPitrixOptions.S3Options)
if err != nil {
klog.Fatalf("failed to connect to s3, please check openpitrix s3 service status, error: %v", err)
}
err = (&helmapplication.ReconcileHelmApplication{}).SetupWithManager(mgr)
if err != nil {
klog.Fatalf("Unable to create helm application controller, error: %s", err)
}
err = (&helmapplication.ReconcileHelmApplicationVersion{}).SetupWithManager(mgr)
if err != nil {
klog.Fatalf("Unable to create helm application version controller, error: %s ", err)
}
}
err = (&helmrelease.ReconcileHelmRelease{
// nil interface is valid value.
StorageClient: opS3Client,
KsFactory: informerFactory.KubeSphereSharedInformerFactory(),
MultiClusterEnable: s.MultiClusterOptions.Enable,
WaitTime: s.OpenPitrixOptions.ReleaseControllerOptions.WaitTime,
MaxConcurrent: s.OpenPitrixOptions.ReleaseControllerOptions.MaxConcurrent,
StopChan: ctx.Done(),
}).SetupWithManager(mgr)
if err != nil {
klog.Fatalf("error creating lock: %v", err)
klog.Fatalf("Unable to create helm release controller, error: %s", err)
}
leaderelection.RunOrDie(ctx, leaderelection.LeaderElectionConfig{
Lock: lock,
LeaseDuration: s.LeaderElection.LeaseDuration.Duration,
RenewDeadline: s.LeaderElection.RenewDeadline.Duration,
RetryPeriod: s.LeaderElection.RetryPeriod.Duration,
Callbacks: leaderelection.LeaderCallbacks{
OnStartedLeading: run,
OnStoppedLeading: func() {
klog.Errorf("leadership lost")
os.Exit(0)
},
},
})
selector, _ := labels.Parse(s.ApplicationSelector)
applicationReconciler := &application.ApplicationReconciler{
Scheme: mgr.GetScheme(),
Client: mgr.GetClient(),
Mapper: mgr.GetRESTMapper(),
ApplicationSelector: selector,
}
if err = applicationReconciler.SetupWithManager(mgr); err != nil {
klog.Fatalf("Unable to create application controller: %v", err)
}
saReconciler := &serviceaccount.Reconciler{}
if err = saReconciler.SetupWithManager(mgr); err != nil {
klog.Fatalf("Unable to create ServiceAccount controller: %v", err)
}
resourceQuotaReconciler := quota.Reconciler{}
if err := resourceQuotaReconciler.SetupWithManager(mgr, quota.DefaultMaxConcurrentReconciles, quota.DefaultResyncPeriod, informerFactory.KubernetesSharedInformerFactory()); err != nil {
klog.Fatalf("Unable to create ResourceQuota controller: %v", err)
}
if !s.GatewayOptions.IsEmpty() {
helmReconciler := helm.Reconciler{GatewayOptions: s.GatewayOptions}
if err := helmReconciler.SetupWithManager(mgr); err != nil {
klog.Fatalf("Unable to create helm controller: %v", err)
}
}
// TODO(jeff): refactor config with CRD
servicemeshEnabled := s.ServiceMeshOptions != nil && len(s.ServiceMeshOptions.IstioPilotHost) != 0
if err = addControllers(mgr,
kubernetesClient,
informerFactory,
devopsClient,
s3Client,
ldapClient,
s.KubernetesOptions,
s.AuthenticationOptions,
s.MultiClusterOptions,
s.NetworkOptions,
servicemeshEnabled,
s.AuthenticationOptions.KubectlImage, ctx.Done()); err != nil {
klog.Fatalf("unable to register controllers to the manager: %v", err)
}
// Start cache data after all informer is registered
klog.V(0).Info("Starting cache resource from apiserver...")
informerFactory.Start(ctx.Done())
// Setup webhooks
klog.V(2).Info("setting up webhook server")
hookServer := mgr.GetWebhookServer()
klog.V(2).Info("registering webhooks to the webhook server")
hookServer.Register("/validate-email-iam-kubesphere-io-v1alpha2", &webhook.Admission{Handler: &user.EmailValidator{Client: mgr.GetClient()}})
hookServer.Register("/validate-network-kubesphere-io-v1alpha1", &webhook.Admission{Handler: &webhooks.ValidatingHandler{C: mgr.GetClient()}})
hookServer.Register("/mutate-network-kubesphere-io-v1alpha1", &webhook.Admission{Handler: &webhooks.MutatingHandler{C: mgr.GetClient()}})
resourceQuotaAdmission, err := quota.NewResourceQuotaAdmission(mgr.GetClient(), mgr.GetScheme())
if err != nil {
klog.Fatalf("unable to create resource quota admission: %v", err)
}
hookServer.Register("/validate-quota-kubesphere-io-v1alpha2", &webhook.Admission{Handler: resourceQuotaAdmission})
klog.V(2).Info("registering metrics to the webhook server")
// Add an extra metric endpoint, so we can use the the same metric definition with ks-apiserver
// /kapis/metrics is independent of controller-manager's built-in /metrics
mgr.AddMetricsExtraHandler("/kapis/metrics", metrics.Handler())
klog.V(0).Info("Starting the controllers.")
if err = mgr.Start(ctx); err != nil {
klog.Fatalf("unable to run the manager: %v", err)
}
return nil
}

View File

@@ -1,8 +1,25 @@
/*
Copyright 2020 KubeSphere Authors
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
package main
import (
"kubesphere.io/kubesphere/cmd/controller-manager/app"
"os"
"kubesphere.io/kubesphere/cmd/controller-manager/app"
)
func main() {

View File

@@ -1,75 +0,0 @@
package main
import (
goflag "flag"
cliflag "k8s.io/component-base/cli/flag"
"path/filepath"
"github.com/spf13/cobra"
"github.com/spf13/pflag"
controllermanager "kubesphere.io/kubesphere/cmd/controller-manager/app"
ksapigateway "kubesphere.io/kubesphere/cmd/ks-apigateway/app"
ksapiserver "kubesphere.io/kubesphere/cmd/ks-apiserver/app"
ksaiam "kubesphere.io/kubesphere/cmd/ks-iam/app"
"os"
)
func main() {
hypersphereCommand, allCommandFns := NewHyperSphereCommand()
pflag.CommandLine.SetNormalizeFunc(cliflag.WordSepNormalizeFunc)
pflag.CommandLine.AddGoFlagSet(goflag.CommandLine)
basename := filepath.Base(os.Args[0])
if err := commandFor(basename, hypersphereCommand, allCommandFns).Execute(); err != nil {
os.Exit(1)
}
}
func commandFor(basename string, defaultCommand *cobra.Command, commands []func() *cobra.Command) *cobra.Command {
for _, commandFn := range commands {
command := commandFn()
if command.Name() == basename {
return command
}
for _, alias := range command.Aliases {
if alias == basename {
return command
}
}
}
return defaultCommand
}
func NewHyperSphereCommand() (*cobra.Command, []func() *cobra.Command) {
apiserver := func() *cobra.Command { return ksapiserver.NewAPIServerCommand() }
controllermanager := func() *cobra.Command { return controllermanager.NewControllerManagerCommand() }
iam := func() *cobra.Command { return ksaiam.NewAPIServerCommand() }
apigateway := func() *cobra.Command { return ksapigateway.NewAPIGatewayCommand() }
commandFns := []func() *cobra.Command{
apiserver,
controllermanager,
iam,
apigateway,
}
cmd := &cobra.Command{
Use: "hypersphere",
Short: "Request a new project",
Run: func(cmd *cobra.Command, args []string) {
if len(args) != 0 {
cmd.Help()
os.Exit(0)
}
},
}
for i := range commandFns {
cmd.AddCommand(commandFns[i]())
}
return cmd, commandFns
}

View File

@@ -1,32 +0,0 @@
/*
Copyright 2019 The KubeSphere Authors.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
package main
import (
"kubesphere.io/kubesphere/cmd/ks-apigateway/app"
"os"
)
func main() {
cmd := app.NewAPIGatewayCommand()
if err := cmd.Execute(); err != nil {
os.Exit(1)
}
}

View File

@@ -1,53 +0,0 @@
package app
import (
"flag"
"github.com/mholt/caddy/caddy/caddymain"
"github.com/mholt/caddy/caddyhttp/httpserver"
"github.com/spf13/cobra"
apiserverconfig "kubesphere.io/kubesphere/pkg/server/config"
"kubesphere.io/kubesphere/pkg/simple/client"
"kubesphere.io/kubesphere/pkg/utils/signals"
"kubesphere.io/kubesphere/pkg/apigateway"
)
func NewAPIGatewayCommand() *cobra.Command {
cmd := &cobra.Command{
Use: "ks-apigateway",
Long: `The KubeSphere API Gateway, which is responsible
for proxy request to the right backend. API Gateway also proxy
Kubernetes API Server for KubeSphere authorization purpose.
`,
RunE: func(cmd *cobra.Command, args []string) error {
err := apiserverconfig.Load()
if err != nil {
return err
}
apigateway.RegisterPlugins()
return Run(signals.SetupSignalHandler())
},
}
cmd.Flags().AddGoFlagSet(flag.CommandLine)
return cmd
}
func Run(stopCh <-chan struct{}) error {
csop := &client.ClientSetOptions{}
csop.SetKubernetesOptions(apiserverconfig.Get().KubernetesOptions)
client.NewClientSetFactory(csop, stopCh)
httpserver.RegisterDevDirective("authenticate", "jwt")
httpserver.RegisterDevDirective("authentication", "jwt")
httpserver.RegisterDevDirective("swagger", "jwt")
caddymain.Run()
return nil
}

View File

@@ -1,25 +1,25 @@
/*
Copyright 2019 The KubeSphere Authors.
Copyright 2019 The KubeSphere Authors.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
package main
import (
"kubesphere.io/kubesphere/cmd/ks-apiserver/app"
"log"
"kubesphere.io/kubesphere/cmd/ks-apiserver/app"
)
func main() {

View File

@@ -1,68 +1,97 @@
/*
Copyright 2020 KubeSphere Authors
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
package options
import (
"crypto/tls"
"flag"
"fmt"
"kubesphere.io/kubesphere/pkg/apiserver/authentication/token"
"k8s.io/client-go/kubernetes/scheme"
cliflag "k8s.io/component-base/cli/flag"
"k8s.io/klog"
runtimecache "sigs.k8s.io/controller-runtime/pkg/cache"
runtimeclient "sigs.k8s.io/controller-runtime/pkg/client"
"kubesphere.io/kubesphere/pkg/apis"
"kubesphere.io/kubesphere/pkg/apiserver"
apiserverconfig "kubesphere.io/kubesphere/pkg/apiserver/config"
"kubesphere.io/kubesphere/pkg/informers"
genericoptions "kubesphere.io/kubesphere/pkg/server/options"
"kubesphere.io/kubesphere/pkg/simple/client/devops"
esclient "kubesphere.io/kubesphere/pkg/simple/client/elasticsearch"
"kubesphere.io/kubesphere/pkg/simple/client/k8s"
"kubesphere.io/kubesphere/pkg/simple/client/mysql"
"kubesphere.io/kubesphere/pkg/simple/client/openpitrix"
"kubesphere.io/kubesphere/pkg/simple/client/prometheus"
"kubesphere.io/kubesphere/pkg/simple/client/s2is3"
"kubesphere.io/kubesphere/pkg/simple/client/servicemesh"
"kubesphere.io/kubesphere/pkg/simple/client/sonarqube"
"kubesphere.io/kubesphere/pkg/simple/client/alerting"
auditingclient "kubesphere.io/kubesphere/pkg/simple/client/auditing/elasticsearch"
"kubesphere.io/kubesphere/pkg/simple/client/cache"
"net/http"
"strings"
"kubesphere.io/kubesphere/pkg/simple/client/devops/jenkins"
eventsclient "kubesphere.io/kubesphere/pkg/simple/client/events/elasticsearch"
"kubesphere.io/kubesphere/pkg/simple/client/k8s"
esclient "kubesphere.io/kubesphere/pkg/simple/client/logging/elasticsearch"
"kubesphere.io/kubesphere/pkg/simple/client/monitoring/metricsserver"
"kubesphere.io/kubesphere/pkg/simple/client/monitoring/prometheus"
"kubesphere.io/kubesphere/pkg/simple/client/s3"
fakes3 "kubesphere.io/kubesphere/pkg/simple/client/s3/fake"
"kubesphere.io/kubesphere/pkg/simple/client/sonarqube"
)
type ServerRunOptions struct {
ConfigFile string
GenericServerRunOptions *genericoptions.ServerRunOptions
*apiserverconfig.Config
KubernetesOptions *k8s.KubernetesOptions
DevopsOptions *devops.DevopsOptions
SonarQubeOptions *sonarqube.SonarQubeOptions
ServiceMeshOptions *servicemesh.ServiceMeshOptions
MySQLOptions *mysql.MySQLOptions
MonitoringOptions *prometheus.PrometheusOptions
S3Options *s2is3.S3Options
OpenPitrixOptions *openpitrix.OpenPitrixOptions
LoggingOptions *esclient.ElasticSearchOptions
//
DebugMode bool
}
func NewServerRunOptions() *ServerRunOptions {
s := ServerRunOptions{
s := &ServerRunOptions{
GenericServerRunOptions: genericoptions.NewServerRunOptions(),
KubernetesOptions: k8s.NewKubernetesOptions(),
DevopsOptions: devops.NewDevopsOptions(),
SonarQubeOptions: sonarqube.NewSonarQubeOptions(),
ServiceMeshOptions: servicemesh.NewServiceMeshOptions(),
MySQLOptions: mysql.NewMySQLOptions(),
MonitoringOptions: prometheus.NewPrometheusOptions(),
S3Options: s2is3.NewS3Options(),
OpenPitrixOptions: openpitrix.NewOpenPitrixOptions(),
LoggingOptions: esclient.NewElasticSearchOptions(),
Config: apiserverconfig.New(),
}
return &s
return s
}
func (s *ServerRunOptions) Flags() (fss cliflag.NamedFlagSets) {
fs := fss.FlagSet("generic")
fs.BoolVar(&s.DebugMode, "debug", false, "Don't enable this if you don't know what it means.")
s.GenericServerRunOptions.AddFlags(fs, s.GenericServerRunOptions)
s.KubernetesOptions.AddFlags(fss.FlagSet("kubernetes"), s.KubernetesOptions)
s.AuthenticationOptions.AddFlags(fss.FlagSet("authentication"), s.AuthenticationOptions)
s.AuthorizationOptions.AddFlags(fss.FlagSet("authorization"), s.AuthorizationOptions)
s.DevopsOptions.AddFlags(fss.FlagSet("devops"), s.DevopsOptions)
s.SonarQubeOptions.AddFlags(fss.FlagSet("sonarqube"), s.SonarQubeOptions)
s.RedisOptions.AddFlags(fss.FlagSet("redis"), s.RedisOptions)
s.S3Options.AddFlags(fss.FlagSet("s3"), s.S3Options)
s.OpenPitrixOptions.AddFlags(fss.FlagSet("openpitrix"), s.OpenPitrixOptions)
s.NetworkOptions.AddFlags(fss.FlagSet("network"), s.NetworkOptions)
s.ServiceMeshOptions.AddFlags(fss.FlagSet("servicemesh"), s.ServiceMeshOptions)
s.MonitoringOptions.AddFlags(fss.FlagSet("monitoring"), s.MonitoringOptions)
s.LoggingOptions.AddFlags(fss.FlagSet("logging"), s.LoggingOptions)
s.MultiClusterOptions.AddFlags(fss.FlagSet("multicluster"), s.MultiClusterOptions)
s.EventsOptions.AddFlags(fss.FlagSet("events"), s.EventsOptions)
s.AuditingOptions.AddFlags(fss.FlagSet("auditing"), s.AuditingOptions)
s.AlertingOptions.AddFlags(fss.FlagSet("alerting"), s.AlertingOptions)
s.GenericServerRunOptions.AddFlags(fss.FlagSet("generic"))
s.KubernetesOptions.AddFlags(fss.FlagSet("kubernetes"))
s.MySQLOptions.AddFlags(fss.FlagSet("mysql"))
s.DevopsOptions.AddFlags(fss.FlagSet("devops"))
s.SonarQubeOptions.AddFlags(fss.FlagSet("sonarqube"))
s.S3Options.AddFlags(fss.FlagSet("s3"))
s.OpenPitrixOptions.AddFlags(fss.FlagSet("openpitrix"))
s.ServiceMeshOptions.AddFlags(fss.FlagSet("servicemesh"))
s.MonitoringOptions.AddFlags(fss.FlagSet("monitoring"))
s.LoggingOptions.AddFlags(fss.FlagSet("logging"))
fs := fss.FlagSet("klog")
fs = fss.FlagSet("klog")
local := flag.NewFlagSet("klog", flag.ExitOnError)
klog.InitFlags(local)
local.VisitAll(func(fl *flag.Flag) {
@@ -72,3 +101,151 @@ func (s *ServerRunOptions) Flags() (fss cliflag.NamedFlagSets) {
return fss
}
const fakeInterface string = "FAKE"
// NewAPIServer creates an APIServer instance using given options
func (s *ServerRunOptions) NewAPIServer(stopCh <-chan struct{}) (*apiserver.APIServer, error) {
apiServer := &apiserver.APIServer{
Config: s.Config,
}
kubernetesClient, err := k8s.NewKubernetesClient(s.KubernetesOptions)
if err != nil {
return nil, err
}
apiServer.KubernetesClient = kubernetesClient
informerFactory := informers.NewInformerFactories(kubernetesClient.Kubernetes(), kubernetesClient.KubeSphere(),
kubernetesClient.Istio(), kubernetesClient.Snapshot(), kubernetesClient.ApiExtensions(), kubernetesClient.Prometheus())
apiServer.InformerFactory = informerFactory
if s.MonitoringOptions == nil || len(s.MonitoringOptions.Endpoint) == 0 {
return nil, fmt.Errorf("moinitoring service address in configuration MUST not be empty, please check configmap/kubesphere-config in kubesphere-system namespace")
} else {
monitoringClient, err := prometheus.NewPrometheus(s.MonitoringOptions)
if err != nil {
return nil, fmt.Errorf("failed to connect to prometheus, please check prometheus status, error: %v", err)
}
apiServer.MonitoringClient = monitoringClient
}
apiServer.MetricsClient = metricsserver.NewMetricsClient(kubernetesClient.Kubernetes(), s.KubernetesOptions)
if s.LoggingOptions.Host != "" {
loggingClient, err := esclient.NewClient(s.LoggingOptions)
if err != nil {
return nil, fmt.Errorf("failed to connect to elasticsearch, please check elasticsearch status, error: %v", err)
}
apiServer.LoggingClient = loggingClient
}
if s.S3Options.Endpoint != "" {
if s.S3Options.Endpoint == fakeInterface && s.DebugMode {
apiServer.S3Client = fakes3.NewFakeS3()
} else {
s3Client, err := s3.NewS3Client(s.S3Options)
if err != nil {
return nil, fmt.Errorf("failed to connect to s3, please check s3 service status, error: %v", err)
}
apiServer.S3Client = s3Client
}
}
if s.DevopsOptions.Host != "" {
devopsClient, err := jenkins.NewDevopsClient(s.DevopsOptions)
if err != nil {
return nil, fmt.Errorf("failed to connect to jenkins, please check jenkins status, error: %v", err)
}
apiServer.DevopsClient = devopsClient
}
if s.SonarQubeOptions.Host != "" {
sonarClient, err := sonarqube.NewSonarQubeClient(s.SonarQubeOptions)
if err != nil {
return nil, fmt.Errorf("failed to connecto to sonarqube, please check sonarqube status, error: %v", err)
}
apiServer.SonarClient = sonarqube.NewSonar(sonarClient.SonarQube())
}
var cacheClient cache.Interface
if s.RedisOptions != nil && len(s.RedisOptions.Host) != 0 {
if s.RedisOptions.Host == fakeInterface && s.DebugMode {
apiServer.CacheClient = cache.NewSimpleCache()
} else {
cacheClient, err = cache.NewRedisClient(s.RedisOptions, stopCh)
if err != nil {
return nil, fmt.Errorf("failed to connect to redis service, please check redis status, error: %v", err)
}
apiServer.CacheClient = cacheClient
}
} else {
klog.Warning("ks-apiserver starts without redis provided, it will use in memory cache. " +
"This may cause inconsistencies when running ks-apiserver with multiple replicas.")
apiServer.CacheClient = cache.NewSimpleCache()
}
if s.EventsOptions.Host != "" {
eventsClient, err := eventsclient.NewClient(s.EventsOptions)
if err != nil {
return nil, fmt.Errorf("failed to connect to elasticsearch, please check elasticsearch status, error: %v", err)
}
apiServer.EventsClient = eventsClient
}
if s.AuditingOptions.Host != "" {
auditingClient, err := auditingclient.NewClient(s.AuditingOptions)
if err != nil {
return nil, fmt.Errorf("failed to connect to elasticsearch, please check elasticsearch status, error: %v", err)
}
apiServer.AuditingClient = auditingClient
}
if s.AlertingOptions != nil && (s.AlertingOptions.PrometheusEndpoint != "" || s.AlertingOptions.ThanosRulerEndpoint != "") {
alertingClient, err := alerting.NewRuleClient(s.AlertingOptions)
if err != nil {
return nil, fmt.Errorf("failed to init alerting client: %v", err)
}
apiServer.AlertingClient = alertingClient
}
server := &http.Server{
Addr: fmt.Sprintf(":%d", s.GenericServerRunOptions.InsecurePort),
}
if s.GenericServerRunOptions.SecurePort != 0 {
certificate, err := tls.LoadX509KeyPair(s.GenericServerRunOptions.TlsCertFile, s.GenericServerRunOptions.TlsPrivateKey)
if err != nil {
return nil, err
}
server.TLSConfig = &tls.Config{
Certificates: []tls.Certificate{certificate},
}
server.Addr = fmt.Sprintf(":%d", s.GenericServerRunOptions.SecurePort)
}
sch := scheme.Scheme
if err := apis.AddToScheme(sch); err != nil {
klog.Fatalf("unable add APIs to scheme: %v", err)
}
apiServer.RuntimeCache, err = runtimecache.New(apiServer.KubernetesClient.Config(), runtimecache.Options{Scheme: sch})
if err != nil {
klog.Fatalf("unable to create controller runtime cache: %v", err)
}
apiServer.RuntimeClient, err = runtimeclient.New(apiServer.KubernetesClient.Config(), runtimeclient.Options{Scheme: sch})
if err != nil {
klog.Fatalf("unable to create controller runtime client: %v", err)
}
apiServer.Issuer, err = token.NewIssuer(s.AuthenticationOptions)
if err != nil {
klog.Fatalf("unable to create issuer: %v", err)
}
apiServer.Server = server
return apiServer, nil
}

View File

@@ -1,3 +1,19 @@
/*
Copyright 2020 KubeSphere Authors
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
package options
// Validate validates server run options, to find
@@ -5,15 +21,21 @@ package options
func (s *ServerRunOptions) Validate() []error {
var errors []error
errors = append(errors, s.GenericServerRunOptions.Validate()...)
errors = append(errors, s.DevopsOptions.Validate()...)
errors = append(errors, s.KubernetesOptions.Validate()...)
errors = append(errors, s.MySQLOptions.Validate()...)
errors = append(errors, s.ServiceMeshOptions.Validate()...)
errors = append(errors, s.MonitoringOptions.Validate()...)
errors = append(errors, s.SonarQubeOptions.Validate()...)
errors = append(errors, s.S3Options.Validate()...)
errors = append(errors, s.OpenPitrixOptions.Validate()...)
errors = append(errors, s.NetworkOptions.Validate()...)
errors = append(errors, s.LoggingOptions.Validate()...)
errors = append(errors, s.AuthenticationOptions.Validate()...)
errors = append(errors, s.AuthorizationOptions.Validate()...)
errors = append(errors, s.EventsOptions.Validate()...)
errors = append(errors, s.AuditingOptions.Validate()...)
errors = append(errors, s.AlertingOptions.Validate()...)
return errors
}

View File

@@ -1,75 +1,69 @@
/*
Copyright 2019 The KubeSphere Authors.
Copyright 2019 The KubeSphere Authors.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
package app
import (
"context"
"fmt"
kconfig "github.com/kiali/kiali/config"
"github.com/spf13/cobra"
"k8s.io/apimachinery/pkg/runtime/schema"
utilerrors "k8s.io/apimachinery/pkg/util/errors"
cliflag "k8s.io/component-base/cli/flag"
"k8s.io/klog"
"kubesphere.io/kubesphere/cmd/ks-apiserver/app/options"
"kubesphere.io/kubesphere/pkg/apiserver/runtime"
"kubesphere.io/kubesphere/pkg/apiserver/servicemesh/tracing"
"kubesphere.io/kubesphere/pkg/informers"
"kubesphere.io/kubesphere/pkg/server"
apiserverconfig "kubesphere.io/kubesphere/pkg/server/config"
"kubesphere.io/kubesphere/pkg/server/filter"
"kubesphere.io/kubesphere/pkg/simple/client"
"kubesphere.io/kubesphere/pkg/utils/signals"
"kubesphere.io/kubesphere/pkg/utils/term"
"net/http"
"kubesphere.io/kubesphere/pkg/apis"
"sigs.k8s.io/controller-runtime/pkg/manager/signals"
"kubesphere.io/kubesphere/cmd/ks-apiserver/app/options"
apiserverconfig "kubesphere.io/kubesphere/pkg/apiserver/config"
"kubesphere.io/kubesphere/pkg/utils/term"
"kubesphere.io/kubesphere/pkg/version"
)
func NewAPIServerCommand() *cobra.Command {
s := options.NewServerRunOptions()
// Load configuration from file
conf, err := apiserverconfig.TryLoadFromDisk()
if err == nil {
s = &options.ServerRunOptions{
GenericServerRunOptions: s.GenericServerRunOptions,
Config: conf,
}
} else {
klog.Fatal("Failed to load configuration from disk", err)
}
cmd := &cobra.Command{
Use: "ks-apiserver",
Long: `The KubeSphere API server validates and configures data for the api objects.
Long: `The KubeSphere API server validates and configures data for the API objects.
The API Server services REST operations and provides the frontend to the
cluster's shared state through which all other components interact.`,
RunE: func(cmd *cobra.Command, args []string) error {
err := apiserverconfig.Load()
if err != nil {
return err
}
err = Complete(s)
if err != nil {
return err
}
if errs := s.Validate(); len(errs) != 0 {
return utilerrors.NewAggregate(errs)
}
return Run(s, signals.SetupSignalHandler())
},
SilenceUsage: true,
}
fs := cmd.Flags()
namedFlagSets := s.Flags()
for _, f := range namedFlagSets.FlagSets {
fs.AddFlagSet(f)
}
@@ -80,274 +74,31 @@ cluster's shared state through which all other components interact.`,
fmt.Fprintf(cmd.OutOrStdout(), "%s\n\n"+usageFmt, cmd.Long, cmd.UseLine())
cliflag.PrintSections(cmd.OutOrStdout(), namedFlagSets, cols)
})
versionCmd := &cobra.Command{
Use: "version",
Short: "Print the version of KubeSphere ks-apiserver",
Run: func(cmd *cobra.Command, args []string) {
cmd.Println(version.Get())
},
}
cmd.AddCommand(versionCmd)
return cmd
}
func Run(s *options.ServerRunOptions, stopCh <-chan struct{}) error {
func Run(s *options.ServerRunOptions, ctx context.Context) error {
err := CreateClientSet(apiserverconfig.Get(), stopCh)
apiserver, err := s.NewAPIServer(ctx.Done())
if err != nil {
return err
}
err = WaitForResourceSync(stopCh)
err = apiserver.PrepareRun(ctx.Done())
if err != nil {
return err
}
initializeServicemeshConfig(s)
err = CreateAPIServer(s)
if err != nil {
return err
}
return nil
}
func initializeServicemeshConfig(s *options.ServerRunOptions) {
// Initialize kiali config
config := kconfig.NewConfig()
tracing.JaegerQueryUrl = s.ServiceMeshOptions.JaegerQueryHost
// Exclude system namespaces
config.API.Namespaces.Exclude = []string{"istio-system", "kubesphere*", "kube*"}
config.InCluster = true
// Set default prometheus service url
config.ExternalServices.PrometheusServiceURL = s.ServiceMeshOptions.ServicemeshPrometheusHost
config.ExternalServices.PrometheusCustomMetricsURL = config.ExternalServices.PrometheusServiceURL
// Set istio pilot discovery service url
config.ExternalServices.Istio.UrlServiceVersion = s.ServiceMeshOptions.IstioPilotHost
kconfig.Set(config)
}
//
func CreateAPIServer(s *options.ServerRunOptions) error {
var err error
container := runtime.Container
container.DoNotRecover(false)
container.Filter(filter.Logging)
container.RecoverHandler(server.LogStackOnRecover)
apis.InstallAPIs(container)
// install config api
apiserverconfig.InstallAPI(container)
if s.GenericServerRunOptions.InsecurePort != 0 {
err = http.ListenAndServe(fmt.Sprintf("%s:%d", s.GenericServerRunOptions.BindAddress, s.GenericServerRunOptions.InsecurePort), container)
if err == nil {
klog.V(0).Infof("Server listening on insecure port %d.", s.GenericServerRunOptions.InsecurePort)
}
}
if s.GenericServerRunOptions.SecurePort != 0 && len(s.GenericServerRunOptions.TlsCertFile) > 0 && len(s.GenericServerRunOptions.TlsPrivateKey) > 0 {
err = http.ListenAndServeTLS(fmt.Sprintf("%s:%d", s.GenericServerRunOptions.BindAddress, s.GenericServerRunOptions.SecurePort), s.GenericServerRunOptions.TlsCertFile, s.GenericServerRunOptions.TlsPrivateKey, container)
if err == nil {
klog.V(0).Infof("Server listening on secure port %d.", s.GenericServerRunOptions.SecurePort)
}
}
return err
}
func CreateClientSet(conf *apiserverconfig.Config, stopCh <-chan struct{}) error {
csop := &client.ClientSetOptions{}
csop.SetDevopsOptions(conf.DevopsOptions).
SetSonarQubeOptions(conf.SonarQubeOptions).
SetKubernetesOptions(conf.KubernetesOptions).
SetMySQLOptions(conf.MySQLOptions).
SetLdapOptions(conf.LdapOptions).
SetS3Options(conf.S3Options).
SetOpenPitrixOptions(conf.OpenPitrixOptions).
SetPrometheusOptions(conf.MonitoringOptions).
SetKubeSphereOptions(conf.KubeSphereOptions).
SetElasticSearchOptions(conf.LoggingOptions)
client.NewClientSetFactory(csop, stopCh)
return nil
}
func WaitForResourceSync(stopCh <-chan struct{}) error {
klog.V(0).Info("Start cache objects")
discoveryClient := client.ClientSets().K8s().Discovery()
apiResourcesList, err := discoveryClient.ServerResources()
if err != nil {
return err
}
isResourceExists := func(resource schema.GroupVersionResource) bool {
for _, apiResource := range apiResourcesList {
if apiResource.GroupVersion == resource.GroupVersion().String() {
for _, rsc := range apiResource.APIResources {
if rsc.Name == resource.Resource {
return true
}
}
}
}
return false
}
informerFactory := informers.SharedInformerFactory()
// resources we have to create informer first
k8sGVRs := []schema.GroupVersionResource{
{Group: "", Version: "v1", Resource: "namespaces"},
{Group: "", Version: "v1", Resource: "nodes"},
{Group: "", Version: "v1", Resource: "resourcequotas"},
{Group: "", Version: "v1", Resource: "pods"},
{Group: "", Version: "v1", Resource: "services"},
{Group: "", Version: "v1", Resource: "persistentvolumeclaims"},
{Group: "", Version: "v1", Resource: "secrets"},
{Group: "", Version: "v1", Resource: "configmaps"},
{Group: "rbac.authorization.k8s.io", Version: "v1", Resource: "roles"},
{Group: "rbac.authorization.k8s.io", Version: "v1", Resource: "rolebindings"},
{Group: "rbac.authorization.k8s.io", Version: "v1", Resource: "clusterroles"},
{Group: "rbac.authorization.k8s.io", Version: "v1", Resource: "clusterrolebindings"},
{Group: "apps", Version: "v1", Resource: "deployments"},
{Group: "apps", Version: "v1", Resource: "daemonsets"},
{Group: "apps", Version: "v1", Resource: "replicasets"},
{Group: "apps", Version: "v1", Resource: "statefulsets"},
{Group: "apps", Version: "v1", Resource: "controllerrevisions"},
{Group: "storage.k8s.io", Version: "v1", Resource: "storageclasses"},
{Group: "batch", Version: "v1", Resource: "jobs"},
{Group: "batch", Version: "v1beta1", Resource: "cronjobs"},
{Group: "extensions", Version: "v1beta1", Resource: "ingresses"},
{Group: "autoscaling", Version: "v2beta2", Resource: "horizontalpodautoscalers"},
}
for _, gvr := range k8sGVRs {
if !isResourceExists(gvr) {
klog.Warningf("resource %s not exists in the cluster", gvr)
} else {
_, err := informerFactory.ForResource(gvr)
if err != nil {
klog.Errorf("cannot create informer for %s", gvr)
return err
}
}
}
informerFactory.Start(stopCh)
informerFactory.WaitForCacheSync(stopCh)
s2iInformerFactory := informers.S2iSharedInformerFactory()
s2iGVRs := []schema.GroupVersionResource{
{Group: "devops.kubesphere.io", Version: "v1alpha1", Resource: "s2ibuildertemplates"},
{Group: "devops.kubesphere.io", Version: "v1alpha1", Resource: "s2iruns"},
{Group: "devops.kubesphere.io", Version: "v1alpha1", Resource: "s2ibuilders"},
}
for _, gvr := range s2iGVRs {
if !isResourceExists(gvr) {
klog.Warningf("resource %s not exists in the cluster", gvr)
} else {
_, err := s2iInformerFactory.ForResource(gvr)
if err != nil {
return err
}
}
}
s2iInformerFactory.Start(stopCh)
s2iInformerFactory.WaitForCacheSync(stopCh)
ksInformerFactory := informers.KsSharedInformerFactory()
ksGVRs := []schema.GroupVersionResource{
{Group: "tenant.kubesphere.io", Version: "v1alpha1", Resource: "workspaces"},
{Group: "devops.kubesphere.io", Version: "v1alpha1", Resource: "s2ibinaries"},
{Group: "servicemesh.kubesphere.io", Version: "v1alpha2", Resource: "strategies"},
{Group: "servicemesh.kubesphere.io", Version: "v1alpha2", Resource: "servicepolicies"},
}
for _, gvr := range ksGVRs {
if !isResourceExists(gvr) {
klog.Warningf("resource %s not exists in the cluster", gvr)
} else {
_, err := ksInformerFactory.ForResource(gvr)
if err != nil {
return err
}
}
}
ksInformerFactory.Start(stopCh)
ksInformerFactory.WaitForCacheSync(stopCh)
appInformerFactory := informers.AppSharedInformerFactory()
appGVRs := []schema.GroupVersionResource{
{Group: "app.k8s.io", Version: "v1beta1", Resource: "applications"},
}
for _, gvr := range appGVRs {
if !isResourceExists(gvr) {
klog.Warningf("resource %s not exists in the cluster", gvr)
} else {
_, err := appInformerFactory.ForResource(gvr)
if err != nil {
return err
}
}
}
appInformerFactory.Start(stopCh)
appInformerFactory.WaitForCacheSync(stopCh)
klog.V(0).Info("Finished caching objects")
return nil
}
// apply server run options to configuration
func Complete(s *options.ServerRunOptions) error {
// loading configuration file
conf := apiserverconfig.Get()
conf.Apply(&apiserverconfig.Config{
MySQLOptions: s.MySQLOptions,
DevopsOptions: s.DevopsOptions,
SonarQubeOptions: s.SonarQubeOptions,
KubernetesOptions: s.KubernetesOptions,
ServiceMeshOptions: s.ServiceMeshOptions,
MonitoringOptions: s.MonitoringOptions,
S3Options: s.S3Options,
OpenPitrixOptions: s.OpenPitrixOptions,
LoggingOptions: s.LoggingOptions,
})
*s = options.ServerRunOptions{
GenericServerRunOptions: s.GenericServerRunOptions,
KubernetesOptions: conf.KubernetesOptions,
DevopsOptions: conf.DevopsOptions,
SonarQubeOptions: conf.SonarQubeOptions,
ServiceMeshOptions: conf.ServiceMeshOptions,
MySQLOptions: conf.MySQLOptions,
MonitoringOptions: conf.MonitoringOptions,
S3Options: conf.S3Options,
OpenPitrixOptions: conf.OpenPitrixOptions,
LoggingOptions: conf.LoggingOptions,
}
return nil
return apiserver.Run(ctx)
}

View File

@@ -1,32 +0,0 @@
/*
Copyright 2019 The KubeSphere Authors.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
package main
import (
"kubesphere.io/kubesphere/cmd/ks-iam/app"
"log"
)
func main() {
cmd := app.NewAPIServerCommand()
if err := cmd.Execute(); err != nil {
log.Fatalln(err)
}
}

View File

@@ -1,86 +0,0 @@
/*
Copyright 2019 The KubeSphere Authors.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
package options
import (
"flag"
cliflag "k8s.io/component-base/cli/flag"
"k8s.io/klog"
genericoptions "kubesphere.io/kubesphere/pkg/server/options"
"kubesphere.io/kubesphere/pkg/simple/client/k8s"
"kubesphere.io/kubesphere/pkg/simple/client/ldap"
"kubesphere.io/kubesphere/pkg/simple/client/mysql"
"kubesphere.io/kubesphere/pkg/simple/client/redis"
"strings"
"time"
)
type ServerRunOptions struct {
GenericServerRunOptions *genericoptions.ServerRunOptions
KubernetesOptions *k8s.KubernetesOptions
LdapOptions *ldap.LdapOptions
RedisOptions *redis.RedisOptions
MySQLOptions *mysql.MySQLOptions
AdminEmail string
AdminPassword string
TokenIdleTimeout time.Duration
JWTSecret string
AuthRateLimit string
EnableMultiLogin bool
GenerateKubeConfig bool
}
func NewServerRunOptions() *ServerRunOptions {
s := &ServerRunOptions{
GenericServerRunOptions: genericoptions.NewServerRunOptions(),
KubernetesOptions: k8s.NewKubernetesOptions(),
LdapOptions: ldap.NewLdapOptions(),
MySQLOptions: mysql.NewMySQLOptions(),
RedisOptions: redis.NewRedisOptions(),
}
return s
}
func (s *ServerRunOptions) Flags() (fss cliflag.NamedFlagSets) {
fs := fss.FlagSet("generic")
s.GenericServerRunOptions.AddFlags(fs)
fs.StringVar(&s.AdminEmail, "admin-email", "admin@kubesphere.io", "default administrator's email")
fs.StringVar(&s.AdminPassword, "admin-password", "passw0rd", "default administrator's password")
fs.DurationVar(&s.TokenIdleTimeout, "token-idle-timeout", 30*time.Minute, "tokens that are idle beyond that time will expire,0s means the token has no expiration time. valid time units are \"ns\",\"us\",\"ms\",\"s\",\"m\",\"h\"")
fs.StringVar(&s.JWTSecret, "jwt-secret", "", "jwt secret")
fs.StringVar(&s.AuthRateLimit, "auth-rate-limit", "5/30m", "specifies the maximum number of authentication attempts permitted and time interval,valid time units are \"s\",\"m\",\"h\"")
fs.BoolVar(&s.EnableMultiLogin, "enable-multi-login", false, "allow one account to have multiple sessions")
fs.BoolVar(&s.GenerateKubeConfig, "generate-kubeconfig", true, "generate kubeconfig for new users, kubeconfig is required in devops pipeline, set to false if you don't need devops.")
s.KubernetesOptions.AddFlags(fss.FlagSet("kubernetes"))
s.LdapOptions.AddFlags(fss.FlagSet("ldap"))
s.RedisOptions.AddFlags(fss.FlagSet("redis"))
s.MySQLOptions.AddFlags(fss.FlagSet("mysql"))
kfs := fss.FlagSet("klog")
local := flag.NewFlagSet("klog", flag.ExitOnError)
klog.InitFlags(local)
local.VisitAll(func(fl *flag.Flag) {
fl.Name = strings.Replace(fl.Name, "_", "-", -1)
kfs.AddGoFlag(fl)
})
return fss
}

View File

@@ -1,11 +0,0 @@
package options
func (s *ServerRunOptions) Validate() []error {
errs := []error{}
errs = append(errs, s.KubernetesOptions.Validate()...)
errs = append(errs, s.GenericServerRunOptions.Validate()...)
errs = append(errs, s.LdapOptions.Validate()...)
return errs
}

View File

@@ -1,161 +0,0 @@
/*
Copyright 2019 The KubeSphere Authors.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
package app
import (
"fmt"
"github.com/spf13/cobra"
utilerrors "k8s.io/apimachinery/pkg/util/errors"
cliflag "k8s.io/component-base/cli/flag"
"k8s.io/klog"
"kubesphere.io/kubesphere/cmd/ks-iam/app/options"
"kubesphere.io/kubesphere/pkg/apis"
"kubesphere.io/kubesphere/pkg/apiserver/runtime"
"kubesphere.io/kubesphere/pkg/informers"
"kubesphere.io/kubesphere/pkg/models/iam"
"kubesphere.io/kubesphere/pkg/server"
apiserverconfig "kubesphere.io/kubesphere/pkg/server/config"
"kubesphere.io/kubesphere/pkg/server/filter"
"kubesphere.io/kubesphere/pkg/simple/client"
"kubesphere.io/kubesphere/pkg/utils/jwtutil"
"kubesphere.io/kubesphere/pkg/utils/signals"
"kubesphere.io/kubesphere/pkg/utils/term"
"net/http"
)
func NewAPIServerCommand() *cobra.Command {
s := options.NewServerRunOptions()
cmd := &cobra.Command{
Use: "ks-iam",
Long: `The KubeSphere account server validates and configures data
for the api objects. The API Server services REST operations and provides the frontend to the
cluster's shared state through which all other components interact.`,
RunE: func(cmd *cobra.Command, args []string) error {
err := apiserverconfig.Load()
if err != nil {
return err
}
err = Complete(s)
if err != nil {
return err
}
if errs := s.Validate(); len(errs) != 0 {
return utilerrors.NewAggregate(errs)
}
return Run(s, signals.SetupSignalHandler())
},
}
fs := cmd.Flags()
namedFlagSets := s.Flags()
for _, f := range namedFlagSets.FlagSets {
fs.AddFlagSet(f)
}
usageFmt := "Usage:\n %s\n"
cols, _, _ := term.TerminalSize(cmd.OutOrStdout())
cmd.SetHelpFunc(func(cmd *cobra.Command, args []string) {
fmt.Fprintf(cmd.OutOrStdout(), "%s\n\n"+usageFmt, cmd.Long, cmd.UseLine())
cliflag.PrintSections(cmd.OutOrStdout(), namedFlagSets, cols)
})
return cmd
}
func Run(s *options.ServerRunOptions, stopChan <-chan struct{}) error {
csop := client.NewClientSetOptions()
csop.SetKubernetesOptions(s.KubernetesOptions).
SetLdapOptions(s.LdapOptions).
SetRedisOptions(s.RedisOptions).
SetMySQLOptions(s.MySQLOptions)
client.NewClientSetFactory(csop, stopChan)
waitForResourceSync(stopChan)
err := iam.Init(s.AdminEmail, s.AdminPassword, s.AuthRateLimit, s.TokenIdleTimeout, s.EnableMultiLogin, s.GenerateKubeConfig)
jwtutil.Setup(s.JWTSecret)
if err != nil {
return err
}
container := runtime.Container
container.Filter(filter.Logging)
container.DoNotRecover(false)
container.RecoverHandler(server.LogStackOnRecover)
apis.InstallAuthorizationAPIs(container)
if s.GenericServerRunOptions.InsecurePort != 0 {
klog.Infof("Server listening on %s:%d ", s.GenericServerRunOptions.BindAddress, s.GenericServerRunOptions.InsecurePort)
err = http.ListenAndServe(fmt.Sprintf("%s:%d", s.GenericServerRunOptions.BindAddress, s.GenericServerRunOptions.InsecurePort), container)
}
if s.GenericServerRunOptions.SecurePort != 0 && len(s.GenericServerRunOptions.TlsCertFile) > 0 && len(s.GenericServerRunOptions.TlsPrivateKey) > 0 {
klog.Infof("Server listening on %s:%d", s.GenericServerRunOptions.BindAddress, s.GenericServerRunOptions.SecurePort)
err = http.ListenAndServeTLS(fmt.Sprintf("%s:%d", s.GenericServerRunOptions.BindAddress, s.GenericServerRunOptions.SecurePort), s.GenericServerRunOptions.TlsCertFile, s.GenericServerRunOptions.TlsPrivateKey, container)
}
return err
}
func Complete(s *options.ServerRunOptions) error {
conf := apiserverconfig.Get()
conf.Apply(&apiserverconfig.Config{
KubernetesOptions: s.KubernetesOptions,
LdapOptions: s.LdapOptions,
RedisOptions: s.RedisOptions,
MySQLOptions: s.MySQLOptions,
})
s.KubernetesOptions = conf.KubernetesOptions
s.LdapOptions = conf.LdapOptions
s.RedisOptions = conf.RedisOptions
s.MySQLOptions = conf.MySQLOptions
return nil
}
func waitForResourceSync(stopCh <-chan struct{}) {
informerFactory := informers.SharedInformerFactory()
informerFactory.Rbac().V1().Roles().Lister()
informerFactory.Rbac().V1().RoleBindings().Lister()
informerFactory.Rbac().V1().ClusterRoles().Lister()
informerFactory.Rbac().V1().ClusterRoleBindings().Lister()
informerFactory.Core().V1().Namespaces().Lister()
informerFactory.Start(stopCh)
informerFactory.WaitForCacheSync(stopCh)
ksInformerFactory := informers.KsSharedInformerFactory()
ksInformerFactory.Tenant().V1alpha1().Workspaces().Lister()
ksInformerFactory.Start(stopCh)
ksInformerFactory.WaitForCacheSync(stopCh)
}

View File

@@ -1,25 +0,0 @@
package main
import (
"flag"
"k8s.io/klog"
"kubesphere.io/kubesphere/pkg/controller/network/runoption"
)
var opt runoption.RunOption
func init() {
flag.StringVar(&opt.ProviderName, "np-provider", "calico", "specify the network policy provider, k8s or calico")
flag.BoolVar(&opt.AllowInsecureEtcd, "allow-insecure-etcd", false, "specify allow connect to etcd using insecure http")
flag.StringVar(&opt.DataStoreType, "datastore-type", "k8s", "specify the datastore type of calico")
//TODO add more flags
}
func main() {
klog.InitFlags(nil)
flag.Set("logtostderr", "true")
flag.Parse()
klog.V(1).Info("Preparing kubernetes client")
klog.Fatal(opt.Run())
}

View File

@@ -1,236 +1,529 @@
apiVersion: apiextensions.k8s.io/v1beta1
# Copyright 2020 The Kubernetes Authors.
# SPDX-License-Identifier: Apache-2.0
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
annotations:
api-approved.kubernetes.io: https://github.com/kubernetes-sigs/application/pull/2
controller-gen.kubebuilder.io/version: v0.4.0
creationTimestamp: null
labels:
controller-tools.k8s.io: "1.0"
name: applications.app.k8s.io
spec:
group: app.k8s.io
names:
categories:
- all
kind: Application
listKind: ApplicationList
plural: applications
shortNames:
- app
singular: application
scope: Namespaced
validation:
openAPIV3Schema:
properties:
apiVersion:
type: string
kind:
type: string
metadata:
type: object
spec:
properties:
assemblyPhase:
type: string
componentKinds:
items:
type: object
type: array
descriptor:
properties:
description:
type: string
icons:
items:
properties:
size:
type: string
src:
type: string
type:
type: string
required:
- src
type: object
type: array
keywords:
items:
type: string
type: array
links:
items:
properties:
description:
type: string
url:
type: string
type: object
type: array
maintainers:
items:
properties:
email:
type: string
name:
type: string
url:
type: string
type: object
type: array
notes:
type: string
owners:
items:
properties:
email:
type: string
name:
type: string
url:
type: string
type: object
type: array
type:
type: string
version:
type: string
type: object
info:
items:
versions:
- additionalPrinterColumns:
- description: The type of the application
jsonPath: .spec.descriptor.type
name: Type
type: string
- description: The creation date
jsonPath: .spec.descriptor.version
name: Version
type: string
- description: The application object owns the matched resources
jsonPath: .spec.addOwnerRef
name: Owner
type: boolean
- description: Numbers of components ready
jsonPath: .status.componentsReady
name: Ready
type: string
- description: The creation date
jsonPath: .metadata.creationTimestamp
name: Age
type: date
name: v1beta1
schema:
openAPIV3Schema:
description: Application is the Schema for the applications API
properties:
apiVersion:
description: 'APIVersion defines the versioned schema of this representation
of an object. Servers should convert recognized schemas to the latest
internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
type: string
kind:
description: 'Kind is a string value representing the REST resource this
object represents. Servers may infer this from the endpoint the client
submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
type: string
metadata:
type: object
spec:
description: ApplicationSpec defines the specification for an Application.
properties:
addOwnerRef:
description: AddOwnerRef objects - flag to indicate if we need to
add OwnerRefs to matching objects Matching is done by using Selector
to query all ComponentGroupKinds
type: boolean
assemblyPhase:
description: AssemblyPhase represents the current phase of the application's
assembly. An empty value is equivalent to "Succeeded".
type: string
componentKinds:
description: ComponentGroupKinds is a list of Kinds for Application's
components (e.g. Deployments, Pods, Services, CRDs). It can be used
in conjunction with the Application's Selector to list or watch
the Applications components.
items:
description: GroupKind specifies a Group and a Kind, but does not
force a version. This is useful for identifying concepts during
lookup stages without having partially valid types
properties:
group:
type: string
kind:
type: string
required:
- group
- kind
type: object
type: array
descriptor:
description: Descriptor regroups information and metadata about an
application.
properties:
name:
description:
description: Description is a brief string description of the
Application.
type: string
icons:
description: Icons is an optional list of icons for an application.
Icon information includes the source, size, and mime type.
items:
description: ImageSpec contains information about an image used
as an icon.
properties:
size:
description: (optional) The size of the image in pixels
(e.g., 25x25).
type: string
src:
description: The source for image represented as either
an absolute URL to the image or a Data URL containing
the image. Data URLs are defined in RFC 2397.
type: string
type:
description: (optional) The mine type of the image (e.g.,
"image/png").
type: string
required:
- src
type: object
type: array
keywords:
description: Keywords is an optional list of key words associated
with the application (e.g. MySQL, RDBMS, database).
items:
type: string
type: array
links:
description: Links are a list of descriptive URLs intended to
be used to surface additional documentation, dashboards, etc.
items:
description: Link contains information about an URL to surface
documentation, dashboards, etc.
properties:
description:
description: Description is human readable content explaining
the purpose of the link.
type: string
url:
description: Url typically points at a website address.
type: string
type: object
type: array
maintainers:
description: Maintainers is an optional list of maintainers of
the application. The maintainers in this list maintain the the
source code, images, and package for the application.
items:
description: ContactData contains information about an individual
or organization.
properties:
email:
description: Email is the email address.
type: string
name:
description: Name is the descriptive name.
type: string
url:
description: Url could typically be a website address.
type: string
type: object
type: array
notes:
description: Notes contain a human readable snippets intended
as a quick start for the users of the Application. CommonMark
markdown syntax may be used for rich text representation.
type: string
owners:
description: Owners is an optional list of the owners of the installed
application. The owners of the application should be contacted
in the event of a planned or unplanned disruption affecting
the application.
items:
description: ContactData contains information about an individual
or organization.
properties:
email:
description: Email is the email address.
type: string
name:
description: Name is the descriptive name.
type: string
url:
description: Url could typically be a website address.
type: string
type: object
type: array
type:
description: Type is the type of the application (e.g. WordPress,
MySQL, Cassandra).
type: string
value:
version:
description: Version is an optional version indicator for the
Application.
type: string
valueFrom:
properties:
configMapKeyRef:
properties:
apiVersion:
type: object
info:
description: Info contains human readable key,value pairs for the
Application.
items:
description: InfoItem is a human readable key,value pair containing
important information about how to access the Application.
properties:
name:
description: Name is a human readable title for this piece of
information.
type: string
type:
description: Type of the value for this InfoItem.
type: string
value:
description: Value is human readable content.
type: string
valueFrom:
description: ValueFrom defines a reference to derive the value
from another source.
properties:
configMapKeyRef:
description: Selects a key of a ConfigMap.
properties:
apiVersion:
description: API version of the referent.
type: string
fieldPath:
description: 'If referring to a piece of an object instead
of an entire object, this string should contain a
valid JSON/Go field access statement, such as desiredState.manifest.containers[2].
For example, if the object reference is to a container
within a pod, this would take on a value like: "spec.containers{name}"
(where "name" refers to the name of the container
that triggered the event) or if no container name
is specified "spec.containers[2]" (container with
index 2 in this pod). This syntax is chosen only to
have some well-defined way of referencing a part of
an object. TODO: this design is not final and this
field is subject to change in the future.'
type: string
key:
description: The key to select.
type: string
kind:
description: 'Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
type: string
name:
description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'
type: string
namespace:
description: 'Namespace of the referent. More info:
https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/'
type: string
resourceVersion:
description: 'Specific resourceVersion to which this
reference is made, if any. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency'
type: string
uid:
description: 'UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids'
type: string
type: object
ingressRef:
description: Select an Ingress.
properties:
apiVersion:
description: API version of the referent.
type: string
fieldPath:
description: 'If referring to a piece of an object instead
of an entire object, this string should contain a
valid JSON/Go field access statement, such as desiredState.manifest.containers[2].
For example, if the object reference is to a container
within a pod, this would take on a value like: "spec.containers{name}"
(where "name" refers to the name of the container
that triggered the event) or if no container name
is specified "spec.containers[2]" (container with
index 2 in this pod). This syntax is chosen only to
have some well-defined way of referencing a part of
an object. TODO: this design is not final and this
field is subject to change in the future.'
type: string
host:
description: The optional host to select.
type: string
kind:
description: 'Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
type: string
name:
description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'
type: string
namespace:
description: 'Namespace of the referent. More info:
https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/'
type: string
path:
description: The optional HTTP path.
type: string
protocol:
description: Protocol for the ingress
type: string
resourceVersion:
description: 'Specific resourceVersion to which this
reference is made, if any. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency'
type: string
uid:
description: 'UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids'
type: string
type: object
secretKeyRef:
description: Selects a key of a Secret.
properties:
apiVersion:
description: API version of the referent.
type: string
fieldPath:
description: 'If referring to a piece of an object instead
of an entire object, this string should contain a
valid JSON/Go field access statement, such as desiredState.manifest.containers[2].
For example, if the object reference is to a container
within a pod, this would take on a value like: "spec.containers{name}"
(where "name" refers to the name of the container
that triggered the event) or if no container name
is specified "spec.containers[2]" (container with
index 2 in this pod). This syntax is chosen only to
have some well-defined way of referencing a part of
an object. TODO: this design is not final and this
field is subject to change in the future.'
type: string
key:
description: The key to select.
type: string
kind:
description: 'Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
type: string
name:
description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'
type: string
namespace:
description: 'Namespace of the referent. More info:
https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/'
type: string
resourceVersion:
description: 'Specific resourceVersion to which this
reference is made, if any. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency'
type: string
uid:
description: 'UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids'
type: string
type: object
serviceRef:
description: Select a Service.
properties:
apiVersion:
description: API version of the referent.
type: string
fieldPath:
description: 'If referring to a piece of an object instead
of an entire object, this string should contain a
valid JSON/Go field access statement, such as desiredState.manifest.containers[2].
For example, if the object reference is to a container
within a pod, this would take on a value like: "spec.containers{name}"
(where "name" refers to the name of the container
that triggered the event) or if no container name
is specified "spec.containers[2]" (container with
index 2 in this pod). This syntax is chosen only to
have some well-defined way of referencing a part of
an object. TODO: this design is not final and this
field is subject to change in the future.'
type: string
kind:
description: 'Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
type: string
name:
description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'
type: string
namespace:
description: 'Namespace of the referent. More info:
https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/'
type: string
path:
description: The optional HTTP path.
type: string
port:
description: The optional port to select.
format: int32
type: integer
protocol:
description: Protocol for the service
type: string
resourceVersion:
description: 'Specific resourceVersion to which this
reference is made, if any. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency'
type: string
uid:
description: 'UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids'
type: string
type: object
type:
description: Type of source.
type: string
type: object
type: object
type: array
selector:
description: 'Selector is a label query over kinds that created by
the application. It must match the component objects'' labels. More
info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#label-selectors'
properties:
matchExpressions:
description: matchExpressions is a list of label selector requirements.
The requirements are ANDed.
items:
description: A label selector requirement is a selector that
contains values, a key, and an operator that relates the key
and values.
properties:
key:
description: key is the label key that the selector applies
to.
type: string
operator:
description: operator represents a key's relationship to
a set of values. Valid operators are In, NotIn, Exists
and DoesNotExist.
type: string
values:
description: values is an array of string values. If the
operator is In or NotIn, the values array must be non-empty.
If the operator is Exists or DoesNotExist, the values
array must be empty. This array is replaced during a strategic
merge patch.
items:
type: string
fieldPath:
type: string
key:
type: string
kind:
type: string
name:
type: string
namespace:
type: string
resourceVersion:
type: string
uid:
type: string
type: object
ingressRef:
properties:
apiVersion:
type: string
fieldPath:
type: string
host:
type: string
kind:
type: string
name:
type: string
namespace:
type: string
path:
type: string
resourceVersion:
type: string
uid:
type: string
type: object
secretKeyRef:
properties:
apiVersion:
type: string
fieldPath:
type: string
key:
type: string
kind:
type: string
name:
type: string
namespace:
type: string
resourceVersion:
type: string
uid:
type: string
type: object
serviceRef:
properties:
apiVersion:
type: string
fieldPath:
type: string
kind:
type: string
name:
type: string
namespace:
type: string
path:
type: string
port:
format: int32
type: integer
resourceVersion:
type: string
uid:
type: string
type: object
type:
type: string
type: array
required:
- key
- operator
type: object
type: array
matchLabels:
additionalProperties:
type: string
description: matchLabels is a map of {key,value} pairs. A single
{key,value} in the matchLabels map is equivalent to an element
of matchExpressions, whose key field is "key", the operator
is "In", and the values array contains only "value". The requirements
are ANDed.
type: object
type: object
type: array
selector:
type: object
type: object
status:
properties:
components:
items:
properties:
group:
type: string
kind:
type: string
link:
type: string
name:
type: string
status:
type: string
type: object
type: array
conditions:
items:
properties:
lastTransitionTime:
format: date-time
type: string
lastUpdateTime:
format: date-time
type: string
message:
type: string
reason:
type: string
status:
type: string
type:
type: string
required:
- type
- status
type: object
type: array
observedGeneration:
format: int64
type: integer
type: object
version: v1beta1
type: object
status:
description: ApplicationStatus defines controller's the observed state
of Application
properties:
components:
description: Object status array for all matching objects
items:
description: ObjectStatus is a generic status holder for objects
properties:
group:
description: Object group
type: string
kind:
description: Kind of object
type: string
link:
description: Link to object
type: string
name:
description: Name of object
type: string
status:
description: 'Status. Values: InProgress, Ready, Unknown'
type: string
type: object
type: array
componentsReady:
description: 'ComponentsReady: status of the components in the format
ready/total'
type: string
conditions:
description: Conditions represents the latest state of the object
items:
description: Condition describes the state of an object at a certain
point.
properties:
lastTransitionTime:
description: Last time the condition transitioned from one status
to another.
format: date-time
type: string
lastUpdateTime:
description: Last time the condition was probed
format: date-time
type: string
message:
description: A human readable message indicating details about
the transition.
type: string
reason:
description: The reason for the condition's last transition.
type: string
status:
description: Status of the condition, one of True, False, Unknown.
type: string
type:
description: Type of condition.
type: string
required:
- status
- type
type: object
type: array
observedGeneration:
description: ObservedGeneration is the most recent generation observed.
It corresponds to the Object's generation, which is updated on mutation
by the API Server.
format: int64
type: integer
type: object
type: object
served: true
storage: true
subresources:
status: {}
status:
acceptedNames:
kind: ""

View File

@@ -0,0 +1,101 @@
---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
annotations:
controller-gen.kubebuilder.io/version: (devel)
creationTimestamp: null
name: helmapplications.application.kubesphere.io
spec:
group: application.kubesphere.io
names:
kind: HelmApplication
listKind: HelmApplicationList
plural: helmapplications
shortNames:
- happ
singular: helmapplication
scope: Cluster
versions:
- additionalPrinterColumns:
- jsonPath: .spec.name
name: application name
type: string
- jsonPath: .metadata.labels.kubesphere\.io/workspace
name: workspace
type: string
- jsonPath: .status.state
name: State
type: string
- jsonPath: .metadata.creationTimestamp
name: Age
type: date
name: v1alpha1
schema:
openAPIV3Schema:
description: HelmApplication is the Schema for the helmapplications API
properties:
apiVersion:
description: 'APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
type: string
kind:
description: 'Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
type: string
metadata:
type: object
spec:
description: HelmApplicationSpec defines the desired state of HelmApplication
properties:
abstraction:
description: info from frontend
type: string
appHome:
type: string
attachments:
description: attachments id
items:
type: string
type: array
description:
description: description from chart's description or frontend
type: string
icon:
description: The attachment id of the icon
type: string
name:
description: the name of the helm application
type: string
required:
- name
type: object
status:
description: HelmApplicationStatus defines the observed state of HelmApplication
properties:
latestVersion:
description: If this application belong to appStore, latestVersion is the the latest version of the active application version. otherwise latestVersion is the latest version of all application version
type: string
state:
description: 'the state of the helm application: draft, submitted, passed, rejected, suspended, active'
type: string
statusTime:
format: date-time
type: string
updateTime:
format: date-time
type: string
required:
- statusTime
- updateTime
type: object
type: object
served: true
storage: true
subresources:
status: {}
status:
acceptedNames:
kind: ""
plural: ""
conditions: []
storedVersions: []

View File

@@ -0,0 +1,205 @@
---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
annotations:
controller-gen.kubebuilder.io/version: (devel)
creationTimestamp: null
name: helmapplicationversions.application.kubesphere.io
spec:
group: application.kubesphere.io
names:
kind: HelmApplicationVersion
listKind: HelmApplicationVersionList
plural: helmapplicationversions
shortNames:
- happver
singular: helmapplicationversion
scope: Cluster
versions:
- additionalPrinterColumns:
- jsonPath: .spec.name
name: application name
type: string
- jsonPath: .status.state
name: State
type: string
- jsonPath: .metadata.creationTimestamp
name: Age
type: date
name: v1alpha1
schema:
openAPIV3Schema:
description: HelmApplicationVersion is the Schema for the helmapplicationversions API
properties:
apiVersion:
description: 'APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
type: string
kind:
description: 'Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
type: string
metadata:
type: object
spec:
description: HelmApplicationVersionSpec defines the desired state of HelmApplicationVersion
properties:
annotations:
additionalProperties:
type: string
description: Annotations are additional mappings uninterpreted by Helm, made available for inspection by other applications.
type: object
apiVersion:
description: The API Version of this chart.
type: string
appVersion:
description: The version of the application enclosed inside of this chart.
type: string
condition:
description: The condition to check to enable chart
type: string
created:
description: chart create time
format: date-time
type: string
data:
description: raw data of chart, it will !!!NOT!!! be save to etcd
format: byte
type: string
dataKey:
description: dataKey in the storage
type: string
dependencies:
description: Dependencies are a list of dependencies for a chart.
items:
description: Dependency describes a chart upon which another chart depends. Dependencies can be used to express developer intent, or to capture the state of a chart.
properties:
alias:
description: Alias usable alias to be used for the chart
type: string
condition:
description: A yaml path that resolves to a boolean, used for enabling/disabling charts (e.g. subchart1.enabled )
type: string
enabled:
description: Enabled bool determines if chart should be loaded
type: boolean
name:
description: Name is the name of the dependency. This must mach the name in the dependency's Chart.yaml.
type: string
repository:
description: The URL to the repository. Appending `index.yaml` to this string should result in a URL that can be used to fetch the repository index.
type: string
tags:
description: Tags can be used to group charts for enabling/disabling together
items:
type: string
type: array
version:
description: Version is the version (range) of this chart. A lock file will always produce a single version, while a dependency may contain a semantic version range.
type: string
required:
- name
- repository
type: object
type: array
deprecated:
description: Whether or not this chart is deprecated
type: boolean
description:
description: A one-sentence description of the chart
type: string
digest:
description: chart digest
type: string
home:
description: The URL to a relevant project page, git repo, or contact person
type: string
icon:
description: The URL to an icon file.
type: string
keywords:
description: A list of string keywords
items:
type: string
type: array
kubeVersion:
description: KubeVersion is a SemVer constraint specifying the version of Kubernetes required.
type: string
maintainers:
description: A list of name and URL/email address combinations for the maintainer(s)
items:
description: Maintainer describes a Chart maintainer.
properties:
email:
description: Email is an optional email address to contact the named maintainer
type: string
name:
description: Name is a user name or organization name
type: string
url:
description: URL is an optional URL to an address for the named maintainer
type: string
type: object
type: array
name:
description: The name of the chart
type: string
sources:
description: Source is the URL to the source code of this chart
items:
type: string
type: array
tags:
description: The tags to check to enable chart
type: string
type:
description: 'Specifies the chart type: application or library'
type: string
urls:
description: chart url
items:
type: string
type: array
version:
description: A SemVer 2 conformant version string of the chart
type: string
type: object
status:
description: HelmApplicationVersionStatus defines the observed state of HelmApplicationVersion
properties:
audit:
items:
properties:
message:
description: audit message
type: string
operator:
description: audit operator
type: string
operatorType:
type: string
state:
description: 'audit state: submitted, passed, draft, active, rejected, suspended'
type: string
time:
description: audit time
format: date-time
type: string
required:
- time
type: object
type: array
state:
type: string
type: object
type: object
served: true
storage: true
subresources:
status: {}
status:
acceptedNames:
kind: ""
plural: ""
conditions: []
storedVersions: []

View File

@@ -0,0 +1,76 @@
---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
annotations:
controller-gen.kubebuilder.io/version: (devel)
creationTimestamp: null
name: helmcategories.application.kubesphere.io
spec:
group: application.kubesphere.io
names:
kind: HelmCategory
listKind: HelmCategoryList
plural: helmcategories
shortNames:
- hctg
singular: helmcategory
scope: Cluster
versions:
- additionalPrinterColumns:
- jsonPath: .spec.name
name: name
type: string
- jsonPath: .status.total
name: total
type: string
- jsonPath: .metadata.creationTimestamp
name: Age
type: date
name: v1alpha1
schema:
openAPIV3Schema:
description: HelmCategory is the Schema for the helmcategories API
properties:
apiVersion:
description: 'APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
type: string
kind:
description: 'Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
type: string
metadata:
type: object
spec:
description: HelmCategorySpec defines the desired state of HelmRepo
properties:
description:
description: info from frontend
type: string
locale:
type: string
name:
description: name of the category
type: string
required:
- name
type: object
status:
properties:
total:
description: total helmapplications belong to this category
type: integer
required:
- total
type: object
type: object
served: true
storage: true
subresources:
status: {}
status:
acceptedNames:
kind: ""
plural: ""
conditions: []
storedVersions: []

View File

@@ -0,0 +1,145 @@
---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
annotations:
controller-gen.kubebuilder.io/version: (devel)
creationTimestamp: null
name: helmreleases.application.kubesphere.io
spec:
group: application.kubesphere.io
names:
kind: HelmRelease
listKind: HelmReleaseList
plural: helmreleases
shortNames:
- hrls
singular: helmrelease
scope: Cluster
versions:
- additionalPrinterColumns:
- jsonPath: .spec.name
name: Release Name
type: string
- jsonPath: .metadata.labels.kubesphere\.io/workspace
name: Workspace
type: string
- jsonPath: .metadata.labels.kubesphere\.io/cluster
name: Cluster
type: string
- jsonPath: .metadata.labels.kubesphere\.io/namespace
name: Namespace
type: string
- jsonPath: .status.state
name: State
type: string
- jsonPath: .metadata.creationTimestamp
name: Age
type: date
name: v1alpha1
schema:
openAPIV3Schema:
description: HelmRelease is the Schema for the helmreleases API
properties:
apiVersion:
description: 'APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
type: string
kind:
description: 'Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
type: string
metadata:
type: object
spec:
description: HelmReleaseSpec defines the desired state of HelmRelease
properties:
appId:
description: id of the helmapplication
type: string
appVerId:
description: application version id
type: string
chartAppVer:
description: appVersion from Chart.yaml
type: string
chartName:
description: The name of the chart which will be installed.
type: string
chartVersion:
description: Specify the exact chart version to install. If this is not specified, the latest version is installed
type: string
description:
description: Message got from frontend
type: string
name:
description: Name of the release
type: string
repoId:
description: id of the repo
type: string
values:
description: helm release values.yaml
format: byte
type: string
version:
description: expected release version, when this version is not equal status.version, the release need upgrade this filed should be modified when any filed of the spec modified.
type: integer
required:
- chartName
- chartVersion
- name
- version
type: object
status:
description: HelmReleaseStatus defines the observed state of HelmRelease
properties:
deployStatus:
description: deploy status list of history, which will store at most 10 state
items:
properties:
deployTime:
description: deploy time, upgrade time or check status time
format: date-time
type: string
message:
description: A human readable message indicating details about why the release is in this state.
type: string
state:
description: current state of the release
type: string
required:
- deployTime
- state
type: object
type: array
lastDeployed:
description: last deploy time or upgrade time
format: date-time
type: string
lastUpdate:
description: last update time
format: date-time
type: string
message:
description: A human readable message indicating details about why the release is in this state.
type: string
state:
description: current state
type: string
version:
description: current release version
type: integer
required:
- state
type: object
type: object
served: true
storage: true
subresources:
status: {}
status:
acceptedNames:
kind: ""
plural: ""
conditions: []
storedVersions: []

View File

@@ -0,0 +1,142 @@
---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
annotations:
controller-gen.kubebuilder.io/version: (devel)
creationTimestamp: null
name: helmrepos.application.kubesphere.io
spec:
group: application.kubesphere.io
names:
kind: HelmRepo
listKind: HelmRepoList
plural: helmrepos
shortNames:
- hrepo
singular: helmrepo
scope: Cluster
versions:
- additionalPrinterColumns:
- jsonPath: .spec.name
name: name
type: string
- jsonPath: .metadata.labels.kubesphere\.io/workspace
name: Workspace
type: string
- jsonPath: .spec.url
name: url
type: string
- jsonPath: .status.state
name: State
type: string
- jsonPath: .metadata.creationTimestamp
name: Age
type: date
name: v1alpha1
schema:
openAPIV3Schema:
description: HelmRepo is the Schema for the helmrepoes API
properties:
apiVersion:
description: 'APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
type: string
kind:
description: 'Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
type: string
metadata:
type: object
spec:
description: HelmRepoSpec defines the desired state of HelmRepo
properties:
credential:
description: helm repo credential
properties:
accessKeyID:
type: string
caFile:
description: verify certificates of HTTPS-enabled servers using this CA bundle
type: string
certFile:
description: identify HTTPS client using this SSL certificate file
type: string
insecureSkipTLSVerify:
description: skip tls certificate checks for the repository, default is ture
type: boolean
keyFile:
description: identify HTTPS client using this SSL key file
type: string
password:
description: chart repository password
type: string
secretAccessKey:
type: string
username:
description: chart repository username
type: string
type: object
description:
description: chart repo description from frontend
type: string
name:
description: name of the repo
type: string
syncPeriod:
description: sync period in seconds, no sync when SyncPeriod=0, the minimum SyncPeriod is 180s
type: integer
url:
description: helm repo url
type: string
version:
description: expected repo version, when this version is not equal status.version, the repo need upgrade this filed should be modified when any filed of the spec modified.
type: integer
required:
- name
- url
type: object
status:
description: HelmRepoStatus defines the observed state of HelmRepo
properties:
data:
description: repo index
type: string
lastUpdateTime:
description: status last update time
format: date-time
type: string
state:
description: current state of the repo, successful, failed or syncing
type: string
syncState:
description: sync state list of history, which will store at most 10 state
items:
properties:
message:
description: A human readable message indicating details about why the repo is in this state.
type: string
state:
description: 'last sync state, valid state are: "failed", "success", and ""'
type: string
syncTime:
format: date-time
type: string
required:
- syncTime
type: object
type: array
version:
description: if status.version!=spec.Version, we need sync the repo now
type: integer
type: object
type: object
served: true
storage: true
subresources:
status: {}
status:
acceptedNames:
kind: ""
plural: ""
conditions: []
storedVersions: []

View File

@@ -0,0 +1,146 @@
---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
annotations:
controller-gen.kubebuilder.io/version: (devel)
creationTimestamp: null
name: clusters.cluster.kubesphere.io
spec:
group: cluster.kubesphere.io
names:
kind: Cluster
listKind: ClusterList
plural: clusters
singular: cluster
scope: Cluster
versions:
- additionalPrinterColumns:
- jsonPath: .spec.joinFederation
name: Federated
type: boolean
- jsonPath: .spec.provider
name: Provider
type: string
- jsonPath: .spec.enable
name: Active
type: boolean
- jsonPath: .status.kubernetesVersion
name: Version
type: string
name: v1alpha1
schema:
openAPIV3Schema:
description: Cluster is the schema for the clusters API
properties:
apiVersion:
description: 'APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
type: string
kind:
description: 'Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
type: string
metadata:
type: object
spec:
properties:
connection:
description: Connection holds info to connect to the member cluster
properties:
kubeconfig:
description: KubeConfig content used to connect to cluster api server Should provide this field explicitly if connection type is direct. Will be populated by ks-proxy if connection type is proxy.
format: byte
type: string
kubernetesAPIEndpoint:
description: 'Kubernetes API Server endpoint. Example: https://10.10.0.1:6443 Should provide this field explicitly if connection type is direct. Will be populated by ks-apiserver if connection type is proxy.'
type: string
kubernetesAPIServerPort:
description: KubeAPIServerPort is the port which listens for forwarding kube-apiserver traffic Only applicable when connection type is proxy.
type: integer
kubesphereAPIEndpoint:
description: 'KubeSphere API Server endpoint. Example: http://10.10.0.11:8080 Should provide this field explicitly if connection type is direct. Will be populated by ks-apiserver if connection type is proxy.'
type: string
kubesphereAPIServerPort:
description: KubeSphereAPIServerPort is the port which listens for forwarding kubesphere apigateway traffic Only applicable when connection type is proxy.
type: integer
token:
description: Token used by agents of member cluster to connect to host cluster proxy. This field is populated by apiserver only if connection type is proxy.
type: string
type:
description: type defines how host cluster will connect to host cluster ConnectionTypeDirect means direct connection, this requires kubeconfig and kubesphere apiserver endpoint provided ConnectionTypeProxy means using kubesphere proxy, no kubeconfig or kubesphere apiserver endpoint required
type: string
type: object
enable:
description: Desired state of the cluster
type: boolean
joinFederation:
description: Join cluster as a kubefed cluster
type: boolean
provider:
description: Provider of the cluster, this field is just for description
type: string
type: object
status:
properties:
conditions:
description: Represents the latest available observations of a cluster's current state.
items:
properties:
lastTransitionTime:
description: Last time the condition transitioned from one status to another.
format: date-time
type: string
lastUpdateTime:
description: The last time this condition was updated.
format: date-time
type: string
message:
description: A human readable message indicating details about the transition.
type: string
reason:
description: The reason for the condition's last transition.
type: string
status:
description: Status of the condition, one of True, False, Unknown.
type: string
type:
description: Type of the condition
type: string
required:
- status
- type
type: object
type: array
configz:
additionalProperties:
type: boolean
description: Configz is status of components enabled in the member cluster. This is synchronized with member cluster every amount of time, like 5 minutes.
type: object
kubeSphereVersion:
description: GitVersion of the /kapis/version api response, this field is populated by cluster controller
type: string
kubernetesVersion:
description: GitVersion of the kubernetes cluster, this field is populated by cluster controller
type: string
nodeCount:
description: Count of the kubernetes cluster nodes This field may not reflect the instant status of the cluster.
type: integer
region:
description: Region is the name of the region in which all of the nodes in the cluster exist. e.g. 'us-east1'.
type: string
zones:
description: Zones are the names of availability zones in which the nodes of the cluster exist, e.g. 'us-east1-a'.
items:
type: string
type: array
type: object
type: object
served: true
storage: true
subresources: {}
status:
acceptedNames:
kind: ""
plural: ""
conditions: []
storedVersions: []

View File

@@ -0,0 +1,52 @@
---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
annotations:
controller-gen.kubebuilder.io/version: (devel)
creationTimestamp: null
name: devopsprojects.devops.kubesphere.io
spec:
group: devops.kubesphere.io
names:
categories:
- devops
kind: DevOpsProject
listKind: DevOpsProjectList
plural: devopsprojects
singular: devopsproject
scope: Cluster
versions:
- name: v1alpha3
schema:
openAPIV3Schema:
description: DevOpsProject is the Schema for the devopsprojects API
properties:
apiVersion:
description: 'APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
type: string
kind:
description: 'Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
type: string
metadata:
type: object
spec:
description: DevOpsProjectSpec defines the desired state of DevOpsProject
type: object
status:
description: DevOpsProjectStatus defines the observed state of DevOpsProject
properties:
adminNamespace:
description: 'INSERT ADDITIONAL STATUS FIELD - define observed state of cluster Important: Run "make" to regenerate code after modifying this file'
type: string
type: object
type: object
served: true
storage: true
status:
acceptedNames:
kind: ""
plural: ""
conditions: []
storedVersions: []

View File

@@ -0,0 +1,300 @@
---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
annotations:
controller-gen.kubebuilder.io/version: (devel)
creationTimestamp: null
name: pipelines.devops.kubesphere.io
spec:
group: devops.kubesphere.io
names:
kind: Pipeline
listKind: PipelineList
plural: pipelines
singular: pipeline
scope: Namespaced
versions:
- name: v1alpha3
schema:
openAPIV3Schema:
description: Pipeline is the Schema for the pipelines API
properties:
apiVersion:
description: 'APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
type: string
kind:
description: 'Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
type: string
metadata:
type: object
spec:
description: PipelineSpec defines the desired state of Pipeline
properties:
multi_branch_pipeline:
properties:
bitbucket_server_source:
properties:
api_uri:
type: string
credential_id:
type: string
discover_branches:
type: integer
discover_pr_from_forks:
properties:
strategy:
type: integer
trust:
type: integer
type: object
discover_pr_from_origin:
type: integer
discover_tags:
type: boolean
git_clone_option:
properties:
depth:
type: integer
shallow:
type: boolean
timeout:
type: integer
type: object
owner:
type: string
regex_filter:
type: string
repo:
type: string
scm_id:
type: string
type: object
description:
type: string
discarder:
properties:
days_to_keep:
type: string
num_to_keep:
type: string
type: object
git_source:
properties:
credential_id:
type: string
discover_branches:
type: boolean
discover_tags:
type: boolean
git_clone_option:
properties:
depth:
type: integer
shallow:
type: boolean
timeout:
type: integer
type: object
regex_filter:
type: string
scm_id:
type: string
url:
type: string
type: object
github_source:
description: GithubSource and BitbucketServerSource have the same structure, but we don't use one due to crd errors
properties:
api_uri:
type: string
credential_id:
type: string
discover_branches:
type: integer
discover_pr_from_forks:
properties:
strategy:
type: integer
trust:
type: integer
type: object
discover_pr_from_origin:
type: integer
discover_tags:
type: boolean
git_clone_option:
properties:
depth:
type: integer
shallow:
type: boolean
timeout:
type: integer
type: object
owner:
type: string
regex_filter:
type: string
repo:
type: string
scm_id:
type: string
type: object
gitlab_source:
properties:
api_uri:
type: string
credential_id:
type: string
discover_branches:
type: integer
discover_pr_from_forks:
properties:
strategy:
type: integer
trust:
type: integer
type: object
discover_pr_from_origin:
type: integer
discover_tags:
type: boolean
git_clone_option:
properties:
depth:
type: integer
shallow:
type: boolean
timeout:
type: integer
type: object
owner:
type: string
regex_filter:
type: string
repo:
type: string
scm_id:
type: string
server_name:
type: string
type: object
multibranch_job_trigger:
properties:
create_action_job_to_trigger:
type: string
delete_action_job_to_trigger:
type: string
type: object
name:
type: string
script_path:
type: string
single_svn_source:
properties:
credential_id:
type: string
remote:
type: string
scm_id:
type: string
type: object
source_type:
type: string
svn_source:
properties:
credential_id:
type: string
excludes:
type: string
includes:
type: string
remote:
type: string
scm_id:
type: string
type: object
timer_trigger:
properties:
cron:
description: user in no scm job
type: string
interval:
description: use in multi-branch job
type: string
type: object
required:
- name
- script_path
- source_type
type: object
pipeline:
properties:
description:
type: string
disable_concurrent:
type: boolean
discarder:
properties:
days_to_keep:
type: string
num_to_keep:
type: string
type: object
jenkinsfile:
type: string
name:
type: string
parameters:
items:
properties:
default_value:
type: string
description:
type: string
name:
type: string
type:
type: string
required:
- name
- type
type: object
type: array
remote_trigger:
properties:
token:
type: string
type: object
timer_trigger:
properties:
cron:
description: user in no scm job
type: string
interval:
description: use in multi-branch job
type: string
type: object
required:
- name
type: object
type:
description: 'INSERT ADDITIONAL SPEC FIELDS - desired state of cluster Important: Run "make" to regenerate code after modifying this file'
type: string
required:
- type
type: object
status:
description: PipelineStatus defines the observed state of Pipeline
type: object
type: object
served: true
storage: true
status:
acceptedNames:
kind: ""
plural: ""
conditions: []
storedVersions: []

View File

@@ -0,0 +1,81 @@
---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
annotations:
controller-gen.kubebuilder.io/version: (devel)
creationTimestamp: null
name: s2ibinaries.devops.kubesphere.io
spec:
group: devops.kubesphere.io
names:
kind: S2iBinary
listKind: S2iBinaryList
plural: s2ibinaries
singular: s2ibinary
scope: Namespaced
versions:
- additionalPrinterColumns:
- jsonPath: .spec.fileName
name: FileName
type: string
- jsonPath: .spec.md5
name: MD5
type: string
- jsonPath: .spec.size
name: Size
type: string
- jsonPath: .status.phase
name: Phase
type: string
name: v1alpha1
schema:
openAPIV3Schema:
description: S2iBinary is the Schema for the s2ibinaries API
properties:
apiVersion:
description: 'APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
type: string
kind:
description: 'Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
type: string
metadata:
type: object
spec:
description: S2iBinarySpec defines the desired state of S2iBinary
properties:
downloadURL:
description: DownloadURL in KubeSphere
type: string
fileName:
description: FileName is filename of binary
type: string
md5:
description: MD5 is Binary's MD5 Hash
type: string
size:
description: Size is the file size of file
type: string
uploadTimeStamp:
description: UploadTime is last upload time
format: date-time
type: string
type: object
status:
description: S2iBinaryStatus defines the observed state of S2iBinary
properties:
phase:
description: Phase is status of S2iBinary . Possible value is "Ready","UnableToDownload"
type: string
type: object
type: object
served: true
storage: true
subresources: {}
status:
acceptedNames:
kind: ""
plural: ""
conditions: []
storedVersions: []

View File

@@ -0,0 +1,475 @@
---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
annotations:
controller-gen.kubebuilder.io/version: (devel)
creationTimestamp: null
name: s2ibuilders.devops.kubesphere.io
spec:
group: devops.kubesphere.io
names:
kind: S2iBuilder
listKind: S2iBuilderList
plural: s2ibuilders
shortNames:
- s2ib
singular: s2ibuilder
scope: Namespaced
versions:
- additionalPrinterColumns:
- jsonPath: .status.runCount
name: RunCount
type: integer
- jsonPath: .status.lastRunState
name: LastRunState
type: string
- jsonPath: .status.lastRunName
name: LastRunName
type: string
- jsonPath: .status.lastRunStartTime
name: LastRunStartTime
type: date
name: v1alpha1
schema:
openAPIV3Schema:
description: S2iBuilder is the Schema for the s2ibuilders API
properties:
apiVersion:
description: 'APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
type: string
kind:
description: 'Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
type: string
metadata:
type: object
spec:
description: S2iBuilderSpec defines the desired state of S2iBuilder
properties:
config:
description: 'INSERT ADDITIONAL SPEC FIELDS - desired state of cluster Important: Run "make" to regenerate code after modifying this file'
properties:
addHost:
description: AddHost Add a line to /etc/hosts for test purpose or private use in LAN. Its format is host:IP,multiple hosts can be added by using multiple --add-host
items:
type: string
type: array
asDockerfile:
description: AsDockerfile indicates the path where the Dockerfile should be written instead of building a new image.
type: string
assembleUser:
description: AssembleUser specifies the user to run the assemble script in container
type: string
blockOnBuild:
description: BlockOnBuild prevents s2i from performing a docker build operation if one is necessary to execute ONBUILD commands, or to layer source code into the container for images that don't have a tar binary available, if the image contains ONBUILD commands that would be executed.
type: boolean
branchExpression:
description: Regular expressions, ignoring names that do not match the provided regular expression
type: string
buildVolumes:
description: BuildVolumes specifies a list of volumes to mount to container running the build.
items:
type: string
type: array
builderBaseImageVersion:
description: BuilderBaseImageVersion provides optional version information about the builder base image.
type: string
builderImage:
description: BuilderImage describes which image is used for building the result images.
type: string
builderImageVersion:
description: BuilderImageVersion provides optional version information about the builder image.
type: string
builderPullPolicy:
description: BuilderPullPolicy specifies when to pull the builder image
type: string
callbackUrl:
description: CallbackURL is a URL which is called upon successful build to inform about that fact.
type: string
cgroupLimits:
description: CGroupLimits describes the cgroups limits that will be applied to any containers run by s2i.
properties:
cpuPeriod:
format: int64
type: integer
cpuQuota:
format: int64
type: integer
cpuShares:
format: int64
type: integer
memoryLimitBytes:
format: int64
type: integer
memorySwap:
format: int64
type: integer
parent:
type: string
required:
- cpuPeriod
- cpuQuota
- cpuShares
- memoryLimitBytes
- memorySwap
- parent
type: object
contextDir:
description: Specify a relative directory inside the application repository that should be used as a root directory for the application.
type: string
description:
description: Description is a result image description label. The default is no description.
type: string
destination:
description: Destination specifies a location where the untar operation will place its artifacts.
type: string
displayName:
description: DisplayName is a result image display-name label. This defaults to the output image name.
type: string
dockerConfig:
description: DockerConfig describes how to access host docker daemon.
properties:
caFile:
description: CAFile is the certificate authority file path for a TLS connection
type: string
certFile:
description: CertFile is the certificate file path for a TLS connection
type: string
endPoint:
description: Endpoint is the docker network endpoint or socket
type: string
keyFile:
description: KeyFile is the key file path for a TLS connection
type: string
tlsVerify:
description: TLSVerify indicates if TLS peer must be verified
type: boolean
useTLS:
description: UseTLS indicates if TLS must be used
type: boolean
required:
- caFile
- certFile
- endPoint
- keyFile
- tlsVerify
- useTLS
type: object
dockerNetworkMode:
description: DockerNetworkMode is used to set the docker network setting to --net=container:<id> when the builder is invoked from a container.
type: string
dropCapabilities:
description: DropCapabilities contains a list of capabilities to drop when executing containers
items:
type: string
type: array
environment:
description: Environment is a map of environment variables to be passed to the image.
items:
description: EnvironmentSpec specifies a single environment variable.
properties:
name:
type: string
value:
type: string
required:
- name
- value
type: object
type: array
excludeRegExp:
description: ExcludeRegExp contains a string representation of the regular expression desired for deciding which files to exclude from the tar stream
type: string
export:
description: Export Push the result image to specify image registry in tag
type: boolean
gitSecretRef:
description: GitSecretRef is the BasicAuth Secret of Git Clone
properties:
name:
description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'
type: string
type: object
hasOnBuild:
description: HasOnBuild will be set to true if the builder image contains ONBUILD instructions
type: boolean
imageName:
description: ImageName Contains the registry address and reponame, tag should set by field tag alone
type: string
imageScriptsUrl:
description: ImageScriptsURL is the default location to find the assemble/run scripts for a builder image. This url can be a reference within the builder image if the scheme is specified as image://
type: string
imageWorkDir:
description: ImageWorkDir is the default working directory for the builder image.
type: string
incremental:
description: Incremental describes whether to try to perform incremental build.
type: boolean
incrementalAuthentication:
description: IncrementalAuthentication holds the authentication information for pulling the previous image from private repositories
properties:
email:
type: string
password:
type: string
secretRef:
description: LocalObjectReference contains enough information to let you locate the referenced object inside the same namespace.
properties:
name:
description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'
type: string
type: object
serverAddress:
type: string
username:
type: string
type: object
incrementalFromTag:
description: IncrementalFromTag sets an alternative image tag to look for existing artifacts. Tag is used by default if this is not set.
type: string
injections:
description: Injections specifies a list source/destination folders that are injected to the container that runs assemble. All files we inject will be truncated after the assemble script finishes.
items:
description: VolumeSpec represents a single volume mount point.
properties:
destination:
description: Destination is the path to mount the volume to - absolute or relative.
type: string
keep:
description: Keep indicates if the mounted data should be kept in the final image.
type: boolean
source:
description: Source is a reference to the volume source.
type: string
type: object
type: array
isBinaryURL:
description: IsBinaryURL explain the type of SourceURL. If it is IsBinaryURL, it will download the file directly without using git.
type: boolean
keepSymlinks:
description: KeepSymlinks indicates to copy symlinks as symlinks. Default behavior is to follow symlinks and copy files by content.
type: boolean
labelNamespace:
description: LabelNamespace provides the namespace under which the labels will be generated.
type: string
labels:
additionalProperties:
type: string
description: Labels specify labels and their values to be applied to the resulting image. Label keys must have non-zero length. The labels defined here override generated labels in case they have the same name.
type: object
layeredBuild:
description: LayeredBuild describes if this is build which layered scripts and sources on top of BuilderImage.
type: boolean
nodeAffinityKey:
description: The key of Node Affinity.
type: string
nodeAffinityValues:
description: The values of Node Affinity.
items:
type: string
type: array
outputBuildResult:
description: Whether output build result to status.
type: boolean
outputImageName:
description: OutputImageName is a result image name without tag, default is latest. tag will append to ImageName in the end
type: string
preserveWorkingDir:
description: PreserveWorkingDir describes if working directory should be left after processing.
type: boolean
previousImagePullPolicy:
description: PreviousImagePullPolicy specifies when to pull the previously build image when doing incremental build
type: string
pullAuthentication:
description: PullAuthentication holds the authentication information for pulling the Docker images from private repositories
properties:
email:
type: string
password:
type: string
secretRef:
description: LocalObjectReference contains enough information to let you locate the referenced object inside the same namespace.
properties:
name:
description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'
type: string
type: object
serverAddress:
type: string
username:
type: string
type: object
pushAuthentication:
description: PullAuthentication holds the authentication information for pulling the Docker images from private repositories
properties:
email:
type: string
password:
type: string
secretRef:
description: LocalObjectReference contains enough information to let you locate the referenced object inside the same namespace.
properties:
name:
description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'
type: string
type: object
serverAddress:
type: string
username:
type: string
type: object
removePreviousImage:
description: RemovePreviousImage describes if previous image should be removed after successful build. This applies only to incremental builds.
type: boolean
revisionId:
description: The RevisionId is a branch name or a SHA-1 hash of every important thing about the commit
type: string
runImage:
description: RunImage will trigger a "docker run ..." invocation of the produced image so the user can see if it operates as he would expect
type: boolean
runtimeArtifacts:
description: RuntimeArtifacts specifies a list of source/destination pairs that will be copied from builder to a runtime image. Source can be a file or directory. Destination must be a directory. Regardless whether it is an absolute or relative path, it will be placed into image's WORKDIR. Destination also can be empty or equals to ".", in this case it just refers to a root of WORKDIR. In case it's empty, S2I will try to get this list from io.openshift.s2i.assemble-input-files label on a RuntimeImage.
items:
description: VolumeSpec represents a single volume mount point.
properties:
destination:
description: Destination is the path to mount the volume to - absolute or relative.
type: string
keep:
description: Keep indicates if the mounted data should be kept in the final image.
type: boolean
source:
description: Source is a reference to the volume source.
type: string
type: object
type: array
runtimeAuthentication:
description: RuntimeAuthentication holds the authentication information for pulling the runtime Docker images from private repositories.
properties:
email:
type: string
password:
type: string
secretRef:
description: LocalObjectReference contains enough information to let you locate the referenced object inside the same namespace.
properties:
name:
description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?'
type: string
type: object
serverAddress:
type: string
username:
type: string
type: object
runtimeImage:
description: RuntimeImage specifies the image that will be a base for resulting image and will be used for running an application. By default, BuilderImage is used for building and running, but the latter may be overridden.
type: string
runtimeImagePullPolicy:
description: RuntimeImagePullPolicy specifies when to pull a runtime image.
type: string
scriptDownloadProxyConfig:
description: ScriptDownloadProxyConfig optionally specifies the http and https proxy to use when downloading scripts
properties:
httpProxy:
type: string
httpsProxy:
type: string
type: object
scriptsUrl:
description: ScriptsURL is a URL describing where to fetch the S2I scripts from during build process. This url can be a reference within the builder image if the scheme is specified as image://
type: string
secretCode:
description: SecretCode
type: string
securityOpt:
description: SecurityOpt are passed as options to the docker containers launched by s2i.
items:
type: string
type: array
sourceUrl:
description: SourceURL is url of the codes such as https://github.com/a/b.git
type: string
tag:
description: Tag is a result image tag name.
type: string
taintKey:
description: The name of taint.
type: string
usage:
description: Usage allows for properly shortcircuiting s2i logic when `s2i usage` is invoked
type: boolean
workingDir:
description: WorkingDir describes temporary directory used for downloading sources, scripts and tar operations.
type: string
workingSourceDir:
description: WorkingSourceDir describes the subdirectory off of WorkingDir set up during the repo download that is later used as the root for ignore processing
type: string
required:
- imageName
- sourceUrl
type: object
fromTemplate:
description: FromTemplate define some inputs from user
properties:
builderImage:
description: BaseImage specify which version of this template to use
type: string
name:
description: Name specify a template to use, so many fields in Config can left empty
type: string
parameters:
description: Parameters must use with `template`, fill some parameters which template will use
items:
properties:
defaultValue:
type: string
description:
type: string
key:
type: string
optValues:
items:
type: string
type: array
required:
type: boolean
type:
type: string
value:
type: string
type: object
type: array
type: object
type: object
status:
description: S2iBuilderStatus defines the observed state of S2iBuilder
properties:
lastRunName:
description: LastRunState return the name of the newest run of this builder
type: string
lastRunStartTime:
description: LastRunStartTime return the startTime of the newest run of this builder
format: date-time
type: string
lastRunState:
description: LastRunState return the state of the newest run of this builder
type: string
runCount:
description: RunCount represent the sum of s2irun of this builder
type: integer
required:
- runCount
type: object
type: object
served: true
storage: true
subresources:
status: {}
status:
acceptedNames:
kind: ""
plural: ""
conditions: []
storedVersions: []

View File

@@ -0,0 +1,130 @@
---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
annotations:
controller-gen.kubebuilder.io/version: (devel)
creationTimestamp: null
name: s2ibuildertemplates.devops.kubesphere.io
spec:
group: devops.kubesphere.io
names:
categories:
- devops
kind: S2iBuilderTemplate
listKind: S2iBuilderTemplateList
plural: s2ibuildertemplates
shortNames:
- s2ibt
singular: s2ibuildertemplate
scope: Cluster
versions:
- additionalPrinterColumns:
- jsonPath: .spec.codeFramework
name: Framework
type: string
- jsonPath: .spec.defaultBaseImage
name: DefaultBaseImage
type: string
- jsonPath: .spec.version
name: Version
type: string
name: v1alpha1
schema:
openAPIV3Schema:
description: S2iBuilderTemplate is the Schema for the s2ibuildertemplates API
properties:
apiVersion:
description: 'APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
type: string
kind:
description: 'Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
type: string
metadata:
type: object
spec:
description: S2iBuilderTemplateSpec defines the desired state of S2iBuilderTemplate
properties:
codeFramework:
description: CodeFramework means which language this template is designed for and which framework is using if has framework. Like Java, NodeJS etc
type: string
containerInfo:
description: Images are the images this template will use.
items:
properties:
buildVolumes:
description: BuildVolumes specifies a list of volumes to mount to container running the build.
items:
type: string
type: array
builderImage:
description: BaseImage are the images this template will use.
type: string
runtimeArtifacts:
items:
description: VolumeSpec represents a single volume mount point.
properties:
destination:
description: Destination is the path to mount the volume to - absolute or relative.
type: string
keep:
description: Keep indicates if the mounted data should be kept in the final image.
type: boolean
source:
description: Source is a reference to the volume source.
type: string
type: object
type: array
runtimeImage:
type: string
type: object
type: array
defaultBaseImage:
description: DefaultBaseImage is the image that will be used by default
type: string
description:
description: Description illustrate the purpose of this template
type: string
environment:
description: Parameters is a set of environment variables to be passed to the image.
items:
properties:
defaultValue:
type: string
description:
type: string
key:
type: string
optValues:
items:
type: string
type: array
required:
type: boolean
type:
type: string
value:
type: string
type: object
type: array
iconPath:
description: IconPath is used for frontend display
type: string
version:
description: Version of template
type: string
type: object
status:
description: S2iBuilderTemplateStatus defines the observed state of S2iBuilderTemplate
type: object
type: object
served: true
storage: true
subresources: {}
status:
acceptedNames:
kind: ""
plural: ""
conditions: []
storedVersions: []

View File

@@ -0,0 +1,164 @@
---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
annotations:
controller-gen.kubebuilder.io/version: (devel)
creationTimestamp: null
name: s2iruns.devops.kubesphere.io
spec:
group: devops.kubesphere.io
names:
kind: S2iRun
listKind: S2iRunList
plural: s2iruns
shortNames:
- s2ir
singular: s2irun
scope: Namespaced
versions:
- additionalPrinterColumns:
- jsonPath: .status.runState
name: State
type: string
- jsonPath: .status.kubernetesJobName
name: K8sJobName
type: string
- jsonPath: .status.startTime
name: StartTime
type: date
- jsonPath: .status.completionTime
name: CompletionTime
type: date
- jsonPath: .status.s2iBuildResult.imageName
name: ImageName
type: string
name: v1alpha1
schema:
openAPIV3Schema:
description: S2iRun is the Schema for the s2iruns API
properties:
apiVersion:
description: 'APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
type: string
kind:
description: 'Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
type: string
metadata:
type: object
spec:
description: S2iRunSpec defines the desired state of S2iRun
properties:
backoffLimit:
description: BackoffLimit limits the restart count of each s2irun. Default is 0
format: int32
type: integer
builderName:
description: BuilderName specify the name of s2ibuilder, required
type: string
newRevisionId:
description: NewRevisionId override the default NewRevisionId in its s2ibuilder.
type: string
newSourceURL:
description: NewSourceURL is used to download new binary artifacts
type: string
newTag:
description: NewTag override the default tag in its s2ibuilder, image name cannot be changed.
type: string
secondsAfterFinished:
description: SecondsAfterFinished if is set and greater than zero, and the job created by s2irun become successful or failed , the job will be auto deleted after SecondsAfterFinished
format: int32
type: integer
required:
- builderName
type: object
status:
description: S2iRunStatus defines the observed state of S2iRun
properties:
completionTime:
description: Represents time when the job was completed. It is not guaranteed to be set in happens-before order across separate operations. It is represented in RFC3339 form and is in UTC.
format: date-time
type: string
kubernetesJobName:
description: KubernetesJobName is the job name in k8s
type: string
logURL:
description: LogURL is uesd for external log handler to let user know where is log located in
type: string
runState:
description: RunState indicates whether this job is done or failed
type: string
s2iBuildResult:
description: S2i build result info.
properties:
commandPull:
description: Command for pull image.
type: string
imageCreated:
description: Image created time.
type: string
imageID:
description: Image ID.
type: string
imageName:
description: ImageName is the name of artifact
type: string
imageRepoTags:
description: image tags.
items:
type: string
type: array
imageSize:
description: The size in bytes of the image
format: int64
type: integer
type: object
s2iBuildSource:
description: S2i build source info.
properties:
binaryName:
description: Binary file Name
type: string
binarySize:
description: Binary file Size
format: int64
type: integer
builderImage:
description: // BuilderImage describes which image is used for building the result images.
type: string
commitID:
description: CommitID represents an arbitrary extended object reference in Git as SHA-1
type: string
committerEmail:
description: CommitterEmail contains the e-mail of the committer
type: string
committerName:
description: CommitterName contains the name of the committer
type: string
description:
description: Description is a result image description label. The default is no description.
type: string
revisionId:
description: The RevisionId is a branch name or a SHA-1 hash of every important thing about the commit
type: string
sourceUrl:
description: SourceURL is url of the codes such as https://github.com/a/b.git
type: string
type: object
startTime:
description: StartTime represent when this run began
format: date-time
type: string
type: object
type: object
served: true
storage: true
subresources:
status: {}
status:
acceptedNames:
kind: ""
plural: ""
conditions: []
storedVersions: []

View File

@@ -1,73 +0,0 @@
apiVersion: apiextensions.k8s.io/v1beta1
kind: CustomResourceDefinition
metadata:
creationTimestamp: null
labels:
controller-tools.k8s.io: "1.0"
name: s2ibinaries.devops.kubesphere.io
spec:
additionalPrinterColumns:
- JSONPath: .spec.fileName
name: FileName
type: string
- JSONPath: .spec.md5
name: MD5
type: string
- JSONPath: .spec.size
name: Size
type: string
- JSONPath: .status.phase
name: Phase
type: string
group: devops.kubesphere.io
names:
kind: S2iBinary
plural: s2ibinaries
scope: Namespaced
validation:
openAPIV3Schema:
properties:
apiVersion:
description: 'APIVersion defines the versioned schema of this representation
of an object. Servers should convert recognized schemas to the latest
internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#resources'
type: string
kind:
description: 'Kind is a string value representing the REST resource this
object represents. Servers may infer this from the endpoint the client
submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds'
type: string
metadata:
type: object
spec:
properties:
downloadURL:
description: DownloadURL in KubeSphere
type: string
fileName:
description: FileName is filename of binary
type: string
md5:
description: MD5 is Binary's MD5 Hash
type: string
size:
description: Size is the file size of file
type: string
uploadTimeStamp:
description: UploadTime is last upload time
format: date-time
type: string
type: object
status:
properties:
phase:
description: Phase is status of S2iBinary . Possible value is "Ready","UnableToDownload"
type: string
type: object
version: v1alpha1
status:
acceptedNames:
kind: ""
plural: ""
conditions: []
storedVersions: []

View File

@@ -0,0 +1,95 @@
---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
annotations:
controller-gen.kubebuilder.io/version: (devel)
creationTimestamp: null
name: gateways.gateway.kubesphere.io
spec:
group: gateway.kubesphere.io
names:
kind: Gateway
listKind: GatewayList
plural: gateways
singular: gateway
scope: Namespaced
versions:
- name: v1alpha1
schema:
openAPIV3Schema:
description: Gateway is the Schema for the gateways API
properties:
apiVersion:
description: 'APIVersion defines the versioned schema of this representation
of an object. Servers should convert recognized schemas to the latest
internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
type: string
kind:
description: 'Kind is a string value representing the REST resource this
object represents. Servers may infer this from the endpoint the client
submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
type: string
metadata:
type: object
spec:
description: GatewaySpec defines the desired state of Gateway
properties:
controller:
properties:
annotations:
additionalProperties:
type: string
type: object
config:
additionalProperties:
type: string
type: object
replicas:
format: int32
type: integer
scope:
properties:
enabled:
type: boolean
namespace:
type: string
type: object
type: object
deployment:
properties:
annotations:
additionalProperties:
type: string
type: object
replicas:
format: int32
type: integer
type: object
service:
properties:
annotations:
additionalProperties:
type: string
type: object
type:
description: Service Type string describes ingress methods for
a service
type: string
type: object
type: object
status:
type: object
x-kubernetes-preserve-unknown-fields: true
type: object
served: true
storage: true
subresources:
status: {}
status:
acceptedNames:
kind: ""
plural: ""
conditions: []
storedVersions: []

View File

@@ -0,0 +1,44 @@
---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
name: nginxes.gateway.kubesphere.io
spec:
group: gateway.kubesphere.io
names:
kind: Nginx
listKind: NginxList
plural: nginxes
singular: nginx
scope: Namespaced
versions:
- name: v1alpha1
schema:
openAPIV3Schema:
description: Nginx is the Schema for the nginxes API
properties:
apiVersion:
description: 'APIVersion defines the versioned schema of this representation
of an object. Servers should convert recognized schemas to the latest
internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
type: string
kind:
description: 'Kind is a string value representing the REST resource this
object represents. Servers may infer this from the endpoint the client
submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
type: string
metadata:
type: object
spec:
description: Spec defines the desired state of Nginx
type: object
x-kubernetes-preserve-unknown-fields: true
status:
description: Status defines the observed state of Nginx
type: object
x-kubernetes-preserve-unknown-fields: true
type: object
served: true
storage: true
subresources:
status: {}

View File

@@ -0,0 +1,83 @@
---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
annotations:
controller-gen.kubebuilder.io/version: (devel)
creationTimestamp: null
name: globalrolebindings.iam.kubesphere.io
spec:
group: iam.kubesphere.io
names:
categories:
- iam
kind: GlobalRoleBinding
listKind: GlobalRoleBindingList
plural: globalrolebindings
singular: globalrolebinding
scope: Cluster
versions:
- name: v1alpha2
schema:
openAPIV3Schema:
description: GlobalRoleBinding is the Schema for the globalrolebindings API
properties:
apiVersion:
description: 'APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
type: string
kind:
description: 'Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
type: string
metadata:
type: object
roleRef:
description: RoleRef can only reference a GlobalRole. If the RoleRef cannot be resolved, the Authorizer must return an error.
properties:
apiGroup:
description: APIGroup is the group for the resource being referenced
type: string
kind:
description: Kind is the type of resource being referenced
type: string
name:
description: Name is the name of resource being referenced
type: string
required:
- apiGroup
- kind
- name
type: object
subjects:
description: Subjects holds references to the objects the role applies to.
items:
description: Subject contains a reference to the object or user identities a role binding applies to. This can either hold a direct API object reference, or a value for non-objects such as user and group names.
properties:
apiGroup:
description: APIGroup holds the API group of the referenced subject. Defaults to "" for ServiceAccount subjects. Defaults to "rbac.authorization.k8s.io" for User and Group subjects.
type: string
kind:
description: Kind of object being referenced. Values defined by this API group are "User", "Group", and "ServiceAccount". If the Authorizer does not recognized the kind value, the Authorizer should report an error.
type: string
name:
description: Name of the object being referenced.
type: string
namespace:
description: Namespace of the referenced object. If the object kind is non-namespace, such as "User" or "Group", and this value is not empty the Authorizer should report an error.
type: string
required:
- kind
- name
type: object
type: array
required:
- roleRef
type: object
served: true
storage: true
status:
acceptedNames:
kind: ""
plural: ""
conditions: []
storedVersions: []

View File

@@ -0,0 +1,75 @@
---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
annotations:
controller-gen.kubebuilder.io/version: (devel)
creationTimestamp: null
name: globalroles.iam.kubesphere.io
spec:
group: iam.kubesphere.io
names:
categories:
- iam
kind: GlobalRole
listKind: GlobalRoleList
plural: globalroles
singular: globalrole
scope: Cluster
versions:
- name: v1alpha2
schema:
openAPIV3Schema:
properties:
apiVersion:
description: 'APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
type: string
kind:
description: 'Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
type: string
metadata:
type: object
rules:
description: Rules holds all the PolicyRules for this GlobalRole
items:
description: PolicyRule holds information that describes a policy rule, but does not contain information about who the rule applies to or which namespace the rule applies to.
properties:
apiGroups:
description: APIGroups is the name of the APIGroup that contains the resources. If multiple API groups are specified, any action requested against one of the enumerated resources in any API group will be allowed.
items:
type: string
type: array
nonResourceURLs:
description: NonResourceURLs is a set of partial urls that a user should have access to. *s are allowed, but only as the full, final step in the path Since non-resource URLs are not namespaced, this field is only applicable for ClusterRoles referenced from a ClusterRoleBinding. Rules can either apply to API resources (such as "pods" or "secrets") or non-resource URL paths (such as "/api"), but not both.
items:
type: string
type: array
resourceNames:
description: ResourceNames is an optional white list of names that the rule applies to. An empty set means that everything is allowed.
items:
type: string
type: array
resources:
description: Resources is a list of resources this rule applies to. ResourceAll represents all resources.
items:
type: string
type: array
verbs:
description: Verbs is a list of Verbs that apply to ALL the ResourceKinds and AttributeRestrictions contained in this rule. VerbAll represents all kinds.
items:
type: string
type: array
required:
- verbs
type: object
type: array
type: object
served: true
storage: true
status:
acceptedNames:
kind: ""
plural: ""
conditions: []
storedVersions: []

View File

@@ -0,0 +1,64 @@
---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
annotations:
controller-gen.kubebuilder.io/version: (devel)
creationTimestamp: null
name: groupbindings.iam.kubesphere.io
spec:
group: iam.kubesphere.io
names:
categories:
- group
kind: GroupBinding
listKind: GroupBindingList
plural: groupbindings
singular: groupbinding
scope: Cluster
versions:
- additionalPrinterColumns:
- jsonPath: .groupRef.name
name: Group
type: string
- jsonPath: .users
name: Users
type: string
name: v1alpha2
schema:
openAPIV3Schema:
description: GroupBinding is the Schema for the groupbindings API
properties:
apiVersion:
description: 'APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
type: string
groupRef:
description: GroupRef defines the desired relation of GroupBinding
properties:
apiGroup:
type: string
kind:
type: string
name:
type: string
type: object
kind:
description: 'Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
type: string
metadata:
type: object
users:
items:
type: string
type: array
type: object
served: true
storage: true
subresources: {}
status:
acceptedNames:
kind: ""
plural: ""
conditions: []
storedVersions: []

View File

@@ -0,0 +1,53 @@
---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
annotations:
controller-gen.kubebuilder.io/version: (devel)
creationTimestamp: null
name: groups.iam.kubesphere.io
spec:
group: iam.kubesphere.io
names:
categories:
- group
kind: Group
listKind: GroupList
plural: groups
singular: group
scope: Cluster
versions:
- additionalPrinterColumns:
- jsonPath: .metadata.labels.kubesphere\.io/workspace
name: Workspace
type: string
name: v1alpha2
schema:
openAPIV3Schema:
description: Group is the Schema for the groups API
properties:
apiVersion:
description: 'APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
type: string
kind:
description: 'Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
type: string
metadata:
type: object
spec:
description: GroupSpec defines the desired state of Group
type: object
status:
description: GroupStatus defines the observed state of Group
type: object
type: object
served: true
storage: true
subresources: {}
status:
acceptedNames:
kind: ""
plural: ""
conditions: []
storedVersions: []

View File

@@ -0,0 +1,90 @@
---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
annotations:
controller-gen.kubebuilder.io/version: (devel)
creationTimestamp: null
name: loginrecords.iam.kubesphere.io
spec:
group: iam.kubesphere.io
names:
categories:
- iam
kind: LoginRecord
listKind: LoginRecordList
plural: loginrecords
singular: loginrecord
scope: Cluster
versions:
- additionalPrinterColumns:
- jsonPath: .spec.type
name: Type
type: string
- jsonPath: .spec.provider
name: Provider
type: string
- jsonPath: .spec.sourceIP
name: From
type: string
- jsonPath: .spec.success
name: Success
type: string
- jsonPath: .spec.reason
name: Reason
type: string
- jsonPath: .metadata.creationTimestamp
name: Age
type: date
name: v1alpha2
schema:
openAPIV3Schema:
properties:
apiVersion:
description: 'APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
type: string
kind:
description: 'Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
type: string
metadata:
type: object
spec:
properties:
provider:
description: Provider of authentication, Ldap/Github etc.
type: string
reason:
description: States failed login attempt reason
type: string
sourceIP:
description: Source IP of client
type: string
success:
description: Successful login attempt or not
type: boolean
type:
description: Which authentication method used, BasicAuth/OAuth
type: string
userAgent:
description: User agent of login attempt
type: string
required:
- provider
- reason
- sourceIP
- success
- type
type: object
required:
- spec
type: object
served: true
storage: true
subresources: {}
status:
acceptedNames:
kind: ""
plural: ""
conditions: []
storedVersions: []

View File

@@ -0,0 +1,47 @@
---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
annotations:
controller-gen.kubebuilder.io/version: (devel)
creationTimestamp: null
name: rolebases.iam.kubesphere.io
spec:
group: iam.kubesphere.io
names:
categories:
- iam
kind: RoleBase
listKind: RoleBaseList
plural: rolebases
singular: rolebase
scope: Cluster
versions:
- name: v1alpha2
schema:
openAPIV3Schema:
properties:
apiVersion:
description: 'APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
type: string
kind:
description: 'Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
type: string
metadata:
type: object
role:
type: object
x-kubernetes-embedded-resource: true
x-kubernetes-preserve-unknown-fields: true
required:
- role
type: object
served: true
storage: true
status:
acceptedNames:
kind: ""
plural: ""
conditions: []
storedVersions: []

92
config/crds/iam.kubesphere.io_users.yaml generated Normal file
View File

@@ -0,0 +1,92 @@
---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
annotations:
controller-gen.kubebuilder.io/version: (devel)
creationTimestamp: null
name: users.iam.kubesphere.io
spec:
group: iam.kubesphere.io
names:
categories:
- iam
kind: User
listKind: UserList
plural: users
singular: user
scope: Cluster
versions:
- additionalPrinterColumns:
- jsonPath: .spec.email
name: Email
type: string
- jsonPath: .status.state
name: Status
type: string
name: v1alpha2
schema:
openAPIV3Schema:
description: User is the Schema for the users API
properties:
apiVersion:
description: 'APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
type: string
kind:
description: 'Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
type: string
metadata:
type: object
spec:
description: UserSpec defines the desired state of User
properties:
description:
description: Description of the user.
type: string
displayName:
type: string
email:
description: Unique email address(https://www.ietf.org/rfc/rfc5322.txt).
type: string
groups:
items:
type: string
type: array
lang:
description: The preferred written or spoken language for the user.
type: string
password:
description: password will be encrypted by mutating admission webhook
type: string
required:
- email
type: object
status:
description: UserStatus defines the observed state of User
properties:
lastLoginTime:
description: Last login attempt timestamp
format: date-time
type: string
lastTransitionTime:
format: date-time
type: string
reason:
type: string
state:
description: The user status
type: string
type: object
required:
- spec
type: object
served: true
storage: true
subresources: {}
status:
acceptedNames:
kind: ""
plural: ""
conditions: []
storedVersions: []

View File

@@ -0,0 +1,88 @@
---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
annotations:
controller-gen.kubebuilder.io/version: (devel)
creationTimestamp: null
name: workspacerolebindings.iam.kubesphere.io
spec:
group: iam.kubesphere.io
names:
categories:
- iam
kind: WorkspaceRoleBinding
listKind: WorkspaceRoleBindingList
plural: workspacerolebindings
singular: workspacerolebinding
scope: Cluster
versions:
- additionalPrinterColumns:
- jsonPath: .metadata.labels.kubesphere\.io/workspace
name: Workspace
type: string
name: v1alpha2
schema:
openAPIV3Schema:
description: WorkspaceRoleBinding is the Schema for the workspacerolebindings API
properties:
apiVersion:
description: 'APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
type: string
kind:
description: 'Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
type: string
metadata:
type: object
roleRef:
description: RoleRef can only reference a WorkspaceRole. If the RoleRef cannot be resolved, the Authorizer must return an error.
properties:
apiGroup:
description: APIGroup is the group for the resource being referenced
type: string
kind:
description: Kind is the type of resource being referenced
type: string
name:
description: Name is the name of resource being referenced
type: string
required:
- apiGroup
- kind
- name
type: object
subjects:
description: Subjects holds references to the objects the role applies to.
items:
description: Subject contains a reference to the object or user identities a role binding applies to. This can either hold a direct API object reference, or a value for non-objects such as user and group names.
properties:
apiGroup:
description: APIGroup holds the API group of the referenced subject. Defaults to "" for ServiceAccount subjects. Defaults to "rbac.authorization.k8s.io" for User and Group subjects.
type: string
kind:
description: Kind of object being referenced. Values defined by this API group are "User", "Group", and "ServiceAccount". If the Authorizer does not recognized the kind value, the Authorizer should report an error.
type: string
name:
description: Name of the object being referenced.
type: string
namespace:
description: Namespace of the referenced object. If the object kind is non-namespace, such as "User" or "Group", and this value is not empty the Authorizer should report an error.
type: string
required:
- kind
- name
type: object
type: array
required:
- roleRef
type: object
served: true
storage: true
subresources: {}
status:
acceptedNames:
kind: ""
plural: ""
conditions: []
storedVersions: []

View File

@@ -0,0 +1,83 @@
---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
annotations:
controller-gen.kubebuilder.io/version: (devel)
creationTimestamp: null
name: workspaceroles.iam.kubesphere.io
spec:
group: iam.kubesphere.io
names:
categories:
- iam
kind: WorkspaceRole
listKind: WorkspaceRoleList
plural: workspaceroles
singular: workspacerole
scope: Cluster
versions:
- additionalPrinterColumns:
- jsonPath: .metadata.labels.kubesphere\.io/workspace
name: Workspace
type: string
- jsonPath: .metadata.annotations.kubesphere\.io/alias-name
name: Alias
type: string
name: v1alpha2
schema:
openAPIV3Schema:
properties:
apiVersion:
description: 'APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
type: string
kind:
description: 'Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
type: string
metadata:
type: object
rules:
description: Rules holds all the PolicyRules for this WorkspaceRole
items:
description: PolicyRule holds information that describes a policy rule, but does not contain information about who the rule applies to or which namespace the rule applies to.
properties:
apiGroups:
description: APIGroups is the name of the APIGroup that contains the resources. If multiple API groups are specified, any action requested against one of the enumerated resources in any API group will be allowed.
items:
type: string
type: array
nonResourceURLs:
description: NonResourceURLs is a set of partial urls that a user should have access to. *s are allowed, but only as the full, final step in the path Since non-resource URLs are not namespaced, this field is only applicable for ClusterRoles referenced from a ClusterRoleBinding. Rules can either apply to API resources (such as "pods" or "secrets") or non-resource URL paths (such as "/api"), but not both.
items:
type: string
type: array
resourceNames:
description: ResourceNames is an optional white list of names that the rule applies to. An empty set means that everything is allowed.
items:
type: string
type: array
resources:
description: Resources is a list of resources this rule applies to. ResourceAll represents all resources.
items:
type: string
type: array
verbs:
description: Verbs is a list of Verbs that apply to ALL the ResourceKinds and AttributeRestrictions contained in this rule. VerbAll represents all kinds.
items:
type: string
type: array
required:
- verbs
type: object
type: array
type: object
served: true
storage: true
subresources: {}
status:
acceptedNames:
kind: ""
plural: ""
conditions: []
storedVersions: []

File diff suppressed because it is too large Load Diff

View File

@@ -1,763 +0,0 @@
apiVersion: apiextensions.k8s.io/v1beta1
kind: CustomResourceDefinition
metadata:
creationTimestamp: null
labels:
controller-tools.k8s.io: "1.0"
name: destinationrules.istio.kubesphere.io
spec:
group: istio.kubesphere.io
names:
kind: DestinationRule
plural: destinationrules
scope: Namespaced
validation:
openAPIV3Schema:
properties:
apiVersion:
description: 'APIVersion defines the versioned schema of this representation
of an object. Servers should convert recognized schemas to the latest
internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#resources'
type: string
kind:
description: 'Kind is a string value representing the REST resource this
object represents. Servers may infer this from the endpoint the client
submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds'
type: string
metadata:
type: object
spec:
properties:
host:
description: 'REQUIRED. The name of a service from the service registry.
Service names are looked up from the platform''s service registry
(e.g., Kubernetes services, Consul services, etc.) and from the hosts
declared by [ServiceEntries](#ServiceEntry). Rules defined for services
that do not exist in the service registry will be ignored. *Note
for Kubernetes users*: When short names are used (e.g. "reviews" instead
of "reviews.default.svc.cluster.local"), Istio will interpret the
short name based on the namespace of the rule, not the service. A
rule in the "default" namespace containing a host "reviews will be
interpreted as "reviews.default.svc.cluster.local", irrespective of
the actual namespace associated with the reviews service. _To avoid
potential misconfigurations, it is recommended to always use fully
qualified domain names over short names._ Note that the host field
applies to both HTTP and TCP services.'
type: string
subsets:
description: One or more named sets that represent individual versions
of a service. Traffic policies can be overridden at subset level.
items:
properties:
labels:
description: REQUIRED. Labels apply a filter over the endpoints
of a service in the service registry. See route rules for examples
of usage.
type: object
name:
description: REQUIRED. Name of the subset. The service name and
the subset name can be used for traffic splitting in a route
rule.
type: string
trafficPolicy:
description: Traffic policies that apply to this subset. Subsets
inherit the traffic policies specified at the DestinationRule
level. Settings specified at the subset level will override
the corresponding settings specified at the DestinationRule
level.
properties:
connectionPool:
description: Settings controlling the volume of connections
to an upstream service
properties:
http:
description: HTTP connection pool settings.
properties:
maxRequestsPerConnection:
description: Maximum number of requests per connection
to a backend. Setting this parameter to 1 disables
keep alive.
format: int32
type: integer
maxRetries:
description: Maximum number of retries that can be
outstanding to all hosts in a cluster at a given
time. Defaults to 3.
format: int32
type: integer
type: object
tcp:
description: Settings common to both HTTP and TCP upstream
connections.
properties:
connectTimeout:
description: TCP connection timeout.
type: string
maxConnections:
description: Maximum number of HTTP1 /TCP connections
to a destination host.
format: int32
type: integer
type: object
type: object
loadBalancer:
description: Settings controlling the load balancer algorithms.
properties:
consistentHash:
properties:
httpCookie:
description: Hash based on HTTP cookie.
properties:
name:
description: REQUIRED. Name of the cookie.
type: string
path:
description: Path to set for the cookie.
type: string
ttl:
description: REQUIRED. Lifetime of the cookie.
type: string
required:
- name
- ttl
type: object
httpHeaderName:
description: 'It is required to specify exactly one
of the fields as hash key: HttpHeaderName, HttpCookie,
or UseSourceIP. Hash based on a specific HTTP header.'
type: string
minimumRingSize:
description: The minimum number of virtual nodes to
use for the hash ring. Defaults to 1024. Larger
ring sizes result in more granular load distributions.
If the number of hosts in the load balancing pool
is larger than the ring size, each host will be
assigned a single virtual node.
format: int64
type: integer
useSourceIp:
description: Hash based on the source IP address.
type: boolean
type: object
simple:
description: 'It is required to specify exactly one of
the fields: Simple or ConsistentHash'
type: string
type: object
outlierDetection:
description: Settings controlling eviction of unhealthy hosts
from the load balancing pool
properties:
baseEjectionTime:
description: 'Minimum ejection duration. A host will remain
ejected for a period equal to the product of minimum
ejection duration and the number of times the host has
been ejected. This technique allows the system to automatically
increase the ejection period for unhealthy upstream
servers. format: 1h/1m/1s/1ms. MUST BE >=1ms. Default
is 30s.'
type: string
consecutiveErrors:
description: Number of errors before a host is ejected
from the connection pool. Defaults to 5. When the upstream
host is accessed over HTTP, a 5xx return code qualifies
as an error. When the upstream host is accessed over
an opaque TCP connection, connect timeouts and connection
error/failure events qualify as an error.
format: int32
type: integer
interval:
description: 'Time interval between ejection sweep analysis.
format: 1h/1m/1s/1ms. MUST BE >=1ms. Default is 10s.'
type: string
maxEjectionPercent:
description: Maximum % of hosts in the load balancing
pool for the upstream service that can be ejected. Defaults
to 10%.
format: int32
type: integer
type: object
portLevelSettings:
description: Traffic policies specific to individual ports.
Note that port level settings will override the destination-level
settings. Traffic settings specified at the destination-level
will not be inherited when overridden by port-level settings,
i.e. default values will be applied to fields omitted in
port-level traffic policies.
items:
properties:
connectionPool:
description: Settings controlling the volume of connections
to an upstream service
properties:
http:
description: HTTP connection pool settings.
properties:
maxRequestsPerConnection:
description: Maximum number of requests per
connection to a backend. Setting this parameter
to 1 disables keep alive.
format: int32
type: integer
maxRetries:
description: Maximum number of retries that
can be outstanding to all hosts in a cluster
at a given time. Defaults to 3.
format: int32
type: integer
type: object
tcp:
description: Settings common to both HTTP and TCP
upstream connections.
properties:
connectTimeout:
description: TCP connection timeout.
type: string
maxConnections:
description: Maximum number of HTTP1 /TCP connections
to a destination host.
format: int32
type: integer
type: object
type: object
loadBalancer:
description: Settings controlling the load balancer
algorithms.
properties:
consistentHash:
properties:
httpCookie:
description: Hash based on HTTP cookie.
properties:
name:
description: REQUIRED. Name of the cookie.
type: string
path:
description: Path to set for the cookie.
type: string
ttl:
description: REQUIRED. Lifetime of the cookie.
type: string
required:
- name
- ttl
type: object
httpHeaderName:
description: 'It is required to specify exactly
one of the fields as hash key: HttpHeaderName,
HttpCookie, or UseSourceIP. Hash based on
a specific HTTP header.'
type: string
minimumRingSize:
description: The minimum number of virtual nodes
to use for the hash ring. Defaults to 1024.
Larger ring sizes result in more granular
load distributions. If the number of hosts
in the load balancing pool is larger than
the ring size, each host will be assigned
a single virtual node.
format: int64
type: integer
useSourceIp:
description: Hash based on the source IP address.
type: boolean
type: object
simple:
description: 'It is required to specify exactly
one of the fields: Simple or ConsistentHash'
type: string
type: object
outlierDetection:
description: Settings controlling eviction of unhealthy
hosts from the load balancing pool
properties:
baseEjectionTime:
description: 'Minimum ejection duration. A host
will remain ejected for a period equal to the
product of minimum ejection duration and the number
of times the host has been ejected. This technique
allows the system to automatically increase the
ejection period for unhealthy upstream servers.
format: 1h/1m/1s/1ms. MUST BE >=1ms. Default is
30s.'
type: string
consecutiveErrors:
description: Number of errors before a host is ejected
from the connection pool. Defaults to 5. When
the upstream host is accessed over HTTP, a 5xx
return code qualifies as an error. When the upstream
host is accessed over an opaque TCP connection,
connect timeouts and connection error/failure
events qualify as an error.
format: int32
type: integer
interval:
description: 'Time interval between ejection sweep
analysis. format: 1h/1m/1s/1ms. MUST BE >=1ms.
Default is 10s.'
type: string
maxEjectionPercent:
description: Maximum % of hosts in the load balancing
pool for the upstream service that can be ejected.
Defaults to 10%.
format: int32
type: integer
type: object
port:
description: Specifies the port name or number of a
port on the destination service on which this policy
is being applied. Names must comply with DNS label
syntax (rfc1035) and therefore cannot collide with
numbers. If there are multiple ports on a service
with the same protocol the names should be of the
form <protocol-name>-<DNS label>.
properties:
name:
description: Valid port name
type: string
number:
description: Valid port number
format: int32
type: integer
type: object
tls:
description: TLS related settings for connections to
the upstream service.
properties:
caCertificates:
description: 'OPTIONAL: The path to the file containing
certificate authority certificates to use in verifying
a presented server certificate. If omitted, the
proxy will not verify the server''s certificate.
Should be empty if mode is `ISTIO_MUTUAL`.'
type: string
clientCertificate:
description: REQUIRED if mode is `MUTUAL`. The path
to the file holding the client-side TLS certificate
to use. Should be empty if mode is `ISTIO_MUTUAL`.
type: string
mode:
description: 'REQUIRED: Indicates whether connections
to this port should be secured using TLS. The
value of this field determines how TLS is enforced.'
type: string
privateKey:
description: REQUIRED if mode is `MUTUAL`. The path
to the file holding the client's private key.
Should be empty if mode is `ISTIO_MUTUAL`.
type: string
sni:
description: SNI string to present to the server
during TLS handshake. Should be empty if mode
is `ISTIO_MUTUAL`.
type: string
subjectAltNames:
description: A list of alternate names to verify
the subject identity in the certificate. If specified,
the proxy will verify that the server certificate's
subject alt name matches one of the specified
values. Should be empty if mode is `ISTIO_MUTUAL`.
items:
type: string
type: array
required:
- mode
type: object
required:
- port
type: object
type: array
tls:
description: TLS related settings for connections to the upstream
service.
properties:
caCertificates:
description: 'OPTIONAL: The path to the file containing
certificate authority certificates to use in verifying
a presented server certificate. If omitted, the proxy
will not verify the server''s certificate. Should be
empty if mode is `ISTIO_MUTUAL`.'
type: string
clientCertificate:
description: REQUIRED if mode is `MUTUAL`. The path to
the file holding the client-side TLS certificate to
use. Should be empty if mode is `ISTIO_MUTUAL`.
type: string
mode:
description: 'REQUIRED: Indicates whether connections
to this port should be secured using TLS. The value
of this field determines how TLS is enforced.'
type: string
privateKey:
description: REQUIRED if mode is `MUTUAL`. The path to
the file holding the client's private key. Should be
empty if mode is `ISTIO_MUTUAL`.
type: string
sni:
description: SNI string to present to the server during
TLS handshake. Should be empty if mode is `ISTIO_MUTUAL`.
type: string
subjectAltNames:
description: A list of alternate names to verify the subject
identity in the certificate. If specified, the proxy
will verify that the server certificate's subject alt
name matches one of the specified values. Should be
empty if mode is `ISTIO_MUTUAL`.
items:
type: string
type: array
required:
- mode
type: object
type: object
required:
- name
- labels
type: object
type: array
trafficPolicy:
description: Traffic policies to apply (load balancing policy, connection
pool sizes, outlier detection).
properties:
connectionPool:
description: Settings controlling the volume of connections to an
upstream service
properties:
http:
description: HTTP connection pool settings.
properties:
maxRequestsPerConnection:
description: Maximum number of requests per connection to
a backend. Setting this parameter to 1 disables keep alive.
format: int32
type: integer
maxRetries:
description: Maximum number of retries that can be outstanding
to all hosts in a cluster at a given time. Defaults to
3.
format: int32
type: integer
type: object
tcp:
description: Settings common to both HTTP and TCP upstream connections.
properties:
connectTimeout:
description: TCP connection timeout.
type: string
maxConnections:
description: Maximum number of HTTP1 /TCP connections to
a destination host.
format: int32
type: integer
type: object
type: object
loadBalancer:
description: Settings controlling the load balancer algorithms.
properties:
consistentHash:
properties:
httpCookie:
description: Hash based on HTTP cookie.
properties:
name:
description: REQUIRED. Name of the cookie.
type: string
path:
description: Path to set for the cookie.
type: string
ttl:
description: REQUIRED. Lifetime of the cookie.
type: string
required:
- name
- ttl
type: object
httpHeaderName:
description: 'It is required to specify exactly one of the
fields as hash key: HttpHeaderName, HttpCookie, or UseSourceIP.
Hash based on a specific HTTP header.'
type: string
minimumRingSize:
description: The minimum number of virtual nodes to use
for the hash ring. Defaults to 1024. Larger ring sizes
result in more granular load distributions. If the number
of hosts in the load balancing pool is larger than the
ring size, each host will be assigned a single virtual
node.
format: int64
type: integer
useSourceIp:
description: Hash based on the source IP address.
type: boolean
type: object
simple:
description: 'It is required to specify exactly one of the fields:
Simple or ConsistentHash'
type: string
type: object
outlierDetection:
description: Settings controlling eviction of unhealthy hosts from
the load balancing pool
properties:
baseEjectionTime:
description: 'Minimum ejection duration. A host will remain
ejected for a period equal to the product of minimum ejection
duration and the number of times the host has been ejected.
This technique allows the system to automatically increase
the ejection period for unhealthy upstream servers. format:
1h/1m/1s/1ms. MUST BE >=1ms. Default is 30s.'
type: string
consecutiveErrors:
description: Number of errors before a host is ejected from
the connection pool. Defaults to 5. When the upstream host
is accessed over HTTP, a 5xx return code qualifies as an error.
When the upstream host is accessed over an opaque TCP connection,
connect timeouts and connection error/failure events qualify
as an error.
format: int32
type: integer
interval:
description: 'Time interval between ejection sweep analysis.
format: 1h/1m/1s/1ms. MUST BE >=1ms. Default is 10s.'
type: string
maxEjectionPercent:
description: Maximum % of hosts in the load balancing pool for
the upstream service that can be ejected. Defaults to 10%.
format: int32
type: integer
type: object
portLevelSettings:
description: Traffic policies specific to individual ports. Note
that port level settings will override the destination-level settings.
Traffic settings specified at the destination-level will not be
inherited when overridden by port-level settings, i.e. default
values will be applied to fields omitted in port-level traffic
policies.
items:
properties:
connectionPool:
description: Settings controlling the volume of connections
to an upstream service
properties:
http:
description: HTTP connection pool settings.
properties:
maxRequestsPerConnection:
description: Maximum number of requests per connection
to a backend. Setting this parameter to 1 disables
keep alive.
format: int32
type: integer
maxRetries:
description: Maximum number of retries that can be
outstanding to all hosts in a cluster at a given
time. Defaults to 3.
format: int32
type: integer
type: object
tcp:
description: Settings common to both HTTP and TCP upstream
connections.
properties:
connectTimeout:
description: TCP connection timeout.
type: string
maxConnections:
description: Maximum number of HTTP1 /TCP connections
to a destination host.
format: int32
type: integer
type: object
type: object
loadBalancer:
description: Settings controlling the load balancer algorithms.
properties:
consistentHash:
properties:
httpCookie:
description: Hash based on HTTP cookie.
properties:
name:
description: REQUIRED. Name of the cookie.
type: string
path:
description: Path to set for the cookie.
type: string
ttl:
description: REQUIRED. Lifetime of the cookie.
type: string
required:
- name
- ttl
type: object
httpHeaderName:
description: 'It is required to specify exactly one
of the fields as hash key: HttpHeaderName, HttpCookie,
or UseSourceIP. Hash based on a specific HTTP header.'
type: string
minimumRingSize:
description: The minimum number of virtual nodes to
use for the hash ring. Defaults to 1024. Larger
ring sizes result in more granular load distributions.
If the number of hosts in the load balancing pool
is larger than the ring size, each host will be
assigned a single virtual node.
format: int64
type: integer
useSourceIp:
description: Hash based on the source IP address.
type: boolean
type: object
simple:
description: 'It is required to specify exactly one of
the fields: Simple or ConsistentHash'
type: string
type: object
outlierDetection:
description: Settings controlling eviction of unhealthy hosts
from the load balancing pool
properties:
baseEjectionTime:
description: 'Minimum ejection duration. A host will remain
ejected for a period equal to the product of minimum
ejection duration and the number of times the host has
been ejected. This technique allows the system to automatically
increase the ejection period for unhealthy upstream
servers. format: 1h/1m/1s/1ms. MUST BE >=1ms. Default
is 30s.'
type: string
consecutiveErrors:
description: Number of errors before a host is ejected
from the connection pool. Defaults to 5. When the upstream
host is accessed over HTTP, a 5xx return code qualifies
as an error. When the upstream host is accessed over
an opaque TCP connection, connect timeouts and connection
error/failure events qualify as an error.
format: int32
type: integer
interval:
description: 'Time interval between ejection sweep analysis.
format: 1h/1m/1s/1ms. MUST BE >=1ms. Default is 10s.'
type: string
maxEjectionPercent:
description: Maximum % of hosts in the load balancing
pool for the upstream service that can be ejected. Defaults
to 10%.
format: int32
type: integer
type: object
port:
description: Specifies the port name or number of a port on
the destination service on which this policy is being applied. Names
must comply with DNS label syntax (rfc1035) and therefore
cannot collide with numbers. If there are multiple ports
on a service with the same protocol the names should be
of the form <protocol-name>-<DNS label>.
properties:
name:
description: Valid port name
type: string
number:
description: Valid port number
format: int32
type: integer
type: object
tls:
description: TLS related settings for connections to the upstream
service.
properties:
caCertificates:
description: 'OPTIONAL: The path to the file containing
certificate authority certificates to use in verifying
a presented server certificate. If omitted, the proxy
will not verify the server''s certificate. Should be
empty if mode is `ISTIO_MUTUAL`.'
type: string
clientCertificate:
description: REQUIRED if mode is `MUTUAL`. The path to
the file holding the client-side TLS certificate to
use. Should be empty if mode is `ISTIO_MUTUAL`.
type: string
mode:
description: 'REQUIRED: Indicates whether connections
to this port should be secured using TLS. The value
of this field determines how TLS is enforced.'
type: string
privateKey:
description: REQUIRED if mode is `MUTUAL`. The path to
the file holding the client's private key. Should be
empty if mode is `ISTIO_MUTUAL`.
type: string
sni:
description: SNI string to present to the server during
TLS handshake. Should be empty if mode is `ISTIO_MUTUAL`.
type: string
subjectAltNames:
description: A list of alternate names to verify the subject
identity in the certificate. If specified, the proxy
will verify that the server certificate's subject alt
name matches one of the specified values. Should be
empty if mode is `ISTIO_MUTUAL`.
items:
type: string
type: array
required:
- mode
type: object
required:
- port
type: object
type: array
tls:
description: TLS related settings for connections to the upstream
service.
properties:
caCertificates:
description: 'OPTIONAL: The path to the file containing certificate
authority certificates to use in verifying a presented server
certificate. If omitted, the proxy will not verify the server''s
certificate. Should be empty if mode is `ISTIO_MUTUAL`.'
type: string
clientCertificate:
description: REQUIRED if mode is `MUTUAL`. The path to the file
holding the client-side TLS certificate to use. Should be
empty if mode is `ISTIO_MUTUAL`.
type: string
mode:
description: 'REQUIRED: Indicates whether connections to this
port should be secured using TLS. The value of this field
determines how TLS is enforced.'
type: string
privateKey:
description: REQUIRED if mode is `MUTUAL`. The path to the file
holding the client's private key. Should be empty if mode
is `ISTIO_MUTUAL`.
type: string
sni:
description: SNI string to present to the server during TLS
handshake. Should be empty if mode is `ISTIO_MUTUAL`.
type: string
subjectAltNames:
description: A list of alternate names to verify the subject
identity in the certificate. If specified, the proxy will
verify that the server certificate's subject alt name matches
one of the specified values. Should be empty if mode is `ISTIO_MUTUAL`.
items:
type: string
type: array
required:
- mode
type: object
type: object
required:
- host
type: object
required:
- spec
version: v1alpha3
status:
acceptedNames:
kind: ""
plural: ""
conditions: []
storedVersions: []

View File

@@ -1,129 +0,0 @@
apiVersion: apiextensions.k8s.io/v1beta1
kind: CustomResourceDefinition
metadata:
creationTimestamp: null
labels:
controller-tools.k8s.io: "1.0"
name: gateways.istio.kubesphere.io
spec:
group: istio.kubesphere.io
names:
kind: Gateway
plural: gateways
scope: Namespaced
validation:
openAPIV3Schema:
properties:
apiVersion:
description: 'APIVersion defines the versioned schema of this representation
of an object. Servers should convert recognized schemas to the latest
internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#resources'
type: string
kind:
description: 'Kind is a string value representing the REST resource this
object represents. Servers may infer this from the endpoint the client
submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds'
type: string
metadata:
type: object
spec:
properties:
selector:
description: One or more labels that indicate a specific set of pods/VMs
on which this gateway configuration should be applied. If no selectors
are provided, the gateway will be implemented by the default istio-ingress
controller.
type: object
servers:
description: 'REQUIRED: A list of server specifications.'
items:
properties:
hosts:
description: A list of hosts exposed by this gateway. While typically
applicable to HTTP services, it can also be used for TCP services
using TLS with SNI. Standard DNS wildcard prefix syntax is permitted. A
VirtualService that is bound to a gateway must having a matching
host in its default destination. Specifically one of the VirtualService
destination hosts is a strict suffix of a gateway host or a
gateway host is a suffix of one of the VirtualService hosts.
items:
type: string
type: array
port:
description: 'REQUIRED: The Port on which the proxy should listen
for incoming connections'
properties:
name:
description: Label assigned to the port.
type: string
number:
description: 'REQUIRED: A valid non-negative integer port
number.'
format: int64
type: integer
protocol:
description: 'REQUIRED: The protocol exposed on the port.
MUST BE one of HTTP|HTTPS|GRPC|HTTP2|MONGO|TCP.'
type: string
required:
- number
- protocol
type: object
tls:
description: Set of TLS related options that govern the server's
behavior. Use these options to control if all http requests
should be redirected to https, and the TLS modes to use.
properties:
caCertificates:
description: REQUIRED if mode is "MUTUAL". The path to a file
containing certificate authority certificates to use in
verifying a presented client side certificate.
type: string
httpsRedirect:
description: If set to true, the load balancer will send a
302 redirect for all http connections, asking the clients
to use HTTPS.
type: boolean
mode:
description: 'Optional: Indicates whether connections to this
port should be secured using TLS. The value of this field
determines how TLS is enforced.'
type: string
privateKey:
description: REQUIRED if mode is "SIMPLE" or "MUTUAL". The
path to the file holding the server's private key.
type: string
serverCertificate:
description: REQUIRED if mode is "SIMPLE" or "MUTUAL". The
path to the file holding the server-side TLS certificate
to use.
type: string
subjectAltNames:
description: A list of alternate names to verify the subject
identity in the certificate presented by the client.
items:
type: string
type: array
required:
- httpsRedirect
- serverCertificate
- privateKey
- caCertificates
- subjectAltNames
type: object
required:
- port
type: object
type: array
required:
- servers
type: object
required:
- spec
version: v1alpha3
status:
acceptedNames:
kind: ""
plural: ""
conditions: []
storedVersions: []

View File

@@ -1,695 +0,0 @@
apiVersion: apiextensions.k8s.io/v1beta1
kind: CustomResourceDefinition
metadata:
creationTimestamp: null
labels:
controller-tools.k8s.io: "1.0"
name: virtualservices.istio.kubesphere.io
spec:
group: istio.kubesphere.io
names:
kind: VirtualService
plural: virtualservices
scope: Namespaced
validation:
openAPIV3Schema:
properties:
apiVersion:
description: 'APIVersion defines the versioned schema of this representation
of an object. Servers should convert recognized schemas to the latest
internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#resources'
type: string
kind:
description: 'Kind is a string value representing the REST resource this
object represents. Servers may infer this from the endpoint the client
submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds'
type: string
metadata:
type: object
spec:
properties:
gateways:
description: The names of gateways and sidecars that should apply these
routes. A single VirtualService is used for sidecars inside the mesh
as well as for one or more gateways. The selection condition imposed
by this field can be overridden using the source field in the match
conditions of HTTP/TCP routes. The reserved word "mesh" is used to
imply all the sidecars in the mesh. When this field is omitted, the
default gateway ("mesh") will be used, which would apply the rule
to all sidecars in the mesh. If a list of gateway names is provided,
the rules will apply only to the gateways. To apply the rules to both
gateways and sidecars, specify "mesh" as one of the gateway names.
items:
type: string
type: array
hosts:
description: REQUIRED. The destination address for traffic captured
by this virtual service. Could be a DNS name with wildcard prefix
or a CIDR prefix. Depending on the platform, short-names can also
be used instead of a FQDN (i.e. has no dots in the name). In such
a scenario, the FQDN of the host would be derived based on the underlying
platform. For example on Kubernetes, when hosts contains a short
name, Istio will interpret the short name based on the namespace of
the rule. Thus, when a client namespace applies a rule in the "default"
namespace containing a name "reviews, Istio will setup routes to the
"reviews.default.svc.cluster.local" service. However, if a different
name such as "reviews.sales.svc.cluster.local" is used, it would be
treated as a FQDN during virtual host matching. In Consul, a plain
service name would be resolved to the FQDN "reviews.service.consul". Note
that the hosts field applies to both HTTP and TCP services. Service
inside the mesh, i.e., those found in the service registry, must always
be referred to using their alphanumeric names. IP addresses or CIDR
prefixes are allowed only for services defined via the Gateway.
items:
type: string
type: array
http:
description: An ordered list of route rules for HTTP traffic. The first
rule matching an incoming request is used.
items:
properties:
appendHeaders:
description: Additional HTTP headers to add before forwarding
a request to the destination service.
type: object
corsPolicy:
description: Cross-Origin Resource Sharing policy
properties:
allowCredentials:
description: Indicates whether the caller is allowed to send
the actual request (not the preflight) using credentials.
Translates to Access-Control-Allow-Credentials header.
type: boolean
allowHeaders:
description: List of HTTP headers that can be used when requesting
the resource. Serialized to Access-Control-Allow-Methods
header.
items:
type: string
type: array
allowMethods:
description: List of HTTP methods allowed to access the resource.
The content will be serialized into the Access-Control-Allow-Methods
header.
items:
type: string
type: array
allowOrigin:
description: The list of origins that are allowed to perform
CORS requests. The content will be serialized into the Access-Control-Allow-Origin
header. Wildcard * will allow all origins.
items:
type: string
type: array
exposeHeaders:
description: A white list of HTTP headers that the browsers
are allowed to access. Serialized into Access-Control-Expose-Headers
header.
items:
type: string
type: array
maxAge:
description: Specifies how long the the results of a preflight
request can be cached. Translates to the Access-Control-Max-Age
header.
type: string
type: object
fault:
description: Fault injection policy to apply on HTTP traffic.
properties:
abort:
description: Abort Http request attempts and return error
codes back to downstream service, giving the impression
that the upstream service is faulty.
properties:
httpStatus:
description: REQUIRED. HTTP status code to use to abort
the Http request.
format: int64
type: integer
percent:
description: Percentage of requests to be aborted with
the error code provided (0-100).
format: int64
type: integer
required:
- httpStatus
type: object
delay:
description: Delay requests before forwarding, emulating various
failures such as network issues, overloaded upstream service,
etc.
properties:
exponentialDelay:
description: (-- Add a delay (based on an exponential
function) before forwarding the request. mean delay
needed to derive the exponential delay values --)
type: string
fixedDelay:
description: 'REQUIRED. Add a fixed delay before forwarding
the request. Format: 1h/1m/1s/1ms. MUST be >=1ms.'
type: string
percent:
description: Percentage of requests on which the delay
will be injected (0-100).
format: int64
type: integer
required:
- fixedDelay
type: object
type: object
match:
description: Match conditions to be satisfied for the rule to
be activated. All conditions inside a single match block have
AND semantics, while the list of match blocks have OR semantics.
The rule is matched if any one of the match blocks succeed.
items:
properties:
authority:
description: 'HTTP Authority values are case-sensitive and
formatted as follows: - `exact: "value"` for exact string
match - `prefix: "value"` for prefix-based match - `regex:
"value"` for ECMAscript style regex-based match'
properties:
exact:
description: exact string match
type: string
prefix:
description: prefix-based match
type: string
regex:
description: ECMAscript style regex-based match
type: string
suffix:
description: suffix-based match.
type: string
type: object
gateways:
description: Names of gateways where the rule should be
applied to. Gateway names at the top of the VirtualService
(if any) are overridden. The gateway match is independent
of sourceLabels.
items:
type: string
type: array
headers:
description: 'The header keys must be lowercase and use
hyphen as the separator, e.g. _x-request-id_. Header
values are case-sensitive and formatted as follows: -
`exact: "value"` for exact string match - `prefix: "value"`
for prefix-based match - `regex: "value"` for ECMAscript
style regex-based match **Note:** The keys `uri`, `scheme`,
`method`, and `authority` will be ignored.'
type: object
method:
description: 'HTTP Method values are case-sensitive and
formatted as follows: - `exact: "value"` for exact string
match - `prefix: "value"` for prefix-based match - `regex:
"value"` for ECMAscript style regex-based match'
properties:
exact:
description: exact string match
type: string
prefix:
description: prefix-based match
type: string
regex:
description: ECMAscript style regex-based match
type: string
suffix:
description: suffix-based match.
type: string
type: object
port:
description: Specifies the ports on the host that is being
addressed. Many services only expose a single port or
label ports with the protocols they support, in these
cases it is not required to explicitly select the port.
format: int32
type: integer
scheme:
description: 'URI Scheme values are case-sensitive and formatted
as follows: - `exact: "value"` for exact string match -
`prefix: "value"` for prefix-based match - `regex: "value"`
for ECMAscript style regex-based match'
properties:
exact:
description: exact string match
type: string
prefix:
description: prefix-based match
type: string
regex:
description: ECMAscript style regex-based match
type: string
suffix:
description: suffix-based match.
type: string
type: object
sourceLabels:
description: One or more labels that constrain the applicability
of a rule to workloads with the given labels. If the VirtualService
has a list of gateways specified at the top, it should
include the reserved gateway `mesh` in order for this
field to be applicable.
type: object
uri:
description: 'URI to match values are case-sensitive and
formatted as follows: - `exact: "value"` for exact string
match - `prefix: "value"` for prefix-based match - `regex:
"value"` for ECMAscript style regex-based match'
properties:
exact:
description: exact string match
type: string
prefix:
description: prefix-based match
type: string
regex:
description: ECMAscript style regex-based match
type: string
suffix:
description: suffix-based match.
type: string
type: object
type: object
type: array
mirror:
description: Mirror HTTP traffic to a another destination in addition
to forwarding the requests to the intended destination. Mirrored
traffic is on a best effort basis where the sidecar/gateway
will not wait for the mirrored cluster to respond before returning
the response from the original destination. Statistics will
be generated for the mirrored destination.
properties:
host:
description: 'REQUIRED. The name of a service from the service
registry. Service names are looked up from the platform''s
service registry (e.g., Kubernetes services, Consul services,
etc.) and from the hosts declared by [ServiceEntry](#ServiceEntry).
Traffic forwarded to destinations that are not found in
either of the two, will be dropped. *Note for Kubernetes
users*: When short names are used (e.g. "reviews" instead
of "reviews.default.svc.cluster.local"), Istio will interpret
the short name based on the namespace of the rule, not the
service. A rule in the "default" namespace containing a
host "reviews will be interpreted as "reviews.default.svc.cluster.local",
irrespective of the actual namespace associated with the
reviews service. _To avoid potential misconfigurations,
it is recommended to always use fully qualified domain names
over short names._'
type: string
port:
description: Specifies the port on the host that is being
addressed. If a service exposes only a single port it is
not required to explicitly select the port.
properties:
name:
description: Valid port name
type: string
number:
description: Valid port number
format: int32
type: integer
type: object
subset:
description: The name of a subset within the service. Applicable
only to services within the mesh. The subset must be defined
in a corresponding DestinationRule.
type: string
required:
- host
type: object
redirect:
description: A http rule can either redirect or forward (default)
traffic. If traffic passthrough option is specified in the rule,
route/redirect will be ignored. The redirect primitive can be
used to send a HTTP 302 redirect to a different URI or Authority.
properties:
authority:
description: On a redirect, overwrite the Authority/Host portion
of the URL with this value.
type: string
uri:
description: On a redirect, overwrite the Path portion of
the URL with this value. Note that the entire path will
be replaced, irrespective of the request URI being matched
as an exact path or prefix.
type: string
type: object
removeResponseHeaders:
description: Http headers to remove before returning the response
to the caller
type: object
retries:
description: Retry policy for HTTP requests.
properties:
attempts:
description: REQUIRED. Number of retries for a given request.
The interval between retries will be determined automatically
(25ms+). Actual number of retries attempted depends on the
httpReqTimeout.
format: int64
type: integer
perTryTimeout:
description: 'Timeout per retry attempt for a given request.
format: 1h/1m/1s/1ms. MUST BE >=1ms.'
type: string
required:
- attempts
- perTryTimeout
type: object
rewrite:
description: Rewrite HTTP URIs and Authority headers. Rewrite
cannot be used with Redirect primitive. Rewrite will be performed
before forwarding.
properties:
authority:
description: rewrite the Authority/Host header with this value.
type: string
uri:
description: rewrite the path (or the prefix) portion of the
URI with this value. If the original URI was matched based
on prefix, the value provided in this field will replace
the corresponding matched prefix.
type: string
type: object
route:
description: A http rule can either redirect or forward (default)
traffic. The forwarding target can be one of several versions
of a service (see glossary in beginning of document). Weights
associated with the service version determine the proportion
of traffic it receives.
items:
properties:
destination:
description: REQUIRED. Destination uniquely identifies the
instances of a service to which the request/connection
should be forwarded to.
properties:
host:
description: 'REQUIRED. The name of a service from the
service registry. Service names are looked up from
the platform''s service registry (e.g., Kubernetes
services, Consul services, etc.) and from the hosts
declared by [ServiceEntry](#ServiceEntry). Traffic
forwarded to destinations that are not found in either
of the two, will be dropped. *Note for Kubernetes
users*: When short names are used (e.g. "reviews"
instead of "reviews.default.svc.cluster.local"), Istio
will interpret the short name based on the namespace
of the rule, not the service. A rule in the "default"
namespace containing a host "reviews will be interpreted
as "reviews.default.svc.cluster.local", irrespective
of the actual namespace associated with the reviews
service. _To avoid potential misconfigurations, it
is recommended to always use fully qualified domain
names over short names._'
type: string
port:
description: Specifies the port on the host that is
being addressed. If a service exposes only a single
port it is not required to explicitly select the port.
properties:
name:
description: Valid port name
type: string
number:
description: Valid port number
format: int32
type: integer
type: object
subset:
description: The name of a subset within the service.
Applicable only to services within the mesh. The subset
must be defined in a corresponding DestinationRule.
type: string
required:
- host
type: object
weight:
description: REQUIRED. The proportion of traffic to be forwarded
to the service version. (0-100). Sum of weights across
destinations SHOULD BE == 100. If there is only destination
in a rule, the weight value is assumed to be 100.
format: int64
type: integer
required:
- destination
- weight
type: object
type: array
timeout:
description: Timeout for HTTP requests.
type: string
websocketUpgrade:
description: Indicates that a HTTP/1.1 client connection to this
particular route should be allowed (and expected) to upgrade
to a WebSocket connection. The default is false. Istio's reference
sidecar implementation (Envoy) expects the first request to
this route to contain the WebSocket upgrade headers. Otherwise,
the request will be rejected. Note that Websocket allows secondary
protocol negotiation which may then be subject to further routing
rules based on the protocol selected.
type: boolean
type: object
type: array
tcp:
description: An ordered list of route rules for TCP traffic. The first
rule matching an incoming request is used.
items:
properties:
match:
description: Match conditions to be satisfied for the rule to
be activated. All conditions inside a single match block have
AND semantics, while the list of match blocks have OR semantics.
The rule is matched if any one of the match blocks succeed.
items:
properties:
destinationSubnets:
description: IPv4 or IPv6 ip address of destination with
optional subnet. E.g., a.b.c.d/xx form or just a.b.c.d.
items:
type: string
type: array
gateways:
description: Names of gateways where the rule should be
applied to. Gateway names at the top of the VirtualService
(if any) are overridden. The gateway match is independent
of sourceLabels.
items:
type: string
type: array
port:
description: Specifies the port on the host that is being
addressed. Many services only expose a single port or
label ports with the protocols they support, in these
cases it is not required to explicitly select the port.
format: int64
type: integer
sourceLabels:
description: One or more labels that constrain the applicability
of a rule to workloads with the given labels. If the VirtualService
has a list of gateways specified at the top, it should
include the reserved gateway `mesh` in order for this
field to be applicable.
type: object
type: object
type: array
route:
description: The destinations to which the connection should be
forwarded to. Weights must add to 100%.
items:
properties:
destination:
description: REQUIRED. Destination uniquely identifies the
instances of a service to which the request/connection
should be forwarded to.
properties:
host:
description: 'REQUIRED. The name of a service from the
service registry. Service names are looked up from
the platform''s service registry (e.g., Kubernetes
services, Consul services, etc.) and from the hosts
declared by [ServiceEntry](#ServiceEntry). Traffic
forwarded to destinations that are not found in either
of the two, will be dropped. *Note for Kubernetes
users*: When short names are used (e.g. "reviews"
instead of "reviews.default.svc.cluster.local"), Istio
will interpret the short name based on the namespace
of the rule, not the service. A rule in the "default"
namespace containing a host "reviews will be interpreted
as "reviews.default.svc.cluster.local", irrespective
of the actual namespace associated with the reviews
service. _To avoid potential misconfigurations, it
is recommended to always use fully qualified domain
names over short names._'
type: string
port:
description: Specifies the port on the host that is
being addressed. If a service exposes only a single
port it is not required to explicitly select the port.
properties:
name:
description: Valid port name
type: string
number:
description: Valid port number
format: int32
type: integer
type: object
subset:
description: The name of a subset within the service.
Applicable only to services within the mesh. The subset
must be defined in a corresponding DestinationRule.
type: string
required:
- host
type: object
weight:
description: REQUIRED. The proportion of traffic to be forwarded
to the service version. (0-100). Sum of weights across
destinations SHOULD BE == 100. If there is only destination
in a rule, the weight value is assumed to be 100.
format: int64
type: integer
required:
- destination
- weight
type: object
type: array
required:
- match
- route
type: object
type: array
tls:
items:
properties:
match:
description: REQUIRED. Match conditions to be satisfied for the
rule to be activated. All conditions inside a single match block
have AND semantics, while the list of match blocks have OR semantics.
The rule is matched if any one of the match blocks succeed.
items:
properties:
destinationSubnets:
description: IPv4 or IPv6 ip addresses of destination with
optional subnet. E.g., a.b.c.d/xx form or just a.b.c.d.
items:
type: string
type: array
gateways:
description: Names of gateways where the rule should be
applied to. Gateway names at the top of the VirtualService
(if any) are overridden. The gateway match is independent
of sourceLabels.
items:
type: string
type: array
port:
description: Specifies the port on the host that is being
addressed. Many services only expose a single port or
label ports with the protocols they support, in these
cases it is not required to explicitly select the port.
format: int64
type: integer
sniHosts:
description: REQUIRED. SNI (server name indicator) to match
on. Wildcard prefixes can be used in the SNI value, e.g.,
*.com will match foo.example.com as well as example.com.
An SNI value must be a subset (i.e., fall within the domain)
of the corresponding virtual service's hosts
items:
type: string
type: array
sourceLabels:
description: One or more labels that constrain the applicability
of a rule to workloads with the given labels. If the VirtualService
has a list of gateways specified at the top, it should
include the reserved gateway `mesh` in order for this
field to be applicable.
type: object
required:
- sniHosts
type: object
type: array
route:
description: The destination to which the connection should be
forwarded to.
items:
properties:
destination:
description: REQUIRED. Destination uniquely identifies the
instances of a service to which the request/connection
should be forwarded to.
properties:
host:
description: 'REQUIRED. The name of a service from the
service registry. Service names are looked up from
the platform''s service registry (e.g., Kubernetes
services, Consul services, etc.) and from the hosts
declared by [ServiceEntry](#ServiceEntry). Traffic
forwarded to destinations that are not found in either
of the two, will be dropped. *Note for Kubernetes
users*: When short names are used (e.g. "reviews"
instead of "reviews.default.svc.cluster.local"), Istio
will interpret the short name based on the namespace
of the rule, not the service. A rule in the "default"
namespace containing a host "reviews will be interpreted
as "reviews.default.svc.cluster.local", irrespective
of the actual namespace associated with the reviews
service. _To avoid potential misconfigurations, it
is recommended to always use fully qualified domain
names over short names._'
type: string
port:
description: Specifies the port on the host that is
being addressed. If a service exposes only a single
port it is not required to explicitly select the port.
properties:
name:
description: Valid port name
type: string
number:
description: Valid port number
format: int32
type: integer
type: object
subset:
description: The name of a subset within the service.
Applicable only to services within the mesh. The subset
must be defined in a corresponding DestinationRule.
type: string
required:
- host
type: object
weight:
description: REQUIRED. The proportion of traffic to be forwarded
to the service version. (0-100). Sum of weights across
destinations SHOULD BE == 100. If there is only destination
in a rule, the weight value is assumed to be 100.
format: int64
type: integer
required:
- destination
- weight
type: object
type: array
required:
- match
- route
type: object
type: array
required:
- hosts
type: object
required:
- spec
version: v1alpha3
status:
acceptedNames:
kind: ""
plural: ""
conditions: []
storedVersions: []

View File

@@ -0,0 +1,76 @@
---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
annotations:
controller-gen.kubebuilder.io/version: (devel)
creationTimestamp: null
name: ipamblocks.network.kubesphere.io
spec:
group: network.kubesphere.io
names:
kind: IPAMBlock
listKind: IPAMBlockList
plural: ipamblocks
singular: ipamblock
scope: Cluster
versions:
- name: v1alpha1
schema:
openAPIV3Schema:
properties:
apiVersion:
description: 'APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
type: string
kind:
description: 'Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
type: string
metadata:
type: object
spec:
description: Specification of the IPAMBlock.
properties:
allocations:
items:
type: integer
type: array
attributes:
items:
properties:
handle_id:
type: string
secondary:
additionalProperties:
type: string
type: object
type: object
type: array
cidr:
type: string
deleted:
type: boolean
id:
format: int32
type: integer
unallocated:
items:
type: integer
type: array
required:
- allocations
- attributes
- cidr
- deleted
- id
- unallocated
type: object
type: object
served: true
storage: true
status:
acceptedNames:
kind: ""
plural: ""
conditions: []
storedVersions: []

View File

@@ -0,0 +1,55 @@
---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
annotations:
controller-gen.kubebuilder.io/version: (devel)
creationTimestamp: null
name: ipamhandles.network.kubesphere.io
spec:
group: network.kubesphere.io
names:
kind: IPAMHandle
listKind: IPAMHandleList
plural: ipamhandles
singular: ipamhandle
scope: Cluster
versions:
- name: v1alpha1
schema:
openAPIV3Schema:
properties:
apiVersion:
description: 'APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
type: string
kind:
description: 'Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
type: string
metadata:
type: object
spec:
description: Specification of the IPAMHandle.
properties:
block:
additionalProperties:
type: integer
type: object
deleted:
type: boolean
handleID:
type: string
required:
- block
- deleted
- handleID
type: object
type: object
served: true
storage: true
status:
acceptedNames:
kind: ""
plural: ""
conditions: []
storedVersions: []

View File

@@ -0,0 +1,130 @@
---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
annotations:
controller-gen.kubebuilder.io/version: (devel)
creationTimestamp: null
name: ippools.network.kubesphere.io
spec:
group: network.kubesphere.io
names:
kind: IPPool
listKind: IPPoolList
plural: ippools
singular: ippool
scope: Cluster
versions:
- name: v1alpha1
schema:
openAPIV3Schema:
properties:
apiVersion:
description: 'APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
type: string
kind:
description: 'Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
type: string
metadata:
type: object
spec:
properties:
blockSize:
description: The block size to use for IP address assignments from this pool. Defaults to 26 for IPv4 and 112 for IPv6.
type: integer
cidr:
description: The pool CIDR.
type: string
disabled:
description: When disabled is true, IPAM will not assign addresses from this pool.
type: boolean
dns:
description: DNS contains values interesting for DNS resolvers
properties:
domain:
type: string
nameservers:
items:
type: string
type: array
options:
items:
type: string
type: array
search:
items:
type: string
type: array
type: object
gateway:
type: string
rangeEnd:
description: The last ip, inclusive
type: string
rangeStart:
description: The first ip, inclusive
type: string
routes:
items:
properties:
dst:
type: string
gateway:
type: string
type: object
type: array
type:
type: string
vlanConfig:
properties:
master:
type: string
vlanId:
format: int32
type: integer
required:
- master
- vlanId
type: object
required:
- cidr
- type
type: object
status:
properties:
allocations:
type: integer
capacity:
type: integer
reserved:
type: integer
synced:
type: boolean
unallocated:
type: integer
workspaces:
additionalProperties:
properties:
allocations:
type: integer
required:
- allocations
type: object
type: object
required:
- allocations
- capacity
- unallocated
type: object
type: object
served: true
storage: true
subresources:
status: {}
status:
acceptedNames:
kind: ""
plural: ""
conditions: []
storedVersions: []

View File

@@ -0,0 +1,179 @@
---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
annotations:
controller-gen.kubebuilder.io/version: (devel)
creationTimestamp: null
name: namespacenetworkpolicies.network.kubesphere.io
spec:
group: network.kubesphere.io
names:
categories:
- networking
kind: NamespaceNetworkPolicy
listKind: NamespaceNetworkPolicyList
plural: namespacenetworkpolicies
shortNames:
- nsnp
singular: namespacenetworkpolicy
scope: Namespaced
preserveUnknownFields: false
versions:
- name: v1alpha1
schema:
openAPIV3Schema:
description: NamespaceNetworkPolicy is the Schema for the namespacenetworkpolicies API
properties:
apiVersion:
description: 'APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
type: string
kind:
description: 'Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
type: string
metadata:
type: object
spec:
description: NamespaceNetworkPolicySpec provides the specification of a NamespaceNetworkPolicy
properties:
egress:
description: List of egress rules to be applied to the selected pods. Outgoing traffic is allowed if there are no NetworkPolicies selecting the pod (and cluster policy otherwise allows the traffic), OR if the traffic matches at least one egress rule across all of the NetworkPolicy objects whose podSelector matches the pod. If this field is empty then this NetworkPolicy limits all outgoing traffic (and serves solely to ensure that the pods it selects are isolated by default). This field is beta-level in 1.8
items:
description: NetworkPolicyEgressRule describes a particular set of traffic that is allowed out of pods matched by a NetworkPolicySpec's podSelector. The traffic must match both ports and to. This type is beta-level in 1.8
properties:
ports:
description: List of destination ports for outgoing traffic. Each item in this list is combined using a logical OR. If this field is empty or missing, this rule matches all ports (traffic not restricted by port). If this field is present and contains at least one item, then this rule allows traffic only if the traffic matches at least one port in the list.
items:
description: NetworkPolicyPort describes a port to allow traffic on
properties:
port:
anyOf:
- type: integer
- type: string
description: The port on the given protocol. This can either be a numerical or named port on a pod. If this field is not provided, this matches all port names and numbers.
x-kubernetes-int-or-string: true
protocol:
default: TCP
description: The protocol (TCP, UDP, or SCTP) which traffic must match. If not specified, this field defaults to TCP.
type: string
type: object
type: array
to:
description: List of destinations for outgoing traffic of pods selected for this rule. Items in this list are combined using a logical OR operation. If this field is empty or missing, this rule matches all destinations (traffic not restricted by destination). If this field is present and contains at least one item, this rule allows traffic only if the traffic matches at least one item in the to list.
items:
description: NetworkPolicyPeer describes a peer to allow traffic from. Only certain combinations of fields are allowed
properties:
ipBlock:
description: IPBlock defines policy on a particular IPBlock. If this field is set then neither of the other fields can be.
properties:
cidr:
description: CIDR is a string representing the IP Block Valid examples are "192.168.1.1/24" or "2001:db9::/64"
type: string
except:
description: Except is a slice of CIDRs that should not be included within an IP Block Valid examples are "192.168.1.1/24" or "2001:db9::/64" Except values will be rejected if they are outside the CIDR range
items:
type: string
type: array
required:
- cidr
type: object
namespace:
properties:
name:
type: string
required:
- name
type: object
service:
properties:
name:
type: string
namespace:
type: string
required:
- name
- namespace
type: object
type: object
type: array
type: object
type: array
ingress:
description: List of ingress rules to be applied to the selected pods. Traffic is allowed to a pod if there are no NetworkPolicies selecting the pod (and cluster policy otherwise allows the traffic), OR if the traffic source is the pod's local node, OR if the traffic matches at least one ingress rule across all of the NetworkPolicy objects whose podSelector matches the pod. If this field is empty then this NetworkPolicy does not allow any traffic (and serves solely to ensure that the pods it selects are isolated by default)
items:
description: NetworkPolicyIngressRule describes a particular set of traffic that is allowed to the pods matched by a NetworkPolicySpec's podSelector. The traffic must match both ports and from.
properties:
from:
description: List of sources which should be able to access the pods selected for this rule. Items in this list are combined using a logical OR operation. If this field is empty or missing, this rule matches all sources (traffic not restricted by source). If this field is present and contains at least one item, this rule allows traffic only if the traffic matches at least one item in the from list.
items:
description: NetworkPolicyPeer describes a peer to allow traffic from. Only certain combinations of fields are allowed
properties:
ipBlock:
description: IPBlock defines policy on a particular IPBlock. If this field is set then neither of the other fields can be.
properties:
cidr:
description: CIDR is a string representing the IP Block Valid examples are "192.168.1.1/24" or "2001:db9::/64"
type: string
except:
description: Except is a slice of CIDRs that should not be included within an IP Block Valid examples are "192.168.1.1/24" or "2001:db9::/64" Except values will be rejected if they are outside the CIDR range
items:
type: string
type: array
required:
- cidr
type: object
namespace:
properties:
name:
type: string
required:
- name
type: object
service:
properties:
name:
type: string
namespace:
type: string
required:
- name
- namespace
type: object
type: object
type: array
ports:
description: List of ports which should be made accessible on the pods selected for this rule. Each item in this list is combined using a logical OR. If this field is empty or missing, this rule matches all ports (traffic not restricted by port). If this field is present and contains at least one item, then this rule allows traffic only if the traffic matches at least one port in the list.
items:
description: NetworkPolicyPort describes a port to allow traffic on
properties:
port:
anyOf:
- type: integer
- type: string
description: The port on the given protocol. This can either be a numerical or named port on a pod. If this field is not provided, this matches all port names and numbers.
x-kubernetes-int-or-string: true
protocol:
default: TCP
description: The protocol (TCP, UDP, or SCTP) which traffic must match. If not specified, this field defaults to TCP.
type: string
type: object
type: array
type: object
type: array
policyTypes:
description: List of rule types that the NetworkPolicy relates to. Valid options are "Ingress", "Egress", or "Ingress,Egress". If this field is not specified, it will default based on the existence of Ingress or Egress rules; policies that contain an Egress section are assumed to affect Egress, and all policies (whether or not they contain an Ingress section) are assumed to affect Ingress. If you want to write an egress-only policy, you must explicitly specify policyTypes [ "Egress" ]. Likewise, if you want to write a policy that specifies that no egress is allowed, you must specify a policyTypes value that include "Egress" (since such a policy would not include an Egress section and would otherwise default to just [ "Ingress" ]). This field is beta-level in 1.8
items:
description: Policy Type string describes the NetworkPolicy type This type is beta-level in 1.8
type: string
type: array
type: object
type: object
served: true
storage: true
status:
acceptedNames:
kind: ""
plural: ""
conditions: []
storedVersions: []

View File

@@ -0,0 +1,161 @@
---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
annotations:
controller-gen.kubebuilder.io/version: (devel)
creationTimestamp: null
name: resourcequotas.quota.kubesphere.io
spec:
group: quota.kubesphere.io
names:
categories:
- quota
kind: ResourceQuota
listKind: ResourceQuotaList
plural: resourcequotas
singular: resourcequota
scope: Cluster
versions:
- name: v1alpha2
schema:
openAPIV3Schema:
description: WorkspaceResourceQuota sets aggregate quota restrictions enforced per workspace
properties:
apiVersion:
description: 'APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
type: string
kind:
description: 'Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
type: string
metadata:
type: object
spec:
description: Spec defines the desired quota
properties:
quota:
description: Quota defines the desired quota
properties:
hard:
additionalProperties:
anyOf:
- type: integer
- type: string
pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
x-kubernetes-int-or-string: true
description: 'hard is the set of desired hard limits for each named resource. More info: https://kubernetes.io/docs/concepts/policy/resource-quotas/'
type: object
scopeSelector:
description: scopeSelector is also a collection of filters like scopes that must match each object tracked by a quota but expressed using ScopeSelectorOperator in combination with possible values. For a resource to match, both scopes AND scopeSelector (if specified in spec), must be matched.
properties:
matchExpressions:
description: A list of scope selector requirements by scope of the resources.
items:
description: A scoped-resource selector requirement is a selector that contains values, a scope name, and an operator that relates the scope name and values.
properties:
operator:
description: Represents a scope's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist.
type: string
scopeName:
description: The name of the scope that the selector applies to.
type: string
values:
description: An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.
items:
type: string
type: array
required:
- operator
- scopeName
type: object
type: array
type: object
scopes:
description: A collection of filters that must match each object tracked by a quota. If not specified, the quota matches all objects.
items:
description: A ResourceQuotaScope defines a filter that must match each object tracked by a quota
type: string
type: array
type: object
selector:
additionalProperties:
type: string
description: LabelSelector is used to select projects by label.
type: object
required:
- quota
- selector
type: object
status:
description: Status defines the actual enforced quota and its current usage
properties:
namespaces:
description: Namespaces slices the usage by project.
items:
description: ResourceQuotaStatusByNamespace gives status for a particular project
properties:
hard:
additionalProperties:
anyOf:
- type: integer
- type: string
pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
x-kubernetes-int-or-string: true
description: 'Hard is the set of enforced hard limits for each named resource. More info: https://kubernetes.io/docs/concepts/policy/resource-quotas/'
type: object
namespace:
description: Namespace the project this status applies to
type: string
used:
additionalProperties:
anyOf:
- type: integer
- type: string
pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
x-kubernetes-int-or-string: true
description: Used is the current observed total usage of the resource in the namespace.
type: object
required:
- namespace
type: object
type: array
total:
description: Total defines the actual enforced quota and its current usage across all projects
properties:
hard:
additionalProperties:
anyOf:
- type: integer
- type: string
pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
x-kubernetes-int-or-string: true
description: 'Hard is the set of enforced hard limits for each named resource. More info: https://kubernetes.io/docs/concepts/policy/resource-quotas/'
type: object
used:
additionalProperties:
anyOf:
- type: integer
- type: string
pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
x-kubernetes-int-or-string: true
description: Used is the current observed total usage of the resource in the namespace.
type: object
type: object
required:
- namespaces
- total
type: object
required:
- spec
type: object
served: true
storage: true
subresources:
status: {}
status:
acceptedNames:
kind: ""
plural: ""
conditions: []
storedVersions: []

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,911 @@
---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
annotations:
controller-gen.kubebuilder.io/version: (devel)
creationTimestamp: null
name: strategies.servicemesh.kubesphere.io
spec:
group: servicemesh.kubesphere.io
names:
kind: Strategy
listKind: StrategyList
plural: strategies
singular: strategy
scope: Namespaced
versions:
- additionalPrinterColumns:
- description: type of strategy
jsonPath: .spec.type
name: Type
type: string
- description: destination hosts
jsonPath: .spec.template.spec.hosts
name: Hosts
type: string
- description: 'CreationTimestamp is a timestamp representing the server time when this object was created. It is not guaranteed to be set in happens-before order across separate operations. Clients may not set this value. It is represented in RFC3339 form and is in UTC. Populated by the system. Read-only. Null for lists. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata'
jsonPath: .metadata.creationTimestamp
name: Age
type: date
name: v1alpha2
schema:
openAPIV3Schema:
description: Strategy is the Schema for the strategies API
properties:
apiVersion:
description: 'APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
type: string
kind:
description: 'Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
type: string
metadata:
type: object
spec:
description: StrategySpec defines the desired state of Strategy
properties:
governor:
description: Governor version, the version takes control of all incoming traffic label version value
type: string
principal:
description: Principal version, the one as reference version label version value
type: string
selector:
description: Label selector for virtual services.
properties:
matchExpressions:
description: matchExpressions is a list of label selector requirements. The requirements are ANDed.
items:
description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.
properties:
key:
description: key is the label key that the selector applies to.
type: string
operator:
description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.
type: string
values:
description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.
items:
type: string
type: array
required:
- key
- operator
type: object
type: array
matchLabels:
additionalProperties:
type: string
description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.
type: object
type: object
strategyPolicy:
description: strategy policy, how the strategy will be applied by the strategy controller
type: string
template:
description: Template describes the virtual service that will be created.
properties:
metadata:
description: Metadata of the virtual services created from this template
type: object
spec:
description: 'Configuration affecting label/content routing, sni routing,
etc. See more details at: https://istio.io/docs/reference/config/networking/virtual-service.html'
properties:
exportTo:
description: A list of namespaces to which this virtual service is
exported.
items:
format: string
type: string
type: array
gateways:
description: The names of gateways and sidecars that should apply
these routes.
items:
format: string
type: string
type: array
hosts:
description: The destination hosts to which traffic is being sent.
items:
format: string
type: string
type: array
http:
description: An ordered list of route rules for HTTP traffic.
items:
properties:
corsPolicy:
description: Cross-Origin Resource Sharing policy (CORS).
properties:
allowCredentials:
nullable: true
type: boolean
allowHeaders:
items:
format: string
type: string
type: array
allowMethods:
description: List of HTTP methods allowed to access the
resource.
items:
format: string
type: string
type: array
allowOrigin:
description: The list of origins that are allowed to perform
CORS requests.
items:
format: string
type: string
type: array
allowOrigins:
description: String patterns that match allowed origins.
items:
oneOf:
- not:
anyOf:
- required:
- exact
- required:
- prefix
- required:
- regex
- required:
- exact
- required:
- prefix
- required:
- regex
properties:
exact:
format: string
type: string
prefix:
format: string
type: string
regex:
description: RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).
format: string
type: string
type: object
type: array
exposeHeaders:
items:
format: string
type: string
type: array
maxAge:
type: string
type: object
delegate:
properties:
name:
description: Name specifies the name of the delegate VirtualService.
format: string
type: string
namespace:
description: Namespace specifies the namespace where the
delegate VirtualService resides.
format: string
type: string
type: object
fault:
description: Fault injection policy to apply on HTTP traffic
at the client side.
properties:
abort:
oneOf:
- not:
anyOf:
- required:
- httpStatus
- required:
- grpcStatus
- required:
- http2Error
- required:
- httpStatus
- required:
- grpcStatus
- required:
- http2Error
properties:
grpcStatus:
format: string
type: string
http2Error:
format: string
type: string
httpStatus:
description: HTTP status code to use to abort the Http
request.
format: int32
type: integer
percentage:
description: Percentage of requests to be aborted with
the error code provided.
properties:
value:
format: double
type: number
type: object
type: object
delay:
oneOf:
- not:
anyOf:
- required:
- fixedDelay
- required:
- exponentialDelay
- required:
- fixedDelay
- required:
- exponentialDelay
properties:
exponentialDelay:
type: string
fixedDelay:
description: Add a fixed delay before forwarding the
request.
type: string
percent:
description: Percentage of requests on which the delay
will be injected (0-100).
format: int32
type: integer
percentage:
description: Percentage of requests on which the delay
will be injected.
properties:
value:
format: double
type: number
type: object
type: object
type: object
headers:
properties:
request:
properties:
add:
additionalProperties:
format: string
type: string
type: object
remove:
items:
format: string
type: string
type: array
set:
additionalProperties:
format: string
type: string
type: object
type: object
response:
properties:
add:
additionalProperties:
format: string
type: string
type: object
remove:
items:
format: string
type: string
type: array
set:
additionalProperties:
format: string
type: string
type: object
type: object
type: object
match:
items:
properties:
authority:
oneOf:
- not:
anyOf:
- required:
- exact
- required:
- prefix
- required:
- regex
- required:
- exact
- required:
- prefix
- required:
- regex
properties:
exact:
format: string
type: string
prefix:
format: string
type: string
regex:
description: RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).
format: string
type: string
type: object
gateways:
description: Names of gateways where the rule should be
applied.
items:
format: string
type: string
type: array
headers:
additionalProperties:
oneOf:
- not:
anyOf:
- required:
- exact
- required:
- prefix
- required:
- regex
- required:
- exact
- required:
- prefix
- required:
- regex
properties:
exact:
format: string
type: string
prefix:
format: string
type: string
regex:
description: RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).
format: string
type: string
type: object
type: object
ignoreUriCase:
description: Flag to specify whether the URI matching
should be case-insensitive.
type: boolean
method:
oneOf:
- not:
anyOf:
- required:
- exact
- required:
- prefix
- required:
- regex
- required:
- exact
- required:
- prefix
- required:
- regex
properties:
exact:
format: string
type: string
prefix:
format: string
type: string
regex:
description: RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).
format: string
type: string
type: object
name:
description: The name assigned to a match.
format: string
type: string
port:
description: Specifies the ports on the host that is being
addressed.
type: integer
queryParams:
additionalProperties:
oneOf:
- not:
anyOf:
- required:
- exact
- required:
- prefix
- required:
- regex
- required:
- exact
- required:
- prefix
- required:
- regex
properties:
exact:
format: string
type: string
prefix:
format: string
type: string
regex:
description: RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).
format: string
type: string
type: object
description: Query parameters for matching.
type: object
scheme:
oneOf:
- not:
anyOf:
- required:
- exact
- required:
- prefix
- required:
- regex
- required:
- exact
- required:
- prefix
- required:
- regex
properties:
exact:
format: string
type: string
prefix:
format: string
type: string
regex:
description: RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).
format: string
type: string
type: object
sourceLabels:
additionalProperties:
format: string
type: string
type: object
sourceNamespace:
description: Source namespace constraining the applicability
of a rule to workloads in that namespace.
format: string
type: string
uri:
oneOf:
- not:
anyOf:
- required:
- exact
- required:
- prefix
- required:
- regex
- required:
- exact
- required:
- prefix
- required:
- regex
properties:
exact:
format: string
type: string
prefix:
format: string
type: string
regex:
description: RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).
format: string
type: string
type: object
withoutHeaders:
additionalProperties:
oneOf:
- not:
anyOf:
- required:
- exact
- required:
- prefix
- required:
- regex
- required:
- exact
- required:
- prefix
- required:
- regex
properties:
exact:
format: string
type: string
prefix:
format: string
type: string
regex:
description: RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).
format: string
type: string
type: object
description: withoutHeader has the same syntax with the
header, but has opposite meaning.
type: object
type: object
type: array
mirror:
properties:
host:
description: The name of a service from the service registry.
format: string
type: string
port:
description: Specifies the port on the host that is being
addressed.
properties:
number:
type: integer
type: object
subset:
description: The name of a subset within the service.
format: string
type: string
type: object
mirror_percent:
description: Percentage of the traffic to be mirrored by the
`mirror` field.
nullable: true
type: integer
mirrorPercent:
description: Percentage of the traffic to be mirrored by the
`mirror` field.
nullable: true
type: integer
mirrorPercentage:
description: Percentage of the traffic to be mirrored by the
`mirror` field.
properties:
value:
format: double
type: number
type: object
name:
description: The name assigned to the route for debugging purposes.
format: string
type: string
redirect:
description: A HTTP rule can either redirect or forward (default)
traffic.
properties:
authority:
format: string
type: string
redirectCode:
type: integer
uri:
format: string
type: string
type: object
retries:
description: Retry policy for HTTP requests.
properties:
attempts:
description: Number of retries to be allowed for a given
request.
format: int32
type: integer
perTryTimeout:
description: Timeout per attempt for a given request, including
the initial call and any retries.
type: string
retryOn:
description: Specifies the conditions under which retry
takes place.
format: string
type: string
retryRemoteLocalities:
description: Flag to specify whether the retries should
retry to other localities.
nullable: true
type: boolean
type: object
rewrite:
description: Rewrite HTTP URIs and Authority headers.
properties:
authority:
description: rewrite the Authority/Host header with this
value.
format: string
type: string
uri:
format: string
type: string
type: object
route:
description: A HTTP rule can either redirect or forward (default)
traffic.
items:
properties:
destination:
properties:
host:
description: The name of a service from the service
registry.
format: string
type: string
port:
description: Specifies the port on the host that is
being addressed.
properties:
number:
type: integer
type: object
subset:
description: The name of a subset within the service.
format: string
type: string
type: object
headers:
properties:
request:
properties:
add:
additionalProperties:
format: string
type: string
type: object
remove:
items:
format: string
type: string
type: array
set:
additionalProperties:
format: string
type: string
type: object
type: object
response:
properties:
add:
additionalProperties:
format: string
type: string
type: object
remove:
items:
format: string
type: string
type: array
set:
additionalProperties:
format: string
type: string
type: object
type: object
type: object
weight:
format: int32
type: integer
type: object
type: array
timeout:
description: Timeout for HTTP requests, default is disabled.
type: string
type: object
type: array
tcp:
description: An ordered list of route rules for opaque TCP traffic.
items:
properties:
match:
items:
properties:
destinationSubnets:
description: IPv4 or IPv6 ip addresses of destination
with optional subnet.
items:
format: string
type: string
type: array
gateways:
description: Names of gateways where the rule should be
applied.
items:
format: string
type: string
type: array
port:
description: Specifies the port on the host that is being
addressed.
type: integer
sourceLabels:
additionalProperties:
format: string
type: string
type: object
sourceNamespace:
description: Source namespace constraining the applicability
of a rule to workloads in that namespace.
format: string
type: string
sourceSubnet:
description: IPv4 or IPv6 ip address of source with optional
subnet.
format: string
type: string
type: object
type: array
route:
description: The destination to which the connection should
be forwarded to.
items:
properties:
destination:
properties:
host:
description: The name of a service from the service
registry.
format: string
type: string
port:
description: Specifies the port on the host that is
being addressed.
properties:
number:
type: integer
type: object
subset:
description: The name of a subset within the service.
format: string
type: string
type: object
weight:
format: int32
type: integer
type: object
type: array
type: object
type: array
tls:
items:
properties:
match:
items:
properties:
destinationSubnets:
description: IPv4 or IPv6 ip addresses of destination
with optional subnet.
items:
format: string
type: string
type: array
gateways:
description: Names of gateways where the rule should be
applied.
items:
format: string
type: string
type: array
port:
description: Specifies the port on the host that is being
addressed.
type: integer
sniHosts:
description: SNI (server name indicator) to match on.
items:
format: string
type: string
type: array
sourceLabels:
additionalProperties:
format: string
type: string
type: object
sourceNamespace:
description: Source namespace constraining the applicability
of a rule to workloads in that namespace.
format: string
type: string
type: object
type: array
route:
description: The destination to which the connection should
be forwarded to.
items:
properties:
destination:
properties:
host:
description: The name of a service from the service
registry.
format: string
type: string
port:
description: Specifies the port on the host that is
being addressed.
properties:
number:
type: integer
type: object
subset:
description: The name of a subset within the service.
format: string
type: string
type: object
weight:
format: int32
type: integer
type: object
type: array
type: object
type: array
type: object
type: object
type:
description: Strategy type
type: string
type: object
status:
description: StrategyStatus defines the observed state of Strategy
properties:
completionTime:
description: Represents time when the strategy was completed. It is represented in RFC3339 form and is in UTC.
format: date-time
type: string
conditions:
description: The latest available observations of an object's current state.
items:
description: StrategyCondition describes current state of a strategy.
properties:
lastProbeTime:
description: Last time the condition was checked.
format: date-time
type: string
lastTransitionTime:
description: Last time the condition transit from one status to another
format: date-time
type: string
message:
description: Human readable message indicating details about last transition.
type: string
reason:
description: reason for the condition's last transition
type: string
status:
description: Status of the condition, one of True, False, Unknown
type: string
type:
description: Type of strategy condition, Complete or Failed.
type: string
type: object
type: array
startTime:
description: Represents time when the strategy was acknowledged by the controller. It is represented in RFC3339 form and is in UTC.
format: date-time
type: string
type: object
type: object
served: true
storage: true
subresources: {}
status:
acceptedNames:
kind: ""
plural: ""
conditions: []
storedVersions: []

View File

@@ -1,863 +0,0 @@
apiVersion: apiextensions.k8s.io/v1beta1
kind: CustomResourceDefinition
metadata:
creationTimestamp: null
labels:
controller-tools.k8s.io: "1.0"
name: servicepolicies.servicemesh.kubesphere.io
spec:
group: servicemesh.kubesphere.io
names:
kind: ServicePolicy
plural: servicepolicies
scope: Namespaced
validation:
openAPIV3Schema:
properties:
apiVersion:
description: 'APIVersion defines the versioned schema of this representation
of an object. Servers should convert recognized schemas to the latest
internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#resources'
type: string
kind:
description: 'Kind is a string value representing the REST resource this
object represents. Servers may infer this from the endpoint the client
submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds'
type: string
metadata:
type: object
spec:
properties:
selector:
description: Label selector for destination rules.
type: object
template:
description: Template used to create a destination rule
properties:
spec:
description: Spec indicates the behavior of a destination rule.
properties:
host:
description: 'REQUIRED. The name of a service from the service
registry. Service names are looked up from the platform''s
service registry (e.g., Kubernetes services, Consul services,
etc.) and from the hosts declared by [ServiceEntries](#ServiceEntry).
Rules defined for services that do not exist in the service
registry will be ignored. *Note for Kubernetes users*: When
short names are used (e.g. "reviews" instead of "reviews.default.svc.cluster.local"),
Istio will interpret the short name based on the namespace
of the rule, not the service. A rule in the "default" namespace
containing a host "reviews will be interpreted as "reviews.default.svc.cluster.local",
irrespective of the actual namespace associated with the reviews
service. _To avoid potential misconfigurations, it is recommended
to always use fully qualified domain names over short names._ Note
that the host field applies to both HTTP and TCP services.'
type: string
subsets:
description: One or more named sets that represent individual
versions of a service. Traffic policies can be overridden
at subset level.
items:
properties:
labels:
description: REQUIRED. Labels apply a filter over the
endpoints of a service in the service registry. See
route rules for examples of usage.
type: object
name:
description: REQUIRED. Name of the subset. The service
name and the subset name can be used for traffic splitting
in a route rule.
type: string
trafficPolicy:
description: Traffic policies that apply to this subset.
Subsets inherit the traffic policies specified at the
DestinationRule level. Settings specified at the subset
level will override the corresponding settings specified
at the DestinationRule level.
properties:
connectionPool:
description: Settings controlling the volume of connections
to an upstream service
properties:
http:
description: HTTP connection pool settings.
properties:
http1MaxPendingRequests:
description: Maximum number of pending HTTP
requests to a destination. Default 1024.
format: int32
type: integer
http2MaxRequests:
description: Maximum number of requests to
a backend. Default 1024.
format: int32
type: integer
maxRequestsPerConnection:
description: Maximum number of requests per
connection to a backend. Setting this parameter
to 1 disables keep alive.
format: int32
type: integer
maxRetries:
description: Maximum number of retries that
can be outstanding to all hosts in a cluster
at a given time. Defaults to 3.
format: int32
type: integer
type: object
tcp:
description: Settings common to both HTTP and
TCP upstream connections.
properties:
connectTimeout:
description: TCP connection timeout.
type: string
maxConnections:
description: Maximum number of HTTP1 /TCP
connections to a destination host.
format: int32
type: integer
type: object
type: object
loadBalancer:
description: Settings controlling the load balancer
algorithms.
properties:
consistentHash:
properties:
httpCookie:
description: Hash based on HTTP cookie.
properties:
name:
description: REQUIRED. Name of the cookie.
type: string
path:
description: Path to set for the cookie.
type: string
ttl:
description: REQUIRED. Lifetime of the
cookie.
type: string
required:
- name
- ttl
type: object
httpHeaderName:
description: 'It is required to specify exactly
one of the fields as hash key: HttpHeaderName,
HttpCookie, or UseSourceIP. Hash based on
a specific HTTP header.'
type: string
minimumRingSize:
description: The minimum number of virtual
nodes to use for the hash ring. Defaults
to 1024. Larger ring sizes result in more
granular load distributions. If the number
of hosts in the load balancing pool is larger
than the ring size, each host will be assigned
a single virtual node.
format: int64
type: integer
useSourceIp:
description: Hash based on the source IP address.
type: boolean
type: object
simple:
description: 'It is required to specify exactly
one of the fields: Simple or ConsistentHash'
type: string
type: object
outlierDetection:
description: Settings controlling eviction of unhealthy
hosts from the load balancing pool
properties:
baseEjectionTime:
description: 'Minimum ejection duration. A host
will remain ejected for a period equal to the
product of minimum ejection duration and the
number of times the host has been ejected. This
technique allows the system to automatically
increase the ejection period for unhealthy upstream
servers. format: 1h/1m/1s/1ms. MUST BE >=1ms.
Default is 30s.'
type: string
consecutiveErrors:
description: Number of errors before a host is
ejected from the connection pool. Defaults to
5. When the upstream host is accessed over HTTP,
a 5xx return code qualifies as an error. When
the upstream host is accessed over an opaque
TCP connection, connect timeouts and connection
error/failure events qualify as an error.
format: int32
type: integer
interval:
description: 'Time interval between ejection sweep
analysis. format: 1h/1m/1s/1ms. MUST BE >=1ms.
Default is 10s.'
type: string
maxEjectionPercent:
description: Maximum % of hosts in the load balancing
pool for the upstream service that can be ejected.
Defaults to 10%.
format: int32
type: integer
type: object
portLevelSettings:
description: Traffic policies specific to individual
ports. Note that port level settings will override
the destination-level settings. Traffic settings
specified at the destination-level will not be inherited
when overridden by port-level settings, i.e. default
values will be applied to fields omitted in port-level
traffic policies.
items:
properties:
connectionPool:
description: Settings controlling the volume
of connections to an upstream service
properties:
http:
description: HTTP connection pool settings.
properties:
http1MaxPendingRequests:
description: Maximum number of pending
HTTP requests to a destination. Default
1024.
format: int32
type: integer
http2MaxRequests:
description: Maximum number of requests
to a backend. Default 1024.
format: int32
type: integer
maxRequestsPerConnection:
description: Maximum number of requests
per connection to a backend. Setting
this parameter to 1 disables keep
alive.
format: int32
type: integer
maxRetries:
description: Maximum number of retries
that can be outstanding to all hosts
in a cluster at a given time. Defaults
to 3.
format: int32
type: integer
type: object
tcp:
description: Settings common to both HTTP
and TCP upstream connections.
properties:
connectTimeout:
description: TCP connection timeout.
type: string
maxConnections:
description: Maximum number of HTTP1
/TCP connections to a destination
host.
format: int32
type: integer
type: object
type: object
loadBalancer:
description: Settings controlling the load balancer
algorithms.
properties:
consistentHash:
properties:
httpCookie:
description: Hash based on HTTP cookie.
properties:
name:
description: REQUIRED. Name of the
cookie.
type: string
path:
description: Path to set for the
cookie.
type: string
ttl:
description: REQUIRED. Lifetime
of the cookie.
type: string
required:
- name
- ttl
type: object
httpHeaderName:
description: 'It is required to specify
exactly one of the fields as hash
key: HttpHeaderName, HttpCookie, or
UseSourceIP. Hash based on a specific
HTTP header.'
type: string
minimumRingSize:
description: The minimum number of virtual
nodes to use for the hash ring. Defaults
to 1024. Larger ring sizes result
in more granular load distributions.
If the number of hosts in the load
balancing pool is larger than the
ring size, each host will be assigned
a single virtual node.
format: int64
type: integer
useSourceIp:
description: Hash based on the source
IP address.
type: boolean
type: object
simple:
description: 'It is required to specify
exactly one of the fields: Simple or ConsistentHash'
type: string
type: object
outlierDetection:
description: Settings controlling eviction of
unhealthy hosts from the load balancing pool
properties:
baseEjectionTime:
description: 'Minimum ejection duration.
A host will remain ejected for a period
equal to the product of minimum ejection
duration and the number of times the host
has been ejected. This technique allows
the system to automatically increase the
ejection period for unhealthy upstream
servers. format: 1h/1m/1s/1ms. MUST BE
>=1ms. Default is 30s.'
type: string
consecutiveErrors:
description: Number of errors before a host
is ejected from the connection pool. Defaults
to 5. When the upstream host is accessed
over HTTP, a 5xx return code qualifies
as an error. When the upstream host is
accessed over an opaque TCP connection,
connect timeouts and connection error/failure
events qualify as an error.
format: int32
type: integer
interval:
description: 'Time interval between ejection
sweep analysis. format: 1h/1m/1s/1ms.
MUST BE >=1ms. Default is 10s.'
type: string
maxEjectionPercent:
description: Maximum % of hosts in the load
balancing pool for the upstream service
that can be ejected. Defaults to 10%.
format: int32
type: integer
type: object
port:
description: Specifies the port name or number
of a port on the destination service on which
this policy is being applied. Names must
comply with DNS label syntax (rfc1035) and
therefore cannot collide with numbers. If
there are multiple ports on a service with
the same protocol the names should be of the
form <protocol-name>-<DNS label>.
properties:
name:
description: Valid port name
type: string
number:
description: Valid port number
format: int32
type: integer
type: object
tls:
description: TLS related settings for connections
to the upstream service.
properties:
caCertificates:
description: 'OPTIONAL: The path to the
file containing certificate authority
certificates to use in verifying a presented
server certificate. If omitted, the proxy
will not verify the server''s certificate.
Should be empty if mode is `ISTIO_MUTUAL`.'
type: string
clientCertificate:
description: REQUIRED if mode is `MUTUAL`.
The path to the file holding the client-side
TLS certificate to use. Should be empty
if mode is `ISTIO_MUTUAL`.
type: string
mode:
description: 'REQUIRED: Indicates whether
connections to this port should be secured
using TLS. The value of this field determines
how TLS is enforced.'
type: string
privateKey:
description: REQUIRED if mode is `MUTUAL`.
The path to the file holding the client's
private key. Should be empty if mode is
`ISTIO_MUTUAL`.
type: string
sni:
description: SNI string to present to the
server during TLS handshake. Should be
empty if mode is `ISTIO_MUTUAL`.
type: string
subjectAltNames:
description: A list of alternate names to
verify the subject identity in the certificate.
If specified, the proxy will verify that
the server certificate's subject alt name
matches one of the specified values. Should
be empty if mode is `ISTIO_MUTUAL`.
items:
type: string
type: array
required:
- mode
type: object
required:
- port
type: object
type: array
tls:
description: TLS related settings for connections
to the upstream service.
properties:
caCertificates:
description: 'OPTIONAL: The path to the file containing
certificate authority certificates to use in
verifying a presented server certificate. If
omitted, the proxy will not verify the server''s
certificate. Should be empty if mode is `ISTIO_MUTUAL`.'
type: string
clientCertificate:
description: REQUIRED if mode is `MUTUAL`. The
path to the file holding the client-side TLS
certificate to use. Should be empty if mode
is `ISTIO_MUTUAL`.
type: string
mode:
description: 'REQUIRED: Indicates whether connections
to this port should be secured using TLS. The
value of this field determines how TLS is enforced.'
type: string
privateKey:
description: REQUIRED if mode is `MUTUAL`. The
path to the file holding the client's private
key. Should be empty if mode is `ISTIO_MUTUAL`.
type: string
sni:
description: SNI string to present to the server
during TLS handshake. Should be empty if mode
is `ISTIO_MUTUAL`.
type: string
subjectAltNames:
description: A list of alternate names to verify
the subject identity in the certificate. If
specified, the proxy will verify that the server
certificate's subject alt name matches one of
the specified values. Should be empty if mode
is `ISTIO_MUTUAL`.
items:
type: string
type: array
required:
- mode
type: object
type: object
required:
- name
- labels
type: object
type: array
trafficPolicy:
description: Traffic policies to apply (load balancing policy,
connection pool sizes, outlier detection).
properties:
connectionPool:
description: Settings controlling the volume of connections
to an upstream service
properties:
http:
description: HTTP connection pool settings.
properties:
http1MaxPendingRequests:
description: Maximum number of pending HTTP requests
to a destination. Default 1024.
format: int32
type: integer
http2MaxRequests:
description: Maximum number of requests to a backend.
Default 1024.
format: int32
type: integer
maxRequestsPerConnection:
description: Maximum number of requests per connection
to a backend. Setting this parameter to 1 disables
keep alive.
format: int32
type: integer
maxRetries:
description: Maximum number of retries that can
be outstanding to all hosts in a cluster at a
given time. Defaults to 3.
format: int32
type: integer
type: object
tcp:
description: Settings common to both HTTP and TCP upstream
connections.
properties:
connectTimeout:
description: TCP connection timeout.
type: string
maxConnections:
description: Maximum number of HTTP1 /TCP connections
to a destination host.
format: int32
type: integer
type: object
type: object
loadBalancer:
description: Settings controlling the load balancer algorithms.
properties:
consistentHash:
properties:
httpCookie:
description: Hash based on HTTP cookie.
properties:
name:
description: REQUIRED. Name of the cookie.
type: string
path:
description: Path to set for the cookie.
type: string
ttl:
description: REQUIRED. Lifetime of the cookie.
type: string
required:
- name
- ttl
type: object
httpHeaderName:
description: 'It is required to specify exactly
one of the fields as hash key: HttpHeaderName,
HttpCookie, or UseSourceIP. Hash based on a specific
HTTP header.'
type: string
minimumRingSize:
description: The minimum number of virtual nodes
to use for the hash ring. Defaults to 1024. Larger
ring sizes result in more granular load distributions.
If the number of hosts in the load balancing pool
is larger than the ring size, each host will be
assigned a single virtual node.
format: int64
type: integer
useSourceIp:
description: Hash based on the source IP address.
type: boolean
type: object
simple:
description: 'It is required to specify exactly one
of the fields: Simple or ConsistentHash'
type: string
type: object
outlierDetection:
description: Settings controlling eviction of unhealthy
hosts from the load balancing pool
properties:
baseEjectionTime:
description: 'Minimum ejection duration. A host will
remain ejected for a period equal to the product of
minimum ejection duration and the number of times
the host has been ejected. This technique allows the
system to automatically increase the ejection period
for unhealthy upstream servers. format: 1h/1m/1s/1ms.
MUST BE >=1ms. Default is 30s.'
type: string
consecutiveErrors:
description: Number of errors before a host is ejected
from the connection pool. Defaults to 5. When the
upstream host is accessed over HTTP, a 5xx return
code qualifies as an error. When the upstream host
is accessed over an opaque TCP connection, connect
timeouts and connection error/failure events qualify
as an error.
format: int32
type: integer
interval:
description: 'Time interval between ejection sweep analysis.
format: 1h/1m/1s/1ms. MUST BE >=1ms. Default is 10s.'
type: string
maxEjectionPercent:
description: Maximum % of hosts in the load balancing
pool for the upstream service that can be ejected.
Defaults to 10%.
format: int32
type: integer
type: object
portLevelSettings:
description: Traffic policies specific to individual ports.
Note that port level settings will override the destination-level
settings. Traffic settings specified at the destination-level
will not be inherited when overridden by port-level settings,
i.e. default values will be applied to fields omitted
in port-level traffic policies.
items:
properties:
connectionPool:
description: Settings controlling the volume of connections
to an upstream service
properties:
http:
description: HTTP connection pool settings.
properties:
http1MaxPendingRequests:
description: Maximum number of pending HTTP
requests to a destination. Default 1024.
format: int32
type: integer
http2MaxRequests:
description: Maximum number of requests to
a backend. Default 1024.
format: int32
type: integer
maxRequestsPerConnection:
description: Maximum number of requests per
connection to a backend. Setting this parameter
to 1 disables keep alive.
format: int32
type: integer
maxRetries:
description: Maximum number of retries that
can be outstanding to all hosts in a cluster
at a given time. Defaults to 3.
format: int32
type: integer
type: object
tcp:
description: Settings common to both HTTP and
TCP upstream connections.
properties:
connectTimeout:
description: TCP connection timeout.
type: string
maxConnections:
description: Maximum number of HTTP1 /TCP
connections to a destination host.
format: int32
type: integer
type: object
type: object
loadBalancer:
description: Settings controlling the load balancer
algorithms.
properties:
consistentHash:
properties:
httpCookie:
description: Hash based on HTTP cookie.
properties:
name:
description: REQUIRED. Name of the cookie.
type: string
path:
description: Path to set for the cookie.
type: string
ttl:
description: REQUIRED. Lifetime of the
cookie.
type: string
required:
- name
- ttl
type: object
httpHeaderName:
description: 'It is required to specify exactly
one of the fields as hash key: HttpHeaderName,
HttpCookie, or UseSourceIP. Hash based on
a specific HTTP header.'
type: string
minimumRingSize:
description: The minimum number of virtual
nodes to use for the hash ring. Defaults
to 1024. Larger ring sizes result in more
granular load distributions. If the number
of hosts in the load balancing pool is larger
than the ring size, each host will be assigned
a single virtual node.
format: int64
type: integer
useSourceIp:
description: Hash based on the source IP address.
type: boolean
type: object
simple:
description: 'It is required to specify exactly
one of the fields: Simple or ConsistentHash'
type: string
type: object
outlierDetection:
description: Settings controlling eviction of unhealthy
hosts from the load balancing pool
properties:
baseEjectionTime:
description: 'Minimum ejection duration. A host
will remain ejected for a period equal to the
product of minimum ejection duration and the
number of times the host has been ejected. This
technique allows the system to automatically
increase the ejection period for unhealthy upstream
servers. format: 1h/1m/1s/1ms. MUST BE >=1ms.
Default is 30s.'
type: string
consecutiveErrors:
description: Number of errors before a host is
ejected from the connection pool. Defaults to
5. When the upstream host is accessed over HTTP,
a 5xx return code qualifies as an error. When
the upstream host is accessed over an opaque
TCP connection, connect timeouts and connection
error/failure events qualify as an error.
format: int32
type: integer
interval:
description: 'Time interval between ejection sweep
analysis. format: 1h/1m/1s/1ms. MUST BE >=1ms.
Default is 10s.'
type: string
maxEjectionPercent:
description: Maximum % of hosts in the load balancing
pool for the upstream service that can be ejected.
Defaults to 10%.
format: int32
type: integer
type: object
port:
description: Specifies the port name or number of
a port on the destination service on which this
policy is being applied. Names must comply with
DNS label syntax (rfc1035) and therefore cannot
collide with numbers. If there are multiple ports
on a service with the same protocol the names should
be of the form <protocol-name>-<DNS label>.
properties:
name:
description: Valid port name
type: string
number:
description: Valid port number
format: int32
type: integer
type: object
tls:
description: TLS related settings for connections
to the upstream service.
properties:
caCertificates:
description: 'OPTIONAL: The path to the file containing
certificate authority certificates to use in
verifying a presented server certificate. If
omitted, the proxy will not verify the server''s
certificate. Should be empty if mode is `ISTIO_MUTUAL`.'
type: string
clientCertificate:
description: REQUIRED if mode is `MUTUAL`. The
path to the file holding the client-side TLS
certificate to use. Should be empty if mode
is `ISTIO_MUTUAL`.
type: string
mode:
description: 'REQUIRED: Indicates whether connections
to this port should be secured using TLS. The
value of this field determines how TLS is enforced.'
type: string
privateKey:
description: REQUIRED if mode is `MUTUAL`. The
path to the file holding the client's private
key. Should be empty if mode is `ISTIO_MUTUAL`.
type: string
sni:
description: SNI string to present to the server
during TLS handshake. Should be empty if mode
is `ISTIO_MUTUAL`.
type: string
subjectAltNames:
description: A list of alternate names to verify
the subject identity in the certificate. If
specified, the proxy will verify that the server
certificate's subject alt name matches one of
the specified values. Should be empty if mode
is `ISTIO_MUTUAL`.
items:
type: string
type: array
required:
- mode
type: object
required:
- port
type: object
type: array
tls:
description: TLS related settings for connections to the
upstream service.
properties:
caCertificates:
description: 'OPTIONAL: The path to the file containing
certificate authority certificates to use in verifying
a presented server certificate. If omitted, the proxy
will not verify the server''s certificate. Should
be empty if mode is `ISTIO_MUTUAL`.'
type: string
clientCertificate:
description: REQUIRED if mode is `MUTUAL`. The path
to the file holding the client-side TLS certificate
to use. Should be empty if mode is `ISTIO_MUTUAL`.
type: string
mode:
description: 'REQUIRED: Indicates whether connections
to this port should be secured using TLS. The value
of this field determines how TLS is enforced.'
type: string
privateKey:
description: REQUIRED if mode is `MUTUAL`. The path
to the file holding the client's private key. Should
be empty if mode is `ISTIO_MUTUAL`.
type: string
sni:
description: SNI string to present to the server during
TLS handshake. Should be empty if mode is `ISTIO_MUTUAL`.
type: string
subjectAltNames:
description: A list of alternate names to verify the
subject identity in the certificate. If specified,
the proxy will verify that the server certificate's
subject alt name matches one of the specified values.
Should be empty if mode is `ISTIO_MUTUAL`.
items:
type: string
type: array
required:
- mode
type: object
type: object
required:
- host
type: object
type: object
type: object
status:
type: object
version: v1alpha2
status:
acceptedNames:
kind: ""
plural: ""
conditions: []
storedVersions: []

View File

@@ -1,787 +0,0 @@
apiVersion: apiextensions.k8s.io/v1beta1
kind: CustomResourceDefinition
metadata:
creationTimestamp: null
labels:
controller-tools.k8s.io: "1.0"
name: strategies.servicemesh.kubesphere.io
spec:
additionalPrinterColumns:
- JSONPath: .spec.type
description: type of strategy
name: Type
type: string
- JSONPath: .spec.template.spec.hosts
description: destination hosts
name: Hosts
type: string
- JSONPath: .metadata.creationTimestamp
description: 'CreationTimestamp is a timestamp representing the server time when
this object was created. It is not guaranteed to be set in happens-before order
across separate operations. Clients may not set this value. It is represented
in RFC3339 form and is in UTC. Populated by the system. Read-only. Null for
lists. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata'
name: Age
type: date
group: servicemesh.kubesphere.io
names:
kind: Strategy
plural: strategies
scope: Namespaced
validation:
openAPIV3Schema:
properties:
apiVersion:
description: 'APIVersion defines the versioned schema of this representation
of an object. Servers should convert recognized schemas to the latest
internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#resources'
type: string
kind:
description: 'Kind is a string value representing the REST resource this
object represents. Servers may infer this from the endpoint the client
submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds'
type: string
metadata:
type: object
spec:
properties:
governor:
description: Governor version, the version takes control of all incoming
traffic label version value
type: string
principal:
description: Principal version, the one as reference version label version
value
type: string
selector:
description: Label selector for virtual services.
type: object
strategyPolicy:
description: strategy policy, how the strategy will be applied by the
strategy controller
type: string
template:
description: Template describes the virtual service that will be created.
properties:
metadata:
description: Metadata of the virtual services created from this
template
type: object
spec:
description: Spec indicates the behavior of a virtual service.
properties:
gateways:
description: The names of gateways and sidecars that should
apply these routes. A single VirtualService is used for sidecars
inside the mesh as well as for one or more gateways. The selection
condition imposed by this field can be overridden using the
source field in the match conditions of HTTP/TCP routes. The
reserved word "mesh" is used to imply all the sidecars in
the mesh. When this field is omitted, the default gateway
("mesh") will be used, which would apply the rule to all sidecars
in the mesh. If a list of gateway names is provided, the rules
will apply only to the gateways. To apply the rules to both
gateways and sidecars, specify "mesh" as one of the gateway
names.
items:
type: string
type: array
hosts:
description: REQUIRED. The destination address for traffic captured
by this virtual service. Could be a DNS name with wildcard
prefix or a CIDR prefix. Depending on the platform, short-names
can also be used instead of a FQDN (i.e. has no dots in the
name). In such a scenario, the FQDN of the host would be derived
based on the underlying platform. For example on Kubernetes,
when hosts contains a short name, Istio will interpret the
short name based on the namespace of the rule. Thus, when
a client namespace applies a rule in the "default" namespace
containing a name "reviews, Istio will setup routes to the
"reviews.default.svc.cluster.local" service. However, if a
different name such as "reviews.sales.svc.cluster.local" is
used, it would be treated as a FQDN during virtual host matching.
In Consul, a plain service name would be resolved to the FQDN
"reviews.service.consul". Note that the hosts field applies
to both HTTP and TCP services. Service inside the mesh, i.e.,
those found in the service registry, must always be referred
to using their alphanumeric names. IP addresses or CIDR prefixes
are allowed only for services defined via the Gateway.
items:
type: string
type: array
http:
description: An ordered list of route rules for HTTP traffic.
The first rule matching an incoming request is used.
items:
properties:
appendHeaders:
description: Additional HTTP headers to add before forwarding
a request to the destination service.
type: object
corsPolicy:
description: Cross-Origin Resource Sharing policy
properties:
allowCredentials:
description: Indicates whether the caller is allowed
to send the actual request (not the preflight) using
credentials. Translates to Access-Control-Allow-Credentials
header.
type: boolean
allowHeaders:
description: List of HTTP headers that can be used
when requesting the resource. Serialized to Access-Control-Allow-Methods
header.
items:
type: string
type: array
allowMethods:
description: List of HTTP methods allowed to access
the resource. The content will be serialized into
the Access-Control-Allow-Methods header.
items:
type: string
type: array
allowOrigin:
description: The list of origins that are allowed
to perform CORS requests. The content will be serialized
into the Access-Control-Allow-Origin header. Wildcard
* will allow all origins.
items:
type: string
type: array
exposeHeaders:
description: A white list of HTTP headers that the
browsers are allowed to access. Serialized into
Access-Control-Expose-Headers header.
items:
type: string
type: array
maxAge:
description: Specifies how long the the results of
a preflight request can be cached. Translates to
the Access-Control-Max-Age header.
type: string
type: object
fault:
description: Fault injection policy to apply on HTTP traffic.
properties:
abort:
description: Abort Http request attempts and return
error codes back to downstream service, giving the
impression that the upstream service is faulty.
properties:
httpStatus:
description: REQUIRED. HTTP status code to use
to abort the Http request.
format: int64
type: integer
percent:
description: Percentage of requests to be aborted
with the error code provided (0-100).
format: int64
type: integer
required:
- httpStatus
type: object
delay:
description: Delay requests before forwarding, emulating
various failures such as network issues, overloaded
upstream service, etc.
properties:
exponentialDelay:
description: (-- Add a delay (based on an exponential
function) before forwarding the request. mean
delay needed to derive the exponential delay
values --)
type: string
fixedDelay:
description: 'REQUIRED. Add a fixed delay before
forwarding the request. Format: 1h/1m/1s/1ms.
MUST be >=1ms.'
type: string
percent:
description: Percentage of requests on which the
delay will be injected (0-100).
format: int64
type: integer
required:
- fixedDelay
type: object
type: object
match:
description: Match conditions to be satisfied for the
rule to be activated. All conditions inside a single
match block have AND semantics, while the list of match
blocks have OR semantics. The rule is matched if any
one of the match blocks succeed.
items:
properties:
authority:
description: 'HTTP Authority values are case-sensitive
and formatted as follows: - `exact: "value"`
for exact string match - `prefix: "value"` for
prefix-based match - `regex: "value"` for ECMAscript
style regex-based match'
properties:
exact:
description: exact string match
type: string
prefix:
description: prefix-based match
type: string
regex:
description: ECMAscript style regex-based match
type: string
suffix:
description: suffix-based match.
type: string
type: object
gateways:
description: Names of gateways where the rule should
be applied to. Gateway names at the top of the
VirtualService (if any) are overridden. The gateway
match is independent of sourceLabels.
items:
type: string
type: array
headers:
description: 'The header keys must be lowercase
and use hyphen as the separator, e.g. _x-request-id_. Header
values are case-sensitive and formatted as follows: -
`exact: "value"` for exact string match - `prefix:
"value"` for prefix-based match - `regex: "value"`
for ECMAscript style regex-based match **Note:**
The keys `uri`, `scheme`, `method`, and `authority`
will be ignored.'
type: object
method:
description: 'HTTP Method values are case-sensitive
and formatted as follows: - `exact: "value"`
for exact string match - `prefix: "value"` for
prefix-based match - `regex: "value"` for ECMAscript
style regex-based match'
properties:
exact:
description: exact string match
type: string
prefix:
description: prefix-based match
type: string
regex:
description: ECMAscript style regex-based match
type: string
suffix:
description: suffix-based match.
type: string
type: object
port:
description: Specifies the ports on the host that
is being addressed. Many services only expose
a single port or label ports with the protocols
they support, in these cases it is not required
to explicitly select the port.
format: int32
type: integer
scheme:
description: 'URI Scheme values are case-sensitive
and formatted as follows: - `exact: "value"`
for exact string match - `prefix: "value"` for
prefix-based match - `regex: "value"` for ECMAscript
style regex-based match'
properties:
exact:
description: exact string match
type: string
prefix:
description: prefix-based match
type: string
regex:
description: ECMAscript style regex-based match
type: string
suffix:
description: suffix-based match.
type: string
type: object
sourceLabels:
description: One or more labels that constrain the
applicability of a rule to workloads with the
given labels. If the VirtualService has a list
of gateways specified at the top, it should include
the reserved gateway `mesh` in order for this
field to be applicable.
type: object
uri:
description: 'URI to match values are case-sensitive
and formatted as follows: - `exact: "value"`
for exact string match - `prefix: "value"` for
prefix-based match - `regex: "value"` for ECMAscript
style regex-based match'
properties:
exact:
description: exact string match
type: string
prefix:
description: prefix-based match
type: string
regex:
description: ECMAscript style regex-based match
type: string
suffix:
description: suffix-based match.
type: string
type: object
type: object
type: array
mirror:
description: Mirror HTTP traffic to a another destination
in addition to forwarding the requests to the intended
destination. Mirrored traffic is on a best effort basis
where the sidecar/gateway will not wait for the mirrored
cluster to respond before returning the response from
the original destination. Statistics will be generated
for the mirrored destination.
properties:
host:
description: 'REQUIRED. The name of a service from
the service registry. Service names are looked up
from the platform''s service registry (e.g., Kubernetes
services, Consul services, etc.) and from the hosts
declared by [ServiceEntry](#ServiceEntry). Traffic
forwarded to destinations that are not found in
either of the two, will be dropped. *Note for Kubernetes
users*: When short names are used (e.g. "reviews"
instead of "reviews.default.svc.cluster.local"),
Istio will interpret the short name based on the
namespace of the rule, not the service. A rule in
the "default" namespace containing a host "reviews
will be interpreted as "reviews.default.svc.cluster.local",
irrespective of the actual namespace associated
with the reviews service. _To avoid potential misconfigurations,
it is recommended to always use fully qualified
domain names over short names._'
type: string
port:
description: Specifies the port on the host that is
being addressed. If a service exposes only a single
port it is not required to explicitly select the
port.
properties:
name:
description: Valid port name
type: string
number:
description: Valid port number
format: int32
type: integer
type: object
subset:
description: The name of a subset within the service.
Applicable only to services within the mesh. The
subset must be defined in a corresponding DestinationRule.
type: string
required:
- host
type: object
redirect:
description: A http rule can either redirect or forward
(default) traffic. If traffic passthrough option is
specified in the rule, route/redirect will be ignored.
The redirect primitive can be used to send a HTTP 302
redirect to a different URI or Authority.
properties:
authority:
description: On a redirect, overwrite the Authority/Host
portion of the URL with this value.
type: string
uri:
description: On a redirect, overwrite the Path portion
of the URL with this value. Note that the entire
path will be replaced, irrespective of the request
URI being matched as an exact path or prefix.
type: string
type: object
removeResponseHeaders:
description: Http headers to remove before returning the
response to the caller
type: object
retries:
description: Retry policy for HTTP requests.
properties:
attempts:
description: REQUIRED. Number of retries for a given
request. The interval between retries will be determined
automatically (25ms+). Actual number of retries
attempted depends on the httpReqTimeout.
format: int64
type: integer
perTryTimeout:
description: 'Timeout per retry attempt for a given
request. format: 1h/1m/1s/1ms. MUST BE >=1ms.'
type: string
required:
- attempts
- perTryTimeout
type: object
rewrite:
description: Rewrite HTTP URIs and Authority headers.
Rewrite cannot be used with Redirect primitive. Rewrite
will be performed before forwarding.
properties:
authority:
description: rewrite the Authority/Host header with
this value.
type: string
uri:
description: rewrite the path (or the prefix) portion
of the URI with this value. If the original URI
was matched based on prefix, the value provided
in this field will replace the corresponding matched
prefix.
type: string
type: object
route:
description: A http rule can either redirect or forward
(default) traffic. The forwarding target can be one
of several versions of a service (see glossary in beginning
of document). Weights associated with the service version
determine the proportion of traffic it receives.
items:
properties:
destination:
description: REQUIRED. Destination uniquely identifies
the instances of a service to which the request/connection
should be forwarded to.
properties:
host:
description: 'REQUIRED. The name of a service
from the service registry. Service names are
looked up from the platform''s service registry
(e.g., Kubernetes services, Consul services,
etc.) and from the hosts declared by [ServiceEntry](#ServiceEntry).
Traffic forwarded to destinations that are
not found in either of the two, will be dropped. *Note
for Kubernetes users*: When short names are
used (e.g. "reviews" instead of "reviews.default.svc.cluster.local"),
Istio will interpret the short name based
on the namespace of the rule, not the service.
A rule in the "default" namespace containing
a host "reviews will be interpreted as "reviews.default.svc.cluster.local",
irrespective of the actual namespace associated
with the reviews service. _To avoid potential
misconfigurations, it is recommended to always
use fully qualified domain names over short
names._'
type: string
port:
description: Specifies the port on the host
that is being addressed. If a service exposes
only a single port it is not required to explicitly
select the port.
properties:
name:
description: Valid port name
type: string
number:
description: Valid port number
format: int32
type: integer
type: object
subset:
description: The name of a subset within the
service. Applicable only to services within
the mesh. The subset must be defined in a
corresponding DestinationRule.
type: string
required:
- host
type: object
weight:
description: REQUIRED. The proportion of traffic
to be forwarded to the service version. (0-100).
Sum of weights across destinations SHOULD BE ==
100. If there is only destination in a rule, the
weight value is assumed to be 100.
format: int64
type: integer
required:
- destination
- weight
type: object
type: array
timeout:
description: Timeout for HTTP requests.
type: string
websocketUpgrade:
description: Indicates that a HTTP/1.1 client connection
to this particular route should be allowed (and expected)
to upgrade to a WebSocket connection. The default is
false. Istio's reference sidecar implementation (Envoy)
expects the first request to this route to contain the
WebSocket upgrade headers. Otherwise, the request will
be rejected. Note that Websocket allows secondary protocol
negotiation which may then be subject to further routing
rules based on the protocol selected.
type: boolean
type: object
type: array
tcp:
description: An ordered list of route rules for TCP traffic.
The first rule matching an incoming request is used.
items:
properties:
match:
description: Match conditions to be satisfied for the
rule to be activated. All conditions inside a single
match block have AND semantics, while the list of match
blocks have OR semantics. The rule is matched if any
one of the match blocks succeed.
items:
properties:
destinationSubnets:
description: IPv4 or IPv6 ip address of destination
with optional subnet. E.g., a.b.c.d/xx form or
just a.b.c.d.
items:
type: string
type: array
gateways:
description: Names of gateways where the rule should
be applied to. Gateway names at the top of the
VirtualService (if any) are overridden. The gateway
match is independent of sourceLabels.
items:
type: string
type: array
port:
description: Specifies the port on the host that
is being addressed. Many services only expose
a single port or label ports with the protocols
they support, in these cases it is not required
to explicitly select the port.
format: int64
type: integer
sourceLabels:
description: One or more labels that constrain the
applicability of a rule to workloads with the
given labels. If the VirtualService has a list
of gateways specified at the top, it should include
the reserved gateway `mesh` in order for this
field to be applicable.
type: object
type: object
type: array
route:
description: The destinations to which the connection
should be forwarded to. Weights must add to 100%.
items:
properties:
destination:
description: REQUIRED. Destination uniquely identifies
the instances of a service to which the request/connection
should be forwarded to.
properties:
host:
description: 'REQUIRED. The name of a service
from the service registry. Service names are
looked up from the platform''s service registry
(e.g., Kubernetes services, Consul services,
etc.) and from the hosts declared by [ServiceEntry](#ServiceEntry).
Traffic forwarded to destinations that are
not found in either of the two, will be dropped. *Note
for Kubernetes users*: When short names are
used (e.g. "reviews" instead of "reviews.default.svc.cluster.local"),
Istio will interpret the short name based
on the namespace of the rule, not the service.
A rule in the "default" namespace containing
a host "reviews will be interpreted as "reviews.default.svc.cluster.local",
irrespective of the actual namespace associated
with the reviews service. _To avoid potential
misconfigurations, it is recommended to always
use fully qualified domain names over short
names._'
type: string
port:
description: Specifies the port on the host
that is being addressed. If a service exposes
only a single port it is not required to explicitly
select the port.
properties:
name:
description: Valid port name
type: string
number:
description: Valid port number
format: int32
type: integer
type: object
subset:
description: The name of a subset within the
service. Applicable only to services within
the mesh. The subset must be defined in a
corresponding DestinationRule.
type: string
required:
- host
type: object
weight:
description: REQUIRED. The proportion of traffic
to be forwarded to the service version. (0-100).
Sum of weights across destinations SHOULD BE ==
100. If there is only destination in a rule, the
weight value is assumed to be 100.
format: int64
type: integer
required:
- destination
- weight
type: object
type: array
required:
- match
- route
type: object
type: array
tls:
items:
properties:
match:
description: REQUIRED. Match conditions to be satisfied
for the rule to be activated. All conditions inside
a single match block have AND semantics, while the list
of match blocks have OR semantics. The rule is matched
if any one of the match blocks succeed.
items:
properties:
destinationSubnets:
description: IPv4 or IPv6 ip addresses of destination
with optional subnet. E.g., a.b.c.d/xx form or
just a.b.c.d.
items:
type: string
type: array
gateways:
description: Names of gateways where the rule should
be applied to. Gateway names at the top of the
VirtualService (if any) are overridden. The gateway
match is independent of sourceLabels.
items:
type: string
type: array
port:
description: Specifies the port on the host that
is being addressed. Many services only expose
a single port or label ports with the protocols
they support, in these cases it is not required
to explicitly select the port.
format: int64
type: integer
sniHosts:
description: REQUIRED. SNI (server name indicator)
to match on. Wildcard prefixes can be used in
the SNI value, e.g., *.com will match foo.example.com
as well as example.com. An SNI value must be a
subset (i.e., fall within the domain) of the corresponding
virtual service's hosts
items:
type: string
type: array
sourceLabels:
description: One or more labels that constrain the
applicability of a rule to workloads with the
given labels. If the VirtualService has a list
of gateways specified at the top, it should include
the reserved gateway `mesh` in order for this
field to be applicable.
type: object
required:
- sniHosts
type: object
type: array
route:
description: The destination to which the connection should
be forwarded to.
items:
properties:
destination:
description: REQUIRED. Destination uniquely identifies
the instances of a service to which the request/connection
should be forwarded to.
properties:
host:
description: 'REQUIRED. The name of a service
from the service registry. Service names are
looked up from the platform''s service registry
(e.g., Kubernetes services, Consul services,
etc.) and from the hosts declared by [ServiceEntry](#ServiceEntry).
Traffic forwarded to destinations that are
not found in either of the two, will be dropped. *Note
for Kubernetes users*: When short names are
used (e.g. "reviews" instead of "reviews.default.svc.cluster.local"),
Istio will interpret the short name based
on the namespace of the rule, not the service.
A rule in the "default" namespace containing
a host "reviews will be interpreted as "reviews.default.svc.cluster.local",
irrespective of the actual namespace associated
with the reviews service. _To avoid potential
misconfigurations, it is recommended to always
use fully qualified domain names over short
names._'
type: string
port:
description: Specifies the port on the host
that is being addressed. If a service exposes
only a single port it is not required to explicitly
select the port.
properties:
name:
description: Valid port name
type: string
number:
description: Valid port number
format: int32
type: integer
type: object
subset:
description: The name of a subset within the
service. Applicable only to services within
the mesh. The subset must be defined in a
corresponding DestinationRule.
type: string
required:
- host
type: object
weight:
description: REQUIRED. The proportion of traffic
to be forwarded to the service version. (0-100).
Sum of weights across destinations SHOULD BE ==
100. If there is only destination in a rule, the
weight value is assumed to be 100.
format: int64
type: integer
required:
- destination
- weight
type: object
type: array
required:
- match
- route
type: object
type: array
required:
- hosts
type: object
type: object
type:
description: Strategy type
type: string
type: object
status:
type: object
version: v1alpha2
status:
acceptedNames:
kind: ""
plural: ""
conditions: []
storedVersions: []

View File

@@ -0,0 +1,53 @@
---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
annotations:
controller-gen.kubebuilder.io/version: (devel)
creationTimestamp: null
name: workspaces.tenant.kubesphere.io
spec:
group: tenant.kubesphere.io
names:
categories:
- tenant
kind: Workspace
listKind: WorkspaceList
plural: workspaces
singular: workspace
scope: Cluster
versions:
- name: v1alpha1
schema:
openAPIV3Schema:
description: Workspace is the Schema for the workspaces API
properties:
apiVersion:
description: 'APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
type: string
kind:
description: 'Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
type: string
metadata:
type: object
spec:
description: WorkspaceSpec defines the desired state of Workspace
properties:
manager:
type: string
networkIsolation:
type: boolean
type: object
status:
description: WorkspaceStatus defines the observed state of Workspace
type: object
type: object
served: true
storage: true
status:
acceptedNames:
kind: ""
plural: ""
conditions: []
storedVersions: []

View File

@@ -0,0 +1,126 @@
---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
annotations:
controller-gen.kubebuilder.io/version: (devel)
creationTimestamp: null
name: workspacetemplates.tenant.kubesphere.io
spec:
group: tenant.kubesphere.io
names:
categories:
- tenant
kind: WorkspaceTemplate
listKind: WorkspaceTemplateList
plural: workspacetemplates
singular: workspacetemplate
scope: Cluster
versions:
- name: v1alpha2
schema:
openAPIV3Schema:
description: WorkspaceTemplate is the Schema for the workspacetemplates API
properties:
apiVersion:
description: 'APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
type: string
kind:
description: 'Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
type: string
metadata:
type: object
spec:
properties:
overrides:
items:
properties:
clusterName:
type: string
clusterOverrides:
items:
properties:
op:
type: string
path:
type: string
value:
type: object
x-kubernetes-preserve-unknown-fields: true
required:
- path
type: object
type: array
required:
- clusterName
type: object
type: array
placement:
properties:
clusterSelector:
description: A label selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.
properties:
matchExpressions:
description: matchExpressions is a list of label selector requirements. The requirements are ANDed.
items:
description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.
properties:
key:
description: key is the label key that the selector applies to.
type: string
operator:
description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.
type: string
values:
description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.
items:
type: string
type: array
required:
- key
- operator
type: object
type: array
matchLabels:
additionalProperties:
type: string
description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.
type: object
type: object
clusters:
items:
properties:
name:
type: string
required:
- name
type: object
type: array
type: object
template:
properties:
metadata:
type: object
spec:
description: WorkspaceSpec defines the desired state of Workspace
properties:
manager:
type: string
networkIsolation:
type: boolean
type: object
type: object
required:
- placement
- template
type: object
type: object
served: true
storage: true
status:
acceptedNames:
kind: ""
plural: ""
conditions: []
storedVersions: []

View File

@@ -1,42 +0,0 @@
apiVersion: apiextensions.k8s.io/v1beta1
kind: CustomResourceDefinition
metadata:
creationTimestamp: null
labels:
controller-tools.k8s.io: "1.0"
name: workspaces.tenant.kubesphere.io
spec:
group: tenant.kubesphere.io
names:
kind: Workspace
plural: workspaces
scope: Cluster
validation:
openAPIV3Schema:
properties:
apiVersion:
description: 'APIVersion defines the versioned schema of this representation
of an object. Servers should convert recognized schemas to the latest
internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#resources'
type: string
kind:
description: 'Kind is a string value representing the REST resource this
object represents. Servers may infer this from the endpoint the client
submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds'
type: string
metadata:
type: object
spec:
properties:
manager:
type: string
type: object
status:
type: object
version: v1alpha1
status:
acceptedNames:
kind: ""
plural: ""
conditions: []
storedVersions: []

View File

@@ -1,49 +0,0 @@
# Adds namespace to all resources.
namespace: t-system
# Value of this field is prepended to the
# names of all resources, e.g. a deployment named
# "wordpress" becomes "alices-wordpress".
# Note that it should also match with the prefix (text before '-') of the namespace
# field above.
namePrefix: t-
# Labels to add to all resources and selectors.
#commonLabels:
# someName: someValue
# Each entry in this list must resolve to an existing
# resource definition in YAML. These are the resource
# files that kustomize reads, modifies and emits as a
# YAML string, with resources separated by document
# markers ("---").
resources:
- ../rbac/rbac_role.yaml
- ../rbac/rbac_role_binding.yaml
- ../manager/manager.yaml
# Comment the following 3 lines if you want to disable
# the auth proxy (https://github.com/brancz/kube-rbac-proxy)
# which protects your /metrics endpoint.
#- ../rbac/auth_proxy_service.yaml
#- ../rbac/auth_proxy_role.yaml
#- ../rbac/auth_proxy_role_binding.yaml
patches:
- manager_image_patch.yaml
# Protect the /metrics endpoint by putting it behind auth.
# Only one of manager_auth_proxy_patch.yaml and
# manager_prometheus_metrics_patch.yaml should be enabled.
- manager_auth_proxy_patch.yaml
# If you want your controller-manager to expose the /metrics
# endpoint w/o any authn/z, uncomment the following line and
# comment manager_auth_proxy_patch.yaml.
# Only one of manager_auth_proxy_patch.yaml and
# manager_prometheus_metrics_patch.yaml should be enabled.
#- manager_prometheus_metrics_patch.yaml
vars:
- name: WEBHOOK_SECRET_NAME
objref:
kind: Secret
name: webhook-server-secret
apiVersion: v1

View File

@@ -1,24 +0,0 @@
# This patch inject a sidecar container which is a HTTP proxy for the controller manager,
# it performs RBAC authorization against the Kubernetes API using SubjectAccessReviews.
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: controller-manager
namespace: system
spec:
template:
spec:
containers:
- name: kube-rbac-proxy
image: quay.io/coreos/kube-rbac-proxy:v0.4.0
args:
- "--secure-listen-address=0.0.0.0:8443"
- "--upstream=http://127.0.0.1:8080/"
- "--logtostderr=true"
- "--v=10"
ports:
- containerPort: 8443
name: https
- name: manager
args:
- "--metrics-addr=127.0.0.1:8080"

View File

@@ -1,12 +0,0 @@
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: controller-manager
namespace: system
spec:
template:
spec:
containers:
# Change the value of image field below to your controller image URL
- image: kubespheredev/controller-manager:latest
name: manager

View File

@@ -1,19 +0,0 @@
# This patch enables Prometheus scraping for the manager pod.
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: controller-manager
namespace: system
spec:
template:
metadata:
annotations:
prometheus.io/scrape: 'true'
spec:
containers:
# Expose the prometheus metrics on default port
- name: manager
ports:
- containerPort: 8080
name: metrics
protocol: TCP

View File

@@ -0,0 +1,23 @@
# Patterns to ignore when building packages.
# This supports shell glob matching, relative path matching, and
# negation (prefixed with !). Only one pattern per line.
.DS_Store
# Common VCS dirs
.git/
.gitignore
.bzr/
.bzrignore
.hg/
.hgignore
.svn/
# Common backup files
*.swp
*.bak
*.tmp
*.orig
*~
# Various IDEs
.project
.idea/
*.tmproj
.vscode/

View File

@@ -0,0 +1,6 @@
apiVersion: v2
appVersion: 1.16.0
description: The Gateway helm Chart creates a Nginx Ingress Controller release by render a Nginx.gateway.kubesphere.io Kind.
name: gateway
type: application
version: 0.1.0

View File

@@ -0,0 +1,278 @@
apiVersion: gateway.kubesphere.io/v1alpha1
kind: Nginx
metadata:
name: {{ .Release.Name }}-ingress
spec:
fullnameOverride: {{ .Release.Name }}
controller:
# To rolling upgrade from old nginx ingress controller, we have to overide the name pattern
name: ""
image:
{{- with .Values.controller.image }}
{{- toYaml . | nindent 6 }}
{{- end }}
publishService:
enabled: {{ eq .Values.service.type "LoadBalancer" }}
# Will add custom configuration options to Nginx https://kubernetes.github.io/ingress-nginx/user-guide/nginx-configuration/configmap/
{{- if .Values.controller.config }}
config: {{ toYaml .Values.controller.config | nindent 6 }}
{{- end }}
{{- if hasKey .Values.deployment.annotations "servicemesh.kubesphere.io/enabled" }}
podAnnotations:
sidecar.istio.io/inject: {{ get .Values.deployment.annotations "servicemesh.kubesphere.io/enabled" }}
{{- end }}
## Annotations to be added to the controller config configuration configmap
##
configAnnotations: {}
# Will add custom headers before sending traffic to backends according to https://github.com/kubernetes/ingress-nginx/tree/master/docs/examples/customization/custom-headers
proxySetHeaders: {}
# Will add custom headers before sending response traffic to the client according to: https://kubernetes.github.io/ingress-nginx/user-guide/nginx-configuration/configmap/#add-headers
addHeaders: {}
# Optionally customize the pod dnsConfig.
dnsConfig: {}
# Bare-metal considerations via the host network https://kubernetes.github.io/ingress-nginx/deploy/baremetal/#via-the-host-network
# Ingress status was blank because there is no Service exposing the NGINX Ingress controller in a configuration using the host network, the default --publish-service flag used in standard cloud setups does not apply
reportNodeInternalIp: false
## Election ID to use for status update
##
electionID: ingress-controller-leader-{{ .Release.Name }}
## Name of the ingress class to route through this controller
##
ingressClass: nginx
# This section refers to the creation of the IngressClass resource
# IngressClass resources are supported since k8s >= 1.18
ingressClassResource:
enabled: false
default: false
# Parameters is a link to a custom resource containing additional
# configuration for the controller. This is optional if the controller
# does not require extra parameters.
parameters: {}
# labels to add to the pod container metadata
podLabels: {}
# key: value
## Limit the scope of the controller
##
{{- if .Values.controller.scope.enabled }}
scope:
enabled: true
namespace: {{ default .Release.Namespace .Values.controller.scope.namespace }} # defaults to .Release.Namespace
{{- end }}
## Allows customization of the configmap / nginx-configmap namespace
##
configMapNamespace: "" # defaults to .Release.Namespace
## Allows customization of the tcp-services-configmap
##
tcp:
configMapNamespace: "" # defaults to .Release.Namespace
## Annotations to be added to the tcp config configmap
annotations: {}
## Allows customization of the udp-services-configmap
##
udp:
configMapNamespace: "" # defaults to .Release.Namespace
## Annotations to be added to the udp config configmap
annotations: {}
## Additional command line arguments to pass to nginx-ingress-controller
## E.g. to specify the default SSL certificate you can use
## extraArgs:
## default-ssl-certificate: "<namespace>/<secret_name>"
extraArgs: {}
## Additional environment variables to set
extraEnvs: []
kind: Deployment
## Annotations to be added to the controller Deployment or DaemonSet
##
{{- if .Values.deployment.annotations }}
annotations: {{ toYaml .Values.deployment.annotations | nindent 6 }}
{{- end }}
## Labels to be added to the controller Deployment or DaemonSet
##
labels: {}
# keel.sh/policy: patch
# keel.sh/trigger: poll
## Node tolerations for server scheduling to nodes with taints
## Ref: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/
##
tolerations: []
# - key: "key"
# operator: "Equal|Exists"
# value: "value"
# effect: "NoSchedule|PreferNoSchedule|NoExecute(1.6 only)"
## Affinity and anti-affinity
## Ref: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#affinity-and-anti-affinity
##
affinity:
podAntiAffinity:
preferredDuringSchedulingIgnoredDuringExecution:
- weight: 100
podAffinityTerm:
labelSelector:
matchExpressions:
- key: app.kubernetes.io/name
operator: In
values:
- ingress-nginx
- key: app.kubernetes.io/instance
operator: In
values:
- {{ .Release.Name }}-ingress
- key: app.kubernetes.io/component
operator: In
values:
- controller
topologyKey: kubernetes.io/hostname
# # An example of required pod anti-affinity
# podAntiAffinity:
# requiredDuringSchedulingIgnoredDuringExecution:
# - labelSelector:
# matchExpressions:
# - key: app.kubernetes.io/name
# operator: In
# values:
# - ingress-nginx
# - key: app.kubernetes.io/instance
# operator: In
# values:
# - ingress-nginx
# - key: app.kubernetes.io/component
# operator: In
# values:
# - controller
# topologyKey: "kubernetes.io/hostname"
## Topology spread constraints rely on node labels to identify the topology domain(s) that each Node is in.
## Ref: https://kubernetes.io/docs/concepts/workloads/pods/pod-topology-spread-constraints/
##
topologySpreadConstraints: []
# - maxSkew: 1
# topologyKey: failure-domain.beta.kubernetes.io/zone
# whenUnsatisfiable: DoNotSchedule
# labelSelector:
# matchLabels:
# app.kubernetes.io/instance: ingress-nginx-internal
replicaCount: {{.Values.deployment.replicas}}
minAvailable: 1
# Define requests resources to avoid probe issues due to CPU utilization in busy nodes
# ref: https://github.com/kubernetes/ingress-nginx/issues/4735#issuecomment-551204903
# Ideally, there should be no limits.
# https://engineering.indeedblog.com/blog/2019/12/cpu-throttling-regression-fix/
resources:
# limits:
# cpu: 100m
# memory: 90Mi
requests:
cpu: 100m
memory: 90Mi
# Mutually exclusive with keda autoscaling
autoscaling:
enabled: false
minReplicas: 1
maxReplicas: 11
targetCPUUtilizationPercentage: 50
targetMemoryUtilizationPercentage: 50
## Override NGINX template
customTemplate:
configMapName: ""
configMapKey: ""
service:
enabled: true
{{- if .Values.service.annotations }}
annotations: {{ toYaml .Values.service.annotations | nindent 8 }}
{{- end }}
labels: {}
# clusterIP: ""
## List of IP addresses at which the controller services are available
## Ref: https://kubernetes.io/docs/user-guide/services/#external-ips
##
externalIPs: []
# loadBalancerIP: ""
loadBalancerSourceRanges: []
## Set external traffic policy to: "Local" to preserve source IP on
## providers supporting it
## Ref: https://kubernetes.io/docs/tutorials/services/source-ip/#source-ip-for-services-with-typeloadbalancer
# externalTrafficPolicy: ""
# Must be either "None" or "ClientIP" if set. Kubernetes will default to "None".
# Ref: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies
# sessionAffinity: ""
type: {{ .Values.service.type }}
# type: NodePort
# nodePorts:
# http: 32080
# https: 32443
# tcp:
# 8080: 32808
nodePorts:
http: ""
https: ""
tcp: {}
udp: {}
admissionWebhooks:
enabled: false
metrics:
port: 10254
enabled: true
serviceMonitor:
enabled: true
prometheusRule:
enabled: false
## Optional array of imagePullSecrets containing private registry credentials
## Ref: https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/
imagePullSecrets: []
# - name: secretName

View File

@@ -0,0 +1,29 @@
# Default values for gateway.
controller:
replicas: 1
annotations: {}
# add custom configuration options
config: {}
## Limit the scope of the controller
##
scope:
enabled: false
namespace: "" # defaults to .Release.Namespace
image:
repository: kubesphere/nginx-ingress-controller
tag: "v0.48.1"
pullPolicy: IfNotPresent
digest: ""
service:
## annotations for Services, used for config Cloud LoadBalancer
annotations: {}
type: LoadBalancer
## for nginx controller, same with controller
deployment:
annotations: {}
replicas: 1

View File

@@ -0,0 +1,23 @@
# Patterns to ignore when building packages.
# This supports shell glob matching, relative path matching, and
# negation (prefixed with !). Only one pattern per line.
.DS_Store
# Common VCS dirs
.git/
.gitignore
.bzr/
.bzrignore
.hg/
.hgignore
.svn/
# Common backup files
*.swp
*.bak
*.tmp
*.orig
*~
# Various IDEs
.project
.idea/
*.tmproj
.vscode/

15
config/ks-core/Chart.yaml Normal file
View File

@@ -0,0 +1,15 @@
apiVersion: v2
name: ks-core
description: A Helm chart for KubeSphere Core components
type: application
# This is the chart version. This version number should be incremented each time you make changes
# to the chart and its templates, including the app version.
# Versions are expected to follow Semantic Versioning (https://semver.org/)
version: 0.1.0
# This is the version number of the application being deployed. This version number should be
# incremented each time you make changes to the application. Versions are not expected to
# follow Semantic Versioning. They should reflect the version the application is using.
appVersion: "v3.1.0"

View File

View File

@@ -0,0 +1,75 @@
{{/* vim: set filetype=mustache: */}}
{{/*
Expand the name of the chart.
*/}}
{{- define "ks-core.name" -}}
{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" }}
{{- end }}
{{/*
Create a default fully qualified app name.
We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).
If release name contains chart name it will be used as a full name.
*/}}
{{- define "ks-core.fullname" -}}
{{- if .Values.fullnameOverride }}
{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" }}
{{- else }}
{{- $name := default .Chart.Name .Values.nameOverride }}
{{- if contains $name .Release.Name }}
{{- .Release.Name | trunc 63 | trimSuffix "-" }}
{{- else }}
{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" }}
{{- end }}
{{- end }}
{{- end }}
{{/*
Create chart name and version as used by the chart label.
*/}}
{{- define "ks-core.chart" -}}
{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" }}
{{- end }}
{{/*
Common labels
*/}}
{{- define "ks-core.labels" -}}
helm.sh/chart: {{ include "ks-core.chart" . }}
{{ include "ks-core.selectorLabels" . }}
{{- if .Chart.AppVersion }}
app.kubernetes.io/version: {{ .Chart.AppVersion | quote }}
{{- end }}
app.kubernetes.io/managed-by: {{ .Release.Service }}
{{- end }}
{{/*
Selector labels
*/}}
{{- define "ks-core.selectorLabels" -}}
app.kubernetes.io/name: {{ include "ks-core.name" . }}
app.kubernetes.io/instance: {{ .Release.Name }}
{{- end }}
{{/*
Create the name of the service account to use
*/}}
{{- define "ks-core.serviceAccountName" -}}
{{- if .Values.serviceAccount.create }}
{{- default (include "ks-core.fullname" .) .Values.serviceAccount.name }}
{{- else }}
{{- default "default" .Values.serviceAccount.name }}
{{- end }}
{{- end }}
{{/*
Returns user's password or use default
*/}}
{{- define "getOrDefaultPass" }}
{{- $pws := (lookup "iam.kubesphere.io/v1alpha2" "User" "" .Name) -}}
{{- if $pws }}
{{- $pws.spec.password -}}
{{- else -}}
{{- .Default -}}
{{- end -}}
{{- end }}

View File

@@ -0,0 +1,13 @@
---
apiVersion: iam.kubesphere.io/v1alpha2
kind: User
metadata:
name: admin
annotations:
iam.kubesphere.io/uninitialized: "true"
helm.sh/resource-policy: keep
spec:
email: admin@kubesphere.io
password: "{{ include "getOrDefaultPass" (dict "Name" "admin" "Default" "$2a$10$zcHepmzfKPoxCVCYZr5K7ORPZZ/ySe9p/7IUb/8u./xHrnSX2LOCO") }}"
status:
state: Active

View File

@@ -0,0 +1,116 @@
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
app: ks-apiserver
tier: backend
version: {{ .Chart.AppVersion }}
name: ks-apiserver
spec:
strategy:
rollingUpdate:
maxSurge: 0
type: RollingUpdate
replicas: {{ .Values.replicaCount }}
selector:
matchLabels:
app: ks-apiserver
tier: backend
# version: {{ .Chart.AppVersion }}
template:
metadata:
labels:
app: ks-apiserver
tier: backend
# version: {{ .Chart.AppVersion }}
spec:
{{- with .Values.imagePullSecrets }}
imagePullSecrets:
{{- toYaml . | nindent 8 }}
{{- end }}
containers:
- command:
- ks-apiserver
- --logtostderr=true
image: {{ .Values.image.ks_apiserver_repo }}:{{ .Values.image.ks_apiserver_tag | default .Chart.AppVersion }}
imagePullPolicy: {{ .Values.image.pullPolicy }}
name: ks-apiserver
ports:
- containerPort: 9090
protocol: TCP
resources:
{{- toYaml .Values.apiserver.resources | nindent 12 }}
volumeMounts:
- mountPath: /etc/kubesphere/ingress-controller
name: ks-router-config
- mountPath: /etc/kubesphere/
name: kubesphere-config
- mountPath: /etc/localtime
name: host-time
readOnly: true
{{- if .Values.apiserver.extraVolumeMounts }}
{{- toYaml .Values.apiserver.extraVolumeMounts | nindent 8 }}
{{- end }}
env:
{{- if .Values.env }}
{{- toYaml .Values.env | nindent 8 }}
{{- end }}
livenessProbe:
failureThreshold: 8
httpGet:
path: /kapis/version
port: 9090
scheme: HTTP
initialDelaySeconds: 15
timeoutSeconds: 15
serviceAccountName: {{ include "ks-core.serviceAccountName" . }}
{{- with .Values.tolerations }}
tolerations:
{{- toYaml . | nindent 8 }}
{{- end }}
{{- with .Values.nodeSelector }}
nodeSelector:
{{- toYaml . | nindent 8 }}
{{- end }}
{{- with .Values.affinity }}
affinity:
{{- toYaml . | nindent 8 }}
{{- end }}
volumes:
- configMap:
defaultMode: 420
name: ks-router-config
name: ks-router-config
- configMap:
defaultMode: 420
name: kubesphere-config
name: kubesphere-config
- hostPath:
path: /etc/localtime
type: ""
name: host-time
{{- if .Values.apiserver.extraVolumes }}
{{ toYaml .Values.apiserver.extraVolumes | nindent 6 }}
{{- end }}
---
apiVersion: v1
kind: Service
metadata:
annotations:
kubernetes.io/created-by: kubesphere.io/ks-apiserver
labels:
app: ks-apiserver
tier: backend
version: {{ .Chart.AppVersion }}
name: ks-apiserver
spec:
ports:
- port: 80
protocol: TCP
targetPort: 9090
selector:
app: ks-apiserver
tier: backend
# version: {{ .Chart.AppVersion }}
type: ClusterIP

Some files were not shown because too many files have changed in this diff Show More