diff --git a/KubeSphere Documentation Style Guide.md b/KubeSphere Documentation Style Guide.md index 547e0d8f6..37346af97 100644 --- a/KubeSphere Documentation Style Guide.md +++ b/KubeSphere Documentation Style Guide.md @@ -2,15 +2,15 @@ This style guide provides a set of editorial guidelines for those who are writing documentation for KubeSphere. -## **Basic Rules** +## Basic Rules - Write clearly, concisely and precisely. -- English is the preferred language to use when you write documentation. If you are not sure whether you are writing correctly, you can use grammar checkers (e.g. [grammarly](https://www.grammarly.com/)). Although they are not 100% accurate, they can help you get rid of most of the wording issues. That said, Chinese is also acceptable if you really don't know how to express your meaning in English. -- It is recommended that you use more images or diagrams to show UI functions and logical relations with tools such as [draw.io](https://draw.io). +- English is the preferred language to use when you write documentation. If you are not sure whether you are writing correctly, you can use grammar checkers (for example, [grammarly](https://www.grammarly.com/)). Although they are not 100% accurate, they can help you get rid of most of the wording issues. That said, Chinese is also acceptable if you really don't know how to express your meaning in English. +- Recommended image or diagram tools: [draw.io](https://draw.io) and [Visio](https://www.microsoft.com/en-ww/microsoft-365/visio/flowchart-software/). ## Preparation Notice -Before you start writing the specific steps for a feature, state clearly what should be ready in advance, such as necessary components, accounts or roles (do not tell readers to use `admin` for all the operations, which is unreasonable in reality for different tenants), or a specific environment. You can add this part at the beginning of a tutorial or put it in a separate part (e.g. **Prerequisites**). +Before you start writing the specific steps for a feature, state clearly what should be ready in advance, such as necessary components, accounts or roles (do not tell readers to use `admin` for all the operations, which is unreasonable in reality for different tenants), or a specific environment. You can add this part at the beginning of a tutorial or put it in a separate part (for example, **Prerequisites**). ## Paragraphs @@ -19,7 +19,7 @@ Before you start writing the specific steps for a feature, state clearly what sh - It is recommended that you use an ordered list to organize your paragraphs for a specific operation. This is to tell your readers what step they are in and they can have a clear view of the overall process. For example: 1. Go to **Application Workloads** and click **Workloads**. -2. Click **Create** on the right to create a deployment. +2. Click **Create** on the right to create a Deployment. 3. Enter the basic information and click **Next**. ## Titles @@ -34,7 +34,7 @@ Give a title first before you write a paragraph. It can be grouped into differen ``` - Heading 1: The title of a tutorial. You do not need to add this type of title in the main body as it is already defined at the beginning in the value `title`. -- Heading 2: The title of a major part in the tutorial. Make sure you capitalize each word in Heading 2, except prepositions, articles, conjunctions and words that are commonly written with a lower case letter at the beginning (e.g. macOS). +- Heading 2: The title of a major part in the tutorial. Make sure you capitalize each word in Heading 2, except prepositions, articles, conjunctions and words that are commonly written with a lowercase letter at the beginning (for example, macOS). - Heading 3: A subtitle under Heading 2. You only need to capitalize the first word for Heading 3. - Heading 4: This is rarely used as Heading 2 and Heading 3 will do in most cases. Make sure if Heading 4 is really needed before you use it. - Do not add any periods after each heading. @@ -42,7 +42,7 @@ Give a title first before you write a paragraph. It can be grouped into differen ## Images - When you submit your md files to GitHub, make sure you add related image files that appear in md files in the pull request as well. Please save your image files in static/images/docs. You can create a folder in the directory to save your images. -- If you want to add remarks (e.g. put a box on a UI button), use the color **green**. As some screenshot apps does not support the color picking function for a specific color code, as long as the color is **similar** to #09F709, #00FF00, #09F709 or #09F738, it is acceptable. +- If you want to add remarks (for example, put a box on a UI button), use the color **green**. As some screenshot apps does not support the color picking function for a specific color code, as long as the color is **similar** to #09F709, #00FF00, #09F709 or #09F738, it is acceptable. - Image format: PNG. - Make sure images in your guide match the content. For example, you mention that users need to log in to KubeSphere using an account of a role; this means the account that displays in your image is expected to be the one you are talking about. It confuses your readers if the content you are describing is not consistent with the image used. - Recommended: [Xnip](https://xnipapp.com/) for Mac and [Sniptool](https://www.reasyze.com/sniptool/) for Windows. @@ -51,11 +51,12 @@ Give a title first before you write a paragraph. It can be grouped into differen ## Tone - Do not use “we”. Address the reader as “you” directly. Using “we” in a sentence can be confusing, because the reader might not know whether they are part of the “we” you are describing. You can also use words like users, developers, administrators and engineers, depending on the feature you are describing. -- Do not use words which can imply a specific gender, including he, him, his, himself, she, her, hers and herself. -| Do | Don't | -| ------------------------------------------------------------ | ------------------------------------------------------------ | -| The component has been installed. You can now use the feature. | The component has been installed. We can now use the feature. | + | Do | Don't | + | ------------------------------------------------------------ | ------------------------------------------------------------ | + | The component has been installed. You can now use the feature. | The component has been installed. We can now use the feature. | + +- Do not use words which can imply a specific gender, including he, him, his, himself, she, her, hers and herself. ## Format @@ -69,85 +70,127 @@ Use a **period** or a **conjunction** between two **complete** sentences. | Check the status of the component. You can see it is running normally. | Check the status of the component, you can see it is running normally. | | Check the status of the component, and you can see it is running normally. | Check the status of the component, you can see it is running normally. | -### **Bold** +### Bold -- Mark any UI text (e.g. a button) in bold. +- Mark any UI text (for example, a button) in bold. - -| Do | Don't | -| ------------------------------------------------------------ | ------------------------------------------------------------ | -| In the top-right corner of this page, click **Save**. | In the top-right corner of this page, click Save. | -| In **Workspaces**, you can see all your workspaces listed. | In Workspaces, you can see all your workspaces listed. | -| On the **Create Project** Page, click **OK** in the bottom-right corner to continue. | On the Create Project Page, click OK in the bottom-right corner to continue. | + | Do | Don't | + | ------------------------------------------------------------ | ------------------------------------------------------------ | + | In the top-right corner of this page, click **Save**. | In the top-right corner of this page, click Save. | + | In **Workspaces**, you can see all your workspaces listed. | In Workspaces, you can see all your workspaces listed. | + | On the **Create Project** Page, click **OK** in the bottom-right corner to continue. | On the Create Project Page, click OK in the bottom-right corner to continue. | - Mark the content of great importance or deserving special attention to readers in bold. For example: KubeSphere is a **distributed operating system managing cloud-native applications** with Kubernetes as its kernel. -### **Code** +### Prepositions + +When describing the UI, you can use the following prepositions. + + + + + + + + + + + + + + + + + + + + + +
PrepositionUI elementRecommended
in +

dialogs

+

fields

+

lists

+

menus

+

sidebars

+

windows

+
+

In the Delete User dialog, enter the name and click OK.

+

In the Name field, enter demo-name.

+

In the Language drop-down list, select a desired language.

+

In the More menu, click Delete.

+

Click Volumes under Storage in the sidebar.

+

In the Metering and Billing window, click View Consumption.

+
on +

pages

+

tabs

+
+

On the Volumes page, click Create.

+

On the Deployments tab, click Create.

+
+### Code - For short commands, you can just put them within ``. This is often used when you only need to tell readers about a short command or it is sufficient to express your meaning just with the command in a sentence. - -| Do | Don't | -| ------------------------------------------------- | ----------------------------------------------- | -| You can use `kubectl get pods` to list your pods. | You can use kubectl get pods to list your pods. | + | Do | Don't | + | ------------------------------------------------- | ----------------------------------------------- | + | You can use `kubectl get pods` to list your Pods. | You can use kubectl get pods to list your Pods. | - Alternatively, you can use code fences so that readers can copy them directly, especially for long commands. For example: + Run the following command to edit the configuration of `ks-console`: -Execute the following command to edit the configuration of `ks-console`: - -```bash -kubectl edit svc ks-console -o yaml -n kubesphere-system -``` + ```bash + kubectl edit svc ks-console -o yaml -n kubesphere-system + ``` - For values, strings, fields or parameters in yaml files, put them within ``. -| Do | Don't | -| ------------------------------------------------------------ | ------------------------------------------------------------ | -| Change the value of `auditing.enabled` to `false` to stop receiving auditing logs from KubeSphere. | Change the value of auditing.enabled to false to stop receiving auditing logs from KubeSphere. | + | Do | Don't | + | ------------------------------------------------------------ | ------------------------------------------------------------ | + | Change the value of `auditing.enabled` to `false` to stop receiving auditing logs from KubeSphere. | Change the value of auditing.enabled to false to stop receiving auditing logs from KubeSphere. | - Put all path and file names within ``. However, if the file name itself contains a link, do not put it within ``. + + | Do | Don't | + | -------------------------- | ------------------------ | + | `/root/csi-qingcloud.yaml` | /root/csi-qingcloud.yaml | + | `config-sample.yaml` | config-sample.yaml | + | `/var/lib/docker` | /var/lib/docker | -| Do | Don't | -| -------------------------- | ------------------------ | -| `/root/csi-qingcloud.yaml` | /root/csi-qingcloud.yaml | -| `config-sample.yaml` | config-sample.yaml | -| `/var/lib/docker` | /var/lib/docker | +- Put workspace names, project names, account names, and role names within ``. -- Put account names or role names within ``. - -| Do | Don't | -| ------------------------------------------------------ | ---------------------------------------------------- | -| Log in to the console as `admin`. | Log in to the console as admin. | -| The account will be assigned the role `users-manager`. | The account will be assigned the role users-manager. | + | Do | Don't | + | ------------------------------------------------------ | ---------------------------------------------------- | + | Log in to the console as `admin`. | Log in to the console as admin. | + | The account will be assigned the role `users-manager`. | The account will be assigned the role users-manager. | ### Code Comments - If the comment is used only for a specific value, put the comment on the same line of the code. However, if the code is too long and putting the comment on the same line is not appropriate in terms of reading experience, you can put the code comment above the code. For example: -```yaml -registry: - registryMirrors: [] # For users who need to speed up downloads. -``` + ```yaml + registry: + registryMirrors: [] # For users who need to speed up downloads. + ``` -```bash -# Assume your original Kubernetes cluster is v1.17.9 -./kk create config --with-kubesphere --with-kubernetes v1.17.9 -``` + ```bash + # Assume your original Kubernetes cluster is v1.17.9 + ./kk create config --with-kubesphere --with-kubernetes v1.17.9 + ``` -- If the comment is used for all the code (e.g. serving as a header for explanations), put the comment at the beginning above the code. For example: +- If the comment is used for all the code (for example, serving as a header for explanations), put the comment at the beginning above the code. For example: -```yaml -# Internal LB config example - controlPlaneEndpoint: - domain: lb.kubesphere.local - address: "192.168.0.253" - port: "6443" -``` + ```yaml + # Internal LB config example + controlPlaneEndpoint: + domain: lb.kubesphere.local + address: "192.168.0.253" + port: "6443" + ``` ### Variables diff --git a/assets/scss/scenario.scss b/assets/scss/scenario.scss index a32a6047f..06440678f 100644 --- a/assets/scss/scenario.scss +++ b/assets/scss/scenario.scss @@ -12,12 +12,8 @@ html { .title-div { position: relative; padding-bottom: 68px; - h1 { - width: 1060px; - } p { - width: 1060px; margin-top: 25px; letter-spacing: -0.04px; color: #ffffff; @@ -34,6 +30,13 @@ html { bottom: 64px; } + .center { + position: relative; + margin-top: 32px; + text-align: center; + bottom: 0; + } + @media only screen and (max-width: $mobile-max-width) { width: 100%; h1 { diff --git a/content/en/api/crd.md b/content/en/api/crd.md index 696b33ddc..ea1b025c8 100644 --- a/content/en/api/crd.md +++ b/content/en/api/crd.md @@ -3,6 +3,6 @@ title: KubeSphere Api Documents description: KubeSphere Api Documents keywords: KubeSphere, KubeSphere Documents, Kubernetes disallow: true -swaggerUrl: json/crd.json +swaggerUrl: json/crd-3.1.json --- diff --git a/content/en/api/kubesphere.md b/content/en/api/kubesphere.md index 9893dd05a..3c8452e2c 100644 --- a/content/en/api/kubesphere.md +++ b/content/en/api/kubesphere.md @@ -3,5 +3,5 @@ title: KubeSphere Api Documents description: KubeSphere Api Documents keywords: KubeSphere, KubeSphere Documents, Kubernetes disallow: true -swaggerUrl: json/kubesphere.json +swaggerUrl: json/kubesphere-3.1.json --- \ No newline at end of file diff --git a/content/en/blogs/TiDB-on-KubeSphere-upload-helm-chart.md b/content/en/blogs/TiDB-on-KubeSphere-upload-helm-chart.md index e2365288c..2372eb5c6 100644 --- a/content/en/blogs/TiDB-on-KubeSphere-upload-helm-chart.md +++ b/content/en/blogs/TiDB-on-KubeSphere-upload-helm-chart.md @@ -105,7 +105,7 @@ Now that you have Helm charts ready, you can upload them to KubeSphere as app te You can release apps you have uploaded to KubeSphere to the public repository, also known as the App Store. In this way, all tenants on the platform can see these apps and deploy them if they have necessary permissions regardless of the workspace they belong to. -1. Click **Platform** in the top left corner and select **Access Control**. +1. Click **Platform** in the top-left corner and select **Access Control**. 2. On the **Workspaces** page, click the workspace where you have uploaded the Helm charts above. @@ -119,7 +119,7 @@ You can release apps you have uploaded to KubeSphere to the public repository, a ![detail-page](https://ap3.qingstor.com/kubesphere-website/docs/20201201150948.png) -5. After the app is submitted for review, I need to approve it before it can be released to the App Store. Click **Platform** in the top left corner and select **App Store Management**. +5. After the app is submitted for review, I need to approve it before it can be released to the App Store. Click **Platform** in the top-left corner and select **App Store Management**. ![app-store-management](https://ap3.qingstor.com/kubesphere-website/docs/20201201152220.png) @@ -131,7 +131,7 @@ You can release apps you have uploaded to KubeSphere to the public repository, a ![approve-app](https://ap3.qingstor.com/kubesphere-website/docs/20201201152734.png) -8. After the app is approved, you can release it to the App Store. Click **Platform** in the top left corner, select **Access Control**, and go back to your workspace. Select **App Templates** from the navigation bar and click **tidb-operator**. +8. After the app is approved, you can release it to the App Store. Click **Platform** in the top-left corner, select **Access Control**, and go back to your workspace. Select **App Templates** from the navigation bar and click **tidb-operator**. ![tidb-operator-app-template](https://ap3.qingstor.com/kubesphere-website/docs/20201201153102.png) @@ -141,7 +141,7 @@ You can release apps you have uploaded to KubeSphere to the public repository, a ![release-prompt](https://ap3.qingstor.com/kubesphere-website/docs/20201201153423.png) -11. To view the app released, click **App Store** in the top left corner and you can see it in the App Store. Likewise, you can deploy **tidb-cluster** to the App Store by following the same step. +11. To view the app released, click **App Store** in the top-left corner and you can see it in the App Store. Likewise, you can deploy **tidb-cluster** to the App Store by following the same step. ![tidb-operator](https://ap3.qingstor.com/kubesphere-website/docs/20201201154211.png) diff --git a/content/en/blogs/TiDB-on-KubeSphere-using-qke.md b/content/en/blogs/TiDB-on-KubeSphere-using-qke.md index 93399f2c1..3b94ccb72 100644 --- a/content/en/blogs/TiDB-on-KubeSphere-using-qke.md +++ b/content/en/blogs/TiDB-on-KubeSphere-using-qke.md @@ -14,7 +14,7 @@ In a world where Kubernetes has become the de facto standard to build applicatio ![tidb-architecture](https://ap3.qingstor.com/kubesphere-website/docs/tidb-architecture.png) -In addition to TiDB, I am also using [KubeSphere](https://kubesphere.io/), an open-source distributed operating system that manages cloud-native applications with [Kubernetes](https://kubernetes.io/) as its kernel. It provides a plug-and-play architecture for the seamless integration of third-party applications to boost its ecosystem. [KubeSphere can be run anywhere](https://kubesphere.io/docs/introduction/what-is-kubesphere/#run-kubesphere-everywhere) as it is highly pluggable without any hacking into Kubernetes. +In addition to TiDB, I am also using KubeSphere [Container Platform](https://kubesphere.io/), an open-source distributed operating system that manages cloud-native applications with [Kubernetes](https://kubernetes.io/) as its kernel. It provides a plug-and-play architecture for the seamless integration of third-party applications to boost its ecosystem. [KubeSphere can be run anywhere](https://kubesphere.io/docs/introduction/what-is-kubesphere/#run-kubesphere-everywhere) as it is highly pluggable without any hacking into Kubernetes. ![KubeSphere-structure-comp](https://ap3.qingstor.com/kubesphere-website/docs/KubeSphere-structure-comp.png) @@ -40,7 +40,7 @@ Therefore, I select QingCloud Kubernetes Engine (QKE) to prepare the environment ![cluster-management](https://ap3.qingstor.com/kubesphere-website/docs/20201026175447.png) -3. Use the built-in **Web Kubectl** from the Toolkit in the bottom right corner to execute the following command to install TiDB Operator CRD: +3. Use the built-in **Web Kubectl** from the Toolkit in the bottom-right corner to execute the following command to install TiDB Operator CRD: ```bash kubectl apply -f https://raw.githubusercontent.com/pingcap/tidb-operator/v1.1.6/manifests/crd.yaml @@ -243,4 +243,4 @@ If you have any questions, don't hesitate to contact us in [Slack](https://join. **KubeSphere Introduction**: https://kubesphere.io/docs/introduction/what-is-kubesphere/ -**KubeSphere Documentation**: https://kubesphere.io/docs/ \ No newline at end of file +**KubeSphere Documentation**: https://kubesphere.io/docs/ diff --git a/content/en/blogs/add-nfs-sc-and-create-nfs-pvc-on-kubesphere-console.md b/content/en/blogs/add-nfs-sc-and-create-nfs-pvc-on-kubesphere-console.md index c348d58a9..b787cc0c3 100644 --- a/content/en/blogs/add-nfs-sc-and-create-nfs-pvc-on-kubesphere-console.md +++ b/content/en/blogs/add-nfs-sc-and-create-nfs-pvc-on-kubesphere-console.md @@ -56,7 +56,7 @@ This is basically the same as what I did last time as we need to make sure all o - As NFS itself does not have an internal provisioner, I will be using NFS-client Provisioner for dynamic provisioning of volumes. - - `kubectl` is integrated into the console of KubeSphere. You can run commands with it from **Toolbox** in the bottom right corner of the KubeSphere dashboard. + - `kubectl` is integrated into the console of KubeSphere. You can run commands with it from **Toolbox** in the bottom-right corner of the KubeSphere dashboard. {{}} @@ -113,7 +113,7 @@ To mount a volume to your workload, you need to create a [PersistentVolumeClaim] {{< notice note >}} - To create workloads in KubeSphere, you can create and apply YAML files just as what you did before (**Edit Mode** in the top right corner). At the same time, you can also set parameters for your workloads on the KubeSphere dashboard one by one. I will not talk about the whole process in detail as this article is mainly about how to configure storage and create volumes. Have a look at [the KubeSphere documentation](https://kubesphere.io/docs/project-user-guide/application-workloads/deployments/) to learn more about how to create workloads. + To create workloads in KubeSphere, you can create and apply YAML files just as what you did before (**Edit Mode** in the top-right corner). At the same time, you can also set parameters for your workloads on the KubeSphere dashboard one by one. I will not talk about the whole process in detail as this article is mainly about how to configure storage and create volumes. Have a look at [the KubeSphere documentation](https://kubesphere.io/docs/project-user-guide/application-workloads/deployments/) to learn more about how to create workloads. {{}} diff --git a/content/en/blogs/argo-cd-a-tool-for-devops.md b/content/en/blogs/argo-cd-a-tool-for-devops.md index d44e756d5..3b6c001ac 100644 --- a/content/en/blogs/argo-cd-a-tool-for-devops.md +++ b/content/en/blogs/argo-cd-a-tool-for-devops.md @@ -169,7 +169,7 @@ We surely can create an application through the Web UI, but let's use the CLI to ![argocd-service](/images/blogs/en/argo-cd-a-tool-for-devops/argocd-service.png) -3. Click it to see its details. You can also click the icon in the upper right corner to view its topology diagram. +3. Click it to see its details. You can also click the icon in the upper-right corner to view its topology diagram. ![argocd-topology](/images/blogs/en/argo-cd-a-tool-for-devops//argocd-topology.png) diff --git a/content/en/blogs/install-nfs-server-client-for-kubesphere-cluster.md b/content/en/blogs/install-nfs-server-client-for-kubesphere-cluster.md index 794e15470..6531924a6 100644 --- a/content/en/blogs/install-nfs-server-client-for-kubesphere-cluster.md +++ b/content/en/blogs/install-nfs-server-client-for-kubesphere-cluster.md @@ -317,7 +317,7 @@ You can verify that NFS-client has been successfully installed either from the c 1. The `ks-console` Service is being exposed through a NodePort. Log in to the console at `:30880` with the default account and password (`admin/P@88w0rd`). You may need to open the port in your security groups and configure relevant port forwarding rules depending on your environment. -2. Click **Platform** in the top left corner and go to **Cluster Management**. In **Storage Classes** under **Storage**, you can see two storage classes: +2. Click **Platform** in the top-left corner and go to **Cluster Management**. In **Storage Classes** under **Storage**, you can see two storage classes: ![nfs-storage-class](/images/blogs/en/install-nfs-server-client-for-kubesphere-cluster/nfs-storage-class.png) diff --git a/content/en/devops/_index.md b/content/en/devops/_index.md index 8d7045cdb..99dd02c4d 100644 --- a/content/en/devops/_index.md +++ b/content/en/devops/_index.md @@ -1,49 +1,55 @@ --- title: "DevOps With Kubernetes And KubeSphere" +description: KubeSphere DevOps offers powerful CI/CD features with excellent scalability and observability on top of Kubernetes for DevOps-oriented teams. + layout: "scenario" css: "scss/scenario.scss" section1: - title: KubeSphere DevOps offers end-to-end workflows and integrates popular CI/CD tools to boost delivery. - content: KubeSphere DevOps provides CI/CD pipelines based on Jenkins with automated workflows including Binary-to-Image (B2I) and Source-to-Image (S2I). It helps organizations accelerate the time to market for products. - image: /images/devops/banner.jpg + title: "KubeSphere DevOps: A Powerful CI/CD Platform Built on Top of Kubernetes for DevOps-oriented Teams." + content: KubeSphere DevOps integrates popular CI/CD tools, provides CI/CD pipelines based on Jenkins, offers automation toolkits including Binary-to-Image (B2I) and Source-to-Image (S2I), and boosts continuous delivery across Kubernetes clusters. + content2: With the container orchestration capability of Kubernetes, KubeSphere DevOps scales Jenkins Agents dynamically, improves CI/CD workflow efficiency, and helps organizations accelerate the time to market for products. + image: /images/devops/banner.png + showDownload: true + inCenter: true + image: /images/devops/dev-ops.png section2: - title: Automatically Checkout Code, Test, Analyse, Build, Deploy and Release + title: Run CI/CD Pipelines in Kubernetes Clusters to Implement Automated Code Checkout, Testing, Code Analysis, Building, Deploying and Releasing list: - title: Out-of-box CI/CD Pipelines image: /images/devops/CD-pipeline.png contentList: - - content: Easy to integrate with your SCM, supporting GitLab / GitHub / BitBucket / SVN - - content: Design graphical editing panels to create CI/CD pipelines without writing any Jenkinsfile - - content: Integrate SonarQube to implement source code quality analysis - - content: Support dependency cache to accelerate build and deployment - - content: Provide dynamic build agents to automatically spin up Pods as necessary + - content: Easy integration with SCM including GitLab/GitHub/BitBucket/SVN to simplify continuous integration + - content: Graphical editing panels designed to visualize and simplify CI/CD pipeline creation without writing any Jenkinsfile + - content: Easy SonarQube Integration to implement source code quality analysis and view results on the KubeSphere console + - content: Dependency cache available for tools like Maven running in Kubernetes Pods to accelerate image building and workloads deployment across Kubernetes Clusters - - title: Built-in Automated Toolkits + - title: Built-in Automation Toolkits for DevOps with Kubernetes image: /images/devops/Built-in-automated-toolkits.png contentList: - - content: Source-to-Image builds reproducible container images from source code without writing any Dockerfile - - content: Binary-to-Image is the bridge between your artifact and a runnable image - - content: Support automatically building and pushing images to any registry, and finally deploying them to Kubernetes - - content: Provide excellent recoverability and flexibility as you can rebuild and rerun S2I / B2I whenever a patch is needed + - content: Source-to-Image builds reproducible container images from source code without writing any Dockerfile and deploys workloads to Kubernetes clusters + - content: Binary-to-Image builds your artifacts into runnable images and deploys workloads to Kubernetes clusters + - content: Automating image building and pushing to any registry and achieving continuous deployment to Kubernetes clusters + - content: Excellent resiliency and recoverability as you can copy pipelines and run them concurrently as well as rebuild and rerun S2I/B2I whenever a patch is needed - - title: Use GitOps to Implement DevOps + - title: Use GitOps to Implement DevOps on Top of Kubernetes image: /images/devops/Clear-insight.png contentList: - - content: Combine Git with Kubernetes, automating cloud-native app delivery - - content: Designed for DevOps teamwork on the basis of the multi-tenant system of KubeSphere - - content: Powerful observability, providing dynamic logs for S2I / B2I builds and pipelines - - content: Provide auditing, alerting and notifications in pipelines, ensuring issues can be quickly located and solved - - content: Support adding Git SCM webhooks to trigger a Jenkins build when new commits are submitted to the branch + - content: Kubernetes combined with Git to facilitate continuous integration with code repositories and boost continuous delivery of cloud-native applications + - content: Efficient DevOps teamwork through the KubeSphere multi-tenant system on the basis of Kubernetes RBAC to achieve better access control in CI/CD workflows + - content: Powerful DevOps observability with dynamic logs for S2I/B2I builds and pipelines to help you manage Kubernetes DevOps resources with ease + - content: Auditing, alerting and notifications available for pipelines to ensure quick identification and resolution of issues throughout CI/CD workflows + - content: Git webhooks for SCM pipelines to automatically trigger a Jenkins build when new commits are submitted to a branch section3: title: See KubeSphere One-stop DevOps Workflow In Action videoLink: https://www.youtube.com/embed/c3V-2RX9yGY image: /images/service-mesh/15.jpg + showDownload: true content: Want to get started in action by following the hands-on lab? btnContent: Start Hands-on Lab link: docs/pluggable-components/devops/ diff --git a/content/en/docs/access-control-and-account-management/multi-tenancy-in-kubesphere.md b/content/en/docs/access-control-and-account-management/multi-tenancy-in-kubesphere.md index 561121f71..5e3799d7c 100644 --- a/content/en/docs/access-control-and-account-management/multi-tenancy-in-kubesphere.md +++ b/content/en/docs/access-control-and-account-management/multi-tenancy-in-kubesphere.md @@ -1,5 +1,5 @@ --- -title: "Multi-tenancy in KubeSphere" +title: "Kubernetes Multi-tenancy in KubeSphere" keywords: "Kubernetes, Kubesphere, multi-tenancy" description: "Understand the multi-tenant architecture in KubeSphere." linkTitle: "Multi-tenancy in KubeSphere" @@ -12,7 +12,7 @@ The first and foremost challenge is how to define multi-tenancy in an enterprise ## Challenges in Kubernetes Multi-tenancy -Multi-tenancy is a common software architecture. Resources in a multi-tenant environment are shared by multiple users, also known as "tenants", with their respective data isolated from each other. The administrator of a multi-tenant cluster must minimize the damage that a compromised or malicious tenant can do to others and make sure resources are fairly allocated. +Multi-tenancy is a common software architecture. Resources in a multi-tenant environment are shared by multiple users, also known as "tenants", with their respective data isolated from each other. The administrator of a multi-tenant Kubernetes cluster must minimize the damage that a compromised or malicious tenant can do to others and make sure resources are fairly allocated. No matter how an enterprise multi-tenant system is structured, it always comes with the following two building blocks: logical resource isolation and physical resource isolation. @@ -20,7 +20,7 @@ Logically, resource isolation mainly entails API access control and tenant-based The isolation of physical resources includes nodes and networks, while it also relates to container runtime security. For example, you can create [NetworkPolicy](../../pluggable-components/network-policy/) resources to control traffic flow and use PodSecurityPolicy objects to control container behavior. [Kata Containers](https://katacontainers.io/) provides a more secure container runtime. -## Multi-tenancy in KubeSphere +## Kubernetes Multi-tenancy in KubeSphere To solve the issues above, KubeSphere provides a multi-tenant management solution based on Kubernetes. diff --git a/content/en/docs/application-store/external-apps/deploy-gitlab.md b/content/en/docs/application-store/external-apps/deploy-gitlab.md index 5ce3a4e74..6fc4e7070 100644 --- a/content/en/docs/application-store/external-apps/deploy-gitlab.md +++ b/content/en/docs/application-store/external-apps/deploy-gitlab.md @@ -130,7 +130,7 @@ This tutorial demonstrates how to deploy GitLab on KubeSphere. ### Step 5: Access GitLab -1. Go to **Services** under **Application Workloads**, input `nginx-ingress-controller` in the search bar, and then press **Enter** on your keyboard to search the Service. You can see the Service is being exposed through port `32618`, which you can use to access GitLab. +1. Go to **Services** under **Application Workloads**, enter `nginx-ingress-controller` in the search bar, and then press **Enter** on your keyboard to search the Service. You can see the Service is being exposed through port `32618`, which you can use to access GitLab. ![search-service](/images/docs/appstore/external-apps/deploy-gitlab/search-service.PNG) diff --git a/content/en/docs/cluster-administration/application-resources-monitoring.md b/content/en/docs/cluster-administration/application-resources-monitoring.md index 5140db729..6259c0d51 100644 --- a/content/en/docs/cluster-administration/application-resources-monitoring.md +++ b/content/en/docs/cluster-administration/application-resources-monitoring.md @@ -15,7 +15,7 @@ You need an account granted a role including the authorization of **Cluster Mana ## Resource Usage -1. Click **Platform** in the top left corner and select **Cluster Management**. +1. Click **Platform** in the top-left corner and select **Cluster Management**. ![Platform](/images/docs/cluster-administration/cluster-status-monitoring/platform.png) diff --git a/content/en/docs/cluster-administration/cluster-settings/cluster-visibility-and-authorization.md b/content/en/docs/cluster-administration/cluster-settings/cluster-visibility-and-authorization.md index b9586fb6b..a92a9a630 100644 --- a/content/en/docs/cluster-administration/cluster-settings/cluster-visibility-and-authorization.md +++ b/content/en/docs/cluster-administration/cluster-settings/cluster-visibility-and-authorization.md @@ -20,7 +20,7 @@ This guide demonstrates how to set cluster visibility. 1. Log in to KubeSphere with an account that has the permission to create a workspace, such as `ws-manager`. -2. Click **Platform** in the top left corner and select **Access Control**. In **Workspaces** from the navigation bar, click **Create**. +2. Click **Platform** in the top-left corner and select **Access Control**. In **Workspaces** from the navigation bar, click **Create**. ![create-workspace](/images/docs/cluster-administration/cluster-settings/cluster-visibility-and-authorization/create-workspace.jpg) @@ -46,7 +46,7 @@ After a workspace is created, you can allocate additional clusters to the worksp 1. Log in to KubeSphere with an account that has the permission to manage clusters, such as `admin`. -2. Click **Platform** in the top left corner and select **Cluster Management**. Select a cluster from the list to view cluster information. +2. Click **Platform** in the top-left corner and select **Cluster Management**. Select a cluster from the list to view cluster information. 3. In **Cluster Settings** from the navigation bar, select **Cluster Visibility**. diff --git a/content/en/docs/cluster-administration/cluster-settings/log-collections/_index.md b/content/en/docs/cluster-administration/cluster-settings/log-collections/_index.md index 1b671e4d1..c5a4795b4 100644 --- a/content/en/docs/cluster-administration/cluster-settings/log-collections/_index.md +++ b/content/en/docs/cluster-administration/cluster-settings/log-collections/_index.md @@ -1,5 +1,5 @@ --- -linkTitle: "Log Collections" +linkTitle: "Log Collection" weight: 8620 _build: diff --git a/content/en/docs/cluster-administration/cluster-settings/log-collections/add-es-as-receiver.md b/content/en/docs/cluster-administration/cluster-settings/log-collections/add-es-as-receiver.md index dfa90ab9b..6f1286f70 100644 --- a/content/en/docs/cluster-administration/cluster-settings/log-collections/add-es-as-receiver.md +++ b/content/en/docs/cluster-administration/cluster-settings/log-collections/add-es-as-receiver.md @@ -1,5 +1,5 @@ --- -title: "Add Elasticsearch as a Receiver (i.e. Collector)" +title: "Add Elasticsearch as a Receiver" keywords: 'Kubernetes, log, elasticsearch, pod, container, fluentbit, output' description: 'Learn how to add Elasticsearch to receive logs, events or auditing logs.' linkTitle: "Add Elasticsearch as a Receiver" @@ -9,29 +9,29 @@ You can use Elasticsearch, Kafka and Fluentd as log receivers in KubeSphere. Thi ## Prerequisites -- You need an account granted a role including the authorization of **Cluster Management**. For example, you can log in to the console as `admin` directly or create a new role with the authorization and assign it to an account. +- You need an account granted a role including the permission of **Cluster Management**. For example, you can log in to the console as `admin` directly or create a new role with the permission and assign it to an account. - Before adding a log receiver, you need to enable any of the `logging`, `events` or `auditing` components. For more information, see [Enable Pluggable Components](../../../../pluggable-components/). `logging` is enabled as an example in this tutorial. ## Add Elasticsearch as a Receiver -1. Log in to KubeSphere as `admin`. Click **Platform** in the top left corner and select **Cluster Management**. +1. Log in to KubeSphere as `admin`. Click **Platform** in the top-left corner and select **Cluster Management**. -2. If you have enabled the [multi-cluster feature](../../../../multicluster-management/), you can select a specific cluster. If you have not enabled the feature, refer to the next step directly. + {{< notice note >}} -3. On the **Cluster Management** page, go to **Log Collections** in **Cluster Settings**. +If you have enabled the [multi-cluster feature](../../../../multicluster-management/), you can select a specific cluster. -4. Click **Add Log Collector** and choose **Elasticsearch**. +{{}} - ![add-receiver](/images/docs/cluster-administration/cluster-settings/log-collections/add-es-as-receiver/add-receiver.png) +2. On the **Cluster Management** page, go to **Log Collection** in **Cluster Settings**. -5. Provide the Elasticsearch service address and port as below: +3. Click **Add Log Receiver** and choose **Elasticsearch**. + +4. Provide the Elasticsearch service address and port as below: ![add-es](/images/docs/cluster-administration/cluster-settings/log-collections/add-es-as-receiver/add-es.png) -6. Elasticsearch will appear in the receiver list on the **Log Collections** page, the status of which is **Collecting**. +5. Elasticsearch will appear in the receiver list on the **Log Collection** page, the status of which is **Collecting**. - ![receiver-list](/images/docs/cluster-administration/cluster-settings/log-collections/add-es-as-receiver/receiver-list.png) - -7. To verify whether Elasticsearch is receiving logs sent from Fluent Bit, click **Log Search** in the **Toolbox** in the bottom right corner and search logs on the console. For more information, read [Log Query](../../../../toolbox/log-query/). +6. To verify whether Elasticsearch is receiving logs sent from Fluent Bit, click **Log Search** in the **Toolbox** in the bottom-right corner and search logs on the console. For more information, read [Log Query](../../../../toolbox/log-query/). diff --git a/content/en/docs/cluster-administration/cluster-settings/log-collections/add-fluentd-as-receiver.md b/content/en/docs/cluster-administration/cluster-settings/log-collections/add-fluentd-as-receiver.md index 4391e05cb..985d640ab 100644 --- a/content/en/docs/cluster-administration/cluster-settings/log-collections/add-fluentd-as-receiver.md +++ b/content/en/docs/cluster-administration/cluster-settings/log-collections/add-fluentd-as-receiver.md @@ -1,5 +1,5 @@ --- -title: "Add Fluentd as a Receiver (i.e. Collector)" +title: "Add Fluentd as a Receiver" keywords: 'Kubernetes, log, fluentd, pod, container, fluentbit, output' description: 'Learn how to add Fluentd to receive logs, events or auditing logs.' linkTitle: "Add Fluentd as a Receiver" @@ -13,7 +13,7 @@ You can use Elasticsearch, Kafka and Fluentd as log receivers in KubeSphere. Thi ## Prerequisites -- You need an account granted a role including the authorization of **Cluster Management**. For example, you can log in to the console as `admin` directly or create a new role with the authorization and assign it to an account. +- You need an account granted a role including the permission of **Cluster Management**. For example, you can log in to the console as `admin` directly or create a new role with the permission and assign it to an account. - Before adding a log receiver, you need to enable any of the `logging`, `events` or `auditing` components. For more information, see [Enable Pluggable Components](../../../../pluggable-components/). `logging` is enabled as an example in this tutorial. @@ -120,29 +120,32 @@ spec: EOF ``` -## Step 2: Add Fluentd as a Log Receiver (i.e. Collector) +## Step 2: Add Fluentd as a Log Receiver -1. Log in to KubeSphere as `admin`. Click **Platform** in the top left corner and select **Cluster Management**. -2. If you have enabled the [multi-cluster feature](../../../../multicluster-management/), you can select a specific cluster. If you have not enabled the feature, refer to the next step directly. -3. On the **Cluster Management** page, go to **Log Collections** in **Cluster Settings**. +1. Log in to KubeSphere as `admin`. Click **Platform** in the top-left corner and select **Cluster Management**. -4. Click **Add Log Collector** and choose **Fluentd**. + {{< notice note >}} - ![add-receiver](/images/docs/cluster-administration/cluster-settings/log-collections/add-fluentd-as-receiver/add-receiver.png) + If you have enabled the [multi-cluster feature](../../../../multicluster-management/), you can select a specific cluster. -5. Provide the Fluentd service address and port as below: + {{}} + +2. On the **Cluster Management** page, go to **Log Collection** in **Cluster Settings**. + +3. Click **Add Log Receiver** and choose **Fluentd**. + +4. Provide the Fluentd service address and port as below: ![add-fluentd](/images/docs/cluster-administration/cluster-settings/log-collections/add-fluentd-as-receiver/add-fluentd.png) -6. Fluentd will appear in the receiver list on the **Log Collections** page, the status of which is **Collecting**. +5. Fluentd will appear in the receiver list on the **Log Collection** page, the status of which is **Collecting**. - ![receiver-list](/images/docs/cluster-administration/cluster-settings/log-collections/add-fluentd-as-receiver/receiver-list.png) ## Step 3: Verify Fluentd is Receiving Logs Sent from Fluent Bit 1. Click **Application Workloads** on the **Cluster Management** page. -2. Select **Workloads** and then select the `default` project from the drop-down list in the **Deployments** tab. +2. Select **Workloads** and then select the `default` project from the drop-down list on the **Deployments** tab. 3. Click the **fluentd** item and then select the **fluentd-xxxxxxxxx-xxxxx** Pod. diff --git a/content/en/docs/cluster-administration/cluster-settings/log-collections/add-kafka-as-receiver.md b/content/en/docs/cluster-administration/cluster-settings/log-collections/add-kafka-as-receiver.md index 196149f64..592f63a01 100644 --- a/content/en/docs/cluster-administration/cluster-settings/log-collections/add-kafka-as-receiver.md +++ b/content/en/docs/cluster-administration/cluster-settings/log-collections/add-kafka-as-receiver.md @@ -1,5 +1,5 @@ --- -title: "Add Kafka as a Receiver (i.e. Collector)" +title: "Add Kafka as a Receiver" keywords: 'Kubernetes, log, kafka, pod, container, fluentbit, output' description: 'Learn how to add Kafka to receive logs, events or auditing logs.' linkTitle: "Add Kafka as a Receiver" @@ -13,7 +13,7 @@ You can use Elasticsearch, Kafka and Fluentd as log receivers in KubeSphere. Thi ## Prerequisites -- You need an account granted a role including the authorization of **Cluster Management**. For example, you can log in to the console as `admin` directly or create a new role with the authorization and assign it to an account. +- You need an account granted a role including the permission of **Cluster Management**. For example, you can log in to the console as `admin` directly or create a new role with the permission and assign it to an account. - Before adding a log receiver, you need to enable any of the `logging`, `events` or `auditing` components. For more information, see [Enable Pluggable Components](../../../../pluggable-components/). `logging` is enabled as an example in this tutorial. ## Step 1: Create a Kafka Cluster and a Kafka Topic @@ -101,23 +101,27 @@ You can use [strimzi-kafka-operator](https://github.com/strimzi/strimzi-kafka-op ## Step 2: Add Kafka as a Log Receiver -1. Log in to KubeSphere as `admin`. Click **Platform** in the top left corner and select **Cluster Management**. +1. Log in to KubeSphere as `admin`. Click **Platform** in the top-left corner and select **Cluster Management**. -2. If you have enabled the [multi-cluster feature](../../../../multicluster-management/), you can select a specific cluster. If you have not enabled the feature, refer to the next step directly. + {{< notice note >}} -3. On the **Cluster Management** page, go to **Log Collections** in **Cluster Settings**. + If you have enabled the [multi-cluster feature](../../../../multicluster-management/), you can select a specific cluster. -4. Click **Add Log Collector** and select **Kafka**. Input the Kafka broker address and port as below, and then click **OK** to continue. + {{}} - ```bash - my-cluster-kafka-0.my-cluster-kafka-brokers.default.svc 9092 - my-cluster-kafka-1.my-cluster-kafka-brokers.default.svc 9092 - my-cluster-kafka-2.my-cluster-kafka-brokers.default.svc 9092 - ``` +2. On the **Cluster Management** page, go to **Log Collection** in **Cluster Settings**. + +3. Click **Add Log Receiver** and select **Kafka**. Enter the Kafka broker address and port as below, and then click **OK** to continue. + + | Address | Port | + | ------------------------------------------------------- | ---- | + | my-cluster-kafka-0.my-cluster-kafka-brokers.default.svc | 9092 | + | my-cluster-kafka-1.my-cluster-kafka-brokers.default.svc | 9092 | + | my-cluster-kafka-2.my-cluster-kafka-brokers.default.svc | 9092 | ![add-kafka](/images/docs/cluster-administration/cluster-settings/log-collections/add-kafka-as-receiver/add-kafka.png) -5. Run the following commands to verify whether the Kafka cluster is receiving logs sent from Fluent Bit: +4. Run the following commands to verify whether the Kafka cluster is receiving logs sent from Fluent Bit: ```bash # Start a util container diff --git a/content/en/docs/cluster-administration/cluster-settings/log-collections/introduction.md b/content/en/docs/cluster-administration/cluster-settings/log-collections/introduction.md index c10c9d384..6a68492d8 100644 --- a/content/en/docs/cluster-administration/cluster-settings/log-collections/introduction.md +++ b/content/en/docs/cluster-administration/cluster-settings/log-collections/introduction.md @@ -1,7 +1,7 @@ --- -title: "Introduction to Log Collections" +title: "Introduction to Log Collection" keywords: 'Kubernetes, log, elasticsearch, kafka, fluentd, pod, container, fluentbit, output' -description: 'Learn the basics of cluster log collections, including tools and general steps.' +description: 'Learn the basics of cluster log collection, including tools and general steps.' linkTitle: "Introduction" weight: 8621 --- @@ -12,25 +12,27 @@ This tutorial gives a brief introduction about the general steps of adding log r ## Prerequisites -- You need an account granted a role including the authorization of **Cluster Management**. For example, you can log in to the console as `admin` directly or create a new role with the authorization and assign it to an account. +- You need an account granted a role including the permission of **Cluster Management**. For example, you can log in to the console as `admin` directly or create a new role with the permission and assign it to an account. - Before adding a log receiver, you need to enable any of the `logging`, `events` or `auditing` components. For more information, see [Enable Pluggable Components](../../../../pluggable-components/). -## Add a Log Receiver (i.e. Collector) for Container Logs +## Add a Log Receiver for Container Logs To add a log receiver: 1. Log in to the web console of KubeSphere as `admin`. -2. Click **Platform** in the top left corner and select **Cluster Management**. +2. Click **Platform** in the top-left corner and select **Cluster Management**. -3. If you have enabled the [multi-cluster feature](../../../../multicluster-management/), you can select a specific cluster. If you have not enabled the feature, refer to the next step directly. + {{< notice note >}} -4. Go to **Log Collections** in **Cluster Settings**. + If you have enabled the [multi-cluster feature](../../../../multicluster-management/), you can select a specific cluster. -5. Click **Add Log Collector** in the **Logging** tab. + {{}} - ![log-collections](/images/docs/cluster-administration/cluster-settings/log-collections/introduction/log-collections.png) +3. Go to **Log Collection** under **Cluster Settings** in the sidebar. + +4. Click **Add Log Receiver** on the **Logging** tab. {{< notice note >}} @@ -57,11 +59,9 @@ Kafka is often used to receive logs and serves as a broker to other processing s If you need to output logs to more places other than Elasticsearch or Kafka, you can add Fluentd as a log receiver. Fluentd has numerous output plugins which can forward logs to various destinations such as S3, MongoDB, Cassandra, MySQL, syslog, and Splunk. [Add Fluentd as a Receiver](../add-fluentd-as-receiver/) demonstrates how to add Fluentd to receive Kubernetes logs. -## Add a Log Receiver (i.e. Collector) for Events or Auditing Logs +## Add a Log Receiver for Events or Auditing Logs -Starting from KubeSphere v3.0.0, the logs of Kubernetes events and the auditing logs of Kubernetes and KubeSphere can be archived in the same way as container logs. The tab **Events** or **Auditing** on the **Log Collections** page will appear if `events` or `auditing` is enabled accordingly in [ClusterConfiguration](https://github.com/kubesphere/kubekey/blob/release-1.1/docs/config-example.md). You can go to the corresponding tab to configure log receivers for Kubernetes events or Kubernetes and KubeSphere auditing logs. - -![log-collections-events](/images/docs/cluster-administration/cluster-settings/log-collections/introduction/log-collections-events.png) +Starting from KubeSphere v3.0.0, the logs of Kubernetes events and the auditing logs of Kubernetes and KubeSphere can be archived in the same way as container logs. The tab **Events** or **Auditing** on the **Log Collection** page will appear if `events` or `auditing` is enabled accordingly in [ClusterConfiguration](https://github.com/kubesphere/kubekey/blob/release-1.1/docs/config-example.md). You can go to the corresponding tab to configure log receivers for Kubernetes events or Kubernetes and KubeSphere auditing logs. Container logs, Kubernetes events and Kubernetes and KubeSphere auditing logs should be stored in different Elasticsearch indices to be searched in KubeSphere. The index prefixes are: @@ -73,26 +73,19 @@ Container logs, Kubernetes events and Kubernetes and KubeSphere auditing logs sh You can turn a log receiver on or off without adding or deleting it. To turn a log receiver on or off: -1. On the **Log Collections** page, click a log receiver and go to the receiver's detail page. +1. On the **Log Collection** page, click a log receiver and go to the receiver's detail page. 2. Click **More** and select **Change Status**. - ![more](/images/docs/cluster-administration/cluster-settings/log-collections/introduction/more.png) - 3. Select **Activate** or **Close** to turn the log receiver on or off. - ![change-status](/images/docs/cluster-administration/cluster-settings/log-collections/introduction/change-status.png) +4. A log receiver's status will be changed to **Close** if you turn it off, otherwise the status will be **Collecting** on the **Log Collection** page. -4. A log receiver's status will be changed to **Close** if you turn it off, otherwise the status will be **Collecting**. - - ![receiver-status](/images/docs/cluster-administration/cluster-settings/log-collections/introduction/receiver-status.png) ## Modify or Delete a Log Receiver You can modify a log receiver or delete it: -1. On the **Log Collections** page, click a log receiver and go to the receiver's detail page. +1. On the **Log Collection** page, click a log receiver and go to the receiver's detail page. 2. Edit a log receiver by clicking **Edit** or **Edit YAML** from the drop-down list. - ![more](/images/docs/cluster-administration/cluster-settings/log-collections/introduction/more.png) - -3. Delete a log receiver by clicking **Delete Log Collector**. +3. Delete a log receiver by clicking **Delete Log Receiver**. diff --git a/content/en/docs/cluster-administration/cluster-status-monitoring.md b/content/en/docs/cluster-administration/cluster-status-monitoring.md index 6af35bcf9..9ad530298 100644 --- a/content/en/docs/cluster-administration/cluster-status-monitoring.md +++ b/content/en/docs/cluster-administration/cluster-status-monitoring.md @@ -14,7 +14,7 @@ You need an account granted a role including the authorization of **Cluster Mana ## Cluster Status Monitoring -1. Click **Platform** in the top left corner and select **Cluster Management**. +1. Click **Platform** in the top-left corner and select **Cluster Management**. ![Platform](/images/docs/cluster-administration/cluster-status-monitoring/platform.png) @@ -41,7 +41,7 @@ You need an account granted a role including the authorization of **Cluster Mana ![Monitoring](/images/docs/cluster-administration/cluster-status-monitoring/monitoring.png) {{< notice tip >}} -You can customize the time range from the drop-down list in the top right corner to view historical data. +You can customize the time range from the drop-down list in the top-right corner to view historical data. {{}} ### Component status diff --git a/content/en/docs/cluster-administration/cluster-wide-alerting-and-notification/alerting-policy.md b/content/en/docs/cluster-administration/cluster-wide-alerting-and-notification/alerting-policy.md index 57e5d2c34..5044d2181 100644 --- a/content/en/docs/cluster-administration/cluster-wide-alerting-and-notification/alerting-policy.md +++ b/content/en/docs/cluster-administration/cluster-wide-alerting-and-notification/alerting-policy.md @@ -19,7 +19,7 @@ KubeSphere also has built-in policies which will trigger alerts if conditions de ## Create an Alerting Policy -1. Log in to the console as `cluster-admin`. Click **Platform** in the top left corner, and then click **Cluster Management**. +1. Log in to the console as `cluster-admin`. Click **Platform** in the top-left corner, and then click **Cluster Management**. 2. Navigate to **Alerting Policies** under **Monitoring & Alerting**, and then click **Create**. diff --git a/content/en/docs/cluster-administration/nodes.md b/content/en/docs/cluster-administration/nodes.md index e6b5fe71a..039455b6a 100644 --- a/content/en/docs/cluster-administration/nodes.md +++ b/content/en/docs/cluster-administration/nodes.md @@ -19,7 +19,7 @@ You need an account granted a role including the authorization of **Cluster Mana Cluster nodes are only accessible to cluster administrators. Some node metrics are very important to clusters. Therefore, it is the administrator's responsibility to watch over these numbers and make sure nodes are available. Follow the steps below to view node status. -1. Click **Platform** in the top left corner and select **Cluster Management**. +1. Click **Platform** in the top-left corner and select **Cluster Management**. ![clusters-management-select](/images/docs/cluster-administration/node-management/clusters-management-select.jpg) @@ -51,7 +51,7 @@ Click a node from the list and you can go to its detail page. ![Node Detail](/images/docs/cluster-administration/node-management/node_detail.png) - **Cordon/Uncordon**: Marking a node as unschedulable is very useful during a node reboot or other maintenance. The Kubernetes scheduler will not schedule new Pods to this node if it's been marked unschedulable. Besides, this does not affect existing workloads already on the node. In KubeSphere, you mark a node as unschedulable by clicking **Cordon** on the node detail page. The node will be schedulable if you click the button (**Uncordon**) again. -- **Labels**: Node labels can be very useful when you want to assign Pods to specific nodes. Label a node first (e.g. label GPU nodes with `node-role.kubernetes.io/gpu-node`), and then add the label in **Advanced Settings** [when you create a workload](../../project-user-guide/application-workloads/deployments/#step-5-configure-advanced-settings) so that you can allow Pods to run on GPU nodes explicitly. To add node labels, click **More** and select **Edit Labels**. +- **Labels**: Node labels can be very useful when you want to assign Pods to specific nodes. Label a node first (for example, label GPU nodes with `node-role.kubernetes.io/gpu-node`), and then add the label in **Advanced Settings** [when you create a workload](../../project-user-guide/application-workloads/deployments/#step-5-configure-advanced-settings) so that you can allow Pods to run on GPU nodes explicitly. To add node labels, click **More** and select **Edit Labels**. ![drop-down-list-node](/images/docs/cluster-administration/node-management/drop-down-list-node.jpg) diff --git a/content/en/docs/cluster-administration/persistent-volume-and-storage-class.md b/content/en/docs/cluster-administration/persistent-volume-and-storage-class.md index d7643f16c..1d795a40a 100644 --- a/content/en/docs/cluster-administration/persistent-volume-and-storage-class.md +++ b/content/en/docs/cluster-administration/persistent-volume-and-storage-class.md @@ -24,7 +24,7 @@ The table below summarizes common volume plugins for various provisioners (stora | -------------------- | ------------------------------------------------------------ | | In-tree | Built-in and run as part of Kubernetes, such as [RBD](https://kubernetes.io/docs/concepts/storage/storage-classes/#ceph-rbd) and [Glusterfs](https://kubernetes.io/docs/concepts/storage/storage-classes/#glusterfs). For more plugins of this kind, see [Provisioner](https://kubernetes.io/docs/concepts/storage/storage-classes/#provisioner). | | External-provisioner | Deployed independently from Kubernetes, but works like an in-tree plugin, such as [nfs-client](https://github.com/kubernetes-retired/external-storage/tree/master/nfs-client). For more plugins of this kind, see [External Storage](https://github.com/kubernetes-retired/external-storage). | -| CSI | Container Storage Interface, a standard for exposing storage resources to workloads on COs (e.g. Kubernetes), such as [QingCloud-csi](https://github.com/yunify/qingcloud-csi) and [Ceph-CSI](https://github.com/ceph/ceph-csi). For more plugins of this kind, see [Drivers](https://kubernetes-csi.github.io/docs/drivers.html). | +| CSI | Container Storage Interface, a standard for exposing storage resources to workloads on COs (for example, Kubernetes), such as [QingCloud-csi](https://github.com/yunify/qingcloud-csi) and [Ceph-CSI](https://github.com/ceph/ceph-csi). For more plugins of this kind, see [Drivers](https://kubernetes-csi.github.io/docs/drivers.html). | ## Prerequisites @@ -32,7 +32,7 @@ You need an account granted a role including the authorization of **Cluster Mana ## Manage Storage Classes -1. Click **Platform** in the top left corner and select **Cluster Management**. +1. Click **Platform** in the top-left corner and select **Cluster Management**. ![clusters-management-select](/images/docs/cluster-administration/persistent-volume-and-storage-class/clusters-management-select.jpg) @@ -54,7 +54,7 @@ You need an account granted a role including the authorization of **Cluster Mana ### Common settings -Some settings are commonly used and shared among storage classes. You can find them as dashboard properties on the console, which are also indicated by fields or annotations in the StorageClass manifest. You can see the manifest file in YAML format by enabling **Edit Mode** in the top right corner. +Some settings are commonly used and shared among storage classes. You can find them as dashboard properties on the console, which are also indicated by fields or annotations in the StorageClass manifest. You can see the manifest file in YAML format by enabling **Edit Mode** in the top-right corner. Here are property descriptions of some commonly used fields in KubeSphere. | Property | Description | @@ -118,7 +118,7 @@ Ceph RBD is also an in-tree storage plugin on Kubernetes. The volume plugin is a but the storage server must be installed before you create the storage class of Ceph RBD. As **hyperkube** images were [deprecated since 1.17](https://github.com/kubernetes/kubernetes/pull/85094), in-tree Ceph RBD may not work without **hyperkube**. -Nevertheless, you can use [rbd provisioner](https://github.com/kubernetes-incubator/external-storage/tree/master/ceph/rbd) as a substitute, whose format is the same as in-tree Ceph RBD. The only different parameter is `provisioner` (i.e **Storage System** on the KubeSphere console). If you want to use rbd-provisioner, the value of `provisioner` must be `ceph.com/rbd` (Input this value in **Storage System** in the image below). If you use in-tree Ceph RBD, the value must be `kubernetes.io/rbd`. +Nevertheless, you can use [rbd provisioner](https://github.com/kubernetes-incubator/external-storage/tree/master/ceph/rbd) as a substitute, whose format is the same as in-tree Ceph RBD. The only different parameter is `provisioner` (i.e **Storage System** on the KubeSphere console). If you want to use rbd-provisioner, the value of `provisioner` must be `ceph.com/rbd` (Enter this value in **Storage System** in the image below). If you use in-tree Ceph RBD, the value must be `kubernetes.io/rbd`. ![storage-system](/images/docs/cluster-administration/persistent-volume-and-storage-class/storage-system.png) diff --git a/content/en/docs/cluster-administration/platform-settings/customize-basic-information.md b/content/en/docs/cluster-administration/platform-settings/customize-basic-information.md index f71165637..4fc0a0392 100644 --- a/content/en/docs/cluster-administration/platform-settings/customize-basic-information.md +++ b/content/en/docs/cluster-administration/platform-settings/customize-basic-information.md @@ -6,5 +6,5 @@ linkTitle: "Customize Basic Information" weight: 8710 --- -KubeSphere is an open-source enterprise-grade container platform based on Kubernetes, while it also provides customization services, including customized platform logo and name. For customization services, contact support@kubesphere.cloud. +KubeSphere is an open-source enterprise-grade container platform based on Kubernetes, while it also provides customization services, including customized platform logo and name. For customization services, contact support@kubesphere.cloud or visit https://kubesphere.cloud/en/. diff --git a/content/en/docs/cluster-administration/platform-settings/notification-management/configure-email.md b/content/en/docs/cluster-administration/platform-settings/notification-management/configure-email.md index 6d4914194..67556a013 100644 --- a/content/en/docs/cluster-administration/platform-settings/notification-management/configure-email.md +++ b/content/en/docs/cluster-administration/platform-settings/notification-management/configure-email.md @@ -12,7 +12,7 @@ This tutorial demonstrates how to configure your email server and add recipients 1. Log in to the web console with an account granted the role `platform-admin`. -2. Click **Platform** in the top left corner and select **Platform Settings**. +2. Click **Platform** in the top-left corner and select **Platform Settings**. 3. Navigate to **Email** under **Notification Management**. diff --git a/content/en/docs/cluster-administration/platform-settings/notification-management/configure-slack.md b/content/en/docs/cluster-administration/platform-settings/notification-management/configure-slack.md index 8ea0f4c5b..0a2bca4cb 100644 --- a/content/en/docs/cluster-administration/platform-settings/notification-management/configure-slack.md +++ b/content/en/docs/cluster-administration/platform-settings/notification-management/configure-slack.md @@ -36,7 +36,7 @@ You must provide the Slack token on the console for authentication so that KubeS 1. Log in to the web console with an account granted the role `platform-admin`. -2. Click **Platform** in the top left corner and select **Platform Settings**. +2. Click **Platform** in the top-left corner and select **Platform Settings**. 3. Navigate to **Slack** under **Notification Management**. diff --git a/content/en/docs/cluster-administration/shut-down-and-restart-cluster-gracefully.md b/content/en/docs/cluster-administration/shut-down-and-restart-cluster-gracefully.md index 0a2c24c86..f58279117 100644 --- a/content/en/docs/cluster-administration/shut-down-and-restart-cluster-gracefully.md +++ b/content/en/docs/cluster-administration/shut-down-and-restart-cluster-gracefully.md @@ -1,5 +1,5 @@ --- -title: "Cluster Shutdown and Restart" +title: "Kubernetes Cluster Shutdown and Restart" description: "Learn how to gracefully shut down your cluster and restart it." layout: "single" @@ -8,7 +8,7 @@ weight: 8800 icon: "/images/docs/docs.svg" --- -This document describes the process of gracefully shutting down your cluster and how to restart it. You might need to temporarily shut down your cluster for maintenance reasons. +This document describes the process of gracefully shutting down your Kubernetes cluster and how to restart it. You might need to temporarily shut down your cluster for maintenance reasons. {{< notice warning >}} Shutting down a cluster is very dangerous. You must fully understand the operation and its consequences. Please make an etcd backup before you proceed. @@ -42,7 +42,7 @@ done Then you can shut down other cluster dependencies, such as external storage. ## Restart a Cluster Gracefully -You can restart a cluster gracefully after shutting down the cluster gracefully. +You can restart a Kubernetes cluster gracefully after shutting down the cluster gracefully. ### Prerequisites You have shut down your cluster gracefully. diff --git a/content/en/docs/devops-user-guide/examples/create-multi-cluster-pipeline.md b/content/en/docs/devops-user-guide/examples/create-multi-cluster-pipeline.md index e6b4d5feb..d9ea16cb2 100644 --- a/content/en/docs/devops-user-guide/examples/create-multi-cluster-pipeline.md +++ b/content/en/docs/devops-user-guide/examples/create-multi-cluster-pipeline.md @@ -243,7 +243,7 @@ You must create the projects as shown in the table below in advance. Make sure y ![pipeline-success](/images/docs/devops-user-guide/examples/create-multi-cluster-pipeline/pipeline-success.png) -3. Check the pipeline running logs by clicking **Show Logs** in the upper right corner. For each stage, you click it to inspect logs, which can be downloaded to your local machine for further analysis. +3. Check the pipeline running logs by clicking **Show Logs** in the upper-right corner. For each stage, you click it to inspect logs, which can be downloaded to your local machine for further analysis. ![pipeline-logs](/images/docs/devops-user-guide/examples/create-multi-cluster-pipeline/pipeline-logs.png) diff --git a/content/en/docs/devops-user-guide/examples/go-project-pipeline.md b/content/en/docs/devops-user-guide/examples/go-project-pipeline.md index ddd9e9eda..8c61cd0b1 100644 --- a/content/en/docs/devops-user-guide/examples/go-project-pipeline.md +++ b/content/en/docs/devops-user-guide/examples/go-project-pipeline.md @@ -14,7 +14,7 @@ weight: 11410 ## Create a Docker Hub Access Token -1. Log in to [Docker Hub](https://hub.docker.com/) and select **Account Settings** from the menu in the top right corner. +1. Log in to [Docker Hub](https://hub.docker.com/) and select **Account Settings** from the menu in the top-right corner. ![dockerhub-settings](/images/docs/devops-user-guide/examples/compile-and-deploy-a-go-project/dockerhub-settings.jpg) diff --git a/content/en/docs/devops-user-guide/examples/multi-cluster-project-example.md b/content/en/docs/devops-user-guide/examples/multi-cluster-project-example.md index 3fc52eaaf..a90b5af1f 100644 --- a/content/en/docs/devops-user-guide/examples/multi-cluster-project-example.md +++ b/content/en/docs/devops-user-guide/examples/multi-cluster-project-example.md @@ -15,7 +15,7 @@ weight: 11420 ## Create a Docker Hub Access Token -1. Log in to [Docker Hub](https://hub.docker.com/) and select **Account Settings** from the menu in the top right corner. +1. Log in to [Docker Hub](https://hub.docker.com/) and select **Account Settings** from the menu in the top-right corner. ![dockerhub-settings](/images/docs/devops-user-guide/examples/compile-and-deploy-a-go-multi-cluster-project/dockerhub-settings.jpg) diff --git a/content/en/docs/devops-user-guide/how-to-integrate/harbor.md b/content/en/docs/devops-user-guide/how-to-integrate/harbor.md index 6f54348dc..650e7497a 100644 --- a/content/en/docs/devops-user-guide/how-to-integrate/harbor.md +++ b/content/en/docs/devops-user-guide/how-to-integrate/harbor.md @@ -83,7 +83,7 @@ You have to configure Docker to disregard security for your Harbor registry. ![create-credentials](/images/docs/devops-user-guide/tool-integration/integrate-harbor-into-pipeline/create-credentials.png) -2. On the **Create Credentials** page, set a credential ID (`robot-test`) and select **Account Credentials** for **Type**. The **Username** field must be the same as the value of `name` in the JSON file you just downloaded and input the value of `token` in the file for **Token/Password**. +2. On the **Create Credentials** page, set a credential ID (`robot-test`) and select **Account Credentials** for **Type**. The **Username** field must be the same as the value of `name` in the JSON file you just downloaded and enter the value of `token` in the file for **Token/Password**. ![credentials-page](/images/docs/devops-user-guide/tool-integration/integrate-harbor-into-pipeline/credentials-page.png) diff --git a/content/en/docs/devops-user-guide/how-to-integrate/sonarqube.md b/content/en/docs/devops-user-guide/how-to-integrate/sonarqube.md index c3a3414c7..8a1077670 100644 --- a/content/en/docs/devops-user-guide/how-to-integrate/sonarqube.md +++ b/content/en/docs/devops-user-guide/how-to-integrate/sonarqube.md @@ -6,7 +6,7 @@ linkTitle: "Integrate SonarQube into Pipelines" weight: 11310 --- -[SonarQube](https://www.sonarqube.org/) is a popular continuous inspection tool for code quality. You can use it for static and dynamic analysis of a codebase. After it is integrated into pipelines in KubeSphere, you can view common code issues such as bugs and vulnerabilities directly on the dashboard as SonarQube detects issues in a running pipeline. +[SonarQube](https://www.sonarqube.org/) is a popular continuous inspection tool for code quality. You can use it for static and dynamic analysis of a codebase. After it is integrated into pipelines in KubeSphere [Container Platform](https://kubesphere.io/), you can view common code issues such as bugs and vulnerabilities directly on the dashboard as SonarQube detects issues in a running pipeline. This tutorial demonstrates how you can integrate SonarQube into pipelines. Refer to the following steps first before you [create a pipeline using a Jenkinsfile](../../../devops-user-guide/how-to-use/create-a-pipeline-using-jenkinsfile/). @@ -90,7 +90,7 @@ To integrate SonarQube into your pipeline, you must install SonarQube Server fir ![access-sonarqube-console](/images/docs/devops-user-guide/tool-integration/integrate-sonarqube-into-pipeline/access-sonarqube-console.jpg) -3. Click **Log in** in the top right corner and use the default account `admin/admin`. +3. Click **Log in** in the top-right corner and use the default account `admin/admin`. ![log-in-page](/images/docs/devops-user-guide/tool-integration/integrate-sonarqube-into-pipeline/log-in-page.jpg) @@ -106,7 +106,7 @@ To integrate SonarQube into your pipeline, you must install SonarQube Server fir ![sonarqube-config-1](/images/docs/devops-user-guide/tool-integration/integrate-sonarqube-into-pipeline/sonarqube-config-1.jpg) -2. Click **Security** and input a token name, such as `kubesphere`. +2. Click **Security** and enter a token name, such as `kubesphere`. ![sonarqube-config-2](/images/docs/devops-user-guide/tool-integration/integrate-sonarqube-into-pipeline/sonarqube-config-2.jpg) @@ -144,7 +144,7 @@ To integrate SonarQube into your pipeline, you must install SonarQube Server fir ![sonarqube-webhook-3](/images/docs/devops-user-guide/tool-integration/integrate-sonarqube-into-pipeline/sonarqube-webhook-3.jpg) -5. Input **Name** and **Jenkins Console URL** (i.e. the SonarQube Webhook address) in the dialog that appears. Click **Create** to finish. +5. Enter **Name** and **Jenkins Console URL** (i.e. the SonarQube Webhook address) in the dialog that appears. Click **Create** to finish. ![webhook-page-info](/images/docs/devops-user-guide/tool-integration/integrate-sonarqube-into-pipeline/webhook-page-info.jpg) @@ -190,7 +190,7 @@ To integrate SonarQube into your pipeline, you must install SonarQube Server fir http://192.168.0.4:30180 ``` -3. Access Jenkins with the address `http://{$Public IP}:30180`. When KubeSphere is installed, the Jenkins dashboard is also installed by default. Besides, Jenkins is configured with KubeSphere LDAP, which means you can log in to Jenkins with KubeSphere accounts (e.g. `admin/P@88w0rd`) directly. For more information about configuring Jenkins, see [Jenkins System Settings](../../../devops-user-guide/how-to-use/jenkins-setting/). +3. Access Jenkins with the address `http://{$Public IP}:30180`. When KubeSphere is installed, the Jenkins dashboard is also installed by default. Besides, Jenkins is configured with KubeSphere LDAP, which means you can log in to Jenkins with KubeSphere accounts (for example, `admin/P@88w0rd`) directly. For more information about configuring Jenkins, see [Jenkins System Settings](../../../devops-user-guide/how-to-use/jenkins-setting/). ![jenkins-login-page](/images/docs/devops-user-guide/tool-integration/integrate-sonarqube-into-pipeline/jenkins-login-page.jpg) @@ -289,4 +289,4 @@ You need a SonarQube token so that your pipeline can communicate with SonarQube After you [create a pipeline using the graphical editing panel](../../how-to-use/create-a-pipeline-using-graphical-editing-panel/) or [create a pipeline using a Jenkinsfile](../../how-to-use/create-a-pipeline-using-jenkinsfile/), you can view the result of code quality analysis. For example, you may see an image as below if SonarQube runs successfully. -![sonarqube-view-result](/images/docs/devops-user-guide/tool-integration/integrate-sonarqube-into-pipeline/sonarqube-view-result.jpg) \ No newline at end of file +![sonarqube-view-result](/images/docs/devops-user-guide/tool-integration/integrate-sonarqube-into-pipeline/sonarqube-view-result.jpg) diff --git a/content/en/docs/devops-user-guide/how-to-use/create-a-pipeline-using-graphical-editing-panel.md b/content/en/docs/devops-user-guide/how-to-use/create-a-pipeline-using-graphical-editing-panel.md index 324e8507f..c0768a74f 100644 --- a/content/en/docs/devops-user-guide/how-to-use/create-a-pipeline-using-graphical-editing-panel.md +++ b/content/en/docs/devops-user-guide/how-to-use/create-a-pipeline-using-graphical-editing-panel.md @@ -127,7 +127,7 @@ Pipelines include [declarative pipelines](https://www.jenkins.io/doc/book/pipeli {{}} -1. On the graphical editing panel, select **node** from the **Type** drop-down list and input `maven` for **label**. +1. On the graphical editing panel, select **node** from the **Type** drop-down list and enter `maven` for **label**. {{< notice note >}} @@ -191,7 +191,7 @@ This stage uses SonarQube to test your code. You can skip this stage if you do n ![maven-container](/images/docs/devops-user-guide/using-devops/create-a-pipeline-using-graphical-editing-panels/maven-container.jpg) -3. Click **Add nesting steps** under the `maven` container to add a nested step. Click **withCredentials** and select the SonarQube token (`sonar-token`) from the **Credential ID** list. Input `SONAR_TOKEN` for **Text Variable**, then click **OK**. +3. Click **Add nesting steps** under the `maven` container to add a nested step. Click **withCredentials** and select the SonarQube token (`sonar-token`) from the **Credential ID** list. Enter `SONAR_TOKEN` for **Text Variable**, then click **OK**. ![sonarqube-credentials](/images/docs/devops-user-guide/using-devops/create-a-pipeline-using-graphical-editing-panels/sonarqube-credentials.jpg) @@ -215,7 +215,7 @@ This stage uses SonarQube to test your code. You can skip this stage if you do n ![sonarqube-shell-new](/images/docs/devops-user-guide/using-devops/create-a-pipeline-using-graphical-editing-panels/sonarqube-shell-new.jpg) -8. Click **Add nesting steps** (the third one) for the **container** step directly and select **timeout**. Input `1` for time and select **Hours** for unit. Click **OK** to finish. +8. Click **Add nesting steps** (the third one) for the **container** step directly and select **timeout**. Enter `1` for time and select **Hours** for unit. Click **OK** to finish. ![add-nested-step-2](/images/docs/devops-user-guide/using-devops/create-a-pipeline-using-graphical-editing-panels/add-nested-step-2.jpg) @@ -330,7 +330,7 @@ This stage uses SonarQube to test your code. You can skip this stage if you do n {{}} -5. When you finish the steps above, click **Confirm** and **Save** in the bottom right corner. You can see the pipeline now has a complete workflow with each stage clearly listed on the pipeline. When you define a pipeline using the graphical editing panel, KubeSphere automatically creates its corresponding Jenkinsfile. Click **Edit Jenkinsfile** to view the Jenkinsfile. +5. When you finish the steps above, click **Confirm** and **Save** in the bottom-right corner. You can see the pipeline now has a complete workflow with each stage clearly listed on the pipeline. When you define a pipeline using the graphical editing panel, KubeSphere automatically creates its corresponding Jenkinsfile. Click **Edit Jenkinsfile** to view the Jenkinsfile. ![pipeline-done](/images/docs/devops-user-guide/using-devops/create-a-pipeline-using-graphical-editing-panels/pipeline-done.jpg) @@ -362,7 +362,7 @@ This stage uses SonarQube to test your code. You can skip this stage if you do n ![complete](/images/docs/devops-user-guide/using-devops/create-a-pipeline-using-graphical-editing-panels/complete.jpg) -3. Click **Show Logs** in the top right corner to inspect all the logs. Click each stage to see detailed logs of it. You can debug any problems based on the logs which also can be downloaded locally for further analysis. +3. Click **Show Logs** in the top-right corner to inspect all the logs. Click each stage to see detailed logs of it. You can debug any problems based on the logs which also can be downloaded locally for further analysis. ![inspect-logs](/images/docs/devops-user-guide/using-devops/create-a-pipeline-using-graphical-editing-panels/inspect-logs.jpg) diff --git a/content/en/docs/devops-user-guide/how-to-use/create-a-pipeline-using-jenkinsfile.md b/content/en/docs/devops-user-guide/how-to-use/create-a-pipeline-using-jenkinsfile.md index bf05d3b67..5cb22c44d 100644 --- a/content/en/docs/devops-user-guide/how-to-use/create-a-pipeline-using-jenkinsfile.md +++ b/content/en/docs/devops-user-guide/how-to-use/create-a-pipeline-using-jenkinsfile.md @@ -247,7 +247,7 @@ The account `project-admin` needs to be created in advance since it is the revie ![pipeline-proceed](/images/docs/devops-user-guide/using-devops/create-a-pipeline-using-a-jenkinsfile/pipeline-proceed.png) - In a development or production environment, it requires someone who has higher authority (e.g. release manager) to review the pipeline, images, as well as the code analysis result. They have the authority to determine whether the pipeline can go to the next stage. In the Jenkinsfile, you use the section `input` to specify who reviews the pipeline. If you want to specify a user (e.g. `project-admin`) to review it, you can add a field in the Jenkinsfile. If there are multiple users, you need to use commas to separate them as follows: + In a development or production environment, it requires someone who has higher authority (for example, release manager) to review the pipeline, images, as well as the code analysis result. They have the authority to determine whether the pipeline can go to the next stage. In the Jenkinsfile, you use the section `input` to specify who reviews the pipeline. If you want to specify a user (for example, `project-admin`) to review it, you can add a field in the Jenkinsfile. If there are multiple users, you need to use commas to separate them as follows: ```groovy ··· @@ -267,7 +267,7 @@ The account `project-admin` needs to be created in advance since it is the revie ![inspect-pipeline-log-1](/images/docs/devops-user-guide/using-devops/create-a-pipeline-using-a-jenkinsfile/inspect-pipeline-log-1.png) -2. Check the pipeline running logs by clicking **Show Logs** in the top right corner. You can see the dynamic log output of the pipeline, including any errors that may stop the pipeline from running. For each stage, you click it to inspect logs, which can be downloaded to your local machine for further analysis. +2. Check the pipeline running logs by clicking **Show Logs** in the top-right corner. You can see the dynamic log output of the pipeline, including any errors that may stop the pipeline from running. For each stage, you click it to inspect logs, which can be downloaded to your local machine for further analysis. ![inspect-pipeline-log-2](/images/docs/devops-user-guide/using-devops/create-a-pipeline-using-a-jenkinsfile/inspect-pipeline-log-2.jpg) @@ -316,7 +316,7 @@ The account `project-admin` needs to be created in advance since it is the revie ![access-endpoint](/images/docs/devops-user-guide/using-devops/create-a-pipeline-using-a-jenkinsfile/access-endpoint.png) -2. Use the **web kubectl** from **Toolbox** in the bottom right corner by executing the following command: +2. Use the **web kubectl** from **Toolbox** in the bottom-right corner by executing the following command: ```bash curl 10.233.120.230:8080 diff --git a/content/en/docs/devops-user-guide/how-to-use/credential-management.md b/content/en/docs/devops-user-guide/how-to-use/credential-management.md index ddb8c37ad..e6d5e14dd 100644 --- a/content/en/docs/devops-user-guide/how-to-use/credential-management.md +++ b/content/en/docs/devops-user-guide/how-to-use/credential-management.md @@ -48,7 +48,7 @@ Log in to the console of KubeSphere as `project-regular`. Navigate to your DevOp ### Create GitHub credentials -Similarly, follow the same steps above to create GitHub credentials. Set a different Credential ID (e.g. `github-id`) and also select **Account Credentials** for **Type**. Enter your GitHub username and password for **Username** and **Token/Password** respectively. +Similarly, follow the same steps above to create GitHub credentials. Set a different Credential ID (for example, `github-id`) and also select **Account Credentials** for **Type**. Enter your GitHub username and password for **Username** and **Token/Password** respectively. {{< notice note >}} @@ -58,7 +58,7 @@ If there are any special characters such as `@` and `$` in your account or passw ### Create kubeconfig credentials -Similarly, follow the same steps above to create kubeconfig credentials. Set a different Credential ID (e.g. `demo-kubeconfig`) and select **kubeconfig**. +Similarly, follow the same steps above to create kubeconfig credentials. Set a different Credential ID (for example, `demo-kubeconfig`) and select **kubeconfig**. {{< notice info >}} diff --git a/content/en/docs/devops-user-guide/how-to-use/gitlab-multibranch-pipeline.md b/content/en/docs/devops-user-guide/how-to-use/gitlab-multibranch-pipeline.md index 77411cf35..1c2e733a5 100644 --- a/content/en/docs/devops-user-guide/how-to-use/gitlab-multibranch-pipeline.md +++ b/content/en/docs/devops-user-guide/how-to-use/gitlab-multibranch-pipeline.md @@ -84,7 +84,7 @@ You need to create two projects, such as `kubesphere-sample-dev` and `kubesphere ![create-pipeline](/images/docs/devops-user-guide/using-devops/gitlab-multibranch-pipeline/create-pipeline.png) -3. In the **GitLab** tab, select the default option `https://gitlab.com` for GitLab Server, enter the username of the GitLab project owner for **Owner**, and then select the `devops-java-sample` repository from the drop-down list for **Repository Name**. Click the tick icon in the bottom right corner and then click **Next**. +3. In the **GitLab** tab, select the default option `https://gitlab.com` for GitLab Server, enter the username of the GitLab project owner for **Owner**, and then select the `devops-java-sample` repository from the drop-down list for **Repository Name**. Click the tick icon in the bottom-right corner and then click **Next**. ![select-gitlab](/images/docs/devops-user-guide/using-devops/gitlab-multibranch-pipeline/select-gitlab.png) @@ -122,7 +122,7 @@ You need to create two projects, such as `kubesphere-sample-dev` and `kubesphere ### Step 6: Check the pipeline status -1. In the **Task Status** tab, you can see how a pipeline is running. Check the pipeline running logs by clicking **Show Logs** in the top right corner. +1. In the **Task Status** tab, you can see how a pipeline is running. Check the pipeline running logs by clicking **Show Logs** in the top-right corner. ![check-log](/images/docs/devops-user-guide/using-devops/gitlab-multibranch-pipeline/check-log.png) diff --git a/content/en/docs/devops-user-guide/how-to-use/jenkins-email.md b/content/en/docs/devops-user-guide/how-to-use/jenkins-email.md index 8989d25fa..d934d0973 100644 --- a/content/en/docs/devops-user-guide/how-to-use/jenkins-email.md +++ b/content/en/docs/devops-user-guide/how-to-use/jenkins-email.md @@ -16,7 +16,7 @@ The built-in Jenkins cannot share the same email configuration with the platform ## Set the Email Server -1. Click **Platform** in the top left corner and select **Cluster Management**. +1. Click **Platform** in the top-left corner and select **Cluster Management**. ![clusters-management](/images/docs/devops-user-guide/using-devops/jenkins-email/clusters-management.jpg) @@ -39,7 +39,7 @@ The built-in Jenkins cannot share the same email configuration with the platform | Environment Variable Name | Description | | ------------------------- | -------------------------------- | | EMAIL\_SMTP\_HOST | SMTP server address | - | EMAIL\_SMTP\_PORT | SMTP server port (e.g. 25) | + | EMAIL\_SMTP\_PORT | SMTP server port (for example, 25) | | EMAIL\_FROM\_ADDR | Email sender address | | EMAIL\_FROM\_NAME | Email sender name | | EMAIL\_FROM\_PASS | Email sender password | diff --git a/content/en/docs/devops-user-guide/how-to-use/jenkins-setting.md b/content/en/docs/devops-user-guide/how-to-use/jenkins-setting.md index d186865f3..55ee48d2e 100644 --- a/content/en/docs/devops-user-guide/how-to-use/jenkins-setting.md +++ b/content/en/docs/devops-user-guide/how-to-use/jenkins-setting.md @@ -20,7 +20,7 @@ You have enabled [the KubeSphere DevOps System](../../../pluggable-components/de It is recommended that you configure Jenkins in KubeSphere through Configuration-as-Code (CasC). The built-in Jenkins CasC file is stored as a [ConfigMap](../../../project-user-guide/configuration/configmaps/). -1. Log in to KubeSphere as `admin`. Click **Platform** in the top left corner and select **Cluster Management**. +1. Log in to KubeSphere as `admin`. Click **Platform** in the top-left corner and select **Cluster Management**. ![cluster-management](/images/docs/devops-user-guide/using-devops/jenkins-system-settings/cluster-management.jpg) @@ -56,7 +56,7 @@ After you modified `jenkins-casc-config`, you need to reload your updated system http://192.168.0.4:30180 ``` -3. Access Jenkins at `http://Node IP:Port Number`. When KubeSphere is installed, the Jenkins dashboard is also installed by default. Besides, Jenkins is configured with KubeSphere LDAP, which means you can log in to Jenkins with KubeSphere accounts (e.g. `admin/P@88w0rd`) directly. +3. Access Jenkins at `http://Node IP:Port Number`. When KubeSphere is installed, the Jenkins dashboard is also installed by default. Besides, Jenkins is configured with KubeSphere LDAP, which means you can log in to Jenkins with KubeSphere accounts (for example, `admin/P@88w0rd`) directly. ![jenkins-dashboard](/images/docs/devops-user-guide/using-devops/jenkins-system-settings/jenkins-dashboard.jpg) diff --git a/content/en/docs/devops-user-guide/how-to-use/pipeline-settings.md b/content/en/docs/devops-user-guide/how-to-use/pipeline-settings.md index ff07b7659..6586597fb 100644 --- a/content/en/docs/devops-user-guide/how-to-use/pipeline-settings.md +++ b/content/en/docs/devops-user-guide/how-to-use/pipeline-settings.md @@ -158,7 +158,7 @@ You can select a pipeline from the drop-down list for **When Create Pipeline** a ![webhook-push](/images/docs/devops-user-guide/using-devops/pipeline-settings/webhook-push.png) -**Webhook Push** is an efficient way to allow pipelines to discover changes in the remote code repository and automatically trigger a new running. Webhook should be the primary method to trigger Jenkins automatic scanning for GitHub and Git (e.g. GitLab). +**Webhook Push** is an efficient way to allow pipelines to discover changes in the remote code repository and automatically trigger a new running. Webhook should be the primary method to trigger Jenkins automatic scanning for GitHub and Git (for example, GitLab). ### Advanced Settings with No Code Repository Selected diff --git a/content/en/docs/devops-user-guide/how-to-use/set-ci-node.md b/content/en/docs/devops-user-guide/how-to-use/set-ci-node.md index e7813d55d..fc9335566 100644 --- a/content/en/docs/devops-user-guide/how-to-use/set-ci-node.md +++ b/content/en/docs/devops-user-guide/how-to-use/set-ci-node.md @@ -16,7 +16,7 @@ You need an account granted a role including the authorization of **Cluster Mana ## Label a CI Node -1. Click **Platform** in the top left corner and select **Cluster Management**. +1. Click **Platform** in the top-left corner and select **Cluster Management**. ![clusters-management](/images/docs/devops-user-guide/using-devops/set-ci-node-for-dependency-cache/clusters-management.jpg) @@ -36,7 +36,7 @@ You need an account granted a role including the authorization of **Cluster Mana {{< notice note >}} - The node may already have the key without a value. You can input the value `ci` directly. + The node may already have the key without a value. You can enter the value `ci` directly. {{}} diff --git a/content/en/docs/devops-user-guide/understand-and-manage-devops-projects/devops-project-management.md b/content/en/docs/devops-user-guide/understand-and-manage-devops-projects/devops-project-management.md index a205b6c20..31141249e 100644 --- a/content/en/docs/devops-user-guide/understand-and-manage-devops-projects/devops-project-management.md +++ b/content/en/docs/devops-user-guide/understand-and-manage-devops-projects/devops-project-management.md @@ -48,7 +48,7 @@ A DevOps project user with required permissions can configure credentials for pi ### Members and roles -Similar to a project, a DevOps project also requires users to be granted different roles before they can work in the DevOps project. Project administrators (e.g. `project-admin`) are responsible for inviting tenants and granting them different roles. For more information, see [Role and Member Management](../role-and-member-management/). +Similar to a project, a DevOps project also requires users to be granted different roles before they can work in the DevOps project. Project administrators (for example, `project-admin`) are responsible for inviting tenants and granting them different roles. For more information, see [Role and Member Management](../role-and-member-management/). ## Edit or Delete a DevOps Project diff --git a/content/en/docs/devops-user-guide/understand-and-manage-devops-projects/role-and-member-management.md b/content/en/docs/devops-user-guide/understand-and-manage-devops-projects/role-and-member-management.md index d47deb30d..5a0daf371 100644 --- a/content/en/docs/devops-user-guide/understand-and-manage-devops-projects/role-and-member-management.md +++ b/content/en/docs/devops-user-guide/understand-and-manage-devops-projects/role-and-member-management.md @@ -17,7 +17,7 @@ In DevOps project scope, you can grant the following resources' permissions to a ## Prerequisites -At least one DevOps project has been created, such as `demo-devops`. Besides, you need an account of the `admin` role (e.g. `devops-admin`) at the DevOps project level. +At least one DevOps project has been created, such as `demo-devops`. Besides, you need an account of the `admin` role (for example, `devops-admin`) at the DevOps project level. ## Built-in Roles @@ -31,7 +31,7 @@ In **Project Roles**, there are three available built-in roles as shown below. B ## Create a DevOps Project Role -1. Log in to the console as `devops-admin` and select a DevOps project (e.g. `demo-devops`) under **DevOps Projects** list. +1. Log in to the console as `devops-admin` and select a DevOps project (for example, `demo-devops`) under **DevOps Projects** list. {{< notice note >}} diff --git a/content/en/docs/faq/applications/remove-built-in-apps.md b/content/en/docs/faq/applications/remove-built-in-apps.md index 3f817bbc6..e48975428 100644 --- a/content/en/docs/faq/applications/remove-built-in-apps.md +++ b/content/en/docs/faq/applications/remove-built-in-apps.md @@ -10,12 +10,12 @@ As an open-source and app-centric container platform, KubeSphere integrates 16 b ## Prerequisites -- You need to use an account with the role of `platform-admin` (e.g. `admin`) for this tutorial. +- You need to use an account with the role of `platform-admin` (for example, `admin`) for this tutorial. - You need to [enable the App Store](../../../pluggable-components/app-store/). ## Remove a Built-in App -1. Log in to the web console of KubeSphere as `admin`, click **Platform** in the upper left corner, and then select **App Store Management**. +1. Log in to the web console of KubeSphere as `admin`, click **Platform** in the upper-left corner, and then select **App Store Management**. ![click-platform](/images/docs/faq/applications/remove-built-in-apps/click-platform.PNG) diff --git a/content/en/docs/faq/applications/reuse-the-same-app-name-after-deletion.md b/content/en/docs/faq/applications/reuse-the-same-app-name-after-deletion.md index aac1beb8e..85c3837d3 100644 --- a/content/en/docs/faq/applications/reuse-the-same-app-name-after-deletion.md +++ b/content/en/docs/faq/applications/reuse-the-same-app-name-after-deletion.md @@ -27,11 +27,11 @@ To deploy an app in KubeSphere, tenants can go to the App Store and select the a ### Reuse the same app name -1. If you try to deploy a new Redis app with the same app name as `redis-1`, you can see the following error prompt in the upper right corner. +1. If you try to deploy a new Redis app with the same app name as `redis-1`, you can see the following error prompt in the upper-right corner. ![error-prompt](/images/docs/faq/applications/use-the-same-app-name-after-deletion/error-prompt.PNG) -2. In your project, go to **Secrets** under **Configurations**, and input `redis-1` in the search bar to search the Secret. +2. In your project, go to **Secrets** under **Configurations**, and enter `redis-1` in the search bar to search the Secret. ![search-secret](/images/docs/faq/applications/use-the-same-app-name-after-deletion/search-secret.PNG) @@ -39,7 +39,7 @@ To deploy an app in KubeSphere, tenants can go to the App Store and select the a ![delete-secret](/images/docs/faq/applications/use-the-same-app-name-after-deletion/delete-secret.PNG) -4. In the dialog that appears, input the Secret name and click **OK** to delete it. +4. In the dialog that appears, enter the Secret name and click **OK** to delete it. ![confirm-delete](/images/docs/faq/applications/use-the-same-app-name-after-deletion/confirm-delete.PNG) diff --git a/content/en/docs/faq/console/change-console-language.md b/content/en/docs/faq/console/change-console-language.md index 577380f42..35c0b9802 100644 --- a/content/en/docs/faq/console/change-console-language.md +++ b/content/en/docs/faq/console/change-console-language.md @@ -16,7 +16,7 @@ You have installed KubeSphere. ## Change the Console Language -1. Log in to KubeSphere with your account and click the account name in the top right corner. +1. Log in to KubeSphere with your account and click the account name in the top-right corner. 2. Select **User Settings**. diff --git a/content/en/docs/faq/console/edit-resources-in-system-workspace.md b/content/en/docs/faq/console/edit-resources-in-system-workspace.md index 1cb7f117f..6bd84e32f 100644 --- a/content/en/docs/faq/console/edit-resources-in-system-workspace.md +++ b/content/en/docs/faq/console/edit-resources-in-system-workspace.md @@ -18,7 +18,7 @@ Editing resources in `system-workspace` may cause unexpected results, such as Ku ## Edit the Console Configuration -1. Log in to KubeSphere as `admin`. Click the hammer icon in the bottom right corner and select **Kubectl**. +1. Log in to KubeSphere as `admin`. Click the hammer icon in the bottom-right corner and select **Kubectl**. 2. Execute the following command: diff --git a/content/en/docs/faq/devops/install-jenkins-plugins.md b/content/en/docs/faq/devops/install-jenkins-plugins.md index 258b7e836..50c30836f 100644 --- a/content/en/docs/faq/devops/install-jenkins-plugins.md +++ b/content/en/docs/faq/devops/install-jenkins-plugins.md @@ -30,7 +30,7 @@ You need to enable [the KubeSphere DevOps system](../../../pluggable-components/ echo http://$NODE_IP:$NODE_PORT ``` -2. You can get the output similar to the following. You can access the Jenkins dashboard through the address with your own KubeSphere account and password (e.g. `admin/P@88w0rd`). +2. You can get the output similar to the following. You can access the Jenkins dashboard through the address with your own KubeSphere account and password (for example, `admin/P@88w0rd`). ``` http://192.168.0.4:30180 @@ -52,7 +52,7 @@ You need to enable [the KubeSphere DevOps system](../../../pluggable-components/ ![click-manage-plugins](/images/docs/faq/devops/install-plugins-to-jenkins/click-manage-plugins.png) -3. Select the **Available** tab and you can see all the available plugins listed on the page. You can also use the **Filter** in the upper right corner to search for the plugins you need. Check the checkbox next to the plugin you need, and then click **Install without restart** or **Download now and install after restart** based on your needs. +3. Select the **Available** tab and you can see all the available plugins listed on the page. You can also use the **Filter** in the upper-right corner to search for the plugins you need. Check the checkbox next to the plugin you need, and then click **Install without restart** or **Download now and install after restart** based on your needs. ![available-plugins](/images/docs/faq/devops/install-plugins-to-jenkins/available-plugins.png) diff --git a/content/en/docs/faq/installation/configure-booster.md b/content/en/docs/faq/installation/configure-booster.md index 798e18fa4..44c63f90c 100644 --- a/content/en/docs/faq/installation/configure-booster.md +++ b/content/en/docs/faq/installation/configure-booster.md @@ -36,7 +36,7 @@ Docker needs to be installed in advance for this method. {{}} -1. Execute the following commands: +1. Run the following commands: ```bash sudo mkdir -p /etc/docker @@ -58,7 +58,7 @@ Docker needs to be installed in advance for this method. Make sure you replace the address within the quotation mark above with your own Booster URL. - {{}} + {{}} 3. Save the file and reload Docker by executing the following commands so that the change can take effect. @@ -76,12 +76,18 @@ Docker needs to be installed in advance for this method. ```yaml registry: - registryMirrors: [] # For users who need to speed up downloads - insecureRegistries: [] # Set an address of insecure image registry. See https://docs.docker.com/registry/insecure/ - privateRegistry: "" # Configure a private image registry for air-gapped installation (e.g. docker local registry or Harbor) + registryMirrors: [] + insecureRegistries: [] + privateRegistry: "" ``` -2. Input the registry mirror address above and save the file. For more information about the installation process, see [Multi-node Installation](../../../installing-on-linux/introduction/multioverview/). + {{< notice note >}} + + For more information about each parameter under the `registry` section, see [Kubernetes Cluster Configurations](../../../installing-on-linux/introduction/vars/). + + {{}} + +2. Provide the registry mirror address as the value of `registryMirrors` and save the file. For more information about installation, see [Multi-node Installation](../../../installing-on-linux/introduction/multioverview/). {{< notice note >}} diff --git a/content/en/docs/faq/installation/telemetry.md b/content/en/docs/faq/installation/telemetry.md index 47111d128..806b97c7d 100644 --- a/content/en/docs/faq/installation/telemetry.md +++ b/content/en/docs/faq/installation/telemetry.md @@ -6,7 +6,7 @@ linkTitle: "Telemetry in KubeSphere" Weight: 16300 --- -Telemetry collects aggregate information about the size of KubeSphere clusters installed, KubeSphere and Kubernetes versions, components enabled, cluster running time, error logs, etc. KubeSphere promises that the information is only used by the KubeSphere community to improve products and will not be shared with any third parties. +Telemetry collects aggregate information about the size of KubeSphere clusters installed, KubeSphere and Kubernetes versions, components enabled, cluster running time, error logs and so on. KubeSphere promises that the information is only used by the KubeSphere community to improve products and will not be shared with any third parties. ## What Information Is Collected @@ -29,7 +29,7 @@ Telemetry is enabled by default when you install KubeSphere, while you also have ### Disable Telemetry before installation -When you install KubeSphere on existing Kubernetes clusters, you need to download the file [cluster-configuration.yaml](https://github.com/kubesphere/ks-installer/releases/download/v3.1.0/cluster-configuration.yaml) for cluster setting. If you want to disable Telemetry, do not use `kubectl apply -f` directly for this file. +When you install KubeSphere on an existing Kubernetes cluster, you need to download the file [cluster-configuration.yaml](https://github.com/kubesphere/ks-installer/releases/download/v3.1.0/cluster-configuration.yaml) for cluster settings. If you want to disable Telemetry, do not run `kubectl apply -f` directly for this file. {{< notice note >}} @@ -43,27 +43,28 @@ If you install KubeSphere on Linux, see [Disable Telemetry after Installation](. vi cluster-configuration.yaml ``` -2. In this local cluster-configuration.yaml file, scroll down to the bottom of the file and add the value `telemetry_enabled: false` as follows: +2. In this local `cluster-configuration.yaml` file, scroll down to the bottom of the file and add `telemetry_enabled: false` as follows: ```yaml openpitrix: - enabled: false + store: + enabled: false servicemesh: enabled: false - telemetry_enabled: false # Add this line here to disable Telemetry. + telemetry_enabled: false # Add this line manually to disable Telemetry. ``` -3. Save the file after you finish and execute the following commands to start installation. +3. Save the file and run the following commands to start installation. ```bash kubectl apply -f https://github.com/kubesphere/ks-installer/releases/download/v3.1.0/kubesphere-installer.yaml - + kubectl apply -f cluster-configuration.yaml ``` ### Disable Telemetry after installation -1. Log in to the console as `admin` and click **Platform** in the top left corner. +1. Log in to the console as `admin` and click **Platform** in the top-left corner. 2. Select **Cluster Management** and navigate to **CRDs**. @@ -71,20 +72,15 @@ If you install KubeSphere on Linux, see [Disable Telemetry after Installation](. If you have enabled [the multi-cluster feature](../../../multicluster-management/), you need to select a cluster first. {{}} -3. Input `clusterconfiguration` in the search bar and click the result to go to its detail page. +3. Enter `clusterconfiguration` in the search bar and click the result to go to its detail page. - ![edit-crd](/images/docs/faq/telemetry-in-kubesphere/edit-crd.jpg) +4. Click on the right of `ks-installer` and select **Edit YAML**. -4. Click the three dots on the right of `ks-installer` and select **Edit YAML**. +5. Scroll down to the bottom of the file, add `telemetry_enabled: false`, and then click **Update**. - ![edit-ks-installer](/images/docs/faq/telemetry-in-kubesphere/edit-ks-installer.jpg) - -5. Scroll down to the bottom of the file and add the value `telemetry_enabled: false`. When you finish, click **Update**. - - ![enable-telemetry](/images/docs/faq/telemetry-in-kubesphere/enable-telemetry.jpg) {{< notice note >}} -If you want to enable Telemetry again, you can update `ks-installer` by deleting the value `telemetry_enabled: false` or changing it to `telemetry_enabled: true`. +If you want to enable Telemetry again, you can update `ks-installer` by deleting `telemetry_enabled: false` or changing it to `telemetry_enabled: true`. {{}} diff --git a/content/en/docs/faq/observability/byop.md b/content/en/docs/faq/observability/byop.md index 76a764f5b..70208867f 100644 --- a/content/en/docs/faq/observability/byop.md +++ b/content/en/docs/faq/observability/byop.md @@ -194,4 +194,4 @@ Now that your own Prometheus stack is up and running, you can change KubeSphere' If you enable/disable KubeSphere pluggable components following [this guide](https://kubesphere.io/docs/pluggable-components/overview/) , the `monitoring endpoint` will be reset to the original one. In this case, you have to change it to the new one and then restart the KubeSphere APIServer again. -{{}} \ No newline at end of file +{{}} diff --git a/content/en/docs/installing-on-kubernetes/hosted-kubernetes/install-kubesphere-on-aks.md b/content/en/docs/installing-on-kubernetes/hosted-kubernetes/install-kubesphere-on-aks.md index 1c2ec9e95..1e5747a83 100644 --- a/content/en/docs/installing-on-kubernetes/hosted-kubernetes/install-kubesphere-on-aks.md +++ b/content/en/docs/installing-on-kubernetes/hosted-kubernetes/install-kubesphere-on-aks.md @@ -14,7 +14,7 @@ Azure can help you implement infrastructure as code by providing resource deploy ### Use Azure Cloud Shell -You don't have to install Azure CLI on your machine as Azure provides a web-based terminal. Click the Cloud Shell button on the menu bar at the upper right corner in Azure portal. +You don't have to install Azure CLI on your machine as Azure provides a web-based terminal. Click the Cloud Shell button on the menu bar at the upper-right corner in Azure portal. ![Cloud Shell](/images/docs/aks/aks-launch-icon.png) diff --git a/content/en/docs/installing-on-kubernetes/hosted-kubernetes/install-kubesphere-on-do.md b/content/en/docs/installing-on-kubernetes/hosted-kubernetes/install-kubesphere-on-do.md index 1cc749336..923f5a327 100644 --- a/content/en/docs/installing-on-kubernetes/hosted-kubernetes/install-kubesphere-on-do.md +++ b/content/en/docs/installing-on-kubernetes/hosted-kubernetes/install-kubesphere-on-do.md @@ -18,11 +18,11 @@ A Kubernetes cluster in DO is a prerequisite for installing KubeSphere. Go to yo You need to select: -1. Kubernetes version (e.g. *1.18.6-do.0*) -2. Datacenter region (e.g. *Frankfurt*) -3. VPC network (e.g. *default-fra1*) -4. Cluster capacity (e.g. 2 standard nodes with 2 vCPUs and 4GB of RAM each) -5. A name for the cluster (e.g. *kubesphere-3*) +1. Kubernetes version (for example, *1.18.6-do.0*) +2. Datacenter region (for example, *Frankfurt*) +3. VPC network (for example, *default-fra1*) +4. Cluster capacity (for example, 2 standard nodes with 2 vCPUs and 4GB of RAM each) +5. A name for the cluster (for example, *kubesphere-3*) ![config-cluster-do](/images/docs/do/config-cluster-do.png) diff --git a/content/en/docs/installing-on-kubernetes/introduction/overview.md b/content/en/docs/installing-on-kubernetes/introduction/overview.md index f77bd15fc..83bbc6e73 100644 --- a/content/en/docs/installing-on-kubernetes/introduction/overview.md +++ b/content/en/docs/installing-on-kubernetes/introduction/overview.md @@ -8,7 +8,7 @@ weight: 4110 ![kubesphere+k8s](/images/docs/installing-on-kubernetes/introduction/overview/kubesphere+k8s.png) -As part of KubeSphere's commitment to provide a plug-and-play architecture for users, it can be easily installed on existing Kubernetes clusters. More specifically, KubeSphere can be deployed on Kubernetes either hosted on clouds (e.g. AWS EKS, QingCloud QKE and Google GKE) or on-premises. This is because KubeSphere does not hack Kubernetes itself. It only interacts with the Kubernetes API to manage Kubernetes cluster resources. In other words, KubeSphere can be installed on any native Kubernetes cluster and Kubernetes distribution. +As part of KubeSphere's commitment to provide a plug-and-play architecture for users, it can be easily installed on existing Kubernetes clusters. More specifically, KubeSphere can be deployed on Kubernetes either hosted on clouds (for example, AWS EKS, QingCloud QKE and Google GKE) or on-premises. This is because KubeSphere does not hack Kubernetes itself. It only interacts with the Kubernetes API to manage Kubernetes cluster resources. In other words, KubeSphere can be installed on any native Kubernetes cluster and Kubernetes distribution. This section gives you an overview of the general steps of installing KubeSphere on Kubernetes. For more information about the specific way of installation in different environments, see Installing on Hosted Kubernetes and Installing on On-premises Kubernetes. diff --git a/content/en/docs/installing-on-linux/cluster-operation/add-edge-nodes.md b/content/en/docs/installing-on-linux/cluster-operation/add-edge-nodes.md index dab7a3be2..b28a4bc69 100644 --- a/content/en/docs/installing-on-linux/cluster-operation/add-edge-nodes.md +++ b/content/en/docs/installing-on-linux/cluster-operation/add-edge-nodes.md @@ -90,7 +90,7 @@ To make sure edge nodes can successfully talk to your cluster, you must forward ## Add an Edge Node -1. Log in to the console as `admin` and click **Platform** in the top left corner. +1. Log in to the console as `admin` and click **Platform** in the top-left corner. 2. Select **Cluster Management** and navigate to **Edge Nodes** under **Node Management**. diff --git a/content/en/docs/installing-on-linux/cluster-operation/add-new-nodes.md b/content/en/docs/installing-on-linux/cluster-operation/add-new-nodes.md index c1e7b4833..866aa2f5d 100644 --- a/content/en/docs/installing-on-linux/cluster-operation/add-new-nodes.md +++ b/content/en/docs/installing-on-linux/cluster-operation/add-new-nodes.md @@ -76,7 +76,7 @@ You can skip this step if you already have the configuration file on your machin ## Add Master Nodes for High Availability -The steps of adding master nodes are generally the same as adding worker nodes while you need to configure a load balancer for your cluster. You can use any cloud load balancers or hardware load balancers (e.g. F5). In addition, Keepalived and [HAproxy](https://www.haproxy.com/), or Nginx is also an alternative for creating highly available clusters. +The steps of adding master nodes are generally the same as adding worker nodes while you need to configure a load balancer for your cluster. You can use any cloud load balancers or hardware load balancers (for example, F5). In addition, Keepalived and [HAproxy](https://www.haproxy.com/), or Nginx is also an alternative for creating highly available clusters. 1. Create a configuration file using KubeKey. diff --git a/content/en/docs/installing-on-linux/high-availability-configurations/ha-configuration.md b/content/en/docs/installing-on-linux/high-availability-configurations/ha-configuration.md index 1f61c76d2..13f87b786 100644 --- a/content/en/docs/installing-on-linux/high-availability-configurations/ha-configuration.md +++ b/content/en/docs/installing-on-linux/high-availability-configurations/ha-configuration.md @@ -6,7 +6,7 @@ linkTitle: "Set up an HA Cluster Using a Load Balancer" weight: 3210 --- -You can set up a single-master Kubernetes cluster with KubeSphere installed based on the tutorial of [Multi-node Installation](../../../installing-on-linux/introduction/multioverview/). Single-master clusters may be sufficient for development and testing in most cases. For a production environment, however, you need to consider the high availability of the cluster. If key components (for example, kube-apiserver, kube-scheduler, and kube-controller-manager) are all running on the same master node, Kubernetes and KubeSphere will be unavailable once the master node goes down. Therefore, you need to set up a high-availability cluster by provisioning load balancers with multiple master nodes. You can use any cloud load balancer, or any hardware load balancer (e.g. F5). In addition, Keepalived and [HAproxy](https://www.haproxy.com/), or Nginx is also an alternative for creating high-availability clusters. +You can set up a single-master Kubernetes cluster with KubeSphere installed based on the tutorial of [Multi-node Installation](../../../installing-on-linux/introduction/multioverview/). Single-master clusters may be sufficient for development and testing in most cases. For a production environment, however, you need to consider the high availability of the cluster. If key components (for example, kube-apiserver, kube-scheduler, and kube-controller-manager) are all running on the same master node, Kubernetes and KubeSphere will be unavailable once the master node goes down. Therefore, you need to set up a high-availability cluster by provisioning load balancers with multiple master nodes. You can use any cloud load balancer, or any hardware load balancer (for example, F5). In addition, Keepalived and [HAproxy](https://www.haproxy.com/), or Nginx is also an alternative for creating high-availability clusters. This tutorial demonstrates the general configurations of a high-availability cluster as you install KubeSphere on Linux. @@ -163,7 +163,7 @@ For more information about different fields in this configuration file, see [Kub ### Persistent storage plugin configurations -For a production environment, you need to prepare persistent storage and configure the storage plugin (e.g. CSI) in `config-sample.yaml` to define which storage service you want to use. For more information, see [Persistent Storage Configurations](../../../installing-on-linux/persistent-storage-configurations/understand-persistent-storage/). +For a production environment, you need to prepare persistent storage and configure the storage plugin (for example, CSI) in `config-sample.yaml` to define which storage service you want to use. For more information, see [Persistent Storage Configurations](../../../installing-on-linux/persistent-storage-configurations/understand-persistent-storage/). ### Enable pluggable components (Optional) diff --git a/content/en/docs/installing-on-linux/high-availability-configurations/set-up-ha-cluster-using-keepalived-haproxy.md b/content/en/docs/installing-on-linux/high-availability-configurations/set-up-ha-cluster-using-keepalived-haproxy.md index 651240496..33eee9c18 100644 --- a/content/en/docs/installing-on-linux/high-availability-configurations/set-up-ha-cluster-using-keepalived-haproxy.md +++ b/content/en/docs/installing-on-linux/high-availability-configurations/set-up-ha-cluster-using-keepalived-haproxy.md @@ -168,7 +168,7 @@ Keepalived must be installed on both machines while the configuration of them is - For the `interface` field, you must provide your own network card information. You can run `ifconfig` on your machine to get the value. - - The IP address provided for `unicast_src_ip` is the IP address of your current machine. For other machines where HAproxy and Keepalived are also installed for load balancing, their IP address must be input for the field `unicast_peer`. + - The IP address provided for `unicast_src_ip` is the IP address of your current machine. For other machines where HAproxy and Keepalived are also installed for load balancing, their IP address must be provided for the field `unicast_peer`. {{}} diff --git a/content/en/docs/installing-on-linux/introduction/multioverview.md b/content/en/docs/installing-on-linux/introduction/multioverview.md index fc8ce629e..949038e4c 100644 --- a/content/en/docs/installing-on-linux/introduction/multioverview.md +++ b/content/en/docs/installing-on-linux/introduction/multioverview.md @@ -16,7 +16,7 @@ This section gives you an overview of a single-master multi-node installation, i ## Concept -A multi-node cluster is composed of at least one master node and one worker node. You can use any node as the **taskbox** to carry out the installation task. You can add additional nodes based on your needs (e.g. for high availability) both before and after the installation. +A multi-node cluster is composed of at least one master node and one worker node. You can use any node as the **taskbox** to carry out the installation task. You can add additional nodes based on your needs (for example, for high availability) both before and after the installation. - **Master**. A master node generally hosts the control plane that controls and manages the whole system. - **Worker**. Worker nodes run the actual applications deployed on them. @@ -177,7 +177,7 @@ Here are some examples for your reference: ./kk create config [-f ~/myfolder/abc.yaml] ``` -- You can specify a KubeSphere version that you want to install (e.g. `--with-kubesphere v3.1.0`). +- You can specify a KubeSphere version that you want to install (for example, `--with-kubesphere v3.1.0`). ```bash ./kk create config --with-kubesphere [version] @@ -219,7 +219,7 @@ List all your machines under `hosts` and add their detailed information as above `name`: The hostname of the instance. -`address`: The IP address you use for the connection between the taskbox and other instances through SSH. This can be either the public IP address or the private IP address depending on your environment. For example, some cloud platforms provide every instance with a public IP address which you use to access instances through SSH. In this case, you can input the public IP address for this field. +`address`: The IP address you use for the connection between the taskbox and other instances through SSH. This can be either the public IP address or the private IP address depending on your environment. For example, some cloud platforms provide every instance with a public IP address which you use to access instances through SSH. In this case, you can provide the public IP address for this field. `internalAddress`: The private IP address of the instance. @@ -278,7 +278,7 @@ The `controlPlaneEndpoint` is where you provide your external load balancer info #### addons -You can customize persistent storage plugins (e.g. NFS Client, Ceph RBD, and GlusterFS) by specifying storage under the field `addons` in `config-sample.yaml`. For more information, see [Persistent Storage Configurations](../../../installing-on-linux/persistent-storage-configurations/understand-persistent-storage/). +You can customize persistent storage plugins (for example, NFS Client, Ceph RBD, and GlusterFS) by specifying storage under the field `addons` in `config-sample.yaml`. For more information, see [Persistent Storage Configurations](../../../installing-on-linux/persistent-storage-configurations/understand-persistent-storage/). KubeKey will install [OpenEBS](https://openebs.io/) to provision [LocalPV](https://kubernetes.io/docs/concepts/storage/volumes/#local) for development and testing environment by default, which is convenient for new users. In this example of multi-node installation, the default storage class (local volume) is used. For production, you can use NFS/Ceph/GlusterFS/CSI or commercial products as persistent storage solutions. diff --git a/content/en/docs/installing-on-linux/on-premises/install-kubesphere-on-bare-metal.md b/content/en/docs/installing-on-linux/on-premises/install-kubesphere-on-bare-metal.md index 66307b77e..7804f72ec 100644 --- a/content/en/docs/installing-on-linux/on-premises/install-kubesphere-on-bare-metal.md +++ b/content/en/docs/installing-on-linux/on-premises/install-kubesphere-on-bare-metal.md @@ -244,7 +244,7 @@ chmod +x kk With KubeKey, you can install Kubernetes and KubeSphere together. You have the option to create a multi-node cluster by customizing parameters in the configuration file. -Create a Kubernetes cluster with KubeSphere installed (e.g. `--with-kubesphere v3.1.0`): +Create a Kubernetes cluster with KubeSphere installed (for example, `--with-kubesphere v3.1.0`): ```bash ./kk create config --with-kubernetes v1.20.4 --with-kubesphere v3.1.0 diff --git a/content/en/docs/installing-on-linux/on-premises/install-kubesphere-on-vmware-vsphere.md b/content/en/docs/installing-on-linux/on-premises/install-kubesphere-on-vmware-vsphere.md index b785d8cbf..e4e5385a8 100644 --- a/content/en/docs/installing-on-linux/on-premises/install-kubesphere-on-vmware-vsphere.md +++ b/content/en/docs/installing-on-linux/on-premises/install-kubesphere-on-vmware-vsphere.md @@ -9,7 +9,7 @@ weight: 3510 ## Introduction -For a production environment, we need to consider the high availability of the cluster. If the key components (e.g. kube-apiserver, kube-scheduler, and kube-controller-manager) are all running on the same master node, Kubernetes and KubeSphere will be unavailable once the master node goes down. Therefore, we need to set up a high-availability cluster by provisioning load balancers with multiple master nodes. You can use any cloud load balancer, or any hardware load balancer (e.g. F5). In addition, Keepalived and [HAProxy](https://www.haproxy.com/), or Nginx is also an alternative for creating high-availability clusters. +For a production environment, we need to consider the high availability of the cluster. If the key components (for example, kube-apiserver, kube-scheduler, and kube-controller-manager) are all running on the same master node, Kubernetes and KubeSphere will be unavailable once the master node goes down. Therefore, we need to set up a high-availability cluster by provisioning load balancers with multiple master nodes. You can use any cloud load balancer, or any hardware load balancer (for example, F5). In addition, Keepalived and [HAProxy](https://www.haproxy.com/), or Nginx is also an alternative for creating high-availability clusters. This tutorial walks you through an example of how to create Keepalived and HAProxy, and implement high availability of master and etcd nodes using the load balancers on VMware vSphere. @@ -77,7 +77,7 @@ You can follow the New Virtual Machine wizard to create a virtual machine to pla ![kubesphereOnVsphere-en-0-1-7-hardware-4](/images/docs/vsphere/kubesphereOnVsphere-en-0-1-7-hardware-4.png) -6. In **Ready to complete** page, you review the configuration selections that you have made for the virtual machine. Click **Finish** at the bottom right corner to continue. +6. In **Ready to complete** page, you review the configuration selections that you have made for the virtual machine. Click **Finish** at the bottom-right corner to continue. ![kubesphereOnVsphere-en-0-1-8](/images/docs/vsphere/kubesphereOnVsphere-en-0-1-8.png) @@ -345,7 +345,7 @@ chmod +x kk With KubeKey, you can install Kubernetes and KubeSphere together. You have the option to create a multi-node cluster by customizing parameters in the configuration file. -Create a Kubernetes cluster with KubeSphere installed (e.g. `--with-kubesphere v3.1.0`): +Create a Kubernetes cluster with KubeSphere installed (for example, `--with-kubesphere v3.1.0`): ```bash ./kk create config --with-kubernetes v1.19.8 --with-kubesphere v3.1.0 diff --git a/content/en/docs/installing-on-linux/persistent-storage-configurations/install-ceph-csi-rbd.md b/content/en/docs/installing-on-linux/persistent-storage-configurations/install-ceph-csi-rbd.md index 34eada2fd..9656b5986 100644 --- a/content/en/docs/installing-on-linux/persistent-storage-configurations/install-ceph-csi-rbd.md +++ b/content/en/docs/installing-on-linux/persistent-storage-configurations/install-ceph-csi-rbd.md @@ -77,7 +77,7 @@ mountOptions: #### Add-on configurations -Save the above chart config and StorageClass locally (e.g. `/root/ceph-csi-rbd.yaml` and `/root/ceph-csi-rbd-sc.yaml`). The add-on configuration can be set like: +Save the above chart config and StorageClass locally (for example, `/root/ceph-csi-rbd.yaml` and `/root/ceph-csi-rbd-sc.yaml`). The add-on configuration can be set like: ```yaml addons: @@ -115,7 +115,7 @@ If you want to configure more values, see [chart configuration for rbd-provision #### Add-on configurations -Save the above chart config locally (e.g. `/root/rbd-provisioner.yaml`). The add-on config for rbd provisioner cloud be like: +Save the above chart config locally (for example, `/root/rbd-provisioner.yaml`). The add-on config for rbd provisioner cloud be like: ```yaml - name: rbd-provisioner diff --git a/content/en/docs/installing-on-linux/persistent-storage-configurations/install-glusterfs.md b/content/en/docs/installing-on-linux/persistent-storage-configurations/install-glusterfs.md index 25f635d08..573b3efbd 100644 --- a/content/en/docs/installing-on-linux/persistent-storage-configurations/install-glusterfs.md +++ b/content/en/docs/installing-on-linux/persistent-storage-configurations/install-glusterfs.md @@ -284,7 +284,7 @@ glusterfs (default) kubernetes.io/glusterfs Delete Immediate ### KubeSphere console -1. Log in to the web console with the default account and password (`admin/P@88w0rd`) at `:30880`. Click **Platform** in the top left corner and select **Cluster Management**. +1. Log in to the web console with the default account and password (`admin/P@88w0rd`) at `:30880`. Click **Platform** in the top-left corner and select **Cluster Management**. 3. Go to **Volumes** under **Storage**, and you can see PVCs in use. diff --git a/content/en/docs/installing-on-linux/persistent-storage-configurations/install-nfs-client.md b/content/en/docs/installing-on-linux/persistent-storage-configurations/install-nfs-client.md index e8b0d5529..5406956c9 100644 --- a/content/en/docs/installing-on-linux/persistent-storage-configurations/install-nfs-client.md +++ b/content/en/docs/installing-on-linux/persistent-storage-configurations/install-nfs-client.md @@ -53,7 +53,7 @@ Install `nfs-common` on all of the clients. It provides necessary NFS functions {{< notice note >}} - If you want to configure more values, see [chart configurations for NFS-client](https://github.com/kubesphere/helm-charts/tree/master/src/main/nfs-client-provisioner#configuration). - - The `storageClass.defaultClass` field controls whether you want to set the storage class of NFS-client Provisioner as the default one. If you input `false` for it, KubeKey will install [OpenEBS](https://github.com/openebs/openebs) to provide local volumes, while they are not provisioned dynamically as you create workloads on your cluster. After you install KubeSphere, you can change the default storage class on the console directly. + - The `storageClass.defaultClass` field controls whether you want to set the storage class of NFS-client Provisioner as the default one. If you enter `false` for it, KubeKey will install [OpenEBS](https://github.com/openebs/openebs) to provide local volumes, while they are not provisioned dynamically as you create workloads on your cluster. After you install KubeSphere, you can change the default storage class on the console directly. {{}} @@ -256,7 +256,7 @@ You can verify that NFS-client has been successfully installed either from the c ### KubeSphere console -1. Log in to the web console as `admin` with the default account and password at `:30880`. Click **Platform** in the top left corner and select **Cluster Management**. +1. Log in to the web console as `admin` with the default account and password at `:30880`. Click **Platform** in the top-left corner and select **Cluster Management**. 2. Go to **Pods** in **Application Workloads** and select `kube-system` from the project drop-down list. You can see that the Pod of `nfs-client` is up and running. diff --git a/content/en/docs/installing-on-linux/persistent-storage-configurations/install-qingcloud-csi.md b/content/en/docs/installing-on-linux/persistent-storage-configurations/install-qingcloud-csi.md index 47884d3c6..dc796adf8 100644 --- a/content/en/docs/installing-on-linux/persistent-storage-configurations/install-qingcloud-csi.md +++ b/content/en/docs/installing-on-linux/persistent-storage-configurations/install-qingcloud-csi.md @@ -18,7 +18,7 @@ Your cluster nodes are created on [QingCloud Platform](https://intl.qingcloud.co To make sure the platform can create cloud disks for your cluster, you need to provide the access key (`qy_access_key_id` and `qy_secret_access_key`) in a separate configuration file of QingCloud CSI. -1. Log in to the web console of [QingCloud](https://console.qingcloud.com/login) and select **Access Key** from the drop-down list in the top right corner. +1. Log in to the web console of [QingCloud](https://console.qingcloud.com/login) and select **Access Key** from the drop-down list in the top-right corner. ![access-key](/images/docs/installing-on-linux/introduction/persistent-storage-configuration/access-key.jpg) @@ -261,7 +261,7 @@ You can verify that QingCloud CSI has been successfully installed either from th ### KubeSphere console -1. Log in to the web console with the default account and password (`admin/P@88w0rd`) at `:30880`. Click **Platform** in the top left corner and select **Cluster Management**. +1. Log in to the web console with the default account and password (`admin/P@88w0rd`) at `:30880`. Click **Platform** in the top-left corner and select **Cluster Management**. 2. Go to **Pods** in **Application Workloads** and select `kube-system` from the project drop-down list. You can see that the Pods of `csi-qingcloud` are up and running. diff --git a/content/en/docs/installing-on-linux/persistent-storage-configurations/understand-persistent-storage.md b/content/en/docs/installing-on-linux/persistent-storage-configurations/understand-persistent-storage.md index e5d05d0f7..942f7adcc 100644 --- a/content/en/docs/installing-on-linux/persistent-storage-configurations/understand-persistent-storage.md +++ b/content/en/docs/installing-on-linux/persistent-storage-configurations/understand-persistent-storage.md @@ -29,7 +29,7 @@ KubeKey creates [a configuration file](../../../installing-on-linux/introduction There are generally two ways for you to let KubeKey apply configurations of the storage system to be installed. -1. Input necessary parameters under the `addons` field directly in `config-sample.yaml`. +1. Enter necessary parameters under the `addons` field directly in `config-sample.yaml`. 2. Create a separate configuration file for your add-on to list all the necessary parameters and provide the path of the file in `config-sample.yaml` so that KubeKey can reference it during installation. For more information, see [add-ons](https://github.com/kubesphere/kubekey/blob/master/docs/addons.md). diff --git a/content/en/docs/installing-on-linux/public-cloud/install-kubesphere-on-qingcloud-vms.md b/content/en/docs/installing-on-linux/public-cloud/install-kubesphere-on-qingcloud-vms.md index a34870531..2b6ef641b 100644 --- a/content/en/docs/installing-on-linux/public-cloud/install-kubesphere-on-qingcloud-vms.md +++ b/content/en/docs/installing-on-linux/public-cloud/install-kubesphere-on-qingcloud-vms.md @@ -8,7 +8,7 @@ Weight: 3420 ## Introduction -For a production environment, you need to consider the high availability of the cluster. If key components (e.g. kube-apiserver, kube-scheduler, and kube-controller-manager) are all running on the same master node, Kubernetes and KubeSphere will be unavailable once the master node goes down. Therefore, you need to set up a high-availability cluster by provisioning load balancers with multiple master nodes. You can use any cloud load balancer, or any hardware load balancer (e.g. F5). In addition, Keepalived and [HAproxy](https://www.haproxy.com/), or Nginx is also an alternative for creating high-availability clusters. +For a production environment, you need to consider the high availability of the cluster. If key components (for example, kube-apiserver, kube-scheduler, and kube-controller-manager) are all running on the same master node, Kubernetes and KubeSphere will be unavailable once the master node goes down. Therefore, you need to set up a high-availability cluster by provisioning load balancers with multiple master nodes. You can use any cloud load balancer, or any hardware load balancer (for example, F5). In addition, Keepalived and [HAproxy](https://www.haproxy.com/), or Nginx is also an alternative for creating high-availability clusters. This tutorial walks you through an example of how to create two [QingCloud load balancers](https://docs.qingcloud.com/product/network/loadbalancer), serving as the internal load balancer and external load balancer respectively, and of how to implement high availability of master and etcd nodes using the load balancers. @@ -253,7 +253,7 @@ Kubekey provides some fields and parameters to allow the cluster administrator t ### Step 6: Persistent storage plugin configurations -Considering data persistence in a production environment, you need to prepare persistent storage and configure the storage plugin (e.g. CSI) in `config-sample.yaml` to define which storage service you want. +Considering data persistence in a production environment, you need to prepare persistent storage and configure the storage plugin (for example, CSI) in `config-sample.yaml` to define which storage service you want. {{< notice note >}} diff --git a/content/en/docs/introduction/advantages.md b/content/en/docs/introduction/advantages.md index a7ca4e29c..e0ec4d1f5 100644 --- a/content/en/docs/introduction/advantages.md +++ b/content/en/docs/introduction/advantages.md @@ -54,7 +54,7 @@ Automation represents a key part of implementing DevOps. With automatic, streaml **Jenkins-powered**. The KubeSphere DevOps system is built with Jenkins as the engine, which is abundant in plugins. On top of that, Jenkins provides an enabling environment for extension development, making it possible for the DevOps team to work smoothly across the whole process (developing, testing, building, deploying, monitoring, logging, notifying, etc.) in a unified platform. The KubeSphere account can also be used for the built-in Jenkins, meeting the demand of enterprises for multi-tenant isolation of CI/CD pipelines and unified authentication. -**Convenient built-in tools**. Users can easily take advantage of automation tools (e.g. Binary-to-Image and Source-to-Image) even without a thorough understanding of how Docker or Kubernetes works. They only need to submit a registry address or upload binary files (e.g. JAR/WAR/Binary). Ultimately, services will be released to Kubernetes automatically without any coding in a Dockerfile. +**Convenient built-in tools**. Users can easily take advantage of automation tools (for example, Binary-to-Image and Source-to-Image) even without a thorough understanding of how Docker or Kubernetes works. They only need to submit a registry address or upload binary files (for example, JAR/WAR/Binary). Ultimately, services will be released to Kubernetes automatically without any coding in a Dockerfile. For more information, see [DevOps User Guide](../../devops-user-guide/). @@ -85,7 +85,7 @@ The KubeSphere community has the capabilities and technical know-how to help you **Partners**. KubeSphere partners play a critical role in KubeSphere's go-to-market strategy. They can be app developers, technology companies, cloud providers or go-to-market partners, all of whom drive the community ahead in their respective aspects. -**Ambassadors**. As community representatives, ambassadors promote KubeSphere in a variety of ways (e.g. activities, blogs and user cases) so that more people can join the community. +**Ambassadors**. As community representatives, ambassadors promote KubeSphere in a variety of ways (for example, activities, blogs and user cases) so that more people can join the community. **Contributors**. KubeSphere contributors help the whole community by contributing to code or documentation. You don't need to be an expert while you can still make a difference even it is a minor code fix or language improvement. diff --git a/content/en/docs/introduction/features.md b/content/en/docs/introduction/features.md index 80f7eac1a..ddb855a59 100644 --- a/content/en/docs/introduction/features.md +++ b/content/en/docs/introduction/features.md @@ -39,7 +39,7 @@ The next-gen installer [KubeKey](https://github.com/kubesphere/kubekey) provides As the IT world sees a growing number of cloud-native applications reshaping software portfolios for enterprises, users tend to deploy their clusters across locations, geographies, and clouds. Against this backdrop, KubeSphere has undergone a significant upgrade to address the pressing need of users with its brand-new multi-cluster feature. -With KubeSphere, users can manage the infrastructure underneath, such as adding or deleting clusters. Heterogeneous clusters deployed on any infrastructure (e.g. Amazon EKS and Google Kubernetes Engine) can be managed in a unified way. This is made possible by a central control plane of KubeSphere with two efficient management approaches available. +With KubeSphere, users can manage the infrastructure underneath, such as adding or deleting clusters. Heterogeneous clusters deployed on any infrastructure (for example, Amazon EKS and Google Kubernetes Engine) can be managed in a unified way. This is made possible by a central control plane of KubeSphere with two efficient management approaches available. - **Solo**. Independently deployed Kubernetes clusters can be maintained and managed together in KubeSphere container platform. - **Federation**. Multiple Kubernetes clusters can be aggregated together as a Kubernetes resource pool. When users deploy applications, replicas can be deployed on different Kubernetes clusters in the pool. In this regard, high availability is achieved across zones and clusters. @@ -72,7 +72,7 @@ S2I allows you to publish your service to Kubernetes without writing a Dockerfil ### Binary-to-Image -Similar to S2I, Binary-to-Image (B2I) is a toolkit and automated workflow for building reproducible container images from binary (e.g. Jar, War, Binary package). +Similar to S2I, Binary-to-Image (B2I) is a toolkit and automated workflow for building reproducible container images from binary (for example, Jar, War, Binary package). You just need to upload your application binary package, and specify the image registry to which you want to push. The rest is exactly the same as S2I. @@ -103,7 +103,7 @@ Based on Jaeger, KubeSphere service mesh enables users to track how services int ## Multi-tenant Management -In KubeSphere, resources (e.g. clusters) can be shared between tenants. First, administrators or managers need to set different account roles with different authorizations. After that, members in the platform can be assigned with these roles to perform specific actions on varied resources. Meanwhile, as KubeSphere completely isolates tenants, they will not affect each other at all. +In KubeSphere, resources (for example, clusters) can be shared between tenants. First, administrators or managers need to set different account roles with different authorizations. After that, members in the platform can be assigned with these roles to perform specific actions on varied resources. Meanwhile, as KubeSphere completely isolates tenants, they will not affect each other at all. - **Multi-tenancy**. It provides role-based fine-grained authentication in a unified way and a three-tier authorization system. - **Unified authentication**. For enterprises, KubeSphere is compatible with their central authentication system that is base on LDAP or AD protocol. Single sign-on (SSO) is also supported to achieve unified authentication of tenant identity. diff --git a/content/en/docs/multicluster-management/enable-multicluster/agent-connection.md b/content/en/docs/multicluster-management/enable-multicluster/agent-connection.md index b9080fac4..86e8cc855 100644 --- a/content/en/docs/multicluster-management/enable-multicluster/agent-connection.md +++ b/content/en/docs/multicluster-management/enable-multicluster/agent-connection.md @@ -6,7 +6,7 @@ titleLink: "Agent Connection" weight: 5220 --- -The component [Tower](https://github.com/kubesphere/tower) of KubeSphere is used for agent connection. Tower is a tool for network connection between clusters through the agent. If the Host Cluster (H Cluster) cannot access the Member Cluster (M Cluster) directly, you can expose the proxy service address of the H cluster. This enables the M Cluster to connect to the H Cluster through the agent. This method is applicable when the M Cluster is in a private environment (e.g. IDC) and the H Cluster is able to expose the proxy service. The agent connection is also applicable when your clusters are distributed across different cloud providers. +The component [Tower](https://github.com/kubesphere/tower) of KubeSphere is used for agent connection. Tower is a tool for network connection between clusters through the agent. If the Host Cluster (H Cluster) cannot access the Member Cluster (M Cluster) directly, you can expose the proxy service address of the H cluster. This enables the M Cluster to connect to the H Cluster through the agent. This method is applicable when the M Cluster is in a private environment (for example, IDC) and the H Cluster is able to expose the proxy service. The agent connection is also applicable when your clusters are distributed across different cloud providers. To use the multi-cluster feature using an agent, you must have at least two clusters serving as the H Cluster and the M Cluster respectively. A cluster can be defined as the H Cluster or the M Cluster either before or after you install KubeSphere. For more information about installing KubeSphere, refer to [Installing on Linux](../../../installing-on-linux/) and [Installing on Kubernetes](../../../installing-on-kubernetes/). @@ -113,7 +113,7 @@ Generally, there is always a LoadBalancer solution in the public cloud, and the tower LoadBalancer 10.233.63.191 8080:30721/TCP 16h ``` -2. Add the value of `proxyPublishAddress` to the configuration file of `ks-installer` and input the public IP address (`139.198.120.120` in this tutorial) and port number as follows. +2. Add the value of `proxyPublishAddress` to the configuration file of `ks-installer` and provide the public IP address (`139.198.120.120` in this tutorial) and port number as follows. - Option A - Use the web console: @@ -173,7 +173,7 @@ If you already have a standalone KubeSphere cluster installed, you can set the v kubectl edit cc ks-installer -n kubesphere-system ``` -In the YAML file of `ks-installer`, input the corresponding `jwtSecret` shown above: +In the YAML file of `ks-installer`, enter the corresponding `jwtSecret` shown above: ```yaml authentication: @@ -193,7 +193,7 @@ You need to **wait for a while** so that the change can take effect. {{< tab "KubeSphere has not been installed" >}} -You can define a member cluster before you install KubeSphere either on Linux or on an existing Kubernetes cluster. If you want to [install KubeSphere on Linux](../../../installing-on-linux/introduction/multioverview/#1-create-an-example-configuration-file), you use a `config-sample.yaml` file. If you want to [install KubeSphere on an existing Kubernetes cluster](../../../installing-on-kubernetes/introduction/overview/#deploy-kubesphere), you use two YAML files, one of which is `cluster-configuration.yaml`. To set a member cluster, input the value of `jwtSecret` shown above and change the value of `clusterRole` to `member` in `config-sample.yaml` or `cluster-configuration.yaml` accordingly before you install KubeSphere. +You can define a member cluster before you install KubeSphere either on Linux or on an existing Kubernetes cluster. If you want to [install KubeSphere on Linux](../../../installing-on-linux/introduction/multioverview/#1-create-an-example-configuration-file), you use a `config-sample.yaml` file. If you want to [install KubeSphere on an existing Kubernetes cluster](../../../installing-on-kubernetes/introduction/overview/#deploy-kubesphere), you use two YAML files, one of which is `cluster-configuration.yaml`. To set a member cluster, enter the value of `jwtSecret` shown above and change the value of `clusterRole` to `member` in `config-sample.yaml` or `cluster-configuration.yaml` accordingly before you install KubeSphere. ```yaml authentication: @@ -227,7 +227,7 @@ kubectl logs -n kubesphere-system $(kubectl get pod -n kubesphere-system -l app= ![add-cluster](/images/docs/multicluster-management/enable-multicluster-management-in-kubesphere/agent-connection/add-cluster.png) -2. Enter the basic information of the cluster to be imported on the **Import Cluster** page. You can also click **Edit Mode** in the top right corner to view and edit the basic information in YAML format. After you finish editing, click **Next**. +2. Enter the basic information of the cluster to be imported on the **Import Cluster** page. You can also click **Edit Mode** in the top-right corner to view and edit the basic information in YAML format. After you finish editing, click **Next**. ![cluster-info](/images/docs/multicluster-management/enable-multicluster-management-in-kubesphere/agent-connection/cluster-info.png) diff --git a/content/en/docs/multicluster-management/enable-multicluster/direct-connection.md b/content/en/docs/multicluster-management/enable-multicluster/direct-connection.md index a129780b9..d8c331356 100644 --- a/content/en/docs/multicluster-management/enable-multicluster/direct-connection.md +++ b/content/en/docs/multicluster-management/enable-multicluster/direct-connection.md @@ -100,7 +100,7 @@ If you already have a standalone KubeSphere cluster installed, you can set the v kubectl edit cc ks-installer -n kubesphere-system ``` -In the YAML file of `ks-installer`, input the corresponding `jwtSecret` shown above: +In the YAML file of `ks-installer`, enter the corresponding `jwtSecret` shown above: ```yaml authentication: @@ -120,7 +120,7 @@ You need to **wait for a while** so that the change can take effect. {{< tab "KubeSphere has not been installed" >}} -You can define a member cluster before you install KubeSphere either on Linux or on an existing Kubernetes cluster. If you want to [install KubeSphere on Linux](../../../installing-on-linux/introduction/multioverview/#1-create-an-example-configuration-file), you use a `config-sample.yaml` file. If you want to [install KubeSphere on an existing Kubernetes cluster](../../../installing-on-kubernetes/introduction/overview/#deploy-kubesphere), you use two YAML files, one of which is `cluster-configuration.yaml`. To set a member cluster, input the value of `jwtSecret` shown above and change the value of `clusterRole` to `member` in `config-sample.yaml` or `cluster-configuration.yaml` accordingly before you install KubeSphere. +You can define a member cluster before you install KubeSphere either on Linux or on an existing Kubernetes cluster. If you want to [install KubeSphere on Linux](../../../installing-on-linux/introduction/multioverview/#1-create-an-example-configuration-file), you use a `config-sample.yaml` file. If you want to [install KubeSphere on an existing Kubernetes cluster](../../../installing-on-kubernetes/introduction/overview/#deploy-kubesphere), you use two YAML files, one of which is `cluster-configuration.yaml`. To set a member cluster, enter the value of `jwtSecret` shown above and change the value of `clusterRole` to `member` in `config-sample.yaml` or `cluster-configuration.yaml` accordingly before you install KubeSphere. ```yaml authentication: @@ -154,11 +154,11 @@ kubectl logs -n kubesphere-system $(kubectl get pod -n kubesphere-system -l app= ![add-cluster](/images/docs/multicluster-management/enable-multicluster-management-in-kubesphere/direct-connection/add-cluster.png) -2. Enter the basic information of the cluster to be imported on the **Import Cluster** page. You can also click **Edit Mode** in the top right corner to view and edit the basic information in YAML format. After you finish editing, click **Next**. +2. Enter the basic information of the cluster to be imported on the **Import Cluster** page. You can also click **Edit Mode** in the top-right corner to view and edit the basic information in YAML format. After you finish editing, click **Next**. ![cluster-info](/images/docs/multicluster-management/enable-multicluster-management-in-kubesphere/direct-connection/cluster-info.png) -3. In **Connection Method**, select **Direct Connection**, and copy the kubeconfig of the Member Cluster and paste it into the box. You can also click **Edit Mode** in the top right corner to edit the kubeconfig of the Member Cluster in YAML format. +3. In **Connection Method**, select **Direct Connection**, and copy the kubeconfig of the Member Cluster and paste it into the box. You can also click **Edit Mode** in the top-right corner to edit the kubeconfig of the Member Cluster in YAML format. {{< notice note >}} diff --git a/content/en/docs/multicluster-management/import-cloud-hosted-k8s/import-aliyun-ack.md b/content/en/docs/multicluster-management/import-cloud-hosted-k8s/import-aliyun-ack.md index 7ad89754b..8acc28f49 100644 --- a/content/en/docs/multicluster-management/import-cloud-hosted-k8s/import-aliyun-ack.md +++ b/content/en/docs/multicluster-management/import-cloud-hosted-k8s/import-aliyun-ack.md @@ -29,9 +29,9 @@ This tutorial demonstrates how to import an Aliyun ACK cluster through the [dire jwtSecret: "QVguGh7qnURywHn2od9IiOX6X8f8wK8g" ``` -2. Log in to the KubeSphere console of the ACK cluster as `admin`. Click **Platform** in the upper left corner and then select **Cluster Management**. +2. Log in to the KubeSphere console of the ACK cluster as `admin`. Click **Platform** in the upper-left corner and then select **Cluster Management**. -3. Go to **CRDs**, input `ClusterConfiguration` in the search bar, and then press **Enter** on your keyboard. Click **ClusterConfiguration** to go to its detail page. +3. Go to **CRDs**, enter `ClusterConfiguration` in the search bar, and then press **Enter** on your keyboard. Click **ClusterConfiguration** to go to its detail page. ![search-config](/images/docs/multicluster-management/import-cloud-hosted-k8s/import-ack/search-config.png) @@ -65,11 +65,11 @@ Log in to the web console of Aliyun. Go to **Clusters** under **Container Servic ### Step 3: Import the ACK Member Cluster -1. Log in to the KubeSphere console on your Host Cluster as `admin`. Click **Platform** in the upper left corner and then select **Cluster Management**. On the **Cluster Management** page, click **Add Cluster**. +1. Log in to the KubeSphere console on your Host Cluster as `admin`. Click **Platform** in the upper-left corner and then select **Cluster Management**. On the **Cluster Management** page, click **Add Cluster**. ![click-add-cluster](/images/docs/multicluster-management/import-cloud-hosted-k8s/import-ack/click-add-cluster.png) -2. Input the basic information based on your needs and click **Next**. +2. Enter the basic information based on your needs and click **Next**. ![input-info](/images/docs/multicluster-management/import-cloud-hosted-k8s/import-ack/input-info.png) diff --git a/content/en/docs/multicluster-management/import-cloud-hosted-k8s/import-aws-eks.md b/content/en/docs/multicluster-management/import-cloud-hosted-k8s/import-aws-eks.md index f699044be..8cac5d377 100644 --- a/content/en/docs/multicluster-management/import-cloud-hosted-k8s/import-aws-eks.md +++ b/content/en/docs/multicluster-management/import-cloud-hosted-k8s/import-aws-eks.md @@ -33,9 +33,9 @@ You need to deploy KubeSphere on your EKS cluster first. For more information ab jwtSecret: "QVguGh7qnURywHn2od9IiOX6X8f8wK8g" ``` -2. Log in to the KubeSphere console of the EKS cluster as `admin`. Click **Platform** in the upper left corner and then select **Cluster Management**. +2. Log in to the KubeSphere console of the EKS cluster as `admin`. Click **Platform** in the upper-left corner and then select **Cluster Management**. -3. Go to **CRDs**, input `ClusterConfiguration` in the search bar, and then press **Enter** on your keyboard. Click **ClusterConfiguration** to go to its detail page. +3. Go to **CRDs**, enter `ClusterConfiguration` in the search bar, and then press **Enter** on your keyboard. Click **ClusterConfiguration** to go to its detail page. ![search-config](/images/docs/multicluster-management/import-cloud-hosted-k8s/import-eks/search-config.png) @@ -166,11 +166,11 @@ You need to deploy KubeSphere on your EKS cluster first. For more information ab ### Step 4: Import the EKS Member Cluster -1. Log in to the KubeSphere console on your Host Cluster as `admin`. Click **Platform** in the upper left corner and then select **Cluster Management**. On the **Cluster Management** page, click **Add Cluster**. +1. Log in to the KubeSphere console on your Host Cluster as `admin`. Click **Platform** in the upper-left corner and then select **Cluster Management**. On the **Cluster Management** page, click **Add Cluster**. ![click-add-cluster](/images/docs/multicluster-management/import-cloud-hosted-k8s/import-eks/click-add-cluster.png) -2. Input the basic information based on your needs and click **Next**. +2. Enter the basic information based on your needs and click **Next**. ![input-info](/images/docs/multicluster-management/import-cloud-hosted-k8s/import-eks/input-info.png) diff --git a/content/en/docs/multicluster-management/import-cloud-hosted-k8s/import-gke.md b/content/en/docs/multicluster-management/import-cloud-hosted-k8s/import-gke.md index 600d789af..e6aae3c9f 100644 --- a/content/en/docs/multicluster-management/import-cloud-hosted-k8s/import-gke.md +++ b/content/en/docs/multicluster-management/import-cloud-hosted-k8s/import-gke.md @@ -33,9 +33,9 @@ You need to deploy KubeSphere on your GKE cluster first. For more information ab jwtSecret: "QVguGh7qnURywHn2od9IiOX6X8f8wK8g" ``` -2. Log in to the KubeSphere console on GKE as `admin`. Click **Platform** in the upper left corner and then select **Cluster Management**. +2. Log in to the KubeSphere console on GKE as `admin`. Click **Platform** in the upper-left corner and then select **Cluster Management**. -3. Go to **CRDs**, input `ClusterConfiguration` in the search bar, and then press **Enter** on your keyboard. Click **ClusterConfiguration** to go to its detail page. +3. Go to **CRDs**, enter `ClusterConfiguration` in the search bar, and then press **Enter** on your keyboard. Click **ClusterConfiguration** to go to its detail page. ![search-config](/images/docs/multicluster-management/import-cloud-hosted-k8s/import-gke/search-config.png) @@ -111,11 +111,11 @@ You need to deploy KubeSphere on your GKE cluster first. For more information ab ### Step 4: Import the GKE Member Cluster -1. Log in to the KubeSphere console on your Host Cluster as `admin`. Click **Platform** in the upper left corner and then select **Cluster Management**. On the **Cluster Management** page, click **Add Cluster**. +1. Log in to the KubeSphere console on your Host Cluster as `admin`. Click **Platform** in the upper-left corner and then select **Cluster Management**. On the **Cluster Management** page, click **Add Cluster**. ![click-add-cluster](/images/docs/multicluster-management/import-cloud-hosted-k8s/import-gke/click-add-cluster.png) -2. Input the basic information based on your needs and click **Next**. +2. Enter the basic information based on your needs and click **Next**. ![input-info](/images/docs/multicluster-management/import-cloud-hosted-k8s/import-gke/input-info.png) diff --git a/content/en/docs/multicluster-management/unbind-cluster.md b/content/en/docs/multicluster-management/unbind-cluster.md index 387b9cf00..3a17ea317 100644 --- a/content/en/docs/multicluster-management/unbind-cluster.md +++ b/content/en/docs/multicluster-management/unbind-cluster.md @@ -15,7 +15,7 @@ This tutorial demonstrates how to unbind a cluster from the central control plan ## Unbind a Cluster -1. Click **Platform** in the top left corner and select **Cluster Management**. +1. Click **Platform** in the top-left corner and select **Cluster Management**. 2. On the **Cluster Management** page, click the cluster that you want to remove from the central control plane. diff --git a/content/en/docs/pluggable-components/alerting.md b/content/en/docs/pluggable-components/alerting.md index e8e242eff..1ef61ba19 100644 --- a/content/en/docs/pluggable-components/alerting.md +++ b/content/en/docs/pluggable-components/alerting.md @@ -21,7 +21,7 @@ When you implement multi-node installation of KubeSphere on Linux, you need to c ``` {{< notice note >}} -If you adopt [All-in-One Installation](../../quick-start/all-in-one-on-linux/), you do not need to create a `config-sample.yaml` file as you can create a cluster directly. Generally, the all-in-one mode is for users who are new to KubeSphere and look to get familiar with the system. If you want to enable Alerting in this mode (e.g. for testing purposes), refer to [the following section](#enable-alerting-after-installation) to see how Alerting can be enabled after installation. +If you adopt [All-in-One Installation](../../quick-start/all-in-one-on-linux/), you do not need to create a `config-sample.yaml` file as you can create a cluster directly. Generally, the all-in-one mode is for users who are new to KubeSphere and look to get familiar with the system. If you want to enable Alerting in this mode (for example, for testing purposes), refer to [the following section](#enable-alerting-after-installation) to see how Alerting can be enabled after installation. {{}} 2. In this file, navigate to `alerting` and change `false` to `true` for `enabled`. Save the file after you finish. diff --git a/content/en/docs/pluggable-components/app-store.md b/content/en/docs/pluggable-components/app-store.md index 5af359e33..330a74ff7 100644 --- a/content/en/docs/pluggable-components/app-store.md +++ b/content/en/docs/pluggable-components/app-store.md @@ -27,7 +27,7 @@ When you implement multi-node installation of KubeSphere on Linux, you need to c ``` {{< notice note >}} -If you adopt [All-in-One Installation](../../quick-start/all-in-one-on-linux/), you do not need to create a `config-sample.yaml` file as you can create a cluster directly. Generally, the all-in-one mode is for users who are new to KubeSphere and look to get familiar with the system. If you want to enable the App Store in this mode (e.g. for testing purposes), refer to [the following section](#enable-app-store-after-installation) to see how the App Store can be installed after installation. +If you adopt [All-in-One Installation](../../quick-start/all-in-one-on-linux/), you do not need to create a `config-sample.yaml` file as you can create a cluster directly. Generally, the all-in-one mode is for users who are new to KubeSphere and look to get familiar with the system. If you want to enable the App Store in this mode (for example, for testing purposes), refer to [the following section](#enable-app-store-after-installation) to see how the App Store can be installed after installation. {{}} 2. In this file, navigate to `openpitrix` and change `false` to `true` for `enabled`. Save the file after you finish. @@ -106,7 +106,7 @@ You can find the web kubectl tool by clicking }} -Verify that you can use the **Auditing Operating** function from the **Toolbox** in the bottom right corner. +Verify that you can use the **Auditing Operating** function from the **Toolbox** in the bottom-right corner. ![auditing-operating](/images/docs/enable-pluggable-components/kubesphere-auditing-logs/auditing-operating.png) diff --git a/content/en/docs/pluggable-components/devops.md b/content/en/docs/pluggable-components/devops.md index bee829c69..283325f7f 100644 --- a/content/en/docs/pluggable-components/devops.md +++ b/content/en/docs/pluggable-components/devops.md @@ -8,7 +8,7 @@ weight: 6300 The KubeSphere DevOps System is designed for CI/CD workflows in Kubernetes. Based on [Jenkins](https://jenkins.io/), it provides one-stop solutions to help both development and Ops teams build, test and publish apps to Kubernetes in a straight-forward way. It also features plugin management, [Binary-to-Image (B2I)](../../project-user-guide/image-builder/binary-to-image/), [Source-to-Image (S2I)](../../project-user-guide/image-builder/source-to-image/), code dependency caching, code quality analysis, pipeline logging, etc. -The DevOps System offers an enabling environment for users as apps can be automatically released to the same platform. It is also compatible with third-party private image registries (e.g. Harbor) and code repositories (e.g. GitLab/GitHub/SVN/BitBucket). As such, it creates excellent user experiences by providing users with comprehensive, visualized CI/CD pipelines which are extremely useful in air-gapped environments. +The DevOps System offers an enabling environment for users as apps can be automatically released to the same platform. It is also compatible with third-party private image registries (for example, Harbor) and code repositories (for example, GitLab/GitHub/SVN/BitBucket). As such, it creates excellent user experiences by providing users with comprehensive, visualized CI/CD pipelines which are extremely useful in air-gapped environments. For more information, see [DevOps User Guide](../../devops-user-guide/). @@ -25,7 +25,7 @@ When you implement multi-node installation of KubeSphere on Linux, you need to c ``` {{< notice note >}} -If you adopt [All-in-One Installation](../../quick-start/all-in-one-on-linux/), you do not need to create a `config-sample.yaml` file as you can create a cluster directly. Generally, the all-in-one mode is for users who are new to KubeSphere and look to get familiar with the system. If you want to enable DevOps in this mode (e.g. for testing purposes), refer to [the following section](#enable-devops-after-installation) to see how DevOps can be installed after installation. +If you adopt [All-in-One Installation](../../quick-start/all-in-one-on-linux/), you do not need to create a `config-sample.yaml` file as you can create a cluster directly. Generally, the all-in-one mode is for users who are new to KubeSphere and look to get familiar with the system. If you want to enable DevOps in this mode (for example, for testing purposes), refer to [the following section](#enable-devops-after-installation) to see how DevOps can be installed after installation. {{}} 2. In this file, navigate to `devops` and change `false` to `true` for `enabled`. Save the file after you finish. diff --git a/content/en/docs/pluggable-components/events.md b/content/en/docs/pluggable-components/events.md index fb7497ccd..c5cf7977c 100644 --- a/content/en/docs/pluggable-components/events.md +++ b/content/en/docs/pluggable-components/events.md @@ -24,7 +24,7 @@ When you implement multi-node installation of KubeSphere on Linux, you need to c {{< notice note >}} -If you adopt [All-in-One Installation](../../quick-start/all-in-one-on-linux/), you do not need to create a `config-sample.yaml` file as you can create a cluster directly. Generally, the all-in-one mode is for users who are new to KubeSphere and look to get familiar with the system. If you want to enable Events in this mode (e.g. for testing purposes), refer to [the following section](#enable-events-after-installation) to see how Events can be [installed after installation](#enable-events-after-installation). +If you adopt [All-in-One Installation](../../quick-start/all-in-one-on-linux/), you do not need to create a `config-sample.yaml` file as you can create a cluster directly. Generally, the all-in-one mode is for users who are new to KubeSphere and look to get familiar with the system. If you want to enable Events in this mode (for example, for testing purposes), refer to [the following section](#enable-events-after-installation) to see how Events can be [installed after installation](#enable-events-after-installation). {{}} @@ -154,7 +154,7 @@ You can find the web kubectl tool by clicking }} -Verify that you can use the **Event Search** function from the **Toolbox** in the bottom right corner. +Verify that you can use the **Event Search** function from the **Toolbox** in the bottom-right corner. ![event-search](/images/docs/enable-pluggable-components/kubesphere-events/event-search.png) diff --git a/content/en/docs/pluggable-components/kubeedge.md b/content/en/docs/pluggable-components/kubeedge.md index 209b1e873..b14996e43 100644 --- a/content/en/docs/pluggable-components/kubeedge.md +++ b/content/en/docs/pluggable-components/kubeedge.md @@ -27,7 +27,7 @@ When you implement multi-node installation of KubeSphere on Linux, you need to c ``` {{< notice note >}} - If you adopt [All-in-One Installation](../../quick-start/all-in-one-on-linux/), you do not need to create a `config-sample.yaml` file as you can create a cluster directly. Generally, the all-in-one mode is for users who are new to KubeSphere and look to get familiar with the system. If you want to enable KubeEdge in this mode (e.g. for testing purposes), refer to [the following section](#enable-kubeedge-after-installation) to see how KubeEdge can be installed after installation. + If you adopt [All-in-One Installation](../../quick-start/all-in-one-on-linux/), you do not need to create a `config-sample.yaml` file as you can create a cluster directly. Generally, the all-in-one mode is for users who are new to KubeSphere and look to get familiar with the system. If you want to enable KubeEdge in this mode (for example, for testing purposes), refer to [the following section](#enable-kubeedge-after-installation) to see how KubeEdge can be installed after installation. {{}} 2. In this file, navigate to `kubeedge.enabled` and change `false` to `true`. diff --git a/content/en/docs/pluggable-components/logging.md b/content/en/docs/pluggable-components/logging.md index fa0fa3666..5032a2041 100644 --- a/content/en/docs/pluggable-components/logging.md +++ b/content/en/docs/pluggable-components/logging.md @@ -24,7 +24,7 @@ When you install KubeSphere on Linux, you need to create a configuration file, w {{< notice note >}} -- If you adopt [All-in-One Installation](../../quick-start/all-in-one-on-linux/), you do not need to create a `config-sample.yaml` file as you can create a cluster directly. Generally, the all-in-one mode is for users who are new to KubeSphere and look to get familiar with the system. If you want to enable Logging in this mode (e.g. for testing purposes), refer to [the following section](#enable-logging-after-installation) to see how Logging can be installed after installation. +- If you adopt [All-in-One Installation](../../quick-start/all-in-one-on-linux/), you do not need to create a `config-sample.yaml` file as you can create a cluster directly. Generally, the all-in-one mode is for users who are new to KubeSphere and look to get familiar with the system. If you want to enable Logging in this mode (for example, for testing purposes), refer to [the following section](#enable-logging-after-installation) to see how Logging can be installed after installation. - If you adopt [Multi-node Installation](../../installing-on-linux/introduction/multioverview/) and are using symbolic links for docker root directory, make sure all nodes follow the exactly same symbolic links. Logging agents are deployed in DaemonSets onto nodes. Any discrepancy in container log path may cause collection failures on that node. diff --git a/content/en/docs/pluggable-components/metrics-server.md b/content/en/docs/pluggable-components/metrics-server.md index 09d38e014..34ed2fa3e 100644 --- a/content/en/docs/pluggable-components/metrics-server.md +++ b/content/en/docs/pluggable-components/metrics-server.md @@ -21,7 +21,7 @@ When you implement multi-node installation of KubeSphere on Linux, you need to c ``` {{< notice note >}} - If you adopt [All-in-One Installation](../../quick-start/all-in-one-on-linux/), you do not need to create a `config-sample.yaml` file as you can create a cluster directly. Generally, the all-in-one mode is for users who are new to KubeSphere and look to get familiar with the system. If you want to enable the Metrics Server in this mode (e.g. for testing purposes), refer to [the following section](#enable-devops-after-installation) to see how the Metrics Server can be installed after installation. + If you adopt [All-in-One Installation](../../quick-start/all-in-one-on-linux/), you do not need to create a `config-sample.yaml` file as you can create a cluster directly. Generally, the all-in-one mode is for users who are new to KubeSphere and look to get familiar with the system. If you want to enable the Metrics Server in this mode (for example, for testing purposes), refer to [the following section](#enable-devops-after-installation) to see how the Metrics Server can be installed after installation. {{}} 2. In this file, navigate to `metrics_server` and change `false` to `true` for `enabled`. Save the file after you finish. diff --git a/content/en/docs/pluggable-components/network-policy.md b/content/en/docs/pluggable-components/network-policy.md index c15353092..61d3796d8 100644 --- a/content/en/docs/pluggable-components/network-policy.md +++ b/content/en/docs/pluggable-components/network-policy.md @@ -30,7 +30,7 @@ When you implement multi-node installation of KubeSphere on Linux, you need to c ``` {{< notice note >}} -If you adopt [All-in-One Installation](../../quick-start/all-in-one-on-linux/), you do not need to create a `config-sample.yaml` file as you can create a cluster directly. Generally, the all-in-one mode is for users who are new to KubeSphere and look to get familiar with the system. If you want to enable the Network Policy in this mode (e.g. for testing purposes), refer to [the following section](#enable-network-policy-after-installation) to see how the Network Policy can be installed after installation. +If you adopt [All-in-One Installation](../../quick-start/all-in-one-on-linux/), you do not need to create a `config-sample.yaml` file as you can create a cluster directly. Generally, the all-in-one mode is for users who are new to KubeSphere and look to get familiar with the system. If you want to enable the Network Policy in this mode (for example, for testing purposes), refer to [the following section](#enable-network-policy-after-installation) to see how the Network Policy can be installed after installation. {{}} 2. In this file, navigate to `network.networkpolicy` and change `false` to `true` for `enabled`. Save the file after you finish. diff --git a/content/en/docs/pluggable-components/pod-ip-pools.md b/content/en/docs/pluggable-components/pod-ip-pools.md index 917b578c8..00488b347 100644 --- a/content/en/docs/pluggable-components/pod-ip-pools.md +++ b/content/en/docs/pluggable-components/pod-ip-pools.md @@ -21,7 +21,7 @@ When you implement multi-node installation of KubeSphere on Linux, you need to c ``` {{< notice note >}} - If you adopt [All-in-One Installation](../../quick-start/all-in-one-on-linux/), you do not need to create a `config-sample.yaml` file as you can create a cluster directly. Generally, the all-in-one mode is for users who are new to KubeSphere and look to get familiar with the system. If you want to enable Pod IP Pools in this mode (e.g. for testing purposes), refer to [the following section](#enable-pod-ip-pools-after-installation) to see how Pod IP Pools can be installed after installation. + If you adopt [All-in-One Installation](../../quick-start/all-in-one-on-linux/), you do not need to create a `config-sample.yaml` file as you can create a cluster directly. Generally, the all-in-one mode is for users who are new to KubeSphere and look to get familiar with the system. If you want to enable Pod IP Pools in this mode (for example, for testing purposes), refer to [the following section](#enable-pod-ip-pools-after-installation) to see how Pod IP Pools can be installed after installation. {{}} 2. In this file, navigate to `network.ippool.type` and change `none` to `calico`. Save the file after you finish. diff --git a/content/en/docs/pluggable-components/service-mesh.md b/content/en/docs/pluggable-components/service-mesh.md index aebae6466..f15aa5bd4 100644 --- a/content/en/docs/pluggable-components/service-mesh.md +++ b/content/en/docs/pluggable-components/service-mesh.md @@ -23,7 +23,7 @@ When you implement multi-node installation of KubeSphere on Linux, you need to c ``` {{< notice note >}} -If you adopt [All-in-One Installation](../../quick-start/all-in-one-on-linux/), you do not need to create a `config-sample.yaml` file as you can create a cluster directly. Generally, the all-in-one mode is for users who are new to KubeSphere and look to get familiar with the system. If you want to enable KubeSphere Service Mesh in this mode (e.g. for testing purposes), refer to [the following section](#enable-service-mesh-after-installation) to see how KubeSphere Service Mesh can be installed after installation. +If you adopt [All-in-One Installation](../../quick-start/all-in-one-on-linux/), you do not need to create a `config-sample.yaml` file as you can create a cluster directly. Generally, the all-in-one mode is for users who are new to KubeSphere and look to get familiar with the system. If you want to enable KubeSphere Service Mesh in this mode (for example, for testing purposes), refer to [the following section](#enable-service-mesh-after-installation) to see how KubeSphere Service Mesh can be installed after installation. {{}} 2. In this file, navigate to `servicemesh` and change `false` to `true` for `enabled`. Save the file after you finish. diff --git a/content/en/docs/pluggable-components/service-topology.md b/content/en/docs/pluggable-components/service-topology.md index 25c1255cd..d3d8c96e9 100644 --- a/content/en/docs/pluggable-components/service-topology.md +++ b/content/en/docs/pluggable-components/service-topology.md @@ -21,7 +21,7 @@ When you implement multi-node installation of KubeSphere on Linux, you need to c ``` {{< notice note >}} - If you adopt [All-in-One Installation](../../quick-start/all-in-one-on-linux/), you do not need to create a `config-sample.yaml` file as you can create a cluster directly. Generally, the all-in-one mode is for users who are new to KubeSphere and look to get familiar with the system. If you want to enable Service Topology in this mode (e.g. for testing purposes), refer to [the following section](#enable-service-topology-after-installation) to see how Service Topology can be installed after installation. + If you adopt [All-in-One Installation](../../quick-start/all-in-one-on-linux/), you do not need to create a `config-sample.yaml` file as you can create a cluster directly. Generally, the all-in-one mode is for users who are new to KubeSphere and look to get familiar with the system. If you want to enable Service Topology in this mode (for example, for testing purposes), refer to [the following section](#enable-service-topology-after-installation) to see how Service Topology can be installed after installation. {{}} 2. In this file, navigate to `network.topology.type` and change `none` to `weave-scope`. Save the file after you finish. diff --git a/content/en/docs/project-administration/container-limit-ranges.md b/content/en/docs/project-administration/container-limit-ranges.md index 3ff0971c9..771f04e0f 100644 --- a/content/en/docs/project-administration/container-limit-ranges.md +++ b/content/en/docs/project-administration/container-limit-ranges.md @@ -6,7 +6,7 @@ linkTitle: "Container Limit Ranges" weight: 13400 --- -A container can use as much CPU and memory as set by [the resource quota for a project](../../workspace-administration/project-quotas/). At the same time, KubeSphere uses requests and limits to control resource (e.g. CPU and memory) usage for a container, also known as [LimitRanges](https://kubernetes.io/docs/concepts/policy/limit-range/) in Kubernetes. Requests make sure the container can get the resources it needs as they are specifically guaranteed and reserved. On the contrary, limits ensure that container can never use resources above a certain value. +A container can use as much CPU and memory as set by [the resource quota for a project](../../workspace-administration/project-quotas/). At the same time, KubeSphere uses requests and limits to control resource (for example, CPU and memory) usage for a container, also known as [LimitRanges](https://kubernetes.io/docs/concepts/policy/limit-range/) in Kubernetes. Requests make sure the container can get the resources it needs as they are specifically guaranteed and reserved. On the contrary, limits ensure that container can never use resources above a certain value. When you create a workload, such as a Deployment, you configure resource requests and limits for the container. To make these request and limit fields pre-populated with values, you can set default limit ranges. @@ -18,13 +18,11 @@ You have an available workspace, a project and an account (`project-admin`). The ## Set Default Limit Ranges -1. Log in to the console as `project-admin` and go to a project. On the **Overview** page, you can see default limit ranges remain unset if the project is newly created. Click **Set** to configure limit ranges. +1. Log in to the console as `project-admin` and go to a project. On the **Overview** page, you can see default limit ranges remain unset if the project is newly created. Click **Set** next to **Resource Default Request Not Set** to configure limit ranges. - ![limit-ranges](/images/docs/project-administration/container-limit-ranges/limit-ranges.jpg) +2. In the dialog that appears, you can see that KubeSphere does not set any requests or limits by default. To set requests and limits to control CPU and memory resources, use the slider to move to a desired value or enter numbers directly. Leaving a field blank means you do not set any requests or limits. -2. In the dialog that appears, you can see that KubeSphere does not set any requests or limits by default. To set requests and limits to control CPU and memory resources, use the slider to move to a desired value or input numbers directly. Leaving a field blank means you do not set any requests or limits. - - ![default-limit-range](/images/docs/project-administration/container-limit-ranges/default-limit-range.jpg) + ![default-limit-range](/images/docs/project-administration/container-limit-ranges/default-limit-range.png) {{< notice note >}} @@ -34,19 +32,17 @@ You have an available workspace, a project and an account (`project-admin`). The 3. Click **OK** to finish setting limit ranges. -4. Go to **Basic Info** in **Project Settings**, and you can see default limit ranges for containers in a project. +4. Go to **Basic Information** in **Project Settings**, and you can see default limit ranges for containers in a project. - ![view-limit-ranges](/images/docs/project-administration/container-limit-ranges/view-limit-ranges.jpg) + ![view-limit-ranges](/images/docs/project-administration/container-limit-ranges/view-limit-ranges.png) -5. To change default limit ranges, click **Manage Project** on the **Basic Info** page and select **Edit Resource Default Request**. - - ![change-limit-range](/images/docs/project-administration/container-limit-ranges/change-limit-range.jpg) +5. To change default limit ranges, click **Manage Project** on the **Basic Information** page and select **Edit Resource Default Request**. 6. Change limit ranges directly in the dialog and click **OK**. 7. When you create a workload, requests and limits of the container will be pre-populated with values. - ![workload-values](/images/docs/project-administration/container-limit-ranges/workload-values.jpg) + ![workload-values](/images/docs/project-administration/container-limit-ranges/workload-values.png) {{< notice note >}} diff --git a/content/en/docs/project-administration/disk-log-collection.md b/content/en/docs/project-administration/disk-log-collection.md index c13ccb436..12912694a 100644 --- a/content/en/docs/project-administration/disk-log-collection.md +++ b/content/en/docs/project-administration/disk-log-collection.md @@ -27,7 +27,7 @@ This tutorial demonstrates how to collect disk logs for an example app. 1. From the left navigation bar, select **Workloads** in **Application Workloads**. Under the **Deployments** tab, click **Create**. -2. In the dialog that appears, set a name for the Deployment (e.g. `demo-deployment`) and click **Next**. +2. In the dialog that appears, set a name for the Deployment (for example, `demo-deployment`) and click **Next**. 3. Under **Container Image**, click **Add Container Image**. @@ -35,7 +35,7 @@ This tutorial demonstrates how to collect disk logs for an example app. ![alpine-image](/images/docs/project-administration/disk-log-collection/alpine-image.png) -5. Scroll down to **Start Command** and check it. Input the following values for **Run Command** and **Parameters** respectively, click **√**, and then click **Next**. +5. Scroll down to **Start Command** and check it. Enter the following values for **Run Command** and **Parameters** respectively, click **√**, and then click **Next**. **Run Command** @@ -61,7 +61,7 @@ This tutorial demonstrates how to collect disk logs for an example app. ![mount-volumes](/images/docs/project-administration/disk-log-collection/mount-volumes.png) -7. On the **Temporary Volume** tab, input a name for the volume (e.g. `demo-disk-log-collection`) and set the access mode and path. Refer to the image below as an example. +7. On the **Temporary Volume** tab, enter a name for the volume (for example, `demo-disk-log-collection`) and set the access mode and path. Refer to the image below as an example. ![volume-example](/images/docs/project-administration/disk-log-collection/volume-example.png) @@ -85,7 +85,7 @@ This tutorial demonstrates how to collect disk logs for an example app. ![inspect-logs](/images/docs/project-administration/disk-log-collection/inspect-logs.png) -3. Alternatively, you can also use the **Log Search** function from **Toolbox** in the bottom right corner to view stdout logs. For example, use the Pod name of the Deployment for a fuzzy query: +3. Alternatively, you can also use the **Log Search** function from **Toolbox** in the bottom-right corner to view stdout logs. For example, use the Pod name of the Deployment for a fuzzy query: ![fuzzy-match](/images/docs/project-administration/disk-log-collection/fuzzy-match.png) diff --git a/content/en/docs/project-administration/project-and-multicluster-project.md b/content/en/docs/project-administration/project-and-multicluster-project.md index 132125d29..d6ab0e1cf 100644 --- a/content/en/docs/project-administration/project-and-multicluster-project.md +++ b/content/en/docs/project-administration/project-and-multicluster-project.md @@ -2,7 +2,6 @@ title: "Projects and Multi-cluster Projects" keywords: 'KubeSphere, Kubernetes, project, multicluster-project' description: 'Learn how to create different types of projects.' - linkTitle: "Projects and Multi-cluster Projects" weight: 13100 --- @@ -11,116 +10,91 @@ A project in KubeSphere is a Kubernetes [namespace](https://kubernetes.io/docs/c A multi-cluster project runs across clusters, empowering users to achieve high availability and isolate occurring issues to a certain cluster while not affecting your business. For more information, see [Multi-cluster Management](../../multicluster-management/). -This chapter demonstrates the basic operations of project administration, such as creation and deletion. +This tutorial demonstrates how to manage projects and multi-cluster projects. ## Prerequisites -- You have an available workspace. -- You must have the authorization of **Projects Management**, which is included in the built-in role `workspace-self-provisioner`. +- You need to create a workspace and an account (`project-admin`). The account must be invited to the workspace with the role of `workspace-self-provisioner`. For more information, see [Create Workspaces, Projects, Accounts and Roles](../../../docs/quick-start/create-workspace-and-project/). - You must enable the multi-cluster feature through [Direction Connection](../../multicluster-management/enable-multicluster/direct-connection/) or [Agent Connection](../../multicluster-management/enable-multicluster/agent-connection/) before you create a multi-cluster project. ## Projects ### Create a project -1. Go to the **Projects** page of a workspace and click **Create**. - - ![create-project](/images/docs/project-admin/create-project.jpg) +1. Go to the **Projects** page of a workspace and click **Create** on the **Projects** tab. {{< notice note >}} - You can change the cluster where the project will be created on the **Cluster** drop-down list. The list is only visible after you enable the multi-cluster feature. -- If you cannot see the **Create** button, it means no cluster is available to use for your workspace. You need to contact the platform administrator or cluster administrator so that workspace resources can be created in the cluster. To assign a cluster to a workspace, the platform administrator or cluster administrator needs to edit [**Cluster Visibility**](../../cluster-administration/cluster-settings/cluster-visibility-and-authorization/) on the **Cluster Management** page. +- If you cannot see the **Create** button, it means no cluster is available to use for your workspace. You need to contact the platform administrator or cluster administrator so that workspace resources can be created in the cluster. [To assign a cluster to a workspace](../../cluster-administration/cluster-settings/cluster-visibility-and-authorization/), the platform administrator or cluster administrator needs to edit **Cluster Visibility** on the **Cluster Management** page. {{}} -2. In the **Create Project** window that appears, enter a project name and add an alias or description if necessary. Select the cluster where the project will be created (this option does not appear if the multi-cluster feature is not enabled), and click **OK** to finish. - - ![create-project-page](/images/docs/project-admin/create-project-page.jpg) +2. In the **Create Project** window that appears, enter a project name and add an alias or description if necessary. Under **Cluster Settings**, select the cluster where the project will be created (this option does not appear if the multi-cluster feature is not enabled), and click **OK**. 3. A project created will display in the list as shown below. You can click the project name to go to its **Overview** page. - ![project-list](/images/docs/project-admin/project-list.jpg) + ![project-list](/images/docs/project-administration/project-and-multicluster-project/project-list.png) -### Edit project information +### Edit a project -1. Navigate to **Basic Info** under **Project Settings** and click **Manage Project** on the right. +1. Go to your project, navigate to **Basic Information** under **Project Settings** and click **Manage Project** on the right. - ![basic-info-page](/images/docs/project-admin/basic-info-page.jpg) - -2. Choose **Edit Info** from the drop-down menu. +2. Choose **Edit Information** from the drop-down menu. + ![project-basic-information](/images/docs/project-administration/project-and-multicluster-project/project-basic-information.png) + {{< notice note >}} -The project name cannot be edited. If you want to change other information, see relevant chapters in the documentation. +The project name cannot be edited. If you want to change other information, see relevant tutorials in the documentation. - {{}} +{{}} -### Delete a project +3. To delete a project, choose **Delete Project** from the drop-down menu. In the dialog that appears, enter the project name and click **OK** to confirm the deletion. -1. Navigate to **Basic Info** under **Project Settings** and click **Manage Project** on the right. + {{< notice warning >}} - ![basic-info-page](/images/docs/project-admin/basic-info-page.jpg) +A project cannot be recovered once deleted and resources in the project will be removed. -2. Choose **Delete Project** from the drop-down menu. - -3. In the dialog that appears, enter the project name and click **OK** to confirm the deletion. - - {{< notice warning >}} - -A project cannot be recovered once deleted and resources in the project will be removed as well. - - {{}} +{{}} ## Multi-cluster Projects ### Create a multi-cluster project -1. Go to the **Projects** page of a workspace, choose **Multi-cluster Projects** and click **Create**. - - ![create-multicluster-project](/images/docs/project-admin/create-multicluster-project.jpg) +1. Go to the **Projects** page of a workspace, click the **Multi-cluster Projects** tab and click **Create**. {{< notice note >}} -- If you cannot see the **Create** button, it means no cluster is available to use for your workspace. You need to contact the platform administrator or cluster administrator so that workspace resources can be created in the cluster. To assign a cluster to a workspace, the platform administrator or cluster administrator needs to edit [**Cluster Visibility**](../../cluster-administration/cluster-settings/cluster-visibility-and-authorization/) on the **Cluster Management** page. +- If you cannot see the **Create** button, it means no cluster is available to use for your workspace. You need to contact the platform administrator or cluster administrator so that workspace resources can be created in the cluster. [To assign a cluster to a workspace](../../cluster-administration/cluster-settings/cluster-visibility-and-authorization/), the platform administrator or cluster administrator needs to edit **Cluster Visibility** on the **Cluster Management** page. - Make sure at least two clusters are assigned to your workspace. {{}} -2. In the **Create Multi-cluster Project** window that appears, enter a project name and add an alias or description if necessary. Select multiple clusters for your project by clicking **Add Cluster**, and click **OK** to finish. - - ![create-multicluster-project-page](/images/docs/project-admin/create-multicluster-project-page.jpg) +2. In the **Create Multi-cluster Project** window that appears, enter a project name and add an alias or description if necessary. Under **Cluster Settings**, select multiple clusters for your project by clicking **Add Cluster**, and click **OK**. 3. A multi-cluster project created will display in the list as shown below. You can click the project name to go to its **Overview** page. - ![multicluster-project-list](/images/docs/project-admin/multicluster-project-list.jpg) + ![multi-cluster-list](/images/docs/project-administration/project-and-multicluster-project/multi-cluster-list.png) -### Edit multi-cluster project information +### Edit a multi-cluster project -1. Navigate to **Basic Info** under **Project Settings** and click **Manage Project** on the right. +1. Go to your multi-cluster project, navigate to **Basic Information** under **Project Settings** and click **Manage Project** on the right. - ![basic-info-multicluster](/images/docs/project-admin/basic-info-multicluster.jpg) +2. Choose **Edit Information** from the drop-down menu. -2. Choose **Edit Info** from the drop-down menu. + ![multi-cluster-basic-information](/images/docs/project-administration/project-and-multicluster-project/multi-cluster-basic-information.png) {{< notice note >}} -The project name cannot be edited. If you want to change other information, see relevant chapters in the documentation. +The project name cannot be edited. If you want to change other information, see relevant tutorials in the documentation. - {{}} +{{}} -### Delete a multi-cluster project +3. To delete a multi-cluster project, choose **Delete Project** from the drop-down menu. In the dialog that appears, enter the project name and click **OK** to confirm the deletion. -1. Navigate to **Basic Info** under **Project Settings** and click **Manage Project** on the right. + {{< notice warning >}} - ![basic-info-multicluster](/images/docs/project-admin/basic-info-multicluster.jpg) +A multi-cluster project cannot be recovered once deleted and resources in the project will be removed. -2. Choose **Delete Project** from the drop-down menu. - -3. In the dialog that appears, enter the project name and click **OK** to confirm the deletion. - - {{< notice warning >}} - -A multi-cluster project cannot be recovered once deleted and resources in the project will be removed as well. - - {{}} +{{}} diff --git a/content/en/docs/project-administration/project-gateway.md b/content/en/docs/project-administration/project-gateway.md index dec86a5f6..9b05e4402 100644 --- a/content/en/docs/project-administration/project-gateway.md +++ b/content/en/docs/project-administration/project-gateway.md @@ -30,7 +30,7 @@ You need to create a workspace, a project and an account (`project-admin`). The **LoadBalancer**: You can access Services with a single IP address through the gateway. -3. You can also enable **Application Governance** on the **Set Gateway** page. You need to enable **Application Governance** so that you can use the Tracing feature and use [different grayscale release strategies](../../project-user-guide/grayscale-release/overview/). Once it is enabled, check whether an annotation (e.g. `nginx.ingress.kubernetes.io/service-upstream: true`) is added for your route (Ingress) if the route is inaccessible. +3. You can also enable **Application Governance** on the **Set Gateway** page. You need to enable **Application Governance** so that you can use the Tracing feature and use [different grayscale release strategies](../../project-user-guide/grayscale-release/overview/). Once it is enabled, check whether an annotation (for example, `nginx.ingress.kubernetes.io/service-upstream: true`) is added for your route (Ingress) if the route is inaccessible. 4. After you select an access method, click **Save**. diff --git a/content/en/docs/project-administration/role-and-member-management.md b/content/en/docs/project-administration/role-and-member-management.md index 53b31c5d8..afc6b8766 100644 --- a/content/en/docs/project-administration/role-and-member-management.md +++ b/content/en/docs/project-administration/role-and-member-management.md @@ -1,92 +1,81 @@ --- -title: "Role and Member Management In Your Project" +title: "Project Role and Member Management" keywords: 'KubeSphere, Kubernetes, role, member, management, project' description: 'Learn how to manage access control for a project.' - -linkTitle: "Role and Member Management" +linkTitle: "Project Role and Member Management" weight: 13200 --- -This guide demonstrates how to manage roles and members in your project. For more information about KubeSphere roles, see Overview of Role Management. +This tutorial demonstrates how to manage roles and members in a project. At the project level, you can grant permissions in the following modules to a role: -In project scope, you can grant the following resources' permissions to a role: - -- Application Workloads -- Storage -- Configurations -- Monitoring & Alerting -- Project Settings -- Access Control +- **Application Workloads** +- **Storage** +- **Configurations** +- **Monitoring & Alerting** +- **Access Control** +- **Project Settings** ## Prerequisites -At least one project has been created, such as `demo-project`. Besides, you need an account of the `admin` role (e.g. `project-admin`) at the project level. See [Create Workspaces, Projects, Accounts and Roles](../../quick-start/create-workspace-and-project/) if it is not ready yet. +At least one project has been created, such as `demo-project`. Besides, you need an account of the `admin` role (for example, `project-admin`) at the project level. For more information, see [Create Workspaces, Projects, Accounts and Roles](../../quick-start/create-workspace-and-project/). ## Built-in Roles -In **Project Roles**, there are three available built-in roles as shown below. Built-in roles are created automatically by KubeSphere when a project is created and they cannot be edited or deleted. You can only view permissions and authorized user list. +In **Project Roles**, there are three available built-in roles as shown below. Built-in roles are created automatically by KubeSphere when a project is created and they cannot be edited or deleted. You can only view permissions included in a built-in role or assign it to a user. -| Built-in Roles | Description | -| ------------------ | ------------------------------------------------------------ | -| viewer | The viewer who can view all resources in the project. | -| operator | The maintainer of the project who can manage resources other than users and roles in the project. | -| admin | The administrator in the project who can perform any action on any resource. It gives full control over all resources in the project. | + + + + + + + + + + + + + + + + + +
Built-in RolesDescription
viewerThe viewer who can view all resources in the project.
operatorThe maintainer of the project who can manage resources other than users and roles in the project.
adminThe administrator in the project who can perform any action on any resource. It gives full control over all resources in the project.
-1. In **Project Roles**, click `admin` and you can see the role detail as shown below. +To view the permissions that a role contains: - ![view role details](/images/docs/project-admin/project_role_detail.png) +1. Log in to the console as `project-admin`. In **Project Roles**, click a role (for example, `admin`) and you can see role details as shown below. -2. You can switch to **Authorized Users** tab to see all the users that are granted an `admin` role. + ![project-role-details](/images/docs/project-administration/role-and-member-management/project-role-details.png) + +2. Click the **Authorized Users** tab to see all the users that are granted the role. ## Create a Project Role -1. Log in to the console as `project-admin` and select a project (e.g. `demo-project`) under **Projects** list. +1. Navigate to **Project Roles** under **Project Settings**. + +2. In **Project Roles**, click **Create** and set a role **Name** (for example, `project-monitor`). Click **Edit Permissions** to continue. + +3. In the pop-up window, permissions are categorized into different **Modules**. In this example, select **Application Workload Viewing** in **Application Workloads**, and **Alerting Message Viewing** and **Alerting Policy Viewing** in **Monitoring & Alerting**. Click **OK** to finish creating the role. {{< notice note >}} -The account `project-admin` is used as an example. As long as the account you are using is granted a role including the authorization of **Project Members View**, **Project Roles Management** and **Project Roles View** in **Access Control** at project level, it can create a project role. +**Depends on** means the major permission (the one listed after **Depends on**) needs to be selected first so that the affiliated permission can be assigned. - {{}} +{{}} -2. Go to **Project Roles** in **Project Settings**, click **Create** and set a **Role Identifier**. In this example, a role named `project-monitor` will be created. Click **Edit Authorization** to continue. +4. Newly-created roles will be listed in **Project Roles**. To edit an existing role, click on the right. - ![Create a project role](/images/docs/project-admin/project_role_create_step1.png) - -3. Select the authorization that you want this role to contain. For example, **Application Workloads View** in **Application Workloads**, and **Alerting Messages View** and **Alerting Policies View** in **Monitoring & Alerting** are selected for this role. Click **OK** to finish. - - ![Edit Authorization](/images/docs/project-admin/project_role_create_step2.png) - - {{< notice note >}} - -**Depend on** means the major authorization (the one listed after **Depend on**) needs to be selected first so that the affiliated authorization can be assigned. - - {{}} - -4. Newly-created roles will be listed in **Project Roles**. You can click the three dots on the right to edit it. - - ![Edit Roles](/images/docs/project-admin/project_role_list.png) - - {{< notice note >}} - -The role of `project-monitor` is only granted limited permissions in **Monitoring & Alerting**, which may not satisfy your need. This example is only for demonstration purpose. You can create customized roles based on your needs. - - {{}} + ![project-role-list](/images/docs/project-administration/role-and-member-management/project-role-list.png) ## Invite a New Member -1. In **Project Settings**, select **Project Members** and click **Invite Member**. -2. Invite a user to the project. Grant the role of `project-monitor` to the user. +1. Navigate to **Project Members** under **Project Settings**, and click **Invite Member**. - ![invite member](/images/docs/project-admin/project_invite_member_step2.png) +2. Invite a user to the project by clicking on the right of it and assign a role to it. - {{< notice note >}} +3. After you add the user to the project, click **OK**. In **Project Members**, you can see the user in the list. -The user must be invited to the project's workspace first. +4. To edit the role of an existing user or remove the user from the project, click on the right and select the corresponding operation. - {{}} - -3. After you add a user to the project, click **OK**. In **Project Members**, you can see the newly invited member listed. - -4. You can also change the role of an existing member by editing it or remove it from the project. - - ![edit member role](/images/docs/project-admin/project_user_edit.png) + ![edit-project-account](/images/docs/project-administration/role-and-member-management/edit-project-account.png) diff --git a/content/en/docs/project-user-guide/application-workloads/container-image-settings.md b/content/en/docs/project-user-guide/application-workloads/container-image-settings.md index f861ce5b5..682217452 100644 --- a/content/en/docs/project-user-guide/application-workloads/container-image-settings.md +++ b/content/en/docs/project-user-guide/application-workloads/container-image-settings.md @@ -10,7 +10,7 @@ When you create Deployments, StatefulSets or DaemonSets, you need to specify a c {{< notice tip >}} -You can enable **Edit Mode** in the top right corner to see corresponding values in the manifest file (YAML format) of properties on the dashboard. +You can enable **Edit Mode** in the top-right corner to see corresponding values in the manifest file (YAML format) of properties on the dashboard. {{}} @@ -30,17 +30,17 @@ After you click **Add Container Image**, you will see an image as below. #### Image Search Bar -You can click the cube icon on the right to select an image from the list or input an image name to search it. KubeSphere provides Docker Hub images and your private image repository. If you want to use your private image repository, you need to create an Image Registry Secret first in **Secrets** under **Configurations**. +You can click the cube icon on the right to select an image from the list or enter an image name to search it. KubeSphere provides Docker Hub images and your private image repository. If you want to use your private image repository, you need to create an Image Registry Secret first in **Secrets** under **Configurations**. {{< notice note >}} -Remember to press **Enter** on your keyboard after you input an image name in the search bar. +Remember to press **Enter** on your keyboard after you enter an image name in the search bar. {{}} #### Image Tag -You can input a tag like `imagename:tag`. If you do not specify it, it will default to the latest version. +You can enter a tag like `imagename:tag`. If you do not specify it, it will default to the latest version. #### Container Name @@ -274,7 +274,7 @@ A security context defines privilege and access control settings for a Pod or Co ### Deployment Mode -You can select different deployment modes to switch between inter-pod affinity and inter-pod anti-affinity. In Kubernetes, inter-pod affinity is specified as field `podAffinity` of field `affinity` while inter-pod anti-affinity is specified as field `podAntiAffinity` of field `affinity`. In KubeSphere, both `podAffinity` and `podAntiAffinity` are set to `preferredDuringSchedulingIgnoredDuringExecution`. You can enable **Edit Mode** in the top right corner to see field details. +You can select different deployment modes to switch between inter-pod affinity and inter-pod anti-affinity. In Kubernetes, inter-pod affinity is specified as field `podAffinity` of field `affinity` while inter-pod anti-affinity is specified as field `podAntiAffinity` of field `affinity`. In KubeSphere, both `podAffinity` and `podAntiAffinity` are set to `preferredDuringSchedulingIgnoredDuringExecution`. You can enable **Edit Mode** in the top-right corner to see field details. - **Pod Decentralized Deployment** represents anti-affinity. - **Pod Aggregation Deployment** represents affinity. diff --git a/content/en/docs/project-user-guide/application-workloads/cronjobs.md b/content/en/docs/project-user-guide/application-workloads/cronjobs.md index fb579a451..928e7f564 100644 --- a/content/en/docs/project-user-guide/application-workloads/cronjobs.md +++ b/content/en/docs/project-user-guide/application-workloads/cronjobs.md @@ -22,7 +22,7 @@ Log in to the console as `project-regular`. Go to **Jobs** of a project, choose ![cronjob-list](/images/docs/project-user-guide/application-workloads/cronjobs/cronjob-list.jpg) -### Step 2: Input basic information +### Step 2: Enter basic information Enter the basic information. You can refer to the image below for each field. When you finish, click **Next**. @@ -30,7 +30,7 @@ Enter the basic information. You can refer to the image below for each field. Wh - **Name**: The name of the CronJob, which is also the unique identifier. - **Alias**: The alias name of the CronJob, making resources easier to identify. -- **Schedule**: It runs a Job periodically on a given time-based schedule. Please see [CRON](https://en.wikipedia.org/wiki/Cron) for grammar reference. Some preset CRON statements are provided in KubeSphere to simplify the input. This field is specified by `.spec.schedule`. For this CronJob, input `*/1 * * * *`, which means it runs once per minute. +- **Schedule**: It runs a Job periodically on a given time-based schedule. Please see [CRON](https://en.wikipedia.org/wiki/Cron) for grammar reference. Some preset CRON statements are provided in KubeSphere to simplify the input. This field is specified by `.spec.schedule`. For this CronJob, enter `*/1 * * * *`, which means it runs once per minute. | Type | CRON | | ----------- | ----------- | @@ -51,7 +51,7 @@ Enter the basic information. You can refer to the image below for each field. Wh {{< notice note >}} -You can enable **Edit Mode** in the top right corner to see the YAML manifest of this CronJob. +You can enable **Edit Mode** in the top-right corner to see the YAML manifest of this CronJob. {{}} @@ -61,7 +61,7 @@ Please refer to [Jobs](../jobs/#step-3-job-settings-optional). ### Step 4: Set an image -1. Click **Add Container Image** in **Container Image** and input `busybox` in the search bar. +1. Click **Add Container Image** in **Container Image** and enter `busybox` in the search bar. ![input-busybox](/images/docs/project-user-guide/application-workloads/cronjobs/input-busybox.jpg) diff --git a/content/en/docs/project-user-guide/application-workloads/daemonsets.md b/content/en/docs/project-user-guide/application-workloads/daemonsets.md index cb5167e62..c18af14f0 100644 --- a/content/en/docs/project-user-guide/application-workloads/daemonsets.md +++ b/content/en/docs/project-user-guide/application-workloads/daemonsets.md @@ -30,9 +30,9 @@ Log in to the console as `project-regular`. Go to **Application Workloads** of a ![daemonsets](/images/docs/project-user-guide/workloads/daemonsets.jpg) -### Step 2: Input basic information +### Step 2: Enter basic information -Specify a name for the DaemonSet (e.g. `demo-daemonset`) and click **Next** to continue. +Specify a name for the DaemonSet (for example, `demo-daemonset`) and click **Next** to continue. ![daemonsets](/images/docs/project-user-guide/workloads/daemonsets_form_1.jpg) @@ -42,13 +42,13 @@ Specify a name for the DaemonSet (e.g. `demo-daemonset`) and click **Next** to c ![daemonsets](/images/docs/project-user-guide/workloads/daemonsets_form_2_container_btn.jpg) -2. Input an image name from public Docker Hub or from a [private repository](../../configuration/image-registry/) you specified. For example, input `fluentd` in the search bar and press **Enter**. +2. Enter an image name from public Docker Hub or from a [private repository](../../configuration/image-registry/) you specified. For example, enter `fluentd` in the search bar and press **Enter**. ![daemonsets](/images/docs/project-user-guide/workloads/daemonsets_form_2_container_1.jpg) {{< notice note >}} -- Remember to press **Enter** on your keyboard after you input an image name in the search bar. +- Remember to press **Enter** on your keyboard after you enter an image name in the search bar. - If you want to use your private image repository, you should [create an Image Registry Secret](../../configuration/image-registry/) first in **Secrets** under **Configurations**. {{}} @@ -61,7 +61,7 @@ Specify a name for the DaemonSet (e.g. `demo-daemonset`) and click **Next** to c 5. Select a policy for image pulling from the drop-down menu. For more information, see [Image Pull Policy in Container Image Settings](../container-image-settings/#add-container-image). -6. For other settings (**Health Checker**, **Start Command**, **Environment Variables**, **Container Security Context** and **Sync Host Timezone**), you can configure them on the dashboard as well. For more information, see detailed explanations of these properties in [Container Image Settings](../container-image-settings/#add-container-image). When you finish, click **√** in the bottom right corner to continue. +6. For other settings (**Health Checker**, **Start Command**, **Environment Variables**, **Container Security Context** and **Sync Host Timezone**), you can configure them on the dashboard as well. For more information, see detailed explanations of these properties in [Container Image Settings](../container-image-settings/#add-container-image). When you finish, click **√** in the bottom-right corner to continue. 7. Select an update strategy from the drop-down menu. It is recommended you choose **RollingUpdate**. For more information, see [Update Strategy](../container-image-settings/#update-strategy). diff --git a/content/en/docs/project-user-guide/application-workloads/deployments.md b/content/en/docs/project-user-guide/application-workloads/deployments.md index b4671c2ec..bdb31788e 100644 --- a/content/en/docs/project-user-guide/application-workloads/deployments.md +++ b/content/en/docs/project-user-guide/application-workloads/deployments.md @@ -23,9 +23,9 @@ Log in to the console as `project-regular`. Go to **Application Workloads** of a ![deployments](/images/docs/project-user-guide/workloads/deployments.png) -### Step 2: Input basic information +### Step 2: Enter basic information -Specify a name for the Deployment (e.g. `demo-deployment`) and click **Next** to continue. +Specify a name for the Deployment (for example, `demo-deployment`) and click **Next** to continue. ![deployments](/images/docs/project-user-guide/workloads/deployments_form_1.jpg) @@ -34,7 +34,7 @@ Specify a name for the Deployment (e.g. `demo-deployment`) and click **Next** to 1. Before you set an image, define the number of replicated Pods in **Pod Replicas** by clicking the **plus** or **minus** icon, which is indicated by the `.spec.replicas` field in the manifest file. {{< notice tip >}} -You can see the Deployment manifest file in YAML format by enabling **Edit Mode** in the top right corner. KubeSphere allows you to edit the manifest file directly to create a Deployment. Alternatively, you can follow the steps below to create a Deployment via the dashboard. +You can see the Deployment manifest file in YAML format by enabling **Edit Mode** in the top-right corner. KubeSphere allows you to edit the manifest file directly to create a Deployment. Alternatively, you can follow the steps below to create a Deployment via the dashboard. {{}} ![deployments](/images/docs/project-user-guide/workloads/deployments_form_2.jpg) @@ -43,13 +43,13 @@ You can see the Deployment manifest file in YAML format by enabling **Edit Mode* ![deployments](/images/docs/project-user-guide/workloads/deployments_form_2_container_btn.jpg) -3. Input an image name from public Docker Hub or from a [private repository](../../configuration/image-registry/) you specified. For example, input `nginx` in the search bar and press **Enter**. +3. Enter an image name from public Docker Hub or from a [private repository](../../configuration/image-registry/) you specified. For example, enter `nginx` in the search bar and press **Enter**. ![deployments](/images/docs/project-user-guide/workloads/deployments_form_2_container_1.jpg) {{< notice note >}} -- Remember to press **Enter** on your keyboard after you input an image name in the search bar. +- Remember to press **Enter** on your keyboard after you enter an image name in the search bar. - If you want to use your private image repository, you should [create an Image Registry Secret](../../configuration/image-registry/) first in **Secrets** under **Configurations**. {{}} @@ -62,7 +62,7 @@ You can see the Deployment manifest file in YAML format by enabling **Edit Mode* 6. Select a policy for image pulling from the drop-down menu. For more information, see [Image Pull Policy in Container Image Settings](../container-image-settings/#add-container-image). -7. For other settings (**Health Checker**, **Start Command**, **Environment Variables**, **Container Security Context** and **Sync Host Timezone**), you can configure them on the dashboard as well. For more information, see detailed explanations of these properties in [Container Image Settings](../container-image-settings/#add-container-image). When you finish, click **√** in the bottom right corner to continue. +7. For other settings (**Health Checker**, **Start Command**, **Environment Variables**, **Container Security Context** and **Sync Host Timezone**), you can configure them on the dashboard as well. For more information, see detailed explanations of these properties in [Container Image Settings](../container-image-settings/#add-container-image). When you finish, click **√** in the bottom-right corner to continue. 8. Select an update strategy from the drop-down menu. It is recommended you choose **RollingUpdate**. For more information, see [Update Strategy](../container-image-settings/#update-strategy). diff --git a/content/en/docs/project-user-guide/application-workloads/horizontal-pod-autoscaling.md b/content/en/docs/project-user-guide/application-workloads/horizontal-pod-autoscaling.md index 3b19dad50..8d25b0b17 100755 --- a/content/en/docs/project-user-guide/application-workloads/horizontal-pod-autoscaling.md +++ b/content/en/docs/project-user-guide/application-workloads/horizontal-pod-autoscaling.md @@ -1,14 +1,14 @@ --- -title: "Horizontal Pod Autoscaling" +title: "Kubernetes HPA (Horizontal Pod Autoscaling) on KubeSphere" keywords: "Horizontal, Pod, Autoscaling, Autoscaler" -description: "How to configure Horizontal Pod Autoscaling on KubeSphere." +description: "How to configure Kubernetes Horizontal Pod Autoscaling on KubeSphere." weight: 10290 --- This document describes how to configure Horizontal Pod Autoscaling (HPA) on KubeSphere. -The HPA feature automatically adjusts the number of Pods to maintain average resource usage (CPU and memory) of Pods around preset values. For details about how HPA functions, see the [official Kubernetes document](https://kubernetes.io/docs/tasks/run-application/horizontal-pod-autoscale/). +The Kubernetes HPA feature automatically adjusts the number of Pods to maintain average resource usage (CPU and memory) of Pods around preset values. For details about how HPA functions, see the [official Kubernetes document](https://kubernetes.io/docs/tasks/run-application/horizontal-pod-autoscale/). This document uses HPA based on CPU usage as an example. Operations for HPA based on memory usage are similar. @@ -50,7 +50,7 @@ This document uses HPA based on CPU usage as an example. Operations for HPA base 7. Click **Next** on the **Mount Volumes** tab and click **Create** on the **Advanced Settings** tab. -## Configure HPA +## Configure Kubernetes HPA 1. Choose **Deployments** in **Workloads** on the left navigation bar and click the HPA Deployment (for example, hpa-v1) on the right. diff --git a/content/en/docs/project-user-guide/application-workloads/jobs.md b/content/en/docs/project-user-guide/application-workloads/jobs.md index f5c28eaef..dd58e1e6e 100644 --- a/content/en/docs/project-user-guide/application-workloads/jobs.md +++ b/content/en/docs/project-user-guide/application-workloads/jobs.md @@ -25,7 +25,7 @@ Log in to the console as `project-regular`. Go to **Jobs** under **Application W ![create-job](/images/docs/project-user-guide/application-workloads/jobs/create-job.jpg) -### Step 2: Input basic information +### Step 2: Enter basic information Enter the basic information. Refer to the image below as an example. @@ -62,7 +62,7 @@ You can set the values in this step as below or click **Next** to use the defaul ![add-container-image-job](/images/docs/project-user-guide/application-workloads/jobs/add-container-image-job.png) -3. On the same page, scroll down to **Start Command**. Input the following commands in the box which computes pi to 2000 places then prints it. Click **√** in the bottom right corner and select **Next** to continue. +3. On the same page, scroll down to **Start Command**. Enter the following commands in the box which computes pi to 2000 places then prints it. Click **√** in the bottom-right corner and select **Next** to continue. ```bash perl,-Mbignum=bpi,-wle,print bpi(2000) @@ -76,7 +76,7 @@ For more information about setting images, see [Container Image Settings](../con ### Step 5: Inspect the Job manifest (optional) -1. Enable **Edit Mode** in the top right corner which displays the manifest file of the Job. You can see all the values are set based on what you have specified in the previous steps. +1. Enable **Edit Mode** in the top-right corner which displays the manifest file of the Job. You can see all the values are set based on what you have specified in the previous steps. ```yaml apiVersion: batch/v1 @@ -145,7 +145,7 @@ You can rerun the Job if it fails, the reason of which displays under **Messages {{< notice tip >}} -- In **Resource Status**, the Pod list provides the Pod's detailed information (e.g. creation time, node, Pod IP and monitoring data). +- In **Resource Status**, the Pod list provides the Pod's detailed information (for example, creation time, node, Pod IP and monitoring data). - You can view the container information by clicking the Pod. - Click the container log icon to view the output logs of the container. - You can view the Pod detail page by clicking the Pod name. diff --git a/content/en/docs/project-user-guide/application-workloads/services.md b/content/en/docs/project-user-guide/application-workloads/services.md index 518db927f..8d64fd906 100644 --- a/content/en/docs/project-user-guide/application-workloads/services.md +++ b/content/en/docs/project-user-guide/application-workloads/services.md @@ -78,7 +78,7 @@ The steps of creating a stateful Service and a stateless Service are basically t {{}} -### Step 2: Input basic information +### Step 2: Enter basic information 1. In the dialog that appears, you can see the field **Version** prepopulated with `v1`. You need to define a name for the Service, such as `demo-service`. When you finish, click **Next** to continue. @@ -90,7 +90,7 @@ The steps of creating a stateful Service and a stateless Service are basically t {{< notice tip >}} -The value of **Name** is used in both configurations, one for Deployment and the other for Service. You can see the manifest file of the Deployment and the Service by enabling **Edit Mode** in the top right corner. Below is an example file for your reference. +The value of **Name** is used in both configurations, one for Deployment and the other for Service. You can see the manifest file of the Deployment and the Service by enabling **Edit Mode** in the top-right corner. Below is an example file for your reference. {{}} diff --git a/content/en/docs/project-user-guide/application-workloads/statefulsets.md b/content/en/docs/project-user-guide/application-workloads/statefulsets.md index 0b06d8753..a55a93b66 100644 --- a/content/en/docs/project-user-guide/application-workloads/statefulsets.md +++ b/content/en/docs/project-user-guide/application-workloads/statefulsets.md @@ -35,9 +35,9 @@ Log in to the console as `project-regular`. Go to **Application Workloads** of a ![statefulsets](/images/docs/project-user-guide/workloads/statefulsets.jpg) -### Step 2: Input basic information +### Step 2: Enter basic information -Specify a name for the StatefulSet (e.g. `demo-stateful`) and click **Next** to continue. +Specify a name for the StatefulSet (for example, `demo-stateful`) and click **Next** to continue. ![statefulsets](/images/docs/project-user-guide/workloads/statefulsets_form_1.jpg) @@ -47,7 +47,7 @@ Specify a name for the StatefulSet (e.g. `demo-stateful`) and click **Next** to {{< notice tip >}} -You can see the StatefulSet manifest file in YAML format by enabling **Edit Mode** in the top right corner. KubeSphere allows you to edit the manifest file directly to create a StatefulSet. Alternatively, you can follow the steps below to create a StatefulSet via the dashboard. +You can see the StatefulSet manifest file in YAML format by enabling **Edit Mode** in the top-right corner. KubeSphere allows you to edit the manifest file directly to create a StatefulSet. Alternatively, you can follow the steps below to create a StatefulSet via the dashboard. {{}} @@ -57,13 +57,13 @@ You can see the StatefulSet manifest file in YAML format by enabling **Edit Mode ![statefulsets](/images/docs/project-user-guide/workloads/statefulsets_form_2_container_btn.jpg) -3. Input an image name from public Docker Hub or from a [private repository](../../configuration/image-registry/) you specified. For example, input `nginx` in the search bar and press **Enter**. +3. Enter an image name from public Docker Hub or from a [private repository](../../configuration/image-registry/) you specified. For example, enter `nginx` in the search bar and press **Enter**. ![statefulsets](/images/docs/project-user-guide/workloads/statefulsets_form_2_container_1.jpg) {{< notice note >}} -- Remember to press **Enter** on your keyboard after you input an image name in the search bar. +- Remember to press **Enter** on your keyboard after you enter an image name in the search bar. - If you want to use your private image repository, you should [create an Image Registry Secret](../../configuration/image-registry/) first in **Secrets** under **Configurations**. {{}} @@ -76,7 +76,7 @@ You can see the StatefulSet manifest file in YAML format by enabling **Edit Mode 6. Select a policy for image pulling from the drop-down menu. For more information, see [Image Pull Policy in Container Image Settings](../container-image-settings/#add-container-image). -7. For other settings (**Health Checker**, **Start Command**, **Environment Variables**, **Container Security Context** and **Sync Host Timezone**), you can configure them on the dashboard as well. For more information, see detailed explanations of these properties in [Container Image Settings](../container-image-settings/#add-container-image). When you finish, click **√** in the bottom right corner to continue. +7. For other settings (**Health Checker**, **Start Command**, **Environment Variables**, **Container Security Context** and **Sync Host Timezone**), you can configure them on the dashboard as well. For more information, see detailed explanations of these properties in [Container Image Settings](../container-image-settings/#add-container-image). When you finish, click **√** in the bottom-right corner to continue. 8. Select an update strategy from the drop-down menu. It is recommended you choose **RollingUpdate**. For more information, see [Update Strategy](../container-image-settings/#update-strategy). diff --git a/content/en/docs/project-user-guide/application/app-template.md b/content/en/docs/project-user-guide/application/app-template.md index 58b924dc9..1464327e1 100644 --- a/content/en/docs/project-user-guide/application/app-template.md +++ b/content/en/docs/project-user-guide/application/app-template.md @@ -6,7 +6,7 @@ linkTitle: "App Templates" weight: 10110 --- -An app template serves as a way for users to upload, deliver and manage apps. Generally, an app is composed of one or more Kubernetes workloads (e.g. [Deployments](../../../project-user-guide/application-workloads/deployments/), [StatefulSets](../../../project-user-guide/application-workloads/statefulsets/) and [DaemonSets](../../../project-user-guide/application-workloads/daemonsets/)) and [Services](../../../project-user-guide/application-workloads/services/) based on how it functions and communicates with the external environment. Apps that are uploaded as app templates are built based on a [Helm](https://helm.sh/) package. +An app template serves as a way for users to upload, deliver and manage apps. Generally, an app is composed of one or more Kubernetes workloads (for example, [Deployments](../../../project-user-guide/application-workloads/deployments/), [StatefulSets](../../../project-user-guide/application-workloads/statefulsets/) and [DaemonSets](../../../project-user-guide/application-workloads/daemonsets/)) and [Services](../../../project-user-guide/application-workloads/services/) based on how it functions and communicates with the external environment. Apps that are uploaded as app templates are built based on a [Helm](https://helm.sh/) package. ## How App Templates Work @@ -30,7 +30,7 @@ KubeSphere deploys app repository services based on [OpenPitrix](https://github. ## Why App Templates -App templates enable users to deploy and manage apps in a visualized way. Internally, they play an important role as shared resources (e.g. databases, middleware and operating systems) created by enterprises for the coordination and cooperation within teams. Externally, app templates set industry standards of building and delivery. Users can take advantage of app templates in different scenarios to meet their own needs through one-click deployment. +App templates enable users to deploy and manage apps in a visualized way. Internally, they play an important role as shared resources (for example, databases, middleware and operating systems) created by enterprises for the coordination and cooperation within teams. Externally, app templates set industry standards of building and delivery. Users can take advantage of app templates in different scenarios to meet their own needs through one-click deployment. In addition, as OpenPitrix is integrated to KubeSphere to provide application management across the entire lifecycle, the platform allows ISVs, developers and regular users to all participate in the process. Backed by the multi-tenant system of KubeSphere, each tenant is only responsible for their own part, such as app uploading, app review, release, test, and version management. Ultimately, enterprises can build their own App Store and enrich their application pools with their customized standards. As such, apps can also be delivered in a standardized fashion. diff --git a/content/en/docs/project-user-guide/application/compose-app.md b/content/en/docs/project-user-guide/application/compose-app.md index e4bd9c27b..2037dd63c 100644 --- a/content/en/docs/project-user-guide/application/compose-app.md +++ b/content/en/docs/project-user-guide/application/compose-app.md @@ -19,7 +19,7 @@ This tutorial demonstrates how to create a microservices-based app Bookinfo, whi 1. Log in to the web console of KubeSphere and navigate to **Apps** in **Application Workloads** of your project. On the **Composing Apps** tab, click **Create Composing App**. -2. Set a name for the app (e.g. `bookinfo`) and click **Next**. +2. Set a name for the app (for example, `bookinfo`) and click **Next**. 3. On the **Components** page, you need to create microservices that compose the app. Click **Add Service** and select **Stateless Service**. @@ -27,7 +27,7 @@ This tutorial demonstrates how to create a microservices-based app Bookinfo, whi {{< notice note >}} - You can create a Service on the dashboard directly or enable **Edit Mode** in the top right corner to edit the YAML file. + You can create a Service on the dashboard directly or enable **Edit Mode** in the top-right corner to edit the YAML file. {{}} @@ -39,7 +39,7 @@ This tutorial demonstrates how to create a microservices-based app Bookinfo, whi {{}} -6. Click **Use Default Ports**. For more information about image settings, see [Container Image Settings](../../../project-user-guide/application-workloads/container-image-settings/). Click **√** in the bottom right corner and **Next** to continue. +6. Click **Use Default Ports**. For more information about image settings, see [Container Image Settings](../../../project-user-guide/application-workloads/container-image-settings/). Click **√** in the bottom-right corner and **Next** to continue. 7. On the **Mount Volumes** page, [add a volume](../../../project-user-guide/storage/volumes/) or click **Next** to continue. @@ -55,7 +55,7 @@ This tutorial demonstrates how to create a microservices-based app Bookinfo, whi 10. When you finish adding microservices, click **Next**. -11. On the **Internet Access** page, click **Add Route Rule**. On the **Specify Domain** tab, set a domain name for your app (e.g. `demo.bookinfo`) and select `http` in the **Protocol** field. For `Paths`, select the Service `productpage` and port `9080`. Click **OK** to continue. +11. On the **Internet Access** page, click **Add Route Rule**. On the **Specify Domain** tab, set a domain name for your app (for example, `demo.bookinfo`) and select `http` in the **Protocol** field. For `Paths`, select the Service `productpage` and port `9080`. Click **OK** to continue. ![route](/images/docs/project-user-guide/applications/create-a-microservices-based-app/route.png) diff --git a/content/en/docs/project-user-guide/application/deploy-app-from-appstore.md b/content/en/docs/project-user-guide/application/deploy-app-from-appstore.md index 40116c60e..4f93a24c4 100644 --- a/content/en/docs/project-user-guide/application/deploy-app-from-appstore.md +++ b/content/en/docs/project-user-guide/application/deploy-app-from-appstore.md @@ -19,7 +19,7 @@ This tutorial demonstrates how to quickly deploy [NGINX](https://www.nginx.com/) ### Step 1: Deploy NGINX from the App Store -1. On the **Overview** page of the project `demo-project`, click **App Store** in the top left corner. +1. On the **Overview** page of the project `demo-project`, click **App Store** in the top-left corner. ![app-store](/images/docs/project-user-guide/applications/deploy-apps-from-app-store/app-store.jpg) diff --git a/content/en/docs/project-user-guide/application/deploy-app-from-template.md b/content/en/docs/project-user-guide/application/deploy-app-from-template.md index 529494a34..044b8a8db 100644 --- a/content/en/docs/project-user-guide/application/deploy-app-from-template.md +++ b/content/en/docs/project-user-guide/application/deploy-app-from-template.md @@ -61,7 +61,7 @@ This tutorial demonstrates how to quickly deploy [Grafana](https://grafana.com/) {{}} -4. Input `Grafana` in the search bar to find the app, and then click it to deploy it. +4. Enter `Grafana` in the search bar to find the app, and then click it to deploy it. ![search-grafana](/images/docs/project-user-guide/applications/deploy-apps-from-app-templates/search-grafana.jpg) diff --git a/content/en/docs/project-user-guide/configuration/configmaps.md b/content/en/docs/project-user-guide/configuration/configmaps.md index 7293b32b5..76ad5b37d 100644 --- a/content/en/docs/project-user-guide/configuration/configmaps.md +++ b/content/en/docs/project-user-guide/configuration/configmaps.md @@ -20,75 +20,55 @@ You need to create a workspace, a project and an account (`project-regular`). Th ## Create a ConfigMap -### Step 1: Open the dashboard +1. Log in to the console as `project-regular`. Go to **Configurations** of a project, choose **ConfigMaps** and click **Create**. -Log in to the console as `project-regular`. Go to **Configurations** of a project, choose **ConfigMaps** and click **Create**. +2. In the dialog that appears, specify a name for the ConfigMap (for example, `demo-configmap`) and click **Next** to continue. -![create-configmap](/images/docs/project-user-guide/configurations/configmaps/create-configmap.jpg) + {{< notice tip >}} -### Step 2: Input basic information - -Specify a name for the ConfigMap (e.g. `demo-configmap`) and click **Next** to continue. - -{{< notice tip >}} - -You can see the ConfigMap manifest file in YAML format by enabling **Edit Mode** in the top right corner. KubeSphere allows you to edit the manifest file directly to create a ConfigMap. Alternatively, you can follow the steps below to create a ConfigMap via the dashboard. +You can see the ConfigMap manifest file in YAML format by enabling **Edit Mode** in the top-right corner. KubeSphere allows you to edit the manifest file directly to create a ConfigMap. Alternatively, you can follow the steps below to create a ConfigMap via the dashboard. {{}} -![set-basic-info](/images/docs/project-user-guide/configurations/configmaps/set-basic-info.jpg) +3. On the **ConfigMap Settings** tab, configure values by clicking **Add Data**. -### Step 3: Input configuration values +4. Enter a key-value pair. For example: -1. Under the tab **ConfigMap Settings**, configure values by clicking **Add Data**. - - ![add-data](/images/docs/project-user-guide/configurations/configmaps/add-data.jpg) - -2. Input a key-value pair. For example: - - ![key-value](/images/docs/project-user-guide/configurations/configmaps/key-value.jpg) + ![key-value](/images/docs/project-user-guide/configurations/configmaps/key-value.png) {{< notice note >}} - - key-value pairs displays under the field `data` in the manifest. +- key-value pairs displays under the field `data` in the manifest. - - On the KubeSphere dashboard, you can only add key-value pairs for a ConfigMap currently. In future releases, you will be able to add a path to a directory containing configuration files to create ConfigMaps directly on the dashboard. +- On the KubeSphere dashboard, you can only add key-value pairs for a ConfigMap currently. In future releases, you will be able to add a path to a directory containing configuration files to create ConfigMaps directly on the dashboard. - {{}} +{{}} -3. Click **√** in the bottom right corner to save it and click **Add Data** again if you want to add more key-value pairs. +5. Click **√** in the bottom-right corner to save it and click **Add Data** again if you want to add more key-value pairs. - ![finish-creating](/images/docs/project-user-guide/configurations/configmaps/finish-creating.jpg) +6. Click **Create** to generate the ConfigMap. -4. When you finish, click **Create** to generate the ConfigMap. +## View ConfigMap Details -## Check ConfigMap Details - -1. After a ConfigMap is created, it displays in the list as below. You can click the three dots on the right and select the operation from the menu to modify it. - - ![configmap-list](/images/docs/project-user-guide/configurations/configmaps/configmap-list.jpg) +1. After a ConfigMap is created, it displays on the **ConfigMaps** page. You can click on the right and select the operation below from the drop-down list. - **Edit**: View and edit the basic information. - **Edit YAML**: View, upload, download, or update the YAML file. - **Modify Config**: Modify the key-value pair of the ConfigMap. - **Delete**: Delete the ConfigMap. + +2. Click the name of the ConfigMap to go to its detail page. Under the tab **Detail**, you can see all the key-value pairs you have added for the ConfigMap. -2. Click the name of the ConfigMap and you can go to its detail page. Under the tab **Detail**, you can see all the key-value pairs you have added for the ConfigMap. - - ![detail-page](/images/docs/project-user-guide/configurations/configmaps/detail-page.jpg) + ![detail-page](/images/docs/project-user-guide/configurations/configmaps/detail-page.png) 3. Click **More** to display what operations about this ConfigMap you can do. - ![configmap-dropdown-menu](/images/docs/project-user-guide/configurations/configmaps/configmap-dropdown-menu.jpg) - - **Edit YAML**: View, upload, download, or update the YAML file. - **Modify Config**: Modify the key-value pair of the ConfigMap. - **Delete**: Delete the ConfigMap, and return to the list page. -4. Click the **Edit Info** to view and edit the basic information. +4. Click **Edit Information** to view and edit the basic information. - ![edit-configmap-info](/images/docs/project-user-guide/configurations/configmaps/edit-configmap-info.jpg) - ## Use a ConfigMap diff --git a/content/en/docs/project-user-guide/configuration/image-registry.md b/content/en/docs/project-user-guide/configuration/image-registry.md index a9bfd820c..de11817c0 100644 --- a/content/en/docs/project-user-guide/configuration/image-registry.md +++ b/content/en/docs/project-user-guide/configuration/image-registry.md @@ -24,13 +24,13 @@ Log in to the web console of KubeSphere as `project-regular`. Go to **Configurat ![open-dashboard](/images/docs/project-user-guide/configurations/image-registries/open-dashboard.jpg) -### Step 2: Input basic information +### Step 2: Enter basic information -Specify a name for the Secret (e.g. `demo-registry-secret`) and click **Next** to continue. +Specify a name for the Secret (for example, `demo-registry-secret`) and click **Next** to continue. {{< notice tip >}} -You can see the Secret's manifest file in YAML format by enabling **Edit Mode** in the top right corner. KubeSphere allows you to edit the manifest file directly to create a Secret. Alternatively, you can follow the steps below to create a Secret via the dashboard. +You can see the Secret's manifest file in YAML format by enabling **Edit Mode** in the top-right corner. KubeSphere allows you to edit the manifest file directly to create a Secret. Alternatively, you can follow the steps below to create a Secret via the dashboard. {{}} @@ -49,7 +49,7 @@ Select **Image Registry Secret** for **Type**. To use images from your private r #### Add the Docker Hub registry -1. Before you add your image registry in [Docker Hub](https://hub.docker.com/), make sure you have an available Docker Hub account. On the **Secret Settings** page, input `docker.io` for **Registry Address** and enter your Docker ID and password for **User Name** and **Password**. Click **Validate** to check whether the address is available. +1. Before you add your image registry in [Docker Hub](https://hub.docker.com/), make sure you have an available Docker Hub account. On the **Secret Settings** page, enter `docker.io` for **Registry Address** and enter your Docker ID and password for **User Name** and **Password**. Click **Validate** to check whether the address is available. ![validate-registry-address](/images/docs/project-user-guide/configurations/image-registries/validate-registry-address.jpg) @@ -89,7 +89,7 @@ Select **Image Registry Secret** for **Type**. To use images from your private r sudo systemctl restart docker ``` -3. Go back to the **Secret Settings** page and select **Image Registry Secret** for **Type**. Input your Harbor IP address for **Registry Address** and enter the username and password. +3. Go back to the **Secret Settings** page and select **Image Registry Secret** for **Type**. Enter your Harbor IP address for **Registry Address** and enter the username and password. ![harbor-address](/images/docs/project-user-guide/configurations/image-registries/harbor-address.jpg) diff --git a/content/en/docs/project-user-guide/configuration/secrets.md b/content/en/docs/project-user-guide/configuration/secrets.md index ba3d75477..2dcaad852 100644 --- a/content/en/docs/project-user-guide/configuration/secrets.md +++ b/content/en/docs/project-user-guide/configuration/secrets.md @@ -26,13 +26,13 @@ Log in to the console as `project-regular`. Go to **Configurations** of a projec ![create-secrets](/images/docs/project-user-guide/configurations/secrets/create-secrets.jpg) -### Step 2: Input basic information +### Step 2: Enter basic information -Specify a name for the Secret (e.g. `demo-secret`) and click **Next** to continue. +Specify a name for the Secret (for example, `demo-secret`) and click **Next** to continue. {{< notice tip >}} -You can see the Secret's manifest file in YAML format by enabling **Edit Mode** in the top right corner. KubeSphere allows you to edit the manifest file directly to create a Secret. Alternatively, you can follow the steps below to create a Secret via the dashboard. +You can see the Secret's manifest file in YAML format by enabling **Edit Mode** in the top-right corner. KubeSphere allows you to edit the manifest file directly to create a Secret. Alternatively, you can follow the steps below to create a Secret via the dashboard. {{}} @@ -46,7 +46,7 @@ You can see the Secret's manifest file in YAML format by enabling **Edit Mode** {{< notice note >}} - For all Secret types, values for all keys under the field `data` in the manifest must be base64-encoded strings. After you specify values on the KubeSphere dashboard, KubeSphere converts them into corresponding base64 character values in the YAML file. For example, if you input `password` and `hello123` for **Key** and **Value** respectively on the **Edit Data** page when you create the default type of Secret, the actual value displaying in the YAML file is `aGVsbG8xMjM=` (i.e. `hello123` in base64 format), automatically created by KubeSphere. + For all Secret types, values for all keys under the field `data` in the manifest must be base64-encoded strings. After you specify values on the KubeSphere dashboard, KubeSphere converts them into corresponding base64 character values in the YAML file. For example, if you enter `password` and `hello123` for **Key** and **Value** respectively on the **Edit Data** page when you create the default type of Secret, the actual value displaying in the YAML file is `aGVsbG8xMjM=` (i.e. `hello123` in base64 format), automatically created by KubeSphere. {{}} @@ -66,17 +66,17 @@ You can see the Secret's manifest file in YAML format by enabling **Edit Mode** ![account-password-secret](/images/docs/project-user-guide/configurations/secrets/account-password-secret.jpg) - - **Custom**. You can input [any type of Secrets supported by Kubernetes](https://kubernetes.io/docs/concepts/configuration/secret/#secret-types) in the box. Click **Add Data** to add key-value pairs for it. + - **Custom**. You can enter [any type of Secrets supported by Kubernetes](https://kubernetes.io/docs/concepts/configuration/secret/#secret-types) in the box. Click **Add Data** to add key-value pairs for it. ![custom-secret](/images/docs/project-user-guide/configurations/secrets/custom-secret.jpg) -2. For this tutorial, select the default type of Secret. Click **Add Data** and input the **Key** (`MYSQL_ROOT_PASSWORD`) and **Value** (`123456`) as below to specify a Secret for MySQL. +2. For this tutorial, select the default type of Secret. Click **Add Data** and enter the **Key** (`MYSQL_ROOT_PASSWORD`) and **Value** (`123456`) as below to specify a Secret for MySQL. ![add-data](/images/docs/project-user-guide/configurations/secrets/add-data.jpg) ![input-key](/images/docs/project-user-guide/configurations/secrets/input-key.jpg) -3. Click **√** in the bottom right corner to confirm. You can continue to add key-value pairs to the Secret or click **Create** to finish the creation. For more information about how to use the Secret, see [Compose and Deploy WordPress](../../../quick-start/wordpress-deployment/#task-3-create-an-application). +3. Click **√** in the bottom-right corner to confirm. You can continue to add key-value pairs to the Secret or click **Create** to finish the creation. For more information about how to use the Secret, see [Compose and Deploy WordPress](../../../quick-start/wordpress-deployment/#task-3-create-an-application). ## Check Secret Details diff --git a/content/en/docs/project-user-guide/custom-application-monitoring/examples/monitor-mysql.md b/content/en/docs/project-user-guide/custom-application-monitoring/examples/monitor-mysql.md index 50bb4afce..d397576fc 100644 --- a/content/en/docs/project-user-guide/custom-application-monitoring/examples/monitor-mysql.md +++ b/content/en/docs/project-user-guide/custom-application-monitoring/examples/monitor-mysql.md @@ -20,7 +20,7 @@ This tutorial walks you through an example of how to monitor MySQL metrics and v To begin with, you [deploy MySQL from the App Store](../../../../application-store/built-in-apps/mysql-app/) and set the root password to `testing`. -1. Go to the project `demo` and click **App Store** in the top left corner. +1. Go to the project `demo` and click **App Store** in the top-left corner. ![go-to-app-store](/images/docs/project-user-guide/custom-application-monitoring/go-to-app-store.jpg) @@ -61,7 +61,7 @@ You need to deploy MySQL exporter in `demo` on the same cluster. MySQL exporter ![set-servicemonitor-to-true](/images/docs/project-user-guide/custom-application-monitoring/set-servicemonitor-to-true.jpg) {{< notice warning >}} -Don't forget to enable the ServiceMonitor CRD if you are using external exporter Helm charts. Those charts usually disable ServiceMonitor by default and require manual modification. +Don't forget to enable the ServiceMonitor CRD if you are using external exporter Helm charts. Those charts usually disable ServiceMonitors by default and require manual modification. {{}} 4. Modify MySQL connection parameters. MySQL exporter needs to connect to the target MySQL. In this tutorial, MySQL is installed with the service name `mysql-a8xgvx`. Set `mysql.host` to `mysql-a8xgvx`, `mysql.pass` to `testing`, and `user` to `root` as below. Note that your MySQL service may be created with **a different name**. @@ -86,7 +86,7 @@ After about two minutes, you can create a monitoring dashboard for MySQL and vis ![create-mysql-dashboard](/images/docs/project-user-guide/custom-application-monitoring/create-mysql-dashboard.jpg) -3. Save the template by clicking **Save Template** in the top right corner. A newly-created dashboard displays in the dashboard list as below. +3. Save the template by clicking **Save Template** in the top-right corner. A newly-created dashboard displays in the dashboard list as below. ![save-mysql-template](/images/docs/project-user-guide/custom-application-monitoring/save-mysql-template.jpg) diff --git a/content/en/docs/project-user-guide/custom-application-monitoring/examples/monitor-sample-web.md b/content/en/docs/project-user-guide/custom-application-monitoring/examples/monitor-sample-web.md index 1a49949d0..aac17352b 100644 --- a/content/en/docs/project-user-guide/custom-application-monitoring/examples/monitor-sample-web.md +++ b/content/en/docs/project-user-guide/custom-application-monitoring/examples/monitor-sample-web.md @@ -11,7 +11,7 @@ This section walks you through monitoring a sample web application. The applicat ## Prerequisites - Please make sure you [enable the OpenPitrix system](../../../../pluggable-components/app-store/). -- You need to create a workspace, a project, and a user account for this tutorial. For more information, see [Create Workspaces, Projects, Accounts and Roles](../../../../quick-start/create-workspace-and-project/). The account needs to be a platform regular user and to be invited to the workspace with the `self-provisioner` role. Namely, create an account `workspace-self-provisioner` of the `self-provisioner` role, and use this account to create a project (e.g. `test`). In this tutorial, you log in as `workspace-self-provisioner` and work in the project `test` in the workspace `demo-workspace`. +- You need to create a workspace, a project, and a user account for this tutorial. For more information, see [Create Workspaces, Projects, Accounts and Roles](../../../../quick-start/create-workspace-and-project/). The account needs to be a platform regular user and to be invited to the workspace with the `self-provisioner` role. Namely, create an account `workspace-self-provisioner` of the `self-provisioner` role, and use this account to create a project (for example, `test`). In this tutorial, you log in as `workspace-self-provisioner` and work in the project `test` in the workspace `demo-workspace`. - Knowledge of Helm charts and [PromQL](https://prometheus.io/docs/prometheus/latest/querying/examples/). @@ -27,7 +27,7 @@ In this tutorial, you use the made-ready image `kubespheredev/promethues-example ### Step 2: Pack the application into a Helm chart -Pack the Deployment, Service, and ServiceMonitor YAML template into a Helm chart for reuse. In the Deployment and Service template, you define the sample web container and the port for the metrics endpoint. ServiceMonitor is a custom resource defined and used by Prometheus Operator. It connects your application and KubeSphere monitoring engine (Prometheus) so that the engine knows where and how to scrape metrics. In future releases, KubeSphere will provide a graphical user interface for easy operation. +Pack the Deployment, Service, and ServiceMonitor YAML template into a Helm chart for reuse. In the Deployment and Service template, you define the sample web container and the port for the metrics endpoint. A ServiceMonitor is a custom resource defined and used by Prometheus Operator. It connects your application and KubeSphere monitoring engine (Prometheus) so that the engine knows where and how to scrape metrics. In future releases, KubeSphere will provide a graphical user interface for easy operation. Find the source code in the folder `helm` in [kubesphere/prometheus-example-app](https://github.com/kubesphere/prometheus-example-app). The Helm chart package is made ready and is named `prometheus-example-app-0.1.0.tgz`. Please download the .tgz file and you will use it in the next step. @@ -87,11 +87,11 @@ This section guides you on how to create a dashboard from scratch. You will crea ![create-dashboard-2](/images/docs/project-user-guide/custom-application-monitoring/create-dashboard-2.jpg) -2. Set a name (e.g. `sample-web`) and click **Create**. +2. Set a name (for example, `sample-web`) and click **Create**. ![create-dashboard-3](/images/docs/project-user-guide/custom-application-monitoring/create-dashboard-3.jpg) -3. Enter a title in the top left corner (e.g. `Sample Web Overview`). +3. Enter a title in the top-left corner (for example, `Sample Web Overview`). ![create-dashboard-4](/images/docs/project-user-guide/custom-application-monitoring/create-dashboard-4.jpg) @@ -99,7 +99,7 @@ This section guides you on how to create a dashboard from scratch. You will crea ![create-dashboard-5](/images/docs/project-user-guide/custom-application-monitoring/create-dashboard-5.jpg) -5. Type the PromQL expression `myapp_processed_ops_total` in the field **Monitoring Metrics** and give a chart name (e.g. `Operation Count`). Click **√** in the bottom right corner to continue. +5. Type the PromQL expression `myapp_processed_ops_total` in the field **Monitoring Metrics** and give a chart name (for example, `Operation Count`). Click **√** in the bottom-right corner to continue. ![create-dashboard-6](/images/docs/project-user-guide/custom-application-monitoring/create-dashboard-6.jpg) diff --git a/content/en/docs/project-user-guide/custom-application-monitoring/introduction.md b/content/en/docs/project-user-guide/custom-application-monitoring/introduction.md index 8dd20f9ac..1d305c8b0 100644 --- a/content/en/docs/project-user-guide/custom-application-monitoring/introduction.md +++ b/content/en/docs/project-user-guide/custom-application-monitoring/introduction.md @@ -40,11 +40,11 @@ Writing an exporter is nothing short of instrumenting an application with Promet In the previous step, you expose metric endpoints in a Kubernetes Service object. Next, you need to inform the KubeSphere monitoring engine of your new changes. -The ServiceMonitor CRD is defined by [Prometheus Operator](https://github.com/prometheus-operator/prometheus-operator). ServiceMonitor contains information about the metrics endpoints. With ServiceMonitor objects, the KubeSphere monitoring engine knows where and how to scape metrics. For each monitoring target, you apply a ServiceMonitor object to hook your application (or exporters) up to KubeSphere. +The ServiceMonitor CRD is defined by [Prometheus Operator](https://github.com/prometheus-operator/prometheus-operator). A ServiceMonitor contains information about the metrics endpoints. With ServiceMonitor objects, the KubeSphere monitoring engine knows where and how to scape metrics. For each monitoring target, you apply a ServiceMonitor object to hook your application (or exporters) up to KubeSphere. -In KubeSphere v3.0.0, you need to pack ServiceMonitor with your applications (or exporters) into a Helm chart for reuse. In future releases, KubeSphere will provide graphical interfaces for easy operation. +In KubeSphere v3.0.0, you need to pack a ServiceMonitor with your applications (or exporters) into a Helm chart for reuse. In future releases, KubeSphere will provide graphical interfaces for easy operation. -Please read [Monitor a Sample Web Application](../examples/monitor-sample-web/) to learn how to pack ServiceMonitor with your application. +Please read [Monitor a Sample Web Application](../examples/monitor-sample-web/) to learn how to pack a ServiceMonitor with your application. ### Step 3: Visualize Metrics diff --git a/content/en/docs/project-user-guide/custom-application-monitoring/visualization/overview.md b/content/en/docs/project-user-guide/custom-application-monitoring/visualization/overview.md index cbcb7780f..1103641ee 100644 --- a/content/en/docs/project-user-guide/custom-application-monitoring/visualization/overview.md +++ b/content/en/docs/project-user-guide/custom-application-monitoring/visualization/overview.md @@ -28,7 +28,7 @@ To start with a blank template, click **Create**. ### From a YAML file -Toggle to **Edit Mode** in the top right corner then paste your dashboard YAML file. +Toggle to **Edit Mode** in the top-right corner then paste your dashboard YAML file. ![new-dashboard-2](/images/docs/project-user-guide/custom-application-monitoring/new-dashboard-2.jpg) @@ -62,11 +62,11 @@ You can view chart details in the right-most column. It shows the **max**, **min ## Edit the monitoring dashboard -You can modify an existing template by clicking **Edit Template** in the top right corner. +You can modify an existing template by clicking **Edit Template** in the top-right corner. ### Add a chart -To add text charts, click the **add icon** in the left column. To add charts in the middle column, click **Add Monitoring Item** in the bottom right corner. +To add text charts, click the **add icon** in the left column. To add charts in the middle column, click **Add Monitoring Item** in the bottom-right corner. ![edit-dashboard](/images/docs/project-user-guide/custom-application-monitoring/edit-dashboard.jpg) diff --git a/content/en/docs/project-user-guide/custom-application-monitoring/visualization/panel.md b/content/en/docs/project-user-guide/custom-application-monitoring/visualization/panel.md index bf8293104..fb874dfed 100644 --- a/content/en/docs/project-user-guide/custom-application-monitoring/visualization/panel.md +++ b/content/en/docs/project-user-guide/custom-application-monitoring/visualization/panel.md @@ -10,7 +10,7 @@ KubeSphere currently supports two kinds of charts: text charts and graphs. ## Text Chart -A text chart is preferable for displaying a single metric value. The editing window for the text chart is composed of two parts. The upper part displays the real-time metric value, and the lower part is for editing. You can input a PromQL expression to fetch a single metric value. +A text chart is preferable for displaying a single metric value. The editing window for the text chart is composed of two parts. The upper part displays the real-time metric value, and the lower part is for editing. You can enter a PromQL expression to fetch a single metric value. - **Chart Name**: The name of the text chart. - **Unit**: The metric data unit. diff --git a/content/en/docs/project-user-guide/custom-application-monitoring/visualization/querying.md b/content/en/docs/project-user-guide/custom-application-monitoring/visualization/querying.md index 3d40058be..05c3f153d 100644 --- a/content/en/docs/project-user-guide/custom-application-monitoring/visualization/querying.md +++ b/content/en/docs/project-user-guide/custom-application-monitoring/visualization/querying.md @@ -6,7 +6,7 @@ linkTitle: "Querying" weight: 10817 --- -In the query editor, you can input PromQL expressions to process and fetch metrics. To learn how to write PromQL, read [Query Examples](https://prometheus.io/docs/prometheus/latest/querying/examples/). +In the query editor, you can enter PromQL expressions to process and fetch metrics. To learn how to write PromQL, read [Query Examples](https://prometheus.io/docs/prometheus/latest/querying/examples/). ![query-editor-1](/images/docs/project-user-guide/custom-application-monitoring/query-editor-1.jpg) diff --git a/content/en/docs/project-user-guide/grayscale-release/blue-green-deployment.md b/content/en/docs/project-user-guide/grayscale-release/blue-green-deployment.md index 695d26871..611529fe0 100644 --- a/content/en/docs/project-user-guide/grayscale-release/blue-green-deployment.md +++ b/content/en/docs/project-user-guide/grayscale-release/blue-green-deployment.md @@ -20,19 +20,13 @@ The blue-green release provides a zero downtime deployment, which means the new ## Create a Blue-green Deployment Job -1. Log in to KubeSphere as `project-regular`. Under **Categories**, click **Create Job** on the right of **Blue-green Deployment**. - - ![blue-green-1](/images/docs/project-user-guide/grayscale-release/blue-green-deployment/blue-green-1.jpg) +1. Log in to KubeSphere as `project-regular` and navigate to **Grayscale Release**. Under **Categories**, click **Create Job** on the right of **Blue-green Deployment**. 2. Set a name for it and click **Next**. - ![blue-green-2](/images/docs/project-user-guide/grayscale-release/blue-green-deployment/blue-green-2.jpg) +3. On the **Grayscale Release Components** tab, select your app from the drop-down list and the Service for which you want to implement the blue-green deployment. If you also use the sample app Bookinfo, select **reviews** and click **Next**. -3. Select your app from the drop-down list and the service for which you want to implement the blue-green deployment. If you also use the sample app Bookinfo, select **reviews** and click **Next**. - - ![blue-green-3](/images/docs/project-user-guide/grayscale-release/blue-green-deployment/blue-green-3.jpg) - -4. On the **Grayscale Release Version** page, add another version of it (e.g `v2`) as shown in the image below and click **Next**: +4. On the **Grayscale Release Version** tab, add another version (e.g `v2`) as shown in the image below and click **Next**: ![blue-green-4](/images/docs/project-user-guide/grayscale-release/blue-green-deployment/blue-green-4.jpg) @@ -42,9 +36,7 @@ The blue-green release provides a zero downtime deployment, which means the new {{}} -5. To allow the app version `v2` to take over all the traffic, select **Take over all traffic** and click **Create**. - - ![blue-green-5](/images/docs/project-user-guide/grayscale-release/blue-green-deployment/blue-green-5.jpg) +5. On the **Policy Config** tab, to allow the app version `v2` to take over all the traffic, select **Take over all traffic** and click **Create**. 6. The blue-green deployment job created displays under the tab **Job Status**. Click it to view details. diff --git a/content/en/docs/project-user-guide/grayscale-release/canary-release.md b/content/en/docs/project-user-guide/grayscale-release/canary-release.md index 46957a0cb..b2dce01d4 100644 --- a/content/en/docs/project-user-guide/grayscale-release/canary-release.md +++ b/content/en/docs/project-user-guide/grayscale-release/canary-release.md @@ -21,17 +21,11 @@ This method serves as an efficient way to test performance and reliability of a ## Step 1: Create a Canary Release Job -1. Log in to KubeSphere as `project-regular`. Under **Categories**, click **Create Job** on the right of **Canary Release**. - - ![create-canary-release](/images/docs/project-user-guide/grayscale-release/canary-release/create-canary-release.jpg) +1. Log in to KubeSphere as `project-regular` and navigate to **Grayscale Release**. Under **Categories**, click **Create Job** on the right of **Canary Release**. 2. Set a name for it and click **Next**. - ![set-task-name](/images/docs/project-user-guide/grayscale-release/canary-release/set-task-name.jpg) - -3. Select your app from the drop-down list and the Service for which you want to implement the canary release. If you also use the sample app Bookinfo, select **reviews** and click **Next**. - - ![cabary-release-3](/images/docs/project-user-guide/grayscale-release/canary-release/cabary-release-3.jpg) +3. On the **Grayscale Release Components** tab, select your app from the drop-down list and the Service for which you want to implement the canary release. If you also use the sample app Bookinfo, select **reviews** and click **Next**. 4. On the **Grayscale Release Version** tab, add another version of it (e.g `kubesphere/examples-bookinfo-reviews-v2:1.13.0`; change `v1` to `v2`) as shown in the image below and click **Next**: @@ -43,7 +37,7 @@ This method serves as an efficient way to test performance and reliability of a {{}} -5. You send traffic to these two versions (`v1` and `v2`) either by a specific percentage or by the request content such as `Http Header`, `Cookie` and `URI`. Select **Forward by traffic ratio** and drag the icon in the middle to change the percentage of traffic sent to these two versions respectively (e.g. set 50% for either one). When you finish, click **Create**. +5. You send traffic to these two versions (`v1` and `v2`) either by a specific percentage or by the request content such as `Http Header`, `Cookie` and `URI`. Select **Forward by traffic ratio** and drag the icon in the middle to change the percentage of traffic sent to these two versions respectively (for example, set 50% for either one). When you finish, click **Create**. ![canary-release-5](/images/docs/project-user-guide/grayscale-release/canary-release/canary-release-5.gif) @@ -120,7 +114,7 @@ Now that you have two available app versions, access the app to verify the canar ![traffic-management](/images/docs/project-user-guide/grayscale-release/canary-release/traffic-management.png) -3. Click a component (e.g. **reviews**) and you can see the information of traffic monitoring on the right, displaying real-time data of **Traffic**, **Success rate** and **Duration**. +3. Click a component (for example, **reviews**) and you can see the information of traffic monitoring on the right, displaying real-time data of **Traffic**, **Success rate** and **Duration**. ![topology](/images/docs/project-user-guide/grayscale-release/canary-release/topology.png) diff --git a/content/en/docs/project-user-guide/grayscale-release/traffic-mirroring.md b/content/en/docs/project-user-guide/grayscale-release/traffic-mirroring.md index 85e86462e..9da3c73f5 100644 --- a/content/en/docs/project-user-guide/grayscale-release/traffic-mirroring.md +++ b/content/en/docs/project-user-guide/grayscale-release/traffic-mirroring.md @@ -16,19 +16,13 @@ Traffic mirroring, also called shadowing, is a powerful, risk-free method of tes ## Create a Traffic Mirroring Job -1. Log in to KubeSphere as `project-regular`. Under **Categories**, click **Create Job** on the right of **Traffic Mirroring**. - - ![traffic-mirroring-1](/images/docs/project-user-guide/grayscale-release/traffic-mirroring/traffic-mirroring-1.jpg) +1. Log in to KubeSphere as `project-regular` and navigate to **Grayscale Release**. Under **Categories**, click **Create Job** on the right of **Traffic Mirroring**. 2. Set a name for it and click **Next**. - ![traffic-mirroring-2](/images/docs/project-user-guide/grayscale-release/traffic-mirroring/traffic-mirroring-2.jpg) +3. On the **Grayscale Release Components** tab, select your app from the drop-down list and the Service of which you want to mirror the traffic. If you also use the sample app Bookinfo, select **reviews** and click **Next**. -3. Select your app from the drop-down list and the service of which you want to mirror the traffic. If you also use the sample app Bookinfo, select **reviews** and click **Next**. - - ![traffic-mirroring-3](/images/docs/project-user-guide/grayscale-release/traffic-mirroring/traffic-mirroring-3.jpg) - -4. On the **Grayscale Release Version** page, add another version of it (e.g. `v2`) as shown in the image below and click **Next**: +4. On the **Grayscale Release Version** tab, add another version of it (for example, `v2`) as shown in the image below and click **Next**: ![traffic-mirroring-4](/images/docs/project-user-guide/grayscale-release/traffic-mirroring/traffic-mirroring-4.jpg) @@ -38,9 +32,7 @@ Traffic mirroring, also called shadowing, is a powerful, risk-free method of tes {{}} -5. Click **Create** in the final step. - - ![traffic-mirroring-5](/images/docs/project-user-guide/grayscale-release/traffic-mirroring/traffic-mirroring-5.jpg) +5. On the **Policy Config** tab, click **Create**. 6. The traffic mirroring job created displays under the tab **Job Status**. Click it to view details. diff --git a/content/en/docs/project-user-guide/image-builder/binary-to-image.md b/content/en/docs/project-user-guide/image-builder/binary-to-image.md index 3942e9c5a..05e8fddcc 100644 --- a/content/en/docs/project-user-guide/image-builder/binary-to-image.md +++ b/content/en/docs/project-user-guide/image-builder/binary-to-image.md @@ -63,7 +63,7 @@ You must create a Docker Hub Secret so that the Docker image created through B2I **Target image repository**: Select the Docker Hub Secret as the image is pushed to Docker Hub. -4. On the **Container Settings** page, scroll down to **Service Settings** to set the access policy for the container. Select **HTTP** for **Protocol**, customize the name (for example, `http-port`), and input `8080` for both **Container Port** and **Service Port**. Click **Next** to continue. +4. On the **Container Settings** page, scroll down to **Service Settings** to set the access policy for the container. Select **HTTP** for **Protocol**, customize the name (for example, `http-port`), and enter `8080` for both **Container Port** and **Service Port**. Click **Next** to continue. ![container-settings](/images/docs/project-user-guide/image-builder/b2i-publish-artifact-to-kubernetes/container-settings.jpg) diff --git a/content/en/docs/project-user-guide/image-builder/s2i-and-b2i-webhooks.md b/content/en/docs/project-user-guide/image-builder/s2i-and-b2i-webhooks.md index c1bcce012..d161a3b94 100644 --- a/content/en/docs/project-user-guide/image-builder/s2i-and-b2i-webhooks.md +++ b/content/en/docs/project-user-guide/image-builder/s2i-and-b2i-webhooks.md @@ -20,7 +20,7 @@ This tutorial demonstrates how to configure S2I and B2I webhooks. ### Step 1: Expose the S2I trigger Service -1. Log in to the KubeSphere web console as `admin`. Click **Platform** in the top left corner and then select **Cluster Management**. +1. Log in to the KubeSphere web console as `admin`. Click **Platform** in the top-left corner and then select **Cluster Management**. 2. In **Services** under **Application Workloads**, select **kubesphere-devops-system** from the drop-down list and click **s2ioperator-trigger-service** to go to its detail page. diff --git a/content/en/docs/project-user-guide/image-builder/source-to-image.md b/content/en/docs/project-user-guide/image-builder/source-to-image.md index 7400885b7..20fd9f861 100644 --- a/content/en/docs/project-user-guide/image-builder/source-to-image.md +++ b/content/en/docs/project-user-guide/image-builder/source-to-image.md @@ -77,7 +77,7 @@ You do not need to create the GitHub Secret if your forked repository is open to **Advanced Settings**: You can define the code relative path. Use the default `/` for this field. -4. On the **Container Settings** page, scroll down to **Service Settings** to set the access policy for the container. Select **HTTP** for **Protocol**, customize the name (for example, `http-1`), and input `8080` for both **Container Port** and **Service Port**. +4. On the **Container Settings** page, scroll down to **Service Settings** to set the access policy for the container. Select **HTTP** for **Protocol**, customize the name (for example, `http-1`), and enter `8080` for both **Container Port** and **Service Port**. ![service-settings](/images/docs/project-user-guide/image-builder/s2i-publish-app-without-dockerfile/service-settings.jpg) @@ -85,7 +85,7 @@ You do not need to create the GitHub Secret if your forked repository is open to ![health-checker](/images/docs/project-user-guide/image-builder/s2i-publish-app-without-dockerfile/health-checker.jpg) - **HTTP Request**: Select **HTTP** as the protocol, enter `/` as the path (root path in this tutorial), and input `8080` as the port exposed. + **HTTP Request**: Select **HTTP** as the protocol, enter `/` as the path (root path in this tutorial), and enter `8080` as the port exposed. **Initial Delays**: The number of seconds after the container has started before the liveness probe is initiated. Enter `30` for this field. diff --git a/content/en/docs/project-user-guide/storage/volumes.md b/content/en/docs/project-user-guide/storage/volumes.md index 9c77782f6..ce1b280c9 100644 --- a/content/en/docs/project-user-guide/storage/volumes.md +++ b/content/en/docs/project-user-guide/storage/volumes.md @@ -26,11 +26,11 @@ All the volumes that are created on the **Volumes** page are PersistentVolumeCla 2. To create a volume, click **Create** on the **Volumes** page. -3. In the dialog that appears, set a name (e.g. `demo-volume`) for the volume and click **Next**. +3. In the dialog that appears, set a name (for example, `demo-volume`) for the volume and click **Next**. {{< notice note >}} - You can see the volume's manifest file in YAML format by enabling **Edit Mode** in the top right corner. KubeSphere allows you to edit the manifest file directly to create a volume. Alternatively, you can follow the steps below to create a volume via the dashboard. + You can see the volume's manifest file in YAML format by enabling **Edit Mode** in the top-right corner. KubeSphere allows you to edit the manifest file directly to create a volume. Alternatively, you can follow the steps below to create a volume via the dashboard. {{}} diff --git a/content/en/docs/quick-start/all-in-one-on-linux.md b/content/en/docs/quick-start/all-in-one-on-linux.md index 3daa7b77b..009fbddf2 100644 --- a/content/en/docs/quick-start/all-in-one-on-linux.md +++ b/content/en/docs/quick-start/all-in-one-on-linux.md @@ -1,5 +1,5 @@ --- -title: "All-in-One Installation on Linux" +title: "All-in-one Installation of Kubernetes and KubeSphere on Linux" keywords: 'KubeSphere, Kubernetes, All-in-one, Installation' description: 'Install KubeSphere on Linux with a minimal installation package. The tutorial serves as a basic kick-starter for you to understand the container platform, paving the way for learning the following guides.' linkTitle: "All-in-One Installation on Linux" @@ -159,15 +159,15 @@ To create a Kubernetes cluster with KubeSphere installed, refer to the following {{}} -After you execute the command, you will see a table for environment check. For details, read [Node requirements](#node-requirements) and [Dependency requirements](#dependency-requirements) above. Input `yes` to continue. +After you execute the command, you will see a table for environment check. For details, read [Node requirements](#node-requirements) and [Dependency requirements](#dependency-requirements) above. Type `yes` to continue. ## Step 4: Verify the Installation -When you see the output as below, it means the installation finishes. +When you see the output as below, it means the installation of Kubernetes and KubeSphere finishes. ![Installation-complete](/images/docs/quickstart/all-in-one-installation/Installation-complete.png) -Input the following command to check the result. +Run the following command to check the result. ```bash kubectl logs -n kubesphere-system $(kubectl get pod -n kubesphere-system -l app=ks-install -o jsonpath='{.items[0].metadata.name}') -f diff --git a/content/en/docs/quick-start/create-workspace-and-project.md b/content/en/docs/quick-start/create-workspace-and-project.md index dd718d57c..0aa289b96 100644 --- a/content/en/docs/quick-start/create-workspace-and-project.md +++ b/content/en/docs/quick-start/create-workspace-and-project.md @@ -33,7 +33,7 @@ After KubeSphere is installed, you need to add different users with varied roles 1. Log in to the web console as `admin` with the default account and password (`admin/P@88w0rd`). {{< notice tip >}} - For account security, it is highly recommended that you change your password the first time you log in to the console. To change your password, select **User Settings** in the drop-down menu in the top right corner. In **Password Setting**, set a new password. You also can change the console language in **User Settings**. + For account security, it is highly recommended that you change your password the first time you log in to the console. To change your password, select **User Settings** in the drop-down menu in the top-right corner. In **Password Setting**, set a new password. You also can change the console language in **User Settings**. {{}} ![chang-password1](/images/docs/quickstart/create-workspaces-projects-accounts/chang-password1.png) @@ -126,7 +126,7 @@ In this step, you create a project using the account `project-admin` created in ![kubesphere-projects](/images/docs/quickstart/create-workspaces-projects-accounts/kubesphere-projects.png) -2. Enter the project name (e.g. `demo-project`) and click **OK** to finish. You can also add an alias and description for the project. +2. Enter the project name (for example, `demo-project`) and click **OK** to finish. You can also add an alias and description for the project. ![demo-project](/images/docs/quickstart/create-workspaces-projects-accounts/demo-project.png) @@ -134,7 +134,7 @@ In this step, you create a project using the account `project-admin` created in ![click-demo-project](/images/docs/quickstart/create-workspaces-projects-accounts/click-demo-project.png) -4. On the **Overview** page of the project, the project quota remains unset by default. You can click **Set** and specify [resource requests and limits](../../workspace-administration/project-quotas/) as needed (e.g. 1 core for CPU and 1000Gi for memory). +4. On the **Overview** page of the project, the project quota remains unset by default. You can click **Set** and specify [resource requests and limits](../../workspace-administration/project-quotas/) as needed (for example, 1 core for CPU and 1000Gi for memory). ![quota1](/images/docs/quickstart/create-workspaces-projects-accounts/quota1.png) @@ -214,7 +214,7 @@ To create a DevOps project, you must install the KubeSphere DevOps system in adv ![devops](/images/docs/quickstart/create-workspaces-projects-accounts/devops.png) -2. Enter the DevOps project name (e.g. `demo-devops`) and click **OK**. You can also add an alias and description for the project. +2. Enter the DevOps project name (for example, `demo-devops`) and click **OK**. You can also add an alias and description for the project. ![devops-project](/images/docs/quickstart/create-workspaces-projects-accounts/devops-project.png) diff --git a/content/en/docs/quick-start/deploy-bookinfo-to-k8s.md b/content/en/docs/quick-start/deploy-bookinfo-to-k8s.md index 0810ace98..eaba71e99 100644 --- a/content/en/docs/quick-start/deploy-bookinfo-to-k8s.md +++ b/content/en/docs/quick-start/deploy-bookinfo-to-k8s.md @@ -23,7 +23,7 @@ To provide consistent user experiences of managing microservices, KubeSphere int Log in to the console as `project-admin` and go to your project. Navigate to **Advanced Settings** under **Project Settings**, click **Edit**, and select **Edit Gateway**. In the dialog that appears, flip on the toggle switch next to **Application Governance**. {{< notice note >}} -You need to enable **Application Governance** so that you can use the Tracing feature. Once it is enabled, check whether an annotation (e.g. `nginx.ingress.kubernetes.io/service-upstream: true`) is added for your Route (Ingress) if the Route is inaccessible. +You need to enable **Application Governance** so that you can use the Tracing feature. Once it is enabled, check whether an annotation (for example, `nginx.ingress.kubernetes.io/service-upstream: true`) is added for your Route (Ingress) if the Route is inaccessible. {{}} ## What is Bookinfo diff --git a/content/en/docs/quick-start/enable-pluggable-components.md b/content/en/docs/quick-start/enable-pluggable-components.md index 9eaa2cfc6..ca773b6a8 100644 --- a/content/en/docs/quick-start/enable-pluggable-components.md +++ b/content/en/docs/quick-start/enable-pluggable-components.md @@ -47,7 +47,7 @@ When you implement multi-node installation of KubeSphere on Linux, you need to c ``` {{< notice note >}} -If you adopt [All-in-one Installation](../../quick-start/all-in-one-on-linux/), you do not need to create a `config-sample.yaml` file as you can create a cluster directly. Generally, the all-in-one mode is for users who are new to KubeSphere and look to get familiar with the system. If you want to enable pluggable components in this mode (e.g. for testing purpose), refer to the [following section](#enable-pluggable-components-after-installation) to see how pluggable components can be installed after installation. +If you adopt [All-in-one Installation](../../quick-start/all-in-one-on-linux/), you do not need to create a `config-sample.yaml` file as you can create a cluster directly. Generally, the all-in-one mode is for users who are new to KubeSphere and look to get familiar with the system. If you want to enable pluggable components in this mode (for example, for testing purpose), refer to the [following section](#enable-pluggable-components-after-installation) to see how pluggable components can be installed after installation. {{}} 2. In this file, enable the pluggable components you want to install by changing `false` to `true` for `enabled`. Here is [the complete file](https://github.com/kubesphere/kubekey/blob/release-1.1/docs/config-example.md) for your reference. Save the file after you finish. diff --git a/content/en/docs/quick-start/wordpress-deployment.md b/content/en/docs/quick-start/wordpress-deployment.md index e900a8fad..ed8fa94e0 100644 --- a/content/en/docs/quick-start/wordpress-deployment.md +++ b/content/en/docs/quick-start/wordpress-deployment.md @@ -36,7 +36,7 @@ The environment variable `WORDPRESS_DB_PASSWORD` is the password to connect to t ![create-secrets1](/images/docs/quickstart/wordpress-deployment/create-secrets1.png) -2. Enter the basic information (e.g. name it `mysql-secret`) and click **Next**. On the next page, select **Opaque (Default)** for **Type** and click **Add Data** to add a key-value pair. Input the Key (`MYSQL_ROOT_PASSWORD`) and Value (`123456`) as below and click **√** in the bottom-right corner to confirm. When you finish, click **Create** to continue. +2. Enter the basic information (for example, name it `mysql-secret`) and click **Next**. On the next page, select **Opaque (Default)** for **Type** and click **Add Data** to add a key-value pair. Enter the Key (`MYSQL_ROOT_PASSWORD`) and Value (`123456`) as below and click **√** in the bottom-right corner to confirm. When you finish, click **Create** to continue. ![key-value1](/images/docs/quickstart/wordpress-deployment/key-value1.png) @@ -52,7 +52,7 @@ Follow the same steps above to create a WordPress Secret `wordpress-secret` with ![volumes1](/images/docs/quickstart/wordpress-deployment/volumes1.png) -2. Enter the basic information of the volume (e.g. name it `wordpress-pvc`) and click **Next**. +2. Enter the basic information of the volume (for example, name it `wordpress-pvc`) and click **Next**. 3. In **Volume Settings**, you need to choose an available **Storage Class**, and set **Access Mode** and **Volume Capacity**. You can use the default value directly as shown below. Click **Next** to continue. @@ -68,7 +68,7 @@ Follow the same steps above to create a WordPress Secret `wordpress-secret` with ![composing-app1](/images/docs/quickstart/wordpress-deployment/composing-app1.png) -2. Enter the basic information (e.g. `wordpress` for **App Name**) and click **Next**. +2. Enter the basic information (for example, `wordpress` for **App Name**) and click **Next**. ![basic-info1](/images/docs/quickstart/wordpress-deployment/basic-info1.png) @@ -78,7 +78,7 @@ Follow the same steps above to create a WordPress Secret `wordpress-secret` with 4. Define a service type for the component. Select **Stateful Service** here. -5. Enter the name for the stateful service (e.g. **mysql**) and click **Next**. +5. Enter the name for the stateful service (for example, **mysql**) and click **Next**. ![mysqlname1](/images/docs/quickstart/wordpress-deployment/mysqlname1.png) @@ -96,11 +96,11 @@ In **Advanced Settings**, make sure the memory limit is no less than 1000 Mi or {{}} -8. Scroll down to **Environment Variables** and click **Use ConfigMap or Secret**. Input the name `MYSQL_ROOT_PASSWORD` and choose the resource `mysql-secret` and the key `MYSQL_ROOT_PASSWORD` created in the previous step. Click **√** after you finish and **Next** to continue. +8. Scroll down to **Environment Variables** and click **Use ConfigMap or Secret**. Enter the name `MYSQL_ROOT_PASSWORD` and choose the resource `mysql-secret` and the key `MYSQL_ROOT_PASSWORD` created in the previous step. Click **√** after you finish and **Next** to continue. ![environment-var1](/images/docs/quickstart/wordpress-deployment/environment-var1.png) -9. Select **Add Volume Template** in **Mount Volumes**. Input the value of **Volume Name** (`mysql`) and **Mount Path** (mode: `ReadAndWrite`, path: `/var/lib/mysql`) as below: +9. Select **Add Volume Template** in **Mount Volumes**. Enter the value of **Volume Name** (`mysql`) and **Mount Path** (mode: `ReadAndWrite`, path: `/var/lib/mysql`) as below: ![volume-template1](/images/docs/quickstart/wordpress-deployment/volume-template1.png) @@ -146,7 +146,7 @@ For the second environment variable added here, the value must be exactly the sa ![choose-existing-volume1](/images/docs/quickstart/wordpress-deployment/choose-existing-volume1.png) -16. Select `wordpress-pvc` created in the previous step, set the mode as `ReadAndWrite`, and input `/var/www/html` as its mount path. Click **√** to save it and **Next** to continue. +16. Select `wordpress-pvc` created in the previous step, set the mode as `ReadAndWrite`, and enter `/var/www/html` as its mount path. Click **√** to save it and **Next** to continue. ![mount-volume-page1](/images/docs/quickstart/wordpress-deployment/mount-volume-page1.png) diff --git a/content/en/docs/reference/api-docs.md b/content/en/docs/reference/api-docs.md index 701d85711..d91f7ce89 100644 --- a/content/en/docs/reference/api-docs.md +++ b/content/en/docs/reference/api-docs.md @@ -112,9 +112,9 @@ Replace `[node ip]` with your actual IP address. ## API Reference -The KubeSphere API swagger JSON file can be found in the repository https://github.com/kubesphere/kubesphere/tree/release-3.0/api. +The KubeSphere API swagger JSON file can be found in the repository https://github.com/kubesphere/kubesphere/tree/release-3.1/api. -- KubeSphere specified the API [swagger json](https://github.com/kubesphere/kubesphere/blob/release-3.0/api/ks-openapi-spec/swagger.json) file. It contains all the APIs that are only applied to KubeSphere. -- KubeSphere specified the CRD [swagger json](https://github.com/kubesphere/kubesphere/blob/release-3.0/api/openapi-spec/swagger.json) file. It contains all the generated CRDs API documentation. It is same as Kubernetes API objects. +- KubeSphere specified the API [swagger json](https://github.com/kubesphere/kubesphere/blob/release-3.1/api/ks-openapi-spec/swagger.json) file. It contains all the APIs that are only applied to KubeSphere. +- KubeSphere specified the CRD [swagger json](https://github.com/kubesphere/kubesphere/blob/release-3.1/api/openapi-spec/swagger.json) file. It contains all the generated CRDs API documentation. It is same as Kubernetes API objects. You can explore the KubeSphere API document from [here](https://kubesphere.io/api/kubesphere) as well. diff --git a/content/en/docs/release/release-v310.md b/content/en/docs/release/release-v310.md index 18585703b..870a23b86 100644 --- a/content/en/docs/release/release-v310.md +++ b/content/en/docs/release/release-v310.md @@ -15,7 +15,7 @@ weight: 18100 ### Multi-cluster management -- Simplified the steps to import Member Clusters with configuration validation (e.g. `jwtSecret`) added. ([#3232](https://github.com/kubesphere/kubesphere/issues/3232)) +- Simplified the steps to import Member Clusters with configuration validation (for example, `jwtSecret`) added. ([#3232](https://github.com/kubesphere/kubesphere/issues/3232)) - Refactored the cluster controller and optimized the logic. ([#3234](https://github.com/kubesphere/kubesphere/issues/3234)) - Upgraded the built-in web Kubectl, the version of which is now consistent with your Kubernetes cluster version. ([#3103](https://github.com/kubesphere/kubesphere/issues/3103)) - Support customized resynchronization period of cluster controller. ([#3213](https://github.com/kubesphere/kubesphere/issues/3213)) @@ -72,7 +72,7 @@ You can now enable KubeEdge in your cluster and manage edge nodes on the KubeSph #### Monitoring -- Support configurations of ServiceMonitor on the KubeSphere console. ([#1031](https://github.com/kubesphere/console/pull/1301)) +- Support configurations of ServiceMonitors on the KubeSphere console. ([#1031](https://github.com/kubesphere/console/pull/1301)) - Support PromQL auto-completion and syntax highlighting. ([#1307](https://github.com/kubesphere/console/pull/1307)) - Support customized monitoring at the cluster level. ([#3193](https://github.com/kubesphere/kubesphere/pull/3193)) - Changed the HTTP ports of kube-scheduler and kube-controller-manager from `10251` and `10252` to the HTTPS ports of `10259` and `10257` respectively for data scraping. ([#1367](https://github.com/kubesphere/ks-installer/pull/1367)) diff --git a/content/en/docs/toolbox/auditing/auditing-query.md b/content/en/docs/toolbox/auditing/auditing-query.md index e2972e273..55827e81a 100644 --- a/content/en/docs/toolbox/auditing/auditing-query.md +++ b/content/en/docs/toolbox/auditing/auditing-query.md @@ -14,7 +14,7 @@ You need to enable [KubeSphere Auditing Logs](../../../pluggable-components/audi ## Enter the Query Interface -1. The query function is available for all users. Log in to the console with any account, hover over the **Toolbox** in the lower right corner and select **Auditing Operating**. +1. The query function is available for all users. Log in to the console with any account, hover over the **Toolbox** in the lower-right corner and select **Auditing Operating**. {{< notice note >}} @@ -58,7 +58,7 @@ Any account has the authorization to query auditing logs, while the logs each ac ## Enter Query Parameters -1. Select a filter and input the keyword you want to search. For example, query auditing logs containing the information of `user` changed as shown in the following screenshot: +1. Select a filter and enter the keyword you want to search. For example, query auditing logs containing the information of `user` changed as shown in the following screenshot: ![User Changed](/images/docs/toolbox/user-changed.png) diff --git a/content/en/docs/toolbox/auditing/auditing-rule.md b/content/en/docs/toolbox/auditing/auditing-rule.md index 80e36be23..d548d0214 100644 --- a/content/en/docs/toolbox/auditing/auditing-rule.md +++ b/content/en/docs/toolbox/auditing/auditing-rule.md @@ -8,7 +8,7 @@ weight: 15320 An auditing rule defines the policy for processing auditing logs. KubeSphere Auditing Logs provide users with two CRD rules (`archiving-rule` and `alerting-rule`) for customization. -After you enable [KubeSphere Auditing Logs](../../../pluggable-components/auditing-logs/), log in to the console with an account of `platform-admin` role. In **CRDs** on the **Cluster Management** page, input `rules.auditing.kubesphere.io` in the search bar. Click the result **Rule** as below and you can see the two CRD rules. +After you enable [KubeSphere Auditing Logs](../../../pluggable-components/auditing-logs/), log in to the console with an account of `platform-admin` role. In **CRDs** on the **Cluster Management** page, enter `rules.auditing.kubesphere.io` in the search bar. Click the result **Rule** as below and you can see the two CRD rules. ![auditing-crd](/images/docs/toolbox/auditing-crd.jpg) diff --git a/content/en/docs/toolbox/events-query.md b/content/en/docs/toolbox/events-query.md index adbb840a9..270fb241a 100644 --- a/content/en/docs/toolbox/events-query.md +++ b/content/en/docs/toolbox/events-query.md @@ -16,7 +16,7 @@ This guide demonstrates how you can do multi-level, fine-grained event queries t ## Query Events -1. The event query function is available for all users. Log in to the console with any account, hover over the **Toolbox** in the lower right corner and select **Event Search**. +1. The event query function is available for all users. Log in to the console with any account, hover over the **Toolbox** in the lower-right corner and select **Event Search**. ![events_query_guide](/images/docs/events/events_query_guide.png) diff --git a/content/en/docs/toolbox/log-query.md b/content/en/docs/toolbox/log-query.md index 046e4ba94..aeb6fb286 100644 --- a/content/en/docs/toolbox/log-query.md +++ b/content/en/docs/toolbox/log-query.md @@ -16,7 +16,7 @@ You need to enable the [KubeSphere Logging System](../../pluggable-components/lo ## Enter the Log Query Interface -1. The log query function is available for all users. Log in to the console with any account, hover over the **Toolbox** in the lower right corner and select **Log Search**. +1. The log query function is available for all users. Log in to the console with any account, hover over the **Toolbox** in the lower-right corner and select **Log Search**. ![log-query-guide](/images/docs/toolbox/log-query/log-query-guide.png) diff --git a/content/en/docs/toolbox/metering-and-billing/view-resource-consumption.md b/content/en/docs/toolbox/metering-and-billing/view-resource-consumption.md index fd57fa6c2..2040be685 100644 --- a/content/en/docs/toolbox/metering-and-billing/view-resource-consumption.md +++ b/content/en/docs/toolbox/metering-and-billing/view-resource-consumption.md @@ -17,7 +17,7 @@ KubeSphere metering helps you track resource consumption within a given cluster **Cluster Resource Consumption** contains resource usage information of clusters (and nodes included), such as CPU, memory and storage. -1. Log in to the KubeSphere console as `admin`, click the hammer icon in the bottom right corner and select **Metering and Billing**. +1. Log in to the KubeSphere console as `admin`, click the hammer icon in the bottom-right corner and select **Metering and Billing**. 2. Click **View Consumption** in the **Cluster Resource Consumption** section. @@ -55,7 +55,7 @@ KubeSphere metering helps you track resource consumption within a given cluster **Workspace (Project) Resource Consumption** contains resource usage information of workspaces (and projects included), such as CPU, memory and storage. -1. Log in to the KubeSphere console as `admin`, click the hammer icon in the bottom right corner and select **Metering and Billing**. +1. Log in to the KubeSphere console as `admin`, click the hammer icon in the bottom-right corner and select **Metering and Billing**. 2. Click **View Consumption** in the **Workspace (Project) Resource Consumption** section. diff --git a/content/en/docs/toolbox/web-kubectl.md b/content/en/docs/toolbox/web-kubectl.md index d4f0c7170..b0bb27781 100644 --- a/content/en/docs/toolbox/web-kubectl.md +++ b/content/en/docs/toolbox/web-kubectl.md @@ -14,11 +14,11 @@ This tutorial demonstrates how to use web kubectl to operate on and manage clust ## Use Web Kubectl -1. Log in to KubeSphere with an account granted the `platform-admin` role, hover over the **Toolbox** in the lower right corner and select **Kubectl**. +1. Log in to KubeSphere with an account granted the `platform-admin` role, hover over the **Toolbox** in the lower-right corner and select **Kubectl**. ![web-kubectl-enter](/images/docs/web-kubectl/web-kubectl-enter.png) -2. You can see the kubectl interface as shown in the pop-up window. If you have enabled the multi-cluster feature, you need to select the target cluster first from the drop-down list in the upper right corner. This drop-down list is not visible if the multi-cluster feature is not enabled. +2. You can see the kubectl interface as shown in the pop-up window. If you have enabled the multi-cluster feature, you need to select the target cluster first from the drop-down list in the upper-right corner. This drop-down list is not visible if the multi-cluster feature is not enabled. ![web-kubectl-cluster-select](/images/docs/web-kubectl/web-kubectl-cluster-select.png) diff --git a/content/en/docs/upgrade/_index.md b/content/en/docs/upgrade/_index.md index fa27cf86e..23b40f8dd 100644 --- a/content/en/docs/upgrade/_index.md +++ b/content/en/docs/upgrade/_index.md @@ -11,4 +11,4 @@ icon: "/images/docs/docs.svg" --- -This chapter demonstrates how cluster operators can upgrade KubeSphere to v3.0.0. \ No newline at end of file +This chapter demonstrates how cluster operators can upgrade KubeSphere to v3.1.0. \ No newline at end of file diff --git a/content/en/docs/workspace-administration/department-management.md b/content/en/docs/workspace-administration/department-management.md index aaf6d8485..5981fc796 100644 --- a/content/en/docs/workspace-administration/department-management.md +++ b/content/en/docs/workspace-administration/department-management.md @@ -3,7 +3,7 @@ title: "Department Management" keywords: 'KubeSphere, Kubernetes, Department, Role, Permission, Group' description: 'Create departments in a workspace and assign users to different departments to implement permission control.' linkTitle: "Department Management" -weight: 9700 +weight: 9800 --- This document describes how to manage workspace departments. diff --git a/content/en/docs/workspace-administration/project-quotas.md b/content/en/docs/workspace-administration/project-quotas.md index 1cb82f5cc..ee3d200b1 100644 --- a/content/en/docs/workspace-administration/project-quotas.md +++ b/content/en/docs/workspace-administration/project-quotas.md @@ -6,7 +6,7 @@ linkTitle: "Project Quotas" weight: 9600 --- -KubeSphere uses requests and limits to control resource (e.g. CPU and memory) usage in a project, also known as [ResourceQuotas](https://kubernetes.io/docs/concepts/policy/resource-quotas/) in Kubernetes. Requests make sure a project can get the resources it needs as they are specifically guaranteed and reserved. On the contrary, limits ensure that a project can never use resources above a certain value. +KubeSphere uses requests and limits to control resource (for example, CPU and memory) usage in a project, also known as [ResourceQuotas](https://kubernetes.io/docs/concepts/policy/resource-quotas/) in Kubernetes. Requests make sure a project can get the resources it needs as they are specifically guaranteed and reserved. On the contrary, limits ensure that a project can never use resources above a certain value. Besides CPU and memory, you can also set resource quotas for other objects separately such as Pods, [Deployments](../../project-user-guide/application-workloads/deployments/), [Jobs](../../project-user-guide/application-workloads/jobs/), [Services](../../project-user-guide/application-workloads/services/) and [ConfigMaps](../../project-user-guide/configuration/configmaps/) in a project. @@ -48,7 +48,13 @@ If you use the account `project-admin` (an account of the `admin` role at the pr 6. To change project quotas, click **Manage Project** on the **Basic Information** page and select **Edit Quota**. -7. Change project quotas directly in the dialog that appears and click **OK**. + {{< notice note >}} + + For [a multi-cluster project](../../project-administration/project-and-multicluster-project/#multi-cluster-projects), the option **Edit Quota** does not display in the **Manage Project** drop-down menu. To set quotas for a multi-cluster project, go to **Quota Management** under **Project Settings** and click **Edit Quota**. Note that as a multi-cluster project runs across clusters, you can set resource quotas on different clusters separately. + + {{}} + +7. Change project quotas in the dialog that appears and click **OK**. ## See Also diff --git a/content/en/docs/workspace-administration/role-and-member-management.md b/content/en/docs/workspace-administration/role-and-member-management.md index d88b90b0d..084de5a32 100644 --- a/content/en/docs/workspace-administration/role-and-member-management.md +++ b/content/en/docs/workspace-administration/role-and-member-management.md @@ -16,7 +16,7 @@ This tutorial demonstrates how to manage roles and members in a workspace. At th ## Prerequisites -At least one workspace has been created, such as `demo-workspace`. Besides, you need an account of the `workspace-admin` role (e.g. `ws-admin`) at the workspace level. For more information, see [Create Workspaces, Projects, Accounts and Roles](../../quick-start/create-workspace-and-project/). +At least one workspace has been created, such as `demo-workspace`. Besides, you need an account of the `workspace-admin` role (for example, `ws-admin`) at the workspace level. For more information, see [Create Workspaces, Projects, Accounts and Roles](../../quick-start/create-workspace-and-project/). {{< notice note >}} diff --git a/content/en/docs/workspace-administration/workspace-quotas.md b/content/en/docs/workspace-administration/workspace-quotas.md new file mode 100644 index 000000000..24725c3e9 --- /dev/null +++ b/content/en/docs/workspace-administration/workspace-quotas.md @@ -0,0 +1,43 @@ +--- +title: "Workspace Quotas" +keywords: 'KubeSphere, Kubernetes, workspace, quotas' +description: 'Set workspace quotas to control the total resource usage of projects and DevOps projects in a workspace.' +linkTitle: "Workspace Quotas" +weight: 9700 +--- + +Workspace quotas are used to control the total resource usage of all projects and DevOps projects in a workspace. Similar to [project quotas](../project-quotas/), workspace quotas contain requests and limits of CPU and memory. Requests make sure projects in the workspace can get the resources they needs as they are specifically guaranteed and reserved. On the contrary, limits ensure that the resource usage of all projects in the workspace can never go above a certain value. + +In [a multi-cluster architecture](../../multicluster-management/), as you need to [assign one or multiple clusters to a workspace](../../cluster-administration/cluster-settings/cluster-visibility-and-authorization/), you can decide the amount of resources that can be used by the workspace on different clusters. + +This tutorial demonstrates how to manage resource quotas for a workspace. + +## Prerequisites + +You have an available workspace and an account (`ws-manager`). The account must have the `workspaces-manager` role at the platform level. For more information, see [Create Workspaces, Projects, Accounts and Roles](../../quick-start/create-workspace-and-project/). + +## Set Workspace Quotas + +1. Log in to the KubeSphere web console as `ws-manager` and go to a workspace. + +2. Navigate to **Quota Management** under **Workspace Settings**. + +3. The **Quota Management** page lists all the available clusters assigned to the workspace and their respective requests and limits of CPU and memory. Click **Edit Quota** on the right of a cluster. + +4. In the dialog that appears, you can see that KubeSphere does not set any requests or limits for the workspace by default. To set requests and limits to control CPU and memory resources, use the slider to move to a desired value or enter numbers directly. Leaving a field blank means you do not set any requests or limits. + + ![edit-workspace-quotas](/images/docs/workspace-administration/workspace-quotas/edit-workspace-quotas.png) + + {{< notice note >}} + + The limit can never be lower than the request. + + {{}} + +5. Click **OK** to finish setting quotas. + +## See Also + +[Project Quotas](../project-quotas/) + +[Container Limit Ranges](../../project-administration/container-limit-ranges/) \ No newline at end of file diff --git a/content/zh/devops/_index.md b/content/zh/devops/_index.md index 69d0aa3ee..0756abc7e 100644 --- a/content/zh/devops/_index.md +++ b/content/zh/devops/_index.md @@ -7,7 +7,10 @@ css: "scss/scenario.scss" section1: title: KubeSphere DevOps 提供端到端的工作流,集成主流 CI/CD 工具,提升交付能力 content: KubeSphere DevOps 提供基于 Jenkins 的 CI/CD 流水线,支持自动化工作流,包括 Binary-to-Image (B2I) 和 Source-to-Image (S2I) 等,帮助不同的组织加快产品上市时间。 - image: /images/devops/banner.jpg + content2: + image: /images/devops/banner.png + showDownload: true + inCenter: true image: /images/devops/dev-ops.png @@ -44,6 +47,7 @@ section3: title: 观看 KubeSphere 一站式 DevOps 工作流操作演示 videoLink: https://www.youtube.com/embed/c3V-2RX9yGY image: /images/service-mesh/15.jpg + showDownload: true content: 想自己动手体验实际操作? btnContent: 开始动手实验 link: docs/pluggable-components/devops/ diff --git a/content/zh/docs/cluster-administration/cluster-settings/log-collections/add-es-as-receiver.md b/content/zh/docs/cluster-administration/cluster-settings/log-collections/add-es-as-receiver.md index bacb3d8dc..6e4544d72 100644 --- a/content/zh/docs/cluster-administration/cluster-settings/log-collections/add-es-as-receiver.md +++ b/content/zh/docs/cluster-administration/cluster-settings/log-collections/add-es-as-receiver.md @@ -16,21 +16,21 @@ weight: 8622 1. 以 `admin` 身份登录 KubeSphere 的 Web 控制台。点击左上角的**平台管理**,然后选择**集群管理**。 -2. 如果您启用了[多集群功能](../../../../multicluster-management/),您可以选择一个集群。如果尚未启用该功能,请直接进行下一步。 + {{< notice note >}} -3. 在**集群管理**页面,选择**集群设置**下的**日志收集**。 +如果您启用了[多集群功能](../../../../multicluster-management/),您可以选择一个集群。 -4. 点击**添加日志接收器**并选择 **Elasticsearch**。 +{{}} - ![add-receiver](/images/docs/cluster-administration/cluster-settings/log-collections/add-es-as-receiver/add-receiver.png) +2. 在**集群管理**页面,选择**集群设置**下的**日志收集**。 -5. 提供 Elasticsearch 服务地址和端口信息,如下所示: +3. 点击**添加日志接收器**并选择 **Elasticsearch**。 - ![add-es](/images/docs/cluster-administration/cluster-settings/log-collections/add-es-as-receiver/add-es.png) +4. 提供 Elasticsearch 服务地址和端口信息,如下所示: -6. Elasticsearch 会显示在**日志收集**页面的接收器列表中,状态为**收集中**。 + ![add-es](/images/docs/zh-cn/cluster-administration/cluster-settings/log-collection/add-es-as-receiver/add-es.png) - ![receiver-list](/images/docs/cluster-administration/cluster-settings/log-collections/add-es-as-receiver/receiver-list.png) +5. Elasticsearch 会显示在**日志收集**页面的接收器列表中,状态为**收集中**。 -7. 若要验证 Elasticsearch 是否从 Fluent Bit 接收日志,从右下角的**工具箱**中点击**日志查询**,在控制台中搜索日志。有关更多信息,请参阅[日志查询](../../../../toolbox/log-query/)。 +6. 若要验证 Elasticsearch 是否从 Fluent Bit 接收日志,从右下角的**工具箱**中点击**日志查询**,在控制台中搜索日志。有关更多信息,请参阅[日志查询](../../../../toolbox/log-query/)。 diff --git a/content/zh/docs/cluster-administration/cluster-settings/log-collections/add-fluentd-as-receiver.md b/content/zh/docs/cluster-administration/cluster-settings/log-collections/add-fluentd-as-receiver.md index 06569c39a..5ecbf9fdf 100644 --- a/content/zh/docs/cluster-administration/cluster-settings/log-collections/add-fluentd-as-receiver.md +++ b/content/zh/docs/cluster-administration/cluster-settings/log-collections/add-fluentd-as-receiver.md @@ -123,20 +123,23 @@ EOF ## 步骤 2:添加 Fluentd 作为日志接收器 1. 以 `admin` 身份登录 KubeSphere 的 Web 控制台。点击左上角的**平台管理**,然后选择**集群管理**。 -2. 如果您启用了[多集群功能](../../../../multicluster-management/),您可以选择一个集群。如果尚未启用该功能,请直接进行下一步。 -3. 在**集群管理**页面,选择**集群设置**下的**日志收集**。 -4. 点击**添加日志接收器**并选择 **Fluentd**。 + {{< notice note >}} - ![add-receiver](/images/docs/cluster-administration/cluster-settings/log-collections/add-fluentd-as-receiver/add-receiver.png) + 如果您启用了[多集群功能](../../../../multicluster-management/),您可以选择一个集群。 -5. 输入 **Fluentd** 服务地址和端口信息,如下所示: + {{}} - ![add-fluentd](/images/docs/cluster-administration/cluster-settings/log-collections/add-fluentd-as-receiver/add-fluentd.png) +2. 在**集群管理**页面,选择**集群设置**下的**日志收集**。 -6. Fluentd 会显示在**日志收集**页面的接收器列表中,状态为**收集中**。 +3. 点击**添加日志接收器**并选择 **Fluentd**。 + +4. 输入 **Fluentd** 服务地址和端口信息,如下所示: + + ![add-fluentd](/images/docs/zh-cn/cluster-administration/cluster-settings/log-collection/add-fluentd-as-receiver/add-fluentd.png) + +5. Fluentd 会显示在**日志收集**页面的接收器列表中,状态为**收集中**。 - ![receiver-list](/images/docs/cluster-administration/cluster-settings/log-collections/add-fluentd-as-receiver/receiver-list.png) ## 步骤 3:验证 Fluentd 能否从 Fluent Bit 接收日志 @@ -152,4 +155,4 @@ EOF 6. 您可以看到日志持续滚动输出。 - ![container-logs](/images/docs/cluster-administration/cluster-settings/log-collections/add-fluentd-as-receiver/container-logs.png) \ No newline at end of file + ![container-logs](/images/docs/zh-cn/cluster-administration/cluster-settings/log-collection/add-fluentd-as-receiver/container-logs.png) \ No newline at end of file diff --git a/content/zh/docs/cluster-administration/cluster-settings/log-collections/add-kafka-as-receiver.md b/content/zh/docs/cluster-administration/cluster-settings/log-collections/add-kafka-as-receiver.md index 7f4ec27dc..4eedab994 100644 --- a/content/zh/docs/cluster-administration/cluster-settings/log-collections/add-kafka-as-receiver.md +++ b/content/zh/docs/cluster-administration/cluster-settings/log-collections/add-kafka-as-receiver.md @@ -103,21 +103,25 @@ weight: 8623 1. 以 `admin` 身份登录 KubeSphere 的 Web 控制台。点击左上角的**平台管理**,然后选择**集群管理**。 -2. 如果您启用了[多集群功能](../../../../multicluster-management/),您可以选择一个集群。如果尚未启用该功能,请直接进行下一步。 + {{< notice note >}} -3. 在**集群管理**页面,选择**集群设置**下的**日志收集**。 + 如果您启用了[多集群功能](../../../../multicluster-management/),您可以选择一个集群。 -4. 点击**添加日志接收器**并选择 **Kafka**。输入 Kafka 代理地址和端口信息,然后点击**确定**继续。 + {{}} - ```bash - my-cluster-kafka-0.my-cluster-kafka-brokers.default.svc 9092 - my-cluster-kafka-1.my-cluster-kafka-brokers.default.svc 9092 - my-cluster-kafka-2.my-cluster-kafka-brokers.default.svc 9092 - ``` +2. 在**集群管理**页面,选择**集群设置**下的**日志收集**。 - ![add-kafka](/images/docs/cluster-administration/cluster-settings/log-collections/add-kafka-as-receiver/add-kafka.png) +3. 点击**添加日志接收器**并选择 **Kafka**。输入 Kafka 代理地址和端口信息,然后点击**确定**继续。 -5. 运行以下命令验证 Kafka 集群是否能从 Fluent Bit 接收日志: + | 地址 | 端口 | + | ------------------------------------------------------- | ---- | + | my-cluster-kafka-0.my-cluster-kafka-brokers.default.svc | 9092 | + | my-cluster-kafka-1.my-cluster-kafka-brokers.default.svc | 9092 | + | my-cluster-kafka-2.my-cluster-kafka-brokers.default.svc | 9092 | + + ![add-kafka](/images/docs/zh-cn/cluster-administration/cluster-settings/log-collection/add-kafka-as-receiver/add-kafka.png) + +4. 运行以下命令验证 Kafka 集群是否能从 Fluent Bit 接收日志: ```bash # Start a util container diff --git a/content/zh/docs/cluster-administration/cluster-settings/log-collections/introduction.md b/content/zh/docs/cluster-administration/cluster-settings/log-collections/introduction.md index e146ad246..e068ff3c7 100644 --- a/content/zh/docs/cluster-administration/cluster-settings/log-collections/introduction.md +++ b/content/zh/docs/cluster-administration/cluster-settings/log-collections/introduction.md @@ -24,13 +24,15 @@ KubeSphere 提供灵活的日志收集配置方式。基于 [FluentBit Operator] 2. 点击左上角的**平台管理**,然后选择**集群管理**。 -3. 如果您启用了[多集群功能](../../../../multicluster-management/),您可以选择一个集群。如果尚未启用该功能,请直接进行下一步。 + {{< notice note >}} -4. 选择**集群设置**下的**日志收集**。 + 如果您启用了[多集群功能](../../../../multicluster-management/),您可以选择一个集群。 -5. 在**日志**选项卡下点击**添加日志接收器**。 + {{}} - ![log-collections](/images/docs/cluster-administration/cluster-settings/log-collections/introduction/log-collections.png) +3. 选择**集群设置**下的**日志收集**。 + +4. 在**日志**选项卡下点击**添加日志接收器**。 {{< notice note >}} @@ -61,8 +63,6 @@ Kafka 往往用于接收日志,并作为 Spark 等处理系统的代理 (Broke 自 KubeSphere v3.0.0 起,Kubernetes 事件和 Kubernetes 以及 KubeSphere 审计日志可以通过和容器日志相同的方式进行存档。如果在 [ClusterConfiguration](https://github.com/kubesphere/kubekey/blob/release-1.1/docs/config-example.md) 中启用了 `events` 或 `auditing`,**日志收集**页面会对应显示**事件**或**审计**选项卡。您可以前往对应选项卡为 Kubernetes 事件或 Kubernetes 以及 KubeSphere 审计日志配置日志接收器。 -![log-collections-events](/images/docs/cluster-administration/cluster-settings/log-collections/introduction/log-collections-events.png) - 容器日志、Kubernetes 事件和 Kubernetes 以及 KubeSphere 审计日志应存储在不同的 Elasticsearch 索引中以便在 KubeSphere 中进行搜索,索引前缀如下: - 容器日志:`ks-logstash-log` @@ -76,15 +76,10 @@ Kafka 往往用于接收日志,并作为 Spark 等处理系统的代理 (Broke 1. 在**日志收集**页面,点击一个日志接收器并进入其详情页面。 2. 点击**更多操作**并选择**更改状态**。 - ![more](/images/docs/cluster-administration/cluster-settings/log-collections/introduction/more.png) - 3. 选择**激活**或**关闭**以启用或停用该日志接收器。 - ![change-status](/images/docs/cluster-administration/cluster-settings/log-collections/introduction/change-status.png) - 4. 停用后,日志接收器的状态会变为**关闭**,激活时状态为**收集中**。 - ![receiver-status](/images/docs/cluster-administration/cluster-settings/log-collections/introduction/receiver-status.png) ## 修改或删除日志接收器 @@ -93,6 +88,4 @@ Kafka 往往用于接收日志,并作为 Spark 等处理系统的代理 (Broke 1. 在**日志收集**页面,点击一个日志接收器并进入其详情页面。 2. 点击**编辑**或从下拉菜单中选择**编辑配置文件**以编辑日志接收器。 - ![more](/images/docs/cluster-administration/cluster-settings/log-collections/introduction/more.png) - 3. 点击**删除日志接收器**进行删除。 diff --git a/content/zh/docs/cluster-administration/platform-settings/notification-management/_index.md b/content/zh/docs/cluster-administration/platform-settings/notification-management/_index.md index 4d4e25b09..97532a77f 100644 --- a/content/zh/docs/cluster-administration/platform-settings/notification-management/_index.md +++ b/content/zh/docs/cluster-administration/platform-settings/notification-management/_index.md @@ -1,5 +1,5 @@ --- -linkTitle: "Notification Management" +linkTitle: "通知管理" weight: 8720 _build: diff --git a/content/zh/docs/devops-user-guide/examples/create-multi-cluster-pipeline.md b/content/zh/docs/devops-user-guide/examples/create-multi-cluster-pipeline.md index 0afe4d772..875977cbe 100644 --- a/content/zh/docs/devops-user-guide/examples/create-multi-cluster-pipeline.md +++ b/content/zh/docs/devops-user-guide/examples/create-multi-cluster-pipeline.md @@ -243,7 +243,7 @@ You must create the projects as shown in the table below in advance. Make sure y ![pipeline-success](/images/docs/devops-user-guide/examples/create-multi-cluster-pipeline/pipeline-success.png) -3. Check the pipeline running logs by clicking **Show Logs** in the upper right corner. For each stage, you click it to inspect logs, which can be downloaded to your local machine for further analysis. +3. Check the pipeline running logs by clicking **Show Logs** in the upper-right corner. For each stage, you click it to inspect logs, which can be downloaded to your local machine for further analysis. ![pipeline-logs](/images/docs/devops-user-guide/examples/create-multi-cluster-pipeline/pipeline-logs.png) diff --git a/content/zh/docs/faq/installation/configure-booster.md b/content/zh/docs/faq/installation/configure-booster.md index 1b1a88a74..9a1270979 100644 --- a/content/zh/docs/faq/installation/configure-booster.md +++ b/content/zh/docs/faq/installation/configure-booster.md @@ -76,15 +76,21 @@ weight: 16200 ```yaml registry: - registryMirrors: [] # For users who need to speed up downloads - insecureRegistries: [] # Set an address of insecure image registry. See https://docs.docker.com/registry/insecure/ - privateRegistry: "" # Configure a private image registry for air-gapped installation (e.g. docker local registry or Harbor) + registryMirrors: [] + insecureRegistries: [] + privateRegistry: "" ``` -2. 在 `registryMirrors` 处填入仓库的镜像地址并保存文件。关于安装过程的更多信息,请参见[多节点安装](../../../installing-on-linux/introduction/multioverview/)。 + {{< notice note >}} + + 有关 `registry` 部分各个参数的更多信息,请参见 [Kubernetes 集群配置](../../../installing-on-linux/introduction/vars/)。 + + {{}} + +2. 在 `registryMirrors` 处填入仓库的镜像地址并保存文件。有关安装的更多信息,请参见[多节点安装](../../../installing-on-linux/introduction/multioverview/)。 {{< notice note >}} -[在 Linux 上通过 All-in-one 模式安装 KubeSphere](../../../quick-start/all-in-one-on-linux/) 不需要 `config-sample.yaml` 文件。该模式下请采用第一种方法进行配置。 +[在 Linux 上通过 All-in-One 模式安装 KubeSphere](../../../quick-start/all-in-one-on-linux/) 不需要 `config-sample.yaml` 文件。该模式下请采用第一种方法进行配置。 {{}} \ No newline at end of file diff --git a/content/zh/docs/faq/installation/telemetry.md b/content/zh/docs/faq/installation/telemetry.md index 827d1f27f..7c9a65a6a 100644 --- a/content/zh/docs/faq/installation/telemetry.md +++ b/content/zh/docs/faq/installation/telemetry.md @@ -25,7 +25,7 @@ Telemetry 收集已安装 KubeSphere 集群的大小、KubeSphere 和 Kubernetes ## 禁用 Telemetry -Telemetry 在安装 KubeSphere 时默认启用。同时,您也可以在安装前或安装后禁用 Telemetry。 +在安装 KubeSphere 时 Telemetry 默认启用。同时,您也可以在安装前或安装后禁用 Telemetry。 ### 安装前禁用 Telemetry @@ -37,7 +37,7 @@ Telemetry 在安装 KubeSphere 时默认启用。同时,您也可以在安装 {{}} -1. 下载 [cluster-configuration.yaml](https://github.com/kubesphere/ks-installer/releases/download/v3.1.0/cluster-configuration.yaml) 文件并打开编辑。 +1. 下载 [cluster-configuration.yaml](https://github.com/kubesphere/ks-installer/releases/download/v3.1.0/cluster-configuration.yaml) 文件并编辑。 ```bash vi cluster-configuration.yaml @@ -47,13 +47,14 @@ Telemetry 在安装 KubeSphere 时默认启用。同时,您也可以在安装 ```yaml openpitrix: - enabled: false + store: + enabled: false servicemesh: enabled: false - telemetry_enabled: false # Add this line here to disable Telemetry. + telemetry_enabled: false # 请手动添加此行以禁用 Telemetry。 ``` -3. 保存文件并执行如下命令开始安装: +3. 保存文件并执行以下命令开始安装: ```bash kubectl apply -f https://github.com/kubesphere/ks-installer/releases/download/v3.1.0/kubesphere-installer.yaml @@ -73,15 +74,10 @@ Telemetry 在安装 KubeSphere 时默认启用。同时,您也可以在安装 3. 在搜索框中输入 `clusterconfiguration`,点击搜索结果打开详情页。 - ![edit-crd](/images/docs/zh-cn/faq/telemetry-in-kubesphere/edit-crd.jpg) - -4. 点击 `ks-installer` 右边的三个点,并选择**编辑配置文件**。 - - ![edit-ks-installer](/images/docs/zh-cn/faq/telemetry-in-kubesphere/edit-ks-installer.jpg) +4. 点击 `ks-installer` 右侧的 ,并选择**编辑配置文件**。 5. 在文件末尾添加 `telemetry_enabled: false` 字段,点击**更新**。 - ![enable-telemetry](/images/docs/zh-cn/faq/telemetry-in-kubesphere/enable-telemetry.jpg) {{< notice note >}} diff --git a/content/zh/docs/project-administration/container-limit-ranges.md b/content/zh/docs/project-administration/container-limit-ranges.md index b193b2710..3799ce809 100644 --- a/content/zh/docs/project-administration/container-limit-ranges.md +++ b/content/zh/docs/project-administration/container-limit-ranges.md @@ -18,11 +18,9 @@ weight: 13400 ## 设置默认限制范围 -1. 以 `project-admin` 身份登录控制台,进入一个项目。如果该项目是新创建的项目,您在**概览**页面上会看到默认限制范围尚未设置。点击**设置**来配置限制范围。 +1. 以 `project-admin` 身份登录控制台,进入一个项目。如果该项目是新创建的项目,您在**概览**页面上会看到默认限制范围尚未设置。点击**容器资源默认请求未设置**旁的**设置**来配置限制范围。 - ![限制范围](/images/docs/zh-cn/project-administration/container-limit-ranges/limit-ranges.PNG) - -2. 在弹出对话框中,您可以看到 KubeSphere 默认不设置任何请求或限制。要设置请求和限制来控制 CPU 和内存资源,请移动滑块至期望的值或者直接输入数值。字段留空意味着不设置任何请求或限制。 +2. 在弹出的对话框中,您可以看到 KubeSphere 默认不设置任何请求或限制。要设置请求和限制来控制 CPU 和内存资源,请移动滑块至期望的值或者直接输入数值。字段留空意味着不设置任何请求或限制。 ![默认限制范围](/images/docs/zh-cn/project-administration/container-limit-ranges/default-limit-range.PNG) @@ -40,8 +38,6 @@ weight: 13400 5. 要更改默认限制范围,请在**基本信息**页面点击**项目管理**,然后选择**编辑资源默认请求**。 - ![更改限制范围](/images/docs/zh-cn/project-administration/container-limit-ranges/change-limit-ranges.PNG) - 6. 在弹出的对话框中直接更改限制范围,然后点击**确定**。 7. 当您创建工作负载时,容器的请求和限制将预先填充对应的值。 diff --git a/content/zh/docs/project-administration/project-and-multicluster-project.md b/content/zh/docs/project-administration/project-and-multicluster-project.md index 0afe6cb42..ac1c9b98e 100644 --- a/content/zh/docs/project-administration/project-and-multicluster-project.md +++ b/content/zh/docs/project-administration/project-and-multicluster-project.md @@ -7,67 +7,54 @@ linkTitle: "项目和多集群项目" weight: 13100 --- -KubeSphere 中的一个项目是一个 Kubernetes [命名空间](https://kubernetes.io/zh/docs/concepts/overview/working-with-objects/namespaces/),用于将资源划分成互不重叠的分组。这一功能可在多个租户之间分配集群资源,从而是一种逻辑分区功能。 +KubeSphere 中的项目即 Kubernetes [命名空间](https://kubernetes.io/zh/docs/concepts/overview/working-with-objects/namespaces/),用于将资源划分成互不重叠的分组。这一功能可在多个租户之间分配集群资源,是一种逻辑分区功能。 多集群项目跨集群运行,能为用户提供高可用性,并在问题发生时将问题隔离在某个集群内,避免影响业务。有关更多信息,请参见[多集群管理](../../multicluster-management/)。 -本章介绍项目管理的基本操作,如创建项目和删除项目。 +本教程演示如何管理项目和多集群项目。 ## 准备工作 -- 您需要准备一个可用的企业空间。 -- 您需要获取**项目管理**权限。该权限包含在内置角色 `workspace-self-provisioner` 中。 +- 您需要有一个可用的企业空间和一个帐户 (`project-admin`)。该帐户必须在该企业空间拥有 `workspace-self-provisioner` 角色。有关更多信息,请参见[创建企业空间、项目、帐户和角色](../../quick-start/create-workspace-and-project/)。 - 在创建多集群项目前,您需要通过[直接连接](../../multicluster-management/enable-multicluster/direct-connection/)或[代理连接](../../multicluster-management/enable-multicluster/agent-connection/)启用多集群功能。 ## 项目 ### 创建项目 -1. 打开企业空间的**项目管理**页面,点击**创建**。 - - ![create-project](/images/docs/zh-cn/project-admin/create-project.jpg) +1. 前往企业空间的**项目管理**页面,点击**项目**选项卡下的**创建**。 {{< notice note >}} - 您可以在**集群**下拉列表中更改创建项目的集群。该下拉列表只有在启用多集群功能后才可见。 -- 如果页面上没有**创建**按钮,则表示您的企业空间没有可用的集群。您需要联系平台管理员或集群管理员,以便在集群中创建企业空间资源。平台管理员或集群管理员需要在**集群管理**页面设置[**集群可见性**](../../cluster-administration/cluster-settings/cluster-visibility-and-authorization/),才能将集群分配给企业空间。 +- 如果页面上没有**创建**按钮,则表示您的企业空间没有可用的集群。您需要联系平台管理员或集群管理员,以便在集群中创建企业空间资源。平台管理员或集群管理员需要在**集群管理**页面设置**集群可见性**,才能[将集群分配给企业空间](../../cluster-administration/cluster-settings/cluster-visibility-and-authorization/)。 {{}} -2. 在弹出的**创建项目**对话框中输入项目名称,根据需要添加别名或说明,选择要创建项目的集群(如果没有启用多集群功能,则不会出现此选项),然后点击**确定**完成操作。 - - ![create-project-page](/images/docs/zh-cn/project-admin/create-project-page.jpg) +2. 在弹出的**创建项目**窗口中输入项目名称,根据需要添加别名或说明。在**集群设置**下,选择要创建项目的集群(如果没有启用多集群功能,则不会出现此选项),然后点击**确定**。 3. 创建的项目会显示在下图所示的列表中。您可以点击项目名称打开**概览**页面。 - ![project-list](/images/docs/zh-cn/project-admin/project-list.jpg) + ![project-list](/images/docs/zh-cn/project-administration/project-and-multicluster-project/project-list.png) -### 编辑项目信息 +### 编辑项目 -1. 在左侧导航栏中选择**项目设置**下的**基本信息**,在页面右侧点击**项目管理**。 +1. 前往您的项目,选择**项目设置**下的**基本信息**,在页面右侧点击**项目管理**。 - ![basic-info-page](/images/docs/zh-cn/project-admin/basic-info-page.jpg) - -2. 在下拉列表中选择**编辑信息**。 +2. 从下拉菜单中选择**编辑信息**。 + ![project-basic-information](/images/docs/zh-cn/project-administration/project-and-multicluster-project/project-basic-information.png) + {{< notice note >}} -项目名称无法编辑。如需修改其他信息,请参考相应的文档章节。 +项目名称无法编辑。如需修改其他信息,请参考相应的文档教程。 {{}} -### 删除项目 +3. 若要删除项目,选择该下拉菜单中的**删除项目**,在弹出的对话框中输入项目名称,点击**确定**。 -1. 在左侧导航栏中选择**项目设置**下的**基本信息**,在页面右侧点击**项目管理**。 - - ![basic-info-page](/images/docs/zh-cn/project-admin/basic-info-page.jpg) - -2. 在下拉列表中选择**删除项目**。 - -3. 在弹出的对话框中输入项目名称,点击**确定**。 - - {{< notice warning >}} + {{< notice warning >}} 项目被删除后无法恢复,项目中的资源也会从项目中移除。 @@ -77,50 +64,38 @@ KubeSphere 中的一个项目是一个 Kubernetes [命名空间](https://kuberne ### 创建多集群项目 -1. 打开企业空间的**项目管理**页面,点击**多集群项目**,再点击**创建**。 - - ![create-multicluster-project](/images/docs/zh-cn/project-admin/create-multicluster-project.jpg) +1. 前往企业空间的**项目管理**页面,点击**多集群项目**选项卡,再点击**创建**。 {{< notice note >}} -- 如果页面上没有**创建**按钮,则表示您的企业空间没有可用的集群。您需要联系平台管理员或集群管理员,以便在集群中创建企业空间资源。平台管理员或集群管理员需要在**集群管理**页面设置[**集群可见性**](../../cluster-administration/cluster-settings/cluster-visibility-and-authorization/),才能将集群分配给企业空间。 +- 如果页面上没有**创建**按钮,则表示您的企业空间没有可用的集群。您需要联系平台管理员或集群管理员,以便在集群中创建企业空间资源。平台管理员或集群管理员需要在**集群管理**页面设置**集群可见性**,才能[将集群分配给企业空间](../../cluster-administration/cluster-settings/cluster-visibility-and-authorization/)。 - 请确保至少有两个集群已分配给您的企业空间。 {{}} -2. 在弹出的**创建多集群项目**对话框中输入项目名称,并根据需要添加别名或说明,点击**添加集群**为项目选择多个集群,然后点击**确定**完成操作。 - - ![create-multicluster-project-page](/images/docs/zh-cn/project-admin/create-multicluster-project-page.jpg) +2. 在弹出的**创建多集群项目**窗口中输入项目名称,并根据需要添加别名或说明。在**集群设置**下,点击**添加集群**为项目选择多个集群,然后点击**确定**。 3. 创建的多集群项目会显示在下图所示的列表中。您可以点击项目名称打开**概览**页面。 - ![multicluster-project-list](/images/docs/zh-cn/project-admin/multicluster-project-list.jpg) + ![multi-cluster-list](/images/docs/zh-cn/project-administration/project-and-multicluster-project/multi-cluster-list.png) -### 编辑多集群项目信息 +### 编辑多集群项目 -1. 在左侧导航栏中选择**项目设置**下的**基本信息**,在页面右侧点击**项目管理**。 +1. 前往您的多集群项目,选择**项目设置**下的**基本信息**,在页面右侧点击**项目管理**。 - ![basic-info-multicluster](/images/docs/zh-cn/project-admin/basic-info-multicluster.jpg) - -2. 在下拉列表中选择**编辑信息**。 +2. 从下拉菜单中选择**编辑信息**。 + ![multi-cluster-basic-information](/images/docs/zh-cn/project-administration/project-and-multicluster-project/multi-cluster-basic-information.png) + {{< notice note >}} -项目名称无法编辑。如需修改其他信息,请参考相应的文档章节。 +项目名称无法编辑。如需修改其他信息,请参考相应的文档教程。 {{}} -### 删除多集群项目 +3. 若要删除多集群项目,选择该下拉菜单中的**删除项目**,在弹出的对话框中输入项目名称,点击**确定**。 -1. 在左侧导航栏中选择**项目设置**下的**基本信息**,在页面右侧点击**项目管理**。 - - ![basic-info-multicluster](/images/docs/zh-cn/project-admin/basic-info-multicluster.jpg) - -2. 在下拉列表中选择**删除项目**。 - -3. 在弹出的对话框中输入项目名称,点击**确定**。 - - {{< notice warning >}} + {{< notice warning >}} 多集群项目被删除后无法恢复,项目中的资源也会从项目中移除。 diff --git a/content/zh/docs/project-administration/role-and-member-management.md b/content/zh/docs/project-administration/role-and-member-management.md index d5fd06ba8..2765a4aae 100644 --- a/content/zh/docs/project-administration/role-and-member-management.md +++ b/content/zh/docs/project-administration/role-and-member-management.md @@ -1,92 +1,84 @@ --- -title: "角色和成员管理" +title: "项目角色和成员管理" keywords: 'KubeSphere, Kubernetes, 角色, 成员, 管理, 项目' description: '了解如何进行项目访问管理。' - -linkTitle: "角色和成员管理" +linkTitle: "项目角色和成员管理" weight: 13200 --- -本教程演示如何管理项目中的角色和成员。 +本教程演示如何在项目中管理角色和成员。在项目级别,您可以向角色授予以下模块中的权限: -您可以在项目范围内向角色授予以下资源的权限: - -- 应用负载 -- 存储 -- 配置 -- 监控告警 -- 项目设置 -- 访问控制 +- **应用负载** +- **存储管理** +- **配置中心** +- **监控告警** +- **访问控制** +- **项目设置** ## 准备工作 -您需要至少创建一个项目(例如 `demo-project`)。 此外,您还需要准备一个在项目层角色为 `admin` 的帐户(例如 `project-admin`)。有关详情请参见[创建企业空间、项目、帐户和角色](../../quick-start/create-workspace-and-project/)。 +您需要至少创建一个项目(例如 `demo-project`)。此外,您还需要准备一个在项目级别具有 `admin` 角色的帐户(例如 `project-admin`)。有关更多信息,请参见[创建企业空间、项目、帐户和角色](../../quick-start/create-workspace-and-project/)。 ## 内置角色 -在**项目角色**页面有三个内置角色。内置角色由 KubeSphere 在项目创建时自动创建,不能编辑或删除。您只能查看其权限列表和授权用户列表。 +**项目角色**页面列出了以下三个可用的内置角色。创建项目时,KubeSphere 会自动创建内置角色,并且内置角色无法进行编辑或删除。您只能查看内置角色的权限或将其分配给用户。 -| 内置角色 | 描述 | -| ------------------ | ------------------------------------------------------------ | -| viewer | 项目观察者,可以查看项目下所有的资源。 | -| operator | 项目维护者,可以管理项目下除用户和角色之外的资源。 | -| admin | 项目管理员,可以对项目下的所有资源执行所有操作。此角色可以完全控制项目下的所有资源。 | + + + + + + + + + + + + + + + + + +
内置角色描述
viewer项目观察者,可以查看项目下所有的资源。
operator项目维护者,可以管理项目下除用户和角色之外的资源。
admin项目管理员,可以对项目下的所有资源执行所有操作。此角色可以完全控制项目下的所有资源。
-1. 在**项目角色**页面,点击 `admin` 查看该角色的详情,如下图所示: +若要查看角色所含权限: - ![view role details](/images/docs/zh-cn/project-admin/project_role_detail.png) +1. 以 `project-admin` 身份登录控制台。在**项目角色**中,点击一个角色(例如,`admin`)以查看角色详情。 -2. 您可以点击**授权用户**选项卡查看被授予 `admin` 角色的用户。 + ![project-role-detail](/images/docs/zh-cn/project-administration/role-and-member-management/project-role-detail.png) + +2. 点击**授权用户**选项卡,查看所有被授予该角色的用户。 ## 创建项目角色 -1. 以 `project-admin` 用户登录控制台,在**项目管理**页面选择一个项目(例如 `demo-project`)。 +1. 转到**项目设置**下的**项目角色**。 + +2. 在**项目角色**中,点击**创建**并设置**角色标识符**(例如,`project-monitor`)。点击**编辑权限**继续。 + +3. 在弹出的窗口中,权限归类在不同的**模块**下。在本示例中,为该角色选择**应用负载**中的**应用负载查看**,以及**监控告警**中的**告警消息查看**和**告警策略查看**。点击**确定**完成操作。 {{< notice note >}} -此处以 `project-admin` 帐户为例。在**访问控制**页面,只要您帐户的角色具有**成员查看**、**角色管理**和**角色查看**权限,该帐户就可用于创建项目角色。 +**依赖于**表示当前授权项依赖所列出的授权项,勾选该权限后系统会自动选上所有依赖权限。 {{}} -2. 打开**项目设置**下的**项目角色**页面,点击**创建**,设置**角色标识符**(此处以创建 `project-monitor` 角色为例),点击**编辑权限**进行下一步。 +4. 新创建的角色将在**项目角色**中列出,点击右侧的 以编辑该角色。 - ![Create a project role](/images/docs/zh-cn/project-admin/project_role_create_step1.png) + ![project-role-list](/images/docs/zh-cn/project-administration/role-and-member-management/project-role-list.png) -3. 选择授予此角色的帐户的权限(例如**应用负载**中的**应用负载查看**,以及**监控告警**中的**告警消息查看**和**告警策略查看**),点击**确定**完成操作。 +## 邀请新成员 - ![Edit Authorization](/images/docs/zh-cn/project-admin/project_role_create_step2.png) +1. 转到**项目设置**下的**项目成员**,点击**邀请成员**。 - {{< notice note >}} +2. 点击右侧的 以邀请一名成员加入项目,并为其分配一个角色。 -某些权限**依赖于**其他权限。要选择从属的权限,必须选择其依赖的权限。 +3. 将成员加入项目后,点击**确定**。您可以在**项目成员**列表中查看新邀请的成员。 - {{}} +4. 若要编辑现有成员的角色或将其从项目中移除,点击右侧的 并选择对应的操作。 -4. 角色创建后会显示在**项目角色**页面。您可以点击角色右边的三个点对其进行编辑。 + ![project-member-list](/images/docs/zh-cn/project-administration/role-and-member-management/project-member-list.png) - ![Edit Roles](/images/docs/zh-cn/project-admin/project_role_list.png) + - {{< notice note >}} - -`project-monitor` 角色在**监控告警**中仅被授予有限的权限,可能无法满足您的需求。此处仅为示例,您可以根据需求创建自定义角色。 - -{{}} - -## 邀请成员 - -1. 选择**项目设置**下的**项目成员**,点击**邀请成员**。 -2. 邀请一个用户加入当前项目,对其授予 `project-monitor` 角色。 - - ![invite member](/images/docs/zh-cn/project-admin/project_invite_member_step2.png) - - {{< notice note >}} - -要进行此操作,该用户必须先被邀请至当前项目的企业空间。 - - {{}} - -3. 点击**确定**。用户被邀请至当前项目后会显示在**项目成员**页面。 - -4. 您可以修改现有成员的角色或将其从项目中移除。 - - ![edit member role](/images/docs/zh-cn/project-admin/project_user_edit.png) diff --git a/content/zh/docs/project-user-guide/configuration/configmaps.md b/content/zh/docs/project-user-guide/configuration/configmaps.md index a54757f08..92a57524c 100644 --- a/content/zh/docs/project-user-guide/configuration/configmaps.md +++ b/content/zh/docs/project-user-guide/configuration/configmaps.md @@ -20,75 +20,54 @@ Kubernetes [ConfigMap](https://kubernetes.io/docs/concepts/configuration/configm ## 创建 ConfigMap -### 步骤 1:进入 ConfigMap 页面 +1. 以 `project-regular` 用户登录控制台并进入项目,在左侧导航栏中选择**配置中心**下的**配置**,然后点击**创建**。 -以 `project-regular` 用户登录控制台并进入项目,在左侧导航栏中选择**配置中心**下的**配置**,然后点击**创建**。 +2. 在出现的对话框中,设置 ConfigMap 的名称(例如 `demo-configmap`),然后点击**下一步**。 -![create-configmap](/images/docs/zh-cn/project-user-guide/configurations/configmaps/create-configmap.jpg) - -### 步骤 2:配置基本信息 - -设置 ConfigMap 的名称(例如 `demo-configmap`),然后点击**下一步**。 - -{{< notice tip >}} + {{< notice tip >}} 您可以在对话框右上角启用**编辑模式**来查看 ConfigMap 的 YAML 清单文件,并通过直接编辑清单文件来创建 ConfigMap。您也可以继续执行后续步骤在控制台上创建 ConfigMap。 {{}} -![set-basic-info](/images/docs/zh-cn/project-user-guide/configurations/configmaps/set-basic-info.jpg) +3. 在**配置设置**选项卡,点击**添加数据**以配置键值对。 -### 步骤 3:配置键值对 - -1. 在**配置设置**选项卡,点击**添加数据**以配置键值对。 - - ![add-data](/images/docs/zh-cn/project-user-guide/configurations/configmaps/add-data.jpg) - -2. 配置一个键值对。下图为示例: +4. 输入一个键值对。下图为示例: ![key-value](/images/docs/zh-cn/project-user-guide/configurations/configmaps/key-value.jpg) {{< notice note >}} - - 配置的键值对会显示在清单文件中的 `data` 字段下。 +- 配置的键值对会显示在清单文件中的 `data` 字段下。 - - 目前 KubeSphere 控制台只支持在 ConfigMap 中配置键值对。未来版本将会支持添加配置文件的路径来创建 ConfigMap。 +- 目前 KubeSphere 控制台只支持在 ConfigMap 中配置键值对。未来版本将会支持添加配置文件的路径来创建 ConfigMap。 - {{}} +{{}} -3. 点击对话框右下角的 **√** 以保存配置。您可以再次点击**添加数据**继续配置更多键值对。 - - ![finish-creating](/images/docs/zh-cn/project-user-guide/configurations/configmaps/finish-creating.jpg) - -4. 配置完成后点击**创建**来生成 ConfigMap。 +5. 点击对话框右下角的 **√** 以保存配置。您可以再次点击**添加数据**继续配置更多键值对。 +6. 点击**创建**以生成 ConfigMap。 ## 查看 ConfigMap 详情 -1. ConfigMap 创建后会显示在如图所示的列表中。您可以点击右边的三个点,并从下拉菜单中选择操作来修改 ConfigMap。 - - ![configmap-list](/images/docs/zh-cn/project-user-guide/configurations/configmaps/configmap-list.jpg) +1. ConfigMap 创建后会显示在**配置**页面。您可以点击右侧的 ,并从下拉菜单中选择操作来修改 ConfigMap。 - **编辑**:查看和编辑基本信息。 - **编辑配置文件**:查看、上传、下载或更新 YAML 文件。 - **修改配置**:修改 ConfigMap 键值对。 - **删除**:删除 ConfigMap。 - + 2. 点击 ConfigMap 名称打开 ConfigMap 详情页面。在**详情**选项卡,您可以查看 ConfigMap 的所有键值对。 - ![detail-page](/images/docs/zh-cn/project-user-guide/configurations/configmaps/detail-page.jpg) + ![detail-page](/images/docs/zh-cn/project-user-guide/configurations/configmaps/detail-page.png) 3. 点击**更多操作**对 ConfigMap 进行其他操作。 - ![configmap-dropdown-menu](/images/docs/zh-cn/project-user-guide/configurations/configmaps/configmap-dropdown-menu.jpg) - - **编辑配置文件**:查看、上传、下载或更新 YAML 文件。 - **修改配置**:修改 ConfigMap 键值对。 - **删除**:删除 ConfigMap 并返回 ConfigMap 列表页面。 - + 4. 点击**编辑信息**来查看和编辑 ConfigMap 的基本信息。 - ![edit-configmap-info](/images/docs/zh-cn/project-user-guide/configurations/configmaps/edit-configmap-info.jpg) - ## 使用 ConfigMap diff --git a/content/zh/docs/project-user-guide/grayscale-release/blue-green-deployment.md b/content/zh/docs/project-user-guide/grayscale-release/blue-green-deployment.md index 4d3a23e09..5372445df 100644 --- a/content/zh/docs/project-user-guide/grayscale-release/blue-green-deployment.md +++ b/content/zh/docs/project-user-guide/grayscale-release/blue-green-deployment.md @@ -21,19 +21,13 @@ weight: 10520 ## 创建蓝绿部署任务 -1. 以 `project-regular` 身份登录 KubeSphere,在**灰度策略**选项卡下,点击**蓝绿部署**右侧的**发布任务**。 - - ![blue-green-1](/images/docs/zh-cn/project-user-guide/grayscale-release/blue-green-deployment/blue-green-1.PNG) +1. 以 `project-regular` 身份登录 KubeSphere,转到**灰度发布**页面,在**灰度策略**选项卡下,点击**蓝绿部署**右侧的**发布任务**。 2. 输入名称然后点击**下一步**。 - ![blue-green-2](/images/docs/zh-cn/project-user-guide/grayscale-release/blue-green-deployment/blue-green-2.PNG) +3. 在**灰度组件**选项卡,从下拉列表选择您的应用以及想实现蓝绿部署的服务。如果您也使用示例应用 Bookinfo,请选择 **reviews** 并点击**下一步**。 -3. 从下拉列表选择您的应用以及想实现蓝绿部署的服务。如果您也使用示例应用 Bookinfo,请选择 **reviews** 并点击**下一步**。 - - ![blue-green-3](/images/docs/zh-cn/project-user-guide/grayscale-release/blue-green-deployment/blue-green-3.PNG) - -4. 如下图所示,在**灰度版本**页面,为其添加另一个版本(例如 `v2`),然后点击**下一步**: +4. 如下图所示,在**灰度版本**选项卡,添加另一个版本(例如 `v2`),然后点击**下一步**: ![blue-green-4](/images/docs/zh-cn/project-user-guide/grayscale-release/blue-green-deployment/blue-green-4.PNG) @@ -43,9 +37,7 @@ weight: 10520 {{}} -5. 要让应用版本 `v2` 接管所有流量,请选择**接管所有流量**,然后点击**创建**。 - - ![blue-green-5](/images/docs/zh-cn/project-user-guide/grayscale-release/blue-green-deployment/blue-green-5.PNG) +5. 在**策略配置**选项卡,要让应用版本 `v2` 接管所有流量,请选择**接管所有流量**,然后点击**创建**。 6. 蓝绿部署任务创建后,会显示在**任务状态**选项卡下。点击可查看详情。 diff --git a/content/zh/docs/project-user-guide/grayscale-release/canary-release.md b/content/zh/docs/project-user-guide/grayscale-release/canary-release.md index 7cc280cf8..8de79b0c3 100644 --- a/content/zh/docs/project-user-guide/grayscale-release/canary-release.md +++ b/content/zh/docs/project-user-guide/grayscale-release/canary-release.md @@ -21,19 +21,13 @@ KubeSphere 基于 [Istio](https://istio.io/) 向用户提供部署金丝雀服 ## 步骤 1:创建金丝雀发布任务 -1. 以 `project-regular` 身份登录 KubeSphere 控制台,在**灰度策略**选项卡下,点击**金丝雀发布**右侧的**发布任务**。 - - ![创建金丝雀发布](/images/docs/zh-cn/project-user-guide/grayscale-release/canary-release/create-canary-release.PNG) +1. 以 `project-regular` 身份登录 KubeSphere 控制台,转到**灰度发布**页面,在**灰度策略**选项卡下,点击**金丝雀发布**右侧的**发布任务**。 2. 设置任务名称,点击**下一步**。 - ![设置名称](/images/docs/zh-cn/project-user-guide/grayscale-release/canary-release/set-task-name.PNG) +3. 在**灰度组件**选项卡,从下拉列表中选择您的应用和要实现金丝雀发布的服务。如果您同样使用示例应用 Bookinfo,请选择 **reviews** 并点击**下一步**。 -3. 从下拉列表中选择您的应用和要实现金丝雀发布的服务。如果您同样使用示例应用 Bookinfo,请选择 **reviews** 并点击**下一步**。 - - ![cabary-release-3](/images/docs/zh-cn/project-user-guide/grayscale-release/canary-release/canary-release-3.PNG) - -4. 在**灰度版本**页面,添加另一个版本(例如 `kubesphere/examples-bookinfo-reviews-v2:1.13.0`;将 `v1` 改为 `v2`)并点击**下一步**,如下图所示: +4. 在**灰度版本**选项卡,添加另一个版本(例如 `kubesphere/examples-bookinfo-reviews-v2:1.13.0`;将 `v1` 改为 `v2`)并点击**下一步**,如下图所示: ![canary-release-4](/images/docs/zh-cn/project-user-guide/grayscale-release/canary-release/canary-release-4.PNG) diff --git a/content/zh/docs/project-user-guide/grayscale-release/traffic-mirroring.md b/content/zh/docs/project-user-guide/grayscale-release/traffic-mirroring.md index 5328abfd6..47b006c8a 100644 --- a/content/zh/docs/project-user-guide/grayscale-release/traffic-mirroring.md +++ b/content/zh/docs/project-user-guide/grayscale-release/traffic-mirroring.md @@ -16,25 +16,17 @@ weight: 10540 ## 创建流量镜像任务 -1. 以 `project-regular` 用户登录 KubeSphere 并进入项目。在左侧导航栏选择**灰度发布**,在页面右侧点击**流量镜像**右边的**发布任务**。 - - ![traffic-mirroring-1](/images/docs/zh-cn/project-user-guide/grayscale-release/traffic-mirroring/traffic-mirroring-1.jpg) +1. 以 `project-regular` 用户登录 KubeSphere 并进入项目。转到**灰度发布**页面,在页面右侧点击**流量镜像**右侧的**发布任务**。 2. 设置发布任务的名称并点击**下一步**。 - ![traffic-mirroring-2](/images/docs/zh-cn/project-user-guide/grayscale-release/traffic-mirroring/traffic-mirroring-2.jpg) +3. 在**灰度组件**选项卡,从下拉列表中选择需要进行流量镜像的应用和对应的服务(本教程以 Bookinfo 应用的 reviews 服务为例),然后点击**下一步**。 -3. 从下拉列表中选择需要进行流量镜像的应用,选择所需的服务(本教程以 Bookinfo 应用的 reviews 服务为例),然后点击**下一步**。 - - ![traffic-mirroring-3](/images/docs/zh-cn/project-user-guide/grayscale-release/traffic-mirroring/traffic-mirroring-3.jpg) - -4. 在**灰度版本**页面,为应用添加另一个版本(例如 `v2`),然后点击**下一步**。 +4. 在**灰度版本**选项卡,为应用添加另一个版本(例如 `v2`),然后点击**下一步**。 ![traffic-mirroring-4](/images/docs/zh-cn/project-user-guide/grayscale-release/traffic-mirroring/traffic-mirroring-4.jpg) -5. 在最后一步点击**创建**。 - - ![traffic-mirroring-5](/images/docs/zh-cn/project-user-guide/grayscale-release/traffic-mirroring/traffic-mirroring-5.jpg) +5. 在**策略配置**选项卡,点击**创建**。 6. 新建的流量镜像任务显示在**任务状态**页面。点击该任务查看详情。 diff --git a/content/zh/docs/project-user-guide/image-builder/s2i-and-b2i-webhooks.md b/content/zh/docs/project-user-guide/image-builder/s2i-and-b2i-webhooks.md index c1bcce012..d161a3b94 100644 --- a/content/zh/docs/project-user-guide/image-builder/s2i-and-b2i-webhooks.md +++ b/content/zh/docs/project-user-guide/image-builder/s2i-and-b2i-webhooks.md @@ -20,7 +20,7 @@ This tutorial demonstrates how to configure S2I and B2I webhooks. ### Step 1: Expose the S2I trigger Service -1. Log in to the KubeSphere web console as `admin`. Click **Platform** in the top left corner and then select **Cluster Management**. +1. Log in to the KubeSphere web console as `admin`. Click **Platform** in the top-left corner and then select **Cluster Management**. 2. In **Services** under **Application Workloads**, select **kubesphere-devops-system** from the drop-down list and click **s2ioperator-trigger-service** to go to its detail page. diff --git a/content/zh/docs/reference/api-docs.md b/content/zh/docs/reference/api-docs.md index 10687e33d..423d4c6b8 100644 --- a/content/zh/docs/reference/api-docs.md +++ b/content/zh/docs/reference/api-docs.md @@ -112,9 +112,9 @@ $ curl -X GET -H "Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ ## API 参考 -KubeSphere API Swagger JSON 文件可以在 https://github.com/kubesphere/kubesphere/tree/release-3.0/api 仓库中找到。 +KubeSphere API Swagger JSON 文件可以在 https://github.com/kubesphere/kubesphere/tree/release-3.1/api 仓库中找到。 -- KubeSphere 已指定 API [Swagger Json](https://github.com/kubesphere/kubesphere/blob/release-3.0/api/ks-openapi-spec/swagger.json) 文件,它包含所有只适用于 KubeSphere 的 API。 -- KubeSphere 已指定 CRD [Swagger Json](https://github.com/kubesphere/kubesphere/blob/release-3.0/api/openapi-spec/swagger.json) 文件,它包含所有已生成的 CRD API 文档,与 Kubernetes API 对象相同。 +- KubeSphere 已指定 API [Swagger Json](https://github.com/kubesphere/kubesphere/blob/release-3.1/api/ks-openapi-spec/swagger.json) 文件,它包含所有只适用于 KubeSphere 的 API。 +- KubeSphere 已指定 CRD [Swagger Json](https://github.com/kubesphere/kubesphere/blob/release-3.1/api/openapi-spec/swagger.json) 文件,它包含所有已生成的 CRD API 文档,与 Kubernetes API 对象相同。 您也可以[点击这里](https://kubesphere.io/api/kubesphere)查看 KubeSphere API 文档。 diff --git a/content/zh/docs/upgrade/_index.md b/content/zh/docs/upgrade/_index.md index 82c267c9b..780db17df 100644 --- a/content/zh/docs/upgrade/_index.md +++ b/content/zh/docs/upgrade/_index.md @@ -11,4 +11,4 @@ icon: "/images/docs/docs.svg" --- -本章演示集群管理员如何将 KubeSphere 升级到 v3.0.0。 \ No newline at end of file +本章演示集群管理员如何将 KubeSphere 升级到 v3.1.0。 \ No newline at end of file diff --git a/content/zh/docs/workspace-administration/department-management.md b/content/zh/docs/workspace-administration/department-management.md index b0db5c28b..178f6d1f7 100644 --- a/content/zh/docs/workspace-administration/department-management.md +++ b/content/zh/docs/workspace-administration/department-management.md @@ -3,7 +3,7 @@ title: "企业组织" keywords: 'KubeSphere, Kubernetes, 部门, 角色, 权限, 用户组' description: '在企业空间中创建部门,将用户分配到不同部门中并授予权限。' linkTitle: "企业组织" -weight: 9700 +weight: 9800 --- 本文档介绍如何管理企业空间中的部门。 diff --git a/content/zh/docs/workspace-administration/project-quotas.md b/content/zh/docs/workspace-administration/project-quotas.md index 3a3b23d66..353de54df 100644 --- a/content/zh/docs/workspace-administration/project-quotas.md +++ b/content/zh/docs/workspace-administration/project-quotas.md @@ -48,7 +48,13 @@ KubeSphere 使用请求 (Request) 和限制 (Limit) 来控制项目中的资源 6. 要更改项目配额,请在**基本信息**页面点击**项目管理**,然后选择**编辑配额**。 -7. 在**项目配额**页面直接更改项目配额,然后点击**确定**。 + {{< notice note >}} + + 对于[多集群项目](../../project-administration/project-and-multicluster-project/#多集群项目),**项目管理**下拉菜单中不会显示**编辑配额**选项。若要为多集群项目设置配额,前往**项目设置**下的**配额管理**,并点击**编辑配额**。请注意,由于多集群项目跨集群运行,您可以为多集群项目针对不同集群分别设置资源配额。 + + {{}} + +7. 在**项目配额**页面更改项目配额,然后点击**确定**。 ## 另请参见 diff --git a/content/zh/docs/workspace-administration/role-and-member-management.md b/content/zh/docs/workspace-administration/role-and-member-management.md index 87607c6a9..6a039eace 100644 --- a/content/zh/docs/workspace-administration/role-and-member-management.md +++ b/content/zh/docs/workspace-administration/role-and-member-management.md @@ -41,7 +41,7 @@ weight: 9400 ![role-details](/images/docs/zh-cn/workspace-administration-and-user-guide/role-and-member-management/role-details.png) -2. 点击**授权用户**选项卡,查看被授予该角色的所有用户。 +2. 点击**授权用户**选项卡,查看所有被授予该角色的用户。 ## 创建企业角色 diff --git a/content/zh/docs/workspace-administration/workspace-quotas.md b/content/zh/docs/workspace-administration/workspace-quotas.md new file mode 100644 index 000000000..68cb695e3 --- /dev/null +++ b/content/zh/docs/workspace-administration/workspace-quotas.md @@ -0,0 +1,43 @@ +--- +title: "企业空间配额" +keywords: 'KubeSphere, Kubernetes, 企业空间, 配额' +description: '设置企业空间配额以管理企业空间中所有项目和 DevOps 工程的总资源用量。' +linkTitle: "企业空间配额" +weight: 9700 +--- + +Workspace quotas are used to control the total resource usage of all projects and DevOps projects in a workspace. Similar to [project quotas](../project-quotas/), workspace quotas contain requests and limits of CPU and memory. Requests make sure projects in the workspace can get the resources they needs as they are specifically guaranteed and reserved. On the contrary, limits ensure that the resource usage of all projects in the workspace can never go above a certain value. + +In [a multi-cluster architecture](../../multicluster-management/), as you need to [assign one or multiple clusters to a workspace](../../cluster-administration/cluster-settings/cluster-visibility-and-authorization/), you can decide the amount of resources that can be used by the workspace on different clusters. + +This tutorial demonstrates how to manage resource quotas for a workspace. + +## Prerequisites + +You have an available workspace and an account (`ws-manager`). The account must have the `workspaces-manager` role at the platform level. For more information, see [Create Workspaces, Projects, Accounts and Roles](../../quick-start/create-workspace-and-project/). + +## Set Workspace Quotas + +1. Log in to the KubeSphere web console as `ws-manager` and go to a workspace. + +2. Navigate to **Quota Management** under **Workspace Settings**. + +3. The **Quota Management** page lists all the available clusters assigned to the workspace and their respective requests and limits of CPU and memory. Click **Edit Quota** on the right of a cluster. + +4. In the dialog that appears, you can see that KubeSphere does not set any requests or limits for the workspace by default. To set requests and limits to control CPU and memory resources, use the slider to move to a desired value or enter numbers directly. Leaving a field blank means you do not set any requests or limits. + + ![edit-workspace-quotas](/images/docs/workspace-administration/workspace-quotas/edit-workspace-quotas.png) + + {{< notice note >}} + + The limit can never be lower than the request. + + {{}} + +5. Click **OK** to finish setting quotas. + +## See Also + +[Project Quotas](../project-quotas/) + +[Container Limit Ranges](../../project-administration/container-limit-ranges/) \ No newline at end of file diff --git a/content/zh/live/3.1-live.md b/content/zh/live/3.1-live.md index 8673e14ad..a7482ca79 100644 --- a/content/zh/live/3.1-live.md +++ b/content/zh/live/3.1-live.md @@ -19,3 +19,5 @@ section1: KubeSphere 3.1 全新发布!主打 “延伸至边缘侧的容器混合云”,新增了对 “边缘计算” 场景的支持。v3.1.0 支持 “计量计费”,让基础设施的运营成本更清晰,进一步优化了在 “多云、多集群、多团队、多租户” 等应用场景下的使用体验,增强了 “多集群管理、多租户管理、可观测性、DevOps、应用商店、微服务治理” 等特性。 此次交流会特面向社区开放交流,将为大家演示 KubeSphere 3.1 新特性与后续规划。 + +![3.1live](https://pek3b.qingstor.com/kubesphere-community/images/3.1live-poster.jpg) \ No newline at end of file diff --git a/content/zh/live/_index.md b/content/zh/live/_index.md index 2d3578d64..97509fef8 100644 --- a/content/zh/live/_index.md +++ b/content/zh/live/_index.md @@ -15,9 +15,9 @@ section2: notice: title: Kubernetes and Cloud Native Meetup ——成都站 timeIcon: /images/live/clock.svg - time: 2021/06/19 14:00 – 18:00 + time: 2021/06/19 13:00 – 18:00 baseIcon: /images/live/base.svg - base: 线上 + 线下 + base: 四川省成都市高新区天府大道中段 500 号天祥广场 B 座 45A + 线上 tag: 预告 url: ./meetup-chengdu/ @@ -28,71 +28,120 @@ section2: section3: videos: + - title: 初识云原生 FaaS 平台及 Serverless 生态 + link: ./faas-hangzhou/ + snapshot: https://pek3b.qingstor.com/kubesphere-community/images/Faas-serverless.png + type: iframe + createTime: 2021.05.29 + group: Meetup + + - title: 基于 KubeSphere 的 Nebula Graph 多云架构管理实践 + link: ./nebulagraph-hangzhou/ + snapshot: https://pek3b.qingstor.com/kubesphere-community/images/nebulagraph.png + type: iframe + createTime: 2021.05.29 + group: Meetup + + - title: KubeSphere + KubeEdge——打造云原生边缘计算服务 + link: ./kubeedge-hangzhou/ + snapshot: https://pek3b.qingstor.com/kubesphere-community/images/KubeSphere-KubeEdge.png + type: iframe + createTime: 2021.05.29 + group: Meetup + + - title: SegmentFault 基于 K8s 的容器化与持续交付实践 + link: ./segmentfault/ + snapshot: https://pek3b.qingstor.com/kubesphere-community/images/SegmentFault-hangzhou.png + type: iframe + createTime: 2021.05.29 + group: Meetup + + - title: 如何利用云原生架构控制系统复杂度-从构建云原生向量搜索 Milvus 讲起 + link: ./milvus-hangzhou/ + snapshot: https://pek3b.qingstor.com/kubesphere-community/images/Milvus-hangzhou.png + type: iframe + createTime: 2021.05.29 + group: Meetup + + - title: 基于 Kubernetes 的新一代 MySQL 高可用架构实现方案 + link: ./mysql-hangzhou/ + snapshot: https://pek3b.qingstor.com/kubesphere-community/images/MySQL-hangzhou.png + type: iframe + createTime: 2021.05.29 + group: Meetup + + - title: “开源社区运营与治理”圆桌交流 + link: ./roundtable-hangzhou/ + snapshot: https://pek3b.qingstor.com/kubesphere-community/images/round-table.png + type: iframe + createTime: 2021.05.29 + group: Meetup + - title: 跳离云原生深水区,KubeSphere 带你远航 - link: //player.bilibili.com/player.html?aid=375675566&bvid=BV1Fo4y117xt&cid=340529916&page=1&high_quality=1 + link: ./ray-shanghai/ snapshot: https://pek3b.qingstor.com/kubesphere-community/images/yuanhang-kubesphere.jpeg type: iframe createTime: 2021.05.15 group: Meetup - title: 混合云下的 K8s 多集群管理及应用部署 - link: //player.bilibili.com/player.html?aid=248246237&bvid=BV17v411L7tG&cid=340534276&page=1&high_quality=1 + link: ./multicluster-shanghai/ snapshot: https://pek3b.qingstor.com/kubesphere-community/images/multicluster-kubesphere.jpeg type: iframe createTime: 2021.05.15 group: Meetup - title: Kubernetes 在媒体直播行业的落地实践 - link: //player.bilibili.com/player.html?aid=205640169&bvid=BV1Jh411v7kG&cid=340538245&page=1&high_quality=1 + link: ./medialive-shanghai/ snapshot: https://pek3b.qingstor.com/kubesphere-community/images/kubesphere-live.jpeg type: iframe createTime: 2021.05.15 group: Meetup - title: 在云原生场景下构建企业级存储方案 - link: //player.bilibili.com/player.html?aid=503177493&bvid=BV1uN411Z7J1&cid=340539595&page=1&high_quality=1 + link: ./neonio-shanghai/ snapshot: https://pek3b.qingstor.com/kubesphere-community/images/qingstor-meetup.jpeg type: iframe createTime: 2021.05.15 group: Meetup - title: MySQL on K8s:开源开放的高可用容器编排方案 - link: //player.bilibili.com/player.html?aid=205670397&bvid=BV1bh411v7Ph&cid=340545938&page=1&high_quality=1 + link: ./mysql-shanghai/ snapshot: https://pek3b.qingstor.com/kubesphere-community/images/MySQLonkubernetes.jpeg type: iframe createTime: 2021.05.15 group: Meetup - title: 中通快递关键业务和复杂架构挑战下的 K8S 集群服务暴露实践 - link: //player.bilibili.com/player.html?aid=760635980&bvid=BV1Z64y1C75y&cid=340544087&page=1&high_quality=1 + link: ./zhongtong-shanghai/ snapshot: https://pek3b.qingstor.com/kubesphere-community/images/cluster-zhongtong.jpeg type: iframe createTime: 2021.05.15 group: Meetup - title: 基于云原生架构下的 DevOps 实践 - link: //player.bilibili.com/player.html?aid=205642662&bvid=BV1Jh411v7jc&cid=340549646&page=1&high_quality=1 + link: ./devops-shanghai/ snapshot: https://pek3b.qingstor.com/kubesphere-community/images/DevOps-cloudnative.jpeg type: iframe createTime: 2021.05.15 group: Meetup - title: KubeSphere v3.1 开源社区交流会直播回放 - link: //player.bilibili.com/player.html?aid=247784540&bvid=BV1Bv411L7Hx&cid=331253914&page=1&high_quality=1 + link: ./3.1-live/ snapshot: https://pek3b.qingstor.com/kubesphere-community/images/v3.1-live.png type: iframe createTime: 2021.04.30 group: 直播回放 - title: 基于 KubeSphere 与 BotKube 搭建 K8s 多集群监控告警体系 - link: //player.bilibili.com/player.html?aid=501141287&bvid=BV13K411u7w9&cid=282696732&page=1&high_quality=1 + link: ./botkube-live/ snapshot: https://pek3b.qingstor.com/kubesphere-community/images/botkube-kubesphere.jpeg type: iframe createTime: 2021.01.15 group: 直播回放 - title: 企业级云原生多租户通知系统 Notification Manager - link: //player.bilibili.com/player.html?aid=373555176&bvid=BV1Eo4y1f7Mi&cid=277936370&page=1&high_quality=1 + link: ./nm-live/ snapshot: https://pek3b.qingstor.com/kubesphere-community/images/notification-kubesphere.jpeg type: iframe createTime: 2021.01.06 @@ -113,7 +162,7 @@ section3: group: Meetup - title: 使用(KubeSphere)QKE管理多个ACK集群 - link: //player.bilibili.com/player.html?aid=801598359&bvid=BV1Xy4y1n764&cid=294877842&page=1&high_quality=1 + link: ./qke-ack/ snapshot: https://pek3b.qingstor.com/kubesphere-community/images/qke-akc.jpeg type: iframe createTime: 2020.12.19 @@ -127,7 +176,7 @@ section3: group: Meetup - title: 云原生的 WebAssembly 能取代 Docker 吗? - link: //player.bilibili.com/player.html?aid=374255852&bvid=BV1wo4y1R7x2&cid=302625819&page=1&high_quality=1 + link: ./webassembly/ snapshot: https://pek3b.qingstor.com/kubesphere-community/images/webassembly-docker.jpeg type: iframe createTime: 2020.12.19 @@ -148,7 +197,7 @@ section3: group: 直播回放 - title: CNCF 网研会:使用 PorterLB 和 KubeSphere 在物理机 Kubernetes 轻松暴露服务 - link: //player.bilibili.com/player.html?aid=885471683&bvid=BV17K4y177YG&cid=261965895&page=1&high_quality=1 + link: ./poterlb-live/ snapshot: https://pek3b.qingstor.com/kubesphere-community/images/duan-kubesphere.jpeg type: iframe createTime: 2020.12.02 @@ -162,7 +211,7 @@ section3: group: 直播回放 - title: Kubernetes 混合云在教育服务行业的最佳实践 - link: //player.bilibili.com/player.html?aid=500396313&bvid=BV14K411V7Zw&cid=259917913&page=1&high_quality=1 + link: ./qingjiao-live/ snapshot: https://pek3b.qingstor.com/kubesphere-community/images/luxingmin-zhibo.jpeg type: iframe createTime: 2020.11.26 diff --git a/content/zh/live/botkube-live.md b/content/zh/live/botkube-live.md index e2ac36677..a572908e8 100644 --- a/content/zh/live/botkube-live.md +++ b/content/zh/live/botkube-live.md @@ -24,6 +24,8 @@ section1: 并进一步演示如何使用 KubeSphere 纳管多个 Kubernetes 集群,结合开源的 BotKube 工具快速搭建多集群监控告警体系,以实现无人驾驶场景云脑服务的监控告警。 +![Botkube poster](https://pek3b.qingstor.com/kubesphere-community/images/Botkube-live-poster.jpg) + ## 下载 PPT -关注 「KubeSphere 云原生」公众号,后台回复 0114 即可下载 PPT。 +可扫描官网底部二维码,关注 「KubeSphere 云原生」公众号,后台回复 0114 即可下载 PPT。 diff --git a/content/zh/live/devops-shanghai.md b/content/zh/live/devops-shanghai.md new file mode 100644 index 000000000..a21db5cfd --- /dev/null +++ b/content/zh/live/devops-shanghai.md @@ -0,0 +1,38 @@ +--- +title: 基于云原生架构下的 DevOps 实践 +description: 在 DevOps 能力建设过程中,对于种类繁多的系统工具选型既要适合自身状况也需适应新技术发展趋势。因此云原生和 DevOps 的技术融合才会发挥最大价值。 +keywords: KubeSphere,Kubernetes,DevOps,bank +css: scss/live-detail.scss + +section1: + snapshot: https://pek3b.qingstor.com/kubesphere-community/images/jianglijie-1.webp + videoUrl: //player.bilibili.com/player.html?aid=205642662&bvid=BV1Jh411v7jc&cid=340549646&page=1&high_quality=1 + type: iframe + time: 2021-05-15 13:00-18:00 + timeIcon: /images/live/clock.svg + base: 线下 + 线上 + baseIcon: /images/live/base.svg +--- + +## 分享人简介 + +蒋立杰 + +苏宁银行,云计算负责人 + +国内云计算业首批技术从业者,阿里云 MVP-云原生领域最有价值专家, 前阿里云金融云首家战略生态系公司云计算架构/DevOps 负责人、前中兴通讯云计算架构专家、中国 DevOps 社区技术专家、DockOne 社区技术专家,KubeSphere 开源社区技术专家、K8sMeetup 社区技术成员。 + +## 分享主题介绍 + +“传统” DevOps 必然会技术演进为“云原生” DevOps,在 DevOps 能力建设过程中,对于种类繁多的系统工具选型既要适合自身状况也需适应新技术发展趋势。因此云原生和 DevOps 的技术融合才会发挥最大价值。 + +![](https://pek3b.qingstor.com/kubesphere-community/images/shanghaiposter-7.webp) + +## 下载 PPT + +可扫描官网底部二维码,关注 「KubeSphere 云原生」公众号,后台回复 “2021 上海” 即可下载 PPT。 + + + + + diff --git a/content/zh/live/faas-hangzhou.md b/content/zh/live/faas-hangzhou.md new file mode 100644 index 000000000..d2e433fe3 --- /dev/null +++ b/content/zh/live/faas-hangzhou.md @@ -0,0 +1,35 @@ +--- +title: 初识云原生 FaaS 平台及 Serverless 生态 +description: 以 Kubernetes 为代表的云原生技术极大的推动了 Serverless 的发展与落地,但目前现有的开源 FaaS 平台都没有充分利用这些云原生 Serverless 技术, OpenFunction 的出现则弥补了这方面的空白。 +keywords: KubeSphere,Kubernetes,FaaS,Serverless,OpenFunction +css: scss/live-detail.scss + +section1: + snapshot: https://pek3b.qingstor.com/kubesphere-community/images/ben-hangzhou.jpeg + videoUrl: //player.bilibili.com/player.html?aid=248447658&bvid=BV1Dv411V7Ku&cid=347150253&page=1&high_quality=1 + type: iframe + time: 2021-05-29 13:00-18:00 + timeIcon: /images/live/clock.svg + base: 线下 + 线上 + baseIcon: /images/live/base.svg +--- + +## 分享人简介 + +霍秉杰 + +青云科技,KubeSphere 架构师 + +OpenFunction 项目发起人,KubeSphere 可观测性、边缘计算相关产品负责人。专注云原生 Serverless、可观测性、边缘计算等领域,是多个云原生项目如 prometheus-operator, Thanos, Loki, kube-state-metrics 等的 Contributor。 + +## 分享主题介绍 + +以 Kubernetes 为代表的云原生技术极大的推动了 Serverless 的发展与落地。Knative, Tekton, Cloud Native Buildpacks, Dapr 和 KEDA 等众多 Serverless 相关领域的云原生技术相继涌现,但目前现有的开源 FaaS 平台都没有充分利用这些云原生 Serverless 技术,OpenFunction 的出现弥补了这方面的空白。 + +本次演讲将介绍云原生 Serverless 领域的最新进展,以及如何利用这些技术打造开源的云原生 FaaS 平台。 + +![](https://pek3b.qingstor.com/kubesphere-community/images/hangzhouposter-1.png) + +## 下载 PPT + +可扫描官网底部二维码,关注 「KubeSphere 云原生」公众号,后台回复 “2021 杭州” 即可下载 PPT。 diff --git a/content/zh/live/kubeedge-hangzhou.md b/content/zh/live/kubeedge-hangzhou.md new file mode 100644 index 000000000..7e9493d24 --- /dev/null +++ b/content/zh/live/kubeedge-hangzhou.md @@ -0,0 +1,45 @@ +--- +title: KubeSphere + KubeEdge——打造云原生边缘计算服务 +description: KubeEdge 是非常流行的边缘计算平台,但是缺少开源容器管理平台在云端控制层面的的支持,此外需要经过较复杂和繁琐的配置才能实现边缘节点纳管及和可观测,KubeSphere 在与 KubeEdge 集成的过程中,着重解决了上述问题,使得 KubeEdge 纳管边缘节点更加方便,并自动实现边缘节点及工作负载的可观测。 +keywords: KubeSphere,Kubernetes,KubeEdge,边缘计算 +css: scss/live-detail.scss + +section1: + snapshot: https://pek3b.qingstor.com/kubesphere-community/images/xufei-hangzhou.jpeg + videoUrl: //player.bilibili.com/player.html?aid=845966924&bvid=BV1654y137iR&cid=347155149&page=1&high_quality=1 + type: iframe + time: 2021-05-29 13:00-18:00 + timeIcon: /images/live/clock.svg + base: 线下 + 线上 + baseIcon: /images/live/base.svg +--- + +## 分享人简介 + +### 分享人一: + +徐飞 + +KubeEdge 社区 Maintainer,华为云高级工程师 + +专注于云原生边缘容器领域,曾在 Kubernetes、Istio 等社区及云原生领域工作多年,协作出版《云原生服务网格Istio》书籍,在云原生和边缘容器等领域拥有丰富的开源社区与商业落地实践经验。 + +### 分享人二: + +霍秉杰 + +KubeSphere 架构师 + +OpenFunction 项目发起人,KubeSphere 可观测性、边缘计算相关产品负责人。专注云原生 Serverless、可观测性、边缘计算等领域,是多个云原生项目如 prometheus-operator, Thanos, Loki, kube-state-metrics 等的 Contributor。 + +## 分享主题介绍 + +本次演讲将由 KubeEdge 和 KubeSphere 社区的 Maintainer 介绍 CNCF 孵化项目 KubeEdge 的架构及最新进展,以及KubeEdge 如何在 KubeSphere 深度集成,共同打造一个通用的云计算的边缘计算平台。 + +![](https://pek3b.qingstor.com/kubesphere-community/images/hangzhouposter-3.png) + +![](https://pek3b.qingstor.com/kubesphere-community/images/hangzhouposter-1.png) + +## 下载 PPT + +可扫描官网底部二维码,关注 「KubeSphere 云原生」公众号,后台回复 “2021 杭州” 即可下载 PPT。 diff --git a/content/zh/live/medialive-shanghai.md b/content/zh/live/medialive-shanghai.md new file mode 100644 index 000000000..25b149ec3 --- /dev/null +++ b/content/zh/live/medialive-shanghai.md @@ -0,0 +1,36 @@ +--- +title: Kubernetes 在媒体直播行业的落地实践 +description: 苏州广播电视总台通过 KubeSphere 满足了媒体处理流程中的海量计算资源需求,KubeSphere 提供的容器编排能力,帮助实现了视频直播节目的高效制作和灵活调度,并且将容器平台集成进了 CI/CD 流程,极大提升了系统的可维护性和安全性。 +keywords: KubeSphere,Kubernetes,CI/CD,媒体 +css: scss/live-detail.scss + +section1: + snapshot: https://pek3b.qingstor.com/kubesphere-community/images/tangming-1.webp + videoUrl: //player.bilibili.com/player.html?aid=205640169&bvid=BV1Jh411v7kG&cid=340538245&page=1&high_quality=1 + type: iframe + time: 2021-05-15 13:00-18:00 + timeIcon: /images/live/clock.svg + base: 线下 + 线上 + baseIcon: /images/live/base.svg +--- + +## 分享人简介 + +唐明 + +苏州市广播电视台,企业 IT 负责人 + +主要工作方向为满足业务需求进行 IT 架构的规划和实施。目前关注包括云原生技术、分布式存储及信息安全方向。 + +## 分享主题介绍 + +苏州广播电视总台通过自建 KubeSphere 容器平台,满足了媒体处理流程中的海量计算资源需求。使用 KubeSphere 容器平台提供的容器编排能力,实现了视频直播节目的高效制作和灵活调度,并且将容器平台集成进了 CI/CD 流程,极大提升了系统的可维护性和安全性,达到了良好的效果。 + +![](https://pek3b.qingstor.com/kubesphere-community/images/shanghaiposter-3.webp) + +## 下载 PPT + +可扫描官网底部二维码,关注 「KubeSphere 云原生」公众号,后台回复 “2021 上海” 即可下载 PPT。 + + + diff --git a/content/zh/live/meetup-chengdu.md b/content/zh/live/meetup-chengdu.md index 5d9b799ae..21c03ac72 100644 --- a/content/zh/live/meetup-chengdu.md +++ b/content/zh/live/meetup-chengdu.md @@ -10,7 +10,7 @@ section1: type: iframe time: 2021-06-19 13:00-18:00 timeIcon: /images/live/clock.svg - base: 线下 + 线上 + base: 四川省成都市高新区天府大道中段 500 号天祥广场 B 座 45A + 线上同步直播 baseIcon: /images/live/base.svg --- @@ -21,10 +21,20 @@ section1: KubeSphere 之所以能够如此快速发展,得益于开源社区带来的天然优势,以及社区里长期活跃的用户、贡献者积极参与社区,帮助推动产品和社区快速成长,我们坚持认为 KubeSphere 开源社区的每一位用户和贡献者朋友都是 KubeSphere 生态中的重要组成部分。 -为了跟社区新老朋友们零距离交流,我们将联合 CNCF 和其他合作伙伴,从五月到七月,在上海、杭州、深圳、成都这四个城市分别为大家带来技术的交流与碰撞。2021 年继上海站首次 Meetup 火爆全场之后,我们将依旧延续 KubeSphere and Friends 的主题,于 6 月 19 日在成都为大家带来 Kubernetes and Cloud Native Meetup。 +为了跟社区新老朋友们零距离交流,我们将联合 CNCF、APISIX 以及其他合作伙伴,从五月到七月,在上海、杭州、成都、深圳这四个城市分别为大家带来技术的交流与碰撞。上海站和杭州站圆满落幕之后,我们将延续 KubeSphere and Friends 的主题,于 6 月 19 日在成都为大家带来 Kubernetes and Cloud Native Meetup。 ## 活动议程 待定 -敬请期待! \ No newline at end of file +敬请期待! + +## 活动时间和地点 + +活动时间:6月19日 下午 13:00-18:00 + +活动地点:四川省成都市高新区天府大道中段 500 号天祥广场 B 座 45A + +## 报名已经开启 + +![](https://pek3b.qingstor.com/kubesphere-community/images/chengdumeetup.png) \ No newline at end of file diff --git a/content/zh/live/meetup-hangzhou.md b/content/zh/live/meetup-hangzhou.md index 055f65de0..9c7a23f62 100644 --- a/content/zh/live/meetup-hangzhou.md +++ b/content/zh/live/meetup-hangzhou.md @@ -1,39 +1,118 @@ --- title: KubeSphere and Friends | Kubernetes and Cloud Native Meetup ——杭州站 -description: 为了跟社区新老朋友们零距离交流,我们将联合 CNCF 和其他合作伙伴,从五月到七月,在上海、杭州、深圳、成都这四个城市分别为大家带来技术的交流与碰撞。2021 年继上海站首次 Meetup 火爆全场之后,我们将依旧延续 KubeSphere and Friends 的主题,于 5 月 29 日杭州为大家带来 Kubernetes and Cloud Native Meetup。 -keywords: KubeSphere,Meetup,Hangzhou +description: KubeSphere and Friends 2021,Kubernetes and Cloud Native Meetup 第二站杭州站顺利举办,围绕“云原生、边缘云、Serverless、DevOps”等火热话题,来自 IT、KubeEdge 社区、SementFault(思否)社区等行业技术大牛、嘉宾以及社区伙伴带来最新的思考与实践。 +keywords: KubeSphere,Meetup,Hangzhou,Serverless,FaaS,OpenFunction,KubeEdge css: scss/live-detail.scss section1: - snapshot: https://pek3b.qingstor.com/kubesphere-community/images/meetup-hangzhou-kv.png - liveUrl: http://live.bilibili.com/22580654 + snapshot: + videoUrl: type: iframe - time: 2021-05-29 14:00-18:00 + time: 2021-05-29 13:00-18:00 timeIcon: /images/live/clock.svg - base: 浙江省杭州市拱墅区丰潭路430号丰元国际大厦A座硬趣空间地下一层 + 线上直播 + base: 浙江省杭州市拱墅区丰潭路 430 号丰元国际大厦 A 座硬趣空间地下一层 + 线上同步直播 baseIcon: /images/live/base.svg --- +
KubeSphere and Friends 2021
-## 背景 +
Kubernetes and Cloud Native Meetup
-以容器技术和容器编排为基础的云原生应用,被越来越多的企业用户接受和使用,并且在生产环境中使用容器技术的比例逐年增加。KubeSphere 作为一款面向应用的开源容器混合云,经过 3 年的发展和 10 个版本的迭代,收获了一百多位开源贡献者,超过十万次下载,并有数千名社区用户用 KubeSphere 作为企业容器云平台。 +
第二站杭州站顺利举办🎉🎉🎉
-KubeSphere 之所以能够如此快速发展,得益于开源社区带来的天然优势,以及社区里长期活跃的用户、贡献者积极参与社区,帮助推动产品和社区快速成长,我们坚持认为 KubeSphere 开源社区的每一位用户和贡献者朋友都是 KubeSphere 生态中的重要组成部分。 +
围绕“云原生、边缘云、Serverless、DevOps”等火热话题
-为了跟社区新老朋友们零距离交流,我们将联合 CNCF 和其他合作伙伴,从五月到七月,在上海、杭州、深圳、成都这四个城市分别为大家带来技术的交流与碰撞。2021 年继上海站首次 Meetup 火爆全场之后,我们将依旧延续 KubeSphere and Friends 的主题,于 5 月 29 日杭州为大家带来 Kubernetes and Cloud Native Meetup。 +
来自 IT、KubeEdge 社区、SementFault(思否)社区等行业技术大牛、嘉宾
-## 活动议程 +
以及社区伙伴带来最新的思考与实践
-![agenda](https://pek3b.qingstor.com/kubesphere-community/images/agenda-hangzhou.png) +
都有哪些令人难忘的精彩环节和瞬间呢?
-## 直播参与 +
一起来看看
-我们将会在青云官方直播间、“KubeSphere” 视频号、B 站以及“青云QingCloud” 视频号等多个平台进行同步直播。您可以选择其中任一平台进行观看。 +
-青云官方直播间和 “KubeSphere” B 站平台将进行 4 轮抽奖,您可以在观看直播的同时,还有机会获得 KubeSphere 定制周边纪念品以及 Kubernetes 技术丛书。 +## OpenFunction 开源:初识云原生 FaaS 平台及 Serverless 生态 -另外,您还可以参与“分享有礼”活动。扫码后点击“邀请”分享海报,带领小伙伴一起参与线上直播。截止到 5 月 29 日 18:00 ,排行榜前 10 名的小伙伴将获得 KubeSphere 定制周边礼品。 +![](https://pek3b.qingstor.com/kubesphere-community/images/ben-hangzhou.jpeg) -所以,除了可以在线上观看各位技术大牛的分享之外,还可以参与有奖活动“抢夺”精美礼品。机会难得,抓紧扫描下方海报中的二维码报名参与吧! +讲师:霍秉杰 -![live](https://pek3b.qingstor.com/kubesphere-community/images/live-hangzhoumeetup.png) \ No newline at end of file +个人介绍:KubeSphere 架构师 + +演讲概要:以 Kubernetes 为代表的云原生技术极大的推动了 Serverless 的发展与落地,但目前现有的开源 FaaS 平台都没有充分利用这些云原生 Serverless 技术, OpenFunction 的出现则弥补了这方面的空白。 + + + +## 基于 KubeSphere 的 Nebula Graph 多云架构管理实践 + +![](https://pek3b.qingstor.com/kubesphere-community/images/qiaolei-hangzhou.jpeg) + +讲师:乔雷 + +个人介绍:Nebula Graph 图数据库工程师 + +演讲概要:在当下的云原生时代,Kubernetes 早已是容器编排领域的事实标准,Nebula Graph 也同样使用 Kubernetes 来编排,KubeSphere 作为我们的多 K8s 集群管理平台,在集群管理上发挥着至关重要的作用。 + + + +## KubeSphere + KubeEdge: 打造云原生边缘计算服务 + +![](https://pek3b.qingstor.com/kubesphere-community/images/xufei-hangzhou.jpeg) + +![](https://pek3b.qingstor.com/kubesphere-community/images/ben-hangzhou.jpeg) + +讲师:徐飞、霍秉杰 + +个人介绍:KubeEdge 社区 Maintainer、KubeSphere 架构师 + +演讲概要:KubeEdge 是非常流行的边缘计算平台,但是缺少开源容器管理平台在云端控制层面的的支持,此外需要经过较复杂和繁琐的配置才能实现边缘节点纳管及和可观测,KubeSphere 在与 KubeEdge 集成的过程中,着重解决了上述问题,使得 KubeEdge 纳管边缘节点更加方便,并自动实现边缘节点及工作负载的可观测。 + + + +## SegmentFault 基于 Kubernetes 的容器化与持续交付实践 + +![](https://pek3b.qingstor.com/kubesphere-community/images/qining-hangzhou.jpeg) + +讲师:祁宁 + +个人介绍:SementFault(思否)CTO & 联合创始人 + +演讲概要:SegmentFault(思否)是目前中文领域最大的编程问答交流社区平台,为了进一步扩大互联网业务的规模,我们将思否社区的 Web 与后端服务进行微服务与容器化改造,并结合 KubeSphere 完成了互联网业务在 Kubernetes 平台的快速发布与自动化管理。 + + + +## 如何利用云原生架构控制系统复杂度-从构建云原生向量搜索 Milvus 讲起 + +![](https://pek3b.qingstor.com/kubesphere-community/images/luanxiaofan-hangzhou.jpeg) + +讲师:栾小凡 + +个人介绍:Zilliz 工程总监 + +演讲概要:分布式系统的最大敌人就是复杂性,通过云原生架构设计就可以极大降低系统的复杂度,也更加易扩展,易于理解和维护。 + + + +## 基于 Kubernetes 的新一代 MySQL 高可用架构实现方案 + +![](https://pek3b.qingstor.com/kubesphere-community/images/gaoriyao-1.png) + +讲师:高日耀 + +个人介绍:资深 MySQL 内核研发 + +演讲概要:MySQL 是世界上最流行的数据库,从物理机到私有云公有云都有它的身影,但是基于 k8s 的 MySQL 高可用集群还是一片处女地。RadonDB MySQL 是基于 MySQL 的高可用、云原生的解决方案,在容器化方面进行了一些探索,支持主从秒级切换,确保业务高可用。主节点发生故障时,集群自动响应并选出新的主节点,从节点发生故障可自动重建并与主节点保持一致。 + + + +## “开源社区运营与治理”圆桌交流 + +![](https://pek3b.qingstor.com/kubesphere-community/images/roundtable-hangzhou.jpeg) + +本次圆桌交流主要讨论了两个话题: +- 参与开源项目贡献给个人开发者和企业带来的好处是什么? +- 如何评估开源项目和开源社区的健康程度和活跃度?如何提升开源社区的健康与活跃程度? + + + +> 杭州站 Meetup 圆满收官!可扫描官网底部二维码关注 「KubeSphere云原生」 公众号,后台回复 “2021 杭州” 获取下载链接。 \ No newline at end of file diff --git a/content/zh/live/meetup-shanghai.md b/content/zh/live/meetup-shanghai.md index c40119c38..3b2bfa121 100644 --- a/content/zh/live/meetup-shanghai.md +++ b/content/zh/live/meetup-shanghai.md @@ -1,14 +1,14 @@ --- title: KubeSphere and Friends | Kubernetes and Cloud Native Meetup ——上海站 description: KubeSphere and Friends 2021,Kubernetes and Cloud Native Meetup 首站上海站顺利举办,围绕“云原生、边缘云、微服务、DevOps”等火热话题,来自 IT、金融、物流、媒体等行业技术大牛、嘉宾以及社区伙伴带来最新的思考与实践。 -keywords: KubeSphere,Meetup,Shanghai +keywords: KubeSphere,Meetup,Shanghai,多集群,Kubernetes,DevOps css: scss/live-detail.scss section1: snapshot: videoUrl: type: iframe - time: 2021-05-13 13:00-18:00 + time: 2021-05-15 13:00-18:00 timeIcon: /images/live/clock.svg base: 上海市虹口区杨树浦路 188 号 2 号楼 102 赤兔创业咖啡 + 线上同步直播 baseIcon: /images/live/base.svg @@ -115,4 +115,4 @@ section1: -> 上海站 Meetup 圆满收官!分享内容可关注 「KubeSphere云原生」 公众号后台回复 “2021上海” 获取下载链接。 \ No newline at end of file +> 上海站 Meetup 圆满收官!可扫描官网底部二维码关注 「KubeSphere云原生」 公众号,后台回复 “2021 上海” 获取下载链接。 \ No newline at end of file diff --git a/content/zh/live/milvus-hangzhou.md b/content/zh/live/milvus-hangzhou.md new file mode 100644 index 000000000..788077e03 --- /dev/null +++ b/content/zh/live/milvus-hangzhou.md @@ -0,0 +1,34 @@ +--- +title: 如何利用云原生架构控制系统复杂度-从构建云原生向量搜索 Milvus 讲起 +description: 分布式系统的最大敌人就是复杂性,通过云原生架构设计就可以极大降低系统的复杂度,也更加易扩展,易于理解和维护。 +keywords: KubeSphere,Kubernetes,Milvus,向量搜索 +css: scss/live-detail.scss + +section1: + snapshot: https://pek3b.qingstor.com/kubesphere-community/images/luanxiaofan-hangzhou.jpeg + videoUrl: //player.bilibili.com/player.html?aid=758412870&bvid=BV1A64y1R7iy&cid=347160163&page=1&high_quality=1 + type: iframe + time: 2021-05-29 13:00-18:00 + timeIcon: /images/live/clock.svg + base: 线下 + 线上 + baseIcon: /images/live/base.svg +--- + +## 分享人简介 + +栾小凡 + +Zilliz 工程总监 + +毕业于康奈尔大学计算机硕士,从事存储,数据库开发和架构设计7年。在加入 Zilliz 之前曾任职于甲骨文,Hedvig,阿里云云数据库团队。目前负责开源向量搜索引擎 Milvus 和 Zilliz 云平台的研发工作。 + +## 分享主题介绍 + +分布式系统的最大敌人就是复杂性,好的系统设计要求易拓展,高可用,高性能,但最重要的是易于理解和维护。我们将从Milvus2.0的设计讲起,聊聊系统设计中的tradeoff,以及如何利用云原生做出好的架构。 + +![](https://pek3b.qingstor.com/kubesphere-community/images/hangzhouposter-5.webp) + +## 下载 PPT + +可扫描官网底部二维码,关注 「KubeSphere 云原生」公众号,后台回复 “2021 杭州” 即可下载 PPT。 + diff --git a/content/zh/live/multicluster-shanghai.md b/content/zh/live/multicluster-shanghai.md new file mode 100644 index 000000000..f058697aa --- /dev/null +++ b/content/zh/live/multicluster-shanghai.md @@ -0,0 +1,35 @@ +--- +title: 混合云下的 K8s 多集群管理及应用部署 +description: KubeSphere 基于 kubefed 实现了多集群之间的联邦,简化了应用分发时的复杂度,但同时也引入了中心化的控制层。就像 k8s 社区从 federation v1 演变到 v2 那样,我们相信未来一定会有类似于 v3 这样的项目,既能不引入复杂的 API,又能减少对控制层的依赖,KubeSphere 也在密切关注这个领域的发展。 +keywords: KubeSphere,Kubernetes,kubefed,多集群 +css: scss/live-detail.scss + +section1: + snapshot: https://pek3b.qingstor.com/kubesphere-community/images/liyu-1.webp + videoUrl: //player.bilibili.com/player.html?aid=248246237&bvid=BV17v411L7tG&cid=340534276&page=1&high_quality=1 + type: iframe + time: 2021-05-15 13:00-18:00 + timeIcon: /images/live/clock.svg + base: 线下 + 线上 + baseIcon: /images/live/base.svg +--- + +## 分享人简介 + +李宇 + +青云科技,KubeSphere 平台研发工程师 + +KubeSphere 平台研发工程师, contributor of kubernetes-sigs, 目前负责 KubeSphere 多集群方向研发工作。 + +## 分享主题介绍 + +介绍 Kubernetes 社区多集群方向的发展历程以及已有的多集群解决方案,分享在混合云的场景下, KubeSphere 如何基于 kubefed 统一应用的分发与部署,以达到跨 region 的多活/容灾等目的。同时探讨未来多集群领域可能迈向的去中心化的架构。 + +![](https://pek3b.qingstor.com/kubesphere-community/images/shanghaiposter-2.webp) + +## 下载 PPT + +可扫描官网底部二维码,关注 「KubeSphere 云原生」公众号,后台回复 “2021 上海” 即可下载 PPT。 + + diff --git a/content/zh/live/mysql-hangzhou.md b/content/zh/live/mysql-hangzhou.md new file mode 100644 index 000000000..a5e7eada5 --- /dev/null +++ b/content/zh/live/mysql-hangzhou.md @@ -0,0 +1,35 @@ +--- +title: 基于 Kubernetes 的新一代 MySQL 高可用架构实现方案 +description: MySQL 是世界上最流行的数据库,从物理机到私有云公有云都有它的身影,但是基于 K8s 的 MySQL 高可用集群还是一片处女地。RadonDB MySQL 是基于 MySQL 的高可用、云原生的解决方案,在容器化方面进行了一些探索,支持主从秒级切换,确保业务高可用。主节点发生故障时,集群自动响应并选出新的主节点,从节点发生故障可自动重建并与主节点保持一致。 +keywords: KubeSphere,Kubernetes,MySQL,RadonDB +css: scss/live-detail.scss + +section1: + snapshot: https://pek3b.qingstor.com/kubesphere-community/images/luanxiaofan-hangzhou.jpeg + videoUrl: //player.bilibili.com/player.html?aid=333433521&bvid=BV1YA41137MQ&cid=347162028&page=1&high_quality=1 + type: iframe + time: 2021-05-29 13:00-18:00 + timeIcon: /images/live/clock.svg + base: 线下 + 线上 + baseIcon: /images/live/base.svg +--- + +## 分享人简介 + +高日耀 + +青云科技,资深 MySQL 内核研发 + +RadonDB Orgnization 发起者,长期从事分布式数据库内核研发,喜欢研究主流数据库架构,源码。曾参与分布式 MPP 数据库 CirroData 内核开发(东方国信)。目前就职于青云,负责 RadonDB MySQL (云原生 HA)、分布式数据库 RadonDB-D MySQL 内核开发。 + +## 分享主题介绍 + +上海场我们介绍了 MySQL on K8s 的高可用容器编排方案背景,技术选型,以及初步探讨了该方案的架构,杭州场将深度解析该方案基于 Helm 的源码实现和 Xenon 组件的架构源码。 + +![](https://pek3b.qingstor.com/kubesphere-community/images/hangzhouposter-6.png) + +## 下载 PPT + +可扫描官网底部二维码,关注 「KubeSphere 云原生」公众号,后台回复 “2021 杭州” 即可下载 PPT。 + + diff --git a/content/zh/live/mysql-shanghai.md b/content/zh/live/mysql-shanghai.md new file mode 100644 index 000000000..72b00bb46 --- /dev/null +++ b/content/zh/live/mysql-shanghai.md @@ -0,0 +1,36 @@ +--- +title: MySQL on K8s:开源开放的高可用容器编排方案 +description: 传统方式部署的 MySQL 在运维成本和资源弹性方面极具挑战,而 RadonDB 借助云原生有状态应用弥补了运维成本和弹性方面的不足,充分利用云的特点,实现基于云原生的高可用 MySQL 集群解决方案。 +keywords: KubeSphere,Kubernetes,MySQL,RadonDB +css: scss/live-detail.scss + +section1: + snapshot: https://pek3b.qingstor.com/kubesphere-community/images/gaoriyao-1.webp + videoUrl: //player.bilibili.com/player.html?aid=205670397&bvid=BV1bh411v7Ph&cid=340545938&page=1&high_quality=1 + type: iframe + time: 2021-05-15 13:00-18:00 + timeIcon: /images/live/clock.svg + base: 线下 + 线上 + baseIcon: /images/live/base.svg +--- + +## 分享人简介 + +高日耀 + +青云科技,资深 MySQL 内核研发 + +RadonDB Orgnization 发起者,长期从事分布式数据库内核研发,喜欢研究主流数据库架构,源码。曾参与分布式 MPP 数据库 CirroData 内核开发(东方国信)。目前就职于青云,负责 RadonDB MySQL (云原生 HA)、分布式数据库 RadonDB-D MySQL 内核开发。 + +## 分享主题介绍 + +分享内容主要围绕当前 MySQL 运维遇到的挑战(成本、传统部署、运维、弹性资源等)和主流的解决方案,由当前火热的 Docker 和 Kubernetes 技术以及 MySQL 容器化的需求,分析了 MySQL 容器化的原因和 MySQL 容器化需要考虑的问题。围绕 helm,operator 做的技术选型,什么是 RadonDB,什么是 RadonDB MySQL,整体容器化的一个架构。以及借助 ChaosBlade 和 Kubenetes e2e 来保障 RadonDB MySQL 的质量和前景展望。 + +![](https://pek3b.qingstor.com/kubesphere-community/images/shanghaiposter-5.webp) + +## 下载 PPT + +可扫描官网底部二维码,关注 「KubeSphere 云原生」公众号,后台回复 “2021 上海” 即可下载 PPT。 + + + diff --git a/content/zh/live/nebulagraph-hangzhou.md b/content/zh/live/nebulagraph-hangzhou.md new file mode 100644 index 000000000..619b498c8 --- /dev/null +++ b/content/zh/live/nebulagraph-hangzhou.md @@ -0,0 +1,35 @@ +--- +title: 基于 KubeSphere 的 Nebula Graph 多云架构管理实践 +description: 在当下的云原生时代,Kubernetes 早已是容器编排领域的事实标准,Nebula Graph 也同样使用 Kubernetes 来编排,KubeSphere 作为我们的多 K8s 集群管理平台,在集群管理上发挥着至关重要的作用。 +keywords: KubeSphere,Kubernetes,Nebula Graph,vesoft +css: scss/live-detail.scss + +section1: + snapshot: https://pek3b.qingstor.com/kubesphere-community/images/qiaolei-hangzhou.jpeg + videoUrl: //player.bilibili.com/player.html?aid=460886659&bvid=BV1u5411M7hr&cid=347153258&page=1&high_quality=1 + type: iframe + time: 2021-05-29 13:00-18:00 + timeIcon: /images/live/clock.svg + base: 线下 + 线上 + baseIcon: /images/live/base.svg +--- + +## 分享人简介 + +乔雷 + +Nebula Graph 图数据库工程师 + +vesoft 云原生软件工程师,负责开源分布式图数据库 Nebula Graph 云产品基础设施服务的搭建设计,在云原生领域有丰富的工程经验。 + +## 分享主题介绍 + +vesoft 为开源的分布式图数据库 Nebula Graph 提供了配套的 DBaaS 平台 Nebula Cloud,供用户便捷地在云端体检可视化图探索、数据分析等功能。Nebula Cloud 是在云厂商提供的基础设施层之上构建的数据库服务平台,因此如何适配平台的差异性,管理多个云上的资源是重中之重。 + +在当下的云原生时代,Kubernetes 早已是容器编排领域的事实标准,Nebula Graph 也同样使用 Kubernetes 来编排。KubeSphere 作为我们的多 K8s 集群管理平台,在集群管理上发挥着至关重要的作用。 + +![](https://pek3b.qingstor.com/kubesphere-community/images/hangzhouposter-2.png) + +## 下载 PPT + +可扫描官网底部二维码,关注 「KubeSphere 云原生」公众号,后台回复 “2021 杭州” 即可下载 PPT。 diff --git a/content/zh/live/neonio-shanghai.md b/content/zh/live/neonio-shanghai.md new file mode 100644 index 000000000..fd070f207 --- /dev/null +++ b/content/zh/live/neonio-shanghai.md @@ -0,0 +1,36 @@ +--- +title: 在云原生场景下构建企业级存储方案 +description: 有状态应用在 K8s 上的部署增多,激发数据需要云原生存储。NeonIO 从性能和应用场景可以弥补当前存储方案的不足,帮助客户解决数据存储问题。 +keywords: KubeSphere,Kubernetes,NeinIO,云原生存储 +css: scss/live-detail.scss + +section1: + snapshot: https://pek3b.qingstor.com/kubesphere-community/images/yangxingxiang-1.webp + videoUrl: //player.bilibili.com/player.html?aid=503177493&bvid=BV1uN411Z7J1&cid=340539595&page=1&high_quality=1 + type: iframe + time: 2021-05-15 13:00-18:00 + timeIcon: /images/live/clock.svg + base: 线下 + 线上 + baseIcon: /images/live/base.svg +--- + +## 分享人简介 + +杨兴祥 + +QingStor 高级软件工程师 + +2012 年开始先后在创新科、华为从事存储相关的开发工作,在分布式存储领域有丰富的开发经验,目前负责 QingStor NeonIO 云原生存储的开发工作。 + +## 分享主题介绍 + +随着云原生技术的日益普及的今天,对于无状态的应用已经非常成熟,有非常好的平滑扩展能力,但对于有状态的应用,数据需要持久化存储(即云原生存储),这还有很大提升的空间,面临着很多挑战。本次分享了云原生存储面临的挑战和常见的存储解决方案, 同时面对目前存储方案的不足和客户痛点,云原生存储 NeonIO 从性能、应用场景是如何应对的。 + +![](https://pek3b.qingstor.com/kubesphere-community/images/shanghaiposter-4.webp) + +## 下载 PPT + +可扫描官网底部二维码,关注 「KubeSphere 云原生」公众号,后台回复 “2021 上海” 即可下载 PPT。 + + + diff --git a/content/zh/live/nm-live.md b/content/zh/live/nm-live.md index 0e65da9ce..bce86603b 100644 --- a/content/zh/live/nm-live.md +++ b/content/zh/live/nm-live.md @@ -1,5 +1,5 @@ --- -title: 企业级云原生多租户通知系统Notification Manager +title: 企业级云原生多租户通知系统 Notification Manager description: KubeSphere 可观察性研发工程师带大家详细解读社区新开源的 Notification Manager 企业级云原生多租户通知系统。Notification Manager 支持从 Alertmanager 接收通知消息,并发送到用户配置的通知接收渠道,包括邮件、企业微信、Slack、钉钉、Webhook,未来也可以加入从其他 Source 接收消息并发送通知的功能。 keywords: KubeSphere,notifaction manager,altermanager css: scss/live-detail.scss @@ -17,3 +17,5 @@ section1: ## 导引 KubeSphere 可观察性研发工程师带大家详细解读社区新开源的 Notification Manager 企业级云原生多租户通知系统。Notification Manager 支持从 Alertmanager 接收通知消息,并发送到用户配置的通知接收渠道,包括邮件、企业微信、Slack、钉钉、Webhook,未来也可以加入从其他 Source 接收消息并发送通知的功能。 + +![notification poster](https://pek3b.qingstor.com/kubesphere-community/images/notification-live-poster.png) \ No newline at end of file diff --git a/content/zh/live/poterlb-live.md b/content/zh/live/poterlb-live.md index 83a3d3be6..aeab9a388 100644 --- a/content/zh/live/poterlb-live.md +++ b/content/zh/live/poterlb-live.md @@ -16,12 +16,14 @@ section1: ## 分享人介绍 -段炯 —— 原 KubeSphere 容器平台容器网络研发工程师 +段炯 —— KubeSphere 容器平台容器网络研发工程师 -个人简介:段炯原是青云 QingCloud 的一名高级容器网络研发工程师,他是开源项目 PorterLB 和 KubeSphere 核心维护者,也是 Kubernetes 和 OpenStack 网络领域的专家,他参与设计了 KubeSphere 开源容器平台的 Network Policy 相关功能。 +个人简介:段炯是青云 QingCloud 的一名高级容器网络研发工程师,他是开源项目 PorterLB 和 KubeSphere 核心维护者,也是 Kubernetes 和 OpenStack 网络领域的专家,他参与设计了 KubeSphere 开源容器平台的 Network Policy 相关功能。 ## 摘要 +![porter](https://pek3b.qingstor.com/kubesphere-community/images/porter-1.jpg) + 众所周知,公有云 (如 AWS、GCP) 通常提供负载均衡器来分配 IP 在托管 Kubernetes 集群暴露服务。然而,Kubernetes 并没有为物理机环境提供负载均衡器,这使得物理机在生态系统中处于二等公民的地位。 而 PorterLB 允许在裸金属 Kubernetes 集群对外暴露服务,使用户获得与云端暴露服务的一致体验。用户可以使用开源的 KubeSphere 一键安装部署 PorterLB 至 Kubernetes 物理机集群,轻松对外管理和暴露 LoadBalancer 类型的服务。 diff --git a/content/zh/live/qingjiao-live.md b/content/zh/live/qingjiao-live.md index 50b14ae2f..d19b67838 100644 --- a/content/zh/live/qingjiao-live.md +++ b/content/zh/live/qingjiao-live.md @@ -38,3 +38,6 @@ section1: - 统一认证实践:基于 KubeSphere 开发 Oauth 插件 - 基于 KubeSphere 的应用自定义监控实践 + + +![直播海报](https://pek3b.qingstor.com/kubesphere-community/images/qingjiao-live-poster.jpg) \ No newline at end of file diff --git a/content/zh/live/qke-ack.md b/content/zh/live/qke-ack.md new file mode 100644 index 000000000..34b92f311 --- /dev/null +++ b/content/zh/live/qke-ack.md @@ -0,0 +1,35 @@ +--- +title: 应用发布与多集群管理:使用 QKE 管理多个 ACK 集群 +description: QKE 可以提供开箱即用、高可用的 KubeSphere,而业务负载可能分散在不同的云服务商中,在异构的云环境中管理多个 Kubernetes 集群便成为不可或缺的能力。 +keywords: KubeSphere,Kubernetes,QKE,ACK +css: scss/live-detail.scss + +section1: + snapshot: https://pek3b.qingstor.com/kubesphere-community/images/qke-akc.jpeg + videoUrl: //player.bilibili.com/player.html?aid=801598359&bvid=BV1Xy4y1n764&cid=294877842&page=1&high_quality=1 + type: iframe + time: 2020-12-19 13:00-18:00 + timeIcon: /images/live/clock.svg + base: 线下 + 线上 + baseIcon: /images/live/base.svg +--- + +## 分享人简介 + +卢兴民 + +北京红亚华宇科技有限公司,CTO + +## 分享主题介绍 + +QKE 可以提供开箱即用、高可用的 KubeSphere,而业务负载可能分散在不同的云服务商中,在异构的云环境中管理多个 Kubernetes 集群便成为不可或缺的能力。 + +## 大纲 + +- 多云与多集群统一纳管 (以 ACK 作为 KubeSphere Member 集群为例) +- 多集群管理的网络通信方式 (直连与代理连接) +- 多集群应用的 CD 开源方案 Spinnaker 介绍 + +## 下载 PPT + +可扫描官网底部二维码,关注 「KubeSphere 云原生」公众号,后台回复 “PPT” 即可下载 PPT。 diff --git a/content/zh/live/ray-shanghai.md b/content/zh/live/ray-shanghai.md new file mode 100644 index 000000000..ba44e1505 --- /dev/null +++ b/content/zh/live/ray-shanghai.md @@ -0,0 +1,35 @@ +--- +title: 跳离云原生深水区,KubeSphere 带你远航 +description: 容器和 K8s 是云原生体系发展的基石,但大部分容器产品体验参差不齐,最大的痛点在于没有解决产品体验的一致性,KubeSphere 以应用服务的视角做产品,在管理与运维上,实现了真正的一致性体验,让用户轻松驾驭混合多云。KubeSphere 作为一款全球化的开源产品,在最近一年得到了广大用户的支持,下载增幅达 275%。 +keywords: KubeSphere,Kubernetes,云原生,混合云 +css: scss/live-detail.scss + +section1: + snapshot: https://pek3b.qingstor.com/kubesphere-community/images/ray-1.webp + videoUrl: //player.bilibili.com/player.html?aid=375675566&bvid=BV1Fo4y117xt&cid=340529916&page=1&high_quality=1 + type: iframe + time: 2021-05-15 13:00-18:00 + timeIcon: /images/live/clock.svg + base: 线下 + 线上 + baseIcon: /images/live/base.svg +--- + +## 分享人简介 + +周小四 + +青云科技多云及边缘平台部研发总监 + +负责 KubeSphere 容器平台、OpenPitrix、多云应用管理平台、IoT 平台、EdgeWize 边缘计算平台、iFCloud 统一多云管理平台等产品的开发工作。在加入青云科技之前曾供职于美国 Florida International University(FIU)、IBM 及高德。获得 FIU 计算机硕士、MBA 学位,上海交通大学模式识别及智能系统硕士学位。入选朝阳区高层次人才。 + +## 分享主题介绍 + +Kick-off 将介绍当前云原生生态的发展趋势,解读 KubeSphere 3.1.0 新特性及诸多功能改进,并带来 KubeSphere 后续各个版本的开发与发布计划,最后将为大家分享 KubeSphere 社区最新的发展现状与生态。 + +![](https://pek3b.qingstor.com/kubesphere-community/images/shanghaiposter-1.webp) + +## 下载 PPT + +可扫描官网底部二维码,关注 「KubeSphere 云原生」公众号,后台回复 “2021 上海” 即可下载 PPT。 + + diff --git a/content/zh/live/roundtable-hangzhou.md b/content/zh/live/roundtable-hangzhou.md new file mode 100644 index 000000000..fc656891c --- /dev/null +++ b/content/zh/live/roundtable-hangzhou.md @@ -0,0 +1,42 @@ +--- +title: “开源社区运营与治理”圆桌交流 +description: 参与开源项目贡献给个人开发者和企业带来的好处是什么?如何评估开源项目和开源社区的健康程度和活跃度?如何提升开源社区的健康与活跃程度? +keywords: KubeSphere,Kubernetes,开源 +css: scss/live-detail.scss + +section1: + snapshot: https://pek3b.qingstor.com/kubesphere-community/images/roundtable-hangzhou.jpeg + videoUrl: //player.bilibili.com/player.html?aid=630940249&bvid=BV1Yb4y1Z7Fv&cid=347162824&page=1&high_quality=1 + type: iframe + time: 2021-05-29 13:00-18:00 + timeIcon: /images/live/clock.svg + base: 线下 + 线上 + baseIcon: /images/live/base.svg +--- + +## 分享人简介 + +刘昭-Nebula Graph 社区运营负责人 + +栾小凡-Milvus 社区研发负责人 + +徐飞-KubeEdge 社区 Maintainer + +Rick-Jenkins 中文社区发起人,LFAPAC 布道师 + +祁宁-SegmentFault CTO + +周鹏飞-KubeSphere 社区经理 + +## 分享主题介绍 + +本次圆桌交流主要讨论了两个话题: +- 参与开源项目贡献给个人开发者和企业带来的好处是什么? +- 如何评估开源项目和开源社区的健康程度和活跃度?如何提升开源社区的健康与活跃程度? + +![](https://pek3b.qingstor.com/kubesphere-community/images/roundtable-hangzhou.jpeg) + + + + + diff --git a/content/zh/live/segmentfault.md b/content/zh/live/segmentfault.md new file mode 100644 index 000000000..f9ae20c10 --- /dev/null +++ b/content/zh/live/segmentfault.md @@ -0,0 +1,34 @@ +--- +title: SegmentFault 基于 Kubernetes 的容器化与持续交付实践 +description: SegmentFault(思否)是目前中文领域最大的编程问答交流社区平台,为了进一步扩大互联网业务的规模,我们将思否社区的 Web 与后端服务进行微服务与容器化改造,并结合 KubeSphere 完成了互联网业务在 Kubernetes 平台的快速发布与自动化管理。 +keywords: KubeSphere,Kubernetes,SegmentFault,思否 +css: scss/live-detail.scss + +section1: + snapshot: https://pek3b.qingstor.com/kubesphere-community/images/qining-hangzhou.jpeg + videoUrl: //player.bilibili.com/player.html?aid=888493519&bvid=BV1TK4y137XE&cid=347158829&page=1&high_quality=1 + type: iframe + time: 2021-05-29 13:00-18:00 + timeIcon: /images/live/clock.svg + base: 线下 + 线上 + baseIcon: /images/live/base.svg +--- + +## 分享人简介 + +祈宁 + +SementFault(思否)CTO & 联合创始人 + +思否创始人,毕业于华中科技大学电信系,是华科 Dian 团队第 98 号成员。曾工作于阿里巴巴,在游戏公司担任技术架构师,在大学期间开发了开源博客系统 Typecho ,得到了近百万独立开发者和设计师的喜爱。 + +## 分享主题介绍 + +SegmentFault(思否)是目前中文领域最大的编程问答交流社区平台,本次分享将介绍 SegmentFault 如何将思否社区的 Web 与后端服务进行微服务与容器化改造,结合 KubeSphere 完成互联网业务在 Kubernetes 平台的快速发布与自动化管理。 + +![](https://pek3b.qingstor.com/kubesphere-community/images/hangzhouposter-4.png) + +## 下载 PPT + +可扫描官网底部二维码,关注 「KubeSphere 云原生」公众号,后台回复 “2021 杭州” 即可下载 PPT。 + diff --git a/content/zh/live/webassembly.md b/content/zh/live/webassembly.md new file mode 100644 index 000000000..ece082f38 --- /dev/null +++ b/content/zh/live/webassembly.md @@ -0,0 +1,36 @@ +--- +title: 云原生的 WebAssembly 能取代 Docker 吗? +description: Docker 创始人曾在推特上表示,如果WebAssembly 和 WASI 在2008年就诞生了,那么也没有创立 Docker 的必要了,WebAssembly 是云计算的未来。那么云原生的 WebAssembly 能取代 Docker 吗? +keywords: KubeSphere,Kubernetes,Docker,WebAssembly +css: scss/live-detail.scss + +section1: + snapshot: https://pek3b.qingstor.com/kubesphere-community/images/webassembly-docker.jpeg + videoUrl: //player.bilibili.com/player.html?aid=374255852&bvid=BV1wo4y1R7x2&cid=302625819&page=1&high_quality=1 + type: iframe + time: 2020-12-19 13:00-18:00 + timeIcon: /images/live/clock.svg + base: 线下 + 线上 + baseIcon: /images/live/base.svg +--- + +## 分享人简介 + +Michael Yuan + +Second State CEO + +## 分享主题介绍 + +Docker 创始人曾在推特上表示,如果WebAssembly 和 WASI 在2008年就诞生了,那么也没有创立 Docker 的必要了,WebAssembly 是云计算的未来。那么云原生的 WebAssembly 能取代 Docker 吗? + +## 大纲 + +- 什么 是WebAssembly? +- WebAssembly 在云原生领域发挥的作用及应用场景 +- 用 k8s 管理 WebAssembly 的解决方案 +- Docker 与 WebAssembly 之间的关系,是你死我亡,还是在云原生领域共同繁荣呢? + +## 下载 PPT + +可扫描官网底部二维码,关注 「KubeSphere 云原生」公众号,后台回复 “PPT” 即可下载 PPT。 diff --git a/content/zh/live/zhongtong-shanghai.md b/content/zh/live/zhongtong-shanghai.md new file mode 100644 index 000000000..1bd3f787f --- /dev/null +++ b/content/zh/live/zhongtong-shanghai.md @@ -0,0 +1,37 @@ +--- +title: 中通快递关键业务和复杂架构挑战下的 K8S 集群服务暴露实践 +description: 云原生已经势在必行,而应用容器化之后,应用的访问方式该如何解决?中通快递通过打通容器和物理网段以及 Ingress 解决了这一难题,以及当前的其他各种复杂场景问题。 +keywords: KubeSphere,Kubernetes,Ingress +css: scss/live-detail.scss + +section1: + snapshot: https://pek3b.qingstor.com/kubesphere-community/images/wangwenhu-1.webp + videoUrl: //player.bilibili.com/player.html?aid=760635980&bvid=BV1Z64y1C75y&cid=340544087&page=1&high_quality=1 + type: iframe + time: 2021-05-15 13:00-18:00 + timeIcon: /images/live/clock.svg + base: 线下 + 线上 + baseIcon: /images/live/base.svg +--- + +## 分享人简介 + +王文虎 + +中通快递,软件工程师 + +负责公司内部应用容器化以及容器管理平台开发,擅长应用容器化、K8s 相关开发。 + +## 分享主题介绍 + +主要介绍中通快递关键业务和复杂架构挑战下的 Kubernetes 集群服务暴露实践。包含针对当前各业务场景下 Kubernetes 集群服务暴露方式、优缺点及应用场景,以及在当前服务暴漏方式下实际使用过程中的一些踩坑分析。 + +![](https://pek3b.qingstor.com/kubesphere-community/images/shanghaiposter-6.webp) + +## 下载 PPT + +可扫描官网底部二维码,关注 「KubeSphere 云原生」公众号,后台回复 “2021 上海” 即可下载 PPT。 + + + + diff --git a/i18n/zh.yaml b/i18n/zh.yaml index 012a7d0ed..71119dd1b 100644 --- a/i18n/zh.yaml +++ b/i18n/zh.yaml @@ -88,6 +88,8 @@ translation: 观看直播 - id: View details translation: 了解详情 +- id: Wonderful review + translation: 精彩回顾 - id: Course theme translation: 课程主题 - id: Course benefits diff --git a/layouts/_default/scenario.html b/layouts/_default/scenario.html index 26ae55bd5..316f51608 100644 --- a/layouts/_default/scenario.html +++ b/layouts/_default/scenario.html @@ -3,13 +3,14 @@

{{ .title }}

+

{{ .content }}

+ {{ if .content2 }} +

{{ .content2 }}

+ {{ end }} {{ if .showDownload }} -

{{ .content }}

-
+
{{ partial "downloadButton" . }}
- {{ else }} -

{{ .content }}

{{ end }}
diff --git a/layouts/live/list.html b/layouts/live/list.html index 442afbac4..ac36e4f80 100644 --- a/layouts/live/list.html +++ b/layouts/live/list.html @@ -14,7 +14,7 @@
@@ -143,12 +143,13 @@ var bindClickVideoLi = function() { $('.video-ul').on('click', 'li', function(ev) { var link = $(this).data('link') - var type = $(this).data('type') - if (type === 'video') { - showVideo(link) - } else if (type === 'iframe') { - showIframe(link) - } + window.open(link) + // var type = $(this).data('type') + // if (type === 'video') { + // showVideo(link) + // } else if (type === 'iframe') { + // showIframe(link) + // } }) } diff --git a/static/images/devops/banner.png b/static/images/devops/banner.png new file mode 100644 index 000000000..96d502ed9 Binary files /dev/null and b/static/images/devops/banner.png differ diff --git a/static/images/docs/cluster-administration/cluster-settings/log-collections/add-fluentd-as-receiver/add-fluentd.png b/static/images/docs/cluster-administration/cluster-settings/log-collections/add-fluentd-as-receiver/add-fluentd.png index d70beb3af..c73e66f6e 100644 Binary files a/static/images/docs/cluster-administration/cluster-settings/log-collections/add-fluentd-as-receiver/add-fluentd.png and b/static/images/docs/cluster-administration/cluster-settings/log-collections/add-fluentd-as-receiver/add-fluentd.png differ diff --git a/static/images/docs/cluster-administration/cluster-settings/log-collections/add-kafka-as-receiver/add-kafka.png b/static/images/docs/cluster-administration/cluster-settings/log-collections/add-kafka-as-receiver/add-kafka.png index 5afd55a2f..bc7eef861 100644 Binary files a/static/images/docs/cluster-administration/cluster-settings/log-collections/add-kafka-as-receiver/add-kafka.png and b/static/images/docs/cluster-administration/cluster-settings/log-collections/add-kafka-as-receiver/add-kafka.png differ diff --git a/static/images/docs/devops-user-guide/tool-integration/integrate-sonarqube-into-pipeline/add-credentials.png b/static/images/docs/devops-user-guide/tool-integration/integrate-sonarqube-into-pipeline/add-credentials.png index 77fe7056e..fc9ba234a 100644 Binary files a/static/images/docs/devops-user-guide/tool-integration/integrate-sonarqube-into-pipeline/add-credentials.png and b/static/images/docs/devops-user-guide/tool-integration/integrate-sonarqube-into-pipeline/add-credentials.png differ diff --git a/static/images/docs/devops-user-guide/tool-integration/integrate-sonarqube-into-pipeline/add-sonarqube.png b/static/images/docs/devops-user-guide/tool-integration/integrate-sonarqube-into-pipeline/add-sonarqube.png index c6e7c22c0..228ca5404 100644 Binary files a/static/images/docs/devops-user-guide/tool-integration/integrate-sonarqube-into-pipeline/add-sonarqube.png and b/static/images/docs/devops-user-guide/tool-integration/integrate-sonarqube-into-pipeline/add-sonarqube.png differ diff --git a/static/images/docs/devops-user-guide/tool-integration/integrate-sonarqube-into-pipeline/configure-system.png b/static/images/docs/devops-user-guide/tool-integration/integrate-sonarqube-into-pipeline/configure-system.png index 765d600a1..b23f5487d 100644 Binary files a/static/images/docs/devops-user-guide/tool-integration/integrate-sonarqube-into-pipeline/configure-system.png and b/static/images/docs/devops-user-guide/tool-integration/integrate-sonarqube-into-pipeline/configure-system.png differ diff --git a/static/images/docs/devops-user-guide/tool-integration/integrate-sonarqube-into-pipeline/manage-jenkins.png b/static/images/docs/devops-user-guide/tool-integration/integrate-sonarqube-into-pipeline/manage-jenkins.png index 979d3e882..5fb3ead77 100644 Binary files a/static/images/docs/devops-user-guide/tool-integration/integrate-sonarqube-into-pipeline/manage-jenkins.png and b/static/images/docs/devops-user-guide/tool-integration/integrate-sonarqube-into-pipeline/manage-jenkins.png differ diff --git a/static/images/docs/devops-user-guide/tool-integration/integrate-sonarqube-into-pipeline/sonarqube-jenkins-settings.png b/static/images/docs/devops-user-guide/tool-integration/integrate-sonarqube-into-pipeline/sonarqube-jenkins-settings.png index b3678b044..2351dff2d 100644 Binary files a/static/images/docs/devops-user-guide/tool-integration/integrate-sonarqube-into-pipeline/sonarqube-jenkins-settings.png and b/static/images/docs/devops-user-guide/tool-integration/integrate-sonarqube-into-pipeline/sonarqube-jenkins-settings.png differ diff --git a/static/images/docs/faq/access-control-and-account-management/add-exisiting-namespaces-to-a-kubesphere-workspace/project-page.png b/static/images/docs/faq/access-control-and-account-management/add-exisiting-namespaces-to-a-kubesphere-workspace/project-page.png index bfe06f7c7..6291c866e 100644 Binary files a/static/images/docs/faq/access-control-and-account-management/add-exisiting-namespaces-to-a-kubesphere-workspace/project-page.png and b/static/images/docs/faq/access-control-and-account-management/add-exisiting-namespaces-to-a-kubesphere-workspace/project-page.png differ diff --git a/static/images/docs/faq/access-control-and-account-management/add-exisiting-namespaces-to-a-kubesphere-workspace/workspace-project.png b/static/images/docs/faq/access-control-and-account-management/add-exisiting-namespaces-to-a-kubesphere-workspace/workspace-project.png index a51f2b2e4..0802f9f52 100644 Binary files a/static/images/docs/faq/access-control-and-account-management/add-exisiting-namespaces-to-a-kubesphere-workspace/workspace-project.png and b/static/images/docs/faq/access-control-and-account-management/add-exisiting-namespaces-to-a-kubesphere-workspace/workspace-project.png differ diff --git a/static/images/docs/faq/installation/telemetry-in-kubesphere/three-dots.png b/static/images/docs/faq/installation/telemetry-in-kubesphere/three-dots.png new file mode 100644 index 000000000..4ef8b9b46 Binary files /dev/null and b/static/images/docs/faq/installation/telemetry-in-kubesphere/three-dots.png differ diff --git a/static/images/docs/faq/telemetry-in-kubesphere/edit-crd.jpg b/static/images/docs/faq/telemetry-in-kubesphere/edit-crd.jpg deleted file mode 100644 index db012ee21..000000000 Binary files a/static/images/docs/faq/telemetry-in-kubesphere/edit-crd.jpg and /dev/null differ diff --git a/static/images/docs/faq/telemetry-in-kubesphere/edit-ks-installer.jpg b/static/images/docs/faq/telemetry-in-kubesphere/edit-ks-installer.jpg deleted file mode 100644 index 418ccf293..000000000 Binary files a/static/images/docs/faq/telemetry-in-kubesphere/edit-ks-installer.jpg and /dev/null differ diff --git a/static/images/docs/faq/telemetry-in-kubesphere/enable-telemetry.jpg b/static/images/docs/faq/telemetry-in-kubesphere/enable-telemetry.jpg deleted file mode 100644 index f256a00f0..000000000 Binary files a/static/images/docs/faq/telemetry-in-kubesphere/enable-telemetry.jpg and /dev/null differ diff --git a/static/images/docs/installing-on-linux/on-premises/cluster-management.png b/static/images/docs/installing-on-linux/on-premises/cluster-management.png index 58eaaff35..5aeea0e7d 100644 Binary files a/static/images/docs/installing-on-linux/on-premises/cluster-management.png and b/static/images/docs/installing-on-linux/on-premises/cluster-management.png differ diff --git a/static/images/docs/installing-on-linux/on-premises/service-components.png b/static/images/docs/installing-on-linux/on-premises/service-components.png index 0ca4f784c..fe3dddd41 100644 Binary files a/static/images/docs/installing-on-linux/on-premises/service-components.png and b/static/images/docs/installing-on-linux/on-premises/service-components.png differ diff --git a/static/images/docs/multicluster-management/enable-multicluster-management-in-kubesphere/agent-connection/cluster-imported.png b/static/images/docs/multicluster-management/enable-multicluster-management-in-kubesphere/agent-connection/cluster-imported.png index aa021a4ab..13cb7e52f 100644 Binary files a/static/images/docs/multicluster-management/enable-multicluster-management-in-kubesphere/agent-connection/cluster-imported.png and b/static/images/docs/multicluster-management/enable-multicluster-management-in-kubesphere/agent-connection/cluster-imported.png differ diff --git a/static/images/docs/multicluster-management/enable-multicluster-management-in-kubesphere/direct-connection/cluster-imported.png b/static/images/docs/multicluster-management/enable-multicluster-management-in-kubesphere/direct-connection/cluster-imported.png index c3a37a92a..ce91c2507 100644 Binary files a/static/images/docs/multicluster-management/enable-multicluster-management-in-kubesphere/direct-connection/cluster-imported.png and b/static/images/docs/multicluster-management/enable-multicluster-management-in-kubesphere/direct-connection/cluster-imported.png differ diff --git a/static/images/docs/multicluster-management/import-cloud-hosted-k8s/import-ack/ack-cluster-imported.png b/static/images/docs/multicluster-management/import-cloud-hosted-k8s/import-ack/ack-cluster-imported.png index 76d127550..ba5b07a35 100644 Binary files a/static/images/docs/multicluster-management/import-cloud-hosted-k8s/import-ack/ack-cluster-imported.png and b/static/images/docs/multicluster-management/import-cloud-hosted-k8s/import-ack/ack-cluster-imported.png differ diff --git a/static/images/docs/multicluster-management/import-cloud-hosted-k8s/import-ack/click-add-cluster.png b/static/images/docs/multicluster-management/import-cloud-hosted-k8s/import-ack/click-add-cluster.png index f9fa36485..0be32732c 100644 Binary files a/static/images/docs/multicluster-management/import-cloud-hosted-k8s/import-ack/click-add-cluster.png and b/static/images/docs/multicluster-management/import-cloud-hosted-k8s/import-ack/click-add-cluster.png differ diff --git a/static/images/docs/multicluster-management/import-cloud-hosted-k8s/import-ack/click-edit.png b/static/images/docs/multicluster-management/import-cloud-hosted-k8s/import-ack/click-edit.png index fbd820fa7..53f50862c 100644 Binary files a/static/images/docs/multicluster-management/import-cloud-hosted-k8s/import-ack/click-edit.png and b/static/images/docs/multicluster-management/import-cloud-hosted-k8s/import-ack/click-edit.png differ diff --git a/static/images/docs/multicluster-management/import-cloud-hosted-k8s/import-ack/input-info.png b/static/images/docs/multicluster-management/import-cloud-hosted-k8s/import-ack/input-info.png index 385593ada..20ddd0e95 100644 Binary files a/static/images/docs/multicluster-management/import-cloud-hosted-k8s/import-ack/input-info.png and b/static/images/docs/multicluster-management/import-cloud-hosted-k8s/import-ack/input-info.png differ diff --git a/static/images/docs/multicluster-management/import-cloud-hosted-k8s/import-ack/search-config.png b/static/images/docs/multicluster-management/import-cloud-hosted-k8s/import-ack/search-config.png index a8dc5ef86..e1f3c29ed 100644 Binary files a/static/images/docs/multicluster-management/import-cloud-hosted-k8s/import-ack/search-config.png and b/static/images/docs/multicluster-management/import-cloud-hosted-k8s/import-ack/search-config.png differ diff --git a/static/images/docs/multicluster-management/import-cloud-hosted-k8s/import-ack/select-method.png b/static/images/docs/multicluster-management/import-cloud-hosted-k8s/import-ack/select-method.png index b078aadee..e77516a5e 100644 Binary files a/static/images/docs/multicluster-management/import-cloud-hosted-k8s/import-ack/select-method.png and b/static/images/docs/multicluster-management/import-cloud-hosted-k8s/import-ack/select-method.png differ diff --git a/static/images/docs/multicluster-management/import-cloud-hosted-k8s/import-eks/click-add-cluster.png b/static/images/docs/multicluster-management/import-cloud-hosted-k8s/import-eks/click-add-cluster.png index f9fa36485..0be32732c 100644 Binary files a/static/images/docs/multicluster-management/import-cloud-hosted-k8s/import-eks/click-add-cluster.png and b/static/images/docs/multicluster-management/import-cloud-hosted-k8s/import-eks/click-add-cluster.png differ diff --git a/static/images/docs/multicluster-management/import-cloud-hosted-k8s/import-eks/click-edit.png b/static/images/docs/multicluster-management/import-cloud-hosted-k8s/import-eks/click-edit.png index fbd820fa7..53f50862c 100644 Binary files a/static/images/docs/multicluster-management/import-cloud-hosted-k8s/import-eks/click-edit.png and b/static/images/docs/multicluster-management/import-cloud-hosted-k8s/import-eks/click-edit.png differ diff --git a/static/images/docs/multicluster-management/import-cloud-hosted-k8s/import-eks/eks-kubeconfig.png b/static/images/docs/multicluster-management/import-cloud-hosted-k8s/import-eks/eks-kubeconfig.png index 2e64737f4..c9dc927ce 100644 Binary files a/static/images/docs/multicluster-management/import-cloud-hosted-k8s/import-eks/eks-kubeconfig.png and b/static/images/docs/multicluster-management/import-cloud-hosted-k8s/import-eks/eks-kubeconfig.png differ diff --git a/static/images/docs/multicluster-management/import-cloud-hosted-k8s/import-eks/eks-overview.png b/static/images/docs/multicluster-management/import-cloud-hosted-k8s/import-eks/eks-overview.png index 257412b37..fa0498763 100644 Binary files a/static/images/docs/multicluster-management/import-cloud-hosted-k8s/import-eks/eks-overview.png and b/static/images/docs/multicluster-management/import-cloud-hosted-k8s/import-eks/eks-overview.png differ diff --git a/static/images/docs/multicluster-management/import-cloud-hosted-k8s/import-eks/input-info.png b/static/images/docs/multicluster-management/import-cloud-hosted-k8s/import-eks/input-info.png index a84d7481a..76462cd48 100644 Binary files a/static/images/docs/multicluster-management/import-cloud-hosted-k8s/import-eks/input-info.png and b/static/images/docs/multicluster-management/import-cloud-hosted-k8s/import-eks/input-info.png differ diff --git a/static/images/docs/multicluster-management/import-cloud-hosted-k8s/import-eks/search-config.png b/static/images/docs/multicluster-management/import-cloud-hosted-k8s/import-eks/search-config.png index a8dc5ef86..e1f3c29ed 100644 Binary files a/static/images/docs/multicluster-management/import-cloud-hosted-k8s/import-eks/search-config.png and b/static/images/docs/multicluster-management/import-cloud-hosted-k8s/import-eks/search-config.png differ diff --git a/static/images/docs/multicluster-management/import-cloud-hosted-k8s/import-gke/click-add-cluster.png b/static/images/docs/multicluster-management/import-cloud-hosted-k8s/import-gke/click-add-cluster.png index f9fa36485..0be32732c 100644 Binary files a/static/images/docs/multicluster-management/import-cloud-hosted-k8s/import-gke/click-add-cluster.png and b/static/images/docs/multicluster-management/import-cloud-hosted-k8s/import-gke/click-add-cluster.png differ diff --git a/static/images/docs/multicluster-management/import-cloud-hosted-k8s/import-gke/click-edit.png b/static/images/docs/multicluster-management/import-cloud-hosted-k8s/import-gke/click-edit.png index fbd820fa7..53f50862c 100644 Binary files a/static/images/docs/multicluster-management/import-cloud-hosted-k8s/import-gke/click-edit.png and b/static/images/docs/multicluster-management/import-cloud-hosted-k8s/import-gke/click-edit.png differ diff --git a/static/images/docs/multicluster-management/import-cloud-hosted-k8s/import-gke/gke-cluster-imported.png b/static/images/docs/multicluster-management/import-cloud-hosted-k8s/import-gke/gke-cluster-imported.png index 46eb8986f..7445846fd 100644 Binary files a/static/images/docs/multicluster-management/import-cloud-hosted-k8s/import-gke/gke-cluster-imported.png and b/static/images/docs/multicluster-management/import-cloud-hosted-k8s/import-gke/gke-cluster-imported.png differ diff --git a/static/images/docs/multicluster-management/import-cloud-hosted-k8s/import-gke/input-info.png b/static/images/docs/multicluster-management/import-cloud-hosted-k8s/import-gke/input-info.png index f4504e0e5..174098df2 100644 Binary files a/static/images/docs/multicluster-management/import-cloud-hosted-k8s/import-gke/input-info.png and b/static/images/docs/multicluster-management/import-cloud-hosted-k8s/import-gke/input-info.png differ diff --git a/static/images/docs/multicluster-management/import-cloud-hosted-k8s/import-gke/search-config.png b/static/images/docs/multicluster-management/import-cloud-hosted-k8s/import-gke/search-config.png index a8dc5ef86..e1f3c29ed 100644 Binary files a/static/images/docs/multicluster-management/import-cloud-hosted-k8s/import-gke/search-config.png and b/static/images/docs/multicluster-management/import-cloud-hosted-k8s/import-gke/search-config.png differ diff --git a/static/images/docs/multicluster-management/import-cloud-hosted-k8s/import-gke/select-method.png b/static/images/docs/multicluster-management/import-cloud-hosted-k8s/import-gke/select-method.png index fa674656e..922bbdb64 100644 Binary files a/static/images/docs/multicluster-management/import-cloud-hosted-k8s/import-gke/select-method.png and b/static/images/docs/multicluster-management/import-cloud-hosted-k8s/import-gke/select-method.png differ diff --git a/static/images/docs/multicluster-management/introduction/kubesphere-federation/central-control-plane.png b/static/images/docs/multicluster-management/introduction/kubesphere-federation/central-control-plane.png index f4ba78ec0..9d50d1c85 100644 Binary files a/static/images/docs/multicluster-management/introduction/kubesphere-federation/central-control-plane.png and b/static/images/docs/multicluster-management/introduction/kubesphere-federation/central-control-plane.png differ diff --git a/static/images/docs/multicluster-management/unbind-a-cluster/cluster-management.png b/static/images/docs/multicluster-management/unbind-a-cluster/cluster-management.png index 455b5c63e..f1260d373 100644 Binary files a/static/images/docs/multicluster-management/unbind-a-cluster/cluster-management.png and b/static/images/docs/multicluster-management/unbind-a-cluster/cluster-management.png differ diff --git a/static/images/docs/multicluster-management/unbind-a-cluster/unbind-cluster.png b/static/images/docs/multicluster-management/unbind-a-cluster/unbind-cluster.png index 8ad4f2e82..8d580d074 100644 Binary files a/static/images/docs/multicluster-management/unbind-a-cluster/unbind-cluster.png and b/static/images/docs/multicluster-management/unbind-a-cluster/unbind-cluster.png differ diff --git a/static/images/docs/project-admin/basic-info-multicluster.jpg b/static/images/docs/project-admin/basic-info-multicluster.jpg deleted file mode 100644 index c047147ad..000000000 Binary files a/static/images/docs/project-admin/basic-info-multicluster.jpg and /dev/null differ diff --git a/static/images/docs/project-admin/basic-info-page.jpg b/static/images/docs/project-admin/basic-info-page.jpg deleted file mode 100644 index 8852d0d0d..000000000 Binary files a/static/images/docs/project-admin/basic-info-page.jpg and /dev/null differ diff --git a/static/images/docs/project-admin/create-multicluster-project-page.jpg b/static/images/docs/project-admin/create-multicluster-project-page.jpg deleted file mode 100644 index ae2b06aef..000000000 Binary files a/static/images/docs/project-admin/create-multicluster-project-page.jpg and /dev/null differ diff --git a/static/images/docs/project-admin/create-multicluster-project.jpg b/static/images/docs/project-admin/create-multicluster-project.jpg deleted file mode 100644 index f23344dd0..000000000 Binary files a/static/images/docs/project-admin/create-multicluster-project.jpg and /dev/null differ diff --git a/static/images/docs/project-admin/create-project-page.jpg b/static/images/docs/project-admin/create-project-page.jpg deleted file mode 100644 index 32685e0ae..000000000 Binary files a/static/images/docs/project-admin/create-project-page.jpg and /dev/null differ diff --git a/static/images/docs/project-admin/create-project.jpg b/static/images/docs/project-admin/create-project.jpg deleted file mode 100644 index 7e420b8f4..000000000 Binary files a/static/images/docs/project-admin/create-project.jpg and /dev/null differ diff --git a/static/images/docs/project-admin/multicluster-project-list.jpg b/static/images/docs/project-admin/multicluster-project-list.jpg deleted file mode 100644 index f29da0ce2..000000000 Binary files a/static/images/docs/project-admin/multicluster-project-list.jpg and /dev/null differ diff --git a/static/images/docs/project-admin/project-list.jpg b/static/images/docs/project-admin/project-list.jpg deleted file mode 100644 index f8281b99c..000000000 Binary files a/static/images/docs/project-admin/project-list.jpg and /dev/null differ diff --git a/static/images/docs/project-admin/project_invite_member_step1.png b/static/images/docs/project-admin/project_invite_member_step1.png deleted file mode 100644 index 32e39df70..000000000 Binary files a/static/images/docs/project-admin/project_invite_member_step1.png and /dev/null differ diff --git a/static/images/docs/project-admin/project_invite_member_step2.png b/static/images/docs/project-admin/project_invite_member_step2.png deleted file mode 100644 index 017b557da..000000000 Binary files a/static/images/docs/project-admin/project_invite_member_step2.png and /dev/null differ diff --git a/static/images/docs/project-admin/project_role_create_step1.png b/static/images/docs/project-admin/project_role_create_step1.png deleted file mode 100644 index 7ee88ea26..000000000 Binary files a/static/images/docs/project-admin/project_role_create_step1.png and /dev/null differ diff --git a/static/images/docs/project-admin/project_role_create_step2.png b/static/images/docs/project-admin/project_role_create_step2.png deleted file mode 100644 index a995ede63..000000000 Binary files a/static/images/docs/project-admin/project_role_create_step2.png and /dev/null differ diff --git a/static/images/docs/project-admin/project_role_detail.png b/static/images/docs/project-admin/project_role_detail.png deleted file mode 100644 index dd1a03f82..000000000 Binary files a/static/images/docs/project-admin/project_role_detail.png and /dev/null differ diff --git a/static/images/docs/project-admin/project_role_list.png b/static/images/docs/project-admin/project_role_list.png deleted file mode 100644 index b89ca8f01..000000000 Binary files a/static/images/docs/project-admin/project_role_list.png and /dev/null differ diff --git a/static/images/docs/project-admin/project_user_edit.png b/static/images/docs/project-admin/project_user_edit.png deleted file mode 100644 index 509c81849..000000000 Binary files a/static/images/docs/project-admin/project_user_edit.png and /dev/null differ diff --git a/static/images/docs/project-administration/container-limit-ranges/change-limit-range.jpg b/static/images/docs/project-administration/container-limit-ranges/change-limit-range.jpg deleted file mode 100644 index 64d520cd6..000000000 Binary files a/static/images/docs/project-administration/container-limit-ranges/change-limit-range.jpg and /dev/null differ diff --git a/static/images/docs/project-administration/container-limit-ranges/default-limit-range.jpg b/static/images/docs/project-administration/container-limit-ranges/default-limit-range.jpg deleted file mode 100644 index cb2e66975..000000000 Binary files a/static/images/docs/project-administration/container-limit-ranges/default-limit-range.jpg and /dev/null differ diff --git a/static/images/docs/project-administration/container-limit-ranges/default-limit-range.png b/static/images/docs/project-administration/container-limit-ranges/default-limit-range.png new file mode 100644 index 000000000..2b26583d1 Binary files /dev/null and b/static/images/docs/project-administration/container-limit-ranges/default-limit-range.png differ diff --git a/static/images/docs/project-administration/container-limit-ranges/limit-ranges.jpg b/static/images/docs/project-administration/container-limit-ranges/limit-ranges.jpg deleted file mode 100644 index 0804f244e..000000000 Binary files a/static/images/docs/project-administration/container-limit-ranges/limit-ranges.jpg and /dev/null differ diff --git a/static/images/docs/project-administration/container-limit-ranges/view-limit-ranges.jpg b/static/images/docs/project-administration/container-limit-ranges/view-limit-ranges.jpg deleted file mode 100644 index 7ed2f3691..000000000 Binary files a/static/images/docs/project-administration/container-limit-ranges/view-limit-ranges.jpg and /dev/null differ diff --git a/static/images/docs/project-administration/container-limit-ranges/view-limit-ranges.png b/static/images/docs/project-administration/container-limit-ranges/view-limit-ranges.png new file mode 100644 index 000000000..4b4cc6204 Binary files /dev/null and b/static/images/docs/project-administration/container-limit-ranges/view-limit-ranges.png differ diff --git a/static/images/docs/project-administration/container-limit-ranges/workload-values.jpg b/static/images/docs/project-administration/container-limit-ranges/workload-values.jpg deleted file mode 100644 index aa5f1fa93..000000000 Binary files a/static/images/docs/project-administration/container-limit-ranges/workload-values.jpg and /dev/null differ diff --git a/static/images/docs/project-administration/container-limit-ranges/workload-values.png b/static/images/docs/project-administration/container-limit-ranges/workload-values.png new file mode 100644 index 000000000..0fd722fc6 Binary files /dev/null and b/static/images/docs/project-administration/container-limit-ranges/workload-values.png differ diff --git a/static/images/docs/project-administration/project-and-multicluster-project/multi-cluster-basic-information.png b/static/images/docs/project-administration/project-and-multicluster-project/multi-cluster-basic-information.png new file mode 100644 index 000000000..028e0ffba Binary files /dev/null and b/static/images/docs/project-administration/project-and-multicluster-project/multi-cluster-basic-information.png differ diff --git a/static/images/docs/project-administration/project-and-multicluster-project/multi-cluster-list.png b/static/images/docs/project-administration/project-and-multicluster-project/multi-cluster-list.png new file mode 100644 index 000000000..1af51c7e7 Binary files /dev/null and b/static/images/docs/project-administration/project-and-multicluster-project/multi-cluster-list.png differ diff --git a/static/images/docs/project-administration/project-and-multicluster-project/project-basic-information.png b/static/images/docs/project-administration/project-and-multicluster-project/project-basic-information.png new file mode 100644 index 000000000..83676097d Binary files /dev/null and b/static/images/docs/project-administration/project-and-multicluster-project/project-basic-information.png differ diff --git a/static/images/docs/project-administration/project-and-multicluster-project/project-list.png b/static/images/docs/project-administration/project-and-multicluster-project/project-list.png new file mode 100644 index 000000000..63943e79e Binary files /dev/null and b/static/images/docs/project-administration/project-and-multicluster-project/project-list.png differ diff --git a/static/images/docs/project-administration/role-and-member-management/add.png b/static/images/docs/project-administration/role-and-member-management/add.png new file mode 100644 index 000000000..a3550f80f Binary files /dev/null and b/static/images/docs/project-administration/role-and-member-management/add.png differ diff --git a/static/images/docs/project-administration/role-and-member-management/edit-project-account.png b/static/images/docs/project-administration/role-and-member-management/edit-project-account.png new file mode 100644 index 000000000..15d2ec601 Binary files /dev/null and b/static/images/docs/project-administration/role-and-member-management/edit-project-account.png differ diff --git a/static/images/docs/project-administration/role-and-member-management/project-role-details.png b/static/images/docs/project-administration/role-and-member-management/project-role-details.png new file mode 100644 index 000000000..429487f11 Binary files /dev/null and b/static/images/docs/project-administration/role-and-member-management/project-role-details.png differ diff --git a/static/images/docs/project-administration/role-and-member-management/project-role-list.png b/static/images/docs/project-administration/role-and-member-management/project-role-list.png new file mode 100644 index 000000000..e14155606 Binary files /dev/null and b/static/images/docs/project-administration/role-and-member-management/project-role-list.png differ diff --git a/static/images/docs/project-administration/role-and-member-management/three-dots.png b/static/images/docs/project-administration/role-and-member-management/three-dots.png new file mode 100644 index 000000000..4ef8b9b46 Binary files /dev/null and b/static/images/docs/project-administration/role-and-member-management/three-dots.png differ diff --git a/static/images/docs/project-user-guide/configurations/configmaps/add-data.jpg b/static/images/docs/project-user-guide/configurations/configmaps/add-data.jpg deleted file mode 100644 index 2e0b57298..000000000 Binary files a/static/images/docs/project-user-guide/configurations/configmaps/add-data.jpg and /dev/null differ diff --git a/static/images/docs/project-user-guide/configurations/configmaps/configmap-dropdown-menu.jpg b/static/images/docs/project-user-guide/configurations/configmaps/configmap-dropdown-menu.jpg deleted file mode 100644 index 5ff3377de..000000000 Binary files a/static/images/docs/project-user-guide/configurations/configmaps/configmap-dropdown-menu.jpg and /dev/null differ diff --git a/static/images/docs/project-user-guide/configurations/configmaps/configmap-list.jpg b/static/images/docs/project-user-guide/configurations/configmaps/configmap-list.jpg deleted file mode 100644 index 9ad5f6812..000000000 Binary files a/static/images/docs/project-user-guide/configurations/configmaps/configmap-list.jpg and /dev/null differ diff --git a/static/images/docs/project-user-guide/configurations/configmaps/create-configmap.jpg b/static/images/docs/project-user-guide/configurations/configmaps/create-configmap.jpg deleted file mode 100644 index 1379c16fa..000000000 Binary files a/static/images/docs/project-user-guide/configurations/configmaps/create-configmap.jpg and /dev/null differ diff --git a/static/images/docs/project-user-guide/configurations/configmaps/detail-page.jpg b/static/images/docs/project-user-guide/configurations/configmaps/detail-page.jpg deleted file mode 100644 index d7a1b9054..000000000 Binary files a/static/images/docs/project-user-guide/configurations/configmaps/detail-page.jpg and /dev/null differ diff --git a/static/images/docs/project-user-guide/configurations/configmaps/detail-page.png b/static/images/docs/project-user-guide/configurations/configmaps/detail-page.png new file mode 100644 index 000000000..32ea9bf05 Binary files /dev/null and b/static/images/docs/project-user-guide/configurations/configmaps/detail-page.png differ diff --git a/static/images/docs/project-user-guide/configurations/configmaps/edit-configmap-info.jpg b/static/images/docs/project-user-guide/configurations/configmaps/edit-configmap-info.jpg deleted file mode 100644 index c6fc5dc8b..000000000 Binary files a/static/images/docs/project-user-guide/configurations/configmaps/edit-configmap-info.jpg and /dev/null differ diff --git a/static/images/docs/project-user-guide/configurations/configmaps/finish-creating.jpg b/static/images/docs/project-user-guide/configurations/configmaps/finish-creating.jpg deleted file mode 100644 index 6a3bd8695..000000000 Binary files a/static/images/docs/project-user-guide/configurations/configmaps/finish-creating.jpg and /dev/null differ diff --git a/static/images/docs/project-user-guide/configurations/configmaps/key-value.jpg b/static/images/docs/project-user-guide/configurations/configmaps/key-value.jpg deleted file mode 100644 index a840678a5..000000000 Binary files a/static/images/docs/project-user-guide/configurations/configmaps/key-value.jpg and /dev/null differ diff --git a/static/images/docs/project-user-guide/configurations/configmaps/key-value.png b/static/images/docs/project-user-guide/configurations/configmaps/key-value.png new file mode 100644 index 000000000..22db82c60 Binary files /dev/null and b/static/images/docs/project-user-guide/configurations/configmaps/key-value.png differ diff --git a/static/images/docs/project-user-guide/configurations/configmaps/set-basic-info.jpg b/static/images/docs/project-user-guide/configurations/configmaps/set-basic-info.jpg deleted file mode 100644 index 610d71405..000000000 Binary files a/static/images/docs/project-user-guide/configurations/configmaps/set-basic-info.jpg and /dev/null differ diff --git a/static/images/docs/project-user-guide/configurations/configmaps/three-dots.png b/static/images/docs/project-user-guide/configurations/configmaps/three-dots.png new file mode 100644 index 000000000..4ef8b9b46 Binary files /dev/null and b/static/images/docs/project-user-guide/configurations/configmaps/three-dots.png differ diff --git a/static/images/docs/project-user-guide/grayscale-release/blue-green-deployment/blue-green-1.jpg b/static/images/docs/project-user-guide/grayscale-release/blue-green-deployment/blue-green-1.jpg deleted file mode 100644 index 195ba98e6..000000000 Binary files a/static/images/docs/project-user-guide/grayscale-release/blue-green-deployment/blue-green-1.jpg and /dev/null differ diff --git a/static/images/docs/project-user-guide/grayscale-release/blue-green-deployment/blue-green-2.jpg b/static/images/docs/project-user-guide/grayscale-release/blue-green-deployment/blue-green-2.jpg deleted file mode 100644 index 8b4b6de1b..000000000 Binary files a/static/images/docs/project-user-guide/grayscale-release/blue-green-deployment/blue-green-2.jpg and /dev/null differ diff --git a/static/images/docs/project-user-guide/grayscale-release/blue-green-deployment/blue-green-3.jpg b/static/images/docs/project-user-guide/grayscale-release/blue-green-deployment/blue-green-3.jpg deleted file mode 100644 index 20adf220b..000000000 Binary files a/static/images/docs/project-user-guide/grayscale-release/blue-green-deployment/blue-green-3.jpg and /dev/null differ diff --git a/static/images/docs/project-user-guide/grayscale-release/blue-green-deployment/blue-green-5.jpg b/static/images/docs/project-user-guide/grayscale-release/blue-green-deployment/blue-green-5.jpg deleted file mode 100644 index 3abe9ae1b..000000000 Binary files a/static/images/docs/project-user-guide/grayscale-release/blue-green-deployment/blue-green-5.jpg and /dev/null differ diff --git a/static/images/docs/project-user-guide/grayscale-release/canary-release/cabary-release-3.jpg b/static/images/docs/project-user-guide/grayscale-release/canary-release/cabary-release-3.jpg deleted file mode 100644 index 398fb25a6..000000000 Binary files a/static/images/docs/project-user-guide/grayscale-release/canary-release/cabary-release-3.jpg and /dev/null differ diff --git a/static/images/docs/project-user-guide/grayscale-release/canary-release/create-canary-release.jpg b/static/images/docs/project-user-guide/grayscale-release/canary-release/create-canary-release.jpg deleted file mode 100644 index 5a3b29547..000000000 Binary files a/static/images/docs/project-user-guide/grayscale-release/canary-release/create-canary-release.jpg and /dev/null differ diff --git a/static/images/docs/project-user-guide/grayscale-release/canary-release/set-task-name.jpg b/static/images/docs/project-user-guide/grayscale-release/canary-release/set-task-name.jpg deleted file mode 100644 index 573079219..000000000 Binary files a/static/images/docs/project-user-guide/grayscale-release/canary-release/set-task-name.jpg and /dev/null differ diff --git a/static/images/docs/project-user-guide/grayscale-release/traffic-mirroring/traffic-mirroring-1.jpg b/static/images/docs/project-user-guide/grayscale-release/traffic-mirroring/traffic-mirroring-1.jpg deleted file mode 100644 index c609b11d5..000000000 Binary files a/static/images/docs/project-user-guide/grayscale-release/traffic-mirroring/traffic-mirroring-1.jpg and /dev/null differ diff --git a/static/images/docs/project-user-guide/grayscale-release/traffic-mirroring/traffic-mirroring-2.jpg b/static/images/docs/project-user-guide/grayscale-release/traffic-mirroring/traffic-mirroring-2.jpg deleted file mode 100644 index c6abaacf1..000000000 Binary files a/static/images/docs/project-user-guide/grayscale-release/traffic-mirroring/traffic-mirroring-2.jpg and /dev/null differ diff --git a/static/images/docs/project-user-guide/grayscale-release/traffic-mirroring/traffic-mirroring-3.jpg b/static/images/docs/project-user-guide/grayscale-release/traffic-mirroring/traffic-mirroring-3.jpg deleted file mode 100644 index b9b8d3877..000000000 Binary files a/static/images/docs/project-user-guide/grayscale-release/traffic-mirroring/traffic-mirroring-3.jpg and /dev/null differ diff --git a/static/images/docs/project-user-guide/grayscale-release/traffic-mirroring/traffic-mirroring-5.jpg b/static/images/docs/project-user-guide/grayscale-release/traffic-mirroring/traffic-mirroring-5.jpg deleted file mode 100644 index 77c70a3da..000000000 Binary files a/static/images/docs/project-user-guide/grayscale-release/traffic-mirroring/traffic-mirroring-5.jpg and /dev/null differ diff --git a/static/images/docs/workspace-administration/project-quotas/project-quotas.png b/static/images/docs/workspace-administration/project-quotas/project-quotas.png index 46e6efa10..9a193d86e 100644 Binary files a/static/images/docs/workspace-administration/project-quotas/project-quotas.png and b/static/images/docs/workspace-administration/project-quotas/project-quotas.png differ diff --git a/static/images/docs/workspace-administration/project-quotas/set-other-resouce-quotas.png b/static/images/docs/workspace-administration/project-quotas/set-other-resouce-quotas.png index be37c1f7d..363c67535 100644 Binary files a/static/images/docs/workspace-administration/project-quotas/set-other-resouce-quotas.png and b/static/images/docs/workspace-administration/project-quotas/set-other-resouce-quotas.png differ diff --git a/static/images/docs/workspace-administration/project-quotas/set-project-quotas.png b/static/images/docs/workspace-administration/project-quotas/set-project-quotas.png index c2bf568c4..664b0f12a 100644 Binary files a/static/images/docs/workspace-administration/project-quotas/set-project-quotas.png and b/static/images/docs/workspace-administration/project-quotas/set-project-quotas.png differ diff --git a/static/images/docs/workspace-administration/role-and-member-management/edit-existing-user.png b/static/images/docs/workspace-administration/role-and-member-management/edit-existing-user.png index a960c3018..9feb6b14d 100644 Binary files a/static/images/docs/workspace-administration/role-and-member-management/edit-existing-user.png and b/static/images/docs/workspace-administration/role-and-member-management/edit-existing-user.png differ diff --git a/static/images/docs/workspace-administration/role-and-member-management/role-list.png b/static/images/docs/workspace-administration/role-and-member-management/role-list.png index aa56c25fc..764101994 100644 Binary files a/static/images/docs/workspace-administration/role-and-member-management/role-list.png and b/static/images/docs/workspace-administration/role-and-member-management/role-list.png differ diff --git a/static/images/docs/workspace-administration/role-and-member-management/role-permissions.png b/static/images/docs/workspace-administration/role-and-member-management/role-permissions.png index 6d01e1523..ac24a7ac0 100644 Binary files a/static/images/docs/workspace-administration/role-and-member-management/role-permissions.png and b/static/images/docs/workspace-administration/role-and-member-management/role-permissions.png differ diff --git a/static/images/docs/workspace-administration/workspace-network-isolation/workspace-isolation.png b/static/images/docs/workspace-administration/workspace-network-isolation/workspace-isolation.png index cf20e5d37..14bb53eb9 100644 Binary files a/static/images/docs/workspace-administration/workspace-network-isolation/workspace-isolation.png and b/static/images/docs/workspace-administration/workspace-network-isolation/workspace-isolation.png differ diff --git a/static/images/docs/workspace-administration/workspace-quotas/edit-workspace-quotas.png b/static/images/docs/workspace-administration/workspace-quotas/edit-workspace-quotas.png new file mode 100644 index 000000000..38f433564 Binary files /dev/null and b/static/images/docs/workspace-administration/workspace-quotas/edit-workspace-quotas.png differ diff --git a/static/images/docs/zh-cn/cluster-administration/cluster-settings/log-collection/add-es-as-receiver/add-es.png b/static/images/docs/zh-cn/cluster-administration/cluster-settings/log-collection/add-es-as-receiver/add-es.png new file mode 100644 index 000000000..28a08d7ef Binary files /dev/null and b/static/images/docs/zh-cn/cluster-administration/cluster-settings/log-collection/add-es-as-receiver/add-es.png differ diff --git a/static/images/docs/zh-cn/cluster-administration/cluster-settings/log-collection/add-fluentd-as-receiver/add-fluentd.png b/static/images/docs/zh-cn/cluster-administration/cluster-settings/log-collection/add-fluentd-as-receiver/add-fluentd.png new file mode 100644 index 000000000..01a870db0 Binary files /dev/null and b/static/images/docs/zh-cn/cluster-administration/cluster-settings/log-collection/add-fluentd-as-receiver/add-fluentd.png differ diff --git a/static/images/docs/zh-cn/cluster-administration/cluster-settings/log-collection/add-fluentd-as-receiver/container-logs.png b/static/images/docs/zh-cn/cluster-administration/cluster-settings/log-collection/add-fluentd-as-receiver/container-logs.png new file mode 100644 index 000000000..4af251917 Binary files /dev/null and b/static/images/docs/zh-cn/cluster-administration/cluster-settings/log-collection/add-fluentd-as-receiver/container-logs.png differ diff --git a/static/images/docs/zh-cn/cluster-administration/cluster-settings/log-collection/add-kafka-as-receiver/add-kafka.png b/static/images/docs/zh-cn/cluster-administration/cluster-settings/log-collection/add-kafka-as-receiver/add-kafka.png new file mode 100644 index 000000000..93bdaca27 Binary files /dev/null and b/static/images/docs/zh-cn/cluster-administration/cluster-settings/log-collection/add-kafka-as-receiver/add-kafka.png differ diff --git a/static/images/docs/zh-cn/devops-user-guide/tool-integration/integrate-sonarqube-into-pipelines/add-credentials.png b/static/images/docs/zh-cn/devops-user-guide/tool-integration/integrate-sonarqube-into-pipelines/add-credentials.png index 588597dec..f4c7ccd61 100644 Binary files a/static/images/docs/zh-cn/devops-user-guide/tool-integration/integrate-sonarqube-into-pipelines/add-credentials.png and b/static/images/docs/zh-cn/devops-user-guide/tool-integration/integrate-sonarqube-into-pipelines/add-credentials.png differ diff --git a/static/images/docs/zh-cn/devops-user-guide/tool-integration/integrate-sonarqube-into-pipelines/add-sonarqube.png b/static/images/docs/zh-cn/devops-user-guide/tool-integration/integrate-sonarqube-into-pipelines/add-sonarqube.png index 45f2ebd5d..a2db82dc2 100644 Binary files a/static/images/docs/zh-cn/devops-user-guide/tool-integration/integrate-sonarqube-into-pipelines/add-sonarqube.png and b/static/images/docs/zh-cn/devops-user-guide/tool-integration/integrate-sonarqube-into-pipelines/add-sonarqube.png differ diff --git a/static/images/docs/zh-cn/devops-user-guide/tool-integration/integrate-sonarqube-into-pipelines/configure-system.png b/static/images/docs/zh-cn/devops-user-guide/tool-integration/integrate-sonarqube-into-pipelines/configure-system.png index 756de994c..0f2f7ed54 100644 Binary files a/static/images/docs/zh-cn/devops-user-guide/tool-integration/integrate-sonarqube-into-pipelines/configure-system.png and b/static/images/docs/zh-cn/devops-user-guide/tool-integration/integrate-sonarqube-into-pipelines/configure-system.png differ diff --git a/static/images/docs/zh-cn/devops-user-guide/tool-integration/integrate-sonarqube-into-pipelines/manage-jenkins.png b/static/images/docs/zh-cn/devops-user-guide/tool-integration/integrate-sonarqube-into-pipelines/manage-jenkins.png index 1c3223c10..b6410d12e 100644 Binary files a/static/images/docs/zh-cn/devops-user-guide/tool-integration/integrate-sonarqube-into-pipelines/manage-jenkins.png and b/static/images/docs/zh-cn/devops-user-guide/tool-integration/integrate-sonarqube-into-pipelines/manage-jenkins.png differ diff --git a/static/images/docs/zh-cn/devops-user-guide/tool-integration/integrate-sonarqube-into-pipelines/sonarqube-jenkins-settings.png b/static/images/docs/zh-cn/devops-user-guide/tool-integration/integrate-sonarqube-into-pipelines/sonarqube-jenkins-settings.png index d4bab7293..d7bf36e72 100644 Binary files a/static/images/docs/zh-cn/devops-user-guide/tool-integration/integrate-sonarqube-into-pipelines/sonarqube-jenkins-settings.png and b/static/images/docs/zh-cn/devops-user-guide/tool-integration/integrate-sonarqube-into-pipelines/sonarqube-jenkins-settings.png differ diff --git a/static/images/docs/zh-cn/faq/installation/telemetry-in-kubesphere/three-dots.png b/static/images/docs/zh-cn/faq/installation/telemetry-in-kubesphere/three-dots.png new file mode 100644 index 000000000..4ef8b9b46 Binary files /dev/null and b/static/images/docs/zh-cn/faq/installation/telemetry-in-kubesphere/three-dots.png differ diff --git a/static/images/docs/zh-cn/faq/telemetry-in-kubesphere/edit-crd.jpg b/static/images/docs/zh-cn/faq/telemetry-in-kubesphere/edit-crd.jpg deleted file mode 100644 index 6a58713c6..000000000 Binary files a/static/images/docs/zh-cn/faq/telemetry-in-kubesphere/edit-crd.jpg and /dev/null differ diff --git a/static/images/docs/zh-cn/faq/telemetry-in-kubesphere/edit-ks-installer.jpg b/static/images/docs/zh-cn/faq/telemetry-in-kubesphere/edit-ks-installer.jpg deleted file mode 100644 index cb5e41b5d..000000000 Binary files a/static/images/docs/zh-cn/faq/telemetry-in-kubesphere/edit-ks-installer.jpg and /dev/null differ diff --git a/static/images/docs/zh-cn/faq/telemetry-in-kubesphere/enable-telemetry.jpg b/static/images/docs/zh-cn/faq/telemetry-in-kubesphere/enable-telemetry.jpg deleted file mode 100644 index dbf1fa71e..000000000 Binary files a/static/images/docs/zh-cn/faq/telemetry-in-kubesphere/enable-telemetry.jpg and /dev/null differ diff --git a/static/images/docs/zh-cn/multicluster-management/enable-multicluster-management-in-kubesphere/agent-connection/select-agent-connection.png b/static/images/docs/zh-cn/multicluster-management/enable-multicluster-management-in-kubesphere/agent-connection/select-agent-connection.png index e16af64bc..a2a2c80ec 100644 Binary files a/static/images/docs/zh-cn/multicluster-management/enable-multicluster-management-in-kubesphere/agent-connection/select-agent-connection.png and b/static/images/docs/zh-cn/multicluster-management/enable-multicluster-management-in-kubesphere/agent-connection/select-agent-connection.png differ diff --git a/static/images/docs/zh-cn/multicluster-management/import-cloud-hosted-k8s/import-ack/ack-cluster-imported.png b/static/images/docs/zh-cn/multicluster-management/import-cloud-hosted-k8s/import-ack/ack-cluster-imported.png index 76d127550..8691f7c4f 100644 Binary files a/static/images/docs/zh-cn/multicluster-management/import-cloud-hosted-k8s/import-ack/ack-cluster-imported.png and b/static/images/docs/zh-cn/multicluster-management/import-cloud-hosted-k8s/import-ack/ack-cluster-imported.png differ diff --git a/static/images/docs/zh-cn/multicluster-management/import-cloud-hosted-k8s/import-ack/input-info.png b/static/images/docs/zh-cn/multicluster-management/import-cloud-hosted-k8s/import-ack/input-info.png index d83adae39..0bc4bb2f1 100644 Binary files a/static/images/docs/zh-cn/multicluster-management/import-cloud-hosted-k8s/import-ack/input-info.png and b/static/images/docs/zh-cn/multicluster-management/import-cloud-hosted-k8s/import-ack/input-info.png differ diff --git a/static/images/docs/zh-cn/multicluster-management/import-cloud-hosted-k8s/import-ack/select-method.png b/static/images/docs/zh-cn/multicluster-management/import-cloud-hosted-k8s/import-ack/select-method.png index 3f383e161..aa427d8af 100644 Binary files a/static/images/docs/zh-cn/multicluster-management/import-cloud-hosted-k8s/import-ack/select-method.png and b/static/images/docs/zh-cn/multicluster-management/import-cloud-hosted-k8s/import-ack/select-method.png differ diff --git a/static/images/docs/zh-cn/multicluster-management/import-cloud-hosted-k8s/import-eks/eks-kubeconfig.png b/static/images/docs/zh-cn/multicluster-management/import-cloud-hosted-k8s/import-eks/eks-kubeconfig.png index d22fbe235..ec9319f6c 100644 Binary files a/static/images/docs/zh-cn/multicluster-management/import-cloud-hosted-k8s/import-eks/eks-kubeconfig.png and b/static/images/docs/zh-cn/multicluster-management/import-cloud-hosted-k8s/import-eks/eks-kubeconfig.png differ diff --git a/static/images/docs/zh-cn/multicluster-management/import-cloud-hosted-k8s/import-eks/eks-overview.png b/static/images/docs/zh-cn/multicluster-management/import-cloud-hosted-k8s/import-eks/eks-overview.png index 257412b37..646d7efac 100644 Binary files a/static/images/docs/zh-cn/multicluster-management/import-cloud-hosted-k8s/import-eks/eks-overview.png and b/static/images/docs/zh-cn/multicluster-management/import-cloud-hosted-k8s/import-eks/eks-overview.png differ diff --git a/static/images/docs/zh-cn/multicluster-management/import-cloud-hosted-k8s/import-eks/input-info.png b/static/images/docs/zh-cn/multicluster-management/import-cloud-hosted-k8s/import-eks/input-info.png index dcd235e58..1c1e8d0b3 100644 Binary files a/static/images/docs/zh-cn/multicluster-management/import-cloud-hosted-k8s/import-eks/input-info.png and b/static/images/docs/zh-cn/multicluster-management/import-cloud-hosted-k8s/import-eks/input-info.png differ diff --git a/static/images/docs/zh-cn/multicluster-management/import-cloud-hosted-k8s/import-gke/gke-cluster-imported.png b/static/images/docs/zh-cn/multicluster-management/import-cloud-hosted-k8s/import-gke/gke-cluster-imported.png index f47eaeead..36c15c9cb 100644 Binary files a/static/images/docs/zh-cn/multicluster-management/import-cloud-hosted-k8s/import-gke/gke-cluster-imported.png and b/static/images/docs/zh-cn/multicluster-management/import-cloud-hosted-k8s/import-gke/gke-cluster-imported.png differ diff --git a/static/images/docs/zh-cn/multicluster-management/import-cloud-hosted-k8s/import-gke/input-info.png b/static/images/docs/zh-cn/multicluster-management/import-cloud-hosted-k8s/import-gke/input-info.png index fa15916f6..b6d68045b 100644 Binary files a/static/images/docs/zh-cn/multicluster-management/import-cloud-hosted-k8s/import-gke/input-info.png and b/static/images/docs/zh-cn/multicluster-management/import-cloud-hosted-k8s/import-gke/input-info.png differ diff --git a/static/images/docs/zh-cn/multicluster-management/import-cloud-hosted-k8s/import-gke/select-method.png b/static/images/docs/zh-cn/multicluster-management/import-cloud-hosted-k8s/import-gke/select-method.png index fa4645ceb..a57404ac1 100644 Binary files a/static/images/docs/zh-cn/multicluster-management/import-cloud-hosted-k8s/import-gke/select-method.png and b/static/images/docs/zh-cn/multicluster-management/import-cloud-hosted-k8s/import-gke/select-method.png differ diff --git a/static/images/docs/zh-cn/multicluster-management/introduction/kubesphere-federation/central-control-plane.png b/static/images/docs/zh-cn/multicluster-management/introduction/kubesphere-federation/central-control-plane.png index f4ba78ec0..d76a1516b 100644 Binary files a/static/images/docs/zh-cn/multicluster-management/introduction/kubesphere-federation/central-control-plane.png and b/static/images/docs/zh-cn/multicluster-management/introduction/kubesphere-federation/central-control-plane.png differ diff --git a/static/images/docs/zh-cn/project-admin/basic-info-multicluster.jpg b/static/images/docs/zh-cn/project-admin/basic-info-multicluster.jpg deleted file mode 100644 index f627c0e05..000000000 Binary files a/static/images/docs/zh-cn/project-admin/basic-info-multicluster.jpg and /dev/null differ diff --git a/static/images/docs/zh-cn/project-admin/basic-info-page.jpg b/static/images/docs/zh-cn/project-admin/basic-info-page.jpg deleted file mode 100644 index c13e5eafa..000000000 Binary files a/static/images/docs/zh-cn/project-admin/basic-info-page.jpg and /dev/null differ diff --git a/static/images/docs/zh-cn/project-admin/create-multicluster-project-page.jpg b/static/images/docs/zh-cn/project-admin/create-multicluster-project-page.jpg deleted file mode 100644 index 289e29c3c..000000000 Binary files a/static/images/docs/zh-cn/project-admin/create-multicluster-project-page.jpg and /dev/null differ diff --git a/static/images/docs/zh-cn/project-admin/create-multicluster-project.jpg b/static/images/docs/zh-cn/project-admin/create-multicluster-project.jpg deleted file mode 100644 index c69089c20..000000000 Binary files a/static/images/docs/zh-cn/project-admin/create-multicluster-project.jpg and /dev/null differ diff --git a/static/images/docs/zh-cn/project-admin/create-project-page.jpg b/static/images/docs/zh-cn/project-admin/create-project-page.jpg deleted file mode 100644 index 8f9f7a4c2..000000000 Binary files a/static/images/docs/zh-cn/project-admin/create-project-page.jpg and /dev/null differ diff --git a/static/images/docs/zh-cn/project-admin/create-project.jpg b/static/images/docs/zh-cn/project-admin/create-project.jpg deleted file mode 100644 index d281a0796..000000000 Binary files a/static/images/docs/zh-cn/project-admin/create-project.jpg and /dev/null differ diff --git a/static/images/docs/zh-cn/project-admin/multicluster-project-list.jpg b/static/images/docs/zh-cn/project-admin/multicluster-project-list.jpg deleted file mode 100644 index 8981f0f61..000000000 Binary files a/static/images/docs/zh-cn/project-admin/multicluster-project-list.jpg and /dev/null differ diff --git a/static/images/docs/zh-cn/project-admin/project-list.jpg b/static/images/docs/zh-cn/project-admin/project-list.jpg deleted file mode 100644 index c871b6187..000000000 Binary files a/static/images/docs/zh-cn/project-admin/project-list.jpg and /dev/null differ diff --git a/static/images/docs/zh-cn/project-admin/project_invite_member_step2.png b/static/images/docs/zh-cn/project-admin/project_invite_member_step2.png deleted file mode 100644 index e54e8985a..000000000 Binary files a/static/images/docs/zh-cn/project-admin/project_invite_member_step2.png and /dev/null differ diff --git a/static/images/docs/zh-cn/project-admin/project_role_create_step1.png b/static/images/docs/zh-cn/project-admin/project_role_create_step1.png deleted file mode 100644 index b8fee4cc5..000000000 Binary files a/static/images/docs/zh-cn/project-admin/project_role_create_step1.png and /dev/null differ diff --git a/static/images/docs/zh-cn/project-admin/project_role_create_step2.png b/static/images/docs/zh-cn/project-admin/project_role_create_step2.png deleted file mode 100644 index 80223d147..000000000 Binary files a/static/images/docs/zh-cn/project-admin/project_role_create_step2.png and /dev/null differ diff --git a/static/images/docs/zh-cn/project-admin/project_role_detail.png b/static/images/docs/zh-cn/project-admin/project_role_detail.png deleted file mode 100644 index ef022c769..000000000 Binary files a/static/images/docs/zh-cn/project-admin/project_role_detail.png and /dev/null differ diff --git a/static/images/docs/zh-cn/project-admin/project_role_list.png b/static/images/docs/zh-cn/project-admin/project_role_list.png deleted file mode 100644 index e215d9362..000000000 Binary files a/static/images/docs/zh-cn/project-admin/project_role_list.png and /dev/null differ diff --git a/static/images/docs/zh-cn/project-admin/project_user_edit.png b/static/images/docs/zh-cn/project-admin/project_user_edit.png deleted file mode 100644 index a73ed4d20..000000000 Binary files a/static/images/docs/zh-cn/project-admin/project_user_edit.png and /dev/null differ diff --git a/static/images/docs/zh-cn/project-administration/container-limit-ranges/limit-ranges.PNG b/static/images/docs/zh-cn/project-administration/container-limit-ranges/limit-ranges.PNG deleted file mode 100644 index aa6afa773..000000000 Binary files a/static/images/docs/zh-cn/project-administration/container-limit-ranges/limit-ranges.PNG and /dev/null differ diff --git a/static/images/docs/zh-cn/project-administration/project-and-multicluster-project/multi-cluster-basic-information.png b/static/images/docs/zh-cn/project-administration/project-and-multicluster-project/multi-cluster-basic-information.png new file mode 100644 index 000000000..6b7ba6bdf Binary files /dev/null and b/static/images/docs/zh-cn/project-administration/project-and-multicluster-project/multi-cluster-basic-information.png differ diff --git a/static/images/docs/zh-cn/project-administration/project-and-multicluster-project/multi-cluster-list.png b/static/images/docs/zh-cn/project-administration/project-and-multicluster-project/multi-cluster-list.png new file mode 100644 index 000000000..f589cdb3f Binary files /dev/null and b/static/images/docs/zh-cn/project-administration/project-and-multicluster-project/multi-cluster-list.png differ diff --git a/static/images/docs/zh-cn/project-administration/project-and-multicluster-project/project-basic-information.png b/static/images/docs/zh-cn/project-administration/project-and-multicluster-project/project-basic-information.png new file mode 100644 index 000000000..492281939 Binary files /dev/null and b/static/images/docs/zh-cn/project-administration/project-and-multicluster-project/project-basic-information.png differ diff --git a/static/images/docs/zh-cn/project-administration/project-and-multicluster-project/project-list.png b/static/images/docs/zh-cn/project-administration/project-and-multicluster-project/project-list.png new file mode 100644 index 000000000..c7f55819a Binary files /dev/null and b/static/images/docs/zh-cn/project-administration/project-and-multicluster-project/project-list.png differ diff --git a/static/images/docs/zh-cn/project-administration/role-and-member-management/add.png b/static/images/docs/zh-cn/project-administration/role-and-member-management/add.png new file mode 100644 index 000000000..a3550f80f Binary files /dev/null and b/static/images/docs/zh-cn/project-administration/role-and-member-management/add.png differ diff --git a/static/images/docs/zh-cn/project-administration/role-and-member-management/project-member-list.png b/static/images/docs/zh-cn/project-administration/role-and-member-management/project-member-list.png new file mode 100644 index 000000000..c6ffbcb15 Binary files /dev/null and b/static/images/docs/zh-cn/project-administration/role-and-member-management/project-member-list.png differ diff --git a/static/images/docs/zh-cn/project-administration/role-and-member-management/project-role-detail.png b/static/images/docs/zh-cn/project-administration/role-and-member-management/project-role-detail.png new file mode 100644 index 000000000..abae94e4f Binary files /dev/null and b/static/images/docs/zh-cn/project-administration/role-and-member-management/project-role-detail.png differ diff --git a/static/images/docs/zh-cn/project-administration/role-and-member-management/project-role-list.png b/static/images/docs/zh-cn/project-administration/role-and-member-management/project-role-list.png new file mode 100644 index 000000000..2147f6b38 Binary files /dev/null and b/static/images/docs/zh-cn/project-administration/role-and-member-management/project-role-list.png differ diff --git a/static/images/docs/zh-cn/project-administration/role-and-member-management/three-dots.png b/static/images/docs/zh-cn/project-administration/role-and-member-management/three-dots.png new file mode 100644 index 000000000..4ef8b9b46 Binary files /dev/null and b/static/images/docs/zh-cn/project-administration/role-and-member-management/three-dots.png differ diff --git a/static/images/docs/zh-cn/project-user-guide/configurations/configmaps/add-data.jpg b/static/images/docs/zh-cn/project-user-guide/configurations/configmaps/add-data.jpg deleted file mode 100644 index 15ca22be5..000000000 Binary files a/static/images/docs/zh-cn/project-user-guide/configurations/configmaps/add-data.jpg and /dev/null differ diff --git a/static/images/docs/zh-cn/project-user-guide/configurations/configmaps/configmap-dropdown-menu.jpg b/static/images/docs/zh-cn/project-user-guide/configurations/configmaps/configmap-dropdown-menu.jpg deleted file mode 100644 index 28ad5de82..000000000 Binary files a/static/images/docs/zh-cn/project-user-guide/configurations/configmaps/configmap-dropdown-menu.jpg and /dev/null differ diff --git a/static/images/docs/zh-cn/project-user-guide/configurations/configmaps/configmap-list.jpg b/static/images/docs/zh-cn/project-user-guide/configurations/configmaps/configmap-list.jpg deleted file mode 100644 index 94e9c5d63..000000000 Binary files a/static/images/docs/zh-cn/project-user-guide/configurations/configmaps/configmap-list.jpg and /dev/null differ diff --git a/static/images/docs/zh-cn/project-user-guide/configurations/configmaps/create-configmap.jpg b/static/images/docs/zh-cn/project-user-guide/configurations/configmaps/create-configmap.jpg deleted file mode 100644 index 82293b7bc..000000000 Binary files a/static/images/docs/zh-cn/project-user-guide/configurations/configmaps/create-configmap.jpg and /dev/null differ diff --git a/static/images/docs/zh-cn/project-user-guide/configurations/configmaps/detail-page.jpg b/static/images/docs/zh-cn/project-user-guide/configurations/configmaps/detail-page.jpg deleted file mode 100644 index c1899c7b2..000000000 Binary files a/static/images/docs/zh-cn/project-user-guide/configurations/configmaps/detail-page.jpg and /dev/null differ diff --git a/static/images/docs/zh-cn/project-user-guide/configurations/configmaps/detail-page.png b/static/images/docs/zh-cn/project-user-guide/configurations/configmaps/detail-page.png new file mode 100644 index 000000000..fdb7d2fd2 Binary files /dev/null and b/static/images/docs/zh-cn/project-user-guide/configurations/configmaps/detail-page.png differ diff --git a/static/images/docs/zh-cn/project-user-guide/configurations/configmaps/edit-configmap-info.jpg b/static/images/docs/zh-cn/project-user-guide/configurations/configmaps/edit-configmap-info.jpg deleted file mode 100644 index 10d8ca548..000000000 Binary files a/static/images/docs/zh-cn/project-user-guide/configurations/configmaps/edit-configmap-info.jpg and /dev/null differ diff --git a/static/images/docs/zh-cn/project-user-guide/configurations/configmaps/finish-creating.jpg b/static/images/docs/zh-cn/project-user-guide/configurations/configmaps/finish-creating.jpg deleted file mode 100644 index 990b8f070..000000000 Binary files a/static/images/docs/zh-cn/project-user-guide/configurations/configmaps/finish-creating.jpg and /dev/null differ diff --git a/static/images/docs/zh-cn/project-user-guide/configurations/configmaps/set-basic-info.jpg b/static/images/docs/zh-cn/project-user-guide/configurations/configmaps/set-basic-info.jpg deleted file mode 100644 index 84310be0d..000000000 Binary files a/static/images/docs/zh-cn/project-user-guide/configurations/configmaps/set-basic-info.jpg and /dev/null differ diff --git a/static/images/docs/zh-cn/project-user-guide/configurations/configmaps/three-dots.png b/static/images/docs/zh-cn/project-user-guide/configurations/configmaps/three-dots.png new file mode 100644 index 000000000..4ef8b9b46 Binary files /dev/null and b/static/images/docs/zh-cn/project-user-guide/configurations/configmaps/three-dots.png differ diff --git a/static/images/docs/zh-cn/project-user-guide/grayscale-release/blue-green-deployment/blue-green-1.PNG b/static/images/docs/zh-cn/project-user-guide/grayscale-release/blue-green-deployment/blue-green-1.PNG deleted file mode 100644 index 148c4f349..000000000 Binary files a/static/images/docs/zh-cn/project-user-guide/grayscale-release/blue-green-deployment/blue-green-1.PNG and /dev/null differ diff --git a/static/images/docs/zh-cn/project-user-guide/grayscale-release/blue-green-deployment/blue-green-2.PNG b/static/images/docs/zh-cn/project-user-guide/grayscale-release/blue-green-deployment/blue-green-2.PNG deleted file mode 100644 index 496ecd70b..000000000 Binary files a/static/images/docs/zh-cn/project-user-guide/grayscale-release/blue-green-deployment/blue-green-2.PNG and /dev/null differ diff --git a/static/images/docs/zh-cn/project-user-guide/grayscale-release/blue-green-deployment/blue-green-3.PNG b/static/images/docs/zh-cn/project-user-guide/grayscale-release/blue-green-deployment/blue-green-3.PNG deleted file mode 100644 index bbfefcd10..000000000 Binary files a/static/images/docs/zh-cn/project-user-guide/grayscale-release/blue-green-deployment/blue-green-3.PNG and /dev/null differ diff --git a/static/images/docs/zh-cn/project-user-guide/grayscale-release/blue-green-deployment/blue-green-5.PNG b/static/images/docs/zh-cn/project-user-guide/grayscale-release/blue-green-deployment/blue-green-5.PNG deleted file mode 100644 index af1fe6e7e..000000000 Binary files a/static/images/docs/zh-cn/project-user-guide/grayscale-release/blue-green-deployment/blue-green-5.PNG and /dev/null differ diff --git a/static/images/docs/zh-cn/project-user-guide/grayscale-release/canary-release/canary-release-3.PNG b/static/images/docs/zh-cn/project-user-guide/grayscale-release/canary-release/canary-release-3.PNG deleted file mode 100644 index 5af64e1aa..000000000 Binary files a/static/images/docs/zh-cn/project-user-guide/grayscale-release/canary-release/canary-release-3.PNG and /dev/null differ diff --git a/static/images/docs/zh-cn/project-user-guide/grayscale-release/canary-release/create-canary-release.PNG b/static/images/docs/zh-cn/project-user-guide/grayscale-release/canary-release/create-canary-release.PNG deleted file mode 100644 index f5119b498..000000000 Binary files a/static/images/docs/zh-cn/project-user-guide/grayscale-release/canary-release/create-canary-release.PNG and /dev/null differ diff --git a/static/images/docs/zh-cn/project-user-guide/grayscale-release/canary-release/set-task-name.PNG b/static/images/docs/zh-cn/project-user-guide/grayscale-release/canary-release/set-task-name.PNG deleted file mode 100644 index 0e12e91dc..000000000 Binary files a/static/images/docs/zh-cn/project-user-guide/grayscale-release/canary-release/set-task-name.PNG and /dev/null differ diff --git a/static/images/docs/zh-cn/project-user-guide/grayscale-release/traffic-mirroring/traffic-mirroring-1.jpg b/static/images/docs/zh-cn/project-user-guide/grayscale-release/traffic-mirroring/traffic-mirroring-1.jpg deleted file mode 100644 index 435bd5fb1..000000000 Binary files a/static/images/docs/zh-cn/project-user-guide/grayscale-release/traffic-mirroring/traffic-mirroring-1.jpg and /dev/null differ diff --git a/static/images/docs/zh-cn/project-user-guide/grayscale-release/traffic-mirroring/traffic-mirroring-2.jpg b/static/images/docs/zh-cn/project-user-guide/grayscale-release/traffic-mirroring/traffic-mirroring-2.jpg deleted file mode 100644 index 70398b699..000000000 Binary files a/static/images/docs/zh-cn/project-user-guide/grayscale-release/traffic-mirroring/traffic-mirroring-2.jpg and /dev/null differ diff --git a/static/images/docs/zh-cn/project-user-guide/grayscale-release/traffic-mirroring/traffic-mirroring-3.jpg b/static/images/docs/zh-cn/project-user-guide/grayscale-release/traffic-mirroring/traffic-mirroring-3.jpg deleted file mode 100644 index 3805c61ff..000000000 Binary files a/static/images/docs/zh-cn/project-user-guide/grayscale-release/traffic-mirroring/traffic-mirroring-3.jpg and /dev/null differ diff --git a/static/images/docs/zh-cn/project-user-guide/grayscale-release/traffic-mirroring/traffic-mirroring-5.jpg b/static/images/docs/zh-cn/project-user-guide/grayscale-release/traffic-mirroring/traffic-mirroring-5.jpg deleted file mode 100644 index 9045d8b06..000000000 Binary files a/static/images/docs/zh-cn/project-user-guide/grayscale-release/traffic-mirroring/traffic-mirroring-5.jpg and /dev/null differ diff --git a/static/images/docs/zh-cn/workspace-administration-and-user-guide/role-and-member-management/edit-existing-user.png b/static/images/docs/zh-cn/workspace-administration-and-user-guide/role-and-member-management/edit-existing-user.png index fc2b6eb4e..2d292770f 100644 Binary files a/static/images/docs/zh-cn/workspace-administration-and-user-guide/role-and-member-management/edit-existing-user.png and b/static/images/docs/zh-cn/workspace-administration-and-user-guide/role-and-member-management/edit-existing-user.png differ diff --git a/static/images/docs/zh-cn/workspace-administration-and-user-guide/role-and-member-management/role-details.png b/static/images/docs/zh-cn/workspace-administration-and-user-guide/role-and-member-management/role-details.png index d6c89ff63..1705b3938 100644 Binary files a/static/images/docs/zh-cn/workspace-administration-and-user-guide/role-and-member-management/role-details.png and b/static/images/docs/zh-cn/workspace-administration-and-user-guide/role-and-member-management/role-details.png differ diff --git a/static/images/docs/zh-cn/workspace-administration-and-user-guide/role-and-member-management/role-list.png b/static/images/docs/zh-cn/workspace-administration-and-user-guide/role-and-member-management/role-list.png index 73a7e55d2..a9b3f8c67 100644 Binary files a/static/images/docs/zh-cn/workspace-administration-and-user-guide/role-and-member-management/role-list.png and b/static/images/docs/zh-cn/workspace-administration-and-user-guide/role-and-member-management/role-list.png differ diff --git a/static/images/docs/zh-cn/workspace-administration-and-user-guide/workspace-network-isolation/workspace-isolation-page.png b/static/images/docs/zh-cn/workspace-administration-and-user-guide/workspace-network-isolation/workspace-isolation-page.png index 3ef6c8872..f50fb1856 100644 Binary files a/static/images/docs/zh-cn/workspace-administration-and-user-guide/workspace-network-isolation/workspace-isolation-page.png and b/static/images/docs/zh-cn/workspace-administration-and-user-guide/workspace-network-isolation/workspace-isolation-page.png differ diff --git a/static/images/live/meetup-hangzhou-kv.png b/static/images/live/meetup-hangzhou-kv.png index 33d6f113a..34a5ec4e3 100644 Binary files a/static/images/live/meetup-hangzhou-kv.png and b/static/images/live/meetup-hangzhou-kv.png differ diff --git a/static/json/crd-3.1.json b/static/json/crd-3.1.json new file mode 100644 index 000000000..5f05e65ee --- /dev/null +++ b/static/json/crd-3.1.json @@ -0,0 +1,12533 @@ +{ + "swagger": "2.0", + "info": { + "title": "KubeSphere", + "contact": { + "name": "KubeSphere", + "url": "https://kubesphere.io/", + "email": "kubesphere@gmail.com" + }, + "license": { + "name": "Apache 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0.html" + }, + "version": "v3.1.0", + "x-logo": { + "url": "/images/ApiDocs.svg" + } + }, + "paths": { + "/apis/": { + "get": { + "description": "get available API versions", + "consumes": [ + "application/json", + "application/yaml", + "application/vnd.kubernetes.protobuf" + ], + "produces": [ + "application/json", + "application/yaml", + "application/vnd.kubernetes.protobuf" + ], + "schemes": [ + "https" + ], + "tags": [ + "apis" + ], + "operationId": "getAPIVersions", + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.APIGroupList" + } + } + } + } + }, + "/apis/cluster.kubesphere.io/": { + "get": { + "description": "get information of a group", + "consumes": [ + "application/json", + "application/yaml", + "application/vnd.kubernetes.protobuf" + ], + "produces": [ + "application/json", + "application/yaml", + "application/vnd.kubernetes.protobuf" + ], + "schemes": [ + "https" + ], + "tags": [ + "clusterKubesphereIo" + ], + "operationId": "getClusterKubesphereIoAPIGroup", + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.APIGroup" + } + } + } + } + }, + "/apis/cluster.kubesphere.io/v1alpha1/": { + "get": { + "description": "get available resources", + "consumes": [ + "application/json", + "application/yaml", + "application/vnd.kubernetes.protobuf" + ], + "produces": [ + "application/json", + "application/yaml", + "application/vnd.kubernetes.protobuf" + ], + "schemes": [ + "https" + ], + "tags": [ + "clusterKubesphereIo_v1alpha1" + ], + "operationId": "getClusterKubesphereIoV1alpha1APIResources", + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.APIResourceList" + } + } + } + } + }, + "/apis/cluster.kubesphere.io/v1alpha1/clusters": { + "get": { + "description": "list or watch objects of kind Cluster", + "consumes": [ + "*/*" + ], + "produces": [ + "application/json", + "application/yaml", + "application/vnd.kubernetes.protobuf", + "application/json;stream=watch", + "application/vnd.kubernetes.protobuf;stream=watch" + ], + "schemes": [ + "https" + ], + "tags": [ + "clusterKubesphereIo_v1alpha1" + ], + "operationId": "listClusterKubesphereIoV1alpha1Cluster", + "parameters": [ + { + "uniqueItems": true, + "type": "boolean", + "description": "allowWatchBookmarks requests watch events with type \"BOOKMARK\". Servers that do not implement bookmarks may ignore this flag and bookmarks are sent at the server's discretion. Clients should not assume bookmarks are returned at any specific interval, nor may they assume the server will send any BOOKMARK event during a session. If this is not a watch, this field is ignored. If the feature gate WatchBookmarks is not enabled in apiserver, this field is ignored.", + "name": "allowWatchBookmarks", + "in": "query" + }, + { + "uniqueItems": true, + "type": "string", + "description": "The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\".\n\nThis field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications.", + "name": "continue", + "in": "query" + }, + { + "uniqueItems": true, + "type": "string", + "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", + "name": "fieldSelector", + "in": "query" + }, + { + "uniqueItems": true, + "type": "string", + "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", + "name": "labelSelector", + "in": "query" + }, + { + "uniqueItems": true, + "type": "integer", + "description": "limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true.\n\nThe server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned.", + "name": "limit", + "in": "query" + }, + { + "uniqueItems": true, + "type": "string", + "description": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv.", + "name": "resourceVersion", + "in": "query" + }, + { + "uniqueItems": true, + "type": "integer", + "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", + "name": "timeoutSeconds", + "in": "query" + }, + { + "uniqueItems": true, + "type": "boolean", + "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", + "name": "watch", + "in": "query" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/io.kubesphere.kubesphere.pkg.apis.cluster.v1alpha1.ClusterList" + } + } + }, + "x-kubernetes-action": "list", + "x-kubernetes-group-version-kind": { + "group": "cluster.kubesphere.io", + "version": "v1alpha1", + "kind": "Cluster" + } + }, + "post": { + "description": "create a Cluster", + "consumes": [ + "*/*" + ], + "produces": [ + "application/json", + "application/yaml", + "application/vnd.kubernetes.protobuf" + ], + "schemes": [ + "https" + ], + "tags": [ + "clusterKubesphereIo_v1alpha1" + ], + "operationId": "createClusterKubesphereIoV1alpha1Cluster", + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/io.kubesphere.kubesphere.pkg.apis.cluster.v1alpha1.Cluster" + } + }, + { + "uniqueItems": true, + "type": "string", + "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", + "name": "dryRun", + "in": "query" + }, + { + "uniqueItems": true, + "type": "string", + "description": "fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint.", + "name": "fieldManager", + "in": "query" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/io.kubesphere.kubesphere.pkg.apis.cluster.v1alpha1.Cluster" + } + }, + "201": { + "description": "Created", + "schema": { + "$ref": "#/definitions/io.kubesphere.kubesphere.pkg.apis.cluster.v1alpha1.Cluster" + } + }, + "202": { + "description": "Accepted", + "schema": { + "$ref": "#/definitions/io.kubesphere.kubesphere.pkg.apis.cluster.v1alpha1.Cluster" + } + } + }, + "x-kubernetes-action": "post", + "x-kubernetes-group-version-kind": { + "group": "cluster.kubesphere.io", + "version": "v1alpha1", + "kind": "Cluster" + } + }, + "delete": { + "description": "delete collection of Cluster", + "consumes": [ + "*/*" + ], + "produces": [ + "application/json", + "application/yaml", + "application/vnd.kubernetes.protobuf" + ], + "schemes": [ + "https" + ], + "tags": [ + "clusterKubesphereIo_v1alpha1" + ], + "operationId": "deleteClusterKubesphereIoV1alpha1CollectionCluster", + "parameters": [ + { + "uniqueItems": true, + "type": "boolean", + "description": "allowWatchBookmarks requests watch events with type \"BOOKMARK\". Servers that do not implement bookmarks may ignore this flag and bookmarks are sent at the server's discretion. Clients should not assume bookmarks are returned at any specific interval, nor may they assume the server will send any BOOKMARK event during a session. If this is not a watch, this field is ignored. If the feature gate WatchBookmarks is not enabled in apiserver, this field is ignored.", + "name": "allowWatchBookmarks", + "in": "query" + }, + { + "name": "body", + "in": "body", + "schema": { + "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions" + } + }, + { + "uniqueItems": true, + "type": "string", + "description": "The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\".\n\nThis field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications.", + "name": "continue", + "in": "query" + }, + { + "uniqueItems": true, + "type": "string", + "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", + "name": "dryRun", + "in": "query" + }, + { + "uniqueItems": true, + "type": "string", + "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", + "name": "fieldSelector", + "in": "query" + }, + { + "uniqueItems": true, + "type": "integer", + "description": "The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately.", + "name": "gracePeriodSeconds", + "in": "query" + }, + { + "uniqueItems": true, + "type": "string", + "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", + "name": "labelSelector", + "in": "query" + }, + { + "uniqueItems": true, + "type": "integer", + "description": "limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true.\n\nThe server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned.", + "name": "limit", + "in": "query" + }, + { + "uniqueItems": true, + "type": "boolean", + "description": "Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both.", + "name": "orphanDependents", + "in": "query" + }, + { + "uniqueItems": true, + "type": "string", + "description": "Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. Acceptable values are: 'Orphan' - orphan the dependents; 'Background' - allow the garbage collector to delete the dependents in the background; 'Foreground' - a cascading policy that deletes all dependents in the foreground.", + "name": "propagationPolicy", + "in": "query" + }, + { + "uniqueItems": true, + "type": "string", + "description": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv.", + "name": "resourceVersion", + "in": "query" + }, + { + "uniqueItems": true, + "type": "integer", + "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", + "name": "timeoutSeconds", + "in": "query" + }, + { + "uniqueItems": true, + "type": "boolean", + "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", + "name": "watch", + "in": "query" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status" + } + } + }, + "x-kubernetes-action": "deletecollection", + "x-kubernetes-group-version-kind": { + "group": "cluster.kubesphere.io", + "version": "v1alpha1", + "kind": "Cluster" + } + }, + "parameters": [ + { + "uniqueItems": true, + "type": "string", + "description": "If 'true', then the output is pretty printed.", + "name": "pretty", + "in": "query" + } + ] + }, + "/apis/cluster.kubesphere.io/v1alpha1/clusters/{name}": { + "get": { + "description": "read the specified Cluster", + "consumes": [ + "*/*" + ], + "produces": [ + "application/json", + "application/yaml", + "application/vnd.kubernetes.protobuf" + ], + "schemes": [ + "https" + ], + "tags": [ + "clusterKubesphereIo_v1alpha1" + ], + "operationId": "readClusterKubesphereIoV1alpha1Cluster", + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/io.kubesphere.kubesphere.pkg.apis.cluster.v1alpha1.Cluster" + } + } + }, + "x-kubernetes-action": "get", + "x-kubernetes-group-version-kind": { + "group": "cluster.kubesphere.io", + "version": "v1alpha1", + "kind": "Cluster" + } + }, + "put": { + "description": "replace the specified Cluster", + "consumes": [ + "*/*" + ], + "produces": [ + "application/json", + "application/yaml", + "application/vnd.kubernetes.protobuf" + ], + "schemes": [ + "https" + ], + "tags": [ + "clusterKubesphereIo_v1alpha1" + ], + "operationId": "replaceClusterKubesphereIoV1alpha1Cluster", + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/io.kubesphere.kubesphere.pkg.apis.cluster.v1alpha1.Cluster" + } + }, + { + "uniqueItems": true, + "type": "string", + "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", + "name": "dryRun", + "in": "query" + }, + { + "uniqueItems": true, + "type": "string", + "description": "fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint.", + "name": "fieldManager", + "in": "query" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/io.kubesphere.kubesphere.pkg.apis.cluster.v1alpha1.Cluster" + } + }, + "201": { + "description": "Created", + "schema": { + "$ref": "#/definitions/io.kubesphere.kubesphere.pkg.apis.cluster.v1alpha1.Cluster" + } + } + }, + "x-kubernetes-action": "put", + "x-kubernetes-group-version-kind": { + "group": "cluster.kubesphere.io", + "version": "v1alpha1", + "kind": "Cluster" + } + }, + "delete": { + "description": "delete a Cluster", + "consumes": [ + "*/*" + ], + "produces": [ + "application/json", + "application/yaml", + "application/vnd.kubernetes.protobuf" + ], + "schemes": [ + "https" + ], + "tags": [ + "clusterKubesphereIo_v1alpha1" + ], + "operationId": "deleteClusterKubesphereIoV1alpha1Cluster", + "parameters": [ + { + "name": "body", + "in": "body", + "schema": { + "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions" + } + }, + { + "uniqueItems": true, + "type": "string", + "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", + "name": "dryRun", + "in": "query" + }, + { + "uniqueItems": true, + "type": "integer", + "description": "The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately.", + "name": "gracePeriodSeconds", + "in": "query" + }, + { + "uniqueItems": true, + "type": "boolean", + "description": "Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both.", + "name": "orphanDependents", + "in": "query" + }, + { + "uniqueItems": true, + "type": "string", + "description": "Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. Acceptable values are: 'Orphan' - orphan the dependents; 'Background' - allow the garbage collector to delete the dependents in the background; 'Foreground' - a cascading policy that deletes all dependents in the foreground.", + "name": "propagationPolicy", + "in": "query" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status" + } + }, + "202": { + "description": "Accepted", + "schema": { + "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status" + } + } + }, + "x-kubernetes-action": "delete", + "x-kubernetes-group-version-kind": { + "group": "cluster.kubesphere.io", + "version": "v1alpha1", + "kind": "Cluster" + } + }, + "patch": { + "description": "partially update the specified Cluster", + "consumes": [ + "application/json-patch+json", + "application/merge-patch+json", + "application/strategic-merge-patch+json", + "application/apply-patch+yaml" + ], + "produces": [ + "application/json", + "application/yaml", + "application/vnd.kubernetes.protobuf" + ], + "schemes": [ + "https" + ], + "tags": [ + "clusterKubesphereIo_v1alpha1" + ], + "operationId": "patchClusterKubesphereIoV1alpha1Cluster", + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Patch" + } + }, + { + "uniqueItems": true, + "type": "string", + "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", + "name": "dryRun", + "in": "query" + }, + { + "uniqueItems": true, + "type": "string", + "description": "fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. This field is required for apply requests (application/apply-patch) but optional for non-apply patch types (JsonPatch, MergePatch, StrategicMergePatch).", + "name": "fieldManager", + "in": "query" + }, + { + "uniqueItems": true, + "type": "boolean", + "description": "Force is going to \"force\" Apply requests. It means user will re-acquire conflicting fields owned by other people. Force flag must be unset for non-apply patch requests.", + "name": "force", + "in": "query" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/io.kubesphere.kubesphere.pkg.apis.cluster.v1alpha1.Cluster" + } + } + }, + "x-kubernetes-action": "patch", + "x-kubernetes-group-version-kind": { + "group": "cluster.kubesphere.io", + "version": "v1alpha1", + "kind": "Cluster" + } + }, + "parameters": [ + { + "uniqueItems": true, + "type": "string", + "description": "name of the Cluster", + "name": "name", + "in": "path", + "required": true + }, + { + "uniqueItems": true, + "type": "string", + "description": "If 'true', then the output is pretty printed.", + "name": "pretty", + "in": "query" + } + ] + }, + "/apis/cluster.kubesphere.io/v1alpha1/clusters/{name}/status": { + "get": { + "description": "read status of the specified Cluster", + "consumes": [ + "*/*" + ], + "produces": [ + "application/json", + "application/yaml", + "application/vnd.kubernetes.protobuf" + ], + "schemes": [ + "https" + ], + "tags": [ + "clusterKubesphereIo_v1alpha1" + ], + "operationId": "readClusterKubesphereIoV1alpha1ClusterStatus", + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/io.kubesphere.kubesphere.pkg.apis.cluster.v1alpha1.Cluster" + } + } + }, + "x-kubernetes-action": "get", + "x-kubernetes-group-version-kind": { + "group": "cluster.kubesphere.io", + "version": "v1alpha1", + "kind": "Cluster" + } + }, + "put": { + "description": "replace status of the specified Cluster", + "consumes": [ + "*/*" + ], + "produces": [ + "application/json", + "application/yaml", + "application/vnd.kubernetes.protobuf" + ], + "schemes": [ + "https" + ], + "tags": [ + "clusterKubesphereIo_v1alpha1" + ], + "operationId": "replaceClusterKubesphereIoV1alpha1ClusterStatus", + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/io.kubesphere.kubesphere.pkg.apis.cluster.v1alpha1.Cluster" + } + }, + { + "uniqueItems": true, + "type": "string", + "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", + "name": "dryRun", + "in": "query" + }, + { + "uniqueItems": true, + "type": "string", + "description": "fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint.", + "name": "fieldManager", + "in": "query" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/io.kubesphere.kubesphere.pkg.apis.cluster.v1alpha1.Cluster" + } + }, + "201": { + "description": "Created", + "schema": { + "$ref": "#/definitions/io.kubesphere.kubesphere.pkg.apis.cluster.v1alpha1.Cluster" + } + } + }, + "x-kubernetes-action": "put", + "x-kubernetes-group-version-kind": { + "group": "cluster.kubesphere.io", + "version": "v1alpha1", + "kind": "Cluster" + } + }, + "patch": { + "description": "partially update status of the specified Cluster", + "consumes": [ + "application/json-patch+json", + "application/merge-patch+json", + "application/strategic-merge-patch+json", + "application/apply-patch+yaml" + ], + "produces": [ + "application/json", + "application/yaml", + "application/vnd.kubernetes.protobuf" + ], + "schemes": [ + "https" + ], + "tags": [ + "clusterKubesphereIo_v1alpha1" + ], + "operationId": "patchClusterKubesphereIoV1alpha1ClusterStatus", + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Patch" + } + }, + { + "uniqueItems": true, + "type": "string", + "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", + "name": "dryRun", + "in": "query" + }, + { + "uniqueItems": true, + "type": "string", + "description": "fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. This field is required for apply requests (application/apply-patch) but optional for non-apply patch types (JsonPatch, MergePatch, StrategicMergePatch).", + "name": "fieldManager", + "in": "query" + }, + { + "uniqueItems": true, + "type": "boolean", + "description": "Force is going to \"force\" Apply requests. It means user will re-acquire conflicting fields owned by other people. Force flag must be unset for non-apply patch requests.", + "name": "force", + "in": "query" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/io.kubesphere.kubesphere.pkg.apis.cluster.v1alpha1.Cluster" + } + } + }, + "x-kubernetes-action": "patch", + "x-kubernetes-group-version-kind": { + "group": "cluster.kubesphere.io", + "version": "v1alpha1", + "kind": "Cluster" + } + }, + "parameters": [ + { + "uniqueItems": true, + "type": "string", + "description": "name of the Cluster", + "name": "name", + "in": "path", + "required": true + }, + { + "uniqueItems": true, + "type": "string", + "description": "If 'true', then the output is pretty printed.", + "name": "pretty", + "in": "query" + } + ] + }, + "/apis/cluster.kubesphere.io/v1alpha1/watch/clusters": { + "get": { + "description": "watch individual changes to a list of Cluster. deprecated: use the 'watch' parameter with a list operation instead.", + "consumes": [ + "*/*" + ], + "produces": [ + "application/json", + "application/yaml", + "application/vnd.kubernetes.protobuf", + "application/json;stream=watch", + "application/vnd.kubernetes.protobuf;stream=watch" + ], + "schemes": [ + "https" + ], + "tags": [ + "clusterKubesphereIo_v1alpha1" + ], + "operationId": "watchClusterKubesphereIoV1alpha1ClusterList", + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent" + } + } + }, + "x-kubernetes-action": "watchlist", + "x-kubernetes-group-version-kind": { + "group": "cluster.kubesphere.io", + "version": "v1alpha1", + "kind": "Cluster" + } + }, + "parameters": [ + { + "uniqueItems": true, + "type": "boolean", + "description": "allowWatchBookmarks requests watch events with type \"BOOKMARK\". Servers that do not implement bookmarks may ignore this flag and bookmarks are sent at the server's discretion. Clients should not assume bookmarks are returned at any specific interval, nor may they assume the server will send any BOOKMARK event during a session. If this is not a watch, this field is ignored. If the feature gate WatchBookmarks is not enabled in apiserver, this field is ignored.", + "name": "allowWatchBookmarks", + "in": "query" + }, + { + "uniqueItems": true, + "type": "string", + "description": "The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\".\n\nThis field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications.", + "name": "continue", + "in": "query" + }, + { + "uniqueItems": true, + "type": "string", + "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", + "name": "fieldSelector", + "in": "query" + }, + { + "uniqueItems": true, + "type": "string", + "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", + "name": "labelSelector", + "in": "query" + }, + { + "uniqueItems": true, + "type": "integer", + "description": "limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true.\n\nThe server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned.", + "name": "limit", + "in": "query" + }, + { + "uniqueItems": true, + "type": "string", + "description": "If 'true', then the output is pretty printed.", + "name": "pretty", + "in": "query" + }, + { + "uniqueItems": true, + "type": "string", + "description": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv.", + "name": "resourceVersion", + "in": "query" + }, + { + "uniqueItems": true, + "type": "integer", + "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", + "name": "timeoutSeconds", + "in": "query" + }, + { + "uniqueItems": true, + "type": "boolean", + "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", + "name": "watch", + "in": "query" + } + ] + }, + "/apis/cluster.kubesphere.io/v1alpha1/watch/clusters/{name}": { + "get": { + "description": "watch changes to an object of kind Cluster. deprecated: use the 'watch' parameter with a list operation instead, filtered to a single item with the 'fieldSelector' parameter.", + "consumes": [ + "*/*" + ], + "produces": [ + "application/json", + "application/yaml", + "application/vnd.kubernetes.protobuf", + "application/json;stream=watch", + "application/vnd.kubernetes.protobuf;stream=watch" + ], + "schemes": [ + "https" + ], + "tags": [ + "clusterKubesphereIo_v1alpha1" + ], + "operationId": "watchClusterKubesphereIoV1alpha1Cluster", + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent" + } + } + }, + "x-kubernetes-action": "watch", + "x-kubernetes-group-version-kind": { + "group": "cluster.kubesphere.io", + "version": "v1alpha1", + "kind": "Cluster" + } + }, + "parameters": [ + { + "uniqueItems": true, + "type": "boolean", + "description": "allowWatchBookmarks requests watch events with type \"BOOKMARK\". Servers that do not implement bookmarks may ignore this flag and bookmarks are sent at the server's discretion. Clients should not assume bookmarks are returned at any specific interval, nor may they assume the server will send any BOOKMARK event during a session. If this is not a watch, this field is ignored. If the feature gate WatchBookmarks is not enabled in apiserver, this field is ignored.", + "name": "allowWatchBookmarks", + "in": "query" + }, + { + "uniqueItems": true, + "type": "string", + "description": "The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\".\n\nThis field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications.", + "name": "continue", + "in": "query" + }, + { + "uniqueItems": true, + "type": "string", + "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", + "name": "fieldSelector", + "in": "query" + }, + { + "uniqueItems": true, + "type": "string", + "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", + "name": "labelSelector", + "in": "query" + }, + { + "uniqueItems": true, + "type": "integer", + "description": "limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true.\n\nThe server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned.", + "name": "limit", + "in": "query" + }, + { + "uniqueItems": true, + "type": "string", + "description": "name of the Cluster", + "name": "name", + "in": "path", + "required": true + }, + { + "uniqueItems": true, + "type": "string", + "description": "If 'true', then the output is pretty printed.", + "name": "pretty", + "in": "query" + }, + { + "uniqueItems": true, + "type": "string", + "description": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv.", + "name": "resourceVersion", + "in": "query" + }, + { + "uniqueItems": true, + "type": "integer", + "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", + "name": "timeoutSeconds", + "in": "query" + }, + { + "uniqueItems": true, + "type": "boolean", + "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", + "name": "watch", + "in": "query" + } + ] + }, + "/apis/devops.kubesphere.io/": { + "get": { + "description": "get information of a group", + "consumes": [ + "application/json", + "application/yaml", + "application/vnd.kubernetes.protobuf" + ], + "produces": [ + "application/json", + "application/yaml", + "application/vnd.kubernetes.protobuf" + ], + "schemes": [ + "https" + ], + "tags": [ + "devopsKubesphereIo" + ], + "operationId": "getDevopsKubesphereIoAPIGroup", + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.APIGroup" + } + } + } + } + }, + "/apis/devops.kubesphere.io/v1alpha1/": { + "get": { + "description": "get available resources", + "consumes": [ + "application/json", + "application/yaml", + "application/vnd.kubernetes.protobuf" + ], + "produces": [ + "application/json", + "application/yaml", + "application/vnd.kubernetes.protobuf" + ], + "schemes": [ + "https" + ], + "tags": [ + "devopsKubesphereIo_v1alpha1" + ], + "operationId": "getDevopsKubesphereIoV1alpha1APIResources", + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.APIResourceList" + } + } + } + } + }, + "/apis/devops.kubesphere.io/v1alpha1/s2ibinaries": { + "get": { + "description": "list or watch objects of kind S2iBinary", + "consumes": [ + "*/*" + ], + "produces": [ + "application/json", + "application/yaml", + "application/vnd.kubernetes.protobuf", + "application/json;stream=watch", + "application/vnd.kubernetes.protobuf;stream=watch" + ], + "schemes": [ + "https" + ], + "tags": [ + "devopsKubesphereIo_v1alpha1" + ], + "operationId": "listDevopsKubesphereIoV1alpha1S2iBinary", + "parameters": [ + { + "uniqueItems": true, + "type": "boolean", + "description": "allowWatchBookmarks requests watch events with type \"BOOKMARK\". Servers that do not implement bookmarks may ignore this flag and bookmarks are sent at the server's discretion. Clients should not assume bookmarks are returned at any specific interval, nor may they assume the server will send any BOOKMARK event during a session. If this is not a watch, this field is ignored. If the feature gate WatchBookmarks is not enabled in apiserver, this field is ignored.", + "name": "allowWatchBookmarks", + "in": "query" + }, + { + "uniqueItems": true, + "type": "string", + "description": "The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\".\n\nThis field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications.", + "name": "continue", + "in": "query" + }, + { + "uniqueItems": true, + "type": "string", + "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", + "name": "fieldSelector", + "in": "query" + }, + { + "uniqueItems": true, + "type": "string", + "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", + "name": "labelSelector", + "in": "query" + }, + { + "uniqueItems": true, + "type": "integer", + "description": "limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true.\n\nThe server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned.", + "name": "limit", + "in": "query" + }, + { + "uniqueItems": true, + "type": "string", + "description": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv.", + "name": "resourceVersion", + "in": "query" + }, + { + "uniqueItems": true, + "type": "integer", + "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", + "name": "timeoutSeconds", + "in": "query" + }, + { + "uniqueItems": true, + "type": "boolean", + "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", + "name": "watch", + "in": "query" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/io.kubesphere.kubesphere.pkg.apis.devops.v1alpha1.S2iBinaryList" + } + } + }, + "x-kubernetes-action": "list", + "x-kubernetes-group-version-kind": { + "group": "devops.kubesphere.io", + "version": "v1alpha1", + "kind": "S2iBinary" + } + }, + "post": { + "description": "create a S2iBinary", + "consumes": [ + "*/*" + ], + "produces": [ + "application/json", + "application/yaml", + "application/vnd.kubernetes.protobuf" + ], + "schemes": [ + "https" + ], + "tags": [ + "devopsKubesphereIo_v1alpha1" + ], + "operationId": "createDevopsKubesphereIoV1alpha1S2iBinary", + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/io.kubesphere.kubesphere.pkg.apis.devops.v1alpha1.S2iBinary" + } + }, + { + "uniqueItems": true, + "type": "string", + "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", + "name": "dryRun", + "in": "query" + }, + { + "uniqueItems": true, + "type": "string", + "description": "fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint.", + "name": "fieldManager", + "in": "query" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/io.kubesphere.kubesphere.pkg.apis.devops.v1alpha1.S2iBinary" + } + }, + "201": { + "description": "Created", + "schema": { + "$ref": "#/definitions/io.kubesphere.kubesphere.pkg.apis.devops.v1alpha1.S2iBinary" + } + }, + "202": { + "description": "Accepted", + "schema": { + "$ref": "#/definitions/io.kubesphere.kubesphere.pkg.apis.devops.v1alpha1.S2iBinary" + } + } + }, + "x-kubernetes-action": "post", + "x-kubernetes-group-version-kind": { + "group": "devops.kubesphere.io", + "version": "v1alpha1", + "kind": "S2iBinary" + } + }, + "delete": { + "description": "delete collection of S2iBinary", + "consumes": [ + "*/*" + ], + "produces": [ + "application/json", + "application/yaml", + "application/vnd.kubernetes.protobuf" + ], + "schemes": [ + "https" + ], + "tags": [ + "devopsKubesphereIo_v1alpha1" + ], + "operationId": "deleteDevopsKubesphereIoV1alpha1CollectionS2iBinary", + "parameters": [ + { + "uniqueItems": true, + "type": "boolean", + "description": "allowWatchBookmarks requests watch events with type \"BOOKMARK\". Servers that do not implement bookmarks may ignore this flag and bookmarks are sent at the server's discretion. Clients should not assume bookmarks are returned at any specific interval, nor may they assume the server will send any BOOKMARK event during a session. If this is not a watch, this field is ignored. If the feature gate WatchBookmarks is not enabled in apiserver, this field is ignored.", + "name": "allowWatchBookmarks", + "in": "query" + }, + { + "name": "body", + "in": "body", + "schema": { + "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions" + } + }, + { + "uniqueItems": true, + "type": "string", + "description": "The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\".\n\nThis field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications.", + "name": "continue", + "in": "query" + }, + { + "uniqueItems": true, + "type": "string", + "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", + "name": "dryRun", + "in": "query" + }, + { + "uniqueItems": true, + "type": "string", + "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", + "name": "fieldSelector", + "in": "query" + }, + { + "uniqueItems": true, + "type": "integer", + "description": "The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately.", + "name": "gracePeriodSeconds", + "in": "query" + }, + { + "uniqueItems": true, + "type": "string", + "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", + "name": "labelSelector", + "in": "query" + }, + { + "uniqueItems": true, + "type": "integer", + "description": "limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true.\n\nThe server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned.", + "name": "limit", + "in": "query" + }, + { + "uniqueItems": true, + "type": "boolean", + "description": "Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both.", + "name": "orphanDependents", + "in": "query" + }, + { + "uniqueItems": true, + "type": "string", + "description": "Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. Acceptable values are: 'Orphan' - orphan the dependents; 'Background' - allow the garbage collector to delete the dependents in the background; 'Foreground' - a cascading policy that deletes all dependents in the foreground.", + "name": "propagationPolicy", + "in": "query" + }, + { + "uniqueItems": true, + "type": "string", + "description": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv.", + "name": "resourceVersion", + "in": "query" + }, + { + "uniqueItems": true, + "type": "integer", + "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", + "name": "timeoutSeconds", + "in": "query" + }, + { + "uniqueItems": true, + "type": "boolean", + "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", + "name": "watch", + "in": "query" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status" + } + } + }, + "x-kubernetes-action": "deletecollection", + "x-kubernetes-group-version-kind": { + "group": "devops.kubesphere.io", + "version": "v1alpha1", + "kind": "S2iBinary" + } + }, + "parameters": [ + { + "uniqueItems": true, + "type": "string", + "description": "If 'true', then the output is pretty printed.", + "name": "pretty", + "in": "query" + } + ] + }, + "/apis/devops.kubesphere.io/v1alpha1/s2ibinaries/{name}": { + "get": { + "description": "read the specified S2iBinary", + "consumes": [ + "*/*" + ], + "produces": [ + "application/json", + "application/yaml", + "application/vnd.kubernetes.protobuf" + ], + "schemes": [ + "https" + ], + "tags": [ + "devopsKubesphereIo_v1alpha1" + ], + "operationId": "readDevopsKubesphereIoV1alpha1S2iBinary", + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/io.kubesphere.kubesphere.pkg.apis.devops.v1alpha1.S2iBinary" + } + } + }, + "x-kubernetes-action": "get", + "x-kubernetes-group-version-kind": { + "group": "devops.kubesphere.io", + "version": "v1alpha1", + "kind": "S2iBinary" + } + }, + "put": { + "description": "replace the specified S2iBinary", + "consumes": [ + "*/*" + ], + "produces": [ + "application/json", + "application/yaml", + "application/vnd.kubernetes.protobuf" + ], + "schemes": [ + "https" + ], + "tags": [ + "devopsKubesphereIo_v1alpha1" + ], + "operationId": "replaceDevopsKubesphereIoV1alpha1S2iBinary", + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/io.kubesphere.kubesphere.pkg.apis.devops.v1alpha1.S2iBinary" + } + }, + { + "uniqueItems": true, + "type": "string", + "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", + "name": "dryRun", + "in": "query" + }, + { + "uniqueItems": true, + "type": "string", + "description": "fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint.", + "name": "fieldManager", + "in": "query" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/io.kubesphere.kubesphere.pkg.apis.devops.v1alpha1.S2iBinary" + } + }, + "201": { + "description": "Created", + "schema": { + "$ref": "#/definitions/io.kubesphere.kubesphere.pkg.apis.devops.v1alpha1.S2iBinary" + } + } + }, + "x-kubernetes-action": "put", + "x-kubernetes-group-version-kind": { + "group": "devops.kubesphere.io", + "version": "v1alpha1", + "kind": "S2iBinary" + } + }, + "delete": { + "description": "delete a S2iBinary", + "consumes": [ + "*/*" + ], + "produces": [ + "application/json", + "application/yaml", + "application/vnd.kubernetes.protobuf" + ], + "schemes": [ + "https" + ], + "tags": [ + "devopsKubesphereIo_v1alpha1" + ], + "operationId": "deleteDevopsKubesphereIoV1alpha1S2iBinary", + "parameters": [ + { + "name": "body", + "in": "body", + "schema": { + "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions" + } + }, + { + "uniqueItems": true, + "type": "string", + "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", + "name": "dryRun", + "in": "query" + }, + { + "uniqueItems": true, + "type": "integer", + "description": "The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately.", + "name": "gracePeriodSeconds", + "in": "query" + }, + { + "uniqueItems": true, + "type": "boolean", + "description": "Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both.", + "name": "orphanDependents", + "in": "query" + }, + { + "uniqueItems": true, + "type": "string", + "description": "Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. Acceptable values are: 'Orphan' - orphan the dependents; 'Background' - allow the garbage collector to delete the dependents in the background; 'Foreground' - a cascading policy that deletes all dependents in the foreground.", + "name": "propagationPolicy", + "in": "query" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status" + } + }, + "202": { + "description": "Accepted", + "schema": { + "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status" + } + } + }, + "x-kubernetes-action": "delete", + "x-kubernetes-group-version-kind": { + "group": "devops.kubesphere.io", + "version": "v1alpha1", + "kind": "S2iBinary" + } + }, + "patch": { + "description": "partially update the specified S2iBinary", + "consumes": [ + "application/json-patch+json", + "application/merge-patch+json", + "application/strategic-merge-patch+json", + "application/apply-patch+yaml" + ], + "produces": [ + "application/json", + "application/yaml", + "application/vnd.kubernetes.protobuf" + ], + "schemes": [ + "https" + ], + "tags": [ + "devopsKubesphereIo_v1alpha1" + ], + "operationId": "patchDevopsKubesphereIoV1alpha1S2iBinary", + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Patch" + } + }, + { + "uniqueItems": true, + "type": "string", + "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", + "name": "dryRun", + "in": "query" + }, + { + "uniqueItems": true, + "type": "string", + "description": "fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. This field is required for apply requests (application/apply-patch) but optional for non-apply patch types (JsonPatch, MergePatch, StrategicMergePatch).", + "name": "fieldManager", + "in": "query" + }, + { + "uniqueItems": true, + "type": "boolean", + "description": "Force is going to \"force\" Apply requests. It means user will re-acquire conflicting fields owned by other people. Force flag must be unset for non-apply patch requests.", + "name": "force", + "in": "query" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/io.kubesphere.kubesphere.pkg.apis.devops.v1alpha1.S2iBinary" + } + } + }, + "x-kubernetes-action": "patch", + "x-kubernetes-group-version-kind": { + "group": "devops.kubesphere.io", + "version": "v1alpha1", + "kind": "S2iBinary" + } + }, + "parameters": [ + { + "uniqueItems": true, + "type": "string", + "description": "name of the S2iBinary", + "name": "name", + "in": "path", + "required": true + }, + { + "uniqueItems": true, + "type": "string", + "description": "If 'true', then the output is pretty printed.", + "name": "pretty", + "in": "query" + } + ] + }, + "/apis/devops.kubesphere.io/v1alpha1/s2ibinaries/{name}/status": { + "get": { + "description": "read status of the specified S2iBinary", + "consumes": [ + "*/*" + ], + "produces": [ + "application/json", + "application/yaml", + "application/vnd.kubernetes.protobuf" + ], + "schemes": [ + "https" + ], + "tags": [ + "devopsKubesphereIo_v1alpha1" + ], + "operationId": "readDevopsKubesphereIoV1alpha1S2iBinaryStatus", + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/io.kubesphere.kubesphere.pkg.apis.devops.v1alpha1.S2iBinary" + } + } + }, + "x-kubernetes-action": "get", + "x-kubernetes-group-version-kind": { + "group": "devops.kubesphere.io", + "version": "v1alpha1", + "kind": "S2iBinary" + } + }, + "put": { + "description": "replace status of the specified S2iBinary", + "consumes": [ + "*/*" + ], + "produces": [ + "application/json", + "application/yaml", + "application/vnd.kubernetes.protobuf" + ], + "schemes": [ + "https" + ], + "tags": [ + "devopsKubesphereIo_v1alpha1" + ], + "operationId": "replaceDevopsKubesphereIoV1alpha1S2iBinaryStatus", + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/io.kubesphere.kubesphere.pkg.apis.devops.v1alpha1.S2iBinary" + } + }, + { + "uniqueItems": true, + "type": "string", + "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", + "name": "dryRun", + "in": "query" + }, + { + "uniqueItems": true, + "type": "string", + "description": "fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint.", + "name": "fieldManager", + "in": "query" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/io.kubesphere.kubesphere.pkg.apis.devops.v1alpha1.S2iBinary" + } + }, + "201": { + "description": "Created", + "schema": { + "$ref": "#/definitions/io.kubesphere.kubesphere.pkg.apis.devops.v1alpha1.S2iBinary" + } + } + }, + "x-kubernetes-action": "put", + "x-kubernetes-group-version-kind": { + "group": "devops.kubesphere.io", + "version": "v1alpha1", + "kind": "S2iBinary" + } + }, + "patch": { + "description": "partially update status of the specified S2iBinary", + "consumes": [ + "application/json-patch+json", + "application/merge-patch+json", + "application/strategic-merge-patch+json", + "application/apply-patch+yaml" + ], + "produces": [ + "application/json", + "application/yaml", + "application/vnd.kubernetes.protobuf" + ], + "schemes": [ + "https" + ], + "tags": [ + "devopsKubesphereIo_v1alpha1" + ], + "operationId": "patchDevopsKubesphereIoV1alpha1S2iBinaryStatus", + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Patch" + } + }, + { + "uniqueItems": true, + "type": "string", + "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", + "name": "dryRun", + "in": "query" + }, + { + "uniqueItems": true, + "type": "string", + "description": "fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. This field is required for apply requests (application/apply-patch) but optional for non-apply patch types (JsonPatch, MergePatch, StrategicMergePatch).", + "name": "fieldManager", + "in": "query" + }, + { + "uniqueItems": true, + "type": "boolean", + "description": "Force is going to \"force\" Apply requests. It means user will re-acquire conflicting fields owned by other people. Force flag must be unset for non-apply patch requests.", + "name": "force", + "in": "query" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/io.kubesphere.kubesphere.pkg.apis.devops.v1alpha1.S2iBinary" + } + } + }, + "x-kubernetes-action": "patch", + "x-kubernetes-group-version-kind": { + "group": "devops.kubesphere.io", + "version": "v1alpha1", + "kind": "S2iBinary" + } + }, + "parameters": [ + { + "uniqueItems": true, + "type": "string", + "description": "name of the S2iBinary", + "name": "name", + "in": "path", + "required": true + }, + { + "uniqueItems": true, + "type": "string", + "description": "If 'true', then the output is pretty printed.", + "name": "pretty", + "in": "query" + } + ] + }, + "/apis/devops.kubesphere.io/v1alpha1/s2ibuilders": { + "get": { + "description": "list or watch objects of kind S2iBuilder", + "consumes": [ + "*/*" + ], + "produces": [ + "application/json", + "application/yaml", + "application/vnd.kubernetes.protobuf", + "application/json;stream=watch", + "application/vnd.kubernetes.protobuf;stream=watch" + ], + "schemes": [ + "https" + ], + "tags": [ + "devopsKubesphereIo_v1alpha1" + ], + "operationId": "listDevopsKubesphereIoV1alpha1S2iBuilder", + "parameters": [ + { + "uniqueItems": true, + "type": "boolean", + "description": "allowWatchBookmarks requests watch events with type \"BOOKMARK\". Servers that do not implement bookmarks may ignore this flag and bookmarks are sent at the server's discretion. Clients should not assume bookmarks are returned at any specific interval, nor may they assume the server will send any BOOKMARK event during a session. If this is not a watch, this field is ignored. If the feature gate WatchBookmarks is not enabled in apiserver, this field is ignored.", + "name": "allowWatchBookmarks", + "in": "query" + }, + { + "uniqueItems": true, + "type": "string", + "description": "The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\".\n\nThis field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications.", + "name": "continue", + "in": "query" + }, + { + "uniqueItems": true, + "type": "string", + "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", + "name": "fieldSelector", + "in": "query" + }, + { + "uniqueItems": true, + "type": "string", + "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", + "name": "labelSelector", + "in": "query" + }, + { + "uniqueItems": true, + "type": "integer", + "description": "limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true.\n\nThe server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned.", + "name": "limit", + "in": "query" + }, + { + "uniqueItems": true, + "type": "string", + "description": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv.", + "name": "resourceVersion", + "in": "query" + }, + { + "uniqueItems": true, + "type": "integer", + "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", + "name": "timeoutSeconds", + "in": "query" + }, + { + "uniqueItems": true, + "type": "boolean", + "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", + "name": "watch", + "in": "query" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/io.kubesphere.kubesphere.pkg.apis.devops.v1alpha1.S2iBuilderList" + } + } + }, + "x-kubernetes-action": "list", + "x-kubernetes-group-version-kind": { + "group": "devops.kubesphere.io", + "version": "v1alpha1", + "kind": "S2iBuilder" + } + }, + "post": { + "description": "create a S2iBuilder", + "consumes": [ + "*/*" + ], + "produces": [ + "application/json", + "application/yaml", + "application/vnd.kubernetes.protobuf" + ], + "schemes": [ + "https" + ], + "tags": [ + "devopsKubesphereIo_v1alpha1" + ], + "operationId": "createDevopsKubesphereIoV1alpha1S2iBuilder", + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/io.kubesphere.kubesphere.pkg.apis.devops.v1alpha1.S2iBuilder" + } + }, + { + "uniqueItems": true, + "type": "string", + "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", + "name": "dryRun", + "in": "query" + }, + { + "uniqueItems": true, + "type": "string", + "description": "fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint.", + "name": "fieldManager", + "in": "query" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/io.kubesphere.kubesphere.pkg.apis.devops.v1alpha1.S2iBuilder" + } + }, + "201": { + "description": "Created", + "schema": { + "$ref": "#/definitions/io.kubesphere.kubesphere.pkg.apis.devops.v1alpha1.S2iBuilder" + } + }, + "202": { + "description": "Accepted", + "schema": { + "$ref": "#/definitions/io.kubesphere.kubesphere.pkg.apis.devops.v1alpha1.S2iBuilder" + } + } + }, + "x-kubernetes-action": "post", + "x-kubernetes-group-version-kind": { + "group": "devops.kubesphere.io", + "version": "v1alpha1", + "kind": "S2iBuilder" + } + }, + "delete": { + "description": "delete collection of S2iBuilder", + "consumes": [ + "*/*" + ], + "produces": [ + "application/json", + "application/yaml", + "application/vnd.kubernetes.protobuf" + ], + "schemes": [ + "https" + ], + "tags": [ + "devopsKubesphereIo_v1alpha1" + ], + "operationId": "deleteDevopsKubesphereIoV1alpha1CollectionS2iBuilder", + "parameters": [ + { + "uniqueItems": true, + "type": "boolean", + "description": "allowWatchBookmarks requests watch events with type \"BOOKMARK\". Servers that do not implement bookmarks may ignore this flag and bookmarks are sent at the server's discretion. Clients should not assume bookmarks are returned at any specific interval, nor may they assume the server will send any BOOKMARK event during a session. If this is not a watch, this field is ignored. If the feature gate WatchBookmarks is not enabled in apiserver, this field is ignored.", + "name": "allowWatchBookmarks", + "in": "query" + }, + { + "name": "body", + "in": "body", + "schema": { + "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions" + } + }, + { + "uniqueItems": true, + "type": "string", + "description": "The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\".\n\nThis field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications.", + "name": "continue", + "in": "query" + }, + { + "uniqueItems": true, + "type": "string", + "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", + "name": "dryRun", + "in": "query" + }, + { + "uniqueItems": true, + "type": "string", + "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", + "name": "fieldSelector", + "in": "query" + }, + { + "uniqueItems": true, + "type": "integer", + "description": "The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately.", + "name": "gracePeriodSeconds", + "in": "query" + }, + { + "uniqueItems": true, + "type": "string", + "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", + "name": "labelSelector", + "in": "query" + }, + { + "uniqueItems": true, + "type": "integer", + "description": "limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true.\n\nThe server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned.", + "name": "limit", + "in": "query" + }, + { + "uniqueItems": true, + "type": "boolean", + "description": "Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both.", + "name": "orphanDependents", + "in": "query" + }, + { + "uniqueItems": true, + "type": "string", + "description": "Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. Acceptable values are: 'Orphan' - orphan the dependents; 'Background' - allow the garbage collector to delete the dependents in the background; 'Foreground' - a cascading policy that deletes all dependents in the foreground.", + "name": "propagationPolicy", + "in": "query" + }, + { + "uniqueItems": true, + "type": "string", + "description": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv.", + "name": "resourceVersion", + "in": "query" + }, + { + "uniqueItems": true, + "type": "integer", + "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", + "name": "timeoutSeconds", + "in": "query" + }, + { + "uniqueItems": true, + "type": "boolean", + "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", + "name": "watch", + "in": "query" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status" + } + } + }, + "x-kubernetes-action": "deletecollection", + "x-kubernetes-group-version-kind": { + "group": "devops.kubesphere.io", + "version": "v1alpha1", + "kind": "S2iBuilder" + } + }, + "parameters": [ + { + "uniqueItems": true, + "type": "string", + "description": "If 'true', then the output is pretty printed.", + "name": "pretty", + "in": "query" + } + ] + }, + "/apis/devops.kubesphere.io/v1alpha1/s2ibuilders/{name}": { + "get": { + "description": "read the specified S2iBuilder", + "consumes": [ + "*/*" + ], + "produces": [ + "application/json", + "application/yaml", + "application/vnd.kubernetes.protobuf" + ], + "schemes": [ + "https" + ], + "tags": [ + "devopsKubesphereIo_v1alpha1" + ], + "operationId": "readDevopsKubesphereIoV1alpha1S2iBuilder", + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/io.kubesphere.kubesphere.pkg.apis.devops.v1alpha1.S2iBuilder" + } + } + }, + "x-kubernetes-action": "get", + "x-kubernetes-group-version-kind": { + "group": "devops.kubesphere.io", + "version": "v1alpha1", + "kind": "S2iBuilder" + } + }, + "put": { + "description": "replace the specified S2iBuilder", + "consumes": [ + "*/*" + ], + "produces": [ + "application/json", + "application/yaml", + "application/vnd.kubernetes.protobuf" + ], + "schemes": [ + "https" + ], + "tags": [ + "devopsKubesphereIo_v1alpha1" + ], + "operationId": "replaceDevopsKubesphereIoV1alpha1S2iBuilder", + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/io.kubesphere.kubesphere.pkg.apis.devops.v1alpha1.S2iBuilder" + } + }, + { + "uniqueItems": true, + "type": "string", + "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", + "name": "dryRun", + "in": "query" + }, + { + "uniqueItems": true, + "type": "string", + "description": "fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint.", + "name": "fieldManager", + "in": "query" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/io.kubesphere.kubesphere.pkg.apis.devops.v1alpha1.S2iBuilder" + } + }, + "201": { + "description": "Created", + "schema": { + "$ref": "#/definitions/io.kubesphere.kubesphere.pkg.apis.devops.v1alpha1.S2iBuilder" + } + } + }, + "x-kubernetes-action": "put", + "x-kubernetes-group-version-kind": { + "group": "devops.kubesphere.io", + "version": "v1alpha1", + "kind": "S2iBuilder" + } + }, + "delete": { + "description": "delete a S2iBuilder", + "consumes": [ + "*/*" + ], + "produces": [ + "application/json", + "application/yaml", + "application/vnd.kubernetes.protobuf" + ], + "schemes": [ + "https" + ], + "tags": [ + "devopsKubesphereIo_v1alpha1" + ], + "operationId": "deleteDevopsKubesphereIoV1alpha1S2iBuilder", + "parameters": [ + { + "name": "body", + "in": "body", + "schema": { + "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions" + } + }, + { + "uniqueItems": true, + "type": "string", + "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", + "name": "dryRun", + "in": "query" + }, + { + "uniqueItems": true, + "type": "integer", + "description": "The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately.", + "name": "gracePeriodSeconds", + "in": "query" + }, + { + "uniqueItems": true, + "type": "boolean", + "description": "Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both.", + "name": "orphanDependents", + "in": "query" + }, + { + "uniqueItems": true, + "type": "string", + "description": "Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. Acceptable values are: 'Orphan' - orphan the dependents; 'Background' - allow the garbage collector to delete the dependents in the background; 'Foreground' - a cascading policy that deletes all dependents in the foreground.", + "name": "propagationPolicy", + "in": "query" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status" + } + }, + "202": { + "description": "Accepted", + "schema": { + "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status" + } + } + }, + "x-kubernetes-action": "delete", + "x-kubernetes-group-version-kind": { + "group": "devops.kubesphere.io", + "version": "v1alpha1", + "kind": "S2iBuilder" + } + }, + "patch": { + "description": "partially update the specified S2iBuilder", + "consumes": [ + "application/json-patch+json", + "application/merge-patch+json", + "application/strategic-merge-patch+json", + "application/apply-patch+yaml" + ], + "produces": [ + "application/json", + "application/yaml", + "application/vnd.kubernetes.protobuf" + ], + "schemes": [ + "https" + ], + "tags": [ + "devopsKubesphereIo_v1alpha1" + ], + "operationId": "patchDevopsKubesphereIoV1alpha1S2iBuilder", + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Patch" + } + }, + { + "uniqueItems": true, + "type": "string", + "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", + "name": "dryRun", + "in": "query" + }, + { + "uniqueItems": true, + "type": "string", + "description": "fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. This field is required for apply requests (application/apply-patch) but optional for non-apply patch types (JsonPatch, MergePatch, StrategicMergePatch).", + "name": "fieldManager", + "in": "query" + }, + { + "uniqueItems": true, + "type": "boolean", + "description": "Force is going to \"force\" Apply requests. It means user will re-acquire conflicting fields owned by other people. Force flag must be unset for non-apply patch requests.", + "name": "force", + "in": "query" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/io.kubesphere.kubesphere.pkg.apis.devops.v1alpha1.S2iBuilder" + } + } + }, + "x-kubernetes-action": "patch", + "x-kubernetes-group-version-kind": { + "group": "devops.kubesphere.io", + "version": "v1alpha1", + "kind": "S2iBuilder" + } + }, + "parameters": [ + { + "uniqueItems": true, + "type": "string", + "description": "name of the S2iBuilder", + "name": "name", + "in": "path", + "required": true + }, + { + "uniqueItems": true, + "type": "string", + "description": "If 'true', then the output is pretty printed.", + "name": "pretty", + "in": "query" + } + ] + }, + "/apis/devops.kubesphere.io/v1alpha1/s2ibuilders/{name}/status": { + "get": { + "description": "read status of the specified S2iBuilder", + "consumes": [ + "*/*" + ], + "produces": [ + "application/json", + "application/yaml", + "application/vnd.kubernetes.protobuf" + ], + "schemes": [ + "https" + ], + "tags": [ + "devopsKubesphereIo_v1alpha1" + ], + "operationId": "readDevopsKubesphereIoV1alpha1S2iBuilderStatus", + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/io.kubesphere.kubesphere.pkg.apis.devops.v1alpha1.S2iBuilder" + } + } + }, + "x-kubernetes-action": "get", + "x-kubernetes-group-version-kind": { + "group": "devops.kubesphere.io", + "version": "v1alpha1", + "kind": "S2iBuilder" + } + }, + "put": { + "description": "replace status of the specified S2iBuilder", + "consumes": [ + "*/*" + ], + "produces": [ + "application/json", + "application/yaml", + "application/vnd.kubernetes.protobuf" + ], + "schemes": [ + "https" + ], + "tags": [ + "devopsKubesphereIo_v1alpha1" + ], + "operationId": "replaceDevopsKubesphereIoV1alpha1S2iBuilderStatus", + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/io.kubesphere.kubesphere.pkg.apis.devops.v1alpha1.S2iBuilder" + } + }, + { + "uniqueItems": true, + "type": "string", + "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", + "name": "dryRun", + "in": "query" + }, + { + "uniqueItems": true, + "type": "string", + "description": "fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint.", + "name": "fieldManager", + "in": "query" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/io.kubesphere.kubesphere.pkg.apis.devops.v1alpha1.S2iBuilder" + } + }, + "201": { + "description": "Created", + "schema": { + "$ref": "#/definitions/io.kubesphere.kubesphere.pkg.apis.devops.v1alpha1.S2iBuilder" + } + } + }, + "x-kubernetes-action": "put", + "x-kubernetes-group-version-kind": { + "group": "devops.kubesphere.io", + "version": "v1alpha1", + "kind": "S2iBuilder" + } + }, + "patch": { + "description": "partially update status of the specified S2iBuilder", + "consumes": [ + "application/json-patch+json", + "application/merge-patch+json", + "application/strategic-merge-patch+json", + "application/apply-patch+yaml" + ], + "produces": [ + "application/json", + "application/yaml", + "application/vnd.kubernetes.protobuf" + ], + "schemes": [ + "https" + ], + "tags": [ + "devopsKubesphereIo_v1alpha1" + ], + "operationId": "patchDevopsKubesphereIoV1alpha1S2iBuilderStatus", + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Patch" + } + }, + { + "uniqueItems": true, + "type": "string", + "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", + "name": "dryRun", + "in": "query" + }, + { + "uniqueItems": true, + "type": "string", + "description": "fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. This field is required for apply requests (application/apply-patch) but optional for non-apply patch types (JsonPatch, MergePatch, StrategicMergePatch).", + "name": "fieldManager", + "in": "query" + }, + { + "uniqueItems": true, + "type": "boolean", + "description": "Force is going to \"force\" Apply requests. It means user will re-acquire conflicting fields owned by other people. Force flag must be unset for non-apply patch requests.", + "name": "force", + "in": "query" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/io.kubesphere.kubesphere.pkg.apis.devops.v1alpha1.S2iBuilder" + } + } + }, + "x-kubernetes-action": "patch", + "x-kubernetes-group-version-kind": { + "group": "devops.kubesphere.io", + "version": "v1alpha1", + "kind": "S2iBuilder" + } + }, + "parameters": [ + { + "uniqueItems": true, + "type": "string", + "description": "name of the S2iBuilder", + "name": "name", + "in": "path", + "required": true + }, + { + "uniqueItems": true, + "type": "string", + "description": "If 'true', then the output is pretty printed.", + "name": "pretty", + "in": "query" + } + ] + }, + "/apis/devops.kubesphere.io/v1alpha1/s2ibuildertemplates": { + "get": { + "description": "list or watch objects of kind S2iBuilderTemplate", + "consumes": [ + "*/*" + ], + "produces": [ + "application/json", + "application/yaml", + "application/vnd.kubernetes.protobuf", + "application/json;stream=watch", + "application/vnd.kubernetes.protobuf;stream=watch" + ], + "schemes": [ + "https" + ], + "tags": [ + "devopsKubesphereIo_v1alpha1" + ], + "operationId": "listDevopsKubesphereIoV1alpha1S2iBuilderTemplate", + "parameters": [ + { + "uniqueItems": true, + "type": "boolean", + "description": "allowWatchBookmarks requests watch events with type \"BOOKMARK\". Servers that do not implement bookmarks may ignore this flag and bookmarks are sent at the server's discretion. Clients should not assume bookmarks are returned at any specific interval, nor may they assume the server will send any BOOKMARK event during a session. If this is not a watch, this field is ignored. If the feature gate WatchBookmarks is not enabled in apiserver, this field is ignored.", + "name": "allowWatchBookmarks", + "in": "query" + }, + { + "uniqueItems": true, + "type": "string", + "description": "The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\".\n\nThis field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications.", + "name": "continue", + "in": "query" + }, + { + "uniqueItems": true, + "type": "string", + "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", + "name": "fieldSelector", + "in": "query" + }, + { + "uniqueItems": true, + "type": "string", + "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", + "name": "labelSelector", + "in": "query" + }, + { + "uniqueItems": true, + "type": "integer", + "description": "limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true.\n\nThe server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned.", + "name": "limit", + "in": "query" + }, + { + "uniqueItems": true, + "type": "string", + "description": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv.", + "name": "resourceVersion", + "in": "query" + }, + { + "uniqueItems": true, + "type": "integer", + "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", + "name": "timeoutSeconds", + "in": "query" + }, + { + "uniqueItems": true, + "type": "boolean", + "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", + "name": "watch", + "in": "query" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/io.kubesphere.kubesphere.pkg.apis.devops.v1alpha1.S2iBuilderTemplateList" + } + } + }, + "x-kubernetes-action": "list", + "x-kubernetes-group-version-kind": { + "group": "devops.kubesphere.io", + "version": "v1alpha1", + "kind": "S2iBuilderTemplate" + } + }, + "post": { + "description": "create a S2iBuilderTemplate", + "consumes": [ + "*/*" + ], + "produces": [ + "application/json", + "application/yaml", + "application/vnd.kubernetes.protobuf" + ], + "schemes": [ + "https" + ], + "tags": [ + "devopsKubesphereIo_v1alpha1" + ], + "operationId": "createDevopsKubesphereIoV1alpha1S2iBuilderTemplate", + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/io.kubesphere.kubesphere.pkg.apis.devops.v1alpha1.S2iBuilderTemplate" + } + }, + { + "uniqueItems": true, + "type": "string", + "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", + "name": "dryRun", + "in": "query" + }, + { + "uniqueItems": true, + "type": "string", + "description": "fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint.", + "name": "fieldManager", + "in": "query" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/io.kubesphere.kubesphere.pkg.apis.devops.v1alpha1.S2iBuilderTemplate" + } + }, + "201": { + "description": "Created", + "schema": { + "$ref": "#/definitions/io.kubesphere.kubesphere.pkg.apis.devops.v1alpha1.S2iBuilderTemplate" + } + }, + "202": { + "description": "Accepted", + "schema": { + "$ref": "#/definitions/io.kubesphere.kubesphere.pkg.apis.devops.v1alpha1.S2iBuilderTemplate" + } + } + }, + "x-kubernetes-action": "post", + "x-kubernetes-group-version-kind": { + "group": "devops.kubesphere.io", + "version": "v1alpha1", + "kind": "S2iBuilderTemplate" + } + }, + "delete": { + "description": "delete collection of S2iBuilderTemplate", + "consumes": [ + "*/*" + ], + "produces": [ + "application/json", + "application/yaml", + "application/vnd.kubernetes.protobuf" + ], + "schemes": [ + "https" + ], + "tags": [ + "devopsKubesphereIo_v1alpha1" + ], + "operationId": "deleteDevopsKubesphereIoV1alpha1CollectionS2iBuilderTemplate", + "parameters": [ + { + "uniqueItems": true, + "type": "boolean", + "description": "allowWatchBookmarks requests watch events with type \"BOOKMARK\". Servers that do not implement bookmarks may ignore this flag and bookmarks are sent at the server's discretion. Clients should not assume bookmarks are returned at any specific interval, nor may they assume the server will send any BOOKMARK event during a session. If this is not a watch, this field is ignored. If the feature gate WatchBookmarks is not enabled in apiserver, this field is ignored.", + "name": "allowWatchBookmarks", + "in": "query" + }, + { + "name": "body", + "in": "body", + "schema": { + "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions" + } + }, + { + "uniqueItems": true, + "type": "string", + "description": "The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\".\n\nThis field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications.", + "name": "continue", + "in": "query" + }, + { + "uniqueItems": true, + "type": "string", + "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", + "name": "dryRun", + "in": "query" + }, + { + "uniqueItems": true, + "type": "string", + "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", + "name": "fieldSelector", + "in": "query" + }, + { + "uniqueItems": true, + "type": "integer", + "description": "The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately.", + "name": "gracePeriodSeconds", + "in": "query" + }, + { + "uniqueItems": true, + "type": "string", + "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", + "name": "labelSelector", + "in": "query" + }, + { + "uniqueItems": true, + "type": "integer", + "description": "limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true.\n\nThe server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned.", + "name": "limit", + "in": "query" + }, + { + "uniqueItems": true, + "type": "boolean", + "description": "Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both.", + "name": "orphanDependents", + "in": "query" + }, + { + "uniqueItems": true, + "type": "string", + "description": "Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. Acceptable values are: 'Orphan' - orphan the dependents; 'Background' - allow the garbage collector to delete the dependents in the background; 'Foreground' - a cascading policy that deletes all dependents in the foreground.", + "name": "propagationPolicy", + "in": "query" + }, + { + "uniqueItems": true, + "type": "string", + "description": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv.", + "name": "resourceVersion", + "in": "query" + }, + { + "uniqueItems": true, + "type": "integer", + "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", + "name": "timeoutSeconds", + "in": "query" + }, + { + "uniqueItems": true, + "type": "boolean", + "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", + "name": "watch", + "in": "query" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status" + } + } + }, + "x-kubernetes-action": "deletecollection", + "x-kubernetes-group-version-kind": { + "group": "devops.kubesphere.io", + "version": "v1alpha1", + "kind": "S2iBuilderTemplate" + } + }, + "parameters": [ + { + "uniqueItems": true, + "type": "string", + "description": "If 'true', then the output is pretty printed.", + "name": "pretty", + "in": "query" + } + ] + }, + "/apis/devops.kubesphere.io/v1alpha1/s2ibuildertemplates/{name}": { + "get": { + "description": "read the specified S2iBuilderTemplate", + "consumes": [ + "*/*" + ], + "produces": [ + "application/json", + "application/yaml", + "application/vnd.kubernetes.protobuf" + ], + "schemes": [ + "https" + ], + "tags": [ + "devopsKubesphereIo_v1alpha1" + ], + "operationId": "readDevopsKubesphereIoV1alpha1S2iBuilderTemplate", + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/io.kubesphere.kubesphere.pkg.apis.devops.v1alpha1.S2iBuilderTemplate" + } + } + }, + "x-kubernetes-action": "get", + "x-kubernetes-group-version-kind": { + "group": "devops.kubesphere.io", + "version": "v1alpha1", + "kind": "S2iBuilderTemplate" + } + }, + "put": { + "description": "replace the specified S2iBuilderTemplate", + "consumes": [ + "*/*" + ], + "produces": [ + "application/json", + "application/yaml", + "application/vnd.kubernetes.protobuf" + ], + "schemes": [ + "https" + ], + "tags": [ + "devopsKubesphereIo_v1alpha1" + ], + "operationId": "replaceDevopsKubesphereIoV1alpha1S2iBuilderTemplate", + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/io.kubesphere.kubesphere.pkg.apis.devops.v1alpha1.S2iBuilderTemplate" + } + }, + { + "uniqueItems": true, + "type": "string", + "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", + "name": "dryRun", + "in": "query" + }, + { + "uniqueItems": true, + "type": "string", + "description": "fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint.", + "name": "fieldManager", + "in": "query" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/io.kubesphere.kubesphere.pkg.apis.devops.v1alpha1.S2iBuilderTemplate" + } + }, + "201": { + "description": "Created", + "schema": { + "$ref": "#/definitions/io.kubesphere.kubesphere.pkg.apis.devops.v1alpha1.S2iBuilderTemplate" + } + } + }, + "x-kubernetes-action": "put", + "x-kubernetes-group-version-kind": { + "group": "devops.kubesphere.io", + "version": "v1alpha1", + "kind": "S2iBuilderTemplate" + } + }, + "delete": { + "description": "delete a S2iBuilderTemplate", + "consumes": [ + "*/*" + ], + "produces": [ + "application/json", + "application/yaml", + "application/vnd.kubernetes.protobuf" + ], + "schemes": [ + "https" + ], + "tags": [ + "devopsKubesphereIo_v1alpha1" + ], + "operationId": "deleteDevopsKubesphereIoV1alpha1S2iBuilderTemplate", + "parameters": [ + { + "name": "body", + "in": "body", + "schema": { + "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions" + } + }, + { + "uniqueItems": true, + "type": "string", + "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", + "name": "dryRun", + "in": "query" + }, + { + "uniqueItems": true, + "type": "integer", + "description": "The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately.", + "name": "gracePeriodSeconds", + "in": "query" + }, + { + "uniqueItems": true, + "type": "boolean", + "description": "Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both.", + "name": "orphanDependents", + "in": "query" + }, + { + "uniqueItems": true, + "type": "string", + "description": "Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. Acceptable values are: 'Orphan' - orphan the dependents; 'Background' - allow the garbage collector to delete the dependents in the background; 'Foreground' - a cascading policy that deletes all dependents in the foreground.", + "name": "propagationPolicy", + "in": "query" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status" + } + }, + "202": { + "description": "Accepted", + "schema": { + "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status" + } + } + }, + "x-kubernetes-action": "delete", + "x-kubernetes-group-version-kind": { + "group": "devops.kubesphere.io", + "version": "v1alpha1", + "kind": "S2iBuilderTemplate" + } + }, + "patch": { + "description": "partially update the specified S2iBuilderTemplate", + "consumes": [ + "application/json-patch+json", + "application/merge-patch+json", + "application/strategic-merge-patch+json", + "application/apply-patch+yaml" + ], + "produces": [ + "application/json", + "application/yaml", + "application/vnd.kubernetes.protobuf" + ], + "schemes": [ + "https" + ], + "tags": [ + "devopsKubesphereIo_v1alpha1" + ], + "operationId": "patchDevopsKubesphereIoV1alpha1S2iBuilderTemplate", + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Patch" + } + }, + { + "uniqueItems": true, + "type": "string", + "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", + "name": "dryRun", + "in": "query" + }, + { + "uniqueItems": true, + "type": "string", + "description": "fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. This field is required for apply requests (application/apply-patch) but optional for non-apply patch types (JsonPatch, MergePatch, StrategicMergePatch).", + "name": "fieldManager", + "in": "query" + }, + { + "uniqueItems": true, + "type": "boolean", + "description": "Force is going to \"force\" Apply requests. It means user will re-acquire conflicting fields owned by other people. Force flag must be unset for non-apply patch requests.", + "name": "force", + "in": "query" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/io.kubesphere.kubesphere.pkg.apis.devops.v1alpha1.S2iBuilderTemplate" + } + } + }, + "x-kubernetes-action": "patch", + "x-kubernetes-group-version-kind": { + "group": "devops.kubesphere.io", + "version": "v1alpha1", + "kind": "S2iBuilderTemplate" + } + }, + "parameters": [ + { + "uniqueItems": true, + "type": "string", + "description": "name of the S2iBuilderTemplate", + "name": "name", + "in": "path", + "required": true + }, + { + "uniqueItems": true, + "type": "string", + "description": "If 'true', then the output is pretty printed.", + "name": "pretty", + "in": "query" + } + ] + }, + "/apis/devops.kubesphere.io/v1alpha1/s2ibuildertemplates/{name}/status": { + "get": { + "description": "read status of the specified S2iBuilderTemplate", + "consumes": [ + "*/*" + ], + "produces": [ + "application/json", + "application/yaml", + "application/vnd.kubernetes.protobuf" + ], + "schemes": [ + "https" + ], + "tags": [ + "devopsKubesphereIo_v1alpha1" + ], + "operationId": "readDevopsKubesphereIoV1alpha1S2iBuilderTemplateStatus", + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/io.kubesphere.kubesphere.pkg.apis.devops.v1alpha1.S2iBuilderTemplate" + } + } + }, + "x-kubernetes-action": "get", + "x-kubernetes-group-version-kind": { + "group": "devops.kubesphere.io", + "version": "v1alpha1", + "kind": "S2iBuilderTemplate" + } + }, + "put": { + "description": "replace status of the specified S2iBuilderTemplate", + "consumes": [ + "*/*" + ], + "produces": [ + "application/json", + "application/yaml", + "application/vnd.kubernetes.protobuf" + ], + "schemes": [ + "https" + ], + "tags": [ + "devopsKubesphereIo_v1alpha1" + ], + "operationId": "replaceDevopsKubesphereIoV1alpha1S2iBuilderTemplateStatus", + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/io.kubesphere.kubesphere.pkg.apis.devops.v1alpha1.S2iBuilderTemplate" + } + }, + { + "uniqueItems": true, + "type": "string", + "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", + "name": "dryRun", + "in": "query" + }, + { + "uniqueItems": true, + "type": "string", + "description": "fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint.", + "name": "fieldManager", + "in": "query" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/io.kubesphere.kubesphere.pkg.apis.devops.v1alpha1.S2iBuilderTemplate" + } + }, + "201": { + "description": "Created", + "schema": { + "$ref": "#/definitions/io.kubesphere.kubesphere.pkg.apis.devops.v1alpha1.S2iBuilderTemplate" + } + } + }, + "x-kubernetes-action": "put", + "x-kubernetes-group-version-kind": { + "group": "devops.kubesphere.io", + "version": "v1alpha1", + "kind": "S2iBuilderTemplate" + } + }, + "patch": { + "description": "partially update status of the specified S2iBuilderTemplate", + "consumes": [ + "application/json-patch+json", + "application/merge-patch+json", + "application/strategic-merge-patch+json", + "application/apply-patch+yaml" + ], + "produces": [ + "application/json", + "application/yaml", + "application/vnd.kubernetes.protobuf" + ], + "schemes": [ + "https" + ], + "tags": [ + "devopsKubesphereIo_v1alpha1" + ], + "operationId": "patchDevopsKubesphereIoV1alpha1S2iBuilderTemplateStatus", + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Patch" + } + }, + { + "uniqueItems": true, + "type": "string", + "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", + "name": "dryRun", + "in": "query" + }, + { + "uniqueItems": true, + "type": "string", + "description": "fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. This field is required for apply requests (application/apply-patch) but optional for non-apply patch types (JsonPatch, MergePatch, StrategicMergePatch).", + "name": "fieldManager", + "in": "query" + }, + { + "uniqueItems": true, + "type": "boolean", + "description": "Force is going to \"force\" Apply requests. It means user will re-acquire conflicting fields owned by other people. Force flag must be unset for non-apply patch requests.", + "name": "force", + "in": "query" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/io.kubesphere.kubesphere.pkg.apis.devops.v1alpha1.S2iBuilderTemplate" + } + } + }, + "x-kubernetes-action": "patch", + "x-kubernetes-group-version-kind": { + "group": "devops.kubesphere.io", + "version": "v1alpha1", + "kind": "S2iBuilderTemplate" + } + }, + "parameters": [ + { + "uniqueItems": true, + "type": "string", + "description": "name of the S2iBuilderTemplate", + "name": "name", + "in": "path", + "required": true + }, + { + "uniqueItems": true, + "type": "string", + "description": "If 'true', then the output is pretty printed.", + "name": "pretty", + "in": "query" + } + ] + }, + "/apis/devops.kubesphere.io/v1alpha1/s2iruns": { + "get": { + "description": "list or watch objects of kind S2iRun", + "consumes": [ + "*/*" + ], + "produces": [ + "application/json", + "application/yaml", + "application/vnd.kubernetes.protobuf", + "application/json;stream=watch", + "application/vnd.kubernetes.protobuf;stream=watch" + ], + "schemes": [ + "https" + ], + "tags": [ + "devopsKubesphereIo_v1alpha1" + ], + "operationId": "listDevopsKubesphereIoV1alpha1S2iRun", + "parameters": [ + { + "uniqueItems": true, + "type": "boolean", + "description": "allowWatchBookmarks requests watch events with type \"BOOKMARK\". Servers that do not implement bookmarks may ignore this flag and bookmarks are sent at the server's discretion. Clients should not assume bookmarks are returned at any specific interval, nor may they assume the server will send any BOOKMARK event during a session. If this is not a watch, this field is ignored. If the feature gate WatchBookmarks is not enabled in apiserver, this field is ignored.", + "name": "allowWatchBookmarks", + "in": "query" + }, + { + "uniqueItems": true, + "type": "string", + "description": "The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\".\n\nThis field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications.", + "name": "continue", + "in": "query" + }, + { + "uniqueItems": true, + "type": "string", + "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", + "name": "fieldSelector", + "in": "query" + }, + { + "uniqueItems": true, + "type": "string", + "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", + "name": "labelSelector", + "in": "query" + }, + { + "uniqueItems": true, + "type": "integer", + "description": "limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true.\n\nThe server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned.", + "name": "limit", + "in": "query" + }, + { + "uniqueItems": true, + "type": "string", + "description": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv.", + "name": "resourceVersion", + "in": "query" + }, + { + "uniqueItems": true, + "type": "integer", + "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", + "name": "timeoutSeconds", + "in": "query" + }, + { + "uniqueItems": true, + "type": "boolean", + "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", + "name": "watch", + "in": "query" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/io.kubesphere.kubesphere.pkg.apis.devops.v1alpha1.S2iRunList" + } + } + }, + "x-kubernetes-action": "list", + "x-kubernetes-group-version-kind": { + "group": "devops.kubesphere.io", + "version": "v1alpha1", + "kind": "S2iRun" + } + }, + "post": { + "description": "create a S2iRun", + "consumes": [ + "*/*" + ], + "produces": [ + "application/json", + "application/yaml", + "application/vnd.kubernetes.protobuf" + ], + "schemes": [ + "https" + ], + "tags": [ + "devopsKubesphereIo_v1alpha1" + ], + "operationId": "createDevopsKubesphereIoV1alpha1S2iRun", + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/io.kubesphere.kubesphere.pkg.apis.devops.v1alpha1.S2iRun" + } + }, + { + "uniqueItems": true, + "type": "string", + "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", + "name": "dryRun", + "in": "query" + }, + { + "uniqueItems": true, + "type": "string", + "description": "fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint.", + "name": "fieldManager", + "in": "query" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/io.kubesphere.kubesphere.pkg.apis.devops.v1alpha1.S2iRun" + } + }, + "201": { + "description": "Created", + "schema": { + "$ref": "#/definitions/io.kubesphere.kubesphere.pkg.apis.devops.v1alpha1.S2iRun" + } + }, + "202": { + "description": "Accepted", + "schema": { + "$ref": "#/definitions/io.kubesphere.kubesphere.pkg.apis.devops.v1alpha1.S2iRun" + } + } + }, + "x-kubernetes-action": "post", + "x-kubernetes-group-version-kind": { + "group": "devops.kubesphere.io", + "version": "v1alpha1", + "kind": "S2iRun" + } + }, + "delete": { + "description": "delete collection of S2iRun", + "consumes": [ + "*/*" + ], + "produces": [ + "application/json", + "application/yaml", + "application/vnd.kubernetes.protobuf" + ], + "schemes": [ + "https" + ], + "tags": [ + "devopsKubesphereIo_v1alpha1" + ], + "operationId": "deleteDevopsKubesphereIoV1alpha1CollectionS2iRun", + "parameters": [ + { + "uniqueItems": true, + "type": "boolean", + "description": "allowWatchBookmarks requests watch events with type \"BOOKMARK\". Servers that do not implement bookmarks may ignore this flag and bookmarks are sent at the server's discretion. Clients should not assume bookmarks are returned at any specific interval, nor may they assume the server will send any BOOKMARK event during a session. If this is not a watch, this field is ignored. If the feature gate WatchBookmarks is not enabled in apiserver, this field is ignored.", + "name": "allowWatchBookmarks", + "in": "query" + }, + { + "name": "body", + "in": "body", + "schema": { + "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions" + } + }, + { + "uniqueItems": true, + "type": "string", + "description": "The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\".\n\nThis field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications.", + "name": "continue", + "in": "query" + }, + { + "uniqueItems": true, + "type": "string", + "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", + "name": "dryRun", + "in": "query" + }, + { + "uniqueItems": true, + "type": "string", + "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", + "name": "fieldSelector", + "in": "query" + }, + { + "uniqueItems": true, + "type": "integer", + "description": "The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately.", + "name": "gracePeriodSeconds", + "in": "query" + }, + { + "uniqueItems": true, + "type": "string", + "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", + "name": "labelSelector", + "in": "query" + }, + { + "uniqueItems": true, + "type": "integer", + "description": "limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true.\n\nThe server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned.", + "name": "limit", + "in": "query" + }, + { + "uniqueItems": true, + "type": "boolean", + "description": "Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both.", + "name": "orphanDependents", + "in": "query" + }, + { + "uniqueItems": true, + "type": "string", + "description": "Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. Acceptable values are: 'Orphan' - orphan the dependents; 'Background' - allow the garbage collector to delete the dependents in the background; 'Foreground' - a cascading policy that deletes all dependents in the foreground.", + "name": "propagationPolicy", + "in": "query" + }, + { + "uniqueItems": true, + "type": "string", + "description": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv.", + "name": "resourceVersion", + "in": "query" + }, + { + "uniqueItems": true, + "type": "integer", + "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", + "name": "timeoutSeconds", + "in": "query" + }, + { + "uniqueItems": true, + "type": "boolean", + "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", + "name": "watch", + "in": "query" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status" + } + } + }, + "x-kubernetes-action": "deletecollection", + "x-kubernetes-group-version-kind": { + "group": "devops.kubesphere.io", + "version": "v1alpha1", + "kind": "S2iRun" + } + }, + "parameters": [ + { + "uniqueItems": true, + "type": "string", + "description": "If 'true', then the output is pretty printed.", + "name": "pretty", + "in": "query" + } + ] + }, + "/apis/devops.kubesphere.io/v1alpha1/s2iruns/{name}": { + "get": { + "description": "read the specified S2iRun", + "consumes": [ + "*/*" + ], + "produces": [ + "application/json", + "application/yaml", + "application/vnd.kubernetes.protobuf" + ], + "schemes": [ + "https" + ], + "tags": [ + "devopsKubesphereIo_v1alpha1" + ], + "operationId": "readDevopsKubesphereIoV1alpha1S2iRun", + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/io.kubesphere.kubesphere.pkg.apis.devops.v1alpha1.S2iRun" + } + } + }, + "x-kubernetes-action": "get", + "x-kubernetes-group-version-kind": { + "group": "devops.kubesphere.io", + "version": "v1alpha1", + "kind": "S2iRun" + } + }, + "put": { + "description": "replace the specified S2iRun", + "consumes": [ + "*/*" + ], + "produces": [ + "application/json", + "application/yaml", + "application/vnd.kubernetes.protobuf" + ], + "schemes": [ + "https" + ], + "tags": [ + "devopsKubesphereIo_v1alpha1" + ], + "operationId": "replaceDevopsKubesphereIoV1alpha1S2iRun", + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/io.kubesphere.kubesphere.pkg.apis.devops.v1alpha1.S2iRun" + } + }, + { + "uniqueItems": true, + "type": "string", + "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", + "name": "dryRun", + "in": "query" + }, + { + "uniqueItems": true, + "type": "string", + "description": "fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint.", + "name": "fieldManager", + "in": "query" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/io.kubesphere.kubesphere.pkg.apis.devops.v1alpha1.S2iRun" + } + }, + "201": { + "description": "Created", + "schema": { + "$ref": "#/definitions/io.kubesphere.kubesphere.pkg.apis.devops.v1alpha1.S2iRun" + } + } + }, + "x-kubernetes-action": "put", + "x-kubernetes-group-version-kind": { + "group": "devops.kubesphere.io", + "version": "v1alpha1", + "kind": "S2iRun" + } + }, + "delete": { + "description": "delete a S2iRun", + "consumes": [ + "*/*" + ], + "produces": [ + "application/json", + "application/yaml", + "application/vnd.kubernetes.protobuf" + ], + "schemes": [ + "https" + ], + "tags": [ + "devopsKubesphereIo_v1alpha1" + ], + "operationId": "deleteDevopsKubesphereIoV1alpha1S2iRun", + "parameters": [ + { + "name": "body", + "in": "body", + "schema": { + "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions" + } + }, + { + "uniqueItems": true, + "type": "string", + "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", + "name": "dryRun", + "in": "query" + }, + { + "uniqueItems": true, + "type": "integer", + "description": "The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately.", + "name": "gracePeriodSeconds", + "in": "query" + }, + { + "uniqueItems": true, + "type": "boolean", + "description": "Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both.", + "name": "orphanDependents", + "in": "query" + }, + { + "uniqueItems": true, + "type": "string", + "description": "Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. Acceptable values are: 'Orphan' - orphan the dependents; 'Background' - allow the garbage collector to delete the dependents in the background; 'Foreground' - a cascading policy that deletes all dependents in the foreground.", + "name": "propagationPolicy", + "in": "query" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status" + } + }, + "202": { + "description": "Accepted", + "schema": { + "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status" + } + } + }, + "x-kubernetes-action": "delete", + "x-kubernetes-group-version-kind": { + "group": "devops.kubesphere.io", + "version": "v1alpha1", + "kind": "S2iRun" + } + }, + "patch": { + "description": "partially update the specified S2iRun", + "consumes": [ + "application/json-patch+json", + "application/merge-patch+json", + "application/strategic-merge-patch+json", + "application/apply-patch+yaml" + ], + "produces": [ + "application/json", + "application/yaml", + "application/vnd.kubernetes.protobuf" + ], + "schemes": [ + "https" + ], + "tags": [ + "devopsKubesphereIo_v1alpha1" + ], + "operationId": "patchDevopsKubesphereIoV1alpha1S2iRun", + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Patch" + } + }, + { + "uniqueItems": true, + "type": "string", + "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", + "name": "dryRun", + "in": "query" + }, + { + "uniqueItems": true, + "type": "string", + "description": "fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. This field is required for apply requests (application/apply-patch) but optional for non-apply patch types (JsonPatch, MergePatch, StrategicMergePatch).", + "name": "fieldManager", + "in": "query" + }, + { + "uniqueItems": true, + "type": "boolean", + "description": "Force is going to \"force\" Apply requests. It means user will re-acquire conflicting fields owned by other people. Force flag must be unset for non-apply patch requests.", + "name": "force", + "in": "query" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/io.kubesphere.kubesphere.pkg.apis.devops.v1alpha1.S2iRun" + } + } + }, + "x-kubernetes-action": "patch", + "x-kubernetes-group-version-kind": { + "group": "devops.kubesphere.io", + "version": "v1alpha1", + "kind": "S2iRun" + } + }, + "parameters": [ + { + "uniqueItems": true, + "type": "string", + "description": "name of the S2iRun", + "name": "name", + "in": "path", + "required": true + }, + { + "uniqueItems": true, + "type": "string", + "description": "If 'true', then the output is pretty printed.", + "name": "pretty", + "in": "query" + } + ] + }, + "/apis/devops.kubesphere.io/v1alpha1/s2iruns/{name}/status": { + "get": { + "description": "read status of the specified S2iRun", + "consumes": [ + "*/*" + ], + "produces": [ + "application/json", + "application/yaml", + "application/vnd.kubernetes.protobuf" + ], + "schemes": [ + "https" + ], + "tags": [ + "devopsKubesphereIo_v1alpha1" + ], + "operationId": "readDevopsKubesphereIoV1alpha1S2iRunStatus", + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/io.kubesphere.kubesphere.pkg.apis.devops.v1alpha1.S2iRun" + } + } + }, + "x-kubernetes-action": "get", + "x-kubernetes-group-version-kind": { + "group": "devops.kubesphere.io", + "version": "v1alpha1", + "kind": "S2iRun" + } + }, + "put": { + "description": "replace status of the specified S2iRun", + "consumes": [ + "*/*" + ], + "produces": [ + "application/json", + "application/yaml", + "application/vnd.kubernetes.protobuf" + ], + "schemes": [ + "https" + ], + "tags": [ + "devopsKubesphereIo_v1alpha1" + ], + "operationId": "replaceDevopsKubesphereIoV1alpha1S2iRunStatus", + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/io.kubesphere.kubesphere.pkg.apis.devops.v1alpha1.S2iRun" + } + }, + { + "uniqueItems": true, + "type": "string", + "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", + "name": "dryRun", + "in": "query" + }, + { + "uniqueItems": true, + "type": "string", + "description": "fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint.", + "name": "fieldManager", + "in": "query" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/io.kubesphere.kubesphere.pkg.apis.devops.v1alpha1.S2iRun" + } + }, + "201": { + "description": "Created", + "schema": { + "$ref": "#/definitions/io.kubesphere.kubesphere.pkg.apis.devops.v1alpha1.S2iRun" + } + } + }, + "x-kubernetes-action": "put", + "x-kubernetes-group-version-kind": { + "group": "devops.kubesphere.io", + "version": "v1alpha1", + "kind": "S2iRun" + } + }, + "patch": { + "description": "partially update status of the specified S2iRun", + "consumes": [ + "application/json-patch+json", + "application/merge-patch+json", + "application/strategic-merge-patch+json", + "application/apply-patch+yaml" + ], + "produces": [ + "application/json", + "application/yaml", + "application/vnd.kubernetes.protobuf" + ], + "schemes": [ + "https" + ], + "tags": [ + "devopsKubesphereIo_v1alpha1" + ], + "operationId": "patchDevopsKubesphereIoV1alpha1S2iRunStatus", + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Patch" + } + }, + { + "uniqueItems": true, + "type": "string", + "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", + "name": "dryRun", + "in": "query" + }, + { + "uniqueItems": true, + "type": "string", + "description": "fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. This field is required for apply requests (application/apply-patch) but optional for non-apply patch types (JsonPatch, MergePatch, StrategicMergePatch).", + "name": "fieldManager", + "in": "query" + }, + { + "uniqueItems": true, + "type": "boolean", + "description": "Force is going to \"force\" Apply requests. It means user will re-acquire conflicting fields owned by other people. Force flag must be unset for non-apply patch requests.", + "name": "force", + "in": "query" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/io.kubesphere.kubesphere.pkg.apis.devops.v1alpha1.S2iRun" + } + } + }, + "x-kubernetes-action": "patch", + "x-kubernetes-group-version-kind": { + "group": "devops.kubesphere.io", + "version": "v1alpha1", + "kind": "S2iRun" + } + }, + "parameters": [ + { + "uniqueItems": true, + "type": "string", + "description": "name of the S2iRun", + "name": "name", + "in": "path", + "required": true + }, + { + "uniqueItems": true, + "type": "string", + "description": "If 'true', then the output is pretty printed.", + "name": "pretty", + "in": "query" + } + ] + }, + "/apis/devops.kubesphere.io/v1alpha1/watch/s2ibinaries": { + "get": { + "description": "watch individual changes to a list of S2iBinary. deprecated: use the 'watch' parameter with a list operation instead.", + "consumes": [ + "*/*" + ], + "produces": [ + "application/json", + "application/yaml", + "application/vnd.kubernetes.protobuf", + "application/json;stream=watch", + "application/vnd.kubernetes.protobuf;stream=watch" + ], + "schemes": [ + "https" + ], + "tags": [ + "devopsKubesphereIo_v1alpha1" + ], + "operationId": "watchDevopsKubesphereIoV1alpha1S2iBinaryList", + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent" + } + } + }, + "x-kubernetes-action": "watchlist", + "x-kubernetes-group-version-kind": { + "group": "devops.kubesphere.io", + "version": "v1alpha1", + "kind": "S2iBinary" + } + }, + "parameters": [ + { + "uniqueItems": true, + "type": "boolean", + "description": "allowWatchBookmarks requests watch events with type \"BOOKMARK\". Servers that do not implement bookmarks may ignore this flag and bookmarks are sent at the server's discretion. Clients should not assume bookmarks are returned at any specific interval, nor may they assume the server will send any BOOKMARK event during a session. If this is not a watch, this field is ignored. If the feature gate WatchBookmarks is not enabled in apiserver, this field is ignored.", + "name": "allowWatchBookmarks", + "in": "query" + }, + { + "uniqueItems": true, + "type": "string", + "description": "The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\".\n\nThis field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications.", + "name": "continue", + "in": "query" + }, + { + "uniqueItems": true, + "type": "string", + "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", + "name": "fieldSelector", + "in": "query" + }, + { + "uniqueItems": true, + "type": "string", + "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", + "name": "labelSelector", + "in": "query" + }, + { + "uniqueItems": true, + "type": "integer", + "description": "limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true.\n\nThe server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned.", + "name": "limit", + "in": "query" + }, + { + "uniqueItems": true, + "type": "string", + "description": "If 'true', then the output is pretty printed.", + "name": "pretty", + "in": "query" + }, + { + "uniqueItems": true, + "type": "string", + "description": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv.", + "name": "resourceVersion", + "in": "query" + }, + { + "uniqueItems": true, + "type": "integer", + "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", + "name": "timeoutSeconds", + "in": "query" + }, + { + "uniqueItems": true, + "type": "boolean", + "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", + "name": "watch", + "in": "query" + } + ] + }, + "/apis/devops.kubesphere.io/v1alpha1/watch/s2ibinaries/{name}": { + "get": { + "description": "watch changes to an object of kind S2iBinary. deprecated: use the 'watch' parameter with a list operation instead, filtered to a single item with the 'fieldSelector' parameter.", + "consumes": [ + "*/*" + ], + "produces": [ + "application/json", + "application/yaml", + "application/vnd.kubernetes.protobuf", + "application/json;stream=watch", + "application/vnd.kubernetes.protobuf;stream=watch" + ], + "schemes": [ + "https" + ], + "tags": [ + "devopsKubesphereIo_v1alpha1" + ], + "operationId": "watchDevopsKubesphereIoV1alpha1S2iBinary", + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent" + } + } + }, + "x-kubernetes-action": "watch", + "x-kubernetes-group-version-kind": { + "group": "devops.kubesphere.io", + "version": "v1alpha1", + "kind": "S2iBinary" + } + }, + "parameters": [ + { + "uniqueItems": true, + "type": "boolean", + "description": "allowWatchBookmarks requests watch events with type \"BOOKMARK\". Servers that do not implement bookmarks may ignore this flag and bookmarks are sent at the server's discretion. Clients should not assume bookmarks are returned at any specific interval, nor may they assume the server will send any BOOKMARK event during a session. If this is not a watch, this field is ignored. If the feature gate WatchBookmarks is not enabled in apiserver, this field is ignored.", + "name": "allowWatchBookmarks", + "in": "query" + }, + { + "uniqueItems": true, + "type": "string", + "description": "The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\".\n\nThis field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications.", + "name": "continue", + "in": "query" + }, + { + "uniqueItems": true, + "type": "string", + "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", + "name": "fieldSelector", + "in": "query" + }, + { + "uniqueItems": true, + "type": "string", + "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", + "name": "labelSelector", + "in": "query" + }, + { + "uniqueItems": true, + "type": "integer", + "description": "limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true.\n\nThe server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned.", + "name": "limit", + "in": "query" + }, + { + "uniqueItems": true, + "type": "string", + "description": "name of the S2iBinary", + "name": "name", + "in": "path", + "required": true + }, + { + "uniqueItems": true, + "type": "string", + "description": "If 'true', then the output is pretty printed.", + "name": "pretty", + "in": "query" + }, + { + "uniqueItems": true, + "type": "string", + "description": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv.", + "name": "resourceVersion", + "in": "query" + }, + { + "uniqueItems": true, + "type": "integer", + "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", + "name": "timeoutSeconds", + "in": "query" + }, + { + "uniqueItems": true, + "type": "boolean", + "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", + "name": "watch", + "in": "query" + } + ] + }, + "/apis/devops.kubesphere.io/v1alpha1/watch/s2ibuilders": { + "get": { + "description": "watch individual changes to a list of S2iBuilder. deprecated: use the 'watch' parameter with a list operation instead.", + "consumes": [ + "*/*" + ], + "produces": [ + "application/json", + "application/yaml", + "application/vnd.kubernetes.protobuf", + "application/json;stream=watch", + "application/vnd.kubernetes.protobuf;stream=watch" + ], + "schemes": [ + "https" + ], + "tags": [ + "devopsKubesphereIo_v1alpha1" + ], + "operationId": "watchDevopsKubesphereIoV1alpha1S2iBuilderList", + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent" + } + } + }, + "x-kubernetes-action": "watchlist", + "x-kubernetes-group-version-kind": { + "group": "devops.kubesphere.io", + "version": "v1alpha1", + "kind": "S2iBuilder" + } + }, + "parameters": [ + { + "uniqueItems": true, + "type": "boolean", + "description": "allowWatchBookmarks requests watch events with type \"BOOKMARK\". Servers that do not implement bookmarks may ignore this flag and bookmarks are sent at the server's discretion. Clients should not assume bookmarks are returned at any specific interval, nor may they assume the server will send any BOOKMARK event during a session. If this is not a watch, this field is ignored. If the feature gate WatchBookmarks is not enabled in apiserver, this field is ignored.", + "name": "allowWatchBookmarks", + "in": "query" + }, + { + "uniqueItems": true, + "type": "string", + "description": "The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\".\n\nThis field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications.", + "name": "continue", + "in": "query" + }, + { + "uniqueItems": true, + "type": "string", + "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", + "name": "fieldSelector", + "in": "query" + }, + { + "uniqueItems": true, + "type": "string", + "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", + "name": "labelSelector", + "in": "query" + }, + { + "uniqueItems": true, + "type": "integer", + "description": "limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true.\n\nThe server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned.", + "name": "limit", + "in": "query" + }, + { + "uniqueItems": true, + "type": "string", + "description": "If 'true', then the output is pretty printed.", + "name": "pretty", + "in": "query" + }, + { + "uniqueItems": true, + "type": "string", + "description": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv.", + "name": "resourceVersion", + "in": "query" + }, + { + "uniqueItems": true, + "type": "integer", + "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", + "name": "timeoutSeconds", + "in": "query" + }, + { + "uniqueItems": true, + "type": "boolean", + "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", + "name": "watch", + "in": "query" + } + ] + }, + "/apis/devops.kubesphere.io/v1alpha1/watch/s2ibuilders/{name}": { + "get": { + "description": "watch changes to an object of kind S2iBuilder. deprecated: use the 'watch' parameter with a list operation instead, filtered to a single item with the 'fieldSelector' parameter.", + "consumes": [ + "*/*" + ], + "produces": [ + "application/json", + "application/yaml", + "application/vnd.kubernetes.protobuf", + "application/json;stream=watch", + "application/vnd.kubernetes.protobuf;stream=watch" + ], + "schemes": [ + "https" + ], + "tags": [ + "devopsKubesphereIo_v1alpha1" + ], + "operationId": "watchDevopsKubesphereIoV1alpha1S2iBuilder", + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent" + } + } + }, + "x-kubernetes-action": "watch", + "x-kubernetes-group-version-kind": { + "group": "devops.kubesphere.io", + "version": "v1alpha1", + "kind": "S2iBuilder" + } + }, + "parameters": [ + { + "uniqueItems": true, + "type": "boolean", + "description": "allowWatchBookmarks requests watch events with type \"BOOKMARK\". Servers that do not implement bookmarks may ignore this flag and bookmarks are sent at the server's discretion. Clients should not assume bookmarks are returned at any specific interval, nor may they assume the server will send any BOOKMARK event during a session. If this is not a watch, this field is ignored. If the feature gate WatchBookmarks is not enabled in apiserver, this field is ignored.", + "name": "allowWatchBookmarks", + "in": "query" + }, + { + "uniqueItems": true, + "type": "string", + "description": "The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\".\n\nThis field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications.", + "name": "continue", + "in": "query" + }, + { + "uniqueItems": true, + "type": "string", + "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", + "name": "fieldSelector", + "in": "query" + }, + { + "uniqueItems": true, + "type": "string", + "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", + "name": "labelSelector", + "in": "query" + }, + { + "uniqueItems": true, + "type": "integer", + "description": "limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true.\n\nThe server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned.", + "name": "limit", + "in": "query" + }, + { + "uniqueItems": true, + "type": "string", + "description": "name of the S2iBuilder", + "name": "name", + "in": "path", + "required": true + }, + { + "uniqueItems": true, + "type": "string", + "description": "If 'true', then the output is pretty printed.", + "name": "pretty", + "in": "query" + }, + { + "uniqueItems": true, + "type": "string", + "description": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv.", + "name": "resourceVersion", + "in": "query" + }, + { + "uniqueItems": true, + "type": "integer", + "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", + "name": "timeoutSeconds", + "in": "query" + }, + { + "uniqueItems": true, + "type": "boolean", + "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", + "name": "watch", + "in": "query" + } + ] + }, + "/apis/devops.kubesphere.io/v1alpha1/watch/s2ibuildertemplates": { + "get": { + "description": "watch individual changes to a list of S2iBuilderTemplate. deprecated: use the 'watch' parameter with a list operation instead.", + "consumes": [ + "*/*" + ], + "produces": [ + "application/json", + "application/yaml", + "application/vnd.kubernetes.protobuf", + "application/json;stream=watch", + "application/vnd.kubernetes.protobuf;stream=watch" + ], + "schemes": [ + "https" + ], + "tags": [ + "devopsKubesphereIo_v1alpha1" + ], + "operationId": "watchDevopsKubesphereIoV1alpha1S2iBuilderTemplateList", + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent" + } + } + }, + "x-kubernetes-action": "watchlist", + "x-kubernetes-group-version-kind": { + "group": "devops.kubesphere.io", + "version": "v1alpha1", + "kind": "S2iBuilderTemplate" + } + }, + "parameters": [ + { + "uniqueItems": true, + "type": "boolean", + "description": "allowWatchBookmarks requests watch events with type \"BOOKMARK\". Servers that do not implement bookmarks may ignore this flag and bookmarks are sent at the server's discretion. Clients should not assume bookmarks are returned at any specific interval, nor may they assume the server will send any BOOKMARK event during a session. If this is not a watch, this field is ignored. If the feature gate WatchBookmarks is not enabled in apiserver, this field is ignored.", + "name": "allowWatchBookmarks", + "in": "query" + }, + { + "uniqueItems": true, + "type": "string", + "description": "The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\".\n\nThis field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications.", + "name": "continue", + "in": "query" + }, + { + "uniqueItems": true, + "type": "string", + "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", + "name": "fieldSelector", + "in": "query" + }, + { + "uniqueItems": true, + "type": "string", + "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", + "name": "labelSelector", + "in": "query" + }, + { + "uniqueItems": true, + "type": "integer", + "description": "limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true.\n\nThe server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned.", + "name": "limit", + "in": "query" + }, + { + "uniqueItems": true, + "type": "string", + "description": "If 'true', then the output is pretty printed.", + "name": "pretty", + "in": "query" + }, + { + "uniqueItems": true, + "type": "string", + "description": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv.", + "name": "resourceVersion", + "in": "query" + }, + { + "uniqueItems": true, + "type": "integer", + "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", + "name": "timeoutSeconds", + "in": "query" + }, + { + "uniqueItems": true, + "type": "boolean", + "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", + "name": "watch", + "in": "query" + } + ] + }, + "/apis/devops.kubesphere.io/v1alpha1/watch/s2ibuildertemplates/{name}": { + "get": { + "description": "watch changes to an object of kind S2iBuilderTemplate. deprecated: use the 'watch' parameter with a list operation instead, filtered to a single item with the 'fieldSelector' parameter.", + "consumes": [ + "*/*" + ], + "produces": [ + "application/json", + "application/yaml", + "application/vnd.kubernetes.protobuf", + "application/json;stream=watch", + "application/vnd.kubernetes.protobuf;stream=watch" + ], + "schemes": [ + "https" + ], + "tags": [ + "devopsKubesphereIo_v1alpha1" + ], + "operationId": "watchDevopsKubesphereIoV1alpha1S2iBuilderTemplate", + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent" + } + } + }, + "x-kubernetes-action": "watch", + "x-kubernetes-group-version-kind": { + "group": "devops.kubesphere.io", + "version": "v1alpha1", + "kind": "S2iBuilderTemplate" + } + }, + "parameters": [ + { + "uniqueItems": true, + "type": "boolean", + "description": "allowWatchBookmarks requests watch events with type \"BOOKMARK\". Servers that do not implement bookmarks may ignore this flag and bookmarks are sent at the server's discretion. Clients should not assume bookmarks are returned at any specific interval, nor may they assume the server will send any BOOKMARK event during a session. If this is not a watch, this field is ignored. If the feature gate WatchBookmarks is not enabled in apiserver, this field is ignored.", + "name": "allowWatchBookmarks", + "in": "query" + }, + { + "uniqueItems": true, + "type": "string", + "description": "The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\".\n\nThis field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications.", + "name": "continue", + "in": "query" + }, + { + "uniqueItems": true, + "type": "string", + "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", + "name": "fieldSelector", + "in": "query" + }, + { + "uniqueItems": true, + "type": "string", + "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", + "name": "labelSelector", + "in": "query" + }, + { + "uniqueItems": true, + "type": "integer", + "description": "limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true.\n\nThe server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned.", + "name": "limit", + "in": "query" + }, + { + "uniqueItems": true, + "type": "string", + "description": "name of the S2iBuilderTemplate", + "name": "name", + "in": "path", + "required": true + }, + { + "uniqueItems": true, + "type": "string", + "description": "If 'true', then the output is pretty printed.", + "name": "pretty", + "in": "query" + }, + { + "uniqueItems": true, + "type": "string", + "description": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv.", + "name": "resourceVersion", + "in": "query" + }, + { + "uniqueItems": true, + "type": "integer", + "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", + "name": "timeoutSeconds", + "in": "query" + }, + { + "uniqueItems": true, + "type": "boolean", + "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", + "name": "watch", + "in": "query" + } + ] + }, + "/apis/devops.kubesphere.io/v1alpha1/watch/s2iruns": { + "get": { + "description": "watch individual changes to a list of S2iRun. deprecated: use the 'watch' parameter with a list operation instead.", + "consumes": [ + "*/*" + ], + "produces": [ + "application/json", + "application/yaml", + "application/vnd.kubernetes.protobuf", + "application/json;stream=watch", + "application/vnd.kubernetes.protobuf;stream=watch" + ], + "schemes": [ + "https" + ], + "tags": [ + "devopsKubesphereIo_v1alpha1" + ], + "operationId": "watchDevopsKubesphereIoV1alpha1S2iRunList", + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent" + } + } + }, + "x-kubernetes-action": "watchlist", + "x-kubernetes-group-version-kind": { + "group": "devops.kubesphere.io", + "version": "v1alpha1", + "kind": "S2iRun" + } + }, + "parameters": [ + { + "uniqueItems": true, + "type": "boolean", + "description": "allowWatchBookmarks requests watch events with type \"BOOKMARK\". Servers that do not implement bookmarks may ignore this flag and bookmarks are sent at the server's discretion. Clients should not assume bookmarks are returned at any specific interval, nor may they assume the server will send any BOOKMARK event during a session. If this is not a watch, this field is ignored. If the feature gate WatchBookmarks is not enabled in apiserver, this field is ignored.", + "name": "allowWatchBookmarks", + "in": "query" + }, + { + "uniqueItems": true, + "type": "string", + "description": "The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\".\n\nThis field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications.", + "name": "continue", + "in": "query" + }, + { + "uniqueItems": true, + "type": "string", + "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", + "name": "fieldSelector", + "in": "query" + }, + { + "uniqueItems": true, + "type": "string", + "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", + "name": "labelSelector", + "in": "query" + }, + { + "uniqueItems": true, + "type": "integer", + "description": "limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true.\n\nThe server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned.", + "name": "limit", + "in": "query" + }, + { + "uniqueItems": true, + "type": "string", + "description": "If 'true', then the output is pretty printed.", + "name": "pretty", + "in": "query" + }, + { + "uniqueItems": true, + "type": "string", + "description": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv.", + "name": "resourceVersion", + "in": "query" + }, + { + "uniqueItems": true, + "type": "integer", + "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", + "name": "timeoutSeconds", + "in": "query" + }, + { + "uniqueItems": true, + "type": "boolean", + "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", + "name": "watch", + "in": "query" + } + ] + }, + "/apis/devops.kubesphere.io/v1alpha1/watch/s2iruns/{name}": { + "get": { + "description": "watch changes to an object of kind S2iRun. deprecated: use the 'watch' parameter with a list operation instead, filtered to a single item with the 'fieldSelector' parameter.", + "consumes": [ + "*/*" + ], + "produces": [ + "application/json", + "application/yaml", + "application/vnd.kubernetes.protobuf", + "application/json;stream=watch", + "application/vnd.kubernetes.protobuf;stream=watch" + ], + "schemes": [ + "https" + ], + "tags": [ + "devopsKubesphereIo_v1alpha1" + ], + "operationId": "watchDevopsKubesphereIoV1alpha1S2iRun", + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent" + } + } + }, + "x-kubernetes-action": "watch", + "x-kubernetes-group-version-kind": { + "group": "devops.kubesphere.io", + "version": "v1alpha1", + "kind": "S2iRun" + } + }, + "parameters": [ + { + "uniqueItems": true, + "type": "boolean", + "description": "allowWatchBookmarks requests watch events with type \"BOOKMARK\". Servers that do not implement bookmarks may ignore this flag and bookmarks are sent at the server's discretion. Clients should not assume bookmarks are returned at any specific interval, nor may they assume the server will send any BOOKMARK event during a session. If this is not a watch, this field is ignored. If the feature gate WatchBookmarks is not enabled in apiserver, this field is ignored.", + "name": "allowWatchBookmarks", + "in": "query" + }, + { + "uniqueItems": true, + "type": "string", + "description": "The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\".\n\nThis field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications.", + "name": "continue", + "in": "query" + }, + { + "uniqueItems": true, + "type": "string", + "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", + "name": "fieldSelector", + "in": "query" + }, + { + "uniqueItems": true, + "type": "string", + "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", + "name": "labelSelector", + "in": "query" + }, + { + "uniqueItems": true, + "type": "integer", + "description": "limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true.\n\nThe server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned.", + "name": "limit", + "in": "query" + }, + { + "uniqueItems": true, + "type": "string", + "description": "name of the S2iRun", + "name": "name", + "in": "path", + "required": true + }, + { + "uniqueItems": true, + "type": "string", + "description": "If 'true', then the output is pretty printed.", + "name": "pretty", + "in": "query" + }, + { + "uniqueItems": true, + "type": "string", + "description": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv.", + "name": "resourceVersion", + "in": "query" + }, + { + "uniqueItems": true, + "type": "integer", + "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", + "name": "timeoutSeconds", + "in": "query" + }, + { + "uniqueItems": true, + "type": "boolean", + "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", + "name": "watch", + "in": "query" + } + ] + }, + "/apis/devops.kubesphere.io/v1alpha3/": { + "get": { + "description": "get available resources", + "consumes": [ + "application/json", + "application/yaml", + "application/vnd.kubernetes.protobuf" + ], + "produces": [ + "application/json", + "application/yaml", + "application/vnd.kubernetes.protobuf" + ], + "schemes": [ + "https" + ], + "tags": [ + "devopsKubesphereIo_v1alpha3" + ], + "operationId": "getDevopsKubesphereIoV1alpha3APIResources", + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.APIResourceList" + } + } + } + } + }, + "/apis/devops.kubesphere.io/v1alpha3/devopsprojects": { + "get": { + "description": "list or watch objects of kind DevOpsProject", + "consumes": [ + "*/*" + ], + "produces": [ + "application/json", + "application/yaml", + "application/vnd.kubernetes.protobuf", + "application/json;stream=watch", + "application/vnd.kubernetes.protobuf;stream=watch" + ], + "schemes": [ + "https" + ], + "tags": [ + "devopsKubesphereIo_v1alpha3" + ], + "operationId": "listDevopsKubesphereIoV1alpha3DevOpsProject", + "parameters": [ + { + "uniqueItems": true, + "type": "boolean", + "description": "allowWatchBookmarks requests watch events with type \"BOOKMARK\". Servers that do not implement bookmarks may ignore this flag and bookmarks are sent at the server's discretion. Clients should not assume bookmarks are returned at any specific interval, nor may they assume the server will send any BOOKMARK event during a session. If this is not a watch, this field is ignored. If the feature gate WatchBookmarks is not enabled in apiserver, this field is ignored.", + "name": "allowWatchBookmarks", + "in": "query" + }, + { + "uniqueItems": true, + "type": "string", + "description": "The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\".\n\nThis field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications.", + "name": "continue", + "in": "query" + }, + { + "uniqueItems": true, + "type": "string", + "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", + "name": "fieldSelector", + "in": "query" + }, + { + "uniqueItems": true, + "type": "string", + "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", + "name": "labelSelector", + "in": "query" + }, + { + "uniqueItems": true, + "type": "integer", + "description": "limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true.\n\nThe server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned.", + "name": "limit", + "in": "query" + }, + { + "uniqueItems": true, + "type": "string", + "description": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv.", + "name": "resourceVersion", + "in": "query" + }, + { + "uniqueItems": true, + "type": "integer", + "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", + "name": "timeoutSeconds", + "in": "query" + }, + { + "uniqueItems": true, + "type": "boolean", + "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", + "name": "watch", + "in": "query" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/io.kubesphere.kubesphere.pkg.apis.devops.v1alpha3.DevOpsProjectList" + } + } + }, + "x-kubernetes-action": "list", + "x-kubernetes-group-version-kind": { + "group": "devops.kubesphere.io", + "version": "v1alpha3", + "kind": "DevOpsProject" + } + }, + "post": { + "description": "create a DevOpsProject", + "consumes": [ + "*/*" + ], + "produces": [ + "application/json", + "application/yaml", + "application/vnd.kubernetes.protobuf" + ], + "schemes": [ + "https" + ], + "tags": [ + "devopsKubesphereIo_v1alpha3" + ], + "operationId": "createDevopsKubesphereIoV1alpha3DevOpsProject", + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/io.kubesphere.kubesphere.pkg.apis.devops.v1alpha3.DevOpsProject" + } + }, + { + "uniqueItems": true, + "type": "string", + "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", + "name": "dryRun", + "in": "query" + }, + { + "uniqueItems": true, + "type": "string", + "description": "fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint.", + "name": "fieldManager", + "in": "query" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/io.kubesphere.kubesphere.pkg.apis.devops.v1alpha3.DevOpsProject" + } + }, + "201": { + "description": "Created", + "schema": { + "$ref": "#/definitions/io.kubesphere.kubesphere.pkg.apis.devops.v1alpha3.DevOpsProject" + } + }, + "202": { + "description": "Accepted", + "schema": { + "$ref": "#/definitions/io.kubesphere.kubesphere.pkg.apis.devops.v1alpha3.DevOpsProject" + } + } + }, + "x-kubernetes-action": "post", + "x-kubernetes-group-version-kind": { + "group": "devops.kubesphere.io", + "version": "v1alpha3", + "kind": "DevOpsProject" + } + }, + "delete": { + "description": "delete collection of DevOpsProject", + "consumes": [ + "*/*" + ], + "produces": [ + "application/json", + "application/yaml", + "application/vnd.kubernetes.protobuf" + ], + "schemes": [ + "https" + ], + "tags": [ + "devopsKubesphereIo_v1alpha3" + ], + "operationId": "deleteDevopsKubesphereIoV1alpha3CollectionDevOpsProject", + "parameters": [ + { + "uniqueItems": true, + "type": "boolean", + "description": "allowWatchBookmarks requests watch events with type \"BOOKMARK\". Servers that do not implement bookmarks may ignore this flag and bookmarks are sent at the server's discretion. Clients should not assume bookmarks are returned at any specific interval, nor may they assume the server will send any BOOKMARK event during a session. If this is not a watch, this field is ignored. If the feature gate WatchBookmarks is not enabled in apiserver, this field is ignored.", + "name": "allowWatchBookmarks", + "in": "query" + }, + { + "name": "body", + "in": "body", + "schema": { + "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions" + } + }, + { + "uniqueItems": true, + "type": "string", + "description": "The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\".\n\nThis field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications.", + "name": "continue", + "in": "query" + }, + { + "uniqueItems": true, + "type": "string", + "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", + "name": "dryRun", + "in": "query" + }, + { + "uniqueItems": true, + "type": "string", + "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", + "name": "fieldSelector", + "in": "query" + }, + { + "uniqueItems": true, + "type": "integer", + "description": "The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately.", + "name": "gracePeriodSeconds", + "in": "query" + }, + { + "uniqueItems": true, + "type": "string", + "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", + "name": "labelSelector", + "in": "query" + }, + { + "uniqueItems": true, + "type": "integer", + "description": "limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true.\n\nThe server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned.", + "name": "limit", + "in": "query" + }, + { + "uniqueItems": true, + "type": "boolean", + "description": "Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both.", + "name": "orphanDependents", + "in": "query" + }, + { + "uniqueItems": true, + "type": "string", + "description": "Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. Acceptable values are: 'Orphan' - orphan the dependents; 'Background' - allow the garbage collector to delete the dependents in the background; 'Foreground' - a cascading policy that deletes all dependents in the foreground.", + "name": "propagationPolicy", + "in": "query" + }, + { + "uniqueItems": true, + "type": "string", + "description": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv.", + "name": "resourceVersion", + "in": "query" + }, + { + "uniqueItems": true, + "type": "integer", + "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", + "name": "timeoutSeconds", + "in": "query" + }, + { + "uniqueItems": true, + "type": "boolean", + "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", + "name": "watch", + "in": "query" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status" + } + } + }, + "x-kubernetes-action": "deletecollection", + "x-kubernetes-group-version-kind": { + "group": "devops.kubesphere.io", + "version": "v1alpha3", + "kind": "DevOpsProject" + } + }, + "parameters": [ + { + "uniqueItems": true, + "type": "string", + "description": "If 'true', then the output is pretty printed.", + "name": "pretty", + "in": "query" + } + ] + }, + "/apis/devops.kubesphere.io/v1alpha3/devopsprojects/{name}": { + "get": { + "description": "read the specified DevOpsProject", + "consumes": [ + "*/*" + ], + "produces": [ + "application/json", + "application/yaml", + "application/vnd.kubernetes.protobuf" + ], + "schemes": [ + "https" + ], + "tags": [ + "devopsKubesphereIo_v1alpha3" + ], + "operationId": "readDevopsKubesphereIoV1alpha3DevOpsProject", + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/io.kubesphere.kubesphere.pkg.apis.devops.v1alpha3.DevOpsProject" + } + } + }, + "x-kubernetes-action": "get", + "x-kubernetes-group-version-kind": { + "group": "devops.kubesphere.io", + "version": "v1alpha3", + "kind": "DevOpsProject" + } + }, + "put": { + "description": "replace the specified DevOpsProject", + "consumes": [ + "*/*" + ], + "produces": [ + "application/json", + "application/yaml", + "application/vnd.kubernetes.protobuf" + ], + "schemes": [ + "https" + ], + "tags": [ + "devopsKubesphereIo_v1alpha3" + ], + "operationId": "replaceDevopsKubesphereIoV1alpha3DevOpsProject", + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/io.kubesphere.kubesphere.pkg.apis.devops.v1alpha3.DevOpsProject" + } + }, + { + "uniqueItems": true, + "type": "string", + "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", + "name": "dryRun", + "in": "query" + }, + { + "uniqueItems": true, + "type": "string", + "description": "fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint.", + "name": "fieldManager", + "in": "query" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/io.kubesphere.kubesphere.pkg.apis.devops.v1alpha3.DevOpsProject" + } + }, + "201": { + "description": "Created", + "schema": { + "$ref": "#/definitions/io.kubesphere.kubesphere.pkg.apis.devops.v1alpha3.DevOpsProject" + } + } + }, + "x-kubernetes-action": "put", + "x-kubernetes-group-version-kind": { + "group": "devops.kubesphere.io", + "version": "v1alpha3", + "kind": "DevOpsProject" + } + }, + "delete": { + "description": "delete a DevOpsProject", + "consumes": [ + "*/*" + ], + "produces": [ + "application/json", + "application/yaml", + "application/vnd.kubernetes.protobuf" + ], + "schemes": [ + "https" + ], + "tags": [ + "devopsKubesphereIo_v1alpha3" + ], + "operationId": "deleteDevopsKubesphereIoV1alpha3DevOpsProject", + "parameters": [ + { + "name": "body", + "in": "body", + "schema": { + "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions" + } + }, + { + "uniqueItems": true, + "type": "string", + "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", + "name": "dryRun", + "in": "query" + }, + { + "uniqueItems": true, + "type": "integer", + "description": "The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately.", + "name": "gracePeriodSeconds", + "in": "query" + }, + { + "uniqueItems": true, + "type": "boolean", + "description": "Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both.", + "name": "orphanDependents", + "in": "query" + }, + { + "uniqueItems": true, + "type": "string", + "description": "Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. Acceptable values are: 'Orphan' - orphan the dependents; 'Background' - allow the garbage collector to delete the dependents in the background; 'Foreground' - a cascading policy that deletes all dependents in the foreground.", + "name": "propagationPolicy", + "in": "query" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status" + } + }, + "202": { + "description": "Accepted", + "schema": { + "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status" + } + } + }, + "x-kubernetes-action": "delete", + "x-kubernetes-group-version-kind": { + "group": "devops.kubesphere.io", + "version": "v1alpha3", + "kind": "DevOpsProject" + } + }, + "patch": { + "description": "partially update the specified DevOpsProject", + "consumes": [ + "application/json-patch+json", + "application/merge-patch+json", + "application/strategic-merge-patch+json", + "application/apply-patch+yaml" + ], + "produces": [ + "application/json", + "application/yaml", + "application/vnd.kubernetes.protobuf" + ], + "schemes": [ + "https" + ], + "tags": [ + "devopsKubesphereIo_v1alpha3" + ], + "operationId": "patchDevopsKubesphereIoV1alpha3DevOpsProject", + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Patch" + } + }, + { + "uniqueItems": true, + "type": "string", + "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", + "name": "dryRun", + "in": "query" + }, + { + "uniqueItems": true, + "type": "string", + "description": "fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. This field is required for apply requests (application/apply-patch) but optional for non-apply patch types (JsonPatch, MergePatch, StrategicMergePatch).", + "name": "fieldManager", + "in": "query" + }, + { + "uniqueItems": true, + "type": "boolean", + "description": "Force is going to \"force\" Apply requests. It means user will re-acquire conflicting fields owned by other people. Force flag must be unset for non-apply patch requests.", + "name": "force", + "in": "query" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/io.kubesphere.kubesphere.pkg.apis.devops.v1alpha3.DevOpsProject" + } + } + }, + "x-kubernetes-action": "patch", + "x-kubernetes-group-version-kind": { + "group": "devops.kubesphere.io", + "version": "v1alpha3", + "kind": "DevOpsProject" + } + }, + "parameters": [ + { + "uniqueItems": true, + "type": "string", + "description": "name of the DevOpsProject", + "name": "name", + "in": "path", + "required": true + }, + { + "uniqueItems": true, + "type": "string", + "description": "If 'true', then the output is pretty printed.", + "name": "pretty", + "in": "query" + } + ] + }, + "/apis/devops.kubesphere.io/v1alpha3/devopsprojects/{name}/status": { + "get": { + "description": "read status of the specified DevOpsProject", + "consumes": [ + "*/*" + ], + "produces": [ + "application/json", + "application/yaml", + "application/vnd.kubernetes.protobuf" + ], + "schemes": [ + "https" + ], + "tags": [ + "devopsKubesphereIo_v1alpha3" + ], + "operationId": "readDevopsKubesphereIoV1alpha3DevOpsProjectStatus", + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/io.kubesphere.kubesphere.pkg.apis.devops.v1alpha3.DevOpsProject" + } + } + }, + "x-kubernetes-action": "get", + "x-kubernetes-group-version-kind": { + "group": "devops.kubesphere.io", + "version": "v1alpha3", + "kind": "DevOpsProject" + } + }, + "put": { + "description": "replace status of the specified DevOpsProject", + "consumes": [ + "*/*" + ], + "produces": [ + "application/json", + "application/yaml", + "application/vnd.kubernetes.protobuf" + ], + "schemes": [ + "https" + ], + "tags": [ + "devopsKubesphereIo_v1alpha3" + ], + "operationId": "replaceDevopsKubesphereIoV1alpha3DevOpsProjectStatus", + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/io.kubesphere.kubesphere.pkg.apis.devops.v1alpha3.DevOpsProject" + } + }, + { + "uniqueItems": true, + "type": "string", + "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", + "name": "dryRun", + "in": "query" + }, + { + "uniqueItems": true, + "type": "string", + "description": "fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint.", + "name": "fieldManager", + "in": "query" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/io.kubesphere.kubesphere.pkg.apis.devops.v1alpha3.DevOpsProject" + } + }, + "201": { + "description": "Created", + "schema": { + "$ref": "#/definitions/io.kubesphere.kubesphere.pkg.apis.devops.v1alpha3.DevOpsProject" + } + } + }, + "x-kubernetes-action": "put", + "x-kubernetes-group-version-kind": { + "group": "devops.kubesphere.io", + "version": "v1alpha3", + "kind": "DevOpsProject" + } + }, + "patch": { + "description": "partially update status of the specified DevOpsProject", + "consumes": [ + "application/json-patch+json", + "application/merge-patch+json", + "application/strategic-merge-patch+json", + "application/apply-patch+yaml" + ], + "produces": [ + "application/json", + "application/yaml", + "application/vnd.kubernetes.protobuf" + ], + "schemes": [ + "https" + ], + "tags": [ + "devopsKubesphereIo_v1alpha3" + ], + "operationId": "patchDevopsKubesphereIoV1alpha3DevOpsProjectStatus", + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Patch" + } + }, + { + "uniqueItems": true, + "type": "string", + "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", + "name": "dryRun", + "in": "query" + }, + { + "uniqueItems": true, + "type": "string", + "description": "fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. This field is required for apply requests (application/apply-patch) but optional for non-apply patch types (JsonPatch, MergePatch, StrategicMergePatch).", + "name": "fieldManager", + "in": "query" + }, + { + "uniqueItems": true, + "type": "boolean", + "description": "Force is going to \"force\" Apply requests. It means user will re-acquire conflicting fields owned by other people. Force flag must be unset for non-apply patch requests.", + "name": "force", + "in": "query" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/io.kubesphere.kubesphere.pkg.apis.devops.v1alpha3.DevOpsProject" + } + } + }, + "x-kubernetes-action": "patch", + "x-kubernetes-group-version-kind": { + "group": "devops.kubesphere.io", + "version": "v1alpha3", + "kind": "DevOpsProject" + } + }, + "parameters": [ + { + "uniqueItems": true, + "type": "string", + "description": "name of the DevOpsProject", + "name": "name", + "in": "path", + "required": true + }, + { + "uniqueItems": true, + "type": "string", + "description": "If 'true', then the output is pretty printed.", + "name": "pretty", + "in": "query" + } + ] + }, + "/apis/devops.kubesphere.io/v1alpha3/pipelines": { + "get": { + "description": "list or watch objects of kind Pipeline", + "consumes": [ + "*/*" + ], + "produces": [ + "application/json", + "application/yaml", + "application/vnd.kubernetes.protobuf", + "application/json;stream=watch", + "application/vnd.kubernetes.protobuf;stream=watch" + ], + "schemes": [ + "https" + ], + "tags": [ + "devopsKubesphereIo_v1alpha3" + ], + "operationId": "listDevopsKubesphereIoV1alpha3Pipeline", + "parameters": [ + { + "uniqueItems": true, + "type": "boolean", + "description": "allowWatchBookmarks requests watch events with type \"BOOKMARK\". Servers that do not implement bookmarks may ignore this flag and bookmarks are sent at the server's discretion. Clients should not assume bookmarks are returned at any specific interval, nor may they assume the server will send any BOOKMARK event during a session. If this is not a watch, this field is ignored. If the feature gate WatchBookmarks is not enabled in apiserver, this field is ignored.", + "name": "allowWatchBookmarks", + "in": "query" + }, + { + "uniqueItems": true, + "type": "string", + "description": "The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\".\n\nThis field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications.", + "name": "continue", + "in": "query" + }, + { + "uniqueItems": true, + "type": "string", + "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", + "name": "fieldSelector", + "in": "query" + }, + { + "uniqueItems": true, + "type": "string", + "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", + "name": "labelSelector", + "in": "query" + }, + { + "uniqueItems": true, + "type": "integer", + "description": "limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true.\n\nThe server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned.", + "name": "limit", + "in": "query" + }, + { + "uniqueItems": true, + "type": "string", + "description": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv.", + "name": "resourceVersion", + "in": "query" + }, + { + "uniqueItems": true, + "type": "integer", + "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", + "name": "timeoutSeconds", + "in": "query" + }, + { + "uniqueItems": true, + "type": "boolean", + "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", + "name": "watch", + "in": "query" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/io.kubesphere.kubesphere.pkg.apis.devops.v1alpha3.PipelineList" + } + } + }, + "x-kubernetes-action": "list", + "x-kubernetes-group-version-kind": { + "group": "devops.kubesphere.io", + "version": "v1alpha3", + "kind": "Pipeline" + } + }, + "post": { + "description": "create a Pipeline", + "consumes": [ + "*/*" + ], + "produces": [ + "application/json", + "application/yaml", + "application/vnd.kubernetes.protobuf" + ], + "schemes": [ + "https" + ], + "tags": [ + "devopsKubesphereIo_v1alpha3" + ], + "operationId": "createDevopsKubesphereIoV1alpha3Pipeline", + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/io.kubesphere.kubesphere.pkg.apis.devops.v1alpha3.Pipeline" + } + }, + { + "uniqueItems": true, + "type": "string", + "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", + "name": "dryRun", + "in": "query" + }, + { + "uniqueItems": true, + "type": "string", + "description": "fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint.", + "name": "fieldManager", + "in": "query" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/io.kubesphere.kubesphere.pkg.apis.devops.v1alpha3.Pipeline" + } + }, + "201": { + "description": "Created", + "schema": { + "$ref": "#/definitions/io.kubesphere.kubesphere.pkg.apis.devops.v1alpha3.Pipeline" + } + }, + "202": { + "description": "Accepted", + "schema": { + "$ref": "#/definitions/io.kubesphere.kubesphere.pkg.apis.devops.v1alpha3.Pipeline" + } + } + }, + "x-kubernetes-action": "post", + "x-kubernetes-group-version-kind": { + "group": "devops.kubesphere.io", + "version": "v1alpha3", + "kind": "Pipeline" + } + }, + "delete": { + "description": "delete collection of Pipeline", + "consumes": [ + "*/*" + ], + "produces": [ + "application/json", + "application/yaml", + "application/vnd.kubernetes.protobuf" + ], + "schemes": [ + "https" + ], + "tags": [ + "devopsKubesphereIo_v1alpha3" + ], + "operationId": "deleteDevopsKubesphereIoV1alpha3CollectionPipeline", + "parameters": [ + { + "uniqueItems": true, + "type": "boolean", + "description": "allowWatchBookmarks requests watch events with type \"BOOKMARK\". Servers that do not implement bookmarks may ignore this flag and bookmarks are sent at the server's discretion. Clients should not assume bookmarks are returned at any specific interval, nor may they assume the server will send any BOOKMARK event during a session. If this is not a watch, this field is ignored. If the feature gate WatchBookmarks is not enabled in apiserver, this field is ignored.", + "name": "allowWatchBookmarks", + "in": "query" + }, + { + "name": "body", + "in": "body", + "schema": { + "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions" + } + }, + { + "uniqueItems": true, + "type": "string", + "description": "The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\".\n\nThis field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications.", + "name": "continue", + "in": "query" + }, + { + "uniqueItems": true, + "type": "string", + "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", + "name": "dryRun", + "in": "query" + }, + { + "uniqueItems": true, + "type": "string", + "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", + "name": "fieldSelector", + "in": "query" + }, + { + "uniqueItems": true, + "type": "integer", + "description": "The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately.", + "name": "gracePeriodSeconds", + "in": "query" + }, + { + "uniqueItems": true, + "type": "string", + "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", + "name": "labelSelector", + "in": "query" + }, + { + "uniqueItems": true, + "type": "integer", + "description": "limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true.\n\nThe server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned.", + "name": "limit", + "in": "query" + }, + { + "uniqueItems": true, + "type": "boolean", + "description": "Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both.", + "name": "orphanDependents", + "in": "query" + }, + { + "uniqueItems": true, + "type": "string", + "description": "Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. Acceptable values are: 'Orphan' - orphan the dependents; 'Background' - allow the garbage collector to delete the dependents in the background; 'Foreground' - a cascading policy that deletes all dependents in the foreground.", + "name": "propagationPolicy", + "in": "query" + }, + { + "uniqueItems": true, + "type": "string", + "description": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv.", + "name": "resourceVersion", + "in": "query" + }, + { + "uniqueItems": true, + "type": "integer", + "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", + "name": "timeoutSeconds", + "in": "query" + }, + { + "uniqueItems": true, + "type": "boolean", + "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", + "name": "watch", + "in": "query" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status" + } + } + }, + "x-kubernetes-action": "deletecollection", + "x-kubernetes-group-version-kind": { + "group": "devops.kubesphere.io", + "version": "v1alpha3", + "kind": "Pipeline" + } + }, + "parameters": [ + { + "uniqueItems": true, + "type": "string", + "description": "If 'true', then the output is pretty printed.", + "name": "pretty", + "in": "query" + } + ] + }, + "/apis/devops.kubesphere.io/v1alpha3/pipelines/{name}": { + "get": { + "description": "read the specified Pipeline", + "consumes": [ + "*/*" + ], + "produces": [ + "application/json", + "application/yaml", + "application/vnd.kubernetes.protobuf" + ], + "schemes": [ + "https" + ], + "tags": [ + "devopsKubesphereIo_v1alpha3" + ], + "operationId": "readDevopsKubesphereIoV1alpha3Pipeline", + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/io.kubesphere.kubesphere.pkg.apis.devops.v1alpha3.Pipeline" + } + } + }, + "x-kubernetes-action": "get", + "x-kubernetes-group-version-kind": { + "group": "devops.kubesphere.io", + "version": "v1alpha3", + "kind": "Pipeline" + } + }, + "put": { + "description": "replace the specified Pipeline", + "consumes": [ + "*/*" + ], + "produces": [ + "application/json", + "application/yaml", + "application/vnd.kubernetes.protobuf" + ], + "schemes": [ + "https" + ], + "tags": [ + "devopsKubesphereIo_v1alpha3" + ], + "operationId": "replaceDevopsKubesphereIoV1alpha3Pipeline", + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/io.kubesphere.kubesphere.pkg.apis.devops.v1alpha3.Pipeline" + } + }, + { + "uniqueItems": true, + "type": "string", + "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", + "name": "dryRun", + "in": "query" + }, + { + "uniqueItems": true, + "type": "string", + "description": "fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint.", + "name": "fieldManager", + "in": "query" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/io.kubesphere.kubesphere.pkg.apis.devops.v1alpha3.Pipeline" + } + }, + "201": { + "description": "Created", + "schema": { + "$ref": "#/definitions/io.kubesphere.kubesphere.pkg.apis.devops.v1alpha3.Pipeline" + } + } + }, + "x-kubernetes-action": "put", + "x-kubernetes-group-version-kind": { + "group": "devops.kubesphere.io", + "version": "v1alpha3", + "kind": "Pipeline" + } + }, + "delete": { + "description": "delete a Pipeline", + "consumes": [ + "*/*" + ], + "produces": [ + "application/json", + "application/yaml", + "application/vnd.kubernetes.protobuf" + ], + "schemes": [ + "https" + ], + "tags": [ + "devopsKubesphereIo_v1alpha3" + ], + "operationId": "deleteDevopsKubesphereIoV1alpha3Pipeline", + "parameters": [ + { + "name": "body", + "in": "body", + "schema": { + "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions" + } + }, + { + "uniqueItems": true, + "type": "string", + "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", + "name": "dryRun", + "in": "query" + }, + { + "uniqueItems": true, + "type": "integer", + "description": "The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately.", + "name": "gracePeriodSeconds", + "in": "query" + }, + { + "uniqueItems": true, + "type": "boolean", + "description": "Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both.", + "name": "orphanDependents", + "in": "query" + }, + { + "uniqueItems": true, + "type": "string", + "description": "Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. Acceptable values are: 'Orphan' - orphan the dependents; 'Background' - allow the garbage collector to delete the dependents in the background; 'Foreground' - a cascading policy that deletes all dependents in the foreground.", + "name": "propagationPolicy", + "in": "query" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status" + } + }, + "202": { + "description": "Accepted", + "schema": { + "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status" + } + } + }, + "x-kubernetes-action": "delete", + "x-kubernetes-group-version-kind": { + "group": "devops.kubesphere.io", + "version": "v1alpha3", + "kind": "Pipeline" + } + }, + "patch": { + "description": "partially update the specified Pipeline", + "consumes": [ + "application/json-patch+json", + "application/merge-patch+json", + "application/strategic-merge-patch+json", + "application/apply-patch+yaml" + ], + "produces": [ + "application/json", + "application/yaml", + "application/vnd.kubernetes.protobuf" + ], + "schemes": [ + "https" + ], + "tags": [ + "devopsKubesphereIo_v1alpha3" + ], + "operationId": "patchDevopsKubesphereIoV1alpha3Pipeline", + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Patch" + } + }, + { + "uniqueItems": true, + "type": "string", + "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", + "name": "dryRun", + "in": "query" + }, + { + "uniqueItems": true, + "type": "string", + "description": "fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. This field is required for apply requests (application/apply-patch) but optional for non-apply patch types (JsonPatch, MergePatch, StrategicMergePatch).", + "name": "fieldManager", + "in": "query" + }, + { + "uniqueItems": true, + "type": "boolean", + "description": "Force is going to \"force\" Apply requests. It means user will re-acquire conflicting fields owned by other people. Force flag must be unset for non-apply patch requests.", + "name": "force", + "in": "query" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/io.kubesphere.kubesphere.pkg.apis.devops.v1alpha3.Pipeline" + } + } + }, + "x-kubernetes-action": "patch", + "x-kubernetes-group-version-kind": { + "group": "devops.kubesphere.io", + "version": "v1alpha3", + "kind": "Pipeline" + } + }, + "parameters": [ + { + "uniqueItems": true, + "type": "string", + "description": "name of the Pipeline", + "name": "name", + "in": "path", + "required": true + }, + { + "uniqueItems": true, + "type": "string", + "description": "If 'true', then the output is pretty printed.", + "name": "pretty", + "in": "query" + } + ] + }, + "/apis/devops.kubesphere.io/v1alpha3/pipelines/{name}/status": { + "get": { + "description": "read status of the specified Pipeline", + "consumes": [ + "*/*" + ], + "produces": [ + "application/json", + "application/yaml", + "application/vnd.kubernetes.protobuf" + ], + "schemes": [ + "https" + ], + "tags": [ + "devopsKubesphereIo_v1alpha3" + ], + "operationId": "readDevopsKubesphereIoV1alpha3PipelineStatus", + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/io.kubesphere.kubesphere.pkg.apis.devops.v1alpha3.Pipeline" + } + } + }, + "x-kubernetes-action": "get", + "x-kubernetes-group-version-kind": { + "group": "devops.kubesphere.io", + "version": "v1alpha3", + "kind": "Pipeline" + } + }, + "put": { + "description": "replace status of the specified Pipeline", + "consumes": [ + "*/*" + ], + "produces": [ + "application/json", + "application/yaml", + "application/vnd.kubernetes.protobuf" + ], + "schemes": [ + "https" + ], + "tags": [ + "devopsKubesphereIo_v1alpha3" + ], + "operationId": "replaceDevopsKubesphereIoV1alpha3PipelineStatus", + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/io.kubesphere.kubesphere.pkg.apis.devops.v1alpha3.Pipeline" + } + }, + { + "uniqueItems": true, + "type": "string", + "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", + "name": "dryRun", + "in": "query" + }, + { + "uniqueItems": true, + "type": "string", + "description": "fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint.", + "name": "fieldManager", + "in": "query" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/io.kubesphere.kubesphere.pkg.apis.devops.v1alpha3.Pipeline" + } + }, + "201": { + "description": "Created", + "schema": { + "$ref": "#/definitions/io.kubesphere.kubesphere.pkg.apis.devops.v1alpha3.Pipeline" + } + } + }, + "x-kubernetes-action": "put", + "x-kubernetes-group-version-kind": { + "group": "devops.kubesphere.io", + "version": "v1alpha3", + "kind": "Pipeline" + } + }, + "patch": { + "description": "partially update status of the specified Pipeline", + "consumes": [ + "application/json-patch+json", + "application/merge-patch+json", + "application/strategic-merge-patch+json", + "application/apply-patch+yaml" + ], + "produces": [ + "application/json", + "application/yaml", + "application/vnd.kubernetes.protobuf" + ], + "schemes": [ + "https" + ], + "tags": [ + "devopsKubesphereIo_v1alpha3" + ], + "operationId": "patchDevopsKubesphereIoV1alpha3PipelineStatus", + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Patch" + } + }, + { + "uniqueItems": true, + "type": "string", + "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", + "name": "dryRun", + "in": "query" + }, + { + "uniqueItems": true, + "type": "string", + "description": "fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. This field is required for apply requests (application/apply-patch) but optional for non-apply patch types (JsonPatch, MergePatch, StrategicMergePatch).", + "name": "fieldManager", + "in": "query" + }, + { + "uniqueItems": true, + "type": "boolean", + "description": "Force is going to \"force\" Apply requests. It means user will re-acquire conflicting fields owned by other people. Force flag must be unset for non-apply patch requests.", + "name": "force", + "in": "query" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/io.kubesphere.kubesphere.pkg.apis.devops.v1alpha3.Pipeline" + } + } + }, + "x-kubernetes-action": "patch", + "x-kubernetes-group-version-kind": { + "group": "devops.kubesphere.io", + "version": "v1alpha3", + "kind": "Pipeline" + } + }, + "parameters": [ + { + "uniqueItems": true, + "type": "string", + "description": "name of the Pipeline", + "name": "name", + "in": "path", + "required": true + }, + { + "uniqueItems": true, + "type": "string", + "description": "If 'true', then the output is pretty printed.", + "name": "pretty", + "in": "query" + } + ] + }, + "/apis/devops.kubesphere.io/v1alpha3/watch/devopsprojects": { + "get": { + "description": "watch individual changes to a list of DevOpsProject. deprecated: use the 'watch' parameter with a list operation instead.", + "consumes": [ + "*/*" + ], + "produces": [ + "application/json", + "application/yaml", + "application/vnd.kubernetes.protobuf", + "application/json;stream=watch", + "application/vnd.kubernetes.protobuf;stream=watch" + ], + "schemes": [ + "https" + ], + "tags": [ + "devopsKubesphereIo_v1alpha3" + ], + "operationId": "watchDevopsKubesphereIoV1alpha3DevOpsProjectList", + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent" + } + } + }, + "x-kubernetes-action": "watchlist", + "x-kubernetes-group-version-kind": { + "group": "devops.kubesphere.io", + "version": "v1alpha3", + "kind": "DevOpsProject" + } + }, + "parameters": [ + { + "uniqueItems": true, + "type": "boolean", + "description": "allowWatchBookmarks requests watch events with type \"BOOKMARK\". Servers that do not implement bookmarks may ignore this flag and bookmarks are sent at the server's discretion. Clients should not assume bookmarks are returned at any specific interval, nor may they assume the server will send any BOOKMARK event during a session. If this is not a watch, this field is ignored. If the feature gate WatchBookmarks is not enabled in apiserver, this field is ignored.", + "name": "allowWatchBookmarks", + "in": "query" + }, + { + "uniqueItems": true, + "type": "string", + "description": "The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\".\n\nThis field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications.", + "name": "continue", + "in": "query" + }, + { + "uniqueItems": true, + "type": "string", + "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", + "name": "fieldSelector", + "in": "query" + }, + { + "uniqueItems": true, + "type": "string", + "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", + "name": "labelSelector", + "in": "query" + }, + { + "uniqueItems": true, + "type": "integer", + "description": "limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true.\n\nThe server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned.", + "name": "limit", + "in": "query" + }, + { + "uniqueItems": true, + "type": "string", + "description": "If 'true', then the output is pretty printed.", + "name": "pretty", + "in": "query" + }, + { + "uniqueItems": true, + "type": "string", + "description": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv.", + "name": "resourceVersion", + "in": "query" + }, + { + "uniqueItems": true, + "type": "integer", + "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", + "name": "timeoutSeconds", + "in": "query" + }, + { + "uniqueItems": true, + "type": "boolean", + "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", + "name": "watch", + "in": "query" + } + ] + }, + "/apis/devops.kubesphere.io/v1alpha3/watch/devopsprojects/{name}": { + "get": { + "description": "watch changes to an object of kind DevOpsProject. deprecated: use the 'watch' parameter with a list operation instead, filtered to a single item with the 'fieldSelector' parameter.", + "consumes": [ + "*/*" + ], + "produces": [ + "application/json", + "application/yaml", + "application/vnd.kubernetes.protobuf", + "application/json;stream=watch", + "application/vnd.kubernetes.protobuf;stream=watch" + ], + "schemes": [ + "https" + ], + "tags": [ + "devopsKubesphereIo_v1alpha3" + ], + "operationId": "watchDevopsKubesphereIoV1alpha3DevOpsProject", + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent" + } + } + }, + "x-kubernetes-action": "watch", + "x-kubernetes-group-version-kind": { + "group": "devops.kubesphere.io", + "version": "v1alpha3", + "kind": "DevOpsProject" + } + }, + "parameters": [ + { + "uniqueItems": true, + "type": "boolean", + "description": "allowWatchBookmarks requests watch events with type \"BOOKMARK\". Servers that do not implement bookmarks may ignore this flag and bookmarks are sent at the server's discretion. Clients should not assume bookmarks are returned at any specific interval, nor may they assume the server will send any BOOKMARK event during a session. If this is not a watch, this field is ignored. If the feature gate WatchBookmarks is not enabled in apiserver, this field is ignored.", + "name": "allowWatchBookmarks", + "in": "query" + }, + { + "uniqueItems": true, + "type": "string", + "description": "The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\".\n\nThis field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications.", + "name": "continue", + "in": "query" + }, + { + "uniqueItems": true, + "type": "string", + "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", + "name": "fieldSelector", + "in": "query" + }, + { + "uniqueItems": true, + "type": "string", + "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", + "name": "labelSelector", + "in": "query" + }, + { + "uniqueItems": true, + "type": "integer", + "description": "limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true.\n\nThe server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned.", + "name": "limit", + "in": "query" + }, + { + "uniqueItems": true, + "type": "string", + "description": "name of the DevOpsProject", + "name": "name", + "in": "path", + "required": true + }, + { + "uniqueItems": true, + "type": "string", + "description": "If 'true', then the output is pretty printed.", + "name": "pretty", + "in": "query" + }, + { + "uniqueItems": true, + "type": "string", + "description": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv.", + "name": "resourceVersion", + "in": "query" + }, + { + "uniqueItems": true, + "type": "integer", + "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", + "name": "timeoutSeconds", + "in": "query" + }, + { + "uniqueItems": true, + "type": "boolean", + "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", + "name": "watch", + "in": "query" + } + ] + }, + "/apis/devops.kubesphere.io/v1alpha3/watch/pipelines": { + "get": { + "description": "watch individual changes to a list of Pipeline. deprecated: use the 'watch' parameter with a list operation instead.", + "consumes": [ + "*/*" + ], + "produces": [ + "application/json", + "application/yaml", + "application/vnd.kubernetes.protobuf", + "application/json;stream=watch", + "application/vnd.kubernetes.protobuf;stream=watch" + ], + "schemes": [ + "https" + ], + "tags": [ + "devopsKubesphereIo_v1alpha3" + ], + "operationId": "watchDevopsKubesphereIoV1alpha3PipelineList", + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent" + } + } + }, + "x-kubernetes-action": "watchlist", + "x-kubernetes-group-version-kind": { + "group": "devops.kubesphere.io", + "version": "v1alpha3", + "kind": "Pipeline" + } + }, + "parameters": [ + { + "uniqueItems": true, + "type": "boolean", + "description": "allowWatchBookmarks requests watch events with type \"BOOKMARK\". Servers that do not implement bookmarks may ignore this flag and bookmarks are sent at the server's discretion. Clients should not assume bookmarks are returned at any specific interval, nor may they assume the server will send any BOOKMARK event during a session. If this is not a watch, this field is ignored. If the feature gate WatchBookmarks is not enabled in apiserver, this field is ignored.", + "name": "allowWatchBookmarks", + "in": "query" + }, + { + "uniqueItems": true, + "type": "string", + "description": "The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\".\n\nThis field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications.", + "name": "continue", + "in": "query" + }, + { + "uniqueItems": true, + "type": "string", + "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", + "name": "fieldSelector", + "in": "query" + }, + { + "uniqueItems": true, + "type": "string", + "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", + "name": "labelSelector", + "in": "query" + }, + { + "uniqueItems": true, + "type": "integer", + "description": "limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true.\n\nThe server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned.", + "name": "limit", + "in": "query" + }, + { + "uniqueItems": true, + "type": "string", + "description": "If 'true', then the output is pretty printed.", + "name": "pretty", + "in": "query" + }, + { + "uniqueItems": true, + "type": "string", + "description": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv.", + "name": "resourceVersion", + "in": "query" + }, + { + "uniqueItems": true, + "type": "integer", + "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", + "name": "timeoutSeconds", + "in": "query" + }, + { + "uniqueItems": true, + "type": "boolean", + "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", + "name": "watch", + "in": "query" + } + ] + }, + "/apis/devops.kubesphere.io/v1alpha3/watch/pipelines/{name}": { + "get": { + "description": "watch changes to an object of kind Pipeline. deprecated: use the 'watch' parameter with a list operation instead, filtered to a single item with the 'fieldSelector' parameter.", + "consumes": [ + "*/*" + ], + "produces": [ + "application/json", + "application/yaml", + "application/vnd.kubernetes.protobuf", + "application/json;stream=watch", + "application/vnd.kubernetes.protobuf;stream=watch" + ], + "schemes": [ + "https" + ], + "tags": [ + "devopsKubesphereIo_v1alpha3" + ], + "operationId": "watchDevopsKubesphereIoV1alpha3Pipeline", + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent" + } + } + }, + "x-kubernetes-action": "watch", + "x-kubernetes-group-version-kind": { + "group": "devops.kubesphere.io", + "version": "v1alpha3", + "kind": "Pipeline" + } + }, + "parameters": [ + { + "uniqueItems": true, + "type": "boolean", + "description": "allowWatchBookmarks requests watch events with type \"BOOKMARK\". Servers that do not implement bookmarks may ignore this flag and bookmarks are sent at the server's discretion. Clients should not assume bookmarks are returned at any specific interval, nor may they assume the server will send any BOOKMARK event during a session. If this is not a watch, this field is ignored. If the feature gate WatchBookmarks is not enabled in apiserver, this field is ignored.", + "name": "allowWatchBookmarks", + "in": "query" + }, + { + "uniqueItems": true, + "type": "string", + "description": "The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\".\n\nThis field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications.", + "name": "continue", + "in": "query" + }, + { + "uniqueItems": true, + "type": "string", + "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", + "name": "fieldSelector", + "in": "query" + }, + { + "uniqueItems": true, + "type": "string", + "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", + "name": "labelSelector", + "in": "query" + }, + { + "uniqueItems": true, + "type": "integer", + "description": "limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true.\n\nThe server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned.", + "name": "limit", + "in": "query" + }, + { + "uniqueItems": true, + "type": "string", + "description": "name of the Pipeline", + "name": "name", + "in": "path", + "required": true + }, + { + "uniqueItems": true, + "type": "string", + "description": "If 'true', then the output is pretty printed.", + "name": "pretty", + "in": "query" + }, + { + "uniqueItems": true, + "type": "string", + "description": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv.", + "name": "resourceVersion", + "in": "query" + }, + { + "uniqueItems": true, + "type": "integer", + "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", + "name": "timeoutSeconds", + "in": "query" + }, + { + "uniqueItems": true, + "type": "boolean", + "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", + "name": "watch", + "in": "query" + } + ] + }, + "/apis/network.kubesphere.io/": { + "get": { + "description": "get information of a group", + "consumes": [ + "application/json", + "application/yaml", + "application/vnd.kubernetes.protobuf" + ], + "produces": [ + "application/json", + "application/yaml", + "application/vnd.kubernetes.protobuf" + ], + "schemes": [ + "https" + ], + "tags": [ + "networkKubesphereIo" + ], + "operationId": "getNetworkKubesphereIoAPIGroup", + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.APIGroup" + } + } + } + } + }, + "/apis/network.kubesphere.io/v1alpha1/": { + "get": { + "description": "get available resources", + "consumes": [ + "application/json", + "application/yaml", + "application/vnd.kubernetes.protobuf" + ], + "produces": [ + "application/json", + "application/yaml", + "application/vnd.kubernetes.protobuf" + ], + "schemes": [ + "https" + ], + "tags": [ + "networkKubesphereIo_v1alpha1" + ], + "operationId": "getNetworkKubesphereIoV1alpha1APIResources", + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.APIResourceList" + } + } + } + } + }, + "/apis/network.kubesphere.io/v1alpha1/ippools": { + "get": { + "description": "list or watch objects of kind IPPool", + "consumes": [ + "*/*" + ], + "produces": [ + "application/json", + "application/yaml", + "application/vnd.kubernetes.protobuf", + "application/json;stream=watch", + "application/vnd.kubernetes.protobuf;stream=watch" + ], + "schemes": [ + "https" + ], + "tags": [ + "networkKubesphereIo_v1alpha1" + ], + "operationId": "listNetworkKubesphereIoV1alpha1IPPool", + "parameters": [ + { + "uniqueItems": true, + "type": "boolean", + "description": "allowWatchBookmarks requests watch events with type \"BOOKMARK\". Servers that do not implement bookmarks may ignore this flag and bookmarks are sent at the server's discretion. Clients should not assume bookmarks are returned at any specific interval, nor may they assume the server will send any BOOKMARK event during a session. If this is not a watch, this field is ignored. If the feature gate WatchBookmarks is not enabled in apiserver, this field is ignored.", + "name": "allowWatchBookmarks", + "in": "query" + }, + { + "uniqueItems": true, + "type": "string", + "description": "The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\".\n\nThis field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications.", + "name": "continue", + "in": "query" + }, + { + "uniqueItems": true, + "type": "string", + "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", + "name": "fieldSelector", + "in": "query" + }, + { + "uniqueItems": true, + "type": "string", + "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", + "name": "labelSelector", + "in": "query" + }, + { + "uniqueItems": true, + "type": "integer", + "description": "limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true.\n\nThe server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned.", + "name": "limit", + "in": "query" + }, + { + "uniqueItems": true, + "type": "string", + "description": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv.", + "name": "resourceVersion", + "in": "query" + }, + { + "uniqueItems": true, + "type": "integer", + "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", + "name": "timeoutSeconds", + "in": "query" + }, + { + "uniqueItems": true, + "type": "boolean", + "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", + "name": "watch", + "in": "query" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/io.kubesphere.kubesphere.pkg.apis.network.v1alpha1.IPPoolList" + } + } + }, + "x-kubernetes-action": "list", + "x-kubernetes-group-version-kind": { + "group": "network.kubesphere.io", + "version": "v1alpha1", + "kind": "IPPool" + } + }, + "post": { + "description": "create an IPPool", + "consumes": [ + "*/*" + ], + "produces": [ + "application/json", + "application/yaml", + "application/vnd.kubernetes.protobuf" + ], + "schemes": [ + "https" + ], + "tags": [ + "networkKubesphereIo_v1alpha1" + ], + "operationId": "createNetworkKubesphereIoV1alpha1IPPool", + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/io.kubesphere.kubesphere.pkg.apis.network.v1alpha1.IPPool" + } + }, + { + "uniqueItems": true, + "type": "string", + "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", + "name": "dryRun", + "in": "query" + }, + { + "uniqueItems": true, + "type": "string", + "description": "fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint.", + "name": "fieldManager", + "in": "query" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/io.kubesphere.kubesphere.pkg.apis.network.v1alpha1.IPPool" + } + }, + "201": { + "description": "Created", + "schema": { + "$ref": "#/definitions/io.kubesphere.kubesphere.pkg.apis.network.v1alpha1.IPPool" + } + }, + "202": { + "description": "Accepted", + "schema": { + "$ref": "#/definitions/io.kubesphere.kubesphere.pkg.apis.network.v1alpha1.IPPool" + } + } + }, + "x-kubernetes-action": "post", + "x-kubernetes-group-version-kind": { + "group": "network.kubesphere.io", + "version": "v1alpha1", + "kind": "IPPool" + } + }, + "delete": { + "description": "delete collection of IPPool", + "consumes": [ + "*/*" + ], + "produces": [ + "application/json", + "application/yaml", + "application/vnd.kubernetes.protobuf" + ], + "schemes": [ + "https" + ], + "tags": [ + "networkKubesphereIo_v1alpha1" + ], + "operationId": "deleteNetworkKubesphereIoV1alpha1CollectionIPPool", + "parameters": [ + { + "uniqueItems": true, + "type": "boolean", + "description": "allowWatchBookmarks requests watch events with type \"BOOKMARK\". Servers that do not implement bookmarks may ignore this flag and bookmarks are sent at the server's discretion. Clients should not assume bookmarks are returned at any specific interval, nor may they assume the server will send any BOOKMARK event during a session. If this is not a watch, this field is ignored. If the feature gate WatchBookmarks is not enabled in apiserver, this field is ignored.", + "name": "allowWatchBookmarks", + "in": "query" + }, + { + "name": "body", + "in": "body", + "schema": { + "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions" + } + }, + { + "uniqueItems": true, + "type": "string", + "description": "The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\".\n\nThis field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications.", + "name": "continue", + "in": "query" + }, + { + "uniqueItems": true, + "type": "string", + "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", + "name": "dryRun", + "in": "query" + }, + { + "uniqueItems": true, + "type": "string", + "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", + "name": "fieldSelector", + "in": "query" + }, + { + "uniqueItems": true, + "type": "integer", + "description": "The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately.", + "name": "gracePeriodSeconds", + "in": "query" + }, + { + "uniqueItems": true, + "type": "string", + "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", + "name": "labelSelector", + "in": "query" + }, + { + "uniqueItems": true, + "type": "integer", + "description": "limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true.\n\nThe server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned.", + "name": "limit", + "in": "query" + }, + { + "uniqueItems": true, + "type": "boolean", + "description": "Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both.", + "name": "orphanDependents", + "in": "query" + }, + { + "uniqueItems": true, + "type": "string", + "description": "Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. Acceptable values are: 'Orphan' - orphan the dependents; 'Background' - allow the garbage collector to delete the dependents in the background; 'Foreground' - a cascading policy that deletes all dependents in the foreground.", + "name": "propagationPolicy", + "in": "query" + }, + { + "uniqueItems": true, + "type": "string", + "description": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv.", + "name": "resourceVersion", + "in": "query" + }, + { + "uniqueItems": true, + "type": "integer", + "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", + "name": "timeoutSeconds", + "in": "query" + }, + { + "uniqueItems": true, + "type": "boolean", + "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", + "name": "watch", + "in": "query" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status" + } + } + }, + "x-kubernetes-action": "deletecollection", + "x-kubernetes-group-version-kind": { + "group": "network.kubesphere.io", + "version": "v1alpha1", + "kind": "IPPool" + } + }, + "parameters": [ + { + "uniqueItems": true, + "type": "string", + "description": "If 'true', then the output is pretty printed.", + "name": "pretty", + "in": "query" + } + ] + }, + "/apis/network.kubesphere.io/v1alpha1/ippools/{name}": { + "get": { + "description": "read the specified IPPool", + "consumes": [ + "*/*" + ], + "produces": [ + "application/json", + "application/yaml", + "application/vnd.kubernetes.protobuf" + ], + "schemes": [ + "https" + ], + "tags": [ + "networkKubesphereIo_v1alpha1" + ], + "operationId": "readNetworkKubesphereIoV1alpha1IPPool", + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/io.kubesphere.kubesphere.pkg.apis.network.v1alpha1.IPPool" + } + } + }, + "x-kubernetes-action": "get", + "x-kubernetes-group-version-kind": { + "group": "network.kubesphere.io", + "version": "v1alpha1", + "kind": "IPPool" + } + }, + "put": { + "description": "replace the specified IPPool", + "consumes": [ + "*/*" + ], + "produces": [ + "application/json", + "application/yaml", + "application/vnd.kubernetes.protobuf" + ], + "schemes": [ + "https" + ], + "tags": [ + "networkKubesphereIo_v1alpha1" + ], + "operationId": "replaceNetworkKubesphereIoV1alpha1IPPool", + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/io.kubesphere.kubesphere.pkg.apis.network.v1alpha1.IPPool" + } + }, + { + "uniqueItems": true, + "type": "string", + "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", + "name": "dryRun", + "in": "query" + }, + { + "uniqueItems": true, + "type": "string", + "description": "fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint.", + "name": "fieldManager", + "in": "query" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/io.kubesphere.kubesphere.pkg.apis.network.v1alpha1.IPPool" + } + }, + "201": { + "description": "Created", + "schema": { + "$ref": "#/definitions/io.kubesphere.kubesphere.pkg.apis.network.v1alpha1.IPPool" + } + } + }, + "x-kubernetes-action": "put", + "x-kubernetes-group-version-kind": { + "group": "network.kubesphere.io", + "version": "v1alpha1", + "kind": "IPPool" + } + }, + "delete": { + "description": "delete an IPPool", + "consumes": [ + "*/*" + ], + "produces": [ + "application/json", + "application/yaml", + "application/vnd.kubernetes.protobuf" + ], + "schemes": [ + "https" + ], + "tags": [ + "networkKubesphereIo_v1alpha1" + ], + "operationId": "deleteNetworkKubesphereIoV1alpha1IPPool", + "parameters": [ + { + "name": "body", + "in": "body", + "schema": { + "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions" + } + }, + { + "uniqueItems": true, + "type": "string", + "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", + "name": "dryRun", + "in": "query" + }, + { + "uniqueItems": true, + "type": "integer", + "description": "The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately.", + "name": "gracePeriodSeconds", + "in": "query" + }, + { + "uniqueItems": true, + "type": "boolean", + "description": "Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both.", + "name": "orphanDependents", + "in": "query" + }, + { + "uniqueItems": true, + "type": "string", + "description": "Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. Acceptable values are: 'Orphan' - orphan the dependents; 'Background' - allow the garbage collector to delete the dependents in the background; 'Foreground' - a cascading policy that deletes all dependents in the foreground.", + "name": "propagationPolicy", + "in": "query" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status" + } + }, + "202": { + "description": "Accepted", + "schema": { + "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status" + } + } + }, + "x-kubernetes-action": "delete", + "x-kubernetes-group-version-kind": { + "group": "network.kubesphere.io", + "version": "v1alpha1", + "kind": "IPPool" + } + }, + "patch": { + "description": "partially update the specified IPPool", + "consumes": [ + "application/json-patch+json", + "application/merge-patch+json", + "application/strategic-merge-patch+json", + "application/apply-patch+yaml" + ], + "produces": [ + "application/json", + "application/yaml", + "application/vnd.kubernetes.protobuf" + ], + "schemes": [ + "https" + ], + "tags": [ + "networkKubesphereIo_v1alpha1" + ], + "operationId": "patchNetworkKubesphereIoV1alpha1IPPool", + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Patch" + } + }, + { + "uniqueItems": true, + "type": "string", + "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", + "name": "dryRun", + "in": "query" + }, + { + "uniqueItems": true, + "type": "string", + "description": "fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. This field is required for apply requests (application/apply-patch) but optional for non-apply patch types (JsonPatch, MergePatch, StrategicMergePatch).", + "name": "fieldManager", + "in": "query" + }, + { + "uniqueItems": true, + "type": "boolean", + "description": "Force is going to \"force\" Apply requests. It means user will re-acquire conflicting fields owned by other people. Force flag must be unset for non-apply patch requests.", + "name": "force", + "in": "query" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/io.kubesphere.kubesphere.pkg.apis.network.v1alpha1.IPPool" + } + } + }, + "x-kubernetes-action": "patch", + "x-kubernetes-group-version-kind": { + "group": "network.kubesphere.io", + "version": "v1alpha1", + "kind": "IPPool" + } + }, + "parameters": [ + { + "uniqueItems": true, + "type": "string", + "description": "name of the IPPool", + "name": "name", + "in": "path", + "required": true + }, + { + "uniqueItems": true, + "type": "string", + "description": "If 'true', then the output is pretty printed.", + "name": "pretty", + "in": "query" + } + ] + }, + "/apis/network.kubesphere.io/v1alpha1/ippools/{name}/status": { + "get": { + "description": "read status of the specified IPPool", + "consumes": [ + "*/*" + ], + "produces": [ + "application/json", + "application/yaml", + "application/vnd.kubernetes.protobuf" + ], + "schemes": [ + "https" + ], + "tags": [ + "networkKubesphereIo_v1alpha1" + ], + "operationId": "readNetworkKubesphereIoV1alpha1IPPoolStatus", + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/io.kubesphere.kubesphere.pkg.apis.network.v1alpha1.IPPool" + } + } + }, + "x-kubernetes-action": "get", + "x-kubernetes-group-version-kind": { + "group": "network.kubesphere.io", + "version": "v1alpha1", + "kind": "IPPool" + } + }, + "put": { + "description": "replace status of the specified IPPool", + "consumes": [ + "*/*" + ], + "produces": [ + "application/json", + "application/yaml", + "application/vnd.kubernetes.protobuf" + ], + "schemes": [ + "https" + ], + "tags": [ + "networkKubesphereIo_v1alpha1" + ], + "operationId": "replaceNetworkKubesphereIoV1alpha1IPPoolStatus", + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/io.kubesphere.kubesphere.pkg.apis.network.v1alpha1.IPPool" + } + }, + { + "uniqueItems": true, + "type": "string", + "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", + "name": "dryRun", + "in": "query" + }, + { + "uniqueItems": true, + "type": "string", + "description": "fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint.", + "name": "fieldManager", + "in": "query" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/io.kubesphere.kubesphere.pkg.apis.network.v1alpha1.IPPool" + } + }, + "201": { + "description": "Created", + "schema": { + "$ref": "#/definitions/io.kubesphere.kubesphere.pkg.apis.network.v1alpha1.IPPool" + } + } + }, + "x-kubernetes-action": "put", + "x-kubernetes-group-version-kind": { + "group": "network.kubesphere.io", + "version": "v1alpha1", + "kind": "IPPool" + } + }, + "patch": { + "description": "partially update status of the specified IPPool", + "consumes": [ + "application/json-patch+json", + "application/merge-patch+json", + "application/strategic-merge-patch+json", + "application/apply-patch+yaml" + ], + "produces": [ + "application/json", + "application/yaml", + "application/vnd.kubernetes.protobuf" + ], + "schemes": [ + "https" + ], + "tags": [ + "networkKubesphereIo_v1alpha1" + ], + "operationId": "patchNetworkKubesphereIoV1alpha1IPPoolStatus", + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Patch" + } + }, + { + "uniqueItems": true, + "type": "string", + "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", + "name": "dryRun", + "in": "query" + }, + { + "uniqueItems": true, + "type": "string", + "description": "fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. This field is required for apply requests (application/apply-patch) but optional for non-apply patch types (JsonPatch, MergePatch, StrategicMergePatch).", + "name": "fieldManager", + "in": "query" + }, + { + "uniqueItems": true, + "type": "boolean", + "description": "Force is going to \"force\" Apply requests. It means user will re-acquire conflicting fields owned by other people. Force flag must be unset for non-apply patch requests.", + "name": "force", + "in": "query" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/io.kubesphere.kubesphere.pkg.apis.network.v1alpha1.IPPool" + } + } + }, + "x-kubernetes-action": "patch", + "x-kubernetes-group-version-kind": { + "group": "network.kubesphere.io", + "version": "v1alpha1", + "kind": "IPPool" + } + }, + "parameters": [ + { + "uniqueItems": true, + "type": "string", + "description": "name of the IPPool", + "name": "name", + "in": "path", + "required": true + }, + { + "uniqueItems": true, + "type": "string", + "description": "If 'true', then the output is pretty printed.", + "name": "pretty", + "in": "query" + } + ] + }, + "/apis/network.kubesphere.io/v1alpha1/namespacenetworkpolicies": { + "get": { + "description": "list or watch objects of kind NamespaceNetworkPolicy", + "consumes": [ + "*/*" + ], + "produces": [ + "application/json", + "application/yaml", + "application/vnd.kubernetes.protobuf", + "application/json;stream=watch", + "application/vnd.kubernetes.protobuf;stream=watch" + ], + "schemes": [ + "https" + ], + "tags": [ + "networkKubesphereIo_v1alpha1" + ], + "operationId": "listNetworkKubesphereIoV1alpha1NamespaceNetworkPolicy", + "parameters": [ + { + "uniqueItems": true, + "type": "boolean", + "description": "allowWatchBookmarks requests watch events with type \"BOOKMARK\". Servers that do not implement bookmarks may ignore this flag and bookmarks are sent at the server's discretion. Clients should not assume bookmarks are returned at any specific interval, nor may they assume the server will send any BOOKMARK event during a session. If this is not a watch, this field is ignored. If the feature gate WatchBookmarks is not enabled in apiserver, this field is ignored.", + "name": "allowWatchBookmarks", + "in": "query" + }, + { + "uniqueItems": true, + "type": "string", + "description": "The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\".\n\nThis field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications.", + "name": "continue", + "in": "query" + }, + { + "uniqueItems": true, + "type": "string", + "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", + "name": "fieldSelector", + "in": "query" + }, + { + "uniqueItems": true, + "type": "string", + "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", + "name": "labelSelector", + "in": "query" + }, + { + "uniqueItems": true, + "type": "integer", + "description": "limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true.\n\nThe server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned.", + "name": "limit", + "in": "query" + }, + { + "uniqueItems": true, + "type": "string", + "description": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv.", + "name": "resourceVersion", + "in": "query" + }, + { + "uniqueItems": true, + "type": "integer", + "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", + "name": "timeoutSeconds", + "in": "query" + }, + { + "uniqueItems": true, + "type": "boolean", + "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", + "name": "watch", + "in": "query" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/io.kubesphere.kubesphere.pkg.apis.network.v1alpha1.NamespaceNetworkPolicyList" + } + } + }, + "x-kubernetes-action": "list", + "x-kubernetes-group-version-kind": { + "group": "network.kubesphere.io", + "version": "v1alpha1", + "kind": "NamespaceNetworkPolicy" + } + }, + "post": { + "description": "create a NamespaceNetworkPolicy", + "consumes": [ + "*/*" + ], + "produces": [ + "application/json", + "application/yaml", + "application/vnd.kubernetes.protobuf" + ], + "schemes": [ + "https" + ], + "tags": [ + "networkKubesphereIo_v1alpha1" + ], + "operationId": "createNetworkKubesphereIoV1alpha1NamespaceNetworkPolicy", + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/io.kubesphere.kubesphere.pkg.apis.network.v1alpha1.NamespaceNetworkPolicy" + } + }, + { + "uniqueItems": true, + "type": "string", + "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", + "name": "dryRun", + "in": "query" + }, + { + "uniqueItems": true, + "type": "string", + "description": "fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint.", + "name": "fieldManager", + "in": "query" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/io.kubesphere.kubesphere.pkg.apis.network.v1alpha1.NamespaceNetworkPolicy" + } + }, + "201": { + "description": "Created", + "schema": { + "$ref": "#/definitions/io.kubesphere.kubesphere.pkg.apis.network.v1alpha1.NamespaceNetworkPolicy" + } + }, + "202": { + "description": "Accepted", + "schema": { + "$ref": "#/definitions/io.kubesphere.kubesphere.pkg.apis.network.v1alpha1.NamespaceNetworkPolicy" + } + } + }, + "x-kubernetes-action": "post", + "x-kubernetes-group-version-kind": { + "group": "network.kubesphere.io", + "version": "v1alpha1", + "kind": "NamespaceNetworkPolicy" + } + }, + "delete": { + "description": "delete collection of NamespaceNetworkPolicy", + "consumes": [ + "*/*" + ], + "produces": [ + "application/json", + "application/yaml", + "application/vnd.kubernetes.protobuf" + ], + "schemes": [ + "https" + ], + "tags": [ + "networkKubesphereIo_v1alpha1" + ], + "operationId": "deleteNetworkKubesphereIoV1alpha1CollectionNamespaceNetworkPolicy", + "parameters": [ + { + "uniqueItems": true, + "type": "boolean", + "description": "allowWatchBookmarks requests watch events with type \"BOOKMARK\". Servers that do not implement bookmarks may ignore this flag and bookmarks are sent at the server's discretion. Clients should not assume bookmarks are returned at any specific interval, nor may they assume the server will send any BOOKMARK event during a session. If this is not a watch, this field is ignored. If the feature gate WatchBookmarks is not enabled in apiserver, this field is ignored.", + "name": "allowWatchBookmarks", + "in": "query" + }, + { + "name": "body", + "in": "body", + "schema": { + "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions" + } + }, + { + "uniqueItems": true, + "type": "string", + "description": "The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\".\n\nThis field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications.", + "name": "continue", + "in": "query" + }, + { + "uniqueItems": true, + "type": "string", + "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", + "name": "dryRun", + "in": "query" + }, + { + "uniqueItems": true, + "type": "string", + "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", + "name": "fieldSelector", + "in": "query" + }, + { + "uniqueItems": true, + "type": "integer", + "description": "The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately.", + "name": "gracePeriodSeconds", + "in": "query" + }, + { + "uniqueItems": true, + "type": "string", + "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", + "name": "labelSelector", + "in": "query" + }, + { + "uniqueItems": true, + "type": "integer", + "description": "limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true.\n\nThe server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned.", + "name": "limit", + "in": "query" + }, + { + "uniqueItems": true, + "type": "boolean", + "description": "Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both.", + "name": "orphanDependents", + "in": "query" + }, + { + "uniqueItems": true, + "type": "string", + "description": "Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. Acceptable values are: 'Orphan' - orphan the dependents; 'Background' - allow the garbage collector to delete the dependents in the background; 'Foreground' - a cascading policy that deletes all dependents in the foreground.", + "name": "propagationPolicy", + "in": "query" + }, + { + "uniqueItems": true, + "type": "string", + "description": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv.", + "name": "resourceVersion", + "in": "query" + }, + { + "uniqueItems": true, + "type": "integer", + "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", + "name": "timeoutSeconds", + "in": "query" + }, + { + "uniqueItems": true, + "type": "boolean", + "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", + "name": "watch", + "in": "query" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status" + } + } + }, + "x-kubernetes-action": "deletecollection", + "x-kubernetes-group-version-kind": { + "group": "network.kubesphere.io", + "version": "v1alpha1", + "kind": "NamespaceNetworkPolicy" + } + }, + "parameters": [ + { + "uniqueItems": true, + "type": "string", + "description": "If 'true', then the output is pretty printed.", + "name": "pretty", + "in": "query" + } + ] + }, + "/apis/network.kubesphere.io/v1alpha1/namespacenetworkpolicies/{name}": { + "get": { + "description": "read the specified NamespaceNetworkPolicy", + "consumes": [ + "*/*" + ], + "produces": [ + "application/json", + "application/yaml", + "application/vnd.kubernetes.protobuf" + ], + "schemes": [ + "https" + ], + "tags": [ + "networkKubesphereIo_v1alpha1" + ], + "operationId": "readNetworkKubesphereIoV1alpha1NamespaceNetworkPolicy", + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/io.kubesphere.kubesphere.pkg.apis.network.v1alpha1.NamespaceNetworkPolicy" + } + } + }, + "x-kubernetes-action": "get", + "x-kubernetes-group-version-kind": { + "group": "network.kubesphere.io", + "version": "v1alpha1", + "kind": "NamespaceNetworkPolicy" + } + }, + "put": { + "description": "replace the specified NamespaceNetworkPolicy", + "consumes": [ + "*/*" + ], + "produces": [ + "application/json", + "application/yaml", + "application/vnd.kubernetes.protobuf" + ], + "schemes": [ + "https" + ], + "tags": [ + "networkKubesphereIo_v1alpha1" + ], + "operationId": "replaceNetworkKubesphereIoV1alpha1NamespaceNetworkPolicy", + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/io.kubesphere.kubesphere.pkg.apis.network.v1alpha1.NamespaceNetworkPolicy" + } + }, + { + "uniqueItems": true, + "type": "string", + "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", + "name": "dryRun", + "in": "query" + }, + { + "uniqueItems": true, + "type": "string", + "description": "fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint.", + "name": "fieldManager", + "in": "query" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/io.kubesphere.kubesphere.pkg.apis.network.v1alpha1.NamespaceNetworkPolicy" + } + }, + "201": { + "description": "Created", + "schema": { + "$ref": "#/definitions/io.kubesphere.kubesphere.pkg.apis.network.v1alpha1.NamespaceNetworkPolicy" + } + } + }, + "x-kubernetes-action": "put", + "x-kubernetes-group-version-kind": { + "group": "network.kubesphere.io", + "version": "v1alpha1", + "kind": "NamespaceNetworkPolicy" + } + }, + "delete": { + "description": "delete a NamespaceNetworkPolicy", + "consumes": [ + "*/*" + ], + "produces": [ + "application/json", + "application/yaml", + "application/vnd.kubernetes.protobuf" + ], + "schemes": [ + "https" + ], + "tags": [ + "networkKubesphereIo_v1alpha1" + ], + "operationId": "deleteNetworkKubesphereIoV1alpha1NamespaceNetworkPolicy", + "parameters": [ + { + "name": "body", + "in": "body", + "schema": { + "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions" + } + }, + { + "uniqueItems": true, + "type": "string", + "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", + "name": "dryRun", + "in": "query" + }, + { + "uniqueItems": true, + "type": "integer", + "description": "The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately.", + "name": "gracePeriodSeconds", + "in": "query" + }, + { + "uniqueItems": true, + "type": "boolean", + "description": "Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both.", + "name": "orphanDependents", + "in": "query" + }, + { + "uniqueItems": true, + "type": "string", + "description": "Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. Acceptable values are: 'Orphan' - orphan the dependents; 'Background' - allow the garbage collector to delete the dependents in the background; 'Foreground' - a cascading policy that deletes all dependents in the foreground.", + "name": "propagationPolicy", + "in": "query" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status" + } + }, + "202": { + "description": "Accepted", + "schema": { + "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status" + } + } + }, + "x-kubernetes-action": "delete", + "x-kubernetes-group-version-kind": { + "group": "network.kubesphere.io", + "version": "v1alpha1", + "kind": "NamespaceNetworkPolicy" + } + }, + "patch": { + "description": "partially update the specified NamespaceNetworkPolicy", + "consumes": [ + "application/json-patch+json", + "application/merge-patch+json", + "application/strategic-merge-patch+json", + "application/apply-patch+yaml" + ], + "produces": [ + "application/json", + "application/yaml", + "application/vnd.kubernetes.protobuf" + ], + "schemes": [ + "https" + ], + "tags": [ + "networkKubesphereIo_v1alpha1" + ], + "operationId": "patchNetworkKubesphereIoV1alpha1NamespaceNetworkPolicy", + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Patch" + } + }, + { + "uniqueItems": true, + "type": "string", + "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", + "name": "dryRun", + "in": "query" + }, + { + "uniqueItems": true, + "type": "string", + "description": "fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. This field is required for apply requests (application/apply-patch) but optional for non-apply patch types (JsonPatch, MergePatch, StrategicMergePatch).", + "name": "fieldManager", + "in": "query" + }, + { + "uniqueItems": true, + "type": "boolean", + "description": "Force is going to \"force\" Apply requests. It means user will re-acquire conflicting fields owned by other people. Force flag must be unset for non-apply patch requests.", + "name": "force", + "in": "query" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/io.kubesphere.kubesphere.pkg.apis.network.v1alpha1.NamespaceNetworkPolicy" + } + } + }, + "x-kubernetes-action": "patch", + "x-kubernetes-group-version-kind": { + "group": "network.kubesphere.io", + "version": "v1alpha1", + "kind": "NamespaceNetworkPolicy" + } + }, + "parameters": [ + { + "uniqueItems": true, + "type": "string", + "description": "name of the NamespaceNetworkPolicy", + "name": "name", + "in": "path", + "required": true + }, + { + "uniqueItems": true, + "type": "string", + "description": "If 'true', then the output is pretty printed.", + "name": "pretty", + "in": "query" + } + ] + }, + "/apis/network.kubesphere.io/v1alpha1/namespacenetworkpolicies/{name}/status": { + "get": { + "description": "read status of the specified NamespaceNetworkPolicy", + "consumes": [ + "*/*" + ], + "produces": [ + "application/json", + "application/yaml", + "application/vnd.kubernetes.protobuf" + ], + "schemes": [ + "https" + ], + "tags": [ + "networkKubesphereIo_v1alpha1" + ], + "operationId": "readNetworkKubesphereIoV1alpha1NamespaceNetworkPolicyStatus", + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/io.kubesphere.kubesphere.pkg.apis.network.v1alpha1.NamespaceNetworkPolicy" + } + } + }, + "x-kubernetes-action": "get", + "x-kubernetes-group-version-kind": { + "group": "network.kubesphere.io", + "version": "v1alpha1", + "kind": "NamespaceNetworkPolicy" + } + }, + "put": { + "description": "replace status of the specified NamespaceNetworkPolicy", + "consumes": [ + "*/*" + ], + "produces": [ + "application/json", + "application/yaml", + "application/vnd.kubernetes.protobuf" + ], + "schemes": [ + "https" + ], + "tags": [ + "networkKubesphereIo_v1alpha1" + ], + "operationId": "replaceNetworkKubesphereIoV1alpha1NamespaceNetworkPolicyStatus", + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/io.kubesphere.kubesphere.pkg.apis.network.v1alpha1.NamespaceNetworkPolicy" + } + }, + { + "uniqueItems": true, + "type": "string", + "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", + "name": "dryRun", + "in": "query" + }, + { + "uniqueItems": true, + "type": "string", + "description": "fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint.", + "name": "fieldManager", + "in": "query" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/io.kubesphere.kubesphere.pkg.apis.network.v1alpha1.NamespaceNetworkPolicy" + } + }, + "201": { + "description": "Created", + "schema": { + "$ref": "#/definitions/io.kubesphere.kubesphere.pkg.apis.network.v1alpha1.NamespaceNetworkPolicy" + } + } + }, + "x-kubernetes-action": "put", + "x-kubernetes-group-version-kind": { + "group": "network.kubesphere.io", + "version": "v1alpha1", + "kind": "NamespaceNetworkPolicy" + } + }, + "patch": { + "description": "partially update status of the specified NamespaceNetworkPolicy", + "consumes": [ + "application/json-patch+json", + "application/merge-patch+json", + "application/strategic-merge-patch+json", + "application/apply-patch+yaml" + ], + "produces": [ + "application/json", + "application/yaml", + "application/vnd.kubernetes.protobuf" + ], + "schemes": [ + "https" + ], + "tags": [ + "networkKubesphereIo_v1alpha1" + ], + "operationId": "patchNetworkKubesphereIoV1alpha1NamespaceNetworkPolicyStatus", + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Patch" + } + }, + { + "uniqueItems": true, + "type": "string", + "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", + "name": "dryRun", + "in": "query" + }, + { + "uniqueItems": true, + "type": "string", + "description": "fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. This field is required for apply requests (application/apply-patch) but optional for non-apply patch types (JsonPatch, MergePatch, StrategicMergePatch).", + "name": "fieldManager", + "in": "query" + }, + { + "uniqueItems": true, + "type": "boolean", + "description": "Force is going to \"force\" Apply requests. It means user will re-acquire conflicting fields owned by other people. Force flag must be unset for non-apply patch requests.", + "name": "force", + "in": "query" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/io.kubesphere.kubesphere.pkg.apis.network.v1alpha1.NamespaceNetworkPolicy" + } + } + }, + "x-kubernetes-action": "patch", + "x-kubernetes-group-version-kind": { + "group": "network.kubesphere.io", + "version": "v1alpha1", + "kind": "NamespaceNetworkPolicy" + } + }, + "parameters": [ + { + "uniqueItems": true, + "type": "string", + "description": "name of the NamespaceNetworkPolicy", + "name": "name", + "in": "path", + "required": true + }, + { + "uniqueItems": true, + "type": "string", + "description": "If 'true', then the output is pretty printed.", + "name": "pretty", + "in": "query" + } + ] + }, + "/apis/network.kubesphere.io/v1alpha1/watch/ippools": { + "get": { + "description": "watch individual changes to a list of IPPool. deprecated: use the 'watch' parameter with a list operation instead.", + "consumes": [ + "*/*" + ], + "produces": [ + "application/json", + "application/yaml", + "application/vnd.kubernetes.protobuf", + "application/json;stream=watch", + "application/vnd.kubernetes.protobuf;stream=watch" + ], + "schemes": [ + "https" + ], + "tags": [ + "networkKubesphereIo_v1alpha1" + ], + "operationId": "watchNetworkKubesphereIoV1alpha1IPPoolList", + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent" + } + } + }, + "x-kubernetes-action": "watchlist", + "x-kubernetes-group-version-kind": { + "group": "network.kubesphere.io", + "version": "v1alpha1", + "kind": "IPPool" + } + }, + "parameters": [ + { + "uniqueItems": true, + "type": "boolean", + "description": "allowWatchBookmarks requests watch events with type \"BOOKMARK\". Servers that do not implement bookmarks may ignore this flag and bookmarks are sent at the server's discretion. Clients should not assume bookmarks are returned at any specific interval, nor may they assume the server will send any BOOKMARK event during a session. If this is not a watch, this field is ignored. If the feature gate WatchBookmarks is not enabled in apiserver, this field is ignored.", + "name": "allowWatchBookmarks", + "in": "query" + }, + { + "uniqueItems": true, + "type": "string", + "description": "The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\".\n\nThis field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications.", + "name": "continue", + "in": "query" + }, + { + "uniqueItems": true, + "type": "string", + "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", + "name": "fieldSelector", + "in": "query" + }, + { + "uniqueItems": true, + "type": "string", + "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", + "name": "labelSelector", + "in": "query" + }, + { + "uniqueItems": true, + "type": "integer", + "description": "limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true.\n\nThe server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned.", + "name": "limit", + "in": "query" + }, + { + "uniqueItems": true, + "type": "string", + "description": "If 'true', then the output is pretty printed.", + "name": "pretty", + "in": "query" + }, + { + "uniqueItems": true, + "type": "string", + "description": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv.", + "name": "resourceVersion", + "in": "query" + }, + { + "uniqueItems": true, + "type": "integer", + "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", + "name": "timeoutSeconds", + "in": "query" + }, + { + "uniqueItems": true, + "type": "boolean", + "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", + "name": "watch", + "in": "query" + } + ] + }, + "/apis/network.kubesphere.io/v1alpha1/watch/ippools/{name}": { + "get": { + "description": "watch changes to an object of kind IPPool. deprecated: use the 'watch' parameter with a list operation instead, filtered to a single item with the 'fieldSelector' parameter.", + "consumes": [ + "*/*" + ], + "produces": [ + "application/json", + "application/yaml", + "application/vnd.kubernetes.protobuf", + "application/json;stream=watch", + "application/vnd.kubernetes.protobuf;stream=watch" + ], + "schemes": [ + "https" + ], + "tags": [ + "networkKubesphereIo_v1alpha1" + ], + "operationId": "watchNetworkKubesphereIoV1alpha1IPPool", + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent" + } + } + }, + "x-kubernetes-action": "watch", + "x-kubernetes-group-version-kind": { + "group": "network.kubesphere.io", + "version": "v1alpha1", + "kind": "IPPool" + } + }, + "parameters": [ + { + "uniqueItems": true, + "type": "boolean", + "description": "allowWatchBookmarks requests watch events with type \"BOOKMARK\". Servers that do not implement bookmarks may ignore this flag and bookmarks are sent at the server's discretion. Clients should not assume bookmarks are returned at any specific interval, nor may they assume the server will send any BOOKMARK event during a session. If this is not a watch, this field is ignored. If the feature gate WatchBookmarks is not enabled in apiserver, this field is ignored.", + "name": "allowWatchBookmarks", + "in": "query" + }, + { + "uniqueItems": true, + "type": "string", + "description": "The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\".\n\nThis field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications.", + "name": "continue", + "in": "query" + }, + { + "uniqueItems": true, + "type": "string", + "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", + "name": "fieldSelector", + "in": "query" + }, + { + "uniqueItems": true, + "type": "string", + "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", + "name": "labelSelector", + "in": "query" + }, + { + "uniqueItems": true, + "type": "integer", + "description": "limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true.\n\nThe server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned.", + "name": "limit", + "in": "query" + }, + { + "uniqueItems": true, + "type": "string", + "description": "name of the IPPool", + "name": "name", + "in": "path", + "required": true + }, + { + "uniqueItems": true, + "type": "string", + "description": "If 'true', then the output is pretty printed.", + "name": "pretty", + "in": "query" + }, + { + "uniqueItems": true, + "type": "string", + "description": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv.", + "name": "resourceVersion", + "in": "query" + }, + { + "uniqueItems": true, + "type": "integer", + "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", + "name": "timeoutSeconds", + "in": "query" + }, + { + "uniqueItems": true, + "type": "boolean", + "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", + "name": "watch", + "in": "query" + } + ] + }, + "/apis/network.kubesphere.io/v1alpha1/watch/namespacenetworkpolicies": { + "get": { + "description": "watch individual changes to a list of NamespaceNetworkPolicy. deprecated: use the 'watch' parameter with a list operation instead.", + "consumes": [ + "*/*" + ], + "produces": [ + "application/json", + "application/yaml", + "application/vnd.kubernetes.protobuf", + "application/json;stream=watch", + "application/vnd.kubernetes.protobuf;stream=watch" + ], + "schemes": [ + "https" + ], + "tags": [ + "networkKubesphereIo_v1alpha1" + ], + "operationId": "watchNetworkKubesphereIoV1alpha1NamespaceNetworkPolicyList", + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent" + } + } + }, + "x-kubernetes-action": "watchlist", + "x-kubernetes-group-version-kind": { + "group": "network.kubesphere.io", + "version": "v1alpha1", + "kind": "NamespaceNetworkPolicy" + } + }, + "parameters": [ + { + "uniqueItems": true, + "type": "boolean", + "description": "allowWatchBookmarks requests watch events with type \"BOOKMARK\". Servers that do not implement bookmarks may ignore this flag and bookmarks are sent at the server's discretion. Clients should not assume bookmarks are returned at any specific interval, nor may they assume the server will send any BOOKMARK event during a session. If this is not a watch, this field is ignored. If the feature gate WatchBookmarks is not enabled in apiserver, this field is ignored.", + "name": "allowWatchBookmarks", + "in": "query" + }, + { + "uniqueItems": true, + "type": "string", + "description": "The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\".\n\nThis field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications.", + "name": "continue", + "in": "query" + }, + { + "uniqueItems": true, + "type": "string", + "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", + "name": "fieldSelector", + "in": "query" + }, + { + "uniqueItems": true, + "type": "string", + "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", + "name": "labelSelector", + "in": "query" + }, + { + "uniqueItems": true, + "type": "integer", + "description": "limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true.\n\nThe server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned.", + "name": "limit", + "in": "query" + }, + { + "uniqueItems": true, + "type": "string", + "description": "If 'true', then the output is pretty printed.", + "name": "pretty", + "in": "query" + }, + { + "uniqueItems": true, + "type": "string", + "description": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv.", + "name": "resourceVersion", + "in": "query" + }, + { + "uniqueItems": true, + "type": "integer", + "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", + "name": "timeoutSeconds", + "in": "query" + }, + { + "uniqueItems": true, + "type": "boolean", + "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", + "name": "watch", + "in": "query" + } + ] + }, + "/apis/network.kubesphere.io/v1alpha1/watch/namespacenetworkpolicies/{name}": { + "get": { + "description": "watch changes to an object of kind NamespaceNetworkPolicy. deprecated: use the 'watch' parameter with a list operation instead, filtered to a single item with the 'fieldSelector' parameter.", + "consumes": [ + "*/*" + ], + "produces": [ + "application/json", + "application/yaml", + "application/vnd.kubernetes.protobuf", + "application/json;stream=watch", + "application/vnd.kubernetes.protobuf;stream=watch" + ], + "schemes": [ + "https" + ], + "tags": [ + "networkKubesphereIo_v1alpha1" + ], + "operationId": "watchNetworkKubesphereIoV1alpha1NamespaceNetworkPolicy", + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent" + } + } + }, + "x-kubernetes-action": "watch", + "x-kubernetes-group-version-kind": { + "group": "network.kubesphere.io", + "version": "v1alpha1", + "kind": "NamespaceNetworkPolicy" + } + }, + "parameters": [ + { + "uniqueItems": true, + "type": "boolean", + "description": "allowWatchBookmarks requests watch events with type \"BOOKMARK\". Servers that do not implement bookmarks may ignore this flag and bookmarks are sent at the server's discretion. Clients should not assume bookmarks are returned at any specific interval, nor may they assume the server will send any BOOKMARK event during a session. If this is not a watch, this field is ignored. If the feature gate WatchBookmarks is not enabled in apiserver, this field is ignored.", + "name": "allowWatchBookmarks", + "in": "query" + }, + { + "uniqueItems": true, + "type": "string", + "description": "The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\".\n\nThis field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications.", + "name": "continue", + "in": "query" + }, + { + "uniqueItems": true, + "type": "string", + "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", + "name": "fieldSelector", + "in": "query" + }, + { + "uniqueItems": true, + "type": "string", + "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", + "name": "labelSelector", + "in": "query" + }, + { + "uniqueItems": true, + "type": "integer", + "description": "limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true.\n\nThe server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned.", + "name": "limit", + "in": "query" + }, + { + "uniqueItems": true, + "type": "string", + "description": "name of the NamespaceNetworkPolicy", + "name": "name", + "in": "path", + "required": true + }, + { + "uniqueItems": true, + "type": "string", + "description": "If 'true', then the output is pretty printed.", + "name": "pretty", + "in": "query" + }, + { + "uniqueItems": true, + "type": "string", + "description": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv.", + "name": "resourceVersion", + "in": "query" + }, + { + "uniqueItems": true, + "type": "integer", + "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", + "name": "timeoutSeconds", + "in": "query" + }, + { + "uniqueItems": true, + "type": "boolean", + "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", + "name": "watch", + "in": "query" + } + ] + }, + "/apis/tenant.kubesphere.io/": { + "get": { + "description": "get information of a group", + "consumes": [ + "application/json", + "application/yaml", + "application/vnd.kubernetes.protobuf" + ], + "produces": [ + "application/json", + "application/yaml", + "application/vnd.kubernetes.protobuf" + ], + "schemes": [ + "https" + ], + "tags": [ + "tenantKubesphereIo" + ], + "operationId": "getTenantKubesphereIoAPIGroup", + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.APIGroup" + } + } + } + } + }, + "/apis/tenant.kubesphere.io/v1alpha1/": { + "get": { + "description": "get available resources", + "consumes": [ + "application/json", + "application/yaml", + "application/vnd.kubernetes.protobuf" + ], + "produces": [ + "application/json", + "application/yaml", + "application/vnd.kubernetes.protobuf" + ], + "schemes": [ + "https" + ], + "tags": [ + "tenantKubesphereIo_v1alpha1" + ], + "operationId": "getTenantKubesphereIoV1alpha1APIResources", + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.APIResourceList" + } + } + } + } + }, + "/apis/tenant.kubesphere.io/v1alpha1/watch/workspaces": { + "get": { + "description": "watch individual changes to a list of Workspace. deprecated: use the 'watch' parameter with a list operation instead.", + "consumes": [ + "*/*" + ], + "produces": [ + "application/json", + "application/yaml", + "application/vnd.kubernetes.protobuf", + "application/json;stream=watch", + "application/vnd.kubernetes.protobuf;stream=watch" + ], + "schemes": [ + "https" + ], + "tags": [ + "tenantKubesphereIo_v1alpha1" + ], + "operationId": "watchTenantKubesphereIoV1alpha1WorkspaceList", + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent" + } + } + }, + "x-kubernetes-action": "watchlist", + "x-kubernetes-group-version-kind": { + "group": "tenant.kubesphere.io", + "version": "v1alpha1", + "kind": "Workspace" + } + }, + "parameters": [ + { + "uniqueItems": true, + "type": "boolean", + "description": "allowWatchBookmarks requests watch events with type \"BOOKMARK\". Servers that do not implement bookmarks may ignore this flag and bookmarks are sent at the server's discretion. Clients should not assume bookmarks are returned at any specific interval, nor may they assume the server will send any BOOKMARK event during a session. If this is not a watch, this field is ignored. If the feature gate WatchBookmarks is not enabled in apiserver, this field is ignored.", + "name": "allowWatchBookmarks", + "in": "query" + }, + { + "uniqueItems": true, + "type": "string", + "description": "The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\".\n\nThis field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications.", + "name": "continue", + "in": "query" + }, + { + "uniqueItems": true, + "type": "string", + "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", + "name": "fieldSelector", + "in": "query" + }, + { + "uniqueItems": true, + "type": "string", + "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", + "name": "labelSelector", + "in": "query" + }, + { + "uniqueItems": true, + "type": "integer", + "description": "limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true.\n\nThe server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned.", + "name": "limit", + "in": "query" + }, + { + "uniqueItems": true, + "type": "string", + "description": "If 'true', then the output is pretty printed.", + "name": "pretty", + "in": "query" + }, + { + "uniqueItems": true, + "type": "string", + "description": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv.", + "name": "resourceVersion", + "in": "query" + }, + { + "uniqueItems": true, + "type": "integer", + "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", + "name": "timeoutSeconds", + "in": "query" + }, + { + "uniqueItems": true, + "type": "boolean", + "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", + "name": "watch", + "in": "query" + } + ] + }, + "/apis/tenant.kubesphere.io/v1alpha1/watch/workspaces/{name}": { + "get": { + "description": "watch changes to an object of kind Workspace. deprecated: use the 'watch' parameter with a list operation instead, filtered to a single item with the 'fieldSelector' parameter.", + "consumes": [ + "*/*" + ], + "produces": [ + "application/json", + "application/yaml", + "application/vnd.kubernetes.protobuf", + "application/json;stream=watch", + "application/vnd.kubernetes.protobuf;stream=watch" + ], + "schemes": [ + "https" + ], + "tags": [ + "tenantKubesphereIo_v1alpha1" + ], + "operationId": "watchTenantKubesphereIoV1alpha1Workspace", + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent" + } + } + }, + "x-kubernetes-action": "watch", + "x-kubernetes-group-version-kind": { + "group": "tenant.kubesphere.io", + "version": "v1alpha1", + "kind": "Workspace" + } + }, + "parameters": [ + { + "uniqueItems": true, + "type": "boolean", + "description": "allowWatchBookmarks requests watch events with type \"BOOKMARK\". Servers that do not implement bookmarks may ignore this flag and bookmarks are sent at the server's discretion. Clients should not assume bookmarks are returned at any specific interval, nor may they assume the server will send any BOOKMARK event during a session. If this is not a watch, this field is ignored. If the feature gate WatchBookmarks is not enabled in apiserver, this field is ignored.", + "name": "allowWatchBookmarks", + "in": "query" + }, + { + "uniqueItems": true, + "type": "string", + "description": "The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\".\n\nThis field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications.", + "name": "continue", + "in": "query" + }, + { + "uniqueItems": true, + "type": "string", + "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", + "name": "fieldSelector", + "in": "query" + }, + { + "uniqueItems": true, + "type": "string", + "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", + "name": "labelSelector", + "in": "query" + }, + { + "uniqueItems": true, + "type": "integer", + "description": "limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true.\n\nThe server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned.", + "name": "limit", + "in": "query" + }, + { + "uniqueItems": true, + "type": "string", + "description": "name of the Workspace", + "name": "name", + "in": "path", + "required": true + }, + { + "uniqueItems": true, + "type": "string", + "description": "If 'true', then the output is pretty printed.", + "name": "pretty", + "in": "query" + }, + { + "uniqueItems": true, + "type": "string", + "description": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv.", + "name": "resourceVersion", + "in": "query" + }, + { + "uniqueItems": true, + "type": "integer", + "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", + "name": "timeoutSeconds", + "in": "query" + }, + { + "uniqueItems": true, + "type": "boolean", + "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", + "name": "watch", + "in": "query" + } + ] + }, + "/apis/tenant.kubesphere.io/v1alpha1/workspaces": { + "get": { + "description": "list or watch objects of kind Workspace", + "consumes": [ + "*/*" + ], + "produces": [ + "application/json", + "application/yaml", + "application/vnd.kubernetes.protobuf", + "application/json;stream=watch", + "application/vnd.kubernetes.protobuf;stream=watch" + ], + "schemes": [ + "https" + ], + "tags": [ + "tenantKubesphereIo_v1alpha1" + ], + "operationId": "listTenantKubesphereIoV1alpha1Workspace", + "parameters": [ + { + "uniqueItems": true, + "type": "boolean", + "description": "allowWatchBookmarks requests watch events with type \"BOOKMARK\". Servers that do not implement bookmarks may ignore this flag and bookmarks are sent at the server's discretion. Clients should not assume bookmarks are returned at any specific interval, nor may they assume the server will send any BOOKMARK event during a session. If this is not a watch, this field is ignored. If the feature gate WatchBookmarks is not enabled in apiserver, this field is ignored.", + "name": "allowWatchBookmarks", + "in": "query" + }, + { + "uniqueItems": true, + "type": "string", + "description": "The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\".\n\nThis field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications.", + "name": "continue", + "in": "query" + }, + { + "uniqueItems": true, + "type": "string", + "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", + "name": "fieldSelector", + "in": "query" + }, + { + "uniqueItems": true, + "type": "string", + "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", + "name": "labelSelector", + "in": "query" + }, + { + "uniqueItems": true, + "type": "integer", + "description": "limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true.\n\nThe server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned.", + "name": "limit", + "in": "query" + }, + { + "uniqueItems": true, + "type": "string", + "description": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv.", + "name": "resourceVersion", + "in": "query" + }, + { + "uniqueItems": true, + "type": "integer", + "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", + "name": "timeoutSeconds", + "in": "query" + }, + { + "uniqueItems": true, + "type": "boolean", + "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", + "name": "watch", + "in": "query" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/io.kubesphere.kubesphere.pkg.apis.tenant.v1alpha1.WorkspaceList" + } + } + }, + "x-kubernetes-action": "list", + "x-kubernetes-group-version-kind": { + "group": "tenant.kubesphere.io", + "version": "v1alpha1", + "kind": "Workspace" + } + }, + "post": { + "description": "create a Workspace", + "consumes": [ + "*/*" + ], + "produces": [ + "application/json", + "application/yaml", + "application/vnd.kubernetes.protobuf" + ], + "schemes": [ + "https" + ], + "tags": [ + "tenantKubesphereIo_v1alpha1" + ], + "operationId": "createTenantKubesphereIoV1alpha1Workspace", + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/io.kubesphere.kubesphere.pkg.apis.tenant.v1alpha1.Workspace" + } + }, + { + "uniqueItems": true, + "type": "string", + "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", + "name": "dryRun", + "in": "query" + }, + { + "uniqueItems": true, + "type": "string", + "description": "fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint.", + "name": "fieldManager", + "in": "query" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/io.kubesphere.kubesphere.pkg.apis.tenant.v1alpha1.Workspace" + } + }, + "201": { + "description": "Created", + "schema": { + "$ref": "#/definitions/io.kubesphere.kubesphere.pkg.apis.tenant.v1alpha1.Workspace" + } + }, + "202": { + "description": "Accepted", + "schema": { + "$ref": "#/definitions/io.kubesphere.kubesphere.pkg.apis.tenant.v1alpha1.Workspace" + } + } + }, + "x-kubernetes-action": "post", + "x-kubernetes-group-version-kind": { + "group": "tenant.kubesphere.io", + "version": "v1alpha1", + "kind": "Workspace" + } + }, + "delete": { + "description": "delete collection of Workspace", + "consumes": [ + "*/*" + ], + "produces": [ + "application/json", + "application/yaml", + "application/vnd.kubernetes.protobuf" + ], + "schemes": [ + "https" + ], + "tags": [ + "tenantKubesphereIo_v1alpha1" + ], + "operationId": "deleteTenantKubesphereIoV1alpha1CollectionWorkspace", + "parameters": [ + { + "uniqueItems": true, + "type": "boolean", + "description": "allowWatchBookmarks requests watch events with type \"BOOKMARK\". Servers that do not implement bookmarks may ignore this flag and bookmarks are sent at the server's discretion. Clients should not assume bookmarks are returned at any specific interval, nor may they assume the server will send any BOOKMARK event during a session. If this is not a watch, this field is ignored. If the feature gate WatchBookmarks is not enabled in apiserver, this field is ignored.", + "name": "allowWatchBookmarks", + "in": "query" + }, + { + "name": "body", + "in": "body", + "schema": { + "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions" + } + }, + { + "uniqueItems": true, + "type": "string", + "description": "The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\".\n\nThis field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications.", + "name": "continue", + "in": "query" + }, + { + "uniqueItems": true, + "type": "string", + "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", + "name": "dryRun", + "in": "query" + }, + { + "uniqueItems": true, + "type": "string", + "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", + "name": "fieldSelector", + "in": "query" + }, + { + "uniqueItems": true, + "type": "integer", + "description": "The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately.", + "name": "gracePeriodSeconds", + "in": "query" + }, + { + "uniqueItems": true, + "type": "string", + "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", + "name": "labelSelector", + "in": "query" + }, + { + "uniqueItems": true, + "type": "integer", + "description": "limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true.\n\nThe server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned.", + "name": "limit", + "in": "query" + }, + { + "uniqueItems": true, + "type": "boolean", + "description": "Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both.", + "name": "orphanDependents", + "in": "query" + }, + { + "uniqueItems": true, + "type": "string", + "description": "Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. Acceptable values are: 'Orphan' - orphan the dependents; 'Background' - allow the garbage collector to delete the dependents in the background; 'Foreground' - a cascading policy that deletes all dependents in the foreground.", + "name": "propagationPolicy", + "in": "query" + }, + { + "uniqueItems": true, + "type": "string", + "description": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv.", + "name": "resourceVersion", + "in": "query" + }, + { + "uniqueItems": true, + "type": "integer", + "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", + "name": "timeoutSeconds", + "in": "query" + }, + { + "uniqueItems": true, + "type": "boolean", + "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", + "name": "watch", + "in": "query" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status" + } + } + }, + "x-kubernetes-action": "deletecollection", + "x-kubernetes-group-version-kind": { + "group": "tenant.kubesphere.io", + "version": "v1alpha1", + "kind": "Workspace" + } + }, + "parameters": [ + { + "uniqueItems": true, + "type": "string", + "description": "If 'true', then the output is pretty printed.", + "name": "pretty", + "in": "query" + } + ] + }, + "/apis/tenant.kubesphere.io/v1alpha1/workspaces/{name}": { + "get": { + "description": "read the specified Workspace", + "consumes": [ + "*/*" + ], + "produces": [ + "application/json", + "application/yaml", + "application/vnd.kubernetes.protobuf" + ], + "schemes": [ + "https" + ], + "tags": [ + "tenantKubesphereIo_v1alpha1" + ], + "operationId": "readTenantKubesphereIoV1alpha1Workspace", + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/io.kubesphere.kubesphere.pkg.apis.tenant.v1alpha1.Workspace" + } + } + }, + "x-kubernetes-action": "get", + "x-kubernetes-group-version-kind": { + "group": "tenant.kubesphere.io", + "version": "v1alpha1", + "kind": "Workspace" + } + }, + "put": { + "description": "replace the specified Workspace", + "consumes": [ + "*/*" + ], + "produces": [ + "application/json", + "application/yaml", + "application/vnd.kubernetes.protobuf" + ], + "schemes": [ + "https" + ], + "tags": [ + "tenantKubesphereIo_v1alpha1" + ], + "operationId": "replaceTenantKubesphereIoV1alpha1Workspace", + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/io.kubesphere.kubesphere.pkg.apis.tenant.v1alpha1.Workspace" + } + }, + { + "uniqueItems": true, + "type": "string", + "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", + "name": "dryRun", + "in": "query" + }, + { + "uniqueItems": true, + "type": "string", + "description": "fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint.", + "name": "fieldManager", + "in": "query" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/io.kubesphere.kubesphere.pkg.apis.tenant.v1alpha1.Workspace" + } + }, + "201": { + "description": "Created", + "schema": { + "$ref": "#/definitions/io.kubesphere.kubesphere.pkg.apis.tenant.v1alpha1.Workspace" + } + } + }, + "x-kubernetes-action": "put", + "x-kubernetes-group-version-kind": { + "group": "tenant.kubesphere.io", + "version": "v1alpha1", + "kind": "Workspace" + } + }, + "delete": { + "description": "delete a Workspace", + "consumes": [ + "*/*" + ], + "produces": [ + "application/json", + "application/yaml", + "application/vnd.kubernetes.protobuf" + ], + "schemes": [ + "https" + ], + "tags": [ + "tenantKubesphereIo_v1alpha1" + ], + "operationId": "deleteTenantKubesphereIoV1alpha1Workspace", + "parameters": [ + { + "name": "body", + "in": "body", + "schema": { + "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions" + } + }, + { + "uniqueItems": true, + "type": "string", + "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", + "name": "dryRun", + "in": "query" + }, + { + "uniqueItems": true, + "type": "integer", + "description": "The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately.", + "name": "gracePeriodSeconds", + "in": "query" + }, + { + "uniqueItems": true, + "type": "boolean", + "description": "Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both.", + "name": "orphanDependents", + "in": "query" + }, + { + "uniqueItems": true, + "type": "string", + "description": "Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. Acceptable values are: 'Orphan' - orphan the dependents; 'Background' - allow the garbage collector to delete the dependents in the background; 'Foreground' - a cascading policy that deletes all dependents in the foreground.", + "name": "propagationPolicy", + "in": "query" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status" + } + }, + "202": { + "description": "Accepted", + "schema": { + "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status" + } + } + }, + "x-kubernetes-action": "delete", + "x-kubernetes-group-version-kind": { + "group": "tenant.kubesphere.io", + "version": "v1alpha1", + "kind": "Workspace" + } + }, + "patch": { + "description": "partially update the specified Workspace", + "consumes": [ + "application/json-patch+json", + "application/merge-patch+json", + "application/strategic-merge-patch+json", + "application/apply-patch+yaml" + ], + "produces": [ + "application/json", + "application/yaml", + "application/vnd.kubernetes.protobuf" + ], + "schemes": [ + "https" + ], + "tags": [ + "tenantKubesphereIo_v1alpha1" + ], + "operationId": "patchTenantKubesphereIoV1alpha1Workspace", + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Patch" + } + }, + { + "uniqueItems": true, + "type": "string", + "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", + "name": "dryRun", + "in": "query" + }, + { + "uniqueItems": true, + "type": "string", + "description": "fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. This field is required for apply requests (application/apply-patch) but optional for non-apply patch types (JsonPatch, MergePatch, StrategicMergePatch).", + "name": "fieldManager", + "in": "query" + }, + { + "uniqueItems": true, + "type": "boolean", + "description": "Force is going to \"force\" Apply requests. It means user will re-acquire conflicting fields owned by other people. Force flag must be unset for non-apply patch requests.", + "name": "force", + "in": "query" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/io.kubesphere.kubesphere.pkg.apis.tenant.v1alpha1.Workspace" + } + } + }, + "x-kubernetes-action": "patch", + "x-kubernetes-group-version-kind": { + "group": "tenant.kubesphere.io", + "version": "v1alpha1", + "kind": "Workspace" + } + }, + "parameters": [ + { + "uniqueItems": true, + "type": "string", + "description": "name of the Workspace", + "name": "name", + "in": "path", + "required": true + }, + { + "uniqueItems": true, + "type": "string", + "description": "If 'true', then the output is pretty printed.", + "name": "pretty", + "in": "query" + } + ] + }, + "/apis/tenant.kubesphere.io/v1alpha1/workspaces/{name}/status": { + "get": { + "description": "read status of the specified Workspace", + "consumes": [ + "*/*" + ], + "produces": [ + "application/json", + "application/yaml", + "application/vnd.kubernetes.protobuf" + ], + "schemes": [ + "https" + ], + "tags": [ + "tenantKubesphereIo_v1alpha1" + ], + "operationId": "readTenantKubesphereIoV1alpha1WorkspaceStatus", + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/io.kubesphere.kubesphere.pkg.apis.tenant.v1alpha1.Workspace" + } + } + }, + "x-kubernetes-action": "get", + "x-kubernetes-group-version-kind": { + "group": "tenant.kubesphere.io", + "version": "v1alpha1", + "kind": "Workspace" + } + }, + "put": { + "description": "replace status of the specified Workspace", + "consumes": [ + "*/*" + ], + "produces": [ + "application/json", + "application/yaml", + "application/vnd.kubernetes.protobuf" + ], + "schemes": [ + "https" + ], + "tags": [ + "tenantKubesphereIo_v1alpha1" + ], + "operationId": "replaceTenantKubesphereIoV1alpha1WorkspaceStatus", + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/io.kubesphere.kubesphere.pkg.apis.tenant.v1alpha1.Workspace" + } + }, + { + "uniqueItems": true, + "type": "string", + "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", + "name": "dryRun", + "in": "query" + }, + { + "uniqueItems": true, + "type": "string", + "description": "fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint.", + "name": "fieldManager", + "in": "query" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/io.kubesphere.kubesphere.pkg.apis.tenant.v1alpha1.Workspace" + } + }, + "201": { + "description": "Created", + "schema": { + "$ref": "#/definitions/io.kubesphere.kubesphere.pkg.apis.tenant.v1alpha1.Workspace" + } + } + }, + "x-kubernetes-action": "put", + "x-kubernetes-group-version-kind": { + "group": "tenant.kubesphere.io", + "version": "v1alpha1", + "kind": "Workspace" + } + }, + "patch": { + "description": "partially update status of the specified Workspace", + "consumes": [ + "application/json-patch+json", + "application/merge-patch+json", + "application/strategic-merge-patch+json", + "application/apply-patch+yaml" + ], + "produces": [ + "application/json", + "application/yaml", + "application/vnd.kubernetes.protobuf" + ], + "schemes": [ + "https" + ], + "tags": [ + "tenantKubesphereIo_v1alpha1" + ], + "operationId": "patchTenantKubesphereIoV1alpha1WorkspaceStatus", + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Patch" + } + }, + { + "uniqueItems": true, + "type": "string", + "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", + "name": "dryRun", + "in": "query" + }, + { + "uniqueItems": true, + "type": "string", + "description": "fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. This field is required for apply requests (application/apply-patch) but optional for non-apply patch types (JsonPatch, MergePatch, StrategicMergePatch).", + "name": "fieldManager", + "in": "query" + }, + { + "uniqueItems": true, + "type": "boolean", + "description": "Force is going to \"force\" Apply requests. It means user will re-acquire conflicting fields owned by other people. Force flag must be unset for non-apply patch requests.", + "name": "force", + "in": "query" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/io.kubesphere.kubesphere.pkg.apis.tenant.v1alpha1.Workspace" + } + } + }, + "x-kubernetes-action": "patch", + "x-kubernetes-group-version-kind": { + "group": "tenant.kubesphere.io", + "version": "v1alpha1", + "kind": "Workspace" + } + }, + "parameters": [ + { + "uniqueItems": true, + "type": "string", + "description": "name of the Workspace", + "name": "name", + "in": "path", + "required": true + }, + { + "uniqueItems": true, + "type": "string", + "description": "If 'true', then the output is pretty printed.", + "name": "pretty", + "in": "query" + } + ] + } + }, + "definitions": { + "io.k8s.api.core.v1.LocalObjectReference": { + "description": "LocalObjectReference contains enough information to let you locate the referenced object inside the same namespace.", + "type": "object", + "properties": { + "name": { + "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", + "type": "string" + } + } + }, + "io.k8s.api.networking.v1.IPBlock": { + "description": "IPBlock describes a particular CIDR (Ex. \"192.168.1.1/24\") that is allowed to the pods matched by a NetworkPolicySpec's podSelector. The except entry describes CIDRs that should not be included within this rule.", + "type": "object", + "required": [ + "cidr" + ], + "properties": { + "cidr": { + "description": "CIDR is a string representing the IP Block Valid examples are \"192.168.1.1/24\"", + "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\" Except values will be rejected if they are outside the CIDR range", + "type": "array", + "items": { + "type": "string" + } + } + } + }, + "io.k8s.api.networking.v1.NetworkPolicyPort": { + "description": "NetworkPolicyPort describes a port to allow traffic on", + "type": "object", + "properties": { + "port": { + "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.", + "$ref": "#/definitions/io.k8s.apimachinery.pkg.util.intstr.IntOrString" + }, + "protocol": { + "description": "The protocol (TCP, UDP, or SCTP) which traffic must match. If not specified, this field defaults to TCP.", + "type": "string" + } + } + }, + "io.k8s.apimachinery.pkg.apis.meta.v1.APIGroup": { + "description": "APIGroup contains the name, the supported versions, and the preferred version of a group.", + "type": "object", + "required": [ + "name", + "versions" + ], + "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" + }, + "name": { + "description": "name is the name of the group.", + "type": "string" + }, + "preferredVersion": { + "description": "preferredVersion is the version preferred by the API server, which probably is the storage version.", + "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.GroupVersionForDiscovery" + }, + "serverAddressByClientCIDRs": { + "description": "a map of client CIDR to server address that is serving this group. This is to help clients reach servers in the most network-efficient way possible. Clients can use the appropriate server address as per the CIDR that they match. In case of multiple matches, clients should use the longest matching CIDR. The server returns only those CIDRs that it thinks that the client can match. For example: the master will return an internal IP CIDR only, if the client reaches the server using an internal IP. Server looks at X-Forwarded-For header or X-Real-Ip header or request.RemoteAddr (in that order) to get the client IP.", + "type": "array", + "items": { + "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ServerAddressByClientCIDR" + } + }, + "versions": { + "description": "versions are the versions supported in this group.", + "type": "array", + "items": { + "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.GroupVersionForDiscovery" + } + } + }, + "x-kubernetes-group-version-kind": [ + { + "group": "", + "kind": "APIGroup", + "version": "v1" + } + ] + }, + "io.k8s.apimachinery.pkg.apis.meta.v1.APIGroupList": { + "description": "APIGroupList is a list of APIGroup, to allow clients to discover the API at /apis.", + "type": "object", + "required": [ + "groups" + ], + "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" + }, + "groups": { + "description": "groups is a list of APIGroup.", + "type": "array", + "items": { + "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.APIGroup" + } + }, + "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" + } + }, + "x-kubernetes-group-version-kind": [ + { + "group": "", + "kind": "APIGroupList", + "version": "v1" + } + ] + }, + "io.k8s.apimachinery.pkg.apis.meta.v1.APIResource": { + "description": "APIResource specifies the name of a resource and whether it is namespaced.", + "type": "object", + "required": [ + "name", + "singularName", + "namespaced", + "kind", + "verbs" + ], + "properties": { + "categories": { + "description": "categories is a list of the grouped resources this resource belongs to (e.g. 'all')", + "type": "array", + "items": { + "type": "string" + } + }, + "group": { + "description": "group is the preferred group of the resource. Empty implies the group of the containing resource list. For subresources, this may have a different value, for example: Scale\".", + "type": "string" + }, + "kind": { + "description": "kind is the kind for the resource (e.g. 'Foo' is the kind for a resource 'foo')", + "type": "string" + }, + "name": { + "description": "name is the plural name of the resource.", + "type": "string" + }, + "namespaced": { + "description": "namespaced indicates if a resource is namespaced or not.", + "type": "boolean" + }, + "shortNames": { + "description": "shortNames is a list of suggested short names of the resource.", + "type": "array", + "items": { + "type": "string" + } + }, + "singularName": { + "description": "singularName is the singular name of the resource. This allows clients to handle plural and singular opaquely. The singularName is more correct for reporting status on a single item and both singular and plural are allowed from the kubectl CLI interface.", + "type": "string" + }, + "storageVersionHash": { + "description": "The hash value of the storage version, the version this resource is converted to when written to the data store. Value must be treated as opaque by clients. Only equality comparison on the value is valid. This is an alpha feature and may change or be removed in the future. The field is populated by the apiserver only if the StorageVersionHash feature gate is enabled. This field will remain optional even if it graduates.", + "type": "string" + }, + "verbs": { + "description": "verbs is a list of supported kube verbs (this includes get, list, watch, create, update, patch, delete, deletecollection, and proxy)", + "type": "array", + "items": { + "type": "string" + } + }, + "version": { + "description": "version is the preferred version of the resource. Empty implies the version of the containing resource list For subresources, this may have a different value, for example: v1 (while inside a v1beta1 version of the core resource's group)\".", + "type": "string" + } + } + }, + "io.k8s.apimachinery.pkg.apis.meta.v1.APIResourceList": { + "description": "APIResourceList is a list of APIResource, it is used to expose the name of the resources supported in a specific group and version, and if the resource is namespaced.", + "type": "object", + "required": [ + "groupVersion", + "resources" + ], + "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" + }, + "groupVersion": { + "description": "groupVersion is the group and version this APIResourceList is for.", + "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" + }, + "resources": { + "description": "resources contains the name of the resources and if they are namespaced.", + "type": "array", + "items": { + "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.APIResource" + } + } + }, + "x-kubernetes-group-version-kind": [ + { + "group": "", + "kind": "APIResourceList", + "version": "v1" + } + ] + }, + "io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions": { + "description": "DeleteOptions may be provided when deleting an API object.", + "type": "object", + "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" + }, + "dryRun": { + "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", + "type": "array", + "items": { + "type": "string" + } + }, + "gracePeriodSeconds": { + "description": "The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately.", + "type": "integer", + "format": "int64" + }, + "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" + }, + "orphanDependents": { + "description": "Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both.", + "type": "boolean" + }, + "preconditions": { + "description": "Must be fulfilled before a deletion is carried out. If not possible, a 409 Conflict status will be returned.", + "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Preconditions" + }, + "propagationPolicy": { + "description": "Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. Acceptable values are: 'Orphan' - orphan the dependents; 'Background' - allow the garbage collector to delete the dependents in the background; 'Foreground' - a cascading policy that deletes all dependents in the foreground.", + "type": "string" + } + }, + "x-kubernetes-group-version-kind": [ + { + "group": "", + "kind": "DeleteOptions", + "version": "v1" + }, + { + "group": "cluster.kubesphere.io", + "kind": "DeleteOptions", + "version": "v1alpha1" + }, + { + "group": "devops.kubesphere.io", + "kind": "DeleteOptions", + "version": "v1alpha1" + }, + { + "group": "devops.kubesphere.io", + "kind": "DeleteOptions", + "version": "v1alpha3" + }, + { + "group": "network.kubesphere.io", + "kind": "DeleteOptions", + "version": "v1alpha1" + }, + { + "group": "servicemesh.kubesphere.io", + "kind": "DeleteOptions", + "version": "v1alpha2" + }, + { + "group": "tenant.kubesphere.io", + "kind": "DeleteOptions", + "version": "v1alpha1" + }, + { + "group": "tenant.kubesphere.io", + "kind": "DeleteOptions", + "version": "v1alpha2" + } + ] + }, + "io.k8s.apimachinery.pkg.apis.meta.v1.FieldsV1": { + "description": "FieldsV1 stores a set of fields in a data structure like a Trie, in JSON format.\n\nEach key is either a '.' representing the field itself, and will always map to an empty set, or a string representing a sub-field or item. The string will follow one of these four formats: 'f:\u003cname\u003e', where \u003cname\u003e is the name of a field in a struct, or key in a map 'v:\u003cvalue\u003e', where \u003cvalue\u003e is the exact json formatted value of a list item 'i:\u003cindex\u003e', where \u003cindex\u003e is position of a item in a list 'k:\u003ckeys\u003e', where \u003ckeys\u003e is a map of a list item's key fields to their unique values If a key maps to an empty Fields value, the field that key represents is part of the set.\n\nThe exact format is defined in sigs.k8s.io/structured-merge-diff", + "type": "object" + }, + "io.k8s.apimachinery.pkg.apis.meta.v1.GroupVersionForDiscovery": { + "description": "GroupVersion contains the \"group/version\" and \"version\" string of a version. It is made a struct to keep extensibility.", + "type": "object", + "required": [ + "groupVersion", + "version" + ], + "properties": { + "groupVersion": { + "description": "groupVersion specifies the API group and version in the form \"group/version\"", + "type": "string" + }, + "version": { + "description": "version specifies the version in the form of \"version\". This is to save the clients the trouble of splitting the GroupVersion.", + "type": "string" + } + } + }, + "io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta": { + "description": "ListMeta describes metadata that synthetic resources must have, including lists and various status objects. A resource may have only one of {ObjectMeta, ListMeta}.", + "type": "object", + "properties": { + "continue": { + "description": "continue may be set if the user set a limit on the number of items returned, and indicates that the server has more data available. The value is opaque and may be used to issue another request to the endpoint that served this list to retrieve the next set of available objects. Continuing a consistent list may not be possible if the server configuration has changed or more than a few minutes have passed. The resourceVersion field returned when using this continue value will be identical to the value in the first response, unless you have received this token from an error message.", + "type": "string" + }, + "remainingItemCount": { + "description": "remainingItemCount is the number of subsequent items in the list which are not included in this list response. If the list request contained label or field selectors, then the number of remaining items is unknown and the field will be left unset and omitted during serialization. If the list is complete (either because it is not chunking or because this is the last chunk), then there are no more remaining items and this field will be left unset and omitted during serialization. Servers older than v1.15 do not set this field. The intended use of the remainingItemCount is *estimating* the size of a collection. Clients should not rely on the remainingItemCount to be set or to be exact.", + "type": "integer", + "format": "int64" + }, + "resourceVersion": { + "description": "String that identifies the server's internal version of this object that can be used by clients to determine when objects have changed. Value must be treated as opaque by clients and passed unmodified back to the server. Populated by the system. Read-only. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency", + "type": "string" + }, + "selfLink": { + "description": "selfLink is a URL representing this object. Populated by the system. Read-only.\n\nDEPRECATED Kubernetes will stop propagating this field in 1.20 release and the field is planned to be removed in 1.21 release.", + "type": "string" + } + } + }, + "io.k8s.apimachinery.pkg.apis.meta.v1.ManagedFieldsEntry": { + "description": "ManagedFieldsEntry is a workflow-id, a FieldSet and the group version of the resource that the fieldset applies to.", + "type": "object", + "properties": { + "apiVersion": { + "description": "APIVersion defines the version of this resource that this field set applies to. The format is \"group/version\" just like the top-level APIVersion field. It is necessary to track the version of a field set because it cannot be automatically converted.", + "type": "string" + }, + "fieldsType": { + "description": "FieldsType is the discriminator for the different fields format and version. There is currently only one possible value: \"FieldsV1\"", + "type": "string" + }, + "fieldsV1": { + "description": "FieldsV1 holds the first JSON version format as described in the \"FieldsV1\" type.", + "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.FieldsV1" + }, + "manager": { + "description": "Manager is an identifier of the workflow managing these fields.", + "type": "string" + }, + "operation": { + "description": "Operation is the type of operation which lead to this ManagedFieldsEntry being created. The only valid values for this field are 'Apply' and 'Update'.", + "type": "string" + }, + "time": { + "description": "Time is timestamp of when these fields were set. It should always be empty if Operation is 'Apply'", + "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Time" + } + } + }, + "io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta": { + "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", + "type": "object", + "properties": { + "annotations": { + "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "clusterName": { + "description": "The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.", + "type": "string" + }, + "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.\n\nPopulated by the system. Read-only. Null for lists. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata", + "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Time" + }, + "deletionGracePeriodSeconds": { + "description": "Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.", + "type": "integer", + "format": "int64" + }, + "deletionTimestamp": { + "description": "DeletionTimestamp is RFC 3339 date and time at which this resource will be deleted. This field is set by the server when a graceful deletion is requested by the user, and is not directly settable by a client. The resource is expected to be deleted (no longer visible from resource lists, and not reachable by name) after the time in this field, once the finalizers list is empty. As long as the finalizers list contains items, deletion is blocked. Once the deletionTimestamp is set, this value may not be unset or be set further into the future, although it may be shortened or the resource may be deleted prior to this time. For example, a user may request that a pod is deleted in 30 seconds. The Kubelet will react by sending a graceful termination signal to the containers in the pod. After that 30 seconds, the Kubelet will send a hard termination signal (SIGKILL) to the container and after cleanup, remove the pod from the API. In the presence of network partitions, this object may still exist after this timestamp, until an administrator or automated process can determine the resource is fully terminated. If not set, graceful deletion of the object has not been requested.\n\nPopulated by the system when a graceful deletion is requested. Read-only. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata", + "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Time" + }, + "finalizers": { + "description": "Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.", + "type": "array", + "items": { + "type": "string" + }, + "x-kubernetes-patch-strategy": "merge" + }, + "generateName": { + "description": "GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#idempotency", + "type": "string" + }, + "generation": { + "description": "A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.", + "type": "integer", + "format": "int64" + }, + "labels": { + "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "managedFields": { + "description": "ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like \"ci-cd\". The set of fields is always in the version that the workflow used when modifying the object.", + "type": "array", + "items": { + "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ManagedFieldsEntry" + } + }, + "name": { + "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", + "type": "string" + }, + "namespace": { + "description": "Namespace defines the space within each name must be unique. An empty namespace is equivalent to the \"default\" namespace, but \"default\" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/namespaces", + "type": "string" + }, + "ownerReferences": { + "description": "List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.", + "type": "array", + "items": { + "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.OwnerReference" + }, + "x-kubernetes-patch-merge-key": "uid", + "x-kubernetes-patch-strategy": "merge" + }, + "resourceVersion": { + "description": "An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency", + "type": "string" + }, + "selfLink": { + "description": "SelfLink is a URL representing this object. Populated by the system. Read-only.\n\nDEPRECATED Kubernetes will stop propagating this field in 1.20 release and the field is planned to be removed in 1.21 release.", + "type": "string" + }, + "uid": { + "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", + "type": "string" + } + } + }, + "io.k8s.apimachinery.pkg.apis.meta.v1.OwnerReference": { + "description": "OwnerReference contains enough information to let you identify an owning object. An owning object must be in the same namespace as the dependent, or be cluster-scoped, so there is no namespace field.", + "type": "object", + "required": [ + "apiVersion", + "kind", + "name", + "uid" + ], + "properties": { + "apiVersion": { + "description": "API version of the referent.", + "type": "string" + }, + "blockOwnerDeletion": { + "description": "If true, AND if the owner has the \"foregroundDeletion\" finalizer, then the owner cannot be deleted from the key-value store until this reference is removed. Defaults to false. To set this field, a user needs \"delete\" permission of the owner, otherwise 422 (Unprocessable Entity) will be returned.", + "type": "boolean" + }, + "controller": { + "description": "If true, this reference points to the managing controller.", + "type": "boolean" + }, + "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: http://kubernetes.io/docs/user-guide/identifiers#names", + "type": "string" + }, + "uid": { + "description": "UID of the referent. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", + "type": "string" + } + } + }, + "io.k8s.apimachinery.pkg.apis.meta.v1.Patch": { + "description": "Patch is provided to give a concrete name and type to the Kubernetes PATCH request body.", + "type": "object" + }, + "io.k8s.apimachinery.pkg.apis.meta.v1.Preconditions": { + "description": "Preconditions must be fulfilled before an operation (update, delete, etc.) is carried out.", + "type": "object", + "properties": { + "resourceVersion": { + "description": "Specifies the target ResourceVersion", + "type": "string" + }, + "uid": { + "description": "Specifies the target UID.", + "type": "string" + } + } + }, + "io.k8s.apimachinery.pkg.apis.meta.v1.ServerAddressByClientCIDR": { + "description": "ServerAddressByClientCIDR helps the client to determine the server address that they should use, depending on the clientCIDR that they match.", + "type": "object", + "required": [ + "clientCIDR", + "serverAddress" + ], + "properties": { + "clientCIDR": { + "description": "The CIDR with which clients can match their IP to figure out the server address that they should use.", + "type": "string" + }, + "serverAddress": { + "description": "Address of this server, suitable for a client that matches the above CIDR. This can be a hostname, hostname:port, IP or IP:port.", + "type": "string" + } + } + }, + "io.k8s.apimachinery.pkg.apis.meta.v1.Status": { + "description": "Status is a return value for calls that don't return other objects.", + "type": "object", + "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" + }, + "code": { + "description": "Suggested HTTP return code for this status, 0 if not set.", + "type": "integer", + "format": "int32" + }, + "details": { + "description": "Extended data associated with the reason. Each reason may define its own extended details. This field is optional and the data returned is not guaranteed to conform to any schema except that defined by the reason type.", + "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.StatusDetails" + }, + "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" + }, + "message": { + "description": "A human-readable description of the status of this operation.", + "type": "string" + }, + "metadata": { + "description": "Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", + "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta" + }, + "reason": { + "description": "A machine-readable description of why this operation is in the \"Failure\" status. If this value is empty there is no information available. A Reason clarifies an HTTP status code but does not override it.", + "type": "string" + }, + "status": { + "description": "Status of the operation. One of: \"Success\" or \"Failure\". More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status", + "type": "string" + } + }, + "x-kubernetes-group-version-kind": [ + { + "group": "", + "kind": "Status", + "version": "v1" + } + ] + }, + "io.k8s.apimachinery.pkg.apis.meta.v1.StatusCause": { + "description": "StatusCause provides more information about an api.Status failure, including cases when multiple errors are encountered.", + "type": "object", + "properties": { + "field": { + "description": "The field of the resource that has caused this error, as named by its JSON serialization. May include dot and postfix notation for nested attributes. Arrays are zero-indexed. Fields may appear more than once in an array of causes due to fields having multiple errors. Optional.\n\nExamples:\n \"name\" - the field \"name\" on the current resource\n \"items[0].name\" - the field \"name\" on the first array entry in \"items\"", + "type": "string" + }, + "message": { + "description": "A human-readable description of the cause of the error. This field may be presented as-is to a reader.", + "type": "string" + }, + "reason": { + "description": "A machine-readable description of the cause of the error. If this value is empty there is no information available.", + "type": "string" + } + } + }, + "io.k8s.apimachinery.pkg.apis.meta.v1.StatusDetails": { + "description": "StatusDetails is a set of additional properties that MAY be set by the server to provide additional information about a response. The Reason field of a Status object defines what attributes will be set. Clients must ignore fields that do not match the defined type of each attribute, and should assume that any attribute may be empty, invalid, or under defined.", + "type": "object", + "properties": { + "causes": { + "description": "The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes.", + "type": "array", + "items": { + "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.StatusCause" + } + }, + "group": { + "description": "The group attribute of the resource associated with the status StatusReason.", + "type": "string" + }, + "kind": { + "description": "The kind attribute of the resource associated with the status StatusReason. On some operations may differ from the requested resource Kind. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", + "type": "string" + }, + "name": { + "description": "The name attribute of the resource associated with the status StatusReason (when there is a single name which can be described).", + "type": "string" + }, + "retryAfterSeconds": { + "description": "If specified, the time in seconds before the operation should be retried. Some errors may indicate the client must take an alternate action - for those errors this field may indicate how long to wait before taking the alternate action.", + "type": "integer", + "format": "int32" + }, + "uid": { + "description": "UID of the resource. (when there is a single resource which can be described). More info: http://kubernetes.io/docs/user-guide/identifiers#uids", + "type": "string" + } + } + }, + "io.k8s.apimachinery.pkg.apis.meta.v1.Time": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "type": "string", + "format": "date-time" + }, + "io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent": { + "description": "Event represents a single event to a watched resource.", + "type": "object", + "required": [ + "type", + "object" + ], + "properties": { + "object": { + "description": "Object is:\n * If Type is Added or Modified: the new state of the object.\n * If Type is Deleted: the state of the object immediately before deletion.\n * If Type is Error: *Status is recommended; other types may make sense\n depending on context.", + "$ref": "#/definitions/io.k8s.apimachinery.pkg.runtime.RawExtension" + }, + "type": { + "type": "string" + } + }, + "x-kubernetes-group-version-kind": [ + { + "group": "", + "kind": "WatchEvent", + "version": "v1" + }, + { + "group": "cluster.kubesphere.io", + "kind": "WatchEvent", + "version": "v1alpha1" + }, + { + "group": "devops.kubesphere.io", + "kind": "WatchEvent", + "version": "v1alpha1" + }, + { + "group": "devops.kubesphere.io", + "kind": "WatchEvent", + "version": "v1alpha3" + }, + { + "group": "network.kubesphere.io", + "kind": "WatchEvent", + "version": "v1alpha1" + }, + { + "group": "servicemesh.kubesphere.io", + "kind": "WatchEvent", + "version": "v1alpha2" + }, + { + "group": "tenant.kubesphere.io", + "kind": "WatchEvent", + "version": "v1alpha1" + }, + { + "group": "tenant.kubesphere.io", + "kind": "WatchEvent", + "version": "v1alpha2" + } + ] + }, + "io.k8s.apimachinery.pkg.runtime.RawExtension": { + "description": "RawExtension is used to hold extensions in external versions.\n\nTo use this, make a field which has RawExtension as its type in your external, versioned struct, and Object in your internal struct. You also need to register your various plugin types.\n\n// Internal package: type MyAPIObject struct {\n\truntime.TypeMeta `json:\",inline\"`\n\tMyPlugin runtime.Object `json:\"myPlugin\"`\n} type PluginA struct {\n\tAOption string `json:\"aOption\"`\n}\n\n// External package: type MyAPIObject struct {\n\truntime.TypeMeta `json:\",inline\"`\n\tMyPlugin runtime.RawExtension `json:\"myPlugin\"`\n} type PluginA struct {\n\tAOption string `json:\"aOption\"`\n}\n\n// On the wire, the JSON will look something like this: {\n\t\"kind\":\"MyAPIObject\",\n\t\"apiVersion\":\"v1\",\n\t\"myPlugin\": {\n\t\t\"kind\":\"PluginA\",\n\t\t\"aOption\":\"foo\",\n\t},\n}\n\nSo what happens? Decode first uses json or yaml to unmarshal the serialized data into your external MyAPIObject. That causes the raw JSON to be stored, but not unpacked. The next step is to copy (using pkg/conversion) into the internal struct. The runtime package's DefaultScheme has conversion functions installed which will unpack the JSON stored in RawExtension, turning it into the correct object type, and storing it in the Object. (TODO: In the case where the object is of an unknown type, a runtime.Unknown object will be created and stored.)", + "type": "object" + }, + "io.k8s.apimachinery.pkg.util.intstr.IntOrString": { + "description": "IntOrString is a type that can hold an int32 or a string. When used in JSON or YAML marshalling and unmarshalling, it produces or consumes the inner type. This allows you to have, for example, a JSON field that can accept a name or number.", + "type": "string", + "format": "int-or-string" + }, + "io.kubesphere.kubesphere.pkg.apis.cluster.v1alpha1.Cluster": { + "description": "Cluster is the schema for the clusters API", + "type": "object", + "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": { + "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta" + }, + "spec": { + "$ref": "#/definitions/io.kubesphere.kubesphere.pkg.apis.cluster.v1alpha1.ClusterSpec" + }, + "status": { + "$ref": "#/definitions/io.kubesphere.kubesphere.pkg.apis.cluster.v1alpha1.ClusterStatus" + } + }, + "x-kubernetes-group-version-kind": [ + { + "group": "cluster.kubesphere.io", + "kind": "Cluster", + "version": "v1alpha1" + } + ] + }, + "io.kubesphere.kubesphere.pkg.apis.cluster.v1alpha1.ClusterCondition": { + "type": "object", + "required": [ + "type", + "status" + ], + "properties": { + "lastTransitionTime": { + "description": "Last time the condition transitioned from one status to another.", + "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Time" + }, + "lastUpdateTime": { + "description": "The last time this condition was updated.", + "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Time" + }, + "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" + } + } + }, + "io.kubesphere.kubesphere.pkg.apis.cluster.v1alpha1.ClusterList": { + "type": "object", + "required": [ + "items" + ], + "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" + }, + "items": { + "type": "array", + "items": { + "$ref": "#/definitions/io.kubesphere.kubesphere.pkg.apis.cluster.v1alpha1.Cluster" + } + }, + "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": { + "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta" + } + }, + "x-kubernetes-group-version-kind": [ + { + "group": "cluster.kubesphere.io", + "kind": "ClusterList", + "version": "v1alpha1" + } + ] + }, + "io.kubesphere.kubesphere.pkg.apis.cluster.v1alpha1.ClusterSpec": { + "type": "object", + "properties": { + "connection": { + "description": "Connection holds info to connect to the member cluster", + "$ref": "#/definitions/io.kubesphere.kubesphere.pkg.apis.cluster.v1alpha1.Connection" + }, + "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" + } + } + }, + "io.kubesphere.kubesphere.pkg.apis.cluster.v1alpha1.ClusterStatus": { + "type": "object", + "properties": { + "conditions": { + "description": "Represents the latest available observations of a cluster's current state.", + "type": "array", + "items": { + "$ref": "#/definitions/io.kubesphere.kubesphere.pkg.apis.cluster.v1alpha1.ClusterCondition" + } + }, + "configz": { + "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", + "additionalProperties": { + "type": "boolean" + } + }, + "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", + "format": "int32" + }, + "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'.", + "type": "array", + "items": { + "type": "string" + } + } + } + }, + "io.kubesphere.kubesphere.pkg.apis.cluster.v1alpha1.Connection": { + "type": "object", + "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.", + "type": "string", + "format": "byte" + }, + "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", + "format": "int32" + }, + "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", + "format": "int32" + }, + "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\n kubeconfig and kubesphere apiserver endpoint provided\nConnectionTypeProxy means using kubesphere proxy, no kubeconfig\n or kubesphere apiserver endpoint required", + "type": "string" + } + } + }, + "io.kubesphere.kubesphere.pkg.apis.devops.v1alpha1.AuthConfig": { + "description": "AuthConfig is our abstraction of the Registry authorization information for whatever docker client we happen to be based on", + "type": "object", + "properties": { + "email": { + "type": "string" + }, + "password": { + "type": "string" + }, + "secretRef": { + "$ref": "#/definitions/io.k8s.api.core.v1.LocalObjectReference" + }, + "serverAddress": { + "type": "string" + }, + "username": { + "type": "string" + } + } + }, + "io.kubesphere.kubesphere.pkg.apis.devops.v1alpha1.CGroupLimits": { + "description": "CGroupLimits holds limits used to constrain container resources.", + "type": "object", + "required": [ + "memoryLimitBytes", + "cpuShares", + "cpuPeriod", + "cpuQuota", + "memorySwap", + "parent" + ], + "properties": { + "cpuPeriod": { + "type": "integer", + "format": "int64" + }, + "cpuQuota": { + "type": "integer", + "format": "int64" + }, + "cpuShares": { + "type": "integer", + "format": "int64" + }, + "memoryLimitBytes": { + "type": "integer", + "format": "int64" + }, + "memorySwap": { + "type": "integer", + "format": "int64" + }, + "parent": { + "type": "string" + } + } + }, + "io.kubesphere.kubesphere.pkg.apis.devops.v1alpha1.ContainerInfo": { + "type": "object", + "properties": { + "buildVolumes": { + "description": "BuildVolumes specifies a list of volumes to mount to container running the build.", + "type": "array", + "items": { + "type": "string" + } + }, + "builderImage": { + "description": "BaseImage are the images this template will use.", + "type": "string" + }, + "runtimeArtifacts": { + "type": "array", + "items": { + "$ref": "#/definitions/io.kubesphere.kubesphere.pkg.apis.devops.v1alpha1.VolumeSpec" + } + }, + "runtimeImage": { + "type": "string" + } + } + }, + "io.kubesphere.kubesphere.pkg.apis.devops.v1alpha1.DockerConfig": { + "description": "DockerConfig contains the configuration for a Docker connection.", + "type": "object", + "required": [ + "endPoint", + "certFile", + "keyFile", + "caFile", + "useTLS", + "tlsVerify" + ], + "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" + } + } + }, + "io.kubesphere.kubesphere.pkg.apis.devops.v1alpha1.EnvironmentSpec": { + "description": "EnvironmentSpec specifies a single environment variable.", + "type": "object", + "required": [ + "name", + "value" + ], + "properties": { + "name": { + "type": "string" + }, + "value": { + "type": "string" + } + } + }, + "io.kubesphere.kubesphere.pkg.apis.devops.v1alpha1.Parameter": { + "type": "object", + "properties": { + "defaultValue": { + "type": "string" + }, + "description": { + "type": "string" + }, + "key": { + "type": "string" + }, + "optValues": { + "type": "array", + "items": { + "type": "string" + } + }, + "required": { + "type": "boolean" + }, + "type": { + "type": "string" + }, + "value": { + "type": "string" + } + } + }, + "io.kubesphere.kubesphere.pkg.apis.devops.v1alpha1.ProxyConfig": { + "description": "ProxyConfig holds proxy configuration.", + "type": "object", + "properties": { + "httpProxy": { + "type": "string" + }, + "httpsProxy": { + "type": "string" + } + } + }, + "io.kubesphere.kubesphere.pkg.apis.devops.v1alpha1.S2iBinary": { + "description": "S2iBinary is the Schema for the s2ibinaries API", + "type": "object", + "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": { + "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta" + }, + "spec": { + "$ref": "#/definitions/io.kubesphere.kubesphere.pkg.apis.devops.v1alpha1.S2iBinarySpec" + }, + "status": { + "$ref": "#/definitions/io.kubesphere.kubesphere.pkg.apis.devops.v1alpha1.S2iBinaryStatus" + } + }, + "x-kubernetes-group-version-kind": [ + { + "group": "devops.kubesphere.io", + "kind": "S2iBinary", + "version": "v1alpha1" + } + ] + }, + "io.kubesphere.kubesphere.pkg.apis.devops.v1alpha1.S2iBinaryList": { + "description": "S2iBinaryList contains a list of S2iBinary", + "type": "object", + "required": [ + "items" + ], + "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" + }, + "items": { + "type": "array", + "items": { + "$ref": "#/definitions/io.kubesphere.kubesphere.pkg.apis.devops.v1alpha1.S2iBinary" + } + }, + "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": { + "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta" + } + }, + "x-kubernetes-group-version-kind": [ + { + "group": "devops.kubesphere.io", + "kind": "S2iBinaryList", + "version": "v1alpha1" + } + ] + }, + "io.kubesphere.kubesphere.pkg.apis.devops.v1alpha1.S2iBinarySpec": { + "description": "S2iBinarySpec defines the desired state of S2iBinary", + "type": "object", + "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", + "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Time" + } + } + }, + "io.kubesphere.kubesphere.pkg.apis.devops.v1alpha1.S2iBinaryStatus": { + "description": "S2iBinaryStatus defines the observed state of S2iBinary", + "type": "object", + "properties": { + "phase": { + "description": "Phase is status of S2iBinary . Possible value is \"Ready\",\"UnableToDownload\"", + "type": "string" + } + } + }, + "io.kubesphere.kubesphere.pkg.apis.devops.v1alpha1.S2iBuildResult": { + "type": "object", + "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.", + "type": "array", + "items": { + "type": "string" + } + }, + "imageSize": { + "description": "The size in bytes of the image", + "type": "integer", + "format": "int64" + } + } + }, + "io.kubesphere.kubesphere.pkg.apis.devops.v1alpha1.S2iBuildSource": { + "type": "object", + "properties": { + "binaryName": { + "description": "Binary file Name", + "type": "string" + }, + "binarySize": { + "description": "Binary file Size", + "type": "integer", + "format": "int64" + }, + "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" + } + } + }, + "io.kubesphere.kubesphere.pkg.apis.devops.v1alpha1.S2iBuilder": { + "description": "S2iBuilder is the Schema for the s2ibuilders API", + "type": "object", + "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": { + "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta" + }, + "spec": { + "$ref": "#/definitions/io.kubesphere.kubesphere.pkg.apis.devops.v1alpha1.S2iBuilderSpec" + }, + "status": { + "$ref": "#/definitions/io.kubesphere.kubesphere.pkg.apis.devops.v1alpha1.S2iBuilderStatus" + } + }, + "x-kubernetes-group-version-kind": [ + { + "group": "devops.kubesphere.io", + "kind": "S2iBuilder", + "version": "v1alpha1" + } + ] + }, + "io.kubesphere.kubesphere.pkg.apis.devops.v1alpha1.S2iBuilderList": { + "description": "S2iBuilderList contains a list of S2iBuilder", + "type": "object", + "required": [ + "items" + ], + "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" + }, + "items": { + "type": "array", + "items": { + "$ref": "#/definitions/io.kubesphere.kubesphere.pkg.apis.devops.v1alpha1.S2iBuilder" + } + }, + "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": { + "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta" + } + }, + "x-kubernetes-group-version-kind": [ + { + "group": "devops.kubesphere.io", + "kind": "S2iBuilderList", + "version": "v1alpha1" + } + ] + }, + "io.kubesphere.kubesphere.pkg.apis.devops.v1alpha1.S2iBuilderSpec": { + "description": "S2iBuilderSpec defines the desired state of S2iBuilder", + "type": "object", + "properties": { + "config": { + "description": "INSERT ADDITIONAL SPEC FIELDS - desired state of cluster Important: Run \"make\" to regenerate code after modifying this file", + "$ref": "#/definitions/io.kubesphere.kubesphere.pkg.apis.devops.v1alpha1.S2iConfig" + }, + "fromTemplate": { + "description": "FromTemplate define some inputs from user", + "$ref": "#/definitions/io.kubesphere.kubesphere.pkg.apis.devops.v1alpha1.UserDefineTemplate" + } + } + }, + "io.kubesphere.kubesphere.pkg.apis.devops.v1alpha1.S2iBuilderStatus": { + "description": "S2iBuilderStatus defines the observed state of S2iBuilder", + "type": "object", + "required": [ + "runCount" + ], + "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", + "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Time" + }, + "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", + "format": "int32" + } + } + }, + "io.kubesphere.kubesphere.pkg.apis.devops.v1alpha1.S2iBuilderTemplate": { + "description": "S2iBuilderTemplate is the Schema for the s2ibuildertemplates API", + "type": "object", + "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": { + "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta" + }, + "spec": { + "$ref": "#/definitions/io.kubesphere.kubesphere.pkg.apis.devops.v1alpha1.S2iBuilderTemplateSpec" + }, + "status": { + "$ref": "#/definitions/io.kubesphere.kubesphere.pkg.apis.devops.v1alpha1.S2iBuilderTemplateStatus" + } + }, + "x-kubernetes-group-version-kind": [ + { + "group": "devops.kubesphere.io", + "kind": "S2iBuilderTemplate", + "version": "v1alpha1" + } + ] + }, + "io.kubesphere.kubesphere.pkg.apis.devops.v1alpha1.S2iBuilderTemplateList": { + "description": "S2iBuilderTemplateList contains a list of S2iBuilderTemplate", + "type": "object", + "required": [ + "items" + ], + "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" + }, + "items": { + "type": "array", + "items": { + "$ref": "#/definitions/io.kubesphere.kubesphere.pkg.apis.devops.v1alpha1.S2iBuilderTemplate" + } + }, + "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": { + "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta" + } + }, + "x-kubernetes-group-version-kind": [ + { + "group": "devops.kubesphere.io", + "kind": "S2iBuilderTemplateList", + "version": "v1alpha1" + } + ] + }, + "io.kubesphere.kubesphere.pkg.apis.devops.v1alpha1.S2iBuilderTemplateSpec": { + "description": "S2iBuilderTemplateSpec defines the desired state of S2iBuilderTemplate", + "type": "object", + "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.", + "type": "array", + "items": { + "$ref": "#/definitions/io.kubesphere.kubesphere.pkg.apis.devops.v1alpha1.ContainerInfo" + } + }, + "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.", + "type": "array", + "items": { + "$ref": "#/definitions/io.kubesphere.kubesphere.pkg.apis.devops.v1alpha1.Parameter" + } + }, + "iconPath": { + "description": "IconPath is used for frontend display", + "type": "string" + }, + "version": { + "description": "Version of template", + "type": "string" + } + } + }, + "io.kubesphere.kubesphere.pkg.apis.devops.v1alpha1.S2iBuilderTemplateStatus": { + "description": "S2iBuilderTemplateStatus defines the observed state of S2iBuilderTemplate", + "type": "object" + }, + "io.kubesphere.kubesphere.pkg.apis.devops.v1alpha1.S2iConfig": { + "type": "object", + "required": [ + "imageName", + "sourceUrl" + ], + "properties": { + "addHost": { + "description": "AddHost Add a line to /etc/hosts for test purpose or private use in LAN. Its format is host:IP,muliple hosts can be added by using multiple --add-host", + "type": "array", + "items": { + "type": "string" + } + }, + "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.", + "type": "array", + "items": { + "type": "string" + } + }, + "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.", + "$ref": "#/definitions/io.kubesphere.kubesphere.pkg.apis.devops.v1alpha1.CGroupLimits" + }, + "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.", + "$ref": "#/definitions/io.kubesphere.kubesphere.pkg.apis.devops.v1alpha1.DockerConfig" + }, + "dockerNetworkMode": { + "description": "DockerNetworkMode is used to set the docker network setting to --net=container:\u003cid\u003e when the builder is invoked from a container.", + "type": "string" + }, + "dropCapabilities": { + "description": "DropCapabilities contains a list of capabilities to drop when executing containers", + "type": "array", + "items": { + "type": "string" + } + }, + "environment": { + "description": "Environment is a map of environment variables to be passed to the image.", + "type": "array", + "items": { + "$ref": "#/definitions/io.kubesphere.kubesphere.pkg.apis.devops.v1alpha1.EnvironmentSpec" + } + }, + "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", + "$ref": "#/definitions/io.k8s.api.core.v1.LocalObjectReference" + }, + "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", + "$ref": "#/definitions/io.kubesphere.kubesphere.pkg.apis.devops.v1alpha1.AuthConfig" + }, + "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.", + "type": "array", + "items": { + "$ref": "#/definitions/io.kubesphere.kubesphere.pkg.apis.devops.v1alpha1.VolumeSpec" + } + }, + "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": { + "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", + "additionalProperties": { + "type": "string" + } + }, + "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.", + "type": "array", + "items": { + "type": "string" + } + }, + "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", + "$ref": "#/definitions/io.kubesphere.kubesphere.pkg.apis.devops.v1alpha1.AuthConfig" + }, + "pushAuthentication": { + "description": "PullAuthentication holds the authentication information for pulling the Docker images from private repositories", + "$ref": "#/definitions/io.kubesphere.kubesphere.pkg.apis.devops.v1alpha1.AuthConfig" + }, + "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.", + "type": "array", + "items": { + "$ref": "#/definitions/io.kubesphere.kubesphere.pkg.apis.devops.v1alpha1.VolumeSpec" + } + }, + "runtimeAuthentication": { + "description": "RuntimeAuthentication holds the authentication information for pulling the runtime Docker images from private repositories.", + "$ref": "#/definitions/io.kubesphere.kubesphere.pkg.apis.devops.v1alpha1.AuthConfig" + }, + "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", + "$ref": "#/definitions/io.kubesphere.kubesphere.pkg.apis.devops.v1alpha1.ProxyConfig" + }, + "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.", + "type": "array", + "items": { + "type": "string" + } + }, + "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" + } + } + }, + "io.kubesphere.kubesphere.pkg.apis.devops.v1alpha1.S2iRun": { + "description": "S2iRun is the Schema for the s2iruns API", + "type": "object", + "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": { + "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta" + }, + "spec": { + "$ref": "#/definitions/io.kubesphere.kubesphere.pkg.apis.devops.v1alpha1.S2iRunSpec" + }, + "status": { + "$ref": "#/definitions/io.kubesphere.kubesphere.pkg.apis.devops.v1alpha1.S2iRunStatus" + } + }, + "x-kubernetes-group-version-kind": [ + { + "group": "devops.kubesphere.io", + "kind": "S2iRun", + "version": "v1alpha1" + } + ] + }, + "io.kubesphere.kubesphere.pkg.apis.devops.v1alpha1.S2iRunList": { + "description": "S2iRunList contains a list of S2iRun", + "type": "object", + "required": [ + "items" + ], + "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" + }, + "items": { + "type": "array", + "items": { + "$ref": "#/definitions/io.kubesphere.kubesphere.pkg.apis.devops.v1alpha1.S2iRun" + } + }, + "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": { + "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta" + } + }, + "x-kubernetes-group-version-kind": [ + { + "group": "devops.kubesphere.io", + "kind": "S2iRunList", + "version": "v1alpha1" + } + ] + }, + "io.kubesphere.kubesphere.pkg.apis.devops.v1alpha1.S2iRunSpec": { + "description": "S2iRunSpec defines the desired state of S2iRun", + "type": "object", + "required": [ + "builderName" + ], + "properties": { + "backoffLimit": { + "description": "BackoffLimit limits the restart count of each s2irun. Default is 0", + "type": "integer", + "format": "int32" + }, + "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", + "type": "integer", + "format": "int32" + } + } + }, + "io.kubesphere.kubesphere.pkg.apis.devops.v1alpha1.S2iRunStatus": { + "description": "S2iRunStatus defines the observed state of S2iRun", + "type": "object", + "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.", + "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Time" + }, + "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.", + "$ref": "#/definitions/io.kubesphere.kubesphere.pkg.apis.devops.v1alpha1.S2iBuildResult" + }, + "s2iBuildSource": { + "description": "S2i build source info.", + "$ref": "#/definitions/io.kubesphere.kubesphere.pkg.apis.devops.v1alpha1.S2iBuildSource" + }, + "startTime": { + "description": "StartTime represent when this run began", + "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Time" + } + } + }, + "io.kubesphere.kubesphere.pkg.apis.devops.v1alpha1.UserDefineTemplate": { + "type": "object", + "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", + "type": "array", + "items": { + "$ref": "#/definitions/io.kubesphere.kubesphere.pkg.apis.devops.v1alpha1.Parameter" + } + } + } + }, + "io.kubesphere.kubesphere.pkg.apis.devops.v1alpha1.VolumeSpec": { + "description": "VolumeSpec represents a single volume mount point.", + "type": "object", + "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" + } + } + }, + "io.kubesphere.kubesphere.pkg.apis.devops.v1alpha3.BitbucketServerSource": { + "type": "object", + "properties": { + "api_uri": { + "type": "string" + }, + "credential_id": { + "type": "string" + }, + "discover_branches": { + "type": "integer", + "format": "int32" + }, + "discover_pr_from_forks": { + "$ref": "#/definitions/io.kubesphere.kubesphere.pkg.apis.devops.v1alpha3.DiscoverPRFromForks" + }, + "discover_pr_from_origin": { + "type": "integer", + "format": "int32" + }, + "git_clone_option": { + "$ref": "#/definitions/io.kubesphere.kubesphere.pkg.apis.devops.v1alpha3.GitCloneOption" + }, + "owner": { + "type": "string" + }, + "regex_filter": { + "type": "string" + }, + "repo": { + "type": "string" + }, + "scm_id": { + "type": "string" + } + } + }, + "io.kubesphere.kubesphere.pkg.apis.devops.v1alpha3.DevOpsProject": { + "description": "DevOpsProject is the Schema for the devopsprojects API", + "type": "object", + "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": { + "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta" + }, + "spec": { + "$ref": "#/definitions/io.kubesphere.kubesphere.pkg.apis.devops.v1alpha3.DevOpsProjectSpec" + }, + "status": { + "$ref": "#/definitions/io.kubesphere.kubesphere.pkg.apis.devops.v1alpha3.DevOpsProjectStatus" + } + }, + "x-kubernetes-group-version-kind": [ + { + "group": "devops.kubesphere.io", + "kind": "DevOpsProject", + "version": "v1alpha3" + } + ] + }, + "io.kubesphere.kubesphere.pkg.apis.devops.v1alpha3.DevOpsProjectList": { + "description": "DevOpsProjectList contains a list of DevOpsProject", + "type": "object", + "required": [ + "items" + ], + "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" + }, + "items": { + "type": "array", + "items": { + "$ref": "#/definitions/io.kubesphere.kubesphere.pkg.apis.devops.v1alpha3.DevOpsProject" + } + }, + "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": { + "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta" + } + }, + "x-kubernetes-group-version-kind": [ + { + "group": "devops.kubesphere.io", + "kind": "DevOpsProjectList", + "version": "v1alpha3" + } + ] + }, + "io.kubesphere.kubesphere.pkg.apis.devops.v1alpha3.DevOpsProjectSpec": { + "description": "DevOpsProjectSpec defines the desired state of DevOpsProject", + "type": "object" + }, + "io.kubesphere.kubesphere.pkg.apis.devops.v1alpha3.DevOpsProjectStatus": { + "description": "DevOpsProjectStatus defines the observed state of DevOpsProject", + "type": "object", + "properties": { + "adminNamespace": { + "description": "INSERT ADDITIONAL STATUS FIELD - define observed state of cluster Important: Run \"make\" to regenerate code after modifying this file", + "type": "string" + } + } + }, + "io.kubesphere.kubesphere.pkg.apis.devops.v1alpha3.DiscarderProperty": { + "type": "object", + "properties": { + "days_to_keep": { + "type": "string" + }, + "num_to_keep": { + "type": "string" + } + } + }, + "io.kubesphere.kubesphere.pkg.apis.devops.v1alpha3.DiscoverPRFromForks": { + "type": "object", + "properties": { + "strategy": { + "type": "integer", + "format": "int32" + }, + "trust": { + "type": "integer", + "format": "int32" + } + } + }, + "io.kubesphere.kubesphere.pkg.apis.devops.v1alpha3.GitCloneOption": { + "type": "object", + "properties": { + "depth": { + "type": "integer", + "format": "int32" + }, + "shallow": { + "type": "boolean" + }, + "timeout": { + "type": "integer", + "format": "int32" + } + } + }, + "io.kubesphere.kubesphere.pkg.apis.devops.v1alpha3.GitSource": { + "type": "object", + "properties": { + "credential_id": { + "type": "string" + }, + "discover_branches": { + "type": "boolean" + }, + "git_clone_option": { + "$ref": "#/definitions/io.kubesphere.kubesphere.pkg.apis.devops.v1alpha3.GitCloneOption" + }, + "regex_filter": { + "type": "string" + }, + "scm_id": { + "type": "string" + }, + "url": { + "type": "string" + } + } + }, + "io.kubesphere.kubesphere.pkg.apis.devops.v1alpha3.GithubSource": { + "type": "object", + "properties": { + "api_uri": { + "type": "string" + }, + "credential_id": { + "type": "string" + }, + "discover_branches": { + "type": "integer", + "format": "int32" + }, + "discover_pr_from_forks": { + "$ref": "#/definitions/io.kubesphere.kubesphere.pkg.apis.devops.v1alpha3.DiscoverPRFromForks" + }, + "discover_pr_from_origin": { + "type": "integer", + "format": "int32" + }, + "git_clone_option": { + "$ref": "#/definitions/io.kubesphere.kubesphere.pkg.apis.devops.v1alpha3.GitCloneOption" + }, + "owner": { + "type": "string" + }, + "regex_filter": { + "type": "string" + }, + "repo": { + "type": "string" + }, + "scm_id": { + "type": "string" + } + } + }, + "io.kubesphere.kubesphere.pkg.apis.devops.v1alpha3.MultiBranchJobTrigger": { + "type": "object", + "properties": { + "create_action_job_to_trigger": { + "type": "string" + }, + "delete_action_job_to_trigger": { + "type": "string" + } + } + }, + "io.kubesphere.kubesphere.pkg.apis.devops.v1alpha3.MultiBranchPipeline": { + "type": "object", + "required": [ + "name", + "source_type", + "script_path" + ], + "properties": { + "bitbucket_server_source": { + "$ref": "#/definitions/io.kubesphere.kubesphere.pkg.apis.devops.v1alpha3.BitbucketServerSource" + }, + "description": { + "type": "string" + }, + "discarder": { + "$ref": "#/definitions/io.kubesphere.kubesphere.pkg.apis.devops.v1alpha3.DiscarderProperty" + }, + "git_source": { + "$ref": "#/definitions/io.kubesphere.kubesphere.pkg.apis.devops.v1alpha3.GitSource" + }, + "github_source": { + "$ref": "#/definitions/io.kubesphere.kubesphere.pkg.apis.devops.v1alpha3.GithubSource" + }, + "multibranch_job_trigger": { + "$ref": "#/definitions/io.kubesphere.kubesphere.pkg.apis.devops.v1alpha3.MultiBranchJobTrigger" + }, + "name": { + "type": "string" + }, + "script_path": { + "type": "string" + }, + "single_svn_source": { + "$ref": "#/definitions/io.kubesphere.kubesphere.pkg.apis.devops.v1alpha3.SingleSvnSource" + }, + "source_type": { + "type": "string" + }, + "svn_source": { + "$ref": "#/definitions/io.kubesphere.kubesphere.pkg.apis.devops.v1alpha3.SvnSource" + }, + "timer_trigger": { + "$ref": "#/definitions/io.kubesphere.kubesphere.pkg.apis.devops.v1alpha3.TimerTrigger" + } + } + }, + "io.kubesphere.kubesphere.pkg.apis.devops.v1alpha3.NoScmPipeline": { + "type": "object", + "required": [ + "name" + ], + "properties": { + "description": { + "type": "string" + }, + "disable_concurrent": { + "type": "boolean" + }, + "discarder": { + "$ref": "#/definitions/io.kubesphere.kubesphere.pkg.apis.devops.v1alpha3.DiscarderProperty" + }, + "jenkinsfile": { + "type": "string" + }, + "name": { + "type": "string" + }, + "parameters": { + "type": "array", + "items": { + "$ref": "#/definitions/io.kubesphere.kubesphere.pkg.apis.devops.v1alpha3.Parameter" + } + }, + "remote_trigger": { + "$ref": "#/definitions/io.kubesphere.kubesphere.pkg.apis.devops.v1alpha3.RemoteTrigger" + }, + "timer_trigger": { + "$ref": "#/definitions/io.kubesphere.kubesphere.pkg.apis.devops.v1alpha3.TimerTrigger" + } + } + }, + "io.kubesphere.kubesphere.pkg.apis.devops.v1alpha3.Parameter": { + "type": "object", + "required": [ + "name", + "type" + ], + "properties": { + "default_value": { + "type": "string" + }, + "description": { + "type": "string" + }, + "name": { + "type": "string" + }, + "type": { + "type": "string" + } + } + }, + "io.kubesphere.kubesphere.pkg.apis.devops.v1alpha3.Pipeline": { + "description": "Pipeline is the Schema for the pipelines API", + "type": "object", + "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": { + "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta" + }, + "spec": { + "$ref": "#/definitions/io.kubesphere.kubesphere.pkg.apis.devops.v1alpha3.PipelineSpec" + }, + "status": { + "$ref": "#/definitions/io.kubesphere.kubesphere.pkg.apis.devops.v1alpha3.PipelineStatus" + } + }, + "x-kubernetes-group-version-kind": [ + { + "group": "devops.kubesphere.io", + "kind": "Pipeline", + "version": "v1alpha3" + } + ] + }, + "io.kubesphere.kubesphere.pkg.apis.devops.v1alpha3.PipelineList": { + "description": "PipelineList contains a list of Pipeline", + "type": "object", + "required": [ + "items" + ], + "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" + }, + "items": { + "type": "array", + "items": { + "$ref": "#/definitions/io.kubesphere.kubesphere.pkg.apis.devops.v1alpha3.Pipeline" + } + }, + "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": { + "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta" + } + }, + "x-kubernetes-group-version-kind": [ + { + "group": "devops.kubesphere.io", + "kind": "PipelineList", + "version": "v1alpha3" + } + ] + }, + "io.kubesphere.kubesphere.pkg.apis.devops.v1alpha3.PipelineSpec": { + "description": "PipelineSpec defines the desired state of Pipeline", + "type": "object", + "required": [ + "type" + ], + "properties": { + "multi_branch_pipeline": { + "$ref": "#/definitions/io.kubesphere.kubesphere.pkg.apis.devops.v1alpha3.MultiBranchPipeline" + }, + "pipeline": { + "$ref": "#/definitions/io.kubesphere.kubesphere.pkg.apis.devops.v1alpha3.NoScmPipeline" + }, + "type": { + "description": "INSERT ADDITIONAL SPEC FIELDS - desired state of cluster Important: Run \"make\" to regenerate code after modifying this file", + "type": "string" + } + } + }, + "io.kubesphere.kubesphere.pkg.apis.devops.v1alpha3.PipelineStatus": { + "description": "PipelineStatus defines the observed state of Pipeline", + "type": "object" + }, + "io.kubesphere.kubesphere.pkg.apis.devops.v1alpha3.RemoteTrigger": { + "type": "object", + "properties": { + "token": { + "type": "string" + } + } + }, + "io.kubesphere.kubesphere.pkg.apis.devops.v1alpha3.SingleSvnSource": { + "type": "object", + "properties": { + "credential_id": { + "type": "string" + }, + "remote": { + "type": "string" + }, + "scm_id": { + "type": "string" + } + } + }, + "io.kubesphere.kubesphere.pkg.apis.devops.v1alpha3.SvnSource": { + "type": "object", + "properties": { + "credential_id": { + "type": "string" + }, + "excludes": { + "type": "string" + }, + "includes": { + "type": "string" + }, + "remote": { + "type": "string" + }, + "scm_id": { + "type": "string" + } + } + }, + "io.kubesphere.kubesphere.pkg.apis.devops.v1alpha3.TimerTrigger": { + "type": "object", + "properties": { + "cron": { + "description": "user in no scm job", + "type": "string" + }, + "interval": { + "description": "use in multi-branch job", + "type": "string" + } + } + }, + "io.kubesphere.kubesphere.pkg.apis.network.v1alpha1.DNS": { + "description": "DNS contains values interesting for DNS resolvers", + "type": "object", + "properties": { + "domain": { + "type": "string" + }, + "nameservers": { + "type": "array", + "items": { + "type": "string" + } + }, + "options": { + "type": "array", + "items": { + "type": "string" + } + }, + "search": { + "type": "array", + "items": { + "type": "string" + } + } + } + }, + "io.kubesphere.kubesphere.pkg.apis.network.v1alpha1.IPPool": { + "type": "object", + "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": { + "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta" + }, + "spec": { + "$ref": "#/definitions/io.kubesphere.kubesphere.pkg.apis.network.v1alpha1.IPPoolSpec" + }, + "status": { + "$ref": "#/definitions/io.kubesphere.kubesphere.pkg.apis.network.v1alpha1.IPPoolStatus" + } + }, + "x-kubernetes-group-version-kind": [ + { + "group": "network.kubesphere.io", + "kind": "IPPool", + "version": "v1alpha1" + } + ] + }, + "io.kubesphere.kubesphere.pkg.apis.network.v1alpha1.IPPoolList": { + "type": "object", + "required": [ + "items" + ], + "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" + }, + "items": { + "type": "array", + "items": { + "$ref": "#/definitions/io.kubesphere.kubesphere.pkg.apis.network.v1alpha1.IPPool" + } + }, + "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": { + "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta" + } + }, + "x-kubernetes-group-version-kind": [ + { + "group": "network.kubesphere.io", + "kind": "IPPoolList", + "version": "v1alpha1" + } + ] + }, + "io.kubesphere.kubesphere.pkg.apis.network.v1alpha1.IPPoolSpec": { + "type": "object", + "required": [ + "type", + "cidr" + ], + "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", + "format": "int32" + }, + "cidr": { + "description": "The pool CIDR.", + "type": "string" + }, + "disabled": { + "description": "When disabled is true, IPAM will not assign addresses from this pool.", + "type": "boolean" + }, + "dns": { + "$ref": "#/definitions/io.kubesphere.kubesphere.pkg.apis.network.v1alpha1.DNS" + }, + "gateway": { + "type": "string" + }, + "namespace": { + "type": "string" + }, + "rangeEnd": { + "description": "The last ip, inclusive", + "type": "string" + }, + "rangeStart": { + "description": "The first ip, inclusive", + "type": "string" + }, + "routes": { + "type": "array", + "items": { + "$ref": "#/definitions/io.kubesphere.kubesphere.pkg.apis.network.v1alpha1.Route" + } + }, + "type": { + "type": "string" + }, + "vlanConfig": { + "$ref": "#/definitions/io.kubesphere.kubesphere.pkg.apis.network.v1alpha1.VLANConfig" + }, + "workspace": { + "type": "string" + } + } + }, + "io.kubesphere.kubesphere.pkg.apis.network.v1alpha1.IPPoolStatus": { + "type": "object", + "properties": { + "allocations": { + "type": "integer", + "format": "int32" + }, + "capacity": { + "type": "integer", + "format": "int32" + }, + "reserved": { + "type": "integer", + "format": "int32" + }, + "synced": { + "type": "boolean" + }, + "unallocated": { + "type": "integer", + "format": "int32" + } + } + }, + "io.kubesphere.kubesphere.pkg.apis.network.v1alpha1.NamespaceNetworkPolicy": { + "description": "NamespaceNetworkPolicy is the Schema for the namespacenetworkpolicies API", + "type": "object", + "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": { + "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta" + }, + "spec": { + "$ref": "#/definitions/io.kubesphere.kubesphere.pkg.apis.network.v1alpha1.NamespaceNetworkPolicySpec" + } + }, + "x-kubernetes-group-version-kind": [ + { + "group": "network.kubesphere.io", + "kind": "NamespaceNetworkPolicy", + "version": "v1alpha1" + } + ] + }, + "io.kubesphere.kubesphere.pkg.apis.network.v1alpha1.NamespaceNetworkPolicyList": { + "description": "NamespaceNetworkPolicyList contains a list of NamespaceNetworkPolicy", + "type": "object", + "required": [ + "items" + ], + "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" + }, + "items": { + "type": "array", + "items": { + "$ref": "#/definitions/io.kubesphere.kubesphere.pkg.apis.network.v1alpha1.NamespaceNetworkPolicy" + } + }, + "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": { + "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta" + } + }, + "x-kubernetes-group-version-kind": [ + { + "group": "network.kubesphere.io", + "kind": "NamespaceNetworkPolicyList", + "version": "v1alpha1" + } + ] + }, + "io.kubesphere.kubesphere.pkg.apis.network.v1alpha1.NamespaceNetworkPolicySpec": { + "description": "NamespaceNetworkPolicySpec provides the specification of a NamespaceNetworkPolicy", + "type": "object", + "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", + "type": "array", + "items": { + "$ref": "#/definitions/io.kubesphere.kubesphere.pkg.apis.network.v1alpha1.NetworkPolicyEgressRule" + } + }, + "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)", + "type": "array", + "items": { + "$ref": "#/definitions/io.kubesphere.kubesphere.pkg.apis.network.v1alpha1.NetworkPolicyIngressRule" + } + }, + "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", + "type": "array", + "items": { + "type": "string" + } + } + } + }, + "io.kubesphere.kubesphere.pkg.apis.network.v1alpha1.NamespaceSelector": { + "type": "object", + "required": [ + "name" + ], + "properties": { + "name": { + "type": "string" + } + } + }, + "io.kubesphere.kubesphere.pkg.apis.network.v1alpha1.NetworkPolicyEgressRule": { + "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", + "type": "object", + "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.", + "type": "array", + "items": { + "$ref": "#/definitions/io.k8s.api.networking.v1.NetworkPolicyPort" + } + }, + "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.", + "type": "array", + "items": { + "$ref": "#/definitions/io.kubesphere.kubesphere.pkg.apis.network.v1alpha1.NetworkPolicyPeer" + } + } + } + }, + "io.kubesphere.kubesphere.pkg.apis.network.v1alpha1.NetworkPolicyIngressRule": { + "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.", + "type": "object", + "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.", + "type": "array", + "items": { + "$ref": "#/definitions/io.kubesphere.kubesphere.pkg.apis.network.v1alpha1.NetworkPolicyPeer" + } + }, + "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.", + "type": "array", + "items": { + "$ref": "#/definitions/io.k8s.api.networking.v1.NetworkPolicyPort" + } + } + } + }, + "io.kubesphere.kubesphere.pkg.apis.network.v1alpha1.NetworkPolicyPeer": { + "description": "NetworkPolicyPeer describes a peer to allow traffic from. Only certain combinations of fields are allowed", + "type": "object", + "properties": { + "ipBlock": { + "description": "IPBlock defines policy on a particular IPBlock. If this field is set then neither of the other fields can be.", + "$ref": "#/definitions/io.k8s.api.networking.v1.IPBlock" + }, + "namespace": { + "$ref": "#/definitions/io.kubesphere.kubesphere.pkg.apis.network.v1alpha1.NamespaceSelector" + }, + "service": { + "$ref": "#/definitions/io.kubesphere.kubesphere.pkg.apis.network.v1alpha1.ServiceSelector" + } + } + }, + "io.kubesphere.kubesphere.pkg.apis.network.v1alpha1.Route": { + "type": "object", + "properties": { + "dst": { + "type": "string" + }, + "gateway": { + "type": "string" + } + } + }, + "io.kubesphere.kubesphere.pkg.apis.network.v1alpha1.ServiceSelector": { + "type": "object", + "required": [ + "name", + "namespace" + ], + "properties": { + "name": { + "type": "string" + }, + "namespace": { + "type": "string" + } + } + }, + "io.kubesphere.kubesphere.pkg.apis.network.v1alpha1.VLANConfig": { + "type": "object", + "required": [ + "vlanId", + "master" + ], + "properties": { + "master": { + "type": "string" + }, + "vlanId": { + "type": "integer", + "format": "int64" + } + } + }, + "io.kubesphere.kubesphere.pkg.apis.tenant.v1alpha1.Workspace": { + "description": "Workspace is the Schema for the workspaces API", + "type": "object", + "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": { + "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta" + }, + "spec": { + "$ref": "#/definitions/io.kubesphere.kubesphere.pkg.apis.tenant.v1alpha1.WorkspaceSpec" + }, + "status": { + "$ref": "#/definitions/io.kubesphere.kubesphere.pkg.apis.tenant.v1alpha1.WorkspaceStatus" + } + }, + "x-kubernetes-group-version-kind": [ + { + "group": "tenant.kubesphere.io", + "kind": "Workspace", + "version": "v1alpha1" + } + ] + }, + "io.kubesphere.kubesphere.pkg.apis.tenant.v1alpha1.WorkspaceList": { + "description": "WorkspaceList contains a list of Workspace", + "type": "object", + "required": [ + "items" + ], + "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" + }, + "items": { + "type": "array", + "items": { + "$ref": "#/definitions/io.kubesphere.kubesphere.pkg.apis.tenant.v1alpha1.Workspace" + } + }, + "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": { + "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta" + } + }, + "x-kubernetes-group-version-kind": [ + { + "group": "tenant.kubesphere.io", + "kind": "WorkspaceList", + "version": "v1alpha1" + } + ] + }, + "io.kubesphere.kubesphere.pkg.apis.tenant.v1alpha1.WorkspaceSpec": { + "description": "WorkspaceSpec defines the desired state of Workspace", + "type": "object", + "properties": { + "manager": { + "type": "string" + }, + "networkIsolation": { + "type": "boolean" + } + } + }, + "io.kubesphere.kubesphere.pkg.apis.tenant.v1alpha1.WorkspaceStatus": { + "description": "WorkspaceStatus defines the observed state of Workspace", + "type": "object" + } + } +} \ No newline at end of file diff --git a/static/json/kubesphere-3.1.json b/static/json/kubesphere-3.1.json new file mode 100644 index 000000000..9d9ac2491 --- /dev/null +++ b/static/json/kubesphere-3.1.json @@ -0,0 +1,22527 @@ +{ + "swagger": "2.0", + "info": { + "description": "KubeSphere OpenAPI", + "title": "KubeSphere", + "contact": { + "name": "KubeSphere", + "url": "https://kubesphere.io/", + "email": "kubesphere@gmail.com" + }, + "license": { + "name": "Apache 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0.html" + }, + "version": "v3.1.0", + "x-logo": { + "url": "/images/ApiDocs.svg" + }, + "x-taggroups": [ + { + "name": "Authentication", + "tags": [ + "Authentication" + ] + }, + { + "name": "Identity Management", + "tags": [ + "User" + ] + }, + { + "name": "Access Management", + "tags": [ + "Cluster Member", + "Workspace Member", + "DevOps Project Member", + "Namespace Member", + "Global Role", + "Cluster Role", + "Workspace Role", + "DevOps Project Role", + "Namespace Role" + ] + }, + { + "name": "Multi-tenancy", + "tags": [ + "Workspace", + "Namespace", + "User's Resources" + ] + }, + { + "name": "Multi-cluster", + "tags": [ + "Multi-cluster" + ] + }, + { + "name": "Resources", + "tags": [ + "Cluster Resources", + "Namespace Resources" + ] + }, + { + "name": "App Store", + "tags": [ + "App Instance", + "App Template", + "Category", + "Attachment", + "Repository", + "App Management" + ] + }, + { + "name": "Other", + "tags": [ + "Docker Registry", + "Git", + "Toolbox", + "Terminal" + ] + }, + { + "name": "DevOps", + "tags": [ + "DevOps Project", + "DevOps Credential", + "DevOps Pipeline", + "DevOps Project Member", + "DevOps Webhook", + "DevOps Jenkinsfile", + "DevOps Scm", + "Jenkins" + ] + }, + { + "name": "Monitoring", + "tags": [ + "Cluster Metrics", + "Node Metrics", + "Namespace Metrics", + "Workload Metrics", + "Pod Metrics", + "Container Metrics", + "Workspace Metrics", + "Component Metrics", + "Component Status" + ] + }, + { + "name": "Logging", + "tags": [ + "Log Query" + ] + }, + { + "name": "Events", + "tags": [ + "Events Query" + ] + }, + { + "name": "Auditing", + "tags": [ + "Auditing Query" + ] + }, + { + "name": "Network", + "tags": [ + "Network Topology" + ] + } + ] + }, + "paths": { + "/kapis/cluster.kubesphere.io/v1alpha1/clusters/validation": { + "post": { + "produces": [ + "application/json" + ], + "tags": [ + "Multi-cluster" + ], + "operationId": "validateCluster", + "parameters": [ + { + "description": "cluster specification", + "name": "cluster", + "in": "body", + "required": true + } + ], + "responses": { + "200": { + "description": "ok" + } + } + } + }, + "/kapis/cluster.kubesphere.io/v1alpha1/clusters/{cluster}/agent/deployment": { + "get": { + "produces": [ + "application/json" + ], + "tags": [ + "Multi-cluster" + ], + "summary": "Return deployment yaml for cluster agent.", + "operationId": "generateAgentDeployment", + "parameters": [ + { + "type": "string", + "description": "Name of the cluster.", + "name": "cluster", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "ok" + } + } + } + }, + "/kapis/devops.kubesphere.io/v1alpha2/crumbissuer": { + "get": { + "produces": [ + "application/json" + ], + "tags": [ + "DevOps Pipeline" + ], + "summary": "Get crumb issuer. A CrumbIssuer represents an algorithm to generate a nonce value, known as a crumb, to counter cross site request forgery exploits. Crumbs are typically hashes incorporating information that uniquely identifies an agent that sends a request, along with a guarded secret so that the crumb value cannot be forged by a third party.", + "operationId": "GetCrumb", + "responses": { + "200": { + "description": "ok", + "schema": { + "$ref": "#/definitions/devops.Crumb" + } + } + } + } + }, + "/kapis/devops.kubesphere.io/v1alpha2/devops/{devops}/checkCron": { + "post": { + "produces": [ + "application/json", + "charset=utf-8" + ], + "tags": [ + "DevOps Pipeline" + ], + "summary": "Check cron script compile.", + "operationId": "CheckCron", + "parameters": [ + { + "type": "string", + "description": "DevOps project's ID, e.g. project-RRRRAzLBlLEm", + "name": "devops", + "in": "path", + "required": true + }, + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/devops.CronData" + } + } + ], + "responses": { + "200": { + "description": "ok", + "schema": { + "$ref": "#/definitions/devops.CheckCronRes" + } + } + } + } + }, + "/kapis/devops.kubesphere.io/v1alpha2/devops/{devops}/credentials/{credential}/usage": { + "get": { + "produces": [ + "application/json" + ], + "tags": [ + "DevOps Credential" + ], + "summary": "Get the specified credential usage of the DevOps project", + "operationId": "GetProjectCredentialUsage", + "parameters": [ + { + "type": "string", + "description": "DevOps project's ID, e.g. project-RRRRAzLBlLEm", + "name": "devops", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "credential's ID, e.g. dockerhub-id", + "name": "credential", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "ok", + "schema": { + "$ref": "#/definitions/devops.Credential" + } + } + } + } + }, + "/kapis/devops.kubesphere.io/v1alpha2/devops/{devops}/jenkins/{path}": { + "get": { + "produces": [ + "application/json" + ], + "tags": [ + "Jenkins" + ], + "operationId": "func2", + "parameters": [ + { + "pattern": "*", + "type": "string", + "description": "Path stands for any suffix path.", + "name": "path", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "DevOps project's ID, e.g. project-RRRRAzLBlLEm", + "name": "devops", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "ok" + } + } + } + }, + "/kapis/devops.kubesphere.io/v1alpha2/devops/{devops}/pipelines/{pipeline}": { + "get": { + "produces": [ + "application/json" + ], + "tags": [ + "DevOps Pipeline" + ], + "summary": "Get the specified pipeline of the DevOps project", + "operationId": "GetPipeline", + "parameters": [ + { + "type": "string", + "description": "DevOps project's ID, e.g. project-RRRRAzLBlLEm", + "name": "devops", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "the name of the CI/CD pipeline", + "name": "pipeline", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "ok", + "schema": { + "$ref": "#/definitions/devops.Pipeline" + } + } + } + } + }, + "/kapis/devops.kubesphere.io/v1alpha2/devops/{devops}/pipelines/{pipeline}/branches": { + "get": { + "produces": [ + "application/json" + ], + "tags": [ + "DevOps Pipeline" + ], + "summary": "(MultiBranchesPipeline) Get all branches in the specified pipeline.", + "operationId": "GetPipelineBranch", + "parameters": [ + { + "type": "string", + "description": "DevOps project's ID, e.g. project-RRRRAzLBlLEm", + "name": "devops", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "the name of the CI/CD pipeline", + "name": "pipeline", + "in": "path", + "required": true + }, + { + "type": "string", + "format": "filter=%s", + "description": "filter remote scm. e.g. origin", + "name": "filter", + "in": "query" + }, + { + "type": "string", + "format": "start=%d", + "default": "start=0", + "description": "the count of branches start.", + "name": "start", + "in": "query" + }, + { + "type": "string", + "format": "limit=%d", + "default": "limit=100", + "description": "the count of branches limit.", + "name": "limit", + "in": "query" + } + ], + "responses": { + "200": { + "description": "ok", + "schema": { + "type": "array", + "items": { + "$ref": "#/definitions/devops.PipelineBranch" + } + } + } + } + } + }, + "/kapis/devops.kubesphere.io/v1alpha2/devops/{devops}/pipelines/{pipeline}/branches/{branch}": { + "get": { + "produces": [ + "application/json" + ], + "tags": [ + "DevOps Pipeline" + ], + "summary": "(MultiBranchesPipeline) Get the specified branch pipeline of the DevOps project", + "operationId": "GetBranchPipeline", + "parameters": [ + { + "type": "string", + "description": "the name of devops project", + "name": "devops", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "the name of the CI/CD pipeline", + "name": "pipeline", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "the name of branch, same as repository branch", + "name": "branch", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "ok", + "schema": { + "$ref": "#/definitions/devops.BranchPipeline" + } + } + } + } + }, + "/kapis/devops.kubesphere.io/v1alpha2/devops/{devops}/pipelines/{pipeline}/branches/{branch}/runs": { + "post": { + "produces": [ + "application/json" + ], + "tags": [ + "DevOps Pipeline" + ], + "summary": "(MultiBranchesPipeline) Run the specified pipeline of the DevOps project.", + "operationId": "RunBranchPipeline", + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/devops.RunPayload" + } + }, + { + "type": "string", + "description": "DevOps project's ID, e.g. project-RRRRAzLBlLEm", + "name": "devops", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "the name of the CI/CD pipeline", + "name": "pipeline", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "the name of branch, same as repository branch.", + "name": "branch", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "ok", + "schema": { + "$ref": "#/definitions/devops.RunPipeline" + } + } + } + } + }, + "/kapis/devops.kubesphere.io/v1alpha2/devops/{devops}/pipelines/{pipeline}/branches/{branch}/runs/{run}": { + "get": { + "produces": [ + "application/json" + ], + "tags": [ + "DevOps Pipeline" + ], + "summary": "(MultiBranchesPipeline) Get details in the specified pipeline activity.", + "operationId": "GetBranchPipelineRun", + "parameters": [ + { + "type": "string", + "description": "DevOps project's ID, e.g. project-RRRRAzLBlLEm", + "name": "devops", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "the name of the CI/CD pipeline", + "name": "pipeline", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "the name of branch, same as repository branch.", + "name": "branch", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "pipeline run id, the unique id for a pipeline once build.", + "name": "run", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "ok", + "schema": { + "$ref": "#/definitions/devops.PipelineRun" + } + } + } + } + }, + "/kapis/devops.kubesphere.io/v1alpha2/devops/{devops}/pipelines/{pipeline}/branches/{branch}/runs/{run}/artifacts": { + "get": { + "produces": [ + "application/json" + ], + "tags": [ + "DevOps Pipeline" + ], + "summary": "(MultiBranchesPipeline) Get all artifacts generated from the specified run of the pipeline branch.", + "operationId": "GetBranchArtifacts", + "parameters": [ + { + "type": "string", + "description": "DevOps project's ID, e.g. project-RRRRAzLBlLEm", + "name": "devops", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "the name of the CI/CD pipeline", + "name": "pipeline", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "the name of branch, same as repository branch.", + "name": "branch", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "pipeline run ID, the unique ID for a pipeline once build.", + "name": "run", + "in": "path", + "required": true + }, + { + "type": "string", + "format": "start=%d", + "description": "the item number that the search starts from.", + "name": "start", + "in": "query" + }, + { + "type": "string", + "format": "limit=%d", + "description": "the limit item count of the search.", + "name": "limit", + "in": "query" + } + ], + "responses": { + "200": { + "description": "The filed of \"Url\" in response can download artifacts", + "schema": { + "type": "array", + "items": { + "$ref": "#/definitions/devops.Artifacts" + } + } + } + } + } + }, + "/kapis/devops.kubesphere.io/v1alpha2/devops/{devops}/pipelines/{pipeline}/branches/{branch}/runs/{run}/log": { + "get": { + "produces": [ + "text/plain; charset=utf-8" + ], + "tags": [ + "DevOps Pipeline" + ], + "summary": "(MultiBranchesPipeline) Get run logs of the specified pipeline activity.", + "operationId": "GetBranchRunLog", + "parameters": [ + { + "type": "string", + "description": "DevOps project's ID, e.g. project-RRRRAzLBlLEm", + "name": "devops", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "the name of the CI/CD pipeline", + "name": "pipeline", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "the name of branch, same as repository branch.", + "name": "branch", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "pipeline run ID, the unique ID for a pipeline once build.", + "name": "run", + "in": "path", + "required": true + }, + { + "type": "string", + "format": "start=%d", + "default": "start=0", + "description": "the item number that the search starts from.", + "name": "start", + "in": "query" + } + ], + "responses": { + "200": { + "description": "OK" + } + } + } + }, + "/kapis/devops.kubesphere.io/v1alpha2/devops/{devops}/pipelines/{pipeline}/branches/{branch}/runs/{run}/nodes": { + "get": { + "produces": [ + "application/json" + ], + "tags": [ + "DevOps Pipeline" + ], + "summary": "(MultiBranchesPipeline) Get run nodes.", + "operationId": "GetBranchPipelineRunNodes", + "parameters": [ + { + "type": "string", + "description": "DevOps project's ID, e.g. project-RRRRAzLBlLEm", + "name": "devops", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "the name of the CI/CD pipeline", + "name": "pipeline", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "the name of branch, same as repository branch.", + "name": "branch", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "pipeline run id, the unique id for a pipeline once build.", + "name": "run", + "in": "path", + "required": true + }, + { + "type": "string", + "format": "limit=%d", + "default": "limit=10000", + "description": "the limit item count of the search.", + "name": "limit", + "in": "query" + } + ], + "responses": { + "200": { + "description": "ok", + "schema": { + "type": "array", + "items": { + "$ref": "#/definitions/devops.BranchPipelineRunNodes" + } + } + } + } + } + }, + "/kapis/devops.kubesphere.io/v1alpha2/devops/{devops}/pipelines/{pipeline}/branches/{branch}/runs/{run}/nodes/{node}/steps": { + "get": { + "produces": [ + "application/json" + ], + "tags": [ + "DevOps Pipeline" + ], + "summary": "(MultiBranchesPipeline) Get all steps in the specified node.", + "operationId": "GetBranchNodeSteps", + "parameters": [ + { + "type": "string", + "description": "the name of devops project", + "name": "devops", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "the name of the CI/CD pipeline", + "name": "pipeline", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "the name of branch, same as repository branch.", + "name": "branch", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "pipeline run ID, the unique ID for a pipeline once build.", + "name": "run", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "pipeline node ID, the stage in pipeline.", + "name": "node", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "ok", + "schema": { + "type": "array", + "items": { + "$ref": "#/definitions/devops.NodeSteps" + } + } + } + } + } + }, + "/kapis/devops.kubesphere.io/v1alpha2/devops/{devops}/pipelines/{pipeline}/branches/{branch}/runs/{run}/nodes/{node}/steps/{step}": { + "post": { + "produces": [ + "text/plain; charset=utf-8" + ], + "tags": [ + "DevOps Pipeline" + ], + "summary": "(MultiBranchesPipeline) Proceed or Break the paused pipeline which waiting for user input.", + "operationId": "SubmitBranchInputStep", + "parameters": [ + { + "type": "string", + "description": "DevOps project's ID, e.g. project-RRRRAzLBlLEm", + "name": "devops", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "the name of the CI/CD pipeline", + "name": "pipeline", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "the name of branch, same as repository branch.", + "name": "branch", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "pipeline run ID, the unique ID for a pipeline once build.", + "name": "run", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "pipeline node ID, the stage in pipeline.", + "name": "node", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "pipeline step ID, the step in pipeline.", + "name": "step", + "in": "path", + "required": true + }, + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/devops.CheckPlayload" + } + } + ], + "responses": { + "200": { + "description": "OK" + } + } + } + }, + "/kapis/devops.kubesphere.io/v1alpha2/devops/{devops}/pipelines/{pipeline}/branches/{branch}/runs/{run}/nodes/{node}/steps/{step}/log": { + "get": { + "produces": [ + "text/plain; charset=utf-8" + ], + "tags": [ + "DevOps Pipeline" + ], + "summary": "(MultiBranchesPipeline) Get the step logs in the specified pipeline activity.", + "operationId": "GetBranchStepLog", + "parameters": [ + { + "type": "string", + "description": "DevOps project's ID, e.g. project-RRRRAzLBlLEm", + "name": "devops", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "the name of the CI/CD pipeline", + "name": "pipeline", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "the name of branch, same as repository branch.", + "name": "branch", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "pipeline run id, the unique id for a pipeline once build.", + "name": "run", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "pipeline node id, the stage in pipeline.", + "name": "node", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "pipeline step id, the step in pipeline.", + "name": "step", + "in": "path", + "required": true + }, + { + "type": "string", + "format": "start=%d", + "default": "start=0", + "description": "the item number that the search starts from.", + "name": "start", + "in": "query" + } + ], + "responses": { + "200": { + "description": "OK" + } + } + } + }, + "/kapis/devops.kubesphere.io/v1alpha2/devops/{devops}/pipelines/{pipeline}/branches/{branch}/runs/{run}/nodesdetail": { + "get": { + "produces": [ + "application/json" + ], + "tags": [ + "DevOps Pipeline" + ], + "summary": "(MultiBranchesPipeline) Get steps details in an activity node. For a node, the steps which is defined inside the node.", + "operationId": "GetBranchNodesDetail", + "parameters": [ + { + "type": "string", + "description": "DevOps project's ID, e.g. project-RRRRAzLBlLEm", + "name": "devops", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "the name of the CI/CD pipeline", + "name": "pipeline", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "the name of branch, same as repository branch.", + "name": "branch", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "pipeline run ID, the unique ID for a pipeline once build.", + "name": "run", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "ok", + "schema": { + "type": "array", + "items": { + "$ref": "#/definitions/devops.NodesDetail" + } + } + } + } + } + }, + "/kapis/devops.kubesphere.io/v1alpha2/devops/{devops}/pipelines/{pipeline}/branches/{branch}/runs/{run}/replay": { + "post": { + "produces": [ + "application/json" + ], + "tags": [ + "DevOps Pipeline" + ], + "summary": "(MultiBranchesPipeline) Replay the specified pipeline of the DevOps project", + "operationId": "ReplayBranchPipeline", + "parameters": [ + { + "type": "string", + "description": "DevOps project's ID, e.g. project-RRRRAzLBlLEm", + "name": "devops", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "the name of the CI/CD pipeline", + "name": "pipeline", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "the name of branch, same as repository branch.", + "name": "branch", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "pipeline run ID, the unique ID for a pipeline once build.", + "name": "run", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "ok", + "schema": { + "$ref": "#/definitions/devops.ReplayPipeline" + } + } + } + } + }, + "/kapis/devops.kubesphere.io/v1alpha2/devops/{devops}/pipelines/{pipeline}/branches/{branch}/runs/{run}/stop": { + "post": { + "produces": [ + "application/json" + ], + "tags": [ + "DevOps Pipeline" + ], + "summary": "(MultiBranchesPipeline) Stop the specified pipeline of the DevOps project.", + "operationId": "StopBranchPipeline", + "parameters": [ + { + "type": "string", + "description": "DevOps project's ID, e.g. project-RRRRAzLBlLEm", + "name": "devops", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "the name of the CI/CD pipeline", + "name": "pipeline", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "the name of branch, same as repository branch.", + "name": "branch", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "pipeline run ID, the unique ID for a pipeline once build.", + "name": "run", + "in": "path", + "required": true + }, + { + "type": "string", + "format": "blocking=%t", + "default": "blocking=false", + "description": "stop and between each retries will sleep.", + "name": "blocking", + "in": "query" + }, + { + "type": "string", + "format": "timeOutInSecs=%d", + "default": "timeOutInSecs=10", + "description": "the time of stop and between each retries sleep.", + "name": "timeOutInSecs", + "in": "query" + } + ], + "responses": { + "200": { + "description": "ok", + "schema": { + "$ref": "#/definitions/devops.StopPipeline" + } + } + } + } + }, + "/kapis/devops.kubesphere.io/v1alpha2/devops/{devops}/pipelines/{pipeline}/checkScriptCompile": { + "post": { + "consumes": [ + "application/x-www-form-urlencoded", + "charset=utf-8" + ], + "produces": [ + "application/json", + "charset=utf-8" + ], + "tags": [ + "DevOps Pipeline" + ], + "summary": "Check pipeline script compile.", + "operationId": "CheckScriptCompile", + "parameters": [ + { + "type": "string", + "description": "DevOps project's ID, e.g. project-RRRRAzLBlLEm", + "name": "devops", + "in": "path", + "required": true + }, + { + "type": "string", + "format": "pipeline=%s", + "description": "the name of the CI/CD pipeline", + "name": "pipeline", + "in": "path", + "required": true + }, + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/devops.ReqScript" + } + } + ], + "responses": { + "200": { + "description": "ok", + "schema": { + "$ref": "#/definitions/devops.CheckScript" + } + } + } + } + }, + "/kapis/devops.kubesphere.io/v1alpha2/devops/{devops}/pipelines/{pipeline}/consolelog": { + "get": { + "produces": [ + "text/plain; charset=utf-8" + ], + "tags": [ + "DevOps Pipeline" + ], + "summary": "Get scan reponsitory logs in the specified pipeline.", + "operationId": "GetConsoleLog", + "parameters": [ + { + "type": "string", + "description": "DevOps project's ID, e.g. project-RRRRAzLBlLEm", + "name": "devops", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "the name of the CI/CD pipeline", + "name": "pipeline", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "OK" + } + } + } + }, + "/kapis/devops.kubesphere.io/v1alpha2/devops/{devops}/pipelines/{pipeline}/runs": { + "get": { + "produces": [ + "application/json" + ], + "tags": [ + "DevOps Pipeline" + ], + "summary": "Get all runs of the specified pipeline", + "operationId": "ListPipelineRuns", + "parameters": [ + { + "type": "string", + "description": "the name of the CI/CD pipeline", + "name": "pipeline", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "DevOps project's ID, e.g. project-RRRRAzLBlLEm", + "name": "devops", + "in": "path", + "required": true + }, + { + "type": "string", + "format": "start=%d", + "description": "the item number that the search starts from", + "name": "start", + "in": "query" + }, + { + "type": "string", + "format": "limit=%d", + "description": "the limit item count of the search", + "name": "limit", + "in": "query" + }, + { + "type": "string", + "format": "branch=%s", + "description": "the name of branch, same as repository branch, will be filtered by branch.", + "name": "branch", + "in": "query" + } + ], + "responses": { + "200": { + "description": "ok", + "schema": { + "$ref": "#/definitions/devops.PipelineRunList" + } + } + } + }, + "post": { + "produces": [ + "application/json" + ], + "tags": [ + "DevOps Pipeline" + ], + "summary": "Run pipeline.", + "operationId": "RunPipeline", + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/devops.RunPayload" + } + }, + { + "type": "string", + "description": "DevOps project's ID, e.g. project-RRRRAzLBlLEm", + "name": "devops", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "the name of the CI/CD pipeline", + "name": "pipeline", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "ok", + "schema": { + "$ref": "#/definitions/devops.RunPipeline" + } + } + } + } + }, + "/kapis/devops.kubesphere.io/v1alpha2/devops/{devops}/pipelines/{pipeline}/runs/{run}": { + "get": { + "produces": [ + "application/json" + ], + "tags": [ + "DevOps Pipeline" + ], + "summary": "Get details in the specified pipeline activity.", + "operationId": "GetPipelineRun", + "parameters": [ + { + "type": "string", + "description": "the name of devops project", + "name": "devops", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "the name of the CI/CD pipeline", + "name": "pipeline", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "pipeline run ID, the unique ID for a pipeline once build.", + "name": "run", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "ok", + "schema": { + "$ref": "#/definitions/devops.PipelineRun" + } + } + } + } + }, + "/kapis/devops.kubesphere.io/v1alpha2/devops/{devops}/pipelines/{pipeline}/runs/{run}/artifacts": { + "get": { + "produces": [ + "application/json" + ], + "tags": [ + "DevOps Pipeline" + ], + "summary": "Get all artifacts in the specified pipeline.", + "operationId": "GetArtifacts", + "parameters": [ + { + "type": "string", + "description": "DevOps project's ID, e.g. project-RRRRAzLBlLEm", + "name": "devops", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "the name of the CI/CD pipeline", + "name": "pipeline", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "pipeline run ID, the unique ID for a pipeline once build.", + "name": "run", + "in": "path", + "required": true + }, + { + "type": "string", + "format": "start=%d", + "description": "the item number that the search starts from.", + "name": "start", + "in": "query" + }, + { + "type": "string", + "format": "limit=%d", + "description": "the limit item count of the search.", + "name": "limit", + "in": "query" + } + ], + "responses": { + "200": { + "description": "The filed of \"Url\" in response can download artifacts", + "schema": { + "type": "array", + "items": { + "$ref": "#/definitions/devops.Artifacts" + } + } + } + } + } + }, + "/kapis/devops.kubesphere.io/v1alpha2/devops/{devops}/pipelines/{pipeline}/runs/{run}/log": { + "get": { + "produces": [ + "text/plain; charset=utf-8" + ], + "tags": [ + "DevOps Pipeline" + ], + "summary": "Get run logs of the specified pipeline activity.", + "operationId": "GetRunLog", + "parameters": [ + { + "type": "string", + "description": "DevOps project's ID, e.g. project-RRRRAzLBlLEm", + "name": "devops", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "the name of the CI/CD pipeline", + "name": "pipeline", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "pipeline run ID, the unique ID for a pipeline once build.", + "name": "run", + "in": "path", + "required": true + }, + { + "type": "string", + "format": "start=%d", + "default": "start=0", + "description": "the item number that the search starts from.", + "name": "start", + "in": "query" + } + ], + "responses": { + "200": { + "description": "OK" + } + } + } + }, + "/kapis/devops.kubesphere.io/v1alpha2/devops/{devops}/pipelines/{pipeline}/runs/{run}/nodes": { + "get": { + "produces": [ + "application/json" + ], + "tags": [ + "DevOps Pipeline" + ], + "summary": "Get all nodes in the specified activity. node is the stage in the pipeline task", + "operationId": "GetPipelineRunNodes", + "parameters": [ + { + "type": "string", + "description": "the name of devops project", + "name": "devops", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "the name of the CI/CD pipeline", + "name": "pipeline", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "pipeline run ID, the unique ID for a pipeline once build", + "name": "run", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "ok", + "schema": { + "type": "array", + "items": { + "$ref": "#/definitions/devops.PipelineRunNodes" + } + } + } + } + } + }, + "/kapis/devops.kubesphere.io/v1alpha2/devops/{devops}/pipelines/{pipeline}/runs/{run}/nodes/{node}/steps": { + "get": { + "produces": [ + "application/json" + ], + "tags": [ + "DevOps Pipeline" + ], + "summary": "Get all steps in the specified node.", + "operationId": "GetNodeSteps", + "parameters": [ + { + "type": "string", + "description": "the name of devops project", + "name": "devops", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "the name of the CI/CD pipeline", + "name": "pipeline", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "pipeline run ID, the unique ID for a pipeline once build", + "name": "run", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "pipeline node ID, the stage in pipeline.", + "name": "node", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "ok", + "schema": { + "type": "array", + "items": { + "$ref": "#/definitions/devops.NodeSteps" + } + } + } + } + } + }, + "/kapis/devops.kubesphere.io/v1alpha2/devops/{devops}/pipelines/{pipeline}/runs/{run}/nodes/{node}/steps/{step}": { + "post": { + "produces": [ + "text/plain; charset=utf-8" + ], + "tags": [ + "DevOps Pipeline" + ], + "summary": "Proceed or Break the paused pipeline which is waiting for user input.", + "operationId": "SubmitInputStep", + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/devops.CheckPlayload" + } + }, + { + "type": "string", + "description": "DevOps project's ID, e.g. project-RRRRAzLBlLEm", + "name": "devops", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "the name of the CI/CD pipeline", + "name": "pipeline", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "pipeline run ID, the unique ID for a pipeline once build.", + "name": "run", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "pipeline node ID, the stage in pipeline.", + "name": "node", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "pipeline step ID", + "name": "step", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "OK" + } + } + } + }, + "/kapis/devops.kubesphere.io/v1alpha2/devops/{devops}/pipelines/{pipeline}/runs/{run}/nodes/{node}/steps/{step}/log": { + "get": { + "produces": [ + "text/plain; charset=utf-8" + ], + "tags": [ + "DevOps Pipeline" + ], + "summary": "Get pipelines step log.", + "operationId": "GetStepLog", + "parameters": [ + { + "type": "string", + "description": "DevOps project's ID, e.g. project-RRRRAzLBlLEm", + "name": "devops", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "the name of the CI/CD pipeline", + "name": "pipeline", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "pipeline run ID, the unique ID for a pipeline once build.", + "name": "run", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "pipeline node ID, the stage in pipeline.", + "name": "node", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "pipeline step ID, the step in pipeline.", + "name": "step", + "in": "path", + "required": true + }, + { + "type": "string", + "format": "start=%d", + "default": "start=0", + "description": "the item number that the search starts from.", + "name": "start", + "in": "query" + } + ], + "responses": { + "200": { + "description": "OK" + } + } + } + }, + "/kapis/devops.kubesphere.io/v1alpha2/devops/{devops}/pipelines/{pipeline}/runs/{run}/nodesdetail": { + "get": { + "produces": [ + "application/json" + ], + "tags": [ + "DevOps Pipeline" + ], + "summary": "Get steps details inside a activity node. For a node, the steps which defined inside the node.", + "operationId": "GetNodesDetail", + "parameters": [ + { + "type": "string", + "description": "DevOps project's ID, e.g. project-RRRRAzLBlLEm", + "name": "devops", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "the name of the CI/CD pipeline", + "name": "pipeline", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "pipeline run ID, the unique ID for a pipeline once build.", + "name": "run", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "ok", + "schema": { + "type": "array", + "items": { + "$ref": "#/definitions/devops.NodesDetail" + } + } + } + } + } + }, + "/kapis/devops.kubesphere.io/v1alpha2/devops/{devops}/pipelines/{pipeline}/runs/{run}/replay": { + "post": { + "produces": [ + "application/json" + ], + "tags": [ + "DevOps Pipeline" + ], + "summary": "Replay pipeline", + "operationId": "ReplayPipeline", + "parameters": [ + { + "type": "string", + "description": "DevOps project's ID, e.g. project-RRRRAzLBlLEm", + "name": "devops", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "the name of the CI/CD pipeline", + "name": "pipeline", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "pipeline run ID, the unique ID for a pipeline once build.", + "name": "run", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "ok", + "schema": { + "$ref": "#/definitions/devops.ReplayPipeline" + } + } + } + } + }, + "/kapis/devops.kubesphere.io/v1alpha2/devops/{devops}/pipelines/{pipeline}/runs/{run}/stop": { + "post": { + "produces": [ + "application/json" + ], + "tags": [ + "DevOps Pipeline" + ], + "summary": "Stop pipeline", + "operationId": "StopPipeline", + "parameters": [ + { + "type": "string", + "description": "DevOps project's ID, e.g. project-RRRRAzLBlLEm", + "name": "devops", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "the name of the CI/CD pipeline", + "name": "pipeline", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "pipeline run ID, the unique ID for a pipeline once build.", + "name": "run", + "in": "path", + "required": true + }, + { + "type": "string", + "format": "blocking=%t", + "default": "blocking=false", + "description": "stop and between each retries will sleep.", + "name": "blocking", + "in": "query" + }, + { + "type": "string", + "format": "timeOutInSecs=%d", + "default": "timeOutInSecs=10", + "description": "the time of stop and between each retries sleep.", + "name": "timeOutInSecs", + "in": "query" + } + ], + "responses": { + "200": { + "description": "ok", + "schema": { + "$ref": "#/definitions/devops.StopPipeline" + } + } + } + } + }, + "/kapis/devops.kubesphere.io/v1alpha2/devops/{devops}/pipelines/{pipeline}/scan": { + "post": { + "produces": [ + "text/html; charset=utf-8" + ], + "tags": [ + "DevOps Pipeline" + ], + "summary": "Scan remote Repository, Start a build if have new branch.", + "operationId": "ScanBranch", + "parameters": [ + { + "type": "string", + "description": "DevOps project's ID, e.g. project-RRRRAzLBlLEm", + "name": "devops", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "the name of the CI/CD pipeline", + "name": "pipeline", + "in": "path", + "required": true + }, + { + "type": "string", + "format": "delay=%d", + "description": "the delay time to scan", + "name": "delay", + "in": "query" + } + ], + "responses": { + "200": { + "description": "OK" + } + } + } + }, + "/kapis/devops.kubesphere.io/v1alpha2/jenkins/{path}": { + "get": { + "produces": [ + "application/json" + ], + "tags": [ + "Jenkins" + ], + "operationId": "func1", + "parameters": [ + { + "pattern": "*", + "type": "string", + "description": "Path stands for any suffix path.", + "name": "path", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "ok" + } + } + } + }, + "/kapis/devops.kubesphere.io/v1alpha2/scms/{scm}/organizations": { + "get": { + "produces": [ + "application/json" + ], + "tags": [ + "DevOps Scm" + ], + "summary": "List all organizations of the specified source configuration management (SCM) such as Github.", + "operationId": "GetSCMOrg", + "parameters": [ + { + "type": "string", + "description": "the ID of the source configuration management (SCM).", + "name": "scm", + "in": "path", + "required": true + }, + { + "type": "string", + "format": "credentialId=%s", + "description": "credential ID for source configuration management (SCM).", + "name": "credentialId", + "in": "query", + "required": true + } + ], + "responses": { + "200": { + "description": "ok", + "schema": { + "type": "array", + "items": { + "$ref": "#/definitions/devops.SCMOrg" + } + } + } + } + } + }, + "/kapis/devops.kubesphere.io/v1alpha2/scms/{scm}/organizations/{organization}/repositories": { + "get": { + "produces": [ + "application/json" + ], + "tags": [ + "DevOps Scm" + ], + "summary": "List all repositories in the specified organization.", + "operationId": "GetOrgRepo", + "parameters": [ + { + "type": "string", + "description": "The ID of the source configuration management (SCM).", + "name": "scm", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "organization ID, such as github username.", + "name": "organization", + "in": "path", + "required": true + }, + { + "type": "string", + "format": "credentialId=%s", + "description": "credential ID for SCM.", + "name": "credentialId", + "in": "query", + "required": true + }, + { + "type": "string", + "format": "pageNumber=%d", + "description": "page number.", + "name": "pageNumber", + "in": "query", + "required": true + }, + { + "type": "string", + "format": "pageSize=%d", + "description": "the item count of one page.", + "name": "pageSize", + "in": "query", + "required": true + } + ], + "responses": { + "200": { + "description": "ok", + "schema": { + "$ref": "#/definitions/devops.OrgRepo" + } + } + } + } + }, + "/kapis/devops.kubesphere.io/v1alpha2/scms/{scm}/servers": { + "get": { + "produces": [ + "application/json" + ], + "tags": [ + "DevOps Scm" + ], + "summary": "List all servers in the jenkins.", + "operationId": "GetSCMServers", + "parameters": [ + { + "type": "string", + "description": "The ID of the source configuration management (SCM).", + "name": "scm", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "ok", + "schema": { + "type": "array", + "items": { + "$ref": "#/definitions/devops.SCMServer" + } + } + } + } + }, + "post": { + "produces": [ + "application/json" + ], + "tags": [ + "DevOps Scm" + ], + "summary": "Create scm server in the jenkins.", + "operationId": "CreateSCMServers", + "parameters": [ + { + "type": "string", + "description": "The ID of the source configuration management (SCM).", + "name": "scm", + "in": "path", + "required": true + }, + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/devops.CreateScmServerReq" + } + } + ], + "responses": { + "200": { + "description": "ok", + "schema": { + "$ref": "#/definitions/devops.SCMServer" + } + } + } + } + }, + "/kapis/devops.kubesphere.io/v1alpha2/scms/{scm}/verify": { + "post": { + "produces": [ + "application/json" + ], + "tags": [ + "DevOps Scm" + ], + "summary": "Validate the access token of the specified source configuration management (SCM) such as Github", + "operationId": "Validate", + "parameters": [ + { + "type": "string", + "description": "the ID of the source configuration management (SCM).", + "name": "scm", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "ok", + "schema": { + "$ref": "#/definitions/devops.Validates" + } + } + } + } + }, + "/kapis/devops.kubesphere.io/v1alpha2/search": { + "get": { + "produces": [ + "application/json" + ], + "tags": [ + "DevOps Pipeline" + ], + "summary": "Search DevOps resource. More info: https://github.com/jenkinsci/blueocean-plugin/tree/master/blueocean-rest#get-pipelines-across-organization", + "operationId": "ListPipelines", + "parameters": [ + { + "type": "string", + "format": "q=%s", + "description": "query pipelines, condition for filtering.", + "name": "q", + "in": "query", + "required": true + }, + { + "type": "string", + "format": "filter=%s", + "description": "Filter some types of jobs. e.g. no-folder,will not get a job of type folder", + "name": "filter", + "in": "query" + }, + { + "type": "string", + "format": "start=%d", + "description": "the item number that the search starts from.", + "name": "start", + "in": "query" + }, + { + "type": "string", + "format": "limit=%d", + "description": "the limit item count of the search.", + "name": "limit", + "in": "query" + } + ], + "responses": { + "200": { + "description": "ok", + "schema": { + "$ref": "#/definitions/devops.PipelineList" + } + } + } + } + }, + "/kapis/devops.kubesphere.io/v1alpha2/tojenkinsfile": { + "post": { + "consumes": [ + "application/x-www-form-urlencoded" + ], + "produces": [ + "application/json", + "charset=utf-8" + ], + "tags": [ + "DevOps Jenkinsfile" + ], + "summary": "Convert json to jenkinsfile format.", + "operationId": "ToJenkinsfile", + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/devops.ReqJson" + } + } + ], + "responses": { + "200": { + "description": "ok", + "schema": { + "$ref": "#/definitions/devops.ResJenkinsfile" + } + } + } + } + }, + "/kapis/devops.kubesphere.io/v1alpha2/tojson": { + "post": { + "consumes": [ + "application/x-www-form-urlencoded" + ], + "produces": [ + "application/json", + "charset=utf-8" + ], + "tags": [ + "DevOps Jenkinsfile" + ], + "summary": "Convert jenkinsfile to json format. Usually the frontend uses json to show or edit pipeline", + "operationId": "ToJson", + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/devops.ReqJenkinsfile" + } + } + ], + "responses": { + "200": { + "description": "ok", + "schema": { + "$ref": "#/definitions/devops.ResJson" + } + } + } + } + }, + "/kapis/devops.kubesphere.io/v1alpha2/webhook/git": { + "get": { + "produces": [ + "text/plain; charset=utf-8" + ], + "tags": [ + "DevOps Webhook" + ], + "summary": "Get commit notification by HTTP GET method. Git webhook will request here.", + "operationId": "GetNotifyCommit", + "parameters": [ + { + "type": "string", + "format": "url=%s", + "description": "Git url", + "name": "url", + "in": "query", + "required": true + } + ], + "responses": { + "200": { + "description": "OK" + } + } + }, + "post": { + "consumes": [ + "application/json" + ], + "produces": [ + "text/plain; charset=utf-8" + ], + "tags": [ + "DevOps Webhook" + ], + "summary": "Get commit notification by HTTP POST method. Git webhook will request here.", + "operationId": "PostNotifyCommit", + "parameters": [ + { + "type": "string", + "format": "url=%s", + "description": "Git url", + "name": "url", + "in": "query", + "required": true + } + ], + "responses": { + "200": { + "description": "OK" + } + } + } + }, + "/kapis/devops.kubesphere.io/v1alpha2/webhook/github": { + "post": { + "consumes": [ + "application/x-www-form-urlencoded", + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "DevOps Webhook" + ], + "summary": "Get commit notification. Github webhook will request here.", + "operationId": "GithubWebhook", + "responses": { + "200": { + "description": "OK" + } + } + } + }, + "/kapis/devops.kubesphere.io/v1alpha3/devops/{devops}/credentials": { + "get": { + "produces": [ + "application/json" + ], + "tags": [ + "DevOps Project" + ], + "summary": "list the credentials of the specified devops for the current user", + "operationId": "ListCredential", + "parameters": [ + { + "type": "string", + "description": "devops name", + "name": "devops", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "name used to do filtering", + "name": "name", + "in": "query" + }, + { + "type": "string", + "format": "page=%d", + "default": "page=1", + "description": "page", + "name": "page", + "in": "query" + }, + { + "type": "string", + "description": "limit", + "name": "limit", + "in": "query" + }, + { + "type": "string", + "default": "ascending=false", + "description": "sort parameters, e.g. ascending=false", + "name": "ascending", + "in": "query" + }, + { + "type": "string", + "description": "sort parameters, e.g. orderBy=createTime", + "name": "sortBy", + "in": "query" + } + ], + "responses": { + "200": { + "description": "ok", + "schema": { + "$ref": "#/definitions/api.ListResult" + } + } + } + }, + "post": { + "produces": [ + "application/json" + ], + "tags": [ + "DevOps Project" + ], + "summary": "create the credential of the specified devops for the current user", + "operationId": "CreateCredential", + "parameters": [ + { + "type": "string", + "description": "devops name", + "name": "devops", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "ok", + "schema": { + "type": "array", + "items": { + "$ref": "#/definitions/v1alpha3.Pipeline" + } + } + } + } + } + }, + "/kapis/devops.kubesphere.io/v1alpha3/devops/{devops}/credentials/{credential}": { + "get": { + "produces": [ + "application/json" + ], + "tags": [ + "DevOps Project" + ], + "summary": "get the credential of the specified devops for the current user", + "operationId": "GetCredential", + "parameters": [ + { + "type": "string", + "description": "project name", + "name": "devops", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "pipeline name", + "name": "credential", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "ok", + "schema": { + "type": "array", + "items": { + "$ref": "#/definitions/v1.Secret" + } + } + } + } + }, + "put": { + "produces": [ + "application/json" + ], + "tags": [ + "DevOps Project" + ], + "summary": "put the credential of the specified devops for the current user", + "operationId": "UpdateCredential", + "parameters": [ + { + "type": "string", + "description": "project name", + "name": "devops", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "credential name", + "name": "credential", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "ok", + "schema": { + "type": "array", + "items": { + "$ref": "#/definitions/v1.Secret" + } + } + } + } + }, + "delete": { + "produces": [ + "application/json" + ], + "tags": [ + "DevOps Pipeline" + ], + "summary": "delete the credential of the specified devops for the current user", + "operationId": "DeleteCredential", + "parameters": [ + { + "type": "string", + "description": "project name", + "name": "devops", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "credential name", + "name": "credential", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "ok", + "schema": { + "type": "array", + "items": { + "$ref": "#/definitions/v1.Secret" + } + } + } + } + } + }, + "/kapis/devops.kubesphere.io/v1alpha3/devops/{devops}/pipelines": { + "get": { + "produces": [ + "application/json" + ], + "tags": [ + "DevOps Project" + ], + "summary": "list the pipelines of the specified devops for the current user", + "operationId": "ListPipeline", + "parameters": [ + { + "type": "string", + "description": "devops name", + "name": "devops", + "in": "path", + "required": true + }, + { + "type": "string", + "format": "limit=%d,page=%d", + "default": "limit=10,page=1", + "description": "paging query, e.g. limit=100,page=1", + "name": "paging", + "in": "query" + } + ], + "responses": { + "200": { + "description": "ok", + "schema": { + "$ref": "#/definitions/api.ListResult" + } + } + } + }, + "post": { + "produces": [ + "application/json" + ], + "tags": [ + "DevOps Project" + ], + "summary": "create the pipeline of the specified devops for the current user", + "operationId": "CreatePipeline", + "parameters": [ + { + "type": "string", + "description": "devops name", + "name": "devops", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "ok", + "schema": { + "type": "array", + "items": { + "$ref": "#/definitions/v1alpha3.Pipeline" + } + } + } + } + } + }, + "/kapis/devops.kubesphere.io/v1alpha3/devops/{devops}/pipelines/{pipeline}": { + "get": { + "produces": [ + "application/json" + ], + "tags": [ + "DevOps Project" + ], + "summary": "get the pipeline of the specified devops for the current user", + "operationId": "getPipelineByName", + "parameters": [ + { + "type": "string", + "description": "project name", + "name": "devops", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "pipeline name", + "name": "pipeline", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "ok", + "schema": { + "type": "array", + "items": { + "$ref": "#/definitions/v1alpha3.Pipeline" + } + } + } + } + }, + "put": { + "produces": [ + "application/json" + ], + "tags": [ + "DevOps Project" + ], + "summary": "put the pipeline of the specified devops for the current user", + "operationId": "UpdatePipeline", + "parameters": [ + { + "type": "string", + "description": "project name", + "name": "devops", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "pipeline name", + "name": "pipeline", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "ok", + "schema": { + "type": "array", + "items": { + "$ref": "#/definitions/v1alpha3.Pipeline" + } + } + } + } + }, + "delete": { + "produces": [ + "application/json" + ], + "tags": [ + "DevOps Pipeline" + ], + "summary": "delete the pipeline of the specified devops for the current user", + "operationId": "DeletePipeline", + "parameters": [ + { + "type": "string", + "description": "project name", + "name": "devops", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "pipeline name", + "name": "pipeline", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "ok", + "schema": { + "type": "array", + "items": { + "$ref": "#/definitions/v1alpha3.Pipeline" + } + } + } + } + } + }, + "/kapis/devops.kubesphere.io/v1alpha3/workspaces/{workspace}/devops": { + "get": { + "produces": [ + "application/json" + ], + "tags": [ + "DevOps Project" + ], + "summary": "List the devopsproject of the specified workspace for the current user", + "operationId": "ListDevOpsProject", + "parameters": [ + { + "type": "string", + "description": "workspace name", + "name": "workspace", + "in": "path", + "required": true + }, + { + "type": "string", + "format": "limit=%d,page=%d", + "default": "limit=10,page=1", + "description": "paging query, e.g. limit=100,page=1", + "name": "paging", + "in": "query" + } + ], + "responses": { + "200": { + "description": "ok", + "schema": { + "$ref": "#/definitions/api.ListResult" + } + } + } + }, + "post": { + "produces": [ + "application/json" + ], + "tags": [ + "DevOps Project" + ], + "summary": "Create the devopsproject of the specified workspace for the current user", + "operationId": "CreateDevOpsProject", + "parameters": [ + { + "type": "string", + "description": "workspace name", + "name": "workspace", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "ok", + "schema": { + "type": "array", + "items": { + "$ref": "#/definitions/v1alpha3.DevOpsProject" + } + } + } + } + } + }, + "/kapis/devops.kubesphere.io/v1alpha3/workspaces/{workspace}/devops/{devops}": { + "get": { + "produces": [ + "application/json" + ], + "tags": [ + "DevOps Project" + ], + "summary": "Get the devopsproject of the specified workspace for the current user", + "operationId": "GetDevOpsProject", + "parameters": [ + { + "type": "string", + "description": "workspace name", + "name": "workspace", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "project name", + "name": "devops", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "ok", + "schema": { + "type": "array", + "items": { + "$ref": "#/definitions/v1alpha3.DevOpsProject" + } + } + } + } + }, + "put": { + "produces": [ + "application/json" + ], + "tags": [ + "DevOps Project" + ], + "summary": "Put the devopsproject of the specified workspace for the current user", + "operationId": "UpdateDevOpsProject", + "parameters": [ + { + "type": "string", + "description": "workspace name", + "name": "workspace", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "project name", + "name": "devops", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "ok", + "schema": { + "type": "array", + "items": { + "$ref": "#/definitions/v1alpha3.DevOpsProject" + } + } + } + } + }, + "delete": { + "produces": [ + "application/json" + ], + "tags": [ + "DevOps Project" + ], + "summary": "Get the devopsproject of the specified workspace for the current user", + "operationId": "DeleteDevOpsProject", + "parameters": [ + { + "type": "string", + "description": "workspace name", + "name": "workspace", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "project name", + "name": "devops", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "ok", + "schema": { + "type": "array", + "items": { + "$ref": "#/definitions/v1alpha3.DevOpsProject" + } + } + } + } + } + }, + "/kapis/iam.kubesphere.io/v1alpha2/clustermembers": { + "get": { + "produces": [ + "application/json" + ], + "tags": [ + "Cluster Member" + ], + "summary": "List all members in cluster.", + "operationId": "ListClusterMembers", + "responses": { + "200": { + "description": "ok", + "schema": { + "$ref": "#/definitions/api.ListResult" + } + } + } + }, + "post": { + "produces": [ + "application/json" + ], + "tags": [ + "Cluster Member" + ], + "summary": "Add members to current cluster in bulk.", + "operationId": "CreateClusterMembers", + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "type": "array", + "items": { + "$ref": "#/definitions/v1alpha2.Member" + } + } + } + ], + "responses": { + "200": { + "description": "ok", + "schema": { + "type": "array", + "items": { + "$ref": "#/definitions/v1alpha2.Member" + } + } + } + } + } + }, + "/kapis/iam.kubesphere.io/v1alpha2/clustermembers/{clustermember}": { + "get": { + "produces": [ + "application/json" + ], + "tags": [ + "Cluster Member" + ], + "summary": "Retrieve the cluster role of the specified member.", + "operationId": "DescribeClusterMember", + "parameters": [ + { + "type": "string", + "description": "cluster member's username", + "name": "clustermember", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "ok", + "schema": { + "$ref": "#/definitions/v1alpha2.User" + } + } + } + }, + "put": { + "produces": [ + "application/json" + ], + "tags": [ + "Cluster Member" + ], + "summary": "Update the cluster role bind of the member.", + "operationId": "UpdateClusterMember", + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/v1alpha2.Member" + } + }, + { + "type": "string", + "description": "cluster member's username", + "name": "clustermember", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "ok", + "schema": { + "$ref": "#/definitions/v1alpha2.Member" + } + } + } + }, + "delete": { + "produces": [ + "application/json" + ], + "tags": [ + "Cluster Member" + ], + "summary": "Delete a member from current cluster.", + "operationId": "RemoveClusterMember", + "parameters": [ + { + "type": "string", + "description": "cluster member's username", + "name": "clustermember", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "ok", + "schema": { + "$ref": "#/definitions/errors.Error" + } + } + } + } + }, + "/kapis/iam.kubesphere.io/v1alpha2/clustermembers/{clustermember}/clusterroles": { + "get": { + "produces": [ + "application/json" + ], + "tags": [ + "Cluster Role" + ], + "summary": "Retrieve user's role templates in cluster.", + "operationId": "RetrieveMemberRoleTemplates", + "parameters": [ + { + "type": "string", + "description": "cluster member's username", + "name": "clustermember", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "ok", + "schema": { + "$ref": "#/definitions/api.ListResult" + } + } + } + } + }, + "/kapis/iam.kubesphere.io/v1alpha2/clusterroles": { + "get": { + "produces": [ + "application/json" + ], + "tags": [ + "Cluster Role" + ], + "summary": "List all cluster roles.", + "operationId": "ListClusterRoles", + "responses": { + "200": { + "description": "ok", + "schema": { + "$ref": "#/definitions/api.ListResult" + } + } + } + }, + "post": { + "produces": [ + "application/json" + ], + "tags": [ + "Cluster Role" + ], + "summary": "Create cluster role.", + "operationId": "CreateClusterRole", + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/v1.ClusterRole" + } + } + ], + "responses": { + "200": { + "description": "ok", + "schema": { + "$ref": "#/definitions/v1.ClusterRole" + } + } + } + } + }, + "/kapis/iam.kubesphere.io/v1alpha2/clusterroles/{clusterrole}": { + "get": { + "produces": [ + "application/json" + ], + "tags": [ + "Cluster Role" + ], + "summary": "Retrieve cluster role details.", + "operationId": "DescribeClusterRole", + "parameters": [ + { + "type": "string", + "description": "cluster role name", + "name": "clusterrole", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "ok", + "schema": { + "$ref": "#/definitions/v1.ClusterRole" + } + } + } + }, + "put": { + "produces": [ + "application/json" + ], + "tags": [ + "Cluster Role" + ], + "summary": "Update cluster role.", + "operationId": "UpdateClusterRole", + "parameters": [ + { + "type": "string", + "description": "cluster role name", + "name": "clusterrole", + "in": "path", + "required": true + }, + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/v1.ClusterRole" + } + } + ], + "responses": { + "200": { + "description": "ok", + "schema": { + "$ref": "#/definitions/v1.ClusterRole" + } + } + } + }, + "delete": { + "produces": [ + "application/json" + ], + "tags": [ + "Cluster Role" + ], + "summary": "Delete cluster role.", + "operationId": "DeleteClusterRole", + "parameters": [ + { + "type": "string", + "description": "cluster role name", + "name": "clusterrole", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "ok", + "schema": { + "$ref": "#/definitions/errors.Error" + } + } + } + }, + "patch": { + "produces": [ + "application/json" + ], + "tags": [ + "Cluster Role" + ], + "summary": "Patch cluster role.", + "operationId": "PatchClusterRole", + "parameters": [ + { + "type": "string", + "description": "cluster role name", + "name": "clusterrole", + "in": "path", + "required": true + }, + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/v1.ClusterRole" + } + } + ], + "responses": { + "200": { + "description": "ok", + "schema": { + "$ref": "#/definitions/v1.ClusterRole" + } + } + } + } + }, + "/kapis/iam.kubesphere.io/v1alpha2/devops/{devops}/members": { + "get": { + "produces": [ + "application/json" + ], + "tags": [ + "DevOps Project Member" + ], + "summary": "List all members in the specified devops project.", + "operationId": "ListNamespaceMembers", + "parameters": [ + { + "type": "string", + "description": "devops project name", + "name": "devops", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "ok", + "schema": { + "$ref": "#/definitions/api.ListResult" + } + } + } + }, + "post": { + "produces": [ + "application/json" + ], + "tags": [ + "DevOps Project Member" + ], + "summary": "Add members to the DevOps project in bulk.", + "operationId": "CreateNamespaceMembers", + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "type": "array", + "items": { + "$ref": "#/definitions/v1alpha2.Member" + } + } + }, + { + "type": "string", + "description": "devops project name", + "name": "devops", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "ok", + "schema": { + "type": "array", + "items": { + "$ref": "#/definitions/v1alpha2.Member" + } + } + } + } + } + }, + "/kapis/iam.kubesphere.io/v1alpha2/devops/{devops}/members/{member}": { + "get": { + "produces": [ + "application/json" + ], + "tags": [ + "DevOps Project Member" + ], + "summary": "Retrieve devops project member details.", + "operationId": "DescribeNamespaceMember", + "parameters": [ + { + "type": "string", + "description": "devops project name", + "name": "devops", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "devops project member's username", + "name": "member", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "ok", + "schema": { + "$ref": "#/definitions/v1alpha2.User" + } + } + } + }, + "put": { + "produces": [ + "application/json" + ], + "tags": [ + "DevOps Project Member" + ], + "summary": "Update the role bind of the member.", + "operationId": "UpdateNamespaceMember", + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/v1alpha2.Member" + } + }, + { + "type": "string", + "description": "devops project name", + "name": "devops", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "devops project member's username", + "name": "member", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "ok", + "schema": { + "$ref": "#/definitions/v1alpha2.Member" + } + } + } + }, + "delete": { + "produces": [ + "application/json" + ], + "tags": [ + "DevOps Project Member" + ], + "summary": "Delete a member from the DevOps project.", + "operationId": "RemoveNamespaceMember", + "parameters": [ + { + "type": "string", + "description": "devops project name", + "name": "devops", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "devops project member's username", + "name": "member", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "ok", + "schema": { + "$ref": "#/definitions/errors.Error" + } + } + } + } + }, + "/kapis/iam.kubesphere.io/v1alpha2/devops/{devops}/members/{member}/roles": { + "get": { + "produces": [ + "application/json" + ], + "tags": [ + "DevOps Project Role" + ], + "summary": "Retrieve member's role templates in devops project.", + "operationId": "RetrieveMemberRoleTemplates", + "parameters": [ + { + "type": "string", + "description": "devops project name", + "name": "devops", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "devops project member's username", + "name": "member", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "ok", + "schema": { + "$ref": "#/definitions/api.ListResult" + } + } + } + } + }, + "/kapis/iam.kubesphere.io/v1alpha2/devops/{devops}/roles": { + "get": { + "produces": [ + "application/json" + ], + "tags": [ + "DevOps Project Role" + ], + "summary": "List all roles in the specified devops project.", + "operationId": "ListRoles", + "parameters": [ + { + "type": "string", + "description": "devops project name", + "name": "devops", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "ok", + "schema": { + "$ref": "#/definitions/api.ListResult" + } + } + } + }, + "post": { + "produces": [ + "application/json" + ], + "tags": [ + "DevOps Project Role" + ], + "summary": "Create role in the specified devops project.", + "operationId": "CreateNamespaceRole", + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/v1.Role" + } + }, + { + "type": "string", + "description": "devops project name", + "name": "devops", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "ok", + "schema": { + "$ref": "#/definitions/v1.Role" + } + } + } + } + }, + "/kapis/iam.kubesphere.io/v1alpha2/devops/{devops}/roles/{role}": { + "get": { + "produces": [ + "application/json" + ], + "tags": [ + "DevOps Project Role" + ], + "summary": "Retrieve devops project role details.", + "operationId": "DescribeNamespaceRole", + "parameters": [ + { + "type": "string", + "description": "devops project name", + "name": "devops", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "role name", + "name": "role", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "ok", + "schema": { + "$ref": "#/definitions/v1.Role" + } + } + } + }, + "put": { + "produces": [ + "application/json" + ], + "tags": [ + "DevOps Project Role" + ], + "summary": "Update devops project role.", + "operationId": "UpdateNamespaceRole", + "parameters": [ + { + "type": "string", + "description": "devops project name", + "name": "devops", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "role name", + "name": "role", + "in": "path", + "required": true + }, + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/v1.Role" + } + } + ], + "responses": { + "200": { + "description": "ok", + "schema": { + "$ref": "#/definitions/v1.Role" + } + } + } + }, + "delete": { + "produces": [ + "application/json" + ], + "tags": [ + "DevOps Project Role" + ], + "summary": "Delete role in the specified devops project.", + "operationId": "DeleteNamespaceRole", + "parameters": [ + { + "type": "string", + "description": "devops project name", + "name": "devops", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "role name", + "name": "role", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "ok", + "schema": { + "$ref": "#/definitions/errors.Error" + } + } + } + }, + "patch": { + "produces": [ + "application/json" + ], + "tags": [ + "DevOps Project Role" + ], + "summary": "Patch devops project role.", + "operationId": "PatchNamespaceRole", + "parameters": [ + { + "type": "string", + "description": "devops project name", + "name": "devops", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "role name", + "name": "role", + "in": "path", + "required": true + }, + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/v1.Role" + } + } + ], + "responses": { + "200": { + "description": "ok", + "schema": { + "$ref": "#/definitions/v1.Role" + } + } + } + } + }, + "/kapis/iam.kubesphere.io/v1alpha2/globalroles": { + "get": { + "produces": [ + "application/json" + ], + "tags": [ + "Global Role" + ], + "summary": "List all global roles.", + "operationId": "ListGlobalRoles", + "responses": { + "200": { + "description": "ok", + "schema": { + "$ref": "#/definitions/api.ListResult" + } + } + } + }, + "post": { + "produces": [ + "application/json" + ], + "tags": [ + "Global Role" + ], + "summary": "Create global role.", + "operationId": "CreateGlobalRole", + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/v1alpha2.GlobalRole" + } + } + ], + "responses": { + "200": { + "description": "ok", + "schema": { + "$ref": "#/definitions/v1alpha2.GlobalRole" + } + } + } + } + }, + "/kapis/iam.kubesphere.io/v1alpha2/globalroles/{globalrole}": { + "get": { + "produces": [ + "application/json" + ], + "tags": [ + "Global Role" + ], + "summary": "Retrieve global role details.", + "operationId": "DescribeGlobalRole", + "parameters": [ + { + "type": "string", + "description": "global role name", + "name": "globalrole", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "ok", + "schema": { + "$ref": "#/definitions/v1alpha2.GlobalRole" + } + } + } + }, + "put": { + "produces": [ + "application/json" + ], + "tags": [ + "Global Role" + ], + "summary": "Update global role.", + "operationId": "UpdateGlobalRole", + "parameters": [ + { + "type": "string", + "description": "global role name", + "name": "globalrole", + "in": "path", + "required": true + }, + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/v1alpha2.GlobalRole" + } + } + ], + "responses": { + "200": { + "description": "ok", + "schema": { + "$ref": "#/definitions/v1alpha2.GlobalRole" + } + } + } + }, + "delete": { + "produces": [ + "application/json" + ], + "tags": [ + "Global Role" + ], + "summary": "Delete global role.", + "operationId": "DeleteGlobalRole", + "parameters": [ + { + "type": "string", + "description": "global role name", + "name": "globalrole", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "ok", + "schema": { + "$ref": "#/definitions/errors.Error" + } + } + } + }, + "patch": { + "produces": [ + "application/json" + ], + "tags": [ + "Global Role" + ], + "summary": "Patch global role.", + "operationId": "PatchGlobalRole", + "parameters": [ + { + "type": "string", + "description": "global role name", + "name": "globalrole", + "in": "path", + "required": true + }, + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/v1alpha2.GlobalRole" + } + } + ], + "responses": { + "200": { + "description": "ok", + "schema": { + "$ref": "#/definitions/v1alpha2.GlobalRole" + } + } + } + } + }, + "/kapis/iam.kubesphere.io/v1alpha2/login": { + "post": { + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "Authentication" + ], + "summary": "KubeSphere APIs support token-based authentication via the Authtoken request header. The POST Login API is used to retrieve the authentication token. After the authentication token is obtained, it must be inserted into the Authtoken header for all requests.", + "operationId": "Login", + "deprecated": true, + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/oauth.LoginRequest" + } + } + ], + "responses": { + "200": { + "description": "ok", + "schema": { + "$ref": "#/definitions/oauth.Token" + } + } + } + } + }, + "/kapis/iam.kubesphere.io/v1alpha2/namespace/{namespace}/rolebindings/{rolebinding}": { + "delete": { + "produces": [ + "application/json" + ], + "tags": [ + "Group" + ], + "summary": "Delete rolebinding under namespace.", + "operationId": "DeleteRoleBinding", + "parameters": [ + { + "type": "string", + "description": "workspace name", + "name": "workspace", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "groupbinding name", + "name": "namespace", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "groupbinding name", + "name": "rolebinding", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "ok", + "schema": { + "$ref": "#/definitions/errors.Error" + } + } + } + } + }, + "/kapis/iam.kubesphere.io/v1alpha2/namespaces/{namespace}/members": { + "get": { + "produces": [ + "application/json" + ], + "tags": [ + "Namespace Member" + ], + "summary": "List all members in the specified namespace.", + "operationId": "ListNamespaceMembers", + "parameters": [ + { + "type": "string", + "description": "namespace", + "name": "namespace", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "ok", + "schema": { + "$ref": "#/definitions/api.ListResult" + } + } + } + }, + "post": { + "produces": [ + "application/json" + ], + "tags": [ + "Namespace Member" + ], + "summary": "Add members to the namespace in bulk.", + "operationId": "CreateNamespaceMembers", + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "type": "array", + "items": { + "$ref": "#/definitions/v1alpha2.Member" + } + } + }, + { + "type": "string", + "description": "namespace", + "name": "namespace", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "ok", + "schema": { + "type": "array", + "items": { + "$ref": "#/definitions/v1alpha2.Member" + } + } + } + } + } + }, + "/kapis/iam.kubesphere.io/v1alpha2/namespaces/{namespace}/members/{member}": { + "get": { + "produces": [ + "application/json" + ], + "tags": [ + "Namespace Member" + ], + "summary": "Retrieve the role of the specified member.", + "operationId": "DescribeNamespaceMember", + "parameters": [ + { + "type": "string", + "description": "namespace", + "name": "namespace", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "namespace member's username", + "name": "member", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "ok", + "schema": { + "$ref": "#/definitions/v1alpha2.User" + } + } + } + }, + "put": { + "produces": [ + "application/json" + ], + "tags": [ + "Namespace Member" + ], + "summary": "Update the role bind of the member.", + "operationId": "UpdateNamespaceMember", + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/v1alpha2.Member" + } + }, + { + "type": "string", + "description": "namespace", + "name": "namespace", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "namespace member's username", + "name": "member", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "ok", + "schema": { + "$ref": "#/definitions/v1alpha2.Member" + } + } + } + }, + "delete": { + "produces": [ + "application/json" + ], + "tags": [ + "Namespace Member" + ], + "summary": "Delete a member from the namespace.", + "operationId": "RemoveNamespaceMember", + "parameters": [ + { + "type": "string", + "description": "namespace", + "name": "namespace", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "namespace member's username", + "name": "member", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "ok", + "schema": { + "$ref": "#/definitions/errors.Error" + } + } + } + } + }, + "/kapis/iam.kubesphere.io/v1alpha2/namespaces/{namespace}/members/{member}/roles": { + "get": { + "produces": [ + "application/json" + ], + "tags": [ + "Namespace Role" + ], + "summary": "Retrieve member's role templates in namespace.", + "operationId": "RetrieveMemberRoleTemplates", + "parameters": [ + { + "type": "string", + "description": "namespace", + "name": "namespace", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "namespace member's username", + "name": "member", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "ok", + "schema": { + "$ref": "#/definitions/api.ListResult" + } + } + } + } + }, + "/kapis/iam.kubesphere.io/v1alpha2/namespaces/{namespace}/rolebindings": { + "post": { + "produces": [ + "application/json" + ], + "tags": [ + "Namespace Role" + ], + "summary": "Create rolebinding in the specified namespace.", + "operationId": "CreateRoleBinding", + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "type": "array", + "items": { + "$ref": "#/definitions/v1.RoleBinding" + } + } + }, + { + "type": "string", + "description": "namespace", + "name": "namespace", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "ok", + "schema": { + "type": "array", + "items": { + "$ref": "#/definitions/v1.RoleBinding" + } + } + } + } + } + }, + "/kapis/iam.kubesphere.io/v1alpha2/namespaces/{namespace}/roles": { + "get": { + "produces": [ + "application/json" + ], + "tags": [ + "Namespace Role" + ], + "summary": "List all roles in the specified namespace.", + "operationId": "ListRoles", + "parameters": [ + { + "type": "string", + "description": "namespace", + "name": "namespace", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "ok", + "schema": { + "$ref": "#/definitions/api.ListResult" + } + } + } + }, + "post": { + "produces": [ + "application/json" + ], + "tags": [ + "Namespace Role" + ], + "summary": "Create role in the specified namespace.", + "operationId": "CreateNamespaceRole", + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/v1.Role" + } + }, + { + "type": "string", + "description": "namespace", + "name": "namespace", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "ok", + "schema": { + "$ref": "#/definitions/v1.Role" + } + } + } + } + }, + "/kapis/iam.kubesphere.io/v1alpha2/namespaces/{namespace}/roles/{role}": { + "get": { + "produces": [ + "application/json" + ], + "tags": [ + "Namespace Role" + ], + "summary": "Retrieve role details.", + "operationId": "DescribeNamespaceRole", + "parameters": [ + { + "type": "string", + "description": "namespace", + "name": "namespace", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "role name", + "name": "role", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "ok", + "schema": { + "$ref": "#/definitions/v1.Role" + } + } + } + }, + "put": { + "produces": [ + "application/json" + ], + "tags": [ + "Namespace Role" + ], + "summary": "Update namespace role.", + "operationId": "UpdateNamespaceRole", + "parameters": [ + { + "type": "string", + "description": "namespace", + "name": "namespace", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "role name", + "name": "role", + "in": "path", + "required": true + }, + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/v1.Role" + } + } + ], + "responses": { + "200": { + "description": "ok", + "schema": { + "$ref": "#/definitions/v1.Role" + } + } + } + }, + "delete": { + "produces": [ + "application/json" + ], + "tags": [ + "Namespace Role" + ], + "summary": "Delete role in the specified namespace.", + "operationId": "DeleteNamespaceRole", + "parameters": [ + { + "type": "string", + "description": "namespace", + "name": "namespace", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "role name", + "name": "role", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "ok", + "schema": { + "$ref": "#/definitions/errors.Error" + } + } + } + }, + "patch": { + "produces": [ + "application/json" + ], + "tags": [ + "Namespace Role" + ], + "summary": "Patch namespace role.", + "operationId": "PatchNamespaceRole", + "parameters": [ + { + "type": "string", + "description": "namespace", + "name": "namespace", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "role name", + "name": "role", + "in": "path", + "required": true + }, + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/v1.Role" + } + } + ], + "responses": { + "200": { + "description": "ok", + "schema": { + "$ref": "#/definitions/v1.Role" + } + } + } + } + }, + "/kapis/iam.kubesphere.io/v1alpha2/users": { + "get": { + "produces": [ + "application/json" + ], + "tags": [ + "User" + ], + "summary": "List all users.", + "operationId": "ListUsers", + "responses": { + "200": { + "description": "ok", + "schema": { + "$ref": "#/definitions/api.ListResult" + } + } + } + }, + "post": { + "produces": [ + "application/json" + ], + "tags": [ + "User" + ], + "summary": "Create a global user account.", + "operationId": "CreateUser", + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/v1alpha2.User" + } + } + ], + "responses": { + "200": { + "description": "ok", + "schema": { + "$ref": "#/definitions/v1alpha2.User" + } + } + } + } + }, + "/kapis/iam.kubesphere.io/v1alpha2/users/{user}": { + "get": { + "produces": [ + "application/json" + ], + "tags": [ + "User" + ], + "summary": "Retrieve user details.", + "operationId": "DescribeUser", + "parameters": [ + { + "type": "string", + "description": "username", + "name": "user", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "ok", + "schema": { + "$ref": "#/definitions/v1alpha2.User" + } + } + } + }, + "put": { + "produces": [ + "application/json" + ], + "tags": [ + "User" + ], + "summary": "Update user profile.", + "operationId": "UpdateUser", + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/v1alpha2.User" + } + }, + { + "type": "string", + "description": "username", + "name": "user", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "ok", + "schema": { + "$ref": "#/definitions/v1alpha2.User" + } + } + } + }, + "delete": { + "produces": [ + "application/json" + ], + "tags": [ + "User" + ], + "summary": "Delete the specified user.", + "operationId": "DeleteUser", + "parameters": [ + { + "type": "string", + "description": "username", + "name": "user", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "ok", + "schema": { + "$ref": "#/definitions/errors.Error" + } + } + } + } + }, + "/kapis/iam.kubesphere.io/v1alpha2/users/{user}/globalroles": { + "get": { + "produces": [ + "application/json" + ], + "tags": [ + "Global Role" + ], + "summary": "Retrieve user's global role templates.", + "operationId": "RetrieveMemberRoleTemplates", + "parameters": [ + { + "type": "string", + "description": "username", + "name": "user", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "ok", + "schema": { + "$ref": "#/definitions/api.ListResult" + } + } + } + } + }, + "/kapis/iam.kubesphere.io/v1alpha2/users/{user}/loginrecords": { + "get": { + "produces": [ + "application/json" + ], + "tags": [ + "User's Resources" + ], + "summary": "List login records of the specified user.", + "operationId": "ListUserLoginRecords", + "parameters": [ + { + "type": "string", + "description": "username of the user", + "name": "user", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "ok", + "schema": { + "$ref": "#/definitions/api.ListResult" + } + } + } + } + }, + "/kapis/iam.kubesphere.io/v1alpha2/users/{user}/password": { + "put": { + "produces": [ + "application/json" + ], + "tags": [ + "User" + ], + "summary": "Reset password of the specified user.", + "operationId": "ModifyPassword", + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/v1alpha2.PasswordReset" + } + }, + { + "type": "string", + "description": "username", + "name": "user", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "ok", + "schema": { + "$ref": "#/definitions/errors.Error" + } + } + } + } + }, + "/kapis/iam.kubesphere.io/v1alpha2/workspaces/{workspace}/groupbindings": { + "post": { + "produces": [ + "application/json" + ], + "tags": [ + "Group" + ], + "summary": "Create GroupBinding to add a user to the group", + "operationId": "CreateGroupBinding", + "parameters": [ + { + "type": "string", + "description": "workspace name", + "name": "workspace", + "in": "path", + "required": true + }, + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "type": "array", + "items": { + "$ref": "#/definitions/v1alpha2.GroupMember" + } + } + } + ], + "responses": { + "200": { + "description": "ok", + "schema": { + "$ref": "#/definitions/v1alpha2.GroupBinding" + } + } + } + } + }, + "/kapis/iam.kubesphere.io/v1alpha2/workspaces/{workspace}/groupbindings/{groupbinding}": { + "delete": { + "produces": [ + "application/json" + ], + "tags": [ + "Group" + ], + "summary": "Delete GroupBinding to remove user from the group.", + "operationId": "DeleteGroupBinding", + "parameters": [ + { + "type": "string", + "description": "workspace name", + "name": "workspace", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "groupbinding name", + "name": "groupbinding", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "ok", + "schema": { + "$ref": "#/definitions/errors.Error" + } + } + } + } + }, + "/kapis/iam.kubesphere.io/v1alpha2/workspaces/{workspace}/groups": { + "get": { + "produces": [ + "application/json" + ], + "tags": [ + "Group" + ], + "summary": "List groups of the specified workspace.", + "operationId": "ListWorkspaceGroups", + "parameters": [ + { + "type": "string", + "description": "workspace name", + "name": "workspace", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "ok", + "schema": { + "$ref": "#/definitions/api.ListResult" + } + } + } + }, + "post": { + "produces": [ + "application/json" + ], + "tags": [ + "Group" + ], + "summary": "Create Group", + "operationId": "CreateGroup", + "parameters": [ + { + "type": "string", + "description": "workspace name", + "name": "workspace", + "in": "path", + "required": true + }, + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/v1alpha2.Group" + } + } + ], + "responses": { + "200": { + "description": "ok", + "schema": { + "$ref": "#/definitions/v1alpha2.Group" + } + } + } + } + }, + "/kapis/iam.kubesphere.io/v1alpha2/workspaces/{workspace}/groups/{group}": { + "get": { + "produces": [ + "application/json" + ], + "tags": [ + "Group" + ], + "summary": "Retrieve group details.", + "operationId": "DescribeGroup", + "parameters": [ + { + "type": "string", + "description": "workspace name", + "name": "workspace", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "group name", + "name": "group", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "ok", + "schema": { + "$ref": "#/definitions/v1alpha2.Group" + } + } + } + }, + "put": { + "produces": [ + "application/json" + ], + "tags": [ + "Group" + ], + "summary": "Update Group", + "operationId": "UpdateGroup", + "parameters": [ + { + "type": "string", + "description": "workspace name", + "name": "workspace", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "group name", + "name": "group", + "in": "path", + "required": true + }, + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/v1alpha2.Group" + } + } + ], + "responses": { + "200": { + "description": "ok", + "schema": { + "$ref": "#/definitions/v1alpha2.Group" + } + } + } + }, + "delete": { + "produces": [ + "application/json" + ], + "tags": [ + "Group" + ], + "summary": "Delete group.", + "operationId": "DeleteGroup", + "parameters": [ + { + "type": "string", + "description": "workspace name", + "name": "workspace", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "group name", + "name": "group", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "ok", + "schema": { + "$ref": "#/definitions/errors.Error" + } + } + } + } + }, + "/kapis/iam.kubesphere.io/v1alpha2/workspaces/{workspace}/groups/{group}/devopsrolebindings": { + "get": { + "produces": [ + "application/json" + ], + "tags": [ + "Group" + ], + "summary": "Retrieve group's rolebindings of all devops projects in the workspace.", + "operationId": "ListGroupDevOpsRoleBindings", + "parameters": [ + { + "type": "string", + "description": "workspace name", + "name": "workspace", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "group name", + "name": "group", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "ok", + "schema": { + "$ref": "#/definitions/api.ListResult" + } + } + } + } + }, + "/kapis/iam.kubesphere.io/v1alpha2/workspaces/{workspace}/groups/{group}/groupbindings": { + "get": { + "produces": [ + "application/json" + ], + "tags": [ + "Group" + ], + "summary": "Retrieve group's members in the workspace.", + "operationId": "ListGroupBindings", + "parameters": [ + { + "type": "string", + "description": "workspace name", + "name": "workspace", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "group name", + "name": "group", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "ok", + "schema": { + "$ref": "#/definitions/api.ListResult" + } + } + } + } + }, + "/kapis/iam.kubesphere.io/v1alpha2/workspaces/{workspace}/groups/{group}/rolebindings": { + "get": { + "produces": [ + "application/json" + ], + "tags": [ + "Group" + ], + "summary": "Retrieve group's rolebindings of all projects in the workspace.", + "operationId": "ListGroupRoleBindings", + "parameters": [ + { + "type": "string", + "description": "workspace name", + "name": "workspace", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "group name", + "name": "group", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "ok", + "schema": { + "$ref": "#/definitions/api.ListResult" + } + } + } + } + }, + "/kapis/iam.kubesphere.io/v1alpha2/workspaces/{workspace}/groups/{group}/workspacerolebindings": { + "get": { + "produces": [ + "application/json" + ], + "tags": [ + "Group" + ], + "summary": "Retrieve group's workspacerolebindings of the workspace.", + "operationId": "ListGroupWorkspaceRoleBindings", + "parameters": [ + { + "type": "string", + "description": "workspace name", + "name": "workspace", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "group name", + "name": "group", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "ok", + "schema": { + "$ref": "#/definitions/api.ListResult" + } + } + } + } + }, + "/kapis/iam.kubesphere.io/v1alpha2/workspaces/{workspace}/workspacemembers": { + "get": { + "produces": [ + "application/json" + ], + "tags": [ + "Workspace Member" + ], + "summary": "List all members in the specified workspace.", + "operationId": "ListWorkspaceMembers", + "parameters": [ + { + "type": "string", + "description": "workspace name", + "name": "workspace", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "ok", + "schema": { + "$ref": "#/definitions/api.ListResult" + } + } + } + }, + "post": { + "produces": [ + "application/json" + ], + "tags": [ + "Workspace Member" + ], + "summary": "Add members to current cluster in bulk.", + "operationId": "CreateWorkspaceMembers", + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "type": "array", + "items": { + "$ref": "#/definitions/v1alpha2.Member" + } + } + }, + { + "type": "string", + "description": "workspace name", + "name": "workspace", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "ok", + "schema": { + "type": "array", + "items": { + "$ref": "#/definitions/v1alpha2.Member" + } + } + } + } + } + }, + "/kapis/iam.kubesphere.io/v1alpha2/workspaces/{workspace}/workspacemembers/{workspacemember}": { + "get": { + "produces": [ + "application/json" + ], + "tags": [ + "Workspace Member" + ], + "summary": "Retrieve the workspace role of the specified member.", + "operationId": "DescribeWorkspaceMember", + "parameters": [ + { + "type": "string", + "description": "workspace name", + "name": "workspace", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "workspace member's username", + "name": "workspacemember", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "ok", + "schema": { + "$ref": "#/definitions/v1alpha2.User" + } + } + } + }, + "put": { + "produces": [ + "application/json" + ], + "tags": [ + "Workspace Member" + ], + "summary": "Update the workspace role bind of the member.", + "operationId": "UpdateWorkspaceMember", + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/v1alpha2.Member" + } + }, + { + "type": "string", + "description": "workspace name", + "name": "workspace", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "workspace member's username", + "name": "workspacemember", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "ok", + "schema": { + "$ref": "#/definitions/v1alpha2.Member" + } + } + } + }, + "delete": { + "produces": [ + "application/json" + ], + "tags": [ + "Workspace Member" + ], + "summary": "Delete a member from the workspace.", + "operationId": "RemoveWorkspaceMember", + "parameters": [ + { + "type": "string", + "description": "workspace name", + "name": "workspace", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "workspace member's username", + "name": "workspacemember", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "ok", + "schema": { + "$ref": "#/definitions/errors.Error" + } + } + } + } + }, + "/kapis/iam.kubesphere.io/v1alpha2/workspaces/{workspace}/workspacemembers/{workspacemember}/workspaceroles": { + "get": { + "produces": [ + "application/json" + ], + "tags": [ + "Workspace Role" + ], + "summary": "Retrieve member's role templates in workspace.", + "operationId": "RetrieveMemberRoleTemplates", + "parameters": [ + { + "type": "string", + "description": "workspace", + "name": "workspace", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "workspace member's username", + "name": "workspacemember", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "ok", + "schema": { + "$ref": "#/definitions/api.ListResult" + } + } + } + } + }, + "/kapis/iam.kubesphere.io/v1alpha2/workspaces/{workspace}/workspacerolebindings": { + "post": { + "produces": [ + "application/json" + ], + "tags": [ + "Group" + ], + "summary": "Create group's workspacerolebindings of the workspace.", + "operationId": "CreateWorkspaceRoleBinding", + "parameters": [ + { + "type": "string", + "description": "workspace name", + "name": "workspace", + "in": "path", + "required": true + }, + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "type": "array", + "items": { + "$ref": "#/definitions/v1alpha2.WorkspaceRoleBinding" + } + } + } + ], + "responses": { + "200": { + "description": "ok", + "schema": { + "type": "array", + "items": { + "$ref": "#/definitions/v1alpha2.WorkspaceRoleBinding" + } + } + } + } + } + }, + "/kapis/iam.kubesphere.io/v1alpha2/workspaces/{workspace}/workspacerolebindings/{rolebinding}": { + "delete": { + "produces": [ + "application/json" + ], + "tags": [ + "Group" + ], + "summary": "Delete workspacerolebinding.", + "operationId": "DeleteWorkspaceRoleBinding", + "parameters": [ + { + "type": "string", + "description": "workspace name", + "name": "workspace", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "groupbinding name", + "name": "rolebinding", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "ok", + "schema": { + "$ref": "#/definitions/errors.Error" + } + } + } + } + }, + "/kapis/iam.kubesphere.io/v1alpha2/workspaces/{workspace}/workspaceroles": { + "get": { + "produces": [ + "application/json" + ], + "tags": [ + "Workspace Role" + ], + "summary": "List all workspace roles.", + "operationId": "ListWorkspaceRoles", + "parameters": [ + { + "type": "string", + "description": "workspace name", + "name": "workspace", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "ok", + "schema": { + "$ref": "#/definitions/api.ListResult" + } + } + } + }, + "post": { + "produces": [ + "application/json" + ], + "tags": [ + "Workspace Role" + ], + "summary": "Create workspace role.", + "operationId": "CreateWorkspaceRole", + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/v1alpha2.WorkspaceRole" + } + }, + { + "type": "string", + "description": "workspace name", + "name": "workspace", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "ok", + "schema": { + "$ref": "#/definitions/v1alpha2.WorkspaceRole" + } + } + } + } + }, + "/kapis/iam.kubesphere.io/v1alpha2/workspaces/{workspace}/workspaceroles/{workspacerole}": { + "get": { + "produces": [ + "application/json" + ], + "tags": [ + "Workspace Role" + ], + "summary": "Retrieve workspace role details.", + "operationId": "DescribeWorkspaceRole", + "parameters": [ + { + "type": "string", + "description": "workspace name", + "name": "workspace", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "workspace role name", + "name": "workspacerole", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "ok", + "schema": { + "$ref": "#/definitions/v1alpha2.WorkspaceRole" + } + } + } + }, + "put": { + "produces": [ + "application/json" + ], + "tags": [ + "Workspace Role" + ], + "summary": "Update workspace role.", + "operationId": "UpdateWorkspaceRole", + "parameters": [ + { + "type": "string", + "description": "workspace name", + "name": "workspace", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "workspace role name", + "name": "workspacerole", + "in": "path", + "required": true + }, + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/v1alpha2.WorkspaceRole" + } + } + ], + "responses": { + "200": { + "description": "ok", + "schema": { + "$ref": "#/definitions/v1alpha2.WorkspaceRole" + } + } + } + }, + "delete": { + "produces": [ + "application/json" + ], + "tags": [ + "Workspace Role" + ], + "summary": "Delete workspace role.", + "operationId": "DeleteWorkspaceRole", + "parameters": [ + { + "type": "string", + "description": "workspace name", + "name": "workspace", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "workspace role name", + "name": "workspacerole", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "ok", + "schema": { + "$ref": "#/definitions/errors.Error" + } + } + } + }, + "patch": { + "produces": [ + "application/json" + ], + "tags": [ + "Workspace Role" + ], + "summary": "Patch workspace role.", + "operationId": "PatchWorkspaceRole", + "parameters": [ + { + "type": "string", + "description": "workspace name", + "name": "workspace", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "workspace role name", + "name": "workspacerole", + "in": "path", + "required": true + }, + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/v1alpha2.WorkspaceRole" + } + } + ], + "responses": { + "200": { + "description": "ok", + "schema": { + "$ref": "#/definitions/errors.Error" + } + } + } + } + }, + "/kapis/monitoring.kubesphere.io/v1alpha3/cluster": { + "get": { + "produces": [ + "application/json" + ], + "tags": [ + "Cluster Metrics" + ], + "summary": "Get cluster-level metric data.", + "operationId": "handleClusterMetricsQuery", + "parameters": [ + { + "type": "string", + "description": "The metric name filter consists of a regexp pattern. It specifies which metric data to return. For example, the following filter matches both cluster CPU usage and disk usage: `cluster_cpu_usage|cluster_disk_size_usage`. View available metrics at [kubesphere.io](https://docs.kubesphere.io/advanced-v2.0/zh-CN/api-reference/monitoring-metrics/).", + "name": "metrics_filter", + "in": "query" + }, + { + "type": "string", + "description": "Start time of query. Use **start** and **end** to retrieve metric data over a time span. It is a string with Unix time format, eg. 1559347200. ", + "name": "start", + "in": "query" + }, + { + "type": "string", + "description": "End time of query. Use **start** and **end** to retrieve metric data over a time span. It is a string with Unix time format, eg. 1561939200. ", + "name": "end", + "in": "query" + }, + { + "type": "string", + "default": "10m", + "description": "Time interval. Retrieve metric data at a fixed interval within the time range of start and end. It requires both **start** and **end** are provided. The format is [0-9]+[smhdwy]. Defaults to 10m (i.e. 10 min).", + "name": "step", + "in": "query" + }, + { + "type": "string", + "description": "A timestamp in Unix time format. Retrieve metric data at a single point in time. Defaults to now. Time and the combination of start, end, step are mutually exclusive.", + "name": "time", + "in": "query" + } + ], + "responses": { + "200": { + "description": "ok", + "schema": { + "$ref": "#/definitions/monitoring.Metrics" + } + } + } + } + }, + "/kapis/monitoring.kubesphere.io/v1alpha3/components/{component}": { + "get": { + "produces": [ + "application/json" + ], + "tags": [ + "Component Metrics" + ], + "summary": "Get component-level metric data of the specific system component.", + "operationId": "handleComponentMetricsQuery", + "parameters": [ + { + "type": "string", + "description": "system component to monitor. One of etcd, apiserver, scheduler.", + "name": "component", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "The metric name filter consists of a regexp pattern. It specifies which metric data to return. For example, the following filter matches both etcd server list and total size of the underlying database: `etcd_server_list|etcd_mvcc_db_size`. View available metrics at [kubesphere.io](https://docs.kubesphere.io/advanced-v2.0/zh-CN/api-reference/monitoring-metrics/).", + "name": "metrics_filter", + "in": "query" + }, + { + "type": "string", + "description": "Start time of query. Use **start** and **end** to retrieve metric data over a time span. It is a string with Unix time format, eg. 1559347200. ", + "name": "start", + "in": "query" + }, + { + "type": "string", + "description": "End time of query. Use **start** and **end** to retrieve metric data over a time span. It is a string with Unix time format, eg. 1561939200. ", + "name": "end", + "in": "query" + }, + { + "type": "string", + "default": "10m", + "description": "Time interval. Retrieve metric data at a fixed interval within the time range of start and end. It requires both **start** and **end** are provided. The format is [0-9]+[smhdwy]. Defaults to 10m (i.e. 10 min).", + "name": "step", + "in": "query" + }, + { + "type": "string", + "description": "A timestamp in Unix time format. Retrieve metric data at a single point in time. Defaults to now. Time and the combination of start, end, step are mutually exclusive.", + "name": "time", + "in": "query" + } + ], + "responses": { + "200": { + "description": "ok", + "schema": { + "$ref": "#/definitions/monitoring.Metrics" + } + } + } + } + }, + "/kapis/monitoring.kubesphere.io/v1alpha3/kubesphere": { + "get": { + "produces": [ + "application/json" + ], + "tags": [ + "KubeSphere Metrics" + ], + "summary": "Get platform-level metric data.", + "operationId": "handleKubeSphereMetricsQuery", + "responses": { + "200": { + "description": "ok", + "schema": { + "$ref": "#/definitions/monitoring.Metrics" + } + } + } + } + }, + "/kapis/monitoring.kubesphere.io/v1alpha3/namespaces": { + "get": { + "produces": [ + "application/json" + ], + "tags": [ + "Namespace Metrics" + ], + "summary": "Get namespace-level metric data of all namespaces.", + "operationId": "handleNamespaceMetricsQuery", + "parameters": [ + { + "type": "string", + "description": "The metric name filter consists of a regexp pattern. It specifies which metric data to return. For example, the following filter matches both namespace CPU usage and memory usage: `namespace_cpu_usage|namespace_memory_usage`. View available metrics at [kubesphere.io](https://docs.kubesphere.io/advanced-v2.0/zh-CN/api-reference/monitoring-metrics/).", + "name": "metrics_filter", + "in": "query" + }, + { + "type": "string", + "description": "The namespace filter consists of a regexp pattern. It specifies which namespace data to return. For example, the following filter matches both namespace test and kube-system: `test|kube-system`.", + "name": "resources_filter", + "in": "query" + }, + { + "type": "string", + "description": "Start time of query. Use **start** and **end** to retrieve metric data over a time span. It is a string with Unix time format, eg. 1559347200. ", + "name": "start", + "in": "query" + }, + { + "type": "string", + "description": "End time of query. Use **start** and **end** to retrieve metric data over a time span. It is a string with Unix time format, eg. 1561939200. ", + "name": "end", + "in": "query" + }, + { + "type": "string", + "default": "10m", + "description": "Time interval. Retrieve metric data at a fixed interval within the time range of start and end. It requires both **start** and **end** are provided. The format is [0-9]+[smhdwy]. Defaults to 10m (i.e. 10 min).", + "name": "step", + "in": "query" + }, + { + "type": "string", + "description": "A timestamp in Unix time format. Retrieve metric data at a single point in time. Defaults to now. Time and the combination of start, end, step are mutually exclusive.", + "name": "time", + "in": "query" + }, + { + "type": "string", + "description": "Sort namespaces by the specified metric. Not applicable if **start** and **end** are provided.", + "name": "sort_metric", + "in": "query" + }, + { + "type": "string", + "default": "desc.", + "description": "Sort order. One of asc, desc.", + "name": "sort_type", + "in": "query" + }, + { + "type": "integer", + "description": "The page number. This field paginates result data of each metric, then returns a specific page. For example, setting **page** to 2 returns the second page. It only applies to sorted metric data.", + "name": "page", + "in": "query" + }, + { + "type": "integer", + "default": 5, + "description": "Page size, the maximum number of results in a single page. Defaults to 5.", + "name": "limit", + "in": "query" + } + ], + "responses": { + "200": { + "description": "ok", + "schema": { + "$ref": "#/definitions/monitoring.Metrics" + } + } + } + } + }, + "/kapis/monitoring.kubesphere.io/v1alpha3/namespaces/{namespace}": { + "get": { + "produces": [ + "application/json" + ], + "tags": [ + "Namespace Metrics" + ], + "summary": "Get namespace-level metric data of the specific namespace.", + "operationId": "handleNamespaceMetricsQuery", + "parameters": [ + { + "type": "string", + "description": "The name of the namespace.", + "name": "namespace", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "The metric name filter consists of a regexp pattern. It specifies which metric data to return. For example, the following filter matches both namespace CPU usage and memory usage: `namespace_cpu_usage|namespace_memory_usage`. View available metrics at [kubesphere.io](https://docs.kubesphere.io/advanced-v2.0/zh-CN/api-reference/monitoring-metrics/).", + "name": "metrics_filter", + "in": "query" + }, + { + "type": "string", + "description": "Start time of query. Use **start** and **end** to retrieve metric data over a time span. It is a string with Unix time format, eg. 1559347200. ", + "name": "start", + "in": "query" + }, + { + "type": "string", + "description": "End time of query. Use **start** and **end** to retrieve metric data over a time span. It is a string with Unix time format, eg. 1561939200. ", + "name": "end", + "in": "query" + }, + { + "type": "string", + "default": "10m", + "description": "Time interval. Retrieve metric data at a fixed interval within the time range of start and end. It requires both **start** and **end** are provided. The format is [0-9]+[smhdwy]. Defaults to 10m (i.e. 10 min).", + "name": "step", + "in": "query" + }, + { + "type": "string", + "description": "A timestamp in Unix time format. Retrieve metric data at a single point in time. Defaults to now. Time and the combination of start, end, step are mutually exclusive.", + "name": "time", + "in": "query" + } + ], + "responses": { + "200": { + "description": "ok", + "schema": { + "$ref": "#/definitions/monitoring.Metrics" + } + } + } + } + }, + "/kapis/monitoring.kubesphere.io/v1alpha3/namespaces/{namespace}/persistentvolumeclaims": { + "get": { + "produces": [ + "application/json" + ], + "tags": [ + "PVC Metrics" + ], + "summary": "Get PVC-level metric data of the specific namespace's PVCs.", + "operationId": "handlePVCMetricsQuery", + "parameters": [ + { + "type": "string", + "description": "The name of the namespace.", + "name": "namespace", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "The metric name filter consists of a regexp pattern. It specifies which metric data to return. For example, the following filter matches both PVC available and used inodes: `pvc_inodes_available|pvc_inodes_used`. View available metrics at [kubesphere.io](https://docs.kubesphere.io/advanced-v2.0/zh-CN/api-reference/monitoring-metrics/).", + "name": "metrics_filter", + "in": "query" + }, + { + "type": "string", + "description": "The PVC filter consists of a regexp pattern. It specifies which PVC data to return. For example, the following filter matches any pod whose name begins with redis: `redis.*`.", + "name": "resources_filter", + "in": "query" + }, + { + "type": "string", + "description": "Start time of query. Use **start** and **end** to retrieve metric data over a time span. It is a string with Unix time format, eg. 1559347200. ", + "name": "start", + "in": "query" + }, + { + "type": "string", + "description": "End time of query. Use **start** and **end** to retrieve metric data over a time span. It is a string with Unix time format, eg. 1561939200. ", + "name": "end", + "in": "query" + }, + { + "type": "string", + "default": "10m", + "description": "Time interval. Retrieve metric data at a fixed interval within the time range of start and end. It requires both **start** and **end** are provided. The format is [0-9]+[smhdwy]. Defaults to 10m (i.e. 10 min).", + "name": "step", + "in": "query" + }, + { + "type": "string", + "description": "A timestamp in Unix time format. Retrieve metric data at a single point in time. Defaults to now. Time and the combination of start, end, step are mutually exclusive.", + "name": "time", + "in": "query" + }, + { + "type": "string", + "description": "Sort PVCs by the specified metric. Not applicable if **start** and **end** are provided.", + "name": "sort_metric", + "in": "query" + }, + { + "type": "string", + "default": "desc.", + "description": "Sort order. One of asc, desc.", + "name": "sort_type", + "in": "query" + }, + { + "type": "integer", + "description": "The page number. This field paginates result data of each metric, then returns a specific page. For example, setting **page** to 2 returns the second page. It only applies to sorted metric data.", + "name": "page", + "in": "query" + }, + { + "type": "integer", + "default": 5, + "description": "Page size, the maximum number of results in a single page. Defaults to 5.", + "name": "limit", + "in": "query" + } + ], + "responses": { + "200": { + "description": "ok", + "schema": { + "$ref": "#/definitions/monitoring.Metrics" + } + } + } + } + }, + "/kapis/monitoring.kubesphere.io/v1alpha3/namespaces/{namespace}/persistentvolumeclaims/{pvc}": { + "get": { + "produces": [ + "application/json" + ], + "tags": [ + "PVC Metrics" + ], + "summary": "Get PVC-level metric data of a specific PVC. Navigate to the PVC by the PVC's namespace.", + "operationId": "handlePVCMetricsQuery", + "parameters": [ + { + "type": "string", + "description": "The name of the namespace.", + "name": "namespace", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "PVC name.", + "name": "pvc", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "The metric name filter consists of a regexp pattern. It specifies which metric data to return. For example, the following filter matches both PVC available and used inodes: `pvc_inodes_available|pvc_inodes_used`. View available metrics at [kubesphere.io](https://docs.kubesphere.io/advanced-v2.0/zh-CN/api-reference/monitoring-metrics/).", + "name": "metrics_filter", + "in": "query" + }, + { + "type": "string", + "description": "Start time of query. Use **start** and **end** to retrieve metric data over a time span. It is a string with Unix time format, eg. 1559347200. ", + "name": "start", + "in": "query" + }, + { + "type": "string", + "description": "End time of query. Use **start** and **end** to retrieve metric data over a time span. It is a string with Unix time format, eg. 1561939200. ", + "name": "end", + "in": "query" + }, + { + "type": "string", + "default": "10m", + "description": "Time interval. Retrieve metric data at a fixed interval within the time range of start and end. It requires both **start** and **end** are provided. The format is [0-9]+[smhdwy]. Defaults to 10m (i.e. 10 min).", + "name": "step", + "in": "query" + }, + { + "type": "string", + "description": "A timestamp in Unix time format. Retrieve metric data at a single point in time. Defaults to now. Time and the combination of start, end, step are mutually exclusive.", + "name": "time", + "in": "query" + } + ], + "responses": { + "200": { + "description": "ok", + "schema": { + "$ref": "#/definitions/monitoring.Metrics" + } + } + } + } + }, + "/kapis/monitoring.kubesphere.io/v1alpha3/namespaces/{namespace}/pods": { + "get": { + "produces": [ + "application/json" + ], + "tags": [ + "Pod Metrics" + ], + "summary": "Get pod-level metric data of the specific namespace's pods.", + "operationId": "handlePodMetricsQuery", + "parameters": [ + { + "type": "string", + "description": "The name of the namespace.", + "name": "namespace", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "The metric name filter consists of a regexp pattern. It specifies which metric data to return. For example, the following filter matches both pod CPU usage and memory usage: `pod_cpu_usage|pod_memory_usage`. View available metrics at [kubesphere.io](https://docs.kubesphere.io/advanced-v2.0/zh-CN/api-reference/monitoring-metrics/).", + "name": "metrics_filter", + "in": "query" + }, + { + "type": "string", + "description": "The pod filter consists of a regexp pattern. It specifies which pod data to return. For example, the following filter matches any pod whose name begins with redis: `redis.*`.", + "name": "resources_filter", + "in": "query" + }, + { + "type": "string", + "description": "Start time of query. Use **start** and **end** to retrieve metric data over a time span. It is a string with Unix time format, eg. 1559347200. ", + "name": "start", + "in": "query" + }, + { + "type": "string", + "description": "End time of query. Use **start** and **end** to retrieve metric data over a time span. It is a string with Unix time format, eg. 1561939200. ", + "name": "end", + "in": "query" + }, + { + "type": "string", + "default": "10m", + "description": "Time interval. Retrieve metric data at a fixed interval within the time range of start and end. It requires both **start** and **end** are provided. The format is [0-9]+[smhdwy]. Defaults to 10m (i.e. 10 min).", + "name": "step", + "in": "query" + }, + { + "type": "string", + "description": "A timestamp in Unix time format. Retrieve metric data at a single point in time. Defaults to now. Time and the combination of start, end, step are mutually exclusive.", + "name": "time", + "in": "query" + }, + { + "type": "string", + "description": "Sort pods by the specified metric. Not applicable if **start** and **end** are provided.", + "name": "sort_metric", + "in": "query" + }, + { + "type": "string", + "default": "desc.", + "description": "Sort order. One of asc, desc.", + "name": "sort_type", + "in": "query" + }, + { + "type": "integer", + "description": "The page number. This field paginates result data of each metric, then returns a specific page. For example, setting **page** to 2 returns the second page. It only applies to sorted metric data.", + "name": "page", + "in": "query" + }, + { + "type": "integer", + "default": 5, + "description": "Page size, the maximum number of results in a single page. Defaults to 5.", + "name": "limit", + "in": "query" + } + ], + "responses": { + "200": { + "description": "ok", + "schema": { + "$ref": "#/definitions/monitoring.Metrics" + } + } + } + } + }, + "/kapis/monitoring.kubesphere.io/v1alpha3/namespaces/{namespace}/pods/{pod}": { + "get": { + "produces": [ + "application/json" + ], + "tags": [ + "Pod Metrics" + ], + "summary": "Get pod-level metric data of a specific pod. Navigate to the pod by the pod's namespace.", + "operationId": "handlePodMetricsQuery", + "parameters": [ + { + "type": "string", + "description": "The name of the namespace.", + "name": "namespace", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "Pod name.", + "name": "pod", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "The metric name filter consists of a regexp pattern. It specifies which metric data to return. For example, the following filter matches both pod CPU usage and memory usage: `pod_cpu_usage|pod_memory_usage`. View available metrics at [kubesphere.io](https://docs.kubesphere.io/advanced-v2.0/zh-CN/api-reference/monitoring-metrics/).", + "name": "metrics_filter", + "in": "query" + }, + { + "type": "string", + "description": "Start time of query. Use **start** and **end** to retrieve metric data over a time span. It is a string with Unix time format, eg. 1559347200. ", + "name": "start", + "in": "query" + }, + { + "type": "string", + "description": "End time of query. Use **start** and **end** to retrieve metric data over a time span. It is a string with Unix time format, eg. 1561939200. ", + "name": "end", + "in": "query" + }, + { + "type": "string", + "default": "10m", + "description": "Time interval. Retrieve metric data at a fixed interval within the time range of start and end. It requires both **start** and **end** are provided. The format is [0-9]+[smhdwy]. Defaults to 10m (i.e. 10 min).", + "name": "step", + "in": "query" + }, + { + "type": "string", + "description": "A timestamp in Unix time format. Retrieve metric data at a single point in time. Defaults to now. Time and the combination of start, end, step are mutually exclusive.", + "name": "time", + "in": "query" + } + ], + "responses": { + "200": { + "description": "ok", + "schema": { + "$ref": "#/definitions/monitoring.Metrics" + } + } + } + } + }, + "/kapis/monitoring.kubesphere.io/v1alpha3/namespaces/{namespace}/pods/{pod}/containers": { + "get": { + "produces": [ + "application/json" + ], + "tags": [ + "Container Metrics" + ], + "summary": "Get container-level metric data of a specific pod's containers. Navigate to the pod by the pod's namespace.", + "operationId": "handleContainerMetricsQuery", + "parameters": [ + { + "type": "string", + "description": "The name of the namespace.", + "name": "namespace", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "Pod name.", + "name": "pod", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "The metric name filter consists of a regexp pattern. It specifies which metric data to return. For example, the following filter matches both container CPU usage and memory usage: `container_cpu_usage|container_memory_usage`. View available metrics at [kubesphere.io](https://docs.kubesphere.io/advanced-v2.0/zh-CN/api-reference/monitoring-metrics/).", + "name": "metrics_filter", + "in": "query" + }, + { + "type": "string", + "description": "The container filter consists of a regexp pattern. It specifies which container data to return. For example, the following filter matches container prometheus and prometheus-config-reloader: `prometheus|prometheus-config-reloader`.", + "name": "resources_filter", + "in": "query" + }, + { + "type": "string", + "description": "Start time of query. Use **start** and **end** to retrieve metric data over a time span. It is a string with Unix time format, eg. 1559347200. ", + "name": "start", + "in": "query" + }, + { + "type": "string", + "description": "End time of query. Use **start** and **end** to retrieve metric data over a time span. It is a string with Unix time format, eg. 1561939200. ", + "name": "end", + "in": "query" + }, + { + "type": "string", + "default": "10m", + "description": "Time interval. Retrieve metric data at a fixed interval within the time range of start and end. It requires both **start** and **end** are provided. The format is [0-9]+[smhdwy]. Defaults to 10m (i.e. 10 min).", + "name": "step", + "in": "query" + }, + { + "type": "string", + "description": "A timestamp in Unix time format. Retrieve metric data at a single point in time. Defaults to now. Time and the combination of start, end, step are mutually exclusive.", + "name": "time", + "in": "query" + }, + { + "type": "string", + "description": "Sort containers by the specified metric. Not applicable if **start** and **end** are provided.", + "name": "sort_metric", + "in": "query" + }, + { + "type": "string", + "default": "desc.", + "description": "Sort order. One of asc, desc.", + "name": "sort_type", + "in": "query" + }, + { + "type": "integer", + "description": "The page number. This field paginates result data of each metric, then returns a specific page. For example, setting **page** to 2 returns the second page. It only applies to sorted metric data.", + "name": "page", + "in": "query" + }, + { + "type": "integer", + "default": 5, + "description": "Page size, the maximum number of results in a single page. Defaults to 5.", + "name": "limit", + "in": "query" + } + ], + "responses": { + "200": { + "description": "ok", + "schema": { + "$ref": "#/definitions/monitoring.Metrics" + } + } + } + } + }, + "/kapis/monitoring.kubesphere.io/v1alpha3/namespaces/{namespace}/pods/{pod}/containers/{container}": { + "get": { + "produces": [ + "application/json" + ], + "tags": [ + "Container Metrics" + ], + "summary": "Get container-level metric data of a specific container. Navigate to the container by the pod name and the namespace.", + "operationId": "handleContainerMetricsQuery", + "parameters": [ + { + "type": "string", + "description": "The name of the namespace.", + "name": "namespace", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "Pod name.", + "name": "pod", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "Container name.", + "name": "container", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "The metric name filter consists of a regexp pattern. It specifies which metric data to return. For example, the following filter matches both container CPU usage and memory usage: `container_cpu_usage|container_memory_usage`. View available metrics at [kubesphere.io](https://docs.kubesphere.io/advanced-v2.0/zh-CN/api-reference/monitoring-metrics/).", + "name": "metrics_filter", + "in": "query" + }, + { + "type": "string", + "description": "Start time of query. Use **start** and **end** to retrieve metric data over a time span. It is a string with Unix time format, eg. 1559347200. ", + "name": "start", + "in": "query" + }, + { + "type": "string", + "description": "End time of query. Use **start** and **end** to retrieve metric data over a time span. It is a string with Unix time format, eg. 1561939200. ", + "name": "end", + "in": "query" + }, + { + "type": "string", + "default": "10m", + "description": "Time interval. Retrieve metric data at a fixed interval within the time range of start and end. It requires both **start** and **end** are provided. The format is [0-9]+[smhdwy]. Defaults to 10m (i.e. 10 min).", + "name": "step", + "in": "query" + }, + { + "type": "string", + "description": "A timestamp in Unix time format. Retrieve metric data at a single point in time. Defaults to now. Time and the combination of start, end, step are mutually exclusive.", + "name": "time", + "in": "query" + } + ], + "responses": { + "200": { + "description": "ok", + "schema": { + "$ref": "#/definitions/monitoring.Metrics" + } + } + } + } + }, + "/kapis/monitoring.kubesphere.io/v1alpha3/namespaces/{namespace}/targets/labelsets": { + "get": { + "produces": [ + "application/json" + ], + "tags": [ + "Custom Metrics" + ], + "summary": "List all available labels and values of a metric within a specific time span.", + "operationId": "handleMetricLabelSetQuery", + "parameters": [ + { + "type": "string", + "description": "The name of the namespace.", + "name": "namespace", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "The name of the metric", + "name": "metric", + "in": "query", + "required": true + }, + { + "type": "string", + "description": "Start time of query. It is a string with Unix time format, eg. 1559347200. ", + "name": "start", + "in": "query", + "required": true + }, + { + "type": "string", + "description": "End time of query. It is a string with Unix time format, eg. 1561939200. ", + "name": "end", + "in": "query", + "required": true + } + ], + "responses": { + "200": { + "description": "ok", + "schema": { + "$ref": "#/definitions/monitoring.MetricLabelSet" + } + } + } + } + }, + "/kapis/monitoring.kubesphere.io/v1alpha3/namespaces/{namespace}/targets/metadata": { + "get": { + "produces": [ + "application/json" + ], + "tags": [ + "Custom Metrics" + ], + "summary": "Get metadata of metrics for the specific namespace.", + "operationId": "handleMetadataQuery", + "parameters": [ + { + "type": "string", + "description": "The name of the namespace.", + "name": "namespace", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "ok", + "schema": { + "$ref": "#/definitions/monitoring.Metadata" + } + } + } + } + }, + "/kapis/monitoring.kubesphere.io/v1alpha3/namespaces/{namespace}/targets/query": { + "get": { + "produces": [ + "application/json" + ], + "tags": [ + "Custom Metrics" + ], + "summary": "Make an ad-hoc query in the specific namespace.", + "operationId": "handleAdhocQuery", + "parameters": [ + { + "type": "string", + "description": "The name of the namespace.", + "name": "namespace", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "The expression to be evaluated.", + "name": "expr", + "in": "query" + }, + { + "type": "string", + "description": "Start time of query. Use **start** and **end** to retrieve metric data over a time span. It is a string with Unix time format, eg. 1559347200. ", + "name": "start", + "in": "query" + }, + { + "type": "string", + "description": "End time of query. Use **start** and **end** to retrieve metric data over a time span. It is a string with Unix time format, eg. 1561939200. ", + "name": "end", + "in": "query" + }, + { + "type": "string", + "default": "10m", + "description": "Time interval. Retrieve metric data at a fixed interval within the time range of start and end. It requires both **start** and **end** are provided. The format is [0-9]+[smhdwy]. Defaults to 10m (i.e. 10 min).", + "name": "step", + "in": "query" + }, + { + "type": "string", + "description": "A timestamp in Unix time format. Retrieve metric data at a single point in time. Defaults to now. Time and the combination of start, end, step are mutually exclusive.", + "name": "time", + "in": "query" + } + ], + "responses": { + "200": { + "description": "ok", + "schema": { + "$ref": "#/definitions/monitoring.Metric" + } + } + } + } + }, + "/kapis/monitoring.kubesphere.io/v1alpha3/namespaces/{namespace}/workloads": { + "get": { + "produces": [ + "application/json" + ], + "tags": [ + "Workload Metrics" + ], + "summary": "Get workload-level metric data of a specific namespace's workloads.", + "operationId": "handleWorkloadMetricsQuery", + "parameters": [ + { + "type": "string", + "description": "The name of the namespace.", + "name": "namespace", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "The metric name filter consists of a regexp pattern. It specifies which metric data to return. For example, the following filter matches both workload CPU usage and memory usage: `workload_cpu_usage|workload_memory_usage`. View available metrics at [kubesphere.io](https://docs.kubesphere.io/advanced-v2.0/zh-CN/api-reference/monitoring-metrics/).", + "name": "metrics_filter", + "in": "query" + }, + { + "type": "string", + "description": "The workload filter consists of a regexp pattern. It specifies which workload data to return. For example, the following filter matches any workload whose name begins with prometheus: `prometheus.*`.", + "name": "resources_filter", + "in": "query" + }, + { + "type": "string", + "description": "Start time of query. Use **start** and **end** to retrieve metric data over a time span. It is a string with Unix time format, eg. 1559347200. ", + "name": "start", + "in": "query" + }, + { + "type": "string", + "description": "End time of query. Use **start** and **end** to retrieve metric data over a time span. It is a string with Unix time format, eg. 1561939200. ", + "name": "end", + "in": "query" + }, + { + "type": "string", + "default": "10m", + "description": "Time interval. Retrieve metric data at a fixed interval within the time range of start and end. It requires both **start** and **end** are provided. The format is [0-9]+[smhdwy]. Defaults to 10m (i.e. 10 min).", + "name": "step", + "in": "query" + }, + { + "type": "string", + "description": "A timestamp in Unix time format. Retrieve metric data at a single point in time. Defaults to now. Time and the combination of start, end, step are mutually exclusive.", + "name": "time", + "in": "query" + }, + { + "type": "string", + "description": "Sort workloads by the specified metric. Not applicable if **start** and **end** are provided.", + "name": "sort_metric", + "in": "query" + }, + { + "type": "string", + "default": "desc.", + "description": "Sort order. One of asc, desc.", + "name": "sort_type", + "in": "query" + }, + { + "type": "integer", + "description": "The page number. This field paginates result data of each metric, then returns a specific page. For example, setting **page** to 2 returns the second page. It only applies to sorted metric data.", + "name": "page", + "in": "query" + }, + { + "type": "integer", + "default": 5, + "description": "Page size, the maximum number of results in a single page. Defaults to 5.", + "name": "limit", + "in": "query" + } + ], + "responses": { + "200": { + "description": "ok", + "schema": { + "$ref": "#/definitions/monitoring.Metrics" + } + } + } + } + }, + "/kapis/monitoring.kubesphere.io/v1alpha3/namespaces/{namespace}/workloads/{kind}": { + "get": { + "produces": [ + "application/json" + ], + "tags": [ + "Workload Metrics" + ], + "summary": "Get workload-level metric data of all workloads which belongs to a specific kind.", + "operationId": "handleWorkloadMetricsQuery", + "parameters": [ + { + "type": "string", + "description": "The name of the namespace.", + "name": "namespace", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "Workload kind. One of deployment, daemonset, statefulset.", + "name": "kind", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "The metric name filter consists of a regexp pattern. It specifies which metric data to return. For example, the following filter matches both workload CPU usage and memory usage: `workload_cpu_usage|workload_memory_usage`. View available metrics at [kubesphere.io](https://docs.kubesphere.io/advanced-v2.0/zh-CN/api-reference/monitoring-metrics/).", + "name": "metrics_filter", + "in": "query" + }, + { + "type": "string", + "description": "The workload filter consists of a regexp pattern. It specifies which workload data to return. For example, the following filter matches any workload whose name begins with prometheus: `prometheus.*`.", + "name": "resources_filter", + "in": "query" + }, + { + "type": "string", + "description": "Start time of query. Use **start** and **end** to retrieve metric data over a time span. It is a string with Unix time format, eg. 1559347200. ", + "name": "start", + "in": "query" + }, + { + "type": "string", + "description": "End time of query. Use **start** and **end** to retrieve metric data over a time span. It is a string with Unix time format, eg. 1561939200. ", + "name": "end", + "in": "query" + }, + { + "type": "string", + "default": "10m", + "description": "Time interval. Retrieve metric data at a fixed interval within the time range of start and end. It requires both **start** and **end** are provided. The format is [0-9]+[smhdwy]. Defaults to 10m (i.e. 10 min).", + "name": "step", + "in": "query" + }, + { + "type": "string", + "description": "A timestamp in Unix time format. Retrieve metric data at a single point in time. Defaults to now. Time and the combination of start, end, step are mutually exclusive.", + "name": "time", + "in": "query" + }, + { + "type": "string", + "description": "Sort workloads by the specified metric. Not applicable if **start** and **end** are provided.", + "name": "sort_metric", + "in": "query" + }, + { + "type": "string", + "default": "desc.", + "description": "Sort order. One of asc, desc.", + "name": "sort_type", + "in": "query" + }, + { + "type": "integer", + "description": "The page number. This field paginates result data of each metric, then returns a specific page. For example, setting **page** to 2 returns the second page. It only applies to sorted metric data.", + "name": "page", + "in": "query" + }, + { + "type": "integer", + "default": 5, + "description": "Page size, the maximum number of results in a single page. Defaults to 5.", + "name": "limit", + "in": "query" + } + ], + "responses": { + "200": { + "description": "ok", + "schema": { + "$ref": "#/definitions/monitoring.Metrics" + } + } + } + } + }, + "/kapis/monitoring.kubesphere.io/v1alpha3/namespaces/{namespace}/workloads/{kind}/{workload}/pods": { + "get": { + "produces": [ + "application/json" + ], + "tags": [ + "Pod Metrics" + ], + "summary": "Get pod-level metric data of a specific workload's pods. Navigate to the workload by the namespace.", + "operationId": "handlePodMetricsQuery", + "parameters": [ + { + "type": "string", + "description": "The name of the namespace.", + "name": "namespace", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "Workload kind. One of deployment, daemonset, statefulset.", + "name": "kind", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "Workload name.", + "name": "workload", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "The metric name filter consists of a regexp pattern. It specifies which metric data to return. For example, the following filter matches both pod CPU usage and memory usage: `pod_cpu_usage|pod_memory_usage`. View available metrics at [kubesphere.io](https://docs.kubesphere.io/advanced-v2.0/zh-CN/api-reference/monitoring-metrics/).", + "name": "metrics_filter", + "in": "query" + }, + { + "type": "string", + "description": "The pod filter consists of a regexp pattern. It specifies which pod data to return. For example, the following filter matches any pod whose name begins with redis: `redis.*`.", + "name": "resources_filter", + "in": "query" + }, + { + "type": "string", + "description": "Start time of query. Use **start** and **end** to retrieve metric data over a time span. It is a string with Unix time format, eg. 1559347200. ", + "name": "start", + "in": "query" + }, + { + "type": "string", + "description": "End time of query. Use **start** and **end** to retrieve metric data over a time span. It is a string with Unix time format, eg. 1561939200. ", + "name": "end", + "in": "query" + }, + { + "type": "string", + "default": "10m", + "description": "Time interval. Retrieve metric data at a fixed interval within the time range of start and end. It requires both **start** and **end** are provided. The format is [0-9]+[smhdwy]. Defaults to 10m (i.e. 10 min).", + "name": "step", + "in": "query" + }, + { + "type": "string", + "description": "A timestamp in Unix time format. Retrieve metric data at a single point in time. Defaults to now. Time and the combination of start, end, step are mutually exclusive.", + "name": "time", + "in": "query" + }, + { + "type": "string", + "description": "Sort pods by the specified metric. Not applicable if **start** and **end** are provided.", + "name": "sort_metric", + "in": "query" + }, + { + "type": "string", + "default": "desc.", + "description": "Sort order. One of asc, desc.", + "name": "sort_type", + "in": "query" + }, + { + "type": "integer", + "description": "The page number. This field paginates result data of each metric, then returns a specific page. For example, setting **page** to 2 returns the second page. It only applies to sorted metric data.", + "name": "page", + "in": "query" + }, + { + "type": "integer", + "default": 5, + "description": "Page size, the maximum number of results in a single page. Defaults to 5.", + "name": "limit", + "in": "query" + } + ], + "responses": { + "200": { + "description": "ok", + "schema": { + "$ref": "#/definitions/monitoring.Metrics" + } + } + } + } + }, + "/kapis/monitoring.kubesphere.io/v1alpha3/nodes": { + "get": { + "produces": [ + "application/json" + ], + "tags": [ + "Node Metrics" + ], + "summary": "Get node-level metric data of all nodes.", + "operationId": "handleNodeMetricsQuery", + "parameters": [ + { + "type": "string", + "description": "The metric name filter consists of a regexp pattern. It specifies which metric data to return. For example, the following filter matches both node CPU usage and disk usage: `node_cpu_usage|node_disk_size_usage`. View available metrics at [kubesphere.io](https://docs.kubesphere.io/advanced-v2.0/zh-CN/api-reference/monitoring-metrics/).", + "name": "metrics_filter", + "in": "query" + }, + { + "type": "string", + "description": "The node filter consists of a regexp pattern. It specifies which node data to return. For example, the following filter matches both node i-caojnter and i-cmu82ogj: `i-caojnter|i-cmu82ogj`.", + "name": "resources_filter", + "in": "query" + }, + { + "type": "string", + "description": "Start time of query. Use **start** and **end** to retrieve metric data over a time span. It is a string with Unix time format, eg. 1559347200. ", + "name": "start", + "in": "query" + }, + { + "type": "string", + "description": "End time of query. Use **start** and **end** to retrieve metric data over a time span. It is a string with Unix time format, eg. 1561939200. ", + "name": "end", + "in": "query" + }, + { + "type": "string", + "default": "10m", + "description": "Time interval. Retrieve metric data at a fixed interval within the time range of start and end. It requires both **start** and **end** are provided. The format is [0-9]+[smhdwy]. Defaults to 10m (i.e. 10 min).", + "name": "step", + "in": "query" + }, + { + "type": "string", + "description": "A timestamp in Unix time format. Retrieve metric data at a single point in time. Defaults to now. Time and the combination of start, end, step are mutually exclusive.", + "name": "time", + "in": "query" + }, + { + "type": "string", + "description": "Sort nodes by the specified metric. Not applicable if **start** and **end** are provided.", + "name": "sort_metric", + "in": "query" + }, + { + "type": "string", + "default": "desc.", + "description": "Sort order. One of asc, desc.", + "name": "sort_type", + "in": "query" + }, + { + "type": "integer", + "description": "The page number. This field paginates result data of each metric, then returns a specific page. For example, setting **page** to 2 returns the second page. It only applies to sorted metric data.", + "name": "page", + "in": "query" + }, + { + "type": "integer", + "default": 5, + "description": "Page size, the maximum number of results in a single page. Defaults to 5.", + "name": "limit", + "in": "query" + } + ], + "responses": { + "200": { + "description": "ok", + "schema": { + "$ref": "#/definitions/monitoring.Metrics" + } + } + } + } + }, + "/kapis/monitoring.kubesphere.io/v1alpha3/nodes/{node}": { + "get": { + "produces": [ + "application/json" + ], + "tags": [ + "Node Metrics" + ], + "summary": "Get node-level metric data of the specific node.", + "operationId": "handleNodeMetricsQuery", + "parameters": [ + { + "type": "string", + "description": "Node name.", + "name": "node", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "The metric name filter consists of a regexp pattern. It specifies which metric data to return. For example, the following filter matches both node CPU usage and disk usage: `node_cpu_usage|node_disk_size_usage`. View available metrics at [kubesphere.io](https://docs.kubesphere.io/advanced-v2.0/zh-CN/api-reference/monitoring-metrics/).", + "name": "metrics_filter", + "in": "query" + }, + { + "type": "string", + "description": "Start time of query. Use **start** and **end** to retrieve metric data over a time span. It is a string with Unix time format, eg. 1559347200. ", + "name": "start", + "in": "query" + }, + { + "type": "string", + "description": "End time of query. Use **start** and **end** to retrieve metric data over a time span. It is a string with Unix time format, eg. 1561939200. ", + "name": "end", + "in": "query" + }, + { + "type": "string", + "default": "10m", + "description": "Time interval. Retrieve metric data at a fixed interval within the time range of start and end. It requires both **start** and **end** are provided. The format is [0-9]+[smhdwy]. Defaults to 10m (i.e. 10 min).", + "name": "step", + "in": "query" + }, + { + "type": "string", + "description": "A timestamp in Unix time format. Retrieve metric data at a single point in time. Defaults to now. Time and the combination of start, end, step are mutually exclusive.", + "name": "time", + "in": "query" + } + ], + "responses": { + "200": { + "description": "ok", + "schema": { + "$ref": "#/definitions/monitoring.Metrics" + } + } + } + } + }, + "/kapis/monitoring.kubesphere.io/v1alpha3/nodes/{node}/pods": { + "get": { + "produces": [ + "application/json" + ], + "tags": [ + "Pod Metrics" + ], + "summary": "Get pod-level metric data of all pods on a specific node.", + "operationId": "handlePodMetricsQuery", + "parameters": [ + { + "type": "string", + "description": "Node name.", + "name": "node", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "The metric name filter consists of a regexp pattern. It specifies which metric data to return. For example, the following filter matches both pod CPU usage and memory usage: `pod_cpu_usage|pod_memory_usage`. View available metrics at [kubesphere.io](https://docs.kubesphere.io/advanced-v2.0/zh-CN/api-reference/monitoring-metrics/).", + "name": "metrics_filter", + "in": "query" + }, + { + "type": "string", + "description": "The pod filter consists of a regexp pattern. It specifies which pod data to return. For example, the following filter matches any pod whose name begins with redis: `redis.*`.", + "name": "resources_filter", + "in": "query" + }, + { + "type": "string", + "description": "Start time of query. Use **start** and **end** to retrieve metric data over a time span. It is a string with Unix time format, eg. 1559347200. ", + "name": "start", + "in": "query" + }, + { + "type": "string", + "description": "End time of query. Use **start** and **end** to retrieve metric data over a time span. It is a string with Unix time format, eg. 1561939200. ", + "name": "end", + "in": "query" + }, + { + "type": "string", + "default": "10m", + "description": "Time interval. Retrieve metric data at a fixed interval within the time range of start and end. It requires both **start** and **end** are provided. The format is [0-9]+[smhdwy]. Defaults to 10m (i.e. 10 min).", + "name": "step", + "in": "query" + }, + { + "type": "string", + "description": "A timestamp in Unix time format. Retrieve metric data at a single point in time. Defaults to now. Time and the combination of start, end, step are mutually exclusive.", + "name": "time", + "in": "query" + }, + { + "type": "string", + "description": "Sort pods by the specified metric. Not applicable if **start** and **end** are provided.", + "name": "sort_metric", + "in": "query" + }, + { + "type": "string", + "default": "desc.", + "description": "Sort order. One of asc, desc.", + "name": "sort_type", + "in": "query" + }, + { + "type": "integer", + "description": "The page number. This field paginates result data of each metric, then returns a specific page. For example, setting **page** to 2 returns the second page. It only applies to sorted metric data.", + "name": "page", + "in": "query" + }, + { + "type": "integer", + "default": 5, + "description": "Page size, the maximum number of results in a single page. Defaults to 5.", + "name": "limit", + "in": "query" + } + ], + "responses": { + "200": { + "description": "ok", + "schema": { + "$ref": "#/definitions/monitoring.Metrics" + } + } + } + } + }, + "/kapis/monitoring.kubesphere.io/v1alpha3/nodes/{node}/pods/{pod}": { + "get": { + "produces": [ + "application/json" + ], + "tags": [ + "Pod Metrics" + ], + "summary": "Get pod-level metric data of a specific pod. Navigate to the pod by the node where it is scheduled.", + "operationId": "handlePodMetricsQuery", + "parameters": [ + { + "type": "string", + "description": "Node name.", + "name": "node", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "Pod name.", + "name": "pod", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "The metric name filter consists of a regexp pattern. It specifies which metric data to return. For example, the following filter matches both pod CPU usage and memory usage: `pod_cpu_usage|pod_memory_usage`. View available metrics at [kubesphere.io](https://docs.kubesphere.io/advanced-v2.0/zh-CN/api-reference/monitoring-metrics/).", + "name": "metrics_filter", + "in": "query" + }, + { + "type": "string", + "description": "Start time of query. Use **start** and **end** to retrieve metric data over a time span. It is a string with Unix time format, eg. 1559347200. ", + "name": "start", + "in": "query" + }, + { + "type": "string", + "description": "End time of query. Use **start** and **end** to retrieve metric data over a time span. It is a string with Unix time format, eg. 1561939200. ", + "name": "end", + "in": "query" + }, + { + "type": "string", + "default": "10m", + "description": "Time interval. Retrieve metric data at a fixed interval within the time range of start and end. It requires both **start** and **end** are provided. The format is [0-9]+[smhdwy]. Defaults to 10m (i.e. 10 min).", + "name": "step", + "in": "query" + }, + { + "type": "string", + "description": "A timestamp in Unix time format. Retrieve metric data at a single point in time. Defaults to now. Time and the combination of start, end, step are mutually exclusive.", + "name": "time", + "in": "query" + } + ], + "responses": { + "200": { + "description": "ok", + "schema": { + "$ref": "#/definitions/monitoring.Metrics" + } + } + } + } + }, + "/kapis/monitoring.kubesphere.io/v1alpha3/pods": { + "get": { + "produces": [ + "application/json" + ], + "tags": [ + "Pod Metrics" + ], + "summary": "Get pod-level metric data of the whole cluster's pods.", + "operationId": "handlePodMetricsQuery", + "parameters": [ + { + "type": "string", + "description": "The metric name filter consists of a regexp pattern. It specifies which metric data to return. For example, the following filter matches both pod CPU usage and memory usage: `pod_cpu_usage|pod_memory_usage`. View available metrics at [kubesphere.io](https://docs.kubesphere.io/advanced-v2.0/zh-CN/api-reference/monitoring-metrics/).", + "name": "metrics_filter", + "in": "query" + }, + { + "type": "string", + "description": "The pod filter consists of a regexp pattern. It specifies which pod data to return. For example, the following filter matches any pod whose name begins with redis: `redis.*`.", + "name": "resources_filter", + "in": "query" + }, + { + "type": "string", + "description": "Start time of query. Use **start** and **end** to retrieve metric data over a time span. It is a string with Unix time format, eg. 1559347200. ", + "name": "start", + "in": "query" + }, + { + "type": "string", + "description": "End time of query. Use **start** and **end** to retrieve metric data over a time span. It is a string with Unix time format, eg. 1561939200. ", + "name": "end", + "in": "query" + }, + { + "type": "string", + "default": "10m", + "description": "Time interval. Retrieve metric data at a fixed interval within the time range of start and end. It requires both **start** and **end** are provided. The format is [0-9]+[smhdwy]. Defaults to 10m (i.e. 10 min).", + "name": "step", + "in": "query" + }, + { + "type": "string", + "description": "A timestamp in Unix time format. Retrieve metric data at a single point in time. Defaults to now. Time and the combination of start, end, step are mutually exclusive.", + "name": "time", + "in": "query" + }, + { + "type": "string", + "description": "Sort pods by the specified metric. Not applicable if **start** and **end** are provided.", + "name": "sort_metric", + "in": "query" + }, + { + "type": "string", + "default": "desc.", + "description": "Sort order. One of asc, desc.", + "name": "sort_type", + "in": "query" + }, + { + "type": "integer", + "description": "The page number. This field paginates result data of each metric, then returns a specific page. For example, setting **page** to 2 returns the second page. It only applies to sorted metric data.", + "name": "page", + "in": "query" + }, + { + "type": "integer", + "default": 5, + "description": "Page size, the maximum number of results in a single page. Defaults to 5.", + "name": "limit", + "in": "query" + } + ], + "responses": { + "200": { + "description": "ok", + "schema": { + "$ref": "#/definitions/monitoring.Metrics" + } + } + } + } + }, + "/kapis/monitoring.kubesphere.io/v1alpha3/storageclasses/{storageclass}/persistentvolumeclaims": { + "get": { + "produces": [ + "application/json" + ], + "tags": [ + "PVC Metrics" + ], + "summary": "Get PVC-level metric data of the specific storageclass's PVCs.", + "operationId": "handlePVCMetricsQuery", + "parameters": [ + { + "type": "string", + "description": "The name of the storageclass.", + "name": "storageclass", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "The metric name filter consists of a regexp pattern. It specifies which metric data to return. For example, the following filter matches both PVC available and used inodes: `pvc_inodes_available|pvc_inodes_used`. View available metrics at [kubesphere.io](https://docs.kubesphere.io/advanced-v2.0/zh-CN/api-reference/monitoring-metrics/).", + "name": "metrics_filter", + "in": "query" + }, + { + "type": "string", + "description": "The PVC filter consists of a regexp pattern. It specifies which PVC data to return. For example, the following filter matches any pod whose name begins with redis: `redis.*`.", + "name": "resources_filter", + "in": "query" + }, + { + "type": "string", + "description": "Start time of query. Use **start** and **end** to retrieve metric data over a time span. It is a string with Unix time format, eg. 1559347200. ", + "name": "start", + "in": "query" + }, + { + "type": "string", + "description": "End time of query. Use **start** and **end** to retrieve metric data over a time span. It is a string with Unix time format, eg. 1561939200. ", + "name": "end", + "in": "query" + }, + { + "type": "string", + "default": "10m", + "description": "Time interval. Retrieve metric data at a fixed interval within the time range of start and end. It requires both **start** and **end** are provided. The format is [0-9]+[smhdwy]. Defaults to 10m (i.e. 10 min).", + "name": "step", + "in": "query" + }, + { + "type": "string", + "description": "A timestamp in Unix time format. Retrieve metric data at a single point in time. Defaults to now. Time and the combination of start, end, step are mutually exclusive.", + "name": "time", + "in": "query" + }, + { + "type": "string", + "description": "Sort PVCs by the specified metric. Not applicable if **start** and **end** are provided.", + "name": "sort_metric", + "in": "query" + }, + { + "type": "string", + "default": "desc.", + "description": "Sort order. One of asc, desc.", + "name": "sort_type", + "in": "query" + }, + { + "type": "integer", + "description": "The page number. This field paginates result data of each metric, then returns a specific page. For example, setting **page** to 2 returns the second page. It only applies to sorted metric data.", + "name": "page", + "in": "query" + }, + { + "type": "integer", + "default": 5, + "description": "Page size, the maximum number of results in a single page. Defaults to 5.", + "name": "limit", + "in": "query" + } + ], + "responses": { + "200": { + "description": "ok", + "schema": { + "$ref": "#/definitions/monitoring.Metrics" + } + } + } + } + }, + "/kapis/monitoring.kubesphere.io/v1alpha3/targets/labelsets": { + "get": { + "produces": [ + "application/json" + ], + "tags": [ + "Custom Metrics" + ], + "summary": "List all available labels and values of a metric within a specific time span in the whole cluster.", + "operationId": "handleMetricLabelSetQuery", + "parameters": [ + { + "type": "string", + "description": "The name of the metric", + "name": "metric", + "in": "query", + "required": true + }, + { + "type": "string", + "description": "Start time of query. It is a string with Unix time format, eg. 1559347200. ", + "name": "start", + "in": "query", + "required": true + }, + { + "type": "string", + "description": "End time of query. It is a string with Unix time format, eg. 1561939200. ", + "name": "end", + "in": "query", + "required": true + } + ], + "responses": { + "200": { + "description": "ok", + "schema": { + "$ref": "#/definitions/monitoring.MetricLabelSet" + } + } + } + } + }, + "/kapis/monitoring.kubesphere.io/v1alpha3/targets/metadata": { + "get": { + "produces": [ + "application/json" + ], + "tags": [ + "Custom Metrics" + ], + "summary": "Get metadata of metrics in the whole cluster.", + "operationId": "handleMetadataQuery", + "responses": { + "200": { + "description": "ok", + "schema": { + "$ref": "#/definitions/monitoring.Metadata" + } + } + } + } + }, + "/kapis/monitoring.kubesphere.io/v1alpha3/targets/query": { + "get": { + "produces": [ + "application/json" + ], + "tags": [ + "Custom Metrics" + ], + "summary": "Make an ad-hoc query in the whole cluster.", + "operationId": "handleAdhocQuery", + "parameters": [ + { + "type": "string", + "description": "The expression to be evaluated.", + "name": "expr", + "in": "query" + }, + { + "type": "string", + "description": "Start time of query. Use **start** and **end** to retrieve metric data over a time span. It is a string with Unix time format, eg. 1559347200. ", + "name": "start", + "in": "query" + }, + { + "type": "string", + "description": "End time of query. Use **start** and **end** to retrieve metric data over a time span. It is a string with Unix time format, eg. 1561939200. ", + "name": "end", + "in": "query" + }, + { + "type": "string", + "default": "10m", + "description": "Time interval. Retrieve metric data at a fixed interval within the time range of start and end. It requires both **start** and **end** are provided. The format is [0-9]+[smhdwy]. Defaults to 10m (i.e. 10 min).", + "name": "step", + "in": "query" + }, + { + "type": "string", + "description": "A timestamp in Unix time format. Retrieve metric data at a single point in time. Defaults to now. Time and the combination of start, end, step are mutually exclusive.", + "name": "time", + "in": "query" + } + ], + "responses": { + "200": { + "description": "ok", + "schema": { + "$ref": "#/definitions/monitoring.Metric" + } + } + } + } + }, + "/kapis/monitoring.kubesphere.io/v1alpha3/workspaces": { + "get": { + "produces": [ + "application/json" + ], + "tags": [ + "Workspace Metrics" + ], + "summary": "Get workspace-level metric data of all workspaces.", + "operationId": "handleWorkspaceMetricsQuery", + "parameters": [ + { + "type": "string", + "description": "The metric name filter consists of a regexp pattern. It specifies which metric data to return. For example, the following filter matches both workspace CPU usage and memory usage: `workspace_cpu_usage|workspace_memory_usage`. View available metrics at [kubesphere.io](https://docs.kubesphere.io/advanced-v2.0/zh-CN/api-reference/monitoring-metrics/).", + "name": "metrics_filter", + "in": "query" + }, + { + "type": "string", + "description": "The workspace filter consists of a regexp pattern. It specifies which workspace data to return.", + "name": "resources_filter", + "in": "query" + }, + { + "type": "string", + "description": "Start time of query. Use **start** and **end** to retrieve metric data over a time span. It is a string with Unix time format, eg. 1559347200. ", + "name": "start", + "in": "query" + }, + { + "type": "string", + "description": "End time of query. Use **start** and **end** to retrieve metric data over a time span. It is a string with Unix time format, eg. 1561939200. ", + "name": "end", + "in": "query" + }, + { + "type": "string", + "default": "10m", + "description": "Time interval. Retrieve metric data at a fixed interval within the time range of start and end. It requires both **start** and **end** are provided. The format is [0-9]+[smhdwy]. Defaults to 10m (i.e. 10 min).", + "name": "step", + "in": "query" + }, + { + "type": "string", + "description": "A timestamp in Unix time format. Retrieve metric data at a single point in time. Defaults to now. Time and the combination of start, end, step are mutually exclusive.", + "name": "time", + "in": "query" + }, + { + "type": "string", + "description": "Sort workspaces by the specified metric. Not applicable if **start** and **end** are provided.", + "name": "sort_metric", + "in": "query" + }, + { + "type": "string", + "default": "desc.", + "description": "Sort order. One of asc, desc.", + "name": "sort_type", + "in": "query" + }, + { + "type": "integer", + "description": "The page number. This field paginates result data of each metric, then returns a specific page. For example, setting **page** to 2 returns the second page. It only applies to sorted metric data.", + "name": "page", + "in": "query" + }, + { + "type": "integer", + "default": 5, + "description": "Page size, the maximum number of results in a single page. Defaults to 5.", + "name": "limit", + "in": "query" + } + ], + "responses": { + "200": { + "description": "ok", + "schema": { + "$ref": "#/definitions/monitoring.Metrics" + } + } + } + } + }, + "/kapis/monitoring.kubesphere.io/v1alpha3/workspaces/{workspace}": { + "get": { + "produces": [ + "application/json" + ], + "tags": [ + "Workspace Metrics" + ], + "summary": "Get workspace-level metric data of a specific workspace.", + "operationId": "handleWorkspaceMetricsQuery", + "parameters": [ + { + "type": "string", + "description": "Workspace name.", + "name": "workspace", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "The metric name filter consists of a regexp pattern. It specifies which metric data to return. For example, the following filter matches both workspace CPU usage and memory usage: `workspace_cpu_usage|workspace_memory_usage`. View available metrics at [kubesphere.io](https://docs.kubesphere.io/advanced-v2.0/zh-CN/api-reference/monitoring-metrics/).", + "name": "metrics_filter", + "in": "query" + }, + { + "type": "string", + "description": "Start time of query. Use **start** and **end** to retrieve metric data over a time span. It is a string with Unix time format, eg. 1559347200. ", + "name": "start", + "in": "query" + }, + { + "type": "string", + "description": "End time of query. Use **start** and **end** to retrieve metric data over a time span. It is a string with Unix time format, eg. 1561939200. ", + "name": "end", + "in": "query" + }, + { + "type": "string", + "default": "10m", + "description": "Time interval. Retrieve metric data at a fixed interval within the time range of start and end. It requires both **start** and **end** are provided. The format is [0-9]+[smhdwy]. Defaults to 10m (i.e. 10 min).", + "name": "step", + "in": "query" + }, + { + "type": "string", + "description": "A timestamp in Unix time format. Retrieve metric data at a single point in time. Defaults to now. Time and the combination of start, end, step are mutually exclusive.", + "name": "time", + "in": "query" + }, + { + "type": "string", + "description": "Additional operations. Currently available types is statistics. It retrieves the total number of namespaces, devops projects, members and roles in this workspace at the moment.", + "name": "type", + "in": "query" + } + ], + "responses": { + "200": { + "description": "ok", + "schema": { + "$ref": "#/definitions/monitoring.Metrics" + } + } + } + } + }, + "/kapis/monitoring.kubesphere.io/v1alpha3/workspaces/{workspace}/namespaces": { + "get": { + "produces": [ + "application/json" + ], + "tags": [ + "Namespace Metrics" + ], + "summary": "Get namespace-level metric data of a specific workspace.", + "operationId": "handleNamespaceMetricsQuery", + "parameters": [ + { + "type": "string", + "description": "Workspace name.", + "name": "workspace", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "The metric name filter consists of a regexp pattern. It specifies which metric data to return. For example, the following filter matches both namespace CPU usage and memory usage: `namespace_cpu_usage|namespace_memory_usage`. View available metrics at [kubesphere.io](https://docs.kubesphere.io/advanced-v2.0/zh-CN/api-reference/monitoring-metrics/).", + "name": "metrics_filter", + "in": "query" + }, + { + "type": "string", + "description": "The namespace filter consists of a regexp pattern. It specifies which namespace data to return. For example, the following filter matches both namespace test and kube-system: `test|kube-system`.", + "name": "resources_filter", + "in": "query" + }, + { + "type": "string", + "description": "Start time of query. Use **start** and **end** to retrieve metric data over a time span. It is a string with Unix time format, eg. 1559347200. ", + "name": "start", + "in": "query" + }, + { + "type": "string", + "description": "End time of query. Use **start** and **end** to retrieve metric data over a time span. It is a string with Unix time format, eg. 1561939200. ", + "name": "end", + "in": "query" + }, + { + "type": "string", + "default": "10m", + "description": "Time interval. Retrieve metric data at a fixed interval within the time range of start and end. It requires both **start** and **end** are provided. The format is [0-9]+[smhdwy]. Defaults to 10m (i.e. 10 min).", + "name": "step", + "in": "query" + }, + { + "type": "string", + "description": "A timestamp in Unix time format. Retrieve metric data at a single point in time. Defaults to now. Time and the combination of start, end, step are mutually exclusive.", + "name": "time", + "in": "query" + }, + { + "type": "string", + "description": "Sort namespaces by the specified metric. Not applicable if **start** and **end** are provided.", + "name": "sort_metric", + "in": "query" + }, + { + "type": "string", + "default": "desc.", + "description": "Sort order. One of asc, desc.", + "name": "sort_type", + "in": "query" + }, + { + "type": "integer", + "description": "The page number. This field paginates result data of each metric, then returns a specific page. For example, setting **page** to 2 returns the second page. It only applies to sorted metric data.", + "name": "page", + "in": "query" + }, + { + "type": "integer", + "default": 5, + "description": "Page size, the maximum number of results in a single page. Defaults to 5.", + "name": "limit", + "in": "query" + } + ], + "responses": { + "200": { + "description": "ok", + "schema": { + "$ref": "#/definitions/monitoring.Metrics" + } + } + } + } + }, + "/kapis/network.kubesphere.io/v1alpha2/namespaces/{namespace}/topology": { + "get": { + "produces": [ + "application/json" + ], + "tags": [ + "Network Topology" + ], + "summary": "Get the topology with specifying a namespace", + "operationId": "getNamespaceTopology", + "parameters": [ + { + "type": "string", + "description": "name of the namespace", + "name": "namespace", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "ok", + "schema": { + "$ref": "#/definitions/v1alpha2.TopologyResponse" + } + } + } + } + }, + "/kapis/network.kubesphere.io/v1alpha2/namespaces/{namespace}/topology/{node_id}": { + "get": { + "produces": [ + "application/json" + ], + "tags": [ + "Network Topology" + ], + "summary": "Get the topology with specifying a node id in the whole topology and specifying a namespace", + "operationId": "getNamespaceNodeTopology", + "parameters": [ + { + "type": "string", + "description": "name of the namespace", + "name": "namespace", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "id of the node in the whole topology", + "name": "node_id", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "ok", + "schema": { + "$ref": "#/definitions/v1alpha2.NodeResponse" + } + } + } + } + }, + "/kapis/openpitrix.io/v1/applications": { + "get": { + "produces": [ + "application/json" + ], + "tags": [ + "App Instance" + ], + "summary": "List all applications", + "operationId": "ListApplications", + "parameters": [ + { + "type": "string", + "format": "key=value,key~value", + "description": "query conditions, connect multiple conditions with commas, equal symbol for exact query, wave symbol for fuzzy query e.g. name~a", + "name": "conditions", + "in": "query" + }, + { + "type": "string", + "format": "limit=%d,page=%d", + "default": "limit=10,page=1", + "description": "paging query, e.g. limit=100,page=1", + "name": "paging", + "in": "query" + } + ], + "responses": { + "200": { + "description": "ok", + "schema": { + "$ref": "#/definitions/models.PageableResponse" + } + } + } + } + }, + "/kapis/openpitrix.io/v1/apps": { + "get": { + "produces": [ + "application/json" + ], + "tags": [ + "App Template" + ], + "summary": "List app templates", + "operationId": "ListApps", + "parameters": [ + { + "type": "string", + "format": "key=%s,key~%s", + "description": "query conditions,connect multiple conditions with commas, equal symbol for exact query, wave symbol for fuzzy query e.g. name~a", + "name": "conditions", + "in": "query" + }, + { + "type": "string", + "format": "limit=%d,page=%d", + "default": "limit=10,page=1", + "description": "paging query, e.g. limit=100,page=1", + "name": "paging", + "in": "query" + }, + { + "type": "string", + "description": "sort parameters, e.g. reverse=true", + "name": "reverse", + "in": "query" + }, + { + "type": "string", + "description": "sort parameters, e.g. orderBy=createTime", + "name": "orderBy", + "in": "query" + } + ], + "responses": { + "200": { + "description": "ok", + "schema": { + "$ref": "#/definitions/models.PageableResponse" + } + } + } + }, + "post": { + "produces": [ + "application/json" + ], + "tags": [ + "App Template" + ], + "summary": "Create a new app template", + "operationId": "CreateApp", + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/openpitrix.CreateAppRequest" + } + }, + { + "type": "string", + "description": "app template id", + "name": "app", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "ok", + "schema": { + "$ref": "#/definitions/openpitrix.CreateAppResponse" + } + } + } + } + }, + "/kapis/openpitrix.io/v1/apps/{app}": { + "get": { + "produces": [ + "application/json" + ], + "tags": [ + "App Template" + ], + "summary": "Describe the specified app template", + "operationId": "DescribeApp", + "parameters": [ + { + "type": "string", + "description": "app template id", + "name": "app", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "ok", + "schema": { + "$ref": "#/definitions/openpitrix.AppVersion" + } + } + } + }, + "delete": { + "produces": [ + "application/json" + ], + "tags": [ + "App Template" + ], + "summary": "Delete the specified app template", + "operationId": "DeleteApp", + "parameters": [ + { + "type": "string", + "description": "app template id", + "name": "app", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "ok", + "schema": { + "$ref": "#/definitions/errors.Error" + } + } + } + }, + "patch": { + "consumes": [ + "application/json", + "application/merge-patch+json", + "application/json-patch+json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "App Template" + ], + "summary": "Patch the specified app template", + "operationId": "ModifyApp", + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/openpitrix.ModifyAppVersionRequest" + } + }, + { + "type": "string", + "description": "app template id", + "name": "app", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "ok", + "schema": { + "$ref": "#/definitions/errors.Error" + } + } + } + } + }, + "/kapis/openpitrix.io/v1/apps/{app}/action": { + "post": { + "produces": [ + "application/json" + ], + "tags": [ + "App Management" + ], + "summary": "Perform recover or suspend operation on app", + "operationId": "DoAppAction", + "parameters": [ + { + "type": "string", + "description": "app template version id", + "name": "version", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "app template id", + "name": "app", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "ok", + "schema": { + "$ref": "#/definitions/errors.Error" + } + } + } + } + }, + "/kapis/openpitrix.io/v1/apps/{app}/audits": { + "get": { + "produces": [ + "application/json" + ], + "tags": [ + "App Management" + ], + "summary": "List audits information of the specific app template", + "operationId": "ListAppVersionAudits", + "parameters": [ + { + "type": "string", + "description": "app template id", + "name": "app", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "ok", + "schema": { + "$ref": "#/definitions/openpitrix.AppVersionAudit" + } + } + } + } + }, + "/kapis/openpitrix.io/v1/apps/{app}/versions": { + "get": { + "produces": [ + "application/json" + ], + "tags": [ + "App Template" + ], + "summary": "Get active versions of app, can filter with these fields(version_id, app_id, name, owner, description, package_name, status, type), default return all active app versions", + "operationId": "ListAppVersions", + "parameters": [ + { + "type": "string", + "format": "key=%s,key~%s", + "description": "query conditions,connect multiple conditions with commas, equal symbol for exact query, wave symbol for fuzzy query e.g. name~a", + "name": "conditions", + "in": "query" + }, + { + "type": "string", + "format": "limit=%d,page=%d", + "default": "limit=10,page=1", + "description": "paging query, e.g. limit=100,page=1", + "name": "paging", + "in": "query" + }, + { + "type": "string", + "description": "app template id", + "name": "app", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "sort parameters, e.g. reverse=true", + "name": "reverse", + "in": "query" + }, + { + "type": "string", + "description": "sort parameters, e.g. orderBy=createTime", + "name": "orderBy", + "in": "query" + } + ], + "responses": { + "200": { + "description": "ok", + "schema": { + "$ref": "#/definitions/models.PageableResponse" + } + } + } + }, + "post": { + "produces": [ + "application/json" + ], + "tags": [ + "App Template" + ], + "summary": "Create a new app template version", + "operationId": "CreateAppVersion", + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/openpitrix.CreateAppVersionRequest" + } + }, + { + "type": "string", + "description": "Validate format of package(pack by op tool)", + "name": "validate", + "in": "query" + }, + { + "type": "string", + "description": "app template id", + "name": "app", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "ok", + "schema": { + "$ref": "#/definitions/openpitrix.CreateAppVersionResponse" + } + } + } + } + }, + "/kapis/openpitrix.io/v1/apps/{app}/versions/{version}": { + "get": { + "produces": [ + "application/json" + ], + "tags": [ + "App Template" + ], + "summary": "Describe the specified app template version", + "operationId": "DescribeAppVersion", + "parameters": [ + { + "type": "string", + "description": "app template version id", + "name": "version", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "app template id", + "name": "app", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "ok", + "schema": { + "$ref": "#/definitions/openpitrix.AppVersion" + } + } + } + }, + "delete": { + "produces": [ + "application/json" + ], + "tags": [ + "App Template" + ], + "summary": "Delete the specified app template version", + "operationId": "DeleteAppVersion", + "parameters": [ + { + "type": "string", + "description": "app template version id", + "name": "version", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "app template id", + "name": "app", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "ok", + "schema": { + "$ref": "#/definitions/errors.Error" + } + } + } + }, + "patch": { + "consumes": [ + "application/json", + "application/merge-patch+json", + "application/json-patch+json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "App Template" + ], + "summary": "Patch the specified app template version", + "operationId": "ModifyAppVersion", + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/openpitrix.ModifyAppVersionRequest" + } + }, + { + "type": "string", + "description": "app template version id", + "name": "version", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "app template id", + "name": "app", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "ok", + "schema": { + "$ref": "#/definitions/errors.Error" + } + } + } + } + }, + "/kapis/openpitrix.io/v1/apps/{app}/versions/{version}/action": { + "post": { + "produces": [ + "application/json" + ], + "tags": [ + "App Management" + ], + "summary": "Perform submit or other operations on app", + "operationId": "DoAppVersionAction", + "parameters": [ + { + "type": "string", + "description": "app template version id", + "name": "version", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "app template id", + "name": "app", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "ok", + "schema": { + "$ref": "#/definitions/errors.Error" + } + } + } + } + }, + "/kapis/openpitrix.io/v1/apps/{app}/versions/{version}/audits": { + "get": { + "produces": [ + "application/json" + ], + "tags": [ + "App Management" + ], + "summary": "List audits information of version-specific app template", + "operationId": "ListAppVersionAudits", + "parameters": [ + { + "type": "string", + "description": "app template version id", + "name": "version", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "app template id", + "name": "app", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "ok", + "schema": { + "$ref": "#/definitions/openpitrix.AppVersionAudit" + } + } + } + } + }, + "/kapis/openpitrix.io/v1/apps/{app}/versions/{version}/files": { + "get": { + "produces": [ + "application/json" + ], + "tags": [ + "App Template" + ], + "summary": "Get app template package files", + "operationId": "GetAppVersionFiles", + "parameters": [ + { + "type": "string", + "description": "app template version id", + "name": "version", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "app template id", + "name": "app", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "ok", + "schema": { + "$ref": "#/definitions/openpitrix.GetAppVersionPackageFilesResponse" + } + } + } + } + }, + "/kapis/openpitrix.io/v1/apps/{app}/versions/{version}/package": { + "get": { + "produces": [ + "application/json" + ], + "tags": [ + "App Template" + ], + "summary": "Get packages of version-specific app", + "operationId": "GetAppVersionPackage", + "parameters": [ + { + "type": "string", + "description": "app template version id", + "name": "version", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "app template id", + "name": "app", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "ok", + "schema": { + "$ref": "#/definitions/openpitrix.GetAppVersionPackageResponse" + } + } + } + } + }, + "/kapis/openpitrix.io/v1/attachments/{attachment}": { + "get": { + "produces": [ + "application/json" + ], + "tags": [ + "Attachment" + ], + "summary": "Get attachment by attachment id", + "operationId": "DescribeAttachment", + "parameters": [ + { + "type": "string", + "description": "attachment id", + "name": "attachment", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "ok", + "schema": { + "$ref": "#/definitions/openpitrix.Attachment" + } + } + } + } + }, + "/kapis/openpitrix.io/v1/categories": { + "get": { + "produces": [ + "application/json" + ], + "tags": [ + "Category" + ], + "summary": "List categories", + "operationId": "ListCategories", + "parameters": [ + { + "type": "string", + "format": "key=%s,key~%s", + "description": "query conditions,connect multiple conditions with commas, equal symbol for exact query, wave symbol for fuzzy query e.g. name~a", + "name": "conditions", + "in": "query" + }, + { + "type": "string", + "format": "limit=%d,page=%d", + "default": "limit=10,page=1", + "description": "paging query, e.g. limit=100,page=1", + "name": "paging", + "in": "query" + }, + { + "type": "string", + "description": "sort parameters, e.g. reverse=true", + "name": "reverse", + "in": "query" + }, + { + "type": "string", + "description": "sort parameters, e.g. orderBy=createTime", + "name": "orderBy", + "in": "query" + } + ], + "responses": { + "200": { + "description": "ok", + "schema": { + "$ref": "#/definitions/models.PageableResponse" + } + } + } + }, + "post": { + "produces": [ + "application/json" + ], + "tags": [ + "Category" + ], + "summary": "Create app template category", + "operationId": "CreateCategory", + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/openpitrix.CreateCategoryRequest" + } + }, + { + "type": "string", + "description": "app template id", + "name": "app", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "ok", + "schema": { + "$ref": "#/definitions/openpitrix.CreateCategoryResponse" + } + } + } + } + }, + "/kapis/openpitrix.io/v1/categories/{category}": { + "get": { + "produces": [ + "application/json" + ], + "tags": [ + "Category" + ], + "summary": "Describe the specified category", + "operationId": "DescribeCategory", + "parameters": [ + { + "type": "string", + "description": "category id", + "name": "category", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "ok", + "schema": { + "$ref": "#/definitions/openpitrix.Category" + } + } + } + }, + "delete": { + "produces": [ + "application/json" + ], + "tags": [ + "Category" + ], + "summary": "Delete the specified category", + "operationId": "DeleteCategory", + "parameters": [ + { + "type": "string", + "description": "category id", + "name": "category", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "ok", + "schema": { + "$ref": "#/definitions/errors.Error" + } + } + } + }, + "patch": { + "consumes": [ + "application/json", + "application/merge-patch+json", + "application/json-patch+json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "Category" + ], + "summary": "Patch the specified category", + "operationId": "ModifyCategory", + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/openpitrix.ModifyCategoryRequest" + } + }, + { + "type": "string", + "description": "category id", + "name": "category", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "ok", + "schema": { + "$ref": "#/definitions/errors.Error" + } + } + } + } + }, + "/kapis/openpitrix.io/v1/repos": { + "get": { + "produces": [ + "application/json" + ], + "tags": [ + "Repository" + ], + "summary": "List repositories in the specified workspace", + "operationId": "ListRepos", + "parameters": [ + { + "type": "string", + "format": "key=%s,key~%s", + "description": "query conditions,connect multiple conditions with commas, equal symbol for exact query, wave symbol for fuzzy query e.g. name~a", + "name": "conditions", + "in": "query" + }, + { + "type": "string", + "format": "limit=%d,page=%d", + "default": "limit=10,page=1", + "description": "paging query, e.g. limit=100,page=1", + "name": "paging", + "in": "query" + }, + { + "type": "string", + "description": "sort parameters, e.g. reverse=true", + "name": "reverse", + "in": "query" + }, + { + "type": "string", + "description": "sort parameters, e.g. orderBy=createTime", + "name": "orderBy", + "in": "query" + } + ], + "responses": { + "200": { + "description": "ok", + "schema": { + "$ref": "#/definitions/models.PageableResponse" + } + } + } + }, + "post": { + "produces": [ + "application/json" + ], + "tags": [ + "Repository" + ], + "summary": "Create repository in the specified workspace, repository used to store package of app", + "operationId": "CreateRepo", + "parameters": [ + { + "type": "string", + "description": "Validate repository", + "name": "validate", + "in": "query" + }, + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/openpitrix.CreateRepoRequest" + } + } + ], + "responses": { + "200": { + "description": "ok", + "schema": { + "$ref": "#/definitions/openpitrix.CreateRepoResponse" + } + } + } + } + }, + "/kapis/openpitrix.io/v1/repos/{repo}": { + "get": { + "produces": [ + "application/json" + ], + "tags": [ + "Repository" + ], + "summary": "Describe the specified repository in the specified workspace", + "operationId": "DescribeRepo", + "parameters": [ + { + "type": "string", + "description": "repo id", + "name": "repo", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "ok", + "schema": { + "$ref": "#/definitions/openpitrix.Repo" + } + } + } + }, + "delete": { + "produces": [ + "application/json" + ], + "tags": [ + "Repository" + ], + "summary": "Delete the specified repository in the specified workspace", + "operationId": "DeleteRepo", + "parameters": [ + { + "type": "string", + "description": "repo id", + "name": "repo", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "ok", + "schema": { + "$ref": "#/definitions/errors.Error" + } + } + } + }, + "patch": { + "consumes": [ + "application/json", + "application/merge-patch+json", + "application/json-patch+json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "Repository" + ], + "summary": "Patch the specified repository in the specified workspace", + "operationId": "ModifyRepo", + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/openpitrix.ModifyRepoRequest" + } + }, + { + "type": "string", + "description": "repo id", + "name": "repo", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "ok", + "schema": { + "$ref": "#/definitions/errors.Error" + } + } + } + } + }, + "/kapis/openpitrix.io/v1/repos/{repo}/action": { + "post": { + "produces": [ + "application/json" + ], + "tags": [ + "App Management" + ], + "summary": "Start index repository event", + "operationId": "DoRepoAction", + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/openpitrix.RepoActionRequest" + } + }, + { + "type": "string", + "description": "repo id", + "name": "repo", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "ok", + "schema": { + "$ref": "#/definitions/errors.Error" + } + } + } + } + }, + "/kapis/openpitrix.io/v1/repos/{repo}/events": { + "get": { + "produces": [ + "application/json" + ], + "tags": [ + "Repository" + ], + "summary": "Get repository events", + "operationId": "ListRepoEvents", + "parameters": [ + { + "type": "string", + "description": "repo id", + "name": "repo", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "ok", + "schema": { + "$ref": "#/definitions/models.PageableResponse" + } + } + } + } + }, + "/kapis/openpitrix.io/v1/reviews": { + "get": { + "produces": [ + "application/json" + ], + "tags": [ + "App Management" + ], + "summary": "Get reviews of version-specific app", + "operationId": "ListReviews", + "parameters": [ + { + "type": "string", + "format": "key=%s,key~%s", + "description": "query conditions,connect multiple conditions with commas, equal symbol for exact query, wave symbol for fuzzy query e.g. name~a", + "name": "conditions", + "in": "query" + }, + { + "type": "string", + "format": "limit=%d,page=%d", + "default": "limit=10,page=1", + "description": "paging query, e.g. limit=100,page=1", + "name": "paging", + "in": "query" + } + ], + "responses": { + "200": { + "description": "ok", + "schema": { + "$ref": "#/definitions/openpitrix.AppVersionReview" + } + } + } + } + }, + "/kapis/openpitrix.io/v1/workspaces/{workspace}/apps": { + "get": { + "produces": [ + "application/json" + ], + "tags": [ + "App Template" + ], + "summary": "List app templates in the specified workspace.", + "operationId": "ListApps", + "parameters": [ + { + "type": "string", + "description": "workspace name", + "name": "workspace", + "in": "path", + "required": true + }, + { + "type": "string", + "format": "key=%s,key~%s", + "description": "query conditions,connect multiple conditions with commas, equal symbol for exact query, wave symbol for fuzzy query e.g. name~a", + "name": "conditions", + "in": "query" + }, + { + "type": "string", + "format": "limit=%d,page=%d", + "default": "limit=10,page=1", + "description": "paging query, e.g. limit=100,page=1", + "name": "paging", + "in": "query" + }, + { + "type": "string", + "description": "sort parameters, e.g. reverse=true", + "name": "reverse", + "in": "query" + }, + { + "type": "string", + "description": "sort parameters, e.g. orderBy=createTime", + "name": "orderBy", + "in": "query" + } + ], + "responses": { + "200": { + "description": "ok", + "schema": { + "$ref": "#/definitions/models.PageableResponse" + } + } + } + }, + "post": { + "produces": [ + "application/json" + ], + "tags": [ + "App Template" + ], + "summary": "Create a new app template", + "operationId": "CreateApp", + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/openpitrix.CreateAppRequest" + } + }, + { + "type": "string", + "description": "app template id", + "name": "app", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "ok", + "schema": { + "$ref": "#/definitions/openpitrix.CreateAppResponse" + } + } + } + } + }, + "/kapis/openpitrix.io/v1/workspaces/{workspace}/apps/{app}": { + "get": { + "produces": [ + "application/json" + ], + "tags": [ + "App Template" + ], + "summary": "Describe the specified app template", + "operationId": "DescribeApp", + "parameters": [ + { + "type": "string", + "description": "app template id", + "name": "app", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "ok", + "schema": { + "$ref": "#/definitions/openpitrix.AppVersion" + } + } + } + }, + "delete": { + "produces": [ + "application/json" + ], + "tags": [ + "App Template" + ], + "summary": "Delete the specified app template", + "operationId": "DeleteApp", + "parameters": [ + { + "type": "string", + "description": "app template id", + "name": "app", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "ok", + "schema": { + "$ref": "#/definitions/errors.Error" + } + } + } + }, + "patch": { + "consumes": [ + "application/json", + "application/merge-patch+json", + "application/json-patch+json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "App Template" + ], + "summary": "Patch the specified app template", + "operationId": "ModifyApp", + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/openpitrix.ModifyAppVersionRequest" + } + }, + { + "type": "string", + "description": "app template id", + "name": "app", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "ok", + "schema": { + "$ref": "#/definitions/errors.Error" + } + } + } + } + }, + "/kapis/openpitrix.io/v1/workspaces/{workspace}/apps/{app}/action": { + "post": { + "produces": [ + "application/json" + ], + "tags": [ + "App Management" + ], + "summary": "Perform recover or suspend operation on app", + "operationId": "DoAppAction", + "parameters": [ + { + "type": "string", + "description": "app template version id", + "name": "version", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "app template id", + "name": "app", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "ok", + "schema": { + "$ref": "#/definitions/errors.Error" + } + } + } + } + }, + "/kapis/openpitrix.io/v1/workspaces/{workspace}/apps/{app}/versions": { + "get": { + "produces": [ + "application/json" + ], + "tags": [ + "App Template" + ], + "summary": "Get active versions of app, can filter with these fields(version_id, app_id, name, owner, description, package_name, status, type), default return all active app versions", + "operationId": "ListAppVersions", + "parameters": [ + { + "type": "string", + "format": "key=%s,key~%s", + "description": "query conditions,connect multiple conditions with commas, equal symbol for exact query, wave symbol for fuzzy query e.g. name~a", + "name": "conditions", + "in": "query" + }, + { + "type": "string", + "format": "limit=%d,page=%d", + "default": "limit=10,page=1", + "description": "paging query, e.g. limit=100,page=1", + "name": "paging", + "in": "query" + }, + { + "type": "string", + "description": "app template id", + "name": "app", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "sort parameters, e.g. reverse=true", + "name": "reverse", + "in": "query" + }, + { + "type": "string", + "description": "sort parameters, e.g. orderBy=createTime", + "name": "orderBy", + "in": "query" + } + ], + "responses": { + "200": { + "description": "ok", + "schema": { + "$ref": "#/definitions/models.PageableResponse" + } + } + } + }, + "post": { + "produces": [ + "application/json" + ], + "tags": [ + "App Template" + ], + "summary": "Create a new app template version", + "operationId": "CreateAppVersion", + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/openpitrix.CreateAppVersionRequest" + } + }, + { + "type": "string", + "description": "Validate format of package(pack by op tool)", + "name": "validate", + "in": "query" + }, + { + "type": "string", + "description": "app template id", + "name": "app", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "ok", + "schema": { + "$ref": "#/definitions/openpitrix.CreateAppVersionResponse" + } + } + } + } + }, + "/kapis/openpitrix.io/v1/workspaces/{workspace}/apps/{app}/versions/{version}": { + "get": { + "produces": [ + "application/json" + ], + "tags": [ + "App Template" + ], + "summary": "Describe the specified app template version", + "operationId": "DescribeAppVersion", + "parameters": [ + { + "type": "string", + "description": "app template version id", + "name": "version", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "app template id", + "name": "app", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "ok", + "schema": { + "$ref": "#/definitions/openpitrix.AppVersion" + } + } + } + }, + "delete": { + "produces": [ + "application/json" + ], + "tags": [ + "App Template" + ], + "summary": "Delete the specified app template version", + "operationId": "DeleteAppVersion", + "parameters": [ + { + "type": "string", + "description": "app template version id", + "name": "version", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "app template id", + "name": "app", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "ok", + "schema": { + "$ref": "#/definitions/errors.Error" + } + } + } + }, + "patch": { + "consumes": [ + "application/json", + "application/merge-patch+json", + "application/json-patch+json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "App Template" + ], + "summary": "Patch the specified app template version", + "operationId": "ModifyAppVersion", + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/openpitrix.ModifyAppVersionRequest" + } + }, + { + "type": "string", + "description": "app template version id", + "name": "version", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "app template id", + "name": "app", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "ok", + "schema": { + "$ref": "#/definitions/errors.Error" + } + } + } + } + }, + "/kapis/openpitrix.io/v1/workspaces/{workspace}/apps/{app}/versions/{version}/action": { + "post": { + "produces": [ + "application/json" + ], + "tags": [ + "App Management" + ], + "summary": "Perform submit or other operations on app", + "operationId": "DoAppVersionAction", + "parameters": [ + { + "type": "string", + "description": "app template version id", + "name": "version", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "app template id", + "name": "app", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "ok", + "schema": { + "$ref": "#/definitions/errors.Error" + } + } + } + } + }, + "/kapis/openpitrix.io/v1/workspaces/{workspace}/apps/{app}/versions/{version}/audits": { + "get": { + "produces": [ + "application/json" + ], + "tags": [ + "App Management" + ], + "summary": "List audits information of version-specific app template", + "operationId": "ListAppVersionAudits", + "parameters": [ + { + "type": "string", + "description": "app template version id", + "name": "version", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "app template id", + "name": "app", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "ok", + "schema": { + "$ref": "#/definitions/openpitrix.AppVersionAudit" + } + } + } + } + }, + "/kapis/openpitrix.io/v1/workspaces/{workspace}/clusters/{cluster}/applications": { + "get": { + "produces": [ + "application/json" + ], + "tags": [ + "App Instance" + ], + "summary": "List all applications in special cluster", + "operationId": "ListApplications", + "parameters": [ + { + "type": "string", + "format": "key=value,key~value", + "description": "query conditions, connect multiple conditions with commas, equal symbol for exact query, wave symbol for fuzzy query e.g. name~a", + "name": "conditions", + "in": "query" + }, + { + "type": "string", + "description": "the name of the cluster.", + "name": "cluster", + "in": "path", + "required": true + }, + { + "type": "string", + "format": "limit=%d,page=%d", + "default": "limit=10,page=1", + "description": "paging query, e.g. limit=100,page=1", + "name": "paging", + "in": "query" + } + ], + "responses": { + "200": { + "description": "ok", + "schema": { + "$ref": "#/definitions/models.PageableResponse" + } + } + } + } + }, + "/kapis/openpitrix.io/v1/workspaces/{workspace}/clusters/{cluster}/namespaces/{namespace}/applications": { + "get": { + "produces": [ + "application/json" + ], + "tags": [ + "App Instance" + ], + "summary": "List all applications within the specified namespace", + "operationId": "ListApplications", + "parameters": [ + { + "type": "string", + "format": "key=value,key~value", + "description": "query conditions, connect multiple conditions with commas, equal symbol for exact query, wave symbol for fuzzy query e.g. name~a", + "name": "conditions", + "in": "query" + }, + { + "type": "string", + "description": "the name of the cluster.", + "name": "cluster", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "the name of the project", + "name": "namespace", + "in": "path", + "required": true + }, + { + "type": "string", + "format": "limit=%d,page=%d", + "default": "limit=10,page=1", + "description": "paging query, e.g. limit=100,page=1", + "name": "paging", + "in": "query" + } + ], + "responses": { + "200": { + "description": "ok", + "schema": { + "$ref": "#/definitions/models.PageableResponse" + } + } + } + }, + "post": { + "produces": [ + "application/json" + ], + "tags": [ + "App Instance" + ], + "summary": "Deploy a new application", + "operationId": "CreateApplication", + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/openpitrix.CreateClusterRequest" + } + }, + { + "type": "string", + "description": "the name of the cluster.", + "name": "cluster", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "the name of the project", + "name": "namespace", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "ok", + "schema": { + "$ref": "#/definitions/errors.Error" + } + } + } + } + }, + "/kapis/openpitrix.io/v1/workspaces/{workspace}/clusters/{cluster}/namespaces/{namespace}/applications/{application}": { + "get": { + "produces": [ + "application/json" + ], + "tags": [ + "App Instance" + ], + "summary": "Describe the specified application of the namespace", + "operationId": "DescribeApplication", + "parameters": [ + { + "type": "string", + "description": "the name of the cluster.", + "name": "cluster", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "the name of the project", + "name": "namespace", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "the id of the application", + "name": "application", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "ok", + "schema": { + "$ref": "#/definitions/openpitrix.Application" + } + } + } + }, + "post": { + "consumes": [ + "application/json", + "application/merge-patch+json", + "application/json-patch+json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "App Instance" + ], + "summary": "Upgrade application", + "operationId": "UpgradeApplication", + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/openpitrix.UpgradeClusterRequest" + } + }, + { + "type": "string", + "description": "the name of the cluster.", + "name": "cluster", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "the name of the project", + "name": "namespace", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "the id of the application", + "name": "application", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "ok", + "schema": { + "$ref": "#/definitions/errors.Error" + } + } + } + }, + "delete": { + "produces": [ + "application/json" + ], + "tags": [ + "App Instance" + ], + "summary": "Delete the specified application", + "operationId": "DeleteApplication", + "parameters": [ + { + "type": "string", + "description": "the name of the cluster.", + "name": "cluster", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "the name of the project", + "name": "namespace", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "the id of the application", + "name": "application", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "ok", + "schema": { + "$ref": "#/definitions/errors.Error" + } + } + } + }, + "patch": { + "consumes": [ + "application/json", + "application/merge-patch+json", + "application/json-patch+json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "App Instance" + ], + "summary": "Modify application", + "operationId": "ModifyApplication", + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/openpitrix.ModifyClusterAttributesRequest" + } + }, + { + "type": "string", + "description": "the name of the cluster.", + "name": "cluster", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "the name of the project", + "name": "namespace", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "the id of the application", + "name": "application", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "ok", + "schema": { + "$ref": "#/definitions/errors.Error" + } + } + } + } + }, + "/kapis/openpitrix.io/v1/workspaces/{workspace}/namespaces/{namespace}/applications": { + "get": { + "produces": [ + "application/json" + ], + "tags": [ + "App Instance" + ], + "summary": "List all applications within the specified namespace", + "operationId": "ListApplications", + "parameters": [ + { + "type": "string", + "format": "key=value,key~value", + "description": "query conditions, connect multiple conditions with commas, equal symbol for exact query, wave symbol for fuzzy query e.g. name~a", + "name": "conditions", + "in": "query" + }, + { + "type": "string", + "description": "the name of the project.", + "name": "namespace", + "in": "path", + "required": true + }, + { + "type": "string", + "format": "limit=%d,page=%d", + "default": "limit=10,page=1", + "description": "paging query, e.g. limit=100,page=1", + "name": "paging", + "in": "query" + } + ], + "responses": { + "200": { + "description": "ok", + "schema": { + "$ref": "#/definitions/models.PageableResponse" + } + } + } + } + }, + "/kapis/openpitrix.io/v1/workspaces/{workspace}/namespaces/{namespace}/applications/{application}": { + "get": { + "produces": [ + "application/json" + ], + "tags": [ + "App Instance" + ], + "summary": "Describe the specified application of the namespace", + "operationId": "DescribeApplication", + "parameters": [ + { + "type": "string", + "description": "the name of the project", + "name": "namespace", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "the id of the application", + "name": "application", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "ok", + "schema": { + "$ref": "#/definitions/openpitrix.Application" + } + } + } + } + }, + "/kapis/openpitrix.io/v1/workspaces/{workspace}/repos": { + "get": { + "produces": [ + "application/json" + ], + "tags": [ + "Repository" + ], + "summary": "List repositories in the specified workspace", + "operationId": "ListRepos", + "parameters": [ + { + "type": "string", + "format": "key=%s,key~%s", + "description": "query conditions,connect multiple conditions with commas, equal symbol for exact query, wave symbol for fuzzy query e.g. name~a", + "name": "conditions", + "in": "query" + }, + { + "type": "string", + "format": "limit=%d,page=%d", + "default": "limit=10,page=1", + "description": "paging query, e.g. limit=100,page=1", + "name": "paging", + "in": "query" + }, + { + "type": "string", + "description": "sort parameters, e.g. reverse=true", + "name": "reverse", + "in": "query" + }, + { + "type": "string", + "description": "sort parameters, e.g. orderBy=createTime", + "name": "orderBy", + "in": "query" + } + ], + "responses": { + "200": { + "description": "ok", + "schema": { + "$ref": "#/definitions/models.PageableResponse" + } + } + } + }, + "post": { + "produces": [ + "application/json" + ], + "tags": [ + "Repository" + ], + "summary": "Create repository in the specified workspace, repository used to store package of app", + "operationId": "CreateRepo", + "parameters": [ + { + "type": "string", + "description": "Validate repository", + "name": "validate", + "in": "query" + }, + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/openpitrix.CreateRepoRequest" + } + } + ], + "responses": { + "200": { + "description": "ok", + "schema": { + "$ref": "#/definitions/openpitrix.CreateRepoResponse" + } + } + } + } + }, + "/kapis/openpitrix.io/v1/workspaces/{workspace}/repos/{repo}": { + "get": { + "produces": [ + "application/json" + ], + "tags": [ + "Repository" + ], + "summary": "Describe the specified repository in the specified workspace", + "operationId": "DescribeRepo", + "parameters": [ + { + "type": "string", + "description": "repo id", + "name": "repo", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "ok", + "schema": { + "$ref": "#/definitions/openpitrix.Repo" + } + } + } + }, + "delete": { + "produces": [ + "application/json" + ], + "tags": [ + "Repository" + ], + "summary": "Delete the specified repository in the specified workspace", + "operationId": "DeleteRepo", + "parameters": [ + { + "type": "string", + "description": "repo id", + "name": "repo", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "ok", + "schema": { + "$ref": "#/definitions/errors.Error" + } + } + } + }, + "patch": { + "consumes": [ + "application/json", + "application/merge-patch+json", + "application/json-patch+json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "Repository" + ], + "summary": "Patch the specified repository in the specified workspace", + "operationId": "ModifyRepo", + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/openpitrix.ModifyRepoRequest" + } + }, + { + "type": "string", + "description": "repo id", + "name": "repo", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "ok", + "schema": { + "$ref": "#/definitions/errors.Error" + } + } + } + } + }, + "/kapis/openpitrix.io/v1/workspaces/{workspace}/repos/{repo}/action": { + "post": { + "produces": [ + "application/json" + ], + "tags": [ + "App Management" + ], + "summary": "Start index repository event", + "operationId": "DoRepoAction", + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/openpitrix.RepoActionRequest" + } + }, + { + "type": "string", + "description": "repo id", + "name": "repo", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "ok", + "schema": { + "$ref": "#/definitions/errors.Error" + } + } + } + } + }, + "/kapis/openpitrix.io/v1/workspaces/{workspace}/repos/{repo}/events": { + "get": { + "produces": [ + "application/json" + ], + "tags": [ + "Repository" + ], + "summary": "Get repository events", + "operationId": "ListRepoEvents", + "parameters": [ + { + "type": "string", + "description": "repo id", + "name": "repo", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "ok", + "schema": { + "$ref": "#/definitions/models.PageableResponse" + } + } + } + } + }, + "/kapis/operations.kubesphere.io/v1alpha2/namespaces/{namespace}/jobs/{job}": { + "post": { + "produces": [ + "application/json" + ], + "summary": "Rerun job whether the job is complete or not", + "operationId": "handleJobReRun", + "deprecated": true, + "parameters": [ + { + "type": "string", + "description": "job name", + "name": "job", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "the name of the namespace where the job runs in", + "name": "namespace", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "action must be \"rerun\"", + "name": "action", + "in": "query" + }, + { + "type": "string", + "description": "version of job, rerun when the version matches", + "name": "resourceVersion", + "in": "query", + "required": true + } + ], + "responses": { + "200": { + "description": "ok", + "schema": { + "$ref": "#/definitions/errors.Error" + } + } + } + } + }, + "/kapis/resources.kubesphere.io/v1alpha2/abnormalworkloads": { + "get": { + "produces": [ + "application/json" + ], + "tags": [ + "Cluster Resources" + ], + "summary": "get abnormal workloads' count of whole cluster", + "operationId": "handleGetNamespacedAbnormalWorkloads", + "responses": { + "200": { + "description": "ok", + "schema": { + "$ref": "#/definitions/api.Workloads" + } + } + } + } + }, + "/kapis/resources.kubesphere.io/v1alpha2/componenthealth": { + "get": { + "produces": [ + "application/json" + ], + "tags": [ + "Component Status" + ], + "summary": "Get the health status of system components.", + "operationId": "handleGetSystemHealthStatus", + "responses": { + "200": { + "description": "ok", + "schema": { + "$ref": "#/definitions/v1alpha2.HealthStatus" + } + } + } + } + }, + "/kapis/resources.kubesphere.io/v1alpha2/components": { + "get": { + "produces": [ + "application/json" + ], + "tags": [ + "Component Status" + ], + "summary": "List the system components.", + "operationId": "handleGetComponents", + "responses": { + "200": { + "description": "ok", + "schema": { + "type": "array", + "items": { + "$ref": "#/definitions/v1alpha2.ComponentStatus" + } + } + } + } + } + }, + "/kapis/resources.kubesphere.io/v1alpha2/components/{component}": { + "get": { + "produces": [ + "application/json" + ], + "tags": [ + "Component Status" + ], + "summary": "Describe the specified system component.", + "operationId": "handleGetComponentStatus", + "parameters": [ + { + "type": "string", + "description": "component name", + "name": "component", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "ok", + "schema": { + "$ref": "#/definitions/v1alpha2.ComponentStatus" + } + } + } + } + }, + "/kapis/resources.kubesphere.io/v1alpha2/git/verify": { + "post": { + "produces": [ + "application/json" + ], + "tags": [ + "Git" + ], + "summary": "Verify if the kubernetes secret has read access to the git repository", + "operationId": "handleVerifyGitCredential", + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/git.AuthInfo" + } + } + ], + "responses": { + "200": { + "description": "ok", + "schema": { + "$ref": "#/definitions/errors.Error" + } + } + } + } + }, + "/kapis/resources.kubesphere.io/v1alpha2/namespaces/{namespace}/abnormalworkloads": { + "get": { + "produces": [ + "application/json" + ], + "tags": [ + "Namespace Resources" + ], + "summary": "get abnormal workloads' count of specified namespace", + "operationId": "handleGetNamespacedAbnormalWorkloads", + "parameters": [ + { + "type": "string", + "description": "the name of the project", + "name": "namespace", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "ok", + "schema": { + "$ref": "#/definitions/api.Workloads" + } + } + } + } + }, + "/kapis/resources.kubesphere.io/v1alpha2/namespaces/{namespace}/daemonsets/{daemonset}/revisions/{revision}": { + "get": { + "produces": [ + "application/json" + ], + "tags": [ + "Namespace Resources" + ], + "summary": "Get the specified daemonset revision", + "operationId": "handleGetDaemonSetRevision", + "parameters": [ + { + "type": "string", + "description": "the name of the daemonset", + "name": "daemonset", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "the namespace of the daemonset", + "name": "namespace", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "the revision of the daemonset", + "name": "revision", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "ok", + "schema": { + "$ref": "#/definitions/v1.DaemonSet" + } + } + } + } + }, + "/kapis/resources.kubesphere.io/v1alpha2/namespaces/{namespace}/deployments/{deployment}/revisions/{revision}": { + "get": { + "produces": [ + "application/json" + ], + "tags": [ + "Namespace Resources" + ], + "summary": "Get the specified deployment revision", + "operationId": "handleGetDeploymentRevision", + "parameters": [ + { + "type": "string", + "description": "the name of deployment", + "name": "deployment", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "the namespace of the deployment", + "name": "namespace", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "the revision of the deployment", + "name": "revision", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "ok", + "schema": { + "$ref": "#/definitions/v1.ReplicaSet" + } + } + } + } + }, + "/kapis/resources.kubesphere.io/v1alpha2/namespaces/{namespace}/quotas": { + "get": { + "produces": [ + "application/json" + ], + "tags": [ + "Namespace Resources" + ], + "summary": "get specified namespace's resource quota and usage", + "operationId": "handleGetNamespaceQuotas", + "parameters": [ + { + "type": "string", + "description": "the name of the project", + "name": "namespace", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "ok", + "schema": { + "$ref": "#/definitions/api.ResourceQuota" + } + } + } + } + }, + "/kapis/resources.kubesphere.io/v1alpha2/namespaces/{namespace}/router": { + "get": { + "produces": [ + "application/json" + ], + "tags": [ + "Namespace Resources" + ], + "summary": "List router of a specified project", + "operationId": "handleGetRouter", + "parameters": [ + { + "type": "string", + "description": "the name of the project", + "name": "namespace", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "ok", + "schema": { + "$ref": "#/definitions/v1.Service" + } + } + } + }, + "put": { + "produces": [ + "application/json" + ], + "tags": [ + "Namespace Resources" + ], + "summary": "Update a router for a specified project", + "operationId": "handleUpdateRouter", + "parameters": [ + { + "type": "string", + "description": "the name of the project", + "name": "namespace", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "ok", + "schema": { + "$ref": "#/definitions/v1.Service" + } + } + } + }, + "post": { + "produces": [ + "application/json" + ], + "tags": [ + "Namespace Resources" + ], + "summary": "Create a router for a specified project", + "operationId": "handleCreateRouter", + "parameters": [ + { + "type": "string", + "description": "the name of the project", + "name": "namespace", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "ok", + "schema": { + "$ref": "#/definitions/v1.Service" + } + } + } + }, + "delete": { + "produces": [ + "application/json" + ], + "tags": [ + "Namespace Resources" + ], + "summary": "List router of a specified project", + "operationId": "handleDeleteRouter", + "parameters": [ + { + "type": "string", + "description": "the name of the project", + "name": "namespace", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "ok", + "schema": { + "$ref": "#/definitions/v1.Service" + } + } + } + } + }, + "/kapis/resources.kubesphere.io/v1alpha2/namespaces/{namespace}/statefulsets/{statefulset}/revisions/{revision}": { + "get": { + "produces": [ + "application/json" + ], + "tags": [ + "Namespace Resources" + ], + "summary": "Get the specified statefulset revision", + "operationId": "handleGetStatefulSetRevision", + "parameters": [ + { + "type": "string", + "description": "the name of the statefulset", + "name": "statefulset", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "the namespace of the statefulset", + "name": "namespace", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "the revision of the statefulset", + "name": "revision", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "ok", + "schema": { + "$ref": "#/definitions/v1.StatefulSet" + } + } + } + } + }, + "/kapis/resources.kubesphere.io/v1alpha2/namespaces/{namespace}/{resources}": { + "get": { + "produces": [ + "application/json" + ], + "tags": [ + "Namespace Resources" + ], + "summary": "Namespace level resource query", + "operationId": "handleListNamespaceResources", + "deprecated": true, + "parameters": [ + { + "type": "string", + "description": "the name of the project", + "name": "namespace", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "namespace level resource type, e.g. pods,jobs,configmaps,services.", + "name": "resources", + "in": "path", + "required": true + }, + { + "type": "string", + "format": "key=%s,key~%s", + "description": "query conditions,connect multiple conditions with commas, equal symbol for exact query, wave symbol for fuzzy query e.g. name~a", + "name": "conditions", + "in": "query" + }, + { + "type": "string", + "format": "limit=%d,page=%d", + "default": "limit=10,page=1", + "description": "paging query, e.g. limit=100,page=1", + "name": "paging", + "in": "query" + }, + { + "type": "string", + "description": "sort parameters, e.g. reverse=true", + "name": "reverse", + "in": "query" + }, + { + "type": "string", + "description": "sort parameters, e.g. orderBy=createTime", + "name": "orderBy", + "in": "query" + } + ], + "responses": { + "200": { + "description": "ok", + "schema": { + "$ref": "#/definitions/models.PageableResponse" + } + } + } + } + }, + "/kapis/resources.kubesphere.io/v1alpha2/quotas": { + "get": { + "produces": [ + "application/json" + ], + "tags": [ + "Cluster Resources" + ], + "summary": "get whole cluster's resource usage", + "operationId": "handleGetClusterQuotas", + "responses": { + "200": { + "description": "ok", + "schema": { + "$ref": "#/definitions/api.ResourceQuota" + } + } + } + } + }, + "/kapis/resources.kubesphere.io/v1alpha2/registry/blob": { + "get": { + "produces": [ + "application/json" + ], + "tags": [ + "Docker Registry" + ], + "summary": "Retrieve the blob from the registry identified", + "operationId": "handleGetRegistryEntry", + "parameters": [ + { + "type": "string", + "format": "image=%s", + "description": "query image, condition for filtering.", + "name": "image", + "in": "query", + "required": true + }, + { + "type": "string", + "format": "namespace=%s", + "description": "namespace which secret in.", + "name": "namespace", + "in": "query" + }, + { + "type": "string", + "format": "secret=%s", + "description": "secret name", + "name": "secret", + "in": "query" + } + ], + "responses": { + "200": { + "description": "ok", + "schema": { + "$ref": "#/definitions/registries.ImageDetails" + } + } + } + } + }, + "/kapis/resources.kubesphere.io/v1alpha2/registry/verify": { + "post": { + "produces": [ + "application/json" + ], + "tags": [ + "Docker Registry" + ], + "summary": "verify if a user has access to the docker registry", + "operationId": "handleVerifyRegistryCredential", + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/api.RegistryCredential" + } + } + ], + "responses": { + "200": { + "description": "ok", + "schema": { + "$ref": "#/definitions/errors.Error" + } + } + } + } + }, + "/kapis/resources.kubesphere.io/v1alpha2/users/{user}/kubeconfig": { + "get": { + "produces": [ + "text/plain", + "application/json" + ], + "tags": [ + "Toolbox" + ], + "summary": "get users' kubeconfig", + "operationId": "GetKubeconfig", + "parameters": [ + { + "type": "string", + "description": "username", + "name": "user", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "ok", + "schema": { + "type": "string" + } + } + } + } + }, + "/kapis/resources.kubesphere.io/v1alpha2/users/{user}/kubectl": { + "get": { + "produces": [ + "application/json" + ], + "tags": [ + "Toolbox" + ], + "summary": "get user's kubectl pod", + "operationId": "GetKubectlPod", + "parameters": [ + { + "type": "string", + "description": "username", + "name": "user", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "ok", + "schema": { + "$ref": "#/definitions/models.PodInfo" + } + } + } + } + }, + "/kapis/resources.kubesphere.io/v1alpha2/{resources}": { + "get": { + "produces": [ + "application/json" + ], + "tags": [ + "Cluster Resources" + ], + "summary": "Cluster level resources", + "operationId": "handleListNamespaceResources", + "deprecated": true, + "parameters": [ + { + "type": "string", + "description": "cluster level resource type, e.g. nodes,workspaces,storageclasses,clusterrole.", + "name": "resources", + "in": "path", + "required": true + }, + { + "type": "string", + "format": "key=value,key~value", + "description": "query conditions, connect multiple conditions with commas, equal symbol for exact query, wave symbol for fuzzy query e.g. name~a", + "name": "conditions", + "in": "query" + }, + { + "type": "string", + "format": "limit=%d,page=%d", + "default": "limit=10,page=1", + "description": "paging query, e.g. limit=100,page=1", + "name": "paging", + "in": "query" + }, + { + "type": "string", + "description": "sort parameters, e.g. reverse=true", + "name": "reverse", + "in": "query" + }, + { + "type": "string", + "description": "sort parameters, e.g. orderBy=createTime", + "name": "orderBy", + "in": "query" + } + ], + "responses": { + "200": { + "description": "ok", + "schema": { + "$ref": "#/definitions/models.PageableResponse" + } + } + } + } + }, + "/kapis/resources.kubesphere.io/v1alpha3/componenthealth": { + "get": { + "produces": [ + "application/json" + ], + "tags": [ + "Component Status" + ], + "summary": "Get the health status of system components.", + "operationId": "handleGetSystemHealthStatus", + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/v1alpha2.HealthStatus" + } + } + } + } + }, + "/kapis/resources.kubesphere.io/v1alpha3/components": { + "get": { + "produces": [ + "application/json" + ], + "tags": [ + "Component Status" + ], + "summary": "List the system components.", + "operationId": "handleGetComponents", + "responses": { + "200": { + "description": "OK", + "schema": { + "type": "array", + "items": { + "$ref": "#/definitions/v1alpha2.ComponentStatus" + } + } + } + } + } + }, + "/kapis/resources.kubesphere.io/v1alpha3/components/{component}": { + "get": { + "produces": [ + "application/json" + ], + "tags": [ + "Component Status" + ], + "summary": "Describe the specified system component.", + "operationId": "handleGetComponentStatus", + "parameters": [ + { + "type": "string", + "description": "component name", + "name": "component", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/v1alpha2.ComponentStatus" + } + } + } + } + }, + "/kapis/resources.kubesphere.io/v1alpha3/namespaces/{namespace}/{resources}": { + "get": { + "produces": [ + "application/json" + ], + "tags": [ + "Namespaced Resource" + ], + "summary": "Namespace level resource query", + "operationId": "handleListResources", + "parameters": [ + { + "type": "string", + "description": "the name of the project", + "name": "namespace", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "namespace level resource type, e.g. pods,jobs,configmaps,services.", + "name": "resources", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "name used to do filtering", + "name": "name", + "in": "query" + }, + { + "type": "string", + "format": "page=%d", + "default": "page=1", + "description": "page", + "name": "page", + "in": "query" + }, + { + "type": "string", + "description": "limit", + "name": "limit", + "in": "query" + }, + { + "type": "string", + "default": "ascending=false", + "description": "sort parameters, e.g. reverse=true", + "name": "ascending", + "in": "query" + }, + { + "type": "string", + "description": "sort parameters, e.g. orderBy=createTime", + "name": "sortBy", + "in": "query" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/api.ListResult" + } + } + } + } + }, + "/kapis/resources.kubesphere.io/v1alpha3/namespaces/{namespace}/{resources}/{name}": { + "get": { + "produces": [ + "application/json" + ], + "tags": [ + "Namespaced Resource" + ], + "summary": "Namespace level get resource query", + "operationId": "handleGetResources", + "parameters": [ + { + "type": "string", + "description": "the name of the project", + "name": "namespace", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "namespace level resource type, e.g. pods,jobs,configmaps,services.", + "name": "resources", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "the name of resource", + "name": "name", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/api.ListResult" + } + } + } + } + }, + "/kapis/resources.kubesphere.io/v1alpha3/{resources}": { + "get": { + "produces": [ + "application/json" + ], + "tags": [ + "Clustered Resource" + ], + "summary": "Cluster level resources", + "operationId": "handleListResources", + "parameters": [ + { + "type": "string", + "description": "cluster level resource type, e.g. pods,jobs,configmaps,services.", + "name": "resources", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "name used to do filtering", + "name": "name", + "in": "query" + }, + { + "type": "string", + "format": "page=%d", + "default": "page=1", + "description": "page", + "name": "page", + "in": "query" + }, + { + "type": "string", + "description": "limit", + "name": "limit", + "in": "query" + }, + { + "type": "string", + "default": "ascending=false", + "description": "sort parameters, e.g. reverse=true", + "name": "ascending", + "in": "query" + }, + { + "type": "string", + "description": "sort parameters, e.g. orderBy=createTime", + "name": "sortBy", + "in": "query" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/api.ListResult" + } + } + } + } + }, + "/kapis/resources.kubesphere.io/v1alpha3/{resources}/{name}": { + "get": { + "produces": [ + "application/json" + ], + "tags": [ + "Clustered Resource" + ], + "summary": "Cluster level resource", + "operationId": "handleGetResources", + "parameters": [ + { + "type": "string", + "description": "cluster level resource type, e.g. pods,jobs,configmaps,services.", + "name": "resources", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "the name of the clustered resources", + "name": "name", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "ok" + } + } + } + }, + "/kapis/servicemesh.kubesphere.io/v1alpha2/namespaces/{namespace}/apps/{app}/health": { + "get": { + "produces": [ + "application/json" + ], + "tags": [ + "ServiceMesh" + ], + "summary": "Get app health", + "operationId": "getAppHealth", + "parameters": [ + { + "type": "string", + "description": "name of a namespace", + "name": "namespace", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "app name", + "name": "app", + "in": "path", + "required": true + }, + { + "type": "string", + "default": "10m", + "description": "the rate interval used for fetching error rate", + "name": "rateInterval", + "in": "query", + "required": true + }, + { + "type": "string", + "description": "the time to use for query", + "name": "queryTime", + "in": "query" + } + ], + "responses": { + "200": { + "description": "ok", + "schema": { + "$ref": "#/definitions/v1alpha2.appHealthResponse" + } + } + } + } + }, + "/kapis/servicemesh.kubesphere.io/v1alpha2/namespaces/{namespace}/apps/{app}/metrics": { + "get": { + "produces": [ + "application/json" + ], + "tags": [ + "ServiceMesh" + ], + "summary": "Get app metrics from a specific namespace", + "operationId": "getAppMetrics", + "parameters": [ + { + "type": "string", + "description": "name of the namespace", + "name": "namespace", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "name of the app", + "name": "app", + "in": "path", + "required": true + }, + { + "type": "string", + "default": "[]", + "description": "type of metrics type, fetch all metrics when empty, e.g. request_count, request_duration, request_error_count", + "name": "filters[]", + "in": "query" + }, + { + "type": "string", + "description": "from which UNIX time to extract metrics", + "name": "queryTime", + "in": "query" + }, + { + "type": "string", + "default": 1800, + "description": "duration of the query period, in seconds", + "name": "duration", + "in": "query" + }, + { + "type": "string", + "default": 15, + "description": "step between graph data points, in seconds.", + "name": "step", + "in": "query" + }, + { + "type": "string", + "default": "1m", + "description": "metrics rate intervals, e.g. 20s", + "name": "rateInterval", + "in": "query" + }, + { + "type": "string", + "default": "outbound", + "description": "traffic direction: 'inbound' or 'outbound'", + "name": "direction", + "in": "query" + }, + { + "type": "string", + "default": "[]", + "description": "list of quantiles to fetch, fetch no quantiles when empty. eg. 0.5, 0.9, 0.99", + "name": "quantiles[]", + "in": "query" + }, + { + "type": "string", + "default": "[]", + "description": "list of labels to use for grouping metrics(via Prometheus 'by' clause), e.g. source_workload, destination_service_name", + "name": "byLabels[]", + "in": "query" + }, + { + "type": "string", + "default": "all protocols", + "description": "request protocol for the telemetry, e.g. http/tcp/grpc", + "name": "requestProtocol", + "in": "query" + }, + { + "type": "string", + "default": "source", + "description": "istio telemetry reporter, 'source' or 'destination'", + "name": "reporter", + "in": "query" + } + ], + "responses": { + "200": { + "description": "ok", + "schema": { + "$ref": "#/definitions/v1alpha2.metricsResponse" + } + } + } + } + }, + "/kapis/servicemesh.kubesphere.io/v1alpha2/namespaces/{namespace}/graph": { + "get": { + "produces": [ + "application/json" + ], + "tags": [ + "ServiceMesh" + ], + "summary": "Get service graph for a specific namespace", + "operationId": "getNamespaceGraph", + "parameters": [ + { + "type": "string", + "description": "name of a namespace", + "name": "namespace", + "in": "path", + "required": true + }, + { + "type": "string", + "default": "10m", + "description": "duration of the query period, in seconds", + "name": "duration", + "in": "query" + }, + { + "type": "string", + "default": "workload", + "description": "type of the generated service graph. Available graph types: [app, service, versionedApp, workload].", + "name": "graphType", + "in": "query" + }, + { + "type": "string", + "default": "none", + "description": "app box grouping characteristic. Available groupings: [app, none, version].", + "name": "groupBy", + "in": "query" + }, + { + "type": "string", + "description": "from which time point in UNIX timestamp, default now", + "name": "queryTime", + "in": "query" + }, + { + "type": "string", + "default": false, + "description": "flag for injecting the requested service node between source and destination nodes.", + "name": "injectServiceNodes", + "in": "query" + } + ], + "responses": { + "200": { + "description": "ok", + "schema": { + "$ref": "#/definitions/v1alpha2.graphResponse" + } + }, + "400": { + "description": "bad request", + "schema": { + "$ref": "#/definitions/v1alpha2.BadRequestError" + } + }, + "404": { + "description": "not found", + "schema": { + "$ref": "#/definitions/v1alpha2.NotFoundError" + } + } + } + } + }, + "/kapis/servicemesh.kubesphere.io/v1alpha2/namespaces/{namespace}/health": { + "get": { + "produces": [ + "application/json" + ], + "tags": [ + "ServiceMesh" + ], + "summary": "Get app/service/workload health of a namespace", + "operationId": "getNamespaceHealth", + "parameters": [ + { + "type": "string", + "description": "name of a namespace", + "name": "namespace", + "in": "path", + "required": true + }, + { + "type": "string", + "default": "10m", + "description": "the rate interval used for fetching error rate", + "name": "rateInterval", + "in": "query", + "required": true + }, + { + "type": "string", + "description": "the time to use for query", + "name": "queryTime", + "in": "query" + } + ], + "responses": { + "200": { + "description": "ok", + "schema": { + "$ref": "#/definitions/v1alpha2.namespaceAppHealthResponse" + } + }, + "400": { + "description": "bad request", + "schema": { + "$ref": "#/definitions/v1alpha2.BadRequestError" + } + }, + "404": { + "description": "not found", + "schema": { + "$ref": "#/definitions/v1alpha2.NotFoundError" + } + } + } + } + }, + "/kapis/servicemesh.kubesphere.io/v1alpha2/namespaces/{namespace}/metrics": { + "get": { + "produces": [ + "application/json" + ], + "tags": [ + "ServiceMesh" + ], + "summary": "Get metrics from a specific namespace", + "operationId": "getNamespaceMetrics", + "parameters": [ + { + "type": "string", + "description": "name of the namespace", + "name": "namespace", + "in": "path", + "required": true + }, + { + "type": "string", + "default": "[]", + "description": "type of metrics type, fetch all metrics when empty, e.g. request_count, request_duration, request_error_count", + "name": "filters[]", + "in": "query" + }, + { + "type": "string", + "description": "from which UNIX time to extract metrics", + "name": "queryTime", + "in": "query" + }, + { + "type": "string", + "default": 1800, + "description": "duration of the query period, in seconds", + "name": "duration", + "in": "query" + }, + { + "type": "string", + "default": 15, + "description": "step between graph data points, in seconds.", + "name": "step", + "in": "query" + }, + { + "type": "string", + "default": "1m", + "description": "metrics rate intervals, e.g. 20s", + "name": "rateInterval", + "in": "query" + }, + { + "type": "string", + "default": "outbound", + "description": "traffic direction: 'inbound' or 'outbound'", + "name": "direction", + "in": "query" + }, + { + "type": "string", + "default": "[]", + "description": "list of quantiles to fetch, fetch no quantiles when empty. eg. 0.5, 0.9, 0.99", + "name": "quantiles[]", + "in": "query" + }, + { + "type": "string", + "default": "[]", + "description": "list of labels to use for grouping metrics(via Prometheus 'by' clause), e.g. source_workload, destination_service_name", + "name": "byLabels[]", + "in": "query" + }, + { + "type": "string", + "default": "all protocols", + "description": "request protocol for the telemetry, e.g. http/tcp/grpc", + "name": "requestProtocol", + "in": "query" + }, + { + "type": "string", + "default": "source", + "description": "istio telemetry reporter, 'source' or 'destination'", + "name": "reporter", + "in": "query" + } + ], + "responses": { + "200": { + "description": "ok", + "schema": { + "$ref": "#/definitions/v1alpha2.metricsResponse" + } + } + } + } + }, + "/kapis/servicemesh.kubesphere.io/v1alpha2/namespaces/{namespace}/services/{service}/health": { + "get": { + "produces": [ + "application/json" + ], + "tags": [ + "ServiceMesh" + ], + "summary": "Get service health", + "operationId": "getServiceHealth", + "parameters": [ + { + "type": "string", + "description": "name of a namespace", + "name": "namespace", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "service name", + "name": "service", + "in": "path", + "required": true + }, + { + "type": "string", + "default": "10m", + "description": "the rate interval used for fetching error rate", + "name": "rateInterval", + "in": "query", + "required": true + }, + { + "type": "string", + "description": "the time to use for query", + "name": "queryTime", + "in": "query" + } + ], + "responses": { + "200": { + "description": "ok", + "schema": { + "$ref": "#/definitions/v1alpha2.serviceHealthResponse" + } + } + } + } + }, + "/kapis/servicemesh.kubesphere.io/v1alpha2/namespaces/{namespace}/services/{service}/metrics": { + "get": { + "produces": [ + "application/json" + ], + "tags": [ + "ServiceMesh" + ], + "summary": "Get service metrics from a specific namespace", + "operationId": "getServiceMetrics", + "parameters": [ + { + "type": "string", + "description": "name of the namespace", + "name": "namespace", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "name of the service", + "name": "service", + "in": "path", + "required": true + }, + { + "type": "string", + "default": "[]", + "description": "type of metrics type, fetch all metrics when empty, e.g. request_count, request_duration, request_error_count", + "name": "filters[]", + "in": "query" + }, + { + "type": "string", + "description": "from which UNIX time to extract metrics", + "name": "queryTime", + "in": "query" + }, + { + "type": "string", + "default": 1800, + "description": "duration of the query period, in seconds", + "name": "duration", + "in": "query" + }, + { + "type": "string", + "default": 15, + "description": "step between graph data points, in seconds.", + "name": "step", + "in": "query" + }, + { + "type": "string", + "default": "1m", + "description": "metrics rate intervals, e.g. 20s", + "name": "rateInterval", + "in": "query" + }, + { + "type": "string", + "default": "outbound", + "description": "traffic direction: 'inbound' or 'outbound'", + "name": "direction", + "in": "query" + }, + { + "type": "string", + "default": "[]", + "description": "list of quantiles to fetch, fetch no quantiles when empty. eg. 0.5, 0.9, 0.99", + "name": "quantiles[]", + "in": "query" + }, + { + "type": "string", + "default": "[]", + "description": "list of labels to use for grouping metrics(via Prometheus 'by' clause), e.g. source_workload, destination_service_name", + "name": "byLabels[]", + "in": "query" + }, + { + "type": "string", + "default": "all protocols", + "description": "request protocol for the telemetry, e.g. http/tcp/grpc", + "name": "requestProtocol", + "in": "query" + }, + { + "type": "string", + "default": "source", + "description": "istio telemetry reporter, 'source' or 'destination'", + "name": "reporter", + "in": "query" + } + ], + "responses": { + "200": { + "description": "ok", + "schema": { + "$ref": "#/definitions/v1alpha2.metricsResponse" + } + } + } + } + }, + "/kapis/servicemesh.kubesphere.io/v1alpha2/namespaces/{namespace}/services/{service}/traces": { + "get": { + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "ServiceMesh" + ], + "summary": "Get tracing of a service, should have servicemesh enabled first", + "operationId": "getServiceTracing", + "parameters": [ + { + "type": "string", + "description": "namespace of service", + "name": "namespace", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "name of service queried", + "name": "service", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "start of time range want to query, in unix timestamp", + "name": "start", + "in": "query" + }, + { + "type": "string", + "description": "end of time range want to query, in unix timestamp", + "name": "end", + "in": "query" + }, + { + "type": "string", + "default": 10, + "description": "maximum tracing entries returned at one query, default 10", + "name": "limit", + "in": "query" + }, + { + "type": "string", + "description": "loopback of duration want to query, e.g. 30m/1h/2d", + "name": "loopback", + "in": "query" + }, + { + "type": "string", + "description": "maximum duration of a request", + "name": "maxDuration", + "in": "query" + }, + { + "type": "string", + "description": "minimum duration of a request", + "name": "minDuration", + "in": "query" + } + ], + "responses": { + "200": { + "description": "OK" + } + } + } + }, + "/kapis/servicemesh.kubesphere.io/v1alpha2/namespaces/{namespace}/workloads/{workload}/health": { + "get": { + "produces": [ + "application/json" + ], + "tags": [ + "ServiceMesh" + ], + "summary": "Get workload health", + "operationId": "getWorkloadHealth", + "parameters": [ + { + "type": "string", + "description": "name of a namespace", + "name": "namespace", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "workload name", + "name": "workload", + "in": "path", + "required": true + }, + { + "type": "string", + "default": "10m", + "description": "the rate interval used for fetching error rate", + "name": "rateInterval", + "in": "query", + "required": true + }, + { + "type": "string", + "description": "the time to use for query", + "name": "queryTime", + "in": "query" + } + ], + "responses": { + "200": { + "description": "ok", + "schema": { + "$ref": "#/definitions/v1alpha2.workloadHealthResponse" + } + } + } + } + }, + "/kapis/servicemesh.kubesphere.io/v1alpha2/namespaces/{namespace}/workloads/{workload}/metrics": { + "get": { + "produces": [ + "application/json" + ], + "tags": [ + "ServiceMesh" + ], + "summary": "Get workload metrics from a specific namespace", + "operationId": "getWorkloadMetrics", + "parameters": [ + { + "type": "string", + "description": "name of the namespace", + "name": "namespace", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "name of the workload", + "name": "workload", + "in": "path", + "required": true + }, + { + "type": "string", + "default": "[]", + "description": "type of metrics type, fetch all metrics when empty, e.g. request_count, request_duration, request_error_count", + "name": "filters[]", + "in": "query" + }, + { + "type": "string", + "description": "from which UNIX time to extract metrics", + "name": "queryTime", + "in": "query" + }, + { + "type": "string", + "default": 1800, + "description": "duration of the query period, in seconds", + "name": "duration", + "in": "query" + }, + { + "type": "string", + "default": 15, + "description": "step between graph data points, in seconds.", + "name": "step", + "in": "query" + }, + { + "type": "string", + "default": "1m", + "description": "metrics rate intervals, e.g. 20s", + "name": "rateInterval", + "in": "query" + }, + { + "type": "string", + "default": "outbound", + "description": "traffic direction: 'inbound' or 'outbound'", + "name": "direction", + "in": "query" + }, + { + "type": "string", + "default": "[]", + "description": "list of quantiles to fetch, fetch no quantiles when empty. eg. 0.5, 0.9, 0.99", + "name": "quantiles[]", + "in": "query" + }, + { + "type": "string", + "default": "[]", + "description": "list of labels to use for grouping metrics(via Prometheus 'by' clause), e.g. source_workload, destination_service_name", + "name": "byLabels[]", + "in": "query" + }, + { + "type": "string", + "default": "all protocols", + "description": "request protocol for the telemetry, e.g. http/tcp/grpc", + "name": "requestProtocol", + "in": "query" + }, + { + "type": "string", + "default": "source", + "description": "istio telemetry reporter, 'source' or 'destination'", + "name": "reporter", + "in": "query" + } + ], + "responses": { + "200": { + "description": "ok", + "schema": { + "$ref": "#/definitions/v1alpha2.metricsResponse" + } + } + } + } + }, + "/kapis/tenant.kubesphere.io/v1alpha2/auditing/events": { + "get": { + "consumes": [ + "application/json", + "application/xml" + ], + "produces": [ + "application/json", + "text/plain" + ], + "tags": [ + "Auditing Query" + ], + "summary": "Query auditing events against the cluster", + "operationId": "Auditing", + "parameters": [ + { + "type": "string", + "default": "query", + "description": "Operation type. This can be one of three types: `query` (for querying events), `statistics` (for retrieving statistical data), `histogram` (for displaying events count by time interval). Defaults to query.", + "name": "operation", + "in": "query" + }, + { + "type": "string", + "description": "A comma-separated list of workspaces. This field restricts the query to specified workspaces. For example, the following filter matches the workspace my-ws and demo-ws: `my-ws,demo-ws`.", + "name": "workspace_filter", + "in": "query" + }, + { + "type": "string", + "description": "A comma-separated list of keywords. Differing from **workspace_filter**, this field performs fuzzy matching on workspaces. For example, the following value limits the query to workspaces whose name contains the word my(My,MY,...) *OR* demo(Demo,DemO,...): `my,demo`.", + "name": "workspace_search", + "in": "query" + }, + { + "type": "string", + "description": "A comma-separated list of namespaces. This field restricts the query to specified `ObjectRef.Namespace`.", + "name": "objectref_namespace_filter", + "in": "query" + }, + { + "type": "string", + "description": "A comma-separated list of keywords. Differing from **objectref_namespace_filter**, this field performs fuzzy matching on `ObjectRef.Namespace`.", + "name": "objectref_namespace_search", + "in": "query" + }, + { + "type": "string", + "description": "A comma-separated list of names. This field restricts the query to specified `ObjectRef.Name`.", + "name": "objectref_name_filter", + "in": "query" + }, + { + "type": "string", + "description": "A comma-separated list of keywords. Differing from **objectref_name_filter**, this field performs fuzzy matching on `ObjectRef.Name`.", + "name": "objectref_name_search", + "in": "query" + }, + { + "type": "string", + "description": "A comma-separated list of levels. This know values are Metadata, Request, RequestResponse.", + "name": "level_filter", + "in": "query" + }, + { + "type": "string", + "description": "A comma-separated list of verbs. This field restricts the query to specified verb. This field restricts the query to specified `Verb`.", + "name": "verb_filter", + "in": "query" + }, + { + "type": "string", + "description": "A comma-separated list of user. This field restricts the query to specified user. For example, the following filter matches the user user1 and user2: `user1,user2`.", + "name": "user_filter", + "in": "query" + }, + { + "type": "string", + "description": "A comma-separated list of keywords. Differing from **user_filter**, this field performs fuzzy matching on 'User.username'. For example, the following value limits the query to user whose name contains the word my(My,MY,...) *OR* demo(Demo,DemO,...): `my,demo`.", + "name": "user_search", + "in": "query" + }, + { + "type": "string", + "description": "A comma-separated list of keywords. This field performs fuzzy matching on 'User.Groups'. For example, the following value limits the query to group which contains the word my(My,MY,...) *OR* demo(Demo,DemO,...): `my,demo`.", + "name": "group_search", + "in": "query" + }, + { + "type": "string", + "description": "A comma-separated list of keywords. This field performs fuzzy matching on 'SourceIPs'. For example, the following value limits the query to SourceIPs which contains 127.0 *OR* 192.168.: `127.0,192.168.`.", + "name": "source_ip_search", + "in": "query" + }, + { + "type": "string", + "description": "A comma-separated list of resource. This field restricts the query to specified ip. This field restricts the query to specified `ObjectRef.Resource`.", + "name": "objectref_resource_filter", + "in": "query" + }, + { + "type": "string", + "description": "A comma-separated list of subresource. This field restricts the query to specified subresource. This field restricts the query to specified `ObjectRef.Subresource`.", + "name": "objectref_subresource_filter", + "in": "query" + }, + { + "type": "string", + "description": "A comma-separated list of response status code. This field restricts the query to specified response status code. This field restricts the query to specified `ResponseStatus.code`.", + "name": "response_code_filter", + "in": "query" + }, + { + "type": "string", + "description": "A comma-separated list of response status. This field restricts the query to specified response status. This field restricts the query to specified `ResponseStatus.status`.", + "name": "response_status_filter", + "in": "query" + }, + { + "type": "string", + "description": "Start time of query (limits `RequestReceivedTimestamp`). The format is a string representing seconds since the epoch, eg. 1136214245.", + "name": "start_time", + "in": "query" + }, + { + "type": "string", + "description": "End time of query (limits `RequestReceivedTimestamp`). The format is a string representing seconds since the epoch, eg. 1136214245.", + "name": "end_time", + "in": "query" + }, + { + "type": "string", + "default": "15m", + "description": "Time interval. It requires **operation** is set to `histogram`. The format is [0-9]+[smhdwMqy]. Defaults to 15m (i.e. 15 min).", + "name": "interval", + "in": "query" + }, + { + "type": "string", + "default": "desc", + "description": "Sort order. One of asc, desc. This field sorts events by `RequestReceivedTimestamp`.", + "name": "sort", + "in": "query" + }, + { + "type": "integer", + "default": 0, + "description": "The offset from the result set. This field returns query results from the specified offset. It requires **operation** is set to `query`. Defaults to 0 (i.e. from the beginning of the result set).", + "name": "from", + "in": "query" + }, + { + "type": "integer", + "default": 10, + "description": "Size of result set to return. It requires **operation** is set to `query`. Defaults to 10 (i.e. 10 event records).", + "name": "size", + "in": "query" + } + ], + "responses": { + "200": { + "description": "ok", + "schema": { + "$ref": "#/definitions/v1alpha1.APIResponse" + } + } + } + } + }, + "/kapis/tenant.kubesphere.io/v1alpha2/clusters": { + "get": { + "produces": [ + "application/json" + ], + "tags": [ + "User's Resources" + ], + "summary": "List clusters available to users", + "operationId": "ListClusters", + "responses": { + "200": { + "description": "ok", + "schema": { + "$ref": "#/definitions/api.ListResult" + } + } + } + } + }, + "/kapis/tenant.kubesphere.io/v1alpha2/events": { + "get": { + "produces": [ + "application/json" + ], + "tags": [ + "Events Query" + ], + "summary": "Query events against the cluster", + "operationId": "Events", + "parameters": [ + { + "type": "string", + "default": "query", + "description": "Operation type. This can be one of three types: `query` (for querying events), `statistics` (for retrieving statistical data), `histogram` (for displaying events count by time interval). Defaults to query.", + "name": "operation", + "in": "query" + }, + { + "type": "string", + "description": "A comma-separated list of workspaces. This field restricts the query to specified workspaces. For example, the following filter matches the workspace my-ws and demo-ws: `my-ws,demo-ws`.", + "name": "workspace_filter", + "in": "query" + }, + { + "type": "string", + "description": "A comma-separated list of keywords. Differing from **workspace_filter**, this field performs fuzzy matching on workspaces. For example, the following value limits the query to workspaces whose name contains the word my(My,MY,...) *OR* demo(Demo,DemO,...): `my,demo`.", + "name": "workspace_search", + "in": "query" + }, + { + "type": "string", + "description": "A comma-separated list of namespaces. This field restricts the query to specified `involvedObject.namespace`.", + "name": "involved_object_namespace_filter", + "in": "query" + }, + { + "type": "string", + "description": "A comma-separated list of keywords. Differing from **involved_object_namespace_filter**, this field performs fuzzy matching on `involvedObject.namespace`", + "name": "involved_object_namespace_search", + "in": "query" + }, + { + "type": "string", + "description": "A comma-separated list of names. This field restricts the query to specified `involvedObject.name`.", + "name": "involved_object_name_filter", + "in": "query" + }, + { + "type": "string", + "description": "A comma-separated list of keywords. Differing from **involved_object_name_filter**, this field performs fuzzy matching on `involvedObject.name`.", + "name": "involved_object_name_search", + "in": "query" + }, + { + "type": "string", + "description": "A comma-separated list of kinds. This field restricts the query to specified `involvedObject.kind`.", + "name": "involved_object_kind_filter", + "in": "query" + }, + { + "type": "string", + "description": "A comma-separated list of reasons. This field restricts the query to specified `reason`.", + "name": "reason_filter", + "in": "query" + }, + { + "type": "string", + "description": "A comma-separated list of keywords. Differing from **reason_filter**, this field performs fuzzy matching on `reason`.", + "name": "reason_search", + "in": "query" + }, + { + "type": "string", + "description": "A comma-separated list of keywords. This field performs fuzzy matching on `message`.", + "name": "message_search", + "in": "query" + }, + { + "type": "string", + "description": "Type of event matching on `type`. This can be one of two types: `Warning`, `Normal`", + "name": "type_filter", + "in": "query" + }, + { + "type": "string", + "description": "Start time of query (limits `lastTimestamp`). The format is a string representing seconds since the epoch, eg. 1136214245.", + "name": "start_time", + "in": "query" + }, + { + "type": "string", + "description": "End time of query (limits `lastTimestamp`). The format is a string representing seconds since the epoch, eg. 1136214245.", + "name": "end_time", + "in": "query" + }, + { + "type": "string", + "default": "15m", + "description": "Time interval. It requires **operation** is set to `histogram`. The format is [0-9]+[smhdwMqy]. Defaults to 15m (i.e. 15 min).", + "name": "interval", + "in": "query" + }, + { + "type": "string", + "default": "desc", + "description": "Sort order. One of asc, desc. This field sorts events by `lastTimestamp`.", + "name": "sort", + "in": "query" + }, + { + "type": "integer", + "default": 0, + "description": "The offset from the result set. This field returns query results from the specified offset. It requires **operation** is set to `query`. Defaults to 0 (i.e. from the beginning of the result set).", + "name": "from", + "in": "query" + }, + { + "type": "integer", + "default": 10, + "description": "Size of result set to return. It requires **operation** is set to `query`. Defaults to 10 (i.e. 10 event records).", + "name": "size", + "in": "query" + } + ], + "responses": { + "200": { + "description": "ok", + "schema": { + "$ref": "#/definitions/v1alpha1.APIResponse" + } + } + } + } + }, + "/kapis/tenant.kubesphere.io/v1alpha2/federatednamespaces": { + "get": { + "produces": [ + "application/json" + ], + "tags": [ + "Namespace" + ], + "summary": "List the federated namespaces for the current user", + "operationId": "ListFederatedNamespaces", + "responses": { + "200": { + "description": "ok", + "schema": { + "$ref": "#/definitions/api.ListResult" + } + } + } + } + }, + "/kapis/tenant.kubesphere.io/v1alpha2/logs": { + "get": { + "produces": [ + "application/json" + ], + "tags": [ + "Log Query" + ], + "summary": "Query logs against the cluster.", + "operationId": "QueryLogs", + "parameters": [ + { + "type": "string", + "default": "query", + "description": "Operation type. This can be one of four types: query (for querying logs), statistics (for retrieving statistical data), histogram (for displaying log count by time interval) and export (for exporting logs). Defaults to query.", + "name": "operation", + "in": "query" + }, + { + "type": "string", + "description": "A comma-separated list of namespaces. This field restricts the query to specified namespaces. For example, the following filter matches the namespace my-ns and demo-ns: `my-ns,demo-ns`", + "name": "namespaces", + "in": "query" + }, + { + "type": "string", + "description": "A comma-separated list of keywords. Differing from **namespaces**, this field performs fuzzy matching on namespaces. For example, the following value limits the query to namespaces whose name contains the word my(My,MY,...) *OR* demo(Demo,DemO,...): `my,demo`.", + "name": "namespace_query", + "in": "query" + }, + { + "type": "string", + "description": "A comma-separated list of workloads. This field restricts the query to specified workloads. For example, the following filter matches the workload my-wl and demo-wl: `my-wl,demo-wl`", + "name": "workloads", + "in": "query" + }, + { + "type": "string", + "description": "A comma-separated list of keywords. Differing from **workloads**, this field performs fuzzy matching on workloads. For example, the following value limits the query to workloads whose name contains the word my(My,MY,...) *OR* demo(Demo,DemO,...): `my,demo`.", + "name": "workload_query", + "in": "query" + }, + { + "type": "string", + "description": "A comma-separated list of pods. This field restricts the query to specified pods. For example, the following filter matches the pod my-po and demo-po: `my-po,demo-po`", + "name": "pods", + "in": "query" + }, + { + "type": "string", + "description": "A comma-separated list of keywords. Differing from **pods**, this field performs fuzzy matching on pods. For example, the following value limits the query to pods whose name contains the word my(My,MY,...) *OR* demo(Demo,DemO,...): `my,demo`.", + "name": "pod_query", + "in": "query" + }, + { + "type": "string", + "description": "A comma-separated list of containers. This field restricts the query to specified containers. For example, the following filter matches the container my-cont and demo-cont: `my-cont,demo-cont`", + "name": "containers", + "in": "query" + }, + { + "type": "string", + "description": "A comma-separated list of keywords. Differing from **containers**, this field performs fuzzy matching on containers. For example, the following value limits the query to containers whose name contains the word my(My,MY,...) *OR* demo(Demo,DemO,...): `my,demo`.", + "name": "container_query", + "in": "query" + }, + { + "type": "string", + "description": "A comma-separated list of keywords. The query returns logs which contain at least one keyword. Case-insensitive matching. For example, if the field is set to `err,INFO`, the query returns any log containing err(ERR,Err,...) *OR* INFO(info,InFo,...).", + "name": "log_query", + "in": "query" + }, + { + "type": "string", + "default": "15m", + "description": "Time interval. It requires **operation** is set to histogram. The format is [0-9]+[smhdwMqy]. Defaults to 15m (i.e. 15 min).", + "name": "interval", + "in": "query" + }, + { + "type": "string", + "description": "Start time of query. Default to 0. The format is a string representing seconds since the epoch, eg. 1559664000.", + "name": "start_time", + "in": "query" + }, + { + "type": "string", + "description": "End time of query. Default to now. The format is a string representing seconds since the epoch, eg. 1559664000.", + "name": "end_time", + "in": "query" + }, + { + "type": "string", + "default": "desc", + "description": "Sort order. One of asc, desc. This field sorts logs by timestamp.", + "name": "sort", + "in": "query" + }, + { + "type": "integer", + "default": 0, + "description": "The offset from the result set. This field returns query results from the specified offset. It requires **operation** is set to query. Defaults to 0 (i.e. from the beginning of the result set).", + "name": "from", + "in": "query" + }, + { + "type": "integer", + "default": 10, + "description": "Size of result to return. It requires **operation** is set to query. Defaults to 10 (i.e. 10 log records).", + "name": "size", + "in": "query" + } + ], + "responses": { + "200": { + "description": "ok", + "schema": { + "$ref": "#/definitions/v1alpha2.APIResponse" + } + } + } + } + }, + "/kapis/tenant.kubesphere.io/v1alpha2/namespaces": { + "get": { + "produces": [ + "application/json" + ], + "tags": [ + "Namespace" + ], + "summary": "List the namespaces for the current user", + "operationId": "ListNamespaces", + "responses": { + "200": { + "description": "ok", + "schema": { + "$ref": "#/definitions/api.ListResult" + } + } + } + } + }, + "/kapis/tenant.kubesphere.io/v1alpha2/workspaces": { + "get": { + "produces": [ + "application/json" + ], + "tags": [ + "Workspace" + ], + "summary": "List all workspaces that belongs to the current user", + "operationId": "ListWorkspaces", + "responses": { + "200": { + "description": "ok", + "schema": { + "$ref": "#/definitions/models.PageableResponse" + } + } + } + }, + "post": { + "produces": [ + "application/json" + ], + "tags": [ + "Workspace" + ], + "summary": "Create workspace.", + "operationId": "CreateWorkspace", + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/v1alpha2.WorkspaceTemplate" + } + } + ], + "responses": { + "200": { + "description": "ok", + "schema": { + "$ref": "#/definitions/v1alpha2.WorkspaceTemplate" + } + } + } + } + }, + "/kapis/tenant.kubesphere.io/v1alpha2/workspaces/{workspace}": { + "get": { + "produces": [ + "application/json" + ], + "tags": [ + "Workspace" + ], + "summary": "Describe workspace.", + "operationId": "DescribeWorkspace", + "parameters": [ + { + "type": "string", + "description": "workspace name", + "name": "workspace", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "ok", + "schema": { + "$ref": "#/definitions/v1alpha2.WorkspaceTemplate" + } + } + } + }, + "put": { + "produces": [ + "application/json" + ], + "tags": [ + "Workspace" + ], + "summary": "Update workspace.", + "operationId": "UpdateWorkspace", + "parameters": [ + { + "type": "string", + "description": "workspace name", + "name": "workspace", + "in": "path", + "required": true + }, + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/v1alpha2.WorkspaceTemplate" + } + } + ], + "responses": { + "200": { + "description": "ok", + "schema": { + "$ref": "#/definitions/v1alpha2.WorkspaceTemplate" + } + } + } + }, + "delete": { + "produces": [ + "application/json" + ], + "tags": [ + "Workspace" + ], + "summary": "Delete workspace.", + "operationId": "DeleteWorkspace", + "parameters": [ + { + "type": "string", + "description": "workspace name", + "name": "workspace", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "ok", + "schema": { + "$ref": "#/definitions/errors.Error" + } + } + } + }, + "patch": { + "consumes": [ + "application/json", + "application/merge-patch+json", + "application/json-patch+json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "Workspace" + ], + "summary": "Update workspace.", + "operationId": "PatchWorkspace", + "parameters": [ + { + "type": "string", + "description": "workspace name", + "name": "workspace", + "in": "path", + "required": true + }, + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/v1alpha2.WorkspaceTemplate" + } + } + ], + "responses": { + "200": { + "description": "ok", + "schema": { + "$ref": "#/definitions/v1alpha2.WorkspaceTemplate" + } + } + } + } + }, + "/kapis/tenant.kubesphere.io/v1alpha2/workspaces/{workspace}/clusters": { + "get": { + "produces": [ + "application/json" + ], + "tags": [ + "Workspace" + ], + "summary": "List clusters authorized to the specified workspace.", + "operationId": "ListWorkspaceClusters", + "parameters": [ + { + "type": "string", + "description": "workspace name", + "name": "workspace", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "ok", + "schema": { + "$ref": "#/definitions/api.ListResult" + } + } + } + } + }, + "/kapis/tenant.kubesphere.io/v1alpha2/workspaces/{workspace}/devops": { + "get": { + "produces": [ + "application/json" + ], + "tags": [ + "DevOps Project" + ], + "summary": "List the devops projects of the specified workspace for the current user", + "operationId": "ListDevOpsProjects", + "parameters": [ + { + "type": "string", + "description": "workspace name", + "name": "workspace", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "ok", + "schema": { + "$ref": "#/definitions/api.ListResult" + } + } + } + } + }, + "/kapis/tenant.kubesphere.io/v1alpha2/workspaces/{workspace}/federatednamespaces": { + "get": { + "produces": [ + "application/json" + ], + "tags": [ + "Namespace" + ], + "summary": "List the federated namespaces of the specified workspace for the current user", + "operationId": "ListFederatedNamespaces", + "parameters": [ + { + "type": "string", + "description": "workspace name", + "name": "workspace", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "ok", + "schema": { + "$ref": "#/definitions/api.ListResult" + } + } + } + } + }, + "/kapis/tenant.kubesphere.io/v1alpha2/workspaces/{workspace}/namespaces": { + "get": { + "produces": [ + "application/json" + ], + "tags": [ + "Namespace" + ], + "summary": "List the namespaces of the specified workspace for the current user", + "operationId": "ListNamespaces", + "parameters": [ + { + "type": "string", + "description": "workspace name", + "name": "workspace", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "ok", + "schema": { + "$ref": "#/definitions/api.ListResult" + } + } + } + }, + "post": { + "produces": [ + "application/json" + ], + "tags": [ + "Namespace" + ], + "summary": "List the namespaces of the specified workspace for the current user", + "operationId": "CreateNamespace", + "parameters": [ + { + "type": "string", + "description": "workspace name", + "name": "workspace", + "in": "path", + "required": true + }, + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/v1.Namespace" + } + } + ], + "responses": { + "200": { + "description": "ok", + "schema": { + "$ref": "#/definitions/v1.Namespace" + } + } + } + } + }, + "/kapis/tenant.kubesphere.io/v1alpha2/workspaces/{workspace}/namespaces/{namespace}": { + "get": { + "produces": [ + "application/json" + ], + "tags": [ + "Namespace" + ], + "summary": "Retrieve namespace details.", + "operationId": "DescribeNamespace", + "parameters": [ + { + "type": "string", + "description": "workspace name", + "name": "workspace", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "project name", + "name": "namespace", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "ok", + "schema": { + "$ref": "#/definitions/v1.Namespace" + } + } + } + }, + "put": { + "produces": [ + "application/json" + ], + "tags": [ + "Namespace" + ], + "operationId": "UpdateNamespace", + "parameters": [ + { + "type": "string", + "description": "workspace name", + "name": "workspace", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "project name", + "name": "namespace", + "in": "path", + "required": true + }, + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/v1.Namespace" + } + } + ], + "responses": { + "200": { + "description": "ok", + "schema": { + "$ref": "#/definitions/v1.Namespace" + } + } + } + }, + "delete": { + "produces": [ + "application/json" + ], + "tags": [ + "Namespace" + ], + "summary": "Delete namespace.", + "operationId": "DeleteNamespace", + "parameters": [ + { + "type": "string", + "description": "workspace name", + "name": "workspace", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "project name", + "name": "namespace", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "ok", + "schema": { + "$ref": "#/definitions/errors.Error" + } + } + } + }, + "patch": { + "consumes": [ + "application/json", + "application/merge-patch+json", + "application/json-patch+json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "Namespace" + ], + "operationId": "PatchNamespace", + "parameters": [ + { + "type": "string", + "description": "workspace name", + "name": "workspace", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "project name", + "name": "namespace", + "in": "path", + "required": true + }, + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/v1.Namespace" + } + } + ], + "responses": { + "200": { + "description": "ok", + "schema": { + "$ref": "#/definitions/v1.Namespace" + } + } + } + } + }, + "/kapis/tenant.kubesphere.io/v1alpha2/workspaces/{workspace}/workspacemembers/{workspacemember}/devops": { + "get": { + "produces": [ + "application/json" + ], + "tags": [ + "DevOps Project" + ], + "summary": "List the devops projects of specified workspace for the workspace member", + "operationId": "ListDevOpsProjects", + "parameters": [ + { + "type": "string", + "description": "workspace name", + "name": "workspace", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "workspacemember username", + "name": "workspacemember", + "in": "path", + "required": true + }, + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/v1.Namespace" + } + } + ], + "responses": { + "200": { + "description": "ok", + "schema": { + "$ref": "#/definitions/v1.Namespace" + } + } + } + } + }, + "/kapis/tenant.kubesphere.io/v1alpha2/workspaces/{workspace}/workspacemembers/{workspacemember}/namespaces": { + "get": { + "produces": [ + "application/json" + ], + "tags": [ + "Namespace" + ], + "summary": "List the namespaces of the specified workspace for the workspace member", + "operationId": "ListNamespaces", + "parameters": [ + { + "type": "string", + "description": "workspace name", + "name": "workspace", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "workspacemember username", + "name": "workspacemember", + "in": "path", + "required": true + }, + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/v1.Namespace" + } + } + ], + "responses": { + "200": { + "description": "ok", + "schema": { + "$ref": "#/definitions/v1.Namespace" + } + } + } + } + }, + "/kapis/terminal.kubesphere.io/v1alpha2/namespaces/{namespace}/pods/{pod}/exec": { + "get": { + "produces": [ + "application/json" + ], + "tags": [ + "Terminal" + ], + "summary": "create terminal session", + "operationId": "handleTerminalSession", + "parameters": [ + { + "type": "string", + "description": "namespace of which the pod located in", + "name": "namespace", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "name of the pod", + "name": "pod", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "OK" + } + } + } + }, + "/oauth/authenticate": { + "post": { + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "Authentication" + ], + "summary": "TokenReview attempts to authenticate a token to a known user. Note: TokenReview requests may be cached by the webhook token authenticator plugin in the kube-apiserver.", + "operationId": "TokenReview", + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/oauth.TokenReview" + } + } + ], + "responses": { + "200": { + "description": "ok", + "schema": { + "$ref": "#/definitions/oauth.TokenReview" + } + } + } + } + }, + "/oauth/authorize": { + "get": { + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "Authentication" + ], + "summary": "All requests for OAuth tokens involve a request to /oauth/authorize.", + "operationId": "Authorize", + "parameters": [ + { + "type": "string", + "description": "The value MUST be one of \"code\" for requesting an authorization code as described by [RFC6749] Section 4.1.1, \"token\" for requesting an access token (implicit grant) as described by [RFC6749] Section 4.2.2.", + "name": "response_type", + "in": "query", + "required": true + }, + { + "type": "string", + "description": "The client identifier issued to the client during the registration process described by [RFC6749] Section 2.2.", + "name": "client_id", + "in": "query", + "required": true + }, + { + "type": "string", + "description": "After completing its interaction with the resource owner, the authorization server directs the resource owner's user-agent back to the client.The redirection endpoint URI MUST be an absolute URI as defined by [RFC3986] Section 4.3.", + "name": "redirect_uri", + "in": "query" + } + ], + "responses": { + "302": { + "description": "Found", + "schema": { + "type": "string" + } + } + } + } + }, + "/oauth/callback/{callback}": { + "get": { + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "Authentication" + ], + "summary": "OAuth callback API, the path param callback is config by identity provider", + "operationId": "oauthCallBack", + "parameters": [ + { + "type": "string", + "description": "The access token issued by the authorization server.", + "name": "access_token", + "in": "query", + "required": true + }, + { + "type": "string", + "description": "The type of the token issued as described in [RFC6479] Section 7.1. Value is case insensitive.", + "name": "token_type", + "in": "query", + "required": true + }, + { + "type": "string", + "description": "The lifetime in seconds of the access token. For example, the value \"3600\" denotes that the access token will expire in one hour from the time the response was generated.If omitted, the authorization server SHOULD provide the expiration time via other means or document the default value.", + "name": "expires_in", + "in": "query" + }, + { + "type": "string", + "description": "if identical to the scope requested by the client;otherwise, REQUIRED. The scope of the access token as described by [RFC6479] Section 3.3.", + "name": "scope", + "in": "query" + }, + { + "type": "string", + "description": "if the \"state\" parameter was present in the client authorization request.The exact value received from the client.", + "name": "state", + "in": "query", + "required": true + } + ], + "responses": { + "200": { + "description": "ok", + "schema": { + "$ref": "#/definitions/oauth.Token" + } + } + } + } + }, + "/oauth/token": { + "post": { + "consumes": [ + "application/x-www-form-urlencoded" + ], + "produces": [ + "application/json" + ], + "tags": [ + "Authentication" + ], + "summary": "The resource owner password credentials grant type is suitable in\ncases where the resource owner has a trust relationship with the\nclient, such as the device operating system or a highly privileged application.", + "operationId": "Token", + "parameters": [ + { + "type": "string", + "description": "Value MUST be set to \"password\".", + "name": "grant_type", + "in": "formData", + "required": true + }, + { + "type": "string", + "description": "The resource owner username.", + "name": "username", + "in": "formData", + "required": true + }, + { + "type": "string", + "description": "The resource owner password.", + "name": "password", + "in": "formData", + "required": true + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/oauth.Token" + } + } + } + } + } + }, + "definitions": { + "._links": { + "properties": { + "actions": { + "$ref": "#/definitions/.actions" + }, + "branches": { + "$ref": "#/definitions/.branches" + }, + "queue": { + "$ref": "#/definitions/.queue" + }, + "runs": { + "$ref": "#/definitions/.runs" + }, + "scm": { + "$ref": "#/definitions/.scm" + }, + "self": { + "$ref": "#/definitions/.self" + }, + "trends": { + "$ref": "#/definitions/.trends" + } + } + }, + ".actions": { + "properties": { + "_class": { + "type": "string" + }, + "href": { + "type": "string" + } + } + }, + ".branch": { + "properties": { + "isPrimary": { + "description": "primary or not", + "type": "boolean" + }, + "issues": { + "description": "issues", + "type": "array", + "items": { + "$ref": "#/definitions/.branch.issues" + } + }, + "url": { + "description": "url", + "type": "string" + } + } + }, + ".branch.issues": {}, + ".branches": { + "properties": { + "_class": { + "type": "string" + }, + "href": { + "type": "string" + } + } + }, + ".data": { + "properties": { + "errors": { + "type": "array", + "items": { + "$ref": "#/definitions/.data.errors" + } + }, + "jenkinsfile": { + "description": "jenkinsfile", + "type": "string" + }, + "result": { + "description": "result e.g. success", + "type": "string" + } + } + }, + ".data.errors": { + "properties": { + "error": { + "description": "error message", + "type": "string" + }, + "location": { + "description": "err location", + "type": "array", + "items": { + "type": "string" + } + } + } + }, + ".defaultParameterValue": { + "properties": { + "_class": { + "description": "It’s a fully qualified name and is an identifier of the producer of this resource's capability.", + "type": "string" + }, + "name": { + "description": "name", + "type": "string" + }, + "value": { + "description": "value, string or bool type", + "$ref": "#/definitions/.defaultParameterValue.value" + } + } + }, + ".defaultParameterValue.value": {}, + ".latestRun": { + "properties": { + "_class": { + "description": "It’s a fully qualified name and is an identifier of the producer of this resource's capability.", + "type": "string" + }, + "_links": { + "description": "references the reachable path to this resource", + "$ref": "#/definitions/._links" + }, + "actions": { + "description": "the list of all actions", + "type": "array", + "items": { + "$ref": "#/definitions/.latestRun.actions" + } + }, + "artifactsZipFile": { + "description": "the artifacts zip file", + "type": "string" + }, + "causeOfBlockage": { + "description": "the cause of blockage", + "$ref": "#/definitions/.latestRun.causeOfBlockage" + }, + "causes": { + "type": "array", + "items": { + "$ref": "#/definitions/.latestRun.causes" + } + }, + "changeSet": { + "description": "changeset information", + "type": "array", + "items": { + "$ref": "#/definitions/.latestRun.changeSet" + } + }, + "description": { + "description": "description", + "$ref": "#/definitions/.latestRun.description" + }, + "durationInMillis": { + "description": "duration time in millis", + "type": "integer", + "format": "int32" + }, + "enQueueTime": { + "description": "the time of enter the queue", + "type": "string" + }, + "endTime": { + "description": "the time of end", + "type": "string" + }, + "estimatedDurationInMillis": { + "description": "estimated duration time in millis", + "type": "integer", + "format": "int32" + }, + "id": { + "description": "id", + "type": "string" + }, + "name": { + "description": "name", + "$ref": "#/definitions/.latestRun.name" + }, + "organization": { + "description": "the name of organization", + "type": "string" + }, + "pipeline": { + "description": "pipeline", + "type": "string" + }, + "replayable": { + "description": "Replayable or not", + "type": "boolean" + }, + "result": { + "description": "the result of pipeline run. e.g. SUCCESS", + "type": "string" + }, + "runSummary": { + "description": "pipeline run summary", + "type": "string" + }, + "startTime": { + "description": "the time of start", + "type": "string" + }, + "state": { + "description": "run state. e.g. RUNNING", + "type": "string" + }, + "type": { + "description": "type", + "type": "string" + } + } + }, + ".latestRun.actions": {}, + ".latestRun.causeOfBlockage": {}, + ".latestRun.causes": { + "properties": { + "_class": { + "description": "It’s a fully qualified name and is an identifier of the producer of this resource's capability.", + "type": "string" + }, + "shortDescription": { + "description": "short description", + "type": "string" + }, + "userId": { + "description": "user id", + "type": "string" + }, + "userName": { + "description": "user name", + "type": "string" + } + } + }, + ".latestRun.changeSet": {}, + ".latestRun.description": {}, + ".latestRun.name": {}, + ".permissions": { + "properties": { + "configure": { + "description": "configure action", + "type": "boolean" + }, + "create": { + "description": "create action", + "type": "boolean" + }, + "read": { + "description": "read action", + "type": "boolean" + }, + "start": { + "description": "start action", + "type": "boolean" + }, + "stop": { + "description": "stop action", + "type": "boolean" + } + } + }, + ".queue": { + "properties": { + "_class": { + "type": "string" + }, + "href": { + "type": "string" + } + } + }, + ".ranges": { + "properties": { + "ranges": { + "type": "array", + "items": { + "$ref": "#/definitions/.ranges.ranges" + } + } + } + }, + ".ranges.ranges": { + "properties": { + "end": { + "description": "End build number", + "type": "integer", + "format": "int32" + }, + "start": { + "description": "Start build number", + "type": "integer", + "format": "int32" + } + } + }, + ".repositories": { + "properties": { + "_class": { + "description": "It’s a fully qualified name and is an identifier of the producer of this resource's capability.", + "type": "string" + }, + "_links": { + "description": "references the reachable path to this resource", + "$ref": "#/definitions/._links" + }, + "items": { + "type": "array", + "items": { + "$ref": "#/definitions/.repositories.items" + } + }, + "lastPage": { + "description": "last page", + "$ref": "#/definitions/.repositories.lastPage" + }, + "nextPage": { + "description": "next page", + "$ref": "#/definitions/.repositories.nextPage" + }, + "pageSize": { + "description": "page size", + "type": "integer", + "format": "int32" + } + } + }, + ".repositories.items": { + "properties": { + "_class": { + "description": "It’s a fully qualified name and is an identifier of the producer of this resource's capability.", + "type": "string" + }, + "_links": { + "description": "references the reachable path to this resource", + "$ref": "#/definitions/._links" + }, + "defaultBranch": { + "description": "default branch", + "type": "string" + }, + "description": { + "description": "description", + "type": "string" + }, + "fullName": { + "description": "full name", + "type": "string" + }, + "name": { + "description": "name", + "type": "string" + }, + "permissions": { + "$ref": "#/definitions/.permissions" + }, + "private": { + "description": "private or not", + "type": "boolean" + } + } + }, + ".repositories.lastPage": {}, + ".repositories.nextPage": {}, + ".runs": { + "properties": { + "_class": { + "type": "string" + }, + "href": { + "type": "string" + } + } + }, + ".scm": { + "properties": { + "_class": { + "type": "string" + }, + "href": { + "type": "string" + } + } + }, + ".scmSource": { + "properties": { + "_class": { + "description": "It’s a fully qualified name and is an identifier of the producer of this resource's capability.", + "type": "string" + }, + "apiUrl": { + "description": "api url", + "$ref": "#/definitions/.scmSource.apiUrl" + }, + "id": { + "description": "The id of the source configuration management (SCM).", + "type": "string" + } + } + }, + ".scmSource.apiUrl": {}, + ".self": { + "properties": { + "_class": { + "type": "string" + }, + "href": { + "type": "string" + } + } + }, + ".trends": { + "properties": { + "_class": { + "type": "string" + }, + "href": { + "type": "string" + } + } + }, + "api.ListResult": { + "required": [ + "items", + "totalItems" + ], + "properties": { + "items": { + "type": "array", + "items": { + "$ref": "#/definitions/api.ListResult.items" + } + }, + "totalItems": { + "type": "integer", + "format": "int32" + } + } + }, + "api.ListResult.items": {}, + "api.RegistryCredential": { + "required": [ + "username", + "password", + "serverhost" + ], + "properties": { + "password": { + "description": "password", + "type": "string" + }, + "serverhost": { + "description": "registry server host", + "type": "string" + }, + "username": { + "description": "username", + "type": "string" + } + } + }, + "api.ResourceQuota": { + "required": [ + "namespace", + "data" + ], + "properties": { + "data": { + "description": "resource quota status", + "$ref": "#/definitions/v1.ResourceQuotaStatus" + }, + "namespace": { + "description": "namespace", + "type": "string" + } + } + }, + "api.Workloads": { + "required": [ + "namespace", + "data" + ], + "properties": { + "data": { + "description": "the number of unhealthy workloads", + "type": "object", + "additionalProperties": { + "type": "integer" + } + }, + "items": { + "description": "unhealthy workloads", + "type": "object" + }, + "namespace": { + "description": "the name of the namespace", + "type": "string" + } + } + }, + "big.Int": { + "required": [ + "neg", + "abs" + ], + "properties": { + "abs": { + "type": "array", + "items": { + "type": "integer" + } + }, + "neg": { + "type": "boolean" + } + } + }, + "devops.Artifacts": { + "properties": { + "_class": { + "description": "It’s a fully qualified name and is an identifier of the producer of this resource's capability.", + "type": "string" + }, + "_links": { + "description": "references the reachable path to this resource", + "$ref": "#/definitions/._links" + }, + "downloadable": { + "description": "downloadable or not", + "type": "boolean" + }, + "id": { + "description": "id", + "type": "string" + }, + "name": { + "description": "name", + "type": "string" + }, + "path": { + "description": "path", + "type": "string" + }, + "size": { + "description": "size", + "type": "integer", + "format": "int32" + }, + "url": { + "description": "The url for Download artifacts", + "type": "string" + } + } + }, + "devops.BranchPipeline": { + "properties": { + "_class": { + "description": "It’s a fully qualified name and is an identifier of the producer of this resource's capability.", + "type": "string" + }, + "_links": { + "description": "references the reachable path to this resource", + "$ref": "#/definitions/._links" + }, + "actions": { + "description": "the list of all actions", + "type": "array", + "items": { + "$ref": "#/definitions/devops.BranchPipeline.actions" + } + }, + "branch": { + "$ref": "#/definitions/.branch" + }, + "disabled": { + "description": "disable or not, if disabled, can not do any action", + "type": "boolean" + }, + "displayName": { + "description": "display name", + "type": "string" + }, + "estimatedDurationInMillis": { + "description": "estimated duration time in millis", + "type": "integer", + "format": "int32" + }, + "fullDisplayName": { + "description": "full display name", + "type": "string" + }, + "fullName": { + "description": "full name", + "type": "string" + }, + "latestRun": { + "$ref": "#/definitions/.latestRun" + }, + "name": { + "description": "name", + "type": "string" + }, + "organization": { + "description": "the name of organization", + "type": "string" + }, + "parameters": { + "type": "array", + "items": { + "$ref": "#/definitions/devops.BranchPipeline.parameters" + } + }, + "permissions": { + "$ref": "#/definitions/.permissions" + }, + "weatherScore": { + "description": "the score to description the result of pipeline", + "type": "integer", + "format": "int32" + } + } + }, + "devops.BranchPipeline.actions": {}, + "devops.BranchPipeline.parameters": { + "properties": { + "_class": { + "description": "It’s a fully qualified name and is an identifier of the producer of this resource's capability.", + "type": "string" + }, + "choices": { + "description": "choices", + "type": "array", + "items": { + "$ref": "#/definitions/devops.BranchPipeline.parameters.choices" + } + }, + "defaultParameterValue": { + "$ref": "#/definitions/.defaultParameterValue" + }, + "description": { + "description": "description", + "type": "string" + }, + "name": { + "description": "name", + "type": "string" + }, + "type": { + "description": "type", + "type": "string" + } + } + }, + "devops.BranchPipeline.parameters.choices": {}, + "devops.BranchPipelineRunNodes": { + "properties": { + "_class": { + "description": "It’s a fully qualified name and is an identifier of the producer of this resource's capability.", + "type": "string" + }, + "_links": { + "description": "references the reachable path to this resource", + "$ref": "#/definitions/._links" + }, + "actions": { + "description": "the list of all actions", + "type": "array", + "items": { + "$ref": "#/definitions/devops.BranchPipelineRunNodes.actions" + } + }, + "causeOfBlockage": { + "description": "the cause of blockage", + "$ref": "#/definitions/devops.BranchPipelineRunNodes.causeOfBlockage" + }, + "displayDescription": { + "description": "display description", + "$ref": "#/definitions/devops.BranchPipelineRunNodes.displayDescription" + }, + "displayName": { + "description": "display name", + "type": "string" + }, + "durationInMillis": { + "description": "duration time in millis", + "type": "integer", + "format": "int32" + }, + "edges": { + "type": "array", + "items": { + "$ref": "#/definitions/devops.BranchPipelineRunNodes.edges" + } + }, + "firstParent": { + "description": "first parent resource", + "$ref": "#/definitions/devops.BranchPipelineRunNodes.firstParent" + }, + "id": { + "description": "id", + "type": "string" + }, + "input": { + "description": "the action should user input", + "$ref": "#/definitions/devops.Input" + }, + "restartable": { + "description": "restartable or not", + "type": "boolean" + }, + "result": { + "description": "the result of pipeline run. e.g. SUCCESS. e.g. SUCCESS", + "type": "string" + }, + "startTime": { + "description": "the time of start", + "type": "string" + }, + "state": { + "description": "run state. e.g. RUNNING", + "type": "string" + }, + "steps": { + "type": "array", + "items": { + "$ref": "#/definitions/devops.BranchPipelineRunNodes.steps" + } + }, + "type": { + "description": "source type, e.g. \"WorkflowRun\"", + "type": "string" + } + } + }, + "devops.BranchPipelineRunNodes.actions": {}, + "devops.BranchPipelineRunNodes.causeOfBlockage": {}, + "devops.BranchPipelineRunNodes.displayDescription": {}, + "devops.BranchPipelineRunNodes.edges": { + "properties": { + "_class": { + "description": "It’s a fully qualified name and is an identifier of the producer of this resource's capability.", + "type": "string" + }, + "id": { + "description": "id", + "type": "string" + }, + "type": { + "description": "source type", + "type": "string" + } + } + }, + "devops.BranchPipelineRunNodes.firstParent": {}, + "devops.BranchPipelineRunNodes.steps": { + "properties": { + "_class": { + "description": "It’s a fully qualified name and is an identifier of the producer of this resource's capability.", + "type": "string" + }, + "_links": { + "$ref": "#/definitions/._links" + }, + "actions": { + "description": "references the reachable path to this resource", + "type": "array", + "items": { + "$ref": "#/definitions/devops.BranchPipelineRunNodes.steps.actions" + } + }, + "displayDescription": { + "description": "display description", + "$ref": "#/definitions/devops.BranchPipelineRunNodes.steps.displayDescription" + }, + "displayName": { + "description": "display name", + "type": "string" + }, + "durationInMillis": { + "description": "duration time in millis", + "type": "integer", + "format": "int32" + }, + "id": { + "description": "id", + "type": "string" + }, + "input": { + "description": "the action should user input", + "$ref": "#/definitions/devops.Input" + }, + "result": { + "description": "result", + "type": "string" + }, + "startTime": { + "description": "the time of start", + "type": "string" + }, + "state": { + "description": "run state. e.g. RUNNING", + "type": "string" + }, + "type": { + "description": "source type", + "type": "string" + } + } + }, + "devops.BranchPipelineRunNodes.steps.actions": { + "properties": { + "_class": { + "type": "string" + }, + "_links": { + "$ref": "#/definitions/._links" + }, + "urlName": { + "type": "string" + } + } + }, + "devops.BranchPipelineRunNodes.steps.displayDescription": {}, + "devops.CheckCronRes": { + "properties": { + "lastTime": { + "description": "last run time.", + "type": "string" + }, + "message": { + "description": "message", + "type": "string" + }, + "nextTime": { + "description": "next run time.", + "type": "string" + }, + "result": { + "description": "result e.g. ok, error", + "type": "string" + } + } + }, + "devops.CheckPlayload": { + "properties": { + "abort": { + "description": "abort or not", + "type": "boolean" + }, + "id": { + "description": "id", + "type": "string" + }, + "parameters": { + "type": "array", + "items": { + "$ref": "#/definitions/devops.CheckPlayloadParameters" + } + } + } + }, + "devops.CheckPlayloadParameters": { + "properties": { + "name": { + "description": "name", + "type": "string" + }, + "value": { + "description": "value", + "$ref": "#/definitions/devops.CheckPlayloadParameters.value" + } + } + }, + "devops.CheckPlayloadParameters.value": {}, + "devops.CheckScript": { + "properties": { + "column": { + "description": "column e.g. 0", + "type": "integer", + "format": "int32" + }, + "line": { + "description": "line e.g. 0", + "type": "integer", + "format": "int32" + }, + "message": { + "description": "message e.g. unexpected char: '#'", + "type": "string" + }, + "status": { + "description": "status e.g. fail", + "type": "string" + } + } + }, + "devops.CreateScmServerReq": { + "properties": { + "apiUrl": { + "description": "url of scm server", + "type": "string" + }, + "name": { + "description": "name of scm server", + "type": "string" + } + } + }, + "devops.Credential": { + "required": [ + "id", + "type" + ], + "properties": { + "description": { + "description": "Credential's description'", + "type": "string" + }, + "display_name": { + "description": "Credential's display name", + "type": "string" + }, + "domain": { + "description": "Credential's domain,In ks we only use the default domain, default '_''", + "type": "string" + }, + "fingerprint": { + "description": "usage of the Credential", + "$ref": "#/definitions/devops.Credential.fingerprint" + }, + "id": { + "description": "Id of Credential, e.g. dockerhub-id", + "type": "string" + }, + "type": { + "description": "Type of Credential, e.g. ssh/kubeconfig", + "type": "string" + } + } + }, + "devops.Credential.fingerprint": { + "properties": { + "file_name": { + "description": "Credential's display name and description", + "type": "string" + }, + "hash": { + "description": "Credential's hash", + "type": "string" + }, + "usage": { + "description": "all usage of Credential", + "type": "array", + "items": { + "$ref": "#/definitions/devops.Credential.fingerprint.usage" + } + } + } + }, + "devops.Credential.fingerprint.usage": { + "properties": { + "name": { + "description": "pipeline full name", + "type": "string" + }, + "ranges": { + "description": "The build number of all pipelines that use this credential", + "$ref": "#/definitions/.ranges" + } + } + }, + "devops.CronData": { + "required": [ + "cron" + ], + "properties": { + "cron": { + "description": "Cron script data.", + "type": "string" + }, + "pipelineName": { + "description": "Pipeline name, if pipeline haven't created, not required'", + "type": "string" + } + } + }, + "devops.Crumb": { + "properties": { + "_class": { + "description": "It’s a fully qualified name and is an identifier of the producer of this resource's capability.", + "type": "string" + }, + "crumb": { + "description": "crumb data", + "type": "string" + }, + "crumbRequestField": { + "description": "crumb request field", + "type": "string" + } + } + }, + "devops.Input": { + "properties": { + "_class": { + "description": "It’s a fully qualified name and is an identifier of the producer of this resource's capability.", + "type": "string" + }, + "_links": { + "description": "references the reachable path to this resource", + "$ref": "#/definitions/devops.Input._links" + }, + "id": { + "description": "the id of check action", + "type": "string" + }, + "message": { + "description": "the message of check action", + "type": "string" + }, + "ok": { + "description": "check status. e.g. \"Proceed\"", + "type": "string" + }, + "parameters": { + "description": "the parameters of check action", + "type": "array", + "items": { + "$ref": "#/definitions/devops.Input.parameters" + } + }, + "submitter": { + "description": "check submitter", + "$ref": "#/definitions/devops.Input.submitter" + } + } + }, + "devops.Input._links": { + "properties": { + "self": { + "$ref": "#/definitions/devops.Input._links.self" + } + } + }, + "devops.Input._links.self": { + "properties": { + "_class": { + "type": "string" + }, + "href": { + "type": "string" + } + } + }, + "devops.Input.parameters": {}, + "devops.Input.submitter": {}, + "devops.NodeSteps": { + "required": [ + "aprovable" + ], + "properties": { + "_class": { + "description": "It’s a fully qualified name and is an identifier of the producer of this resource's capability.", + "type": "string" + }, + "_links": { + "description": "references the reachable path to this resource", + "$ref": "#/definitions/._links" + }, + "actions": { + "type": "array", + "items": { + "$ref": "#/definitions/devops.NodeSteps.actions" + } + }, + "aprovable": { + "description": "indicate if this step can be approved by current user", + "type": "boolean" + }, + "displayDescription": { + "description": "display description", + "type": "string" + }, + "displayName": { + "description": "display name", + "type": "string" + }, + "durationInMillis": { + "description": "duration time in mullis", + "type": "integer", + "format": "int32" + }, + "id": { + "description": "id", + "type": "string" + }, + "input": { + "description": "the action should user input", + "$ref": "#/definitions/devops.Input" + }, + "result": { + "description": "the result of pipeline run. e.g. SUCCESS", + "type": "string" + }, + "startTime": { + "description": "the time of starts", + "type": "string" + }, + "state": { + "description": "run state. e.g. SKIPPED", + "type": "string" + }, + "type": { + "description": "type", + "type": "string" + } + } + }, + "devops.NodeSteps.actions": { + "properties": { + "_class": { + "description": "It’s a fully qualified name and is an identifier of the producer of this resource's capability.", + "type": "string" + }, + "_links": { + "description": "references the reachable path to this resource", + "$ref": "#/definitions/._links" + }, + "urlName": { + "description": "url name", + "type": "string" + } + } + }, + "devops.NodesDetail": { + "properties": { + "_class": { + "description": "It’s a fully qualified name and is an identifier of the producer of this resource's capability.", + "type": "string" + }, + "_links": { + "description": "references the reachable path to this resource", + "$ref": "#/definitions/._links" + }, + "actions": { + "description": "the list of all actions", + "type": "array", + "items": { + "$ref": "#/definitions/devops.NodesDetail.actions" + } + }, + "causeOfBlockage": { + "description": "the cause of blockage", + "$ref": "#/definitions/devops.NodesDetail.causeOfBlockage" + }, + "displayDescription": { + "description": "display description", + "$ref": "#/definitions/devops.NodesDetail.displayDescription" + }, + "displayName": { + "description": "display name", + "type": "string" + }, + "durationInMillis": { + "description": "duration time in mullis", + "type": "integer", + "format": "int32" + }, + "edges": { + "description": "edges", + "type": "array", + "items": { + "$ref": "#/definitions/devops.NodesDetail.edges" + } + }, + "firstParent": { + "description": "first parent", + "$ref": "#/definitions/devops.NodesDetail.firstParent" + }, + "id": { + "description": "id", + "type": "string" + }, + "input": { + "description": "the action should user input", + "$ref": "#/definitions/devops.Input" + }, + "restartable": { + "description": "restartable or not", + "type": "boolean" + }, + "result": { + "description": "the result of pipeline run. e.g. SUCCESS", + "type": "string" + }, + "startTime": { + "description": "the time of start", + "type": "string" + }, + "state": { + "description": "run state. e.g. FINISHED", + "type": "string" + }, + "steps": { + "description": "steps", + "type": "array", + "items": { + "$ref": "#/definitions/devops.NodeSteps" + } + }, + "type": { + "description": "type", + "type": "string" + } + } + }, + "devops.NodesDetail.actions": {}, + "devops.NodesDetail.causeOfBlockage": {}, + "devops.NodesDetail.displayDescription": {}, + "devops.NodesDetail.edges": {}, + "devops.NodesDetail.firstParent": {}, + "devops.OrgRepo": { + "properties": { + "_class": { + "description": "It’s a fully qualified name and is an identifier of the producer of this resource's capability.", + "type": "string" + }, + "_links": { + "description": "references the reachable path to this resource", + "$ref": "#/definitions/._links" + }, + "repositories": { + "$ref": "#/definitions/.repositories" + } + } + }, + "devops.Pipeline": { + "required": [ + "weatherScore" + ], + "properties": { + "_class": { + "description": "It’s a fully qualified name and is an identifier of the producer of this resource's capability.", + "type": "string" + }, + "_links": { + "description": "references the reachable path to this resource.", + "$ref": "#/definitions/._links" + }, + "actions": { + "description": "the list of all actions.", + "type": "array", + "items": { + "$ref": "#/definitions/devops.Pipeline.actions" + } + }, + "branchNames": { + "description": "branch names", + "type": "array", + "items": { + "type": "string" + } + }, + "disabled": { + "description": "disable or not, if disabled, can not do any action.", + "$ref": "#/definitions/devops.Pipeline.disabled" + }, + "displayName": { + "description": "display name", + "type": "string" + }, + "estimatedDurationInMillis": { + "description": "estimated duration time, unit is millis", + "type": "integer", + "format": "int32" + }, + "fullDisplayName": { + "description": "full display name", + "type": "string" + }, + "fullName": { + "description": "full name", + "type": "string" + }, + "name": { + "description": "name", + "type": "string" + }, + "numberOfFailingBranches": { + "description": "number of failing branches", + "type": "integer", + "format": "int32" + }, + "numberOfFailingPullRequests": { + "description": "number of failing pull requests", + "type": "integer", + "format": "int32" + }, + "numberOfFolders": { + "description": "number of folders", + "type": "integer", + "format": "int32" + }, + "numberOfPipelines": { + "description": "number of pipelines", + "type": "integer", + "format": "int32" + }, + "numberOfSuccessfulBranches": { + "description": "number of successful pull requests", + "type": "integer", + "format": "int32" + }, + "numberOfSuccessfulPullRequests": { + "description": "number of successful pull requests", + "type": "integer", + "format": "int32" + }, + "organization": { + "description": "the name of organization", + "type": "string" + }, + "parameters": { + "description": "parameters of pipeline, a pipeline can define list of parameters pipeline job expects.", + "$ref": "#/definitions/devops.Pipeline.parameters" + }, + "permissions": { + "description": "permissions", + "$ref": "#/definitions/.permissions" + }, + "pipelineFolderNames": { + "description": "pipeline folder names", + "type": "array", + "items": { + "$ref": "#/definitions/devops.Pipeline.pipelineFolderNames" + } + }, + "scmSource": { + "$ref": "#/definitions/.scmSource" + }, + "totalNumberOfBranches": { + "description": "total number of branches", + "type": "integer", + "format": "int32" + }, + "totalNumberOfPullRequests": { + "description": "total number of pull requests", + "type": "integer", + "format": "int32" + }, + "weatherScore": { + "description": "the score to description the result of pipeline activity", + "type": "integer", + "format": "int32" + } + } + }, + "devops.Pipeline.actions": {}, + "devops.Pipeline.disabled": {}, + "devops.Pipeline.parameters": {}, + "devops.Pipeline.pipelineFolderNames": {}, + "devops.PipelineBranch": {}, + "devops.PipelineList": { + "required": [ + "items", + "total_count" + ], + "properties": { + "items": { + "type": "array", + "items": { + "$ref": "#/definitions/devops.Pipeline" + } + }, + "total_count": { + "type": "integer", + "format": "int32" + } + } + }, + "devops.PipelineRun": { + "properties": { + "_class": { + "description": "It’s a fully qualified name and is an identifier of the producer of this resource's capability.", + "type": "string" + }, + "_links": { + "description": "references the reachable path to this resource", + "$ref": "#/definitions/._links" + }, + "actions": { + "description": "the list of all actions", + "type": "array", + "items": { + "$ref": "#/definitions/devops.PipelineRun.actions" + } + }, + "artifactsZipFile": { + "description": "the artifacts zip file", + "$ref": "#/definitions/devops.PipelineRun.artifactsZipFile" + }, + "branch": { + "description": "branch", + "$ref": "#/definitions/devops.PipelineRun.branch" + }, + "causeOfBlockage": { + "description": "the cause of blockage", + "$ref": "#/definitions/devops.PipelineRun.causeOfBlockage" + }, + "causes": { + "type": "array", + "items": { + "$ref": "#/definitions/devops.PipelineRun.causes" + } + }, + "changeSet": { + "description": "changeset information", + "type": "array", + "items": { + "$ref": "#/definitions/devops.PipelineRun.changeSet" + } + }, + "commitId": { + "description": "commit id", + "$ref": "#/definitions/devops.PipelineRun.commitId" + }, + "commitUrl": { + "description": "commit url", + "$ref": "#/definitions/devops.PipelineRun.commitUrl" + }, + "description": { + "description": "description", + "$ref": "#/definitions/devops.PipelineRun.description" + }, + "durationInMillis": { + "description": "duration time in millis", + "type": "integer", + "format": "int32" + }, + "enQueueTime": { + "description": "the time of enter the queue", + "type": "string" + }, + "endTime": { + "description": "the time of end", + "type": "string" + }, + "estimatedDurationInMillis": { + "description": "estimated duration time in millis", + "type": "integer", + "format": "int32" + }, + "id": { + "description": "id", + "type": "string" + }, + "name": { + "description": "name", + "$ref": "#/definitions/devops.PipelineRun.name" + }, + "organization": { + "description": "the name of organization", + "type": "string" + }, + "pipeline": { + "description": "the name of pipeline", + "type": "string" + }, + "pullRequest": { + "description": "pull request", + "$ref": "#/definitions/devops.PipelineRun.pullRequest" + }, + "replayable": { + "description": "replayable or not", + "type": "boolean" + }, + "result": { + "description": "the result of pipeline run. e.g. SUCCESS", + "type": "string" + }, + "runSummary": { + "description": "pipeline run summary", + "type": "string" + }, + "startTime": { + "description": "the time of start", + "type": "string" + }, + "state": { + "description": "run state. e.g. RUNNING", + "type": "string" + }, + "type": { + "description": "type", + "type": "string" + } + } + }, + "devops.PipelineRun.actions": {}, + "devops.PipelineRun.artifactsZipFile": {}, + "devops.PipelineRun.branch": {}, + "devops.PipelineRun.causeOfBlockage": {}, + "devops.PipelineRun.causes": { + "properties": { + "_class": { + "description": "It’s a fully qualified name and is an identifier of the producer of this resource's capability.", + "type": "string" + }, + "shortDescription": { + "description": "short description", + "type": "string" + }, + "userId": { + "description": "user id", + "type": "string" + }, + "userName": { + "description": "user name", + "type": "string" + } + } + }, + "devops.PipelineRun.changeSet": {}, + "devops.PipelineRun.commitId": {}, + "devops.PipelineRun.commitUrl": {}, + "devops.PipelineRun.description": {}, + "devops.PipelineRun.name": {}, + "devops.PipelineRun.pullRequest": {}, + "devops.PipelineRunList": { + "required": [ + "items", + "totalItems" + ], + "properties": { + "items": { + "type": "array", + "items": { + "$ref": "#/definitions/devops.PipelineRun" + } + }, + "totalItems": { + "type": "integer", + "format": "int32" + } + } + }, + "devops.PipelineRunNodes": { + "properties": { + "_class": { + "description": "It’s a fully qualified name and is an identifier of the producer of this resource's capability.", + "type": "string" + }, + "_links": { + "description": "references the reachable path to this resource", + "$ref": "#/definitions/._links" + }, + "actions": { + "description": "the list of all actions", + "type": "array", + "items": { + "$ref": "#/definitions/devops.PipelineRunNodes.actions" + } + }, + "causeOfBlockage": { + "description": "the cause of blockage", + "$ref": "#/definitions/devops.PipelineRunNodes.causeOfBlockage" + }, + "displayDescription": { + "description": "display description", + "$ref": "#/definitions/devops.PipelineRunNodes.displayDescription" + }, + "displayName": { + "description": "display name", + "type": "string" + }, + "durationInMillis": { + "description": "duration time in mullis", + "type": "integer", + "format": "int32" + }, + "edges": { + "description": "edges", + "type": "array", + "items": { + "$ref": "#/definitions/devops.PipelineRunNodes.edges" + } + }, + "firstParent": { + "description": "first parent", + "$ref": "#/definitions/devops.PipelineRunNodes.firstParent" + }, + "id": { + "description": "id", + "type": "string" + }, + "input": { + "description": "the action should user input", + "$ref": "#/definitions/devops.Input" + }, + "restartable": { + "description": "restartable or not", + "type": "boolean" + }, + "result": { + "description": "the result of pipeline run. e.g. SUCCESS", + "type": "string" + }, + "startTime": { + "description": "the time of start", + "type": "string" + }, + "state": { + "description": "run state. e.g. FINISHED", + "type": "string" + }, + "type": { + "description": "type", + "type": "string" + } + } + }, + "devops.PipelineRunNodes.actions": {}, + "devops.PipelineRunNodes.causeOfBlockage": {}, + "devops.PipelineRunNodes.displayDescription": {}, + "devops.PipelineRunNodes.edges": {}, + "devops.PipelineRunNodes.firstParent": {}, + "devops.ReplayPipeline": { + "properties": { + "_class": { + "description": "It’s a fully qualified name and is an identifier of the producer of this resource's capability.", + "type": "string" + }, + "_links": { + "description": "references the reachable path to this resource", + "$ref": "#/definitions/._links" + }, + "actions": { + "description": "the list of all actions.", + "type": "array", + "items": { + "$ref": "#/definitions/devops.ReplayPipeline.actions" + } + }, + "artifactsZipFile": { + "description": "the artifacts zip file", + "$ref": "#/definitions/devops.ReplayPipeline.artifactsZipFile" + }, + "causeOfBlockage": { + "description": "the cause of blockage", + "type": "string" + }, + "causes": { + "type": "array", + "items": { + "$ref": "#/definitions/devops.ReplayPipeline.causes" + } + }, + "changeSet": { + "description": "changeset information", + "type": "array", + "items": { + "$ref": "#/definitions/devops.ReplayPipeline.changeSet" + } + }, + "description": { + "description": "description", + "$ref": "#/definitions/devops.ReplayPipeline.description" + }, + "durationInMillis": { + "description": "duration time in millis", + "$ref": "#/definitions/devops.ReplayPipeline.durationInMillis" + }, + "enQueueTime": { + "description": "the time of enter the queue", + "$ref": "#/definitions/devops.ReplayPipeline.enQueueTime" + }, + "endTime": { + "description": "the time of end", + "$ref": "#/definitions/devops.ReplayPipeline.endTime" + }, + "estimatedDurationInMillis": { + "description": "estimated duration time, unit is millis", + "$ref": "#/definitions/devops.ReplayPipeline.estimatedDurationInMillis" + }, + "id": { + "description": "id", + "type": "string" + }, + "name": { + "description": "name", + "$ref": "#/definitions/devops.ReplayPipeline.name" + }, + "organization": { + "description": "the name of organization", + "type": "string" + }, + "pipeline": { + "description": "pipeline", + "type": "string" + }, + "queueId": { + "description": "queue id", + "type": "string" + }, + "replayable": { + "description": "replayable or not", + "type": "boolean" + }, + "result": { + "description": "the result of pipeline run. e.g. SUCCESS", + "type": "string" + }, + "runSummary": { + "description": "pipeline run summary", + "$ref": "#/definitions/devops.ReplayPipeline.runSummary" + }, + "startTime": { + "description": "the time of start", + "$ref": "#/definitions/devops.ReplayPipeline.startTime" + }, + "state": { + "description": "run state. e.g. RUNNING", + "type": "string" + }, + "type": { + "description": "type", + "type": "string" + } + } + }, + "devops.ReplayPipeline.actions": {}, + "devops.ReplayPipeline.artifactsZipFile": {}, + "devops.ReplayPipeline.causes": { + "properties": { + "_class": { + "description": "It’s a fully qualified name and is an identifier of the producer of this resource's capability.", + "type": "string" + }, + "shortDescription": { + "description": "short description", + "type": "string" + }, + "userId": { + "description": "user id", + "type": "string" + }, + "userName": { + "description": "user name", + "type": "string" + } + } + }, + "devops.ReplayPipeline.changeSet": {}, + "devops.ReplayPipeline.description": {}, + "devops.ReplayPipeline.durationInMillis": {}, + "devops.ReplayPipeline.enQueueTime": {}, + "devops.ReplayPipeline.endTime": {}, + "devops.ReplayPipeline.estimatedDurationInMillis": {}, + "devops.ReplayPipeline.name": {}, + "devops.ReplayPipeline.runSummary": {}, + "devops.ReplayPipeline.startTime": {}, + "devops.ReqJenkinsfile": { + "properties": { + "jenkinsfile": { + "description": "jenkinsfile", + "type": "string" + } + } + }, + "devops.ReqJson": { + "properties": { + "json": { + "description": "json data", + "type": "string" + } + } + }, + "devops.ReqScript": { + "properties": { + "value": { + "description": "Pipeline script data", + "type": "string" + } + } + }, + "devops.ResJenkinsfile": { + "properties": { + "data": { + "$ref": "#/definitions/.data" + }, + "status": { + "description": "status e.g. ok", + "type": "string" + } + } + }, + "devops.ResJson": { + "properties": { + "data": { + "$ref": "#/definitions/.data" + }, + "status": { + "description": "status e.g. ok", + "type": "string" + } + } + }, + "devops.RunPayload": { + "properties": { + "parameters": { + "type": "array", + "items": { + "$ref": "#/definitions/devops.RunPayload.parameters" + } + } + } + }, + "devops.RunPayload.parameters": { + "properties": { + "name": { + "description": "name", + "type": "string" + }, + "value": { + "description": "value", + "type": "string" + } + } + }, + "devops.RunPipeline": { + "properties": { + "_class": { + "description": "It’s a fully qualified name and is an identifier of the producer of this resource's capability.", + "type": "string" + }, + "_links": { + "description": "references the reachable path to this resource", + "$ref": "#/definitions/._links" + }, + "actions": { + "description": "the list of all actions", + "type": "array", + "items": { + "$ref": "#/definitions/devops.RunPipeline.actions" + } + }, + "artifactsZipFile": { + "description": "the artifacts zip file", + "$ref": "#/definitions/devops.RunPipeline.artifactsZipFile" + }, + "causeOfBlockage": { + "description": "the cause of blockage", + "type": "string" + }, + "causes": { + "type": "array", + "items": { + "$ref": "#/definitions/devops.RunPipeline.causes" + } + }, + "changeSet": { + "description": "changeset information", + "type": "array", + "items": { + "$ref": "#/definitions/devops.RunPipeline.changeSet" + } + }, + "description": { + "description": "description", + "$ref": "#/definitions/devops.RunPipeline.description" + }, + "durationInMillis": { + "description": "duration time in millis", + "$ref": "#/definitions/devops.RunPipeline.durationInMillis" + }, + "enQueueTime": { + "description": "the time of enter the queue", + "$ref": "#/definitions/devops.RunPipeline.enQueueTime" + }, + "endTime": { + "description": "the time of end", + "$ref": "#/definitions/devops.RunPipeline.endTime" + }, + "estimatedDurationInMillis": { + "description": "estimated duration time in millis", + "$ref": "#/definitions/devops.RunPipeline.estimatedDurationInMillis" + }, + "id": { + "description": "id", + "type": "string" + }, + "name": { + "description": "name", + "$ref": "#/definitions/devops.RunPipeline.name" + }, + "organization": { + "description": "the name of organization", + "type": "string" + }, + "pipeline": { + "description": "pipeline", + "type": "string" + }, + "queueId": { + "description": "queue id", + "type": "string" + }, + "replayable": { + "description": "replayable or not", + "type": "boolean" + }, + "result": { + "description": "the result of pipeline run. e.g. SUCCESS", + "type": "string" + }, + "runSummary": { + "description": "pipeline run summary", + "$ref": "#/definitions/devops.RunPipeline.runSummary" + }, + "startTime": { + "description": "the time of start", + "$ref": "#/definitions/devops.RunPipeline.startTime" + }, + "state": { + "description": "run state. e.g. RUNNING", + "type": "string" + }, + "type": { + "description": "type", + "type": "string" + } + } + }, + "devops.RunPipeline.actions": {}, + "devops.RunPipeline.artifactsZipFile": {}, + "devops.RunPipeline.causes": { + "properties": { + "_class": { + "description": "It’s a fully qualified name and is an identifier of the producer of this resource's capability.", + "type": "string" + }, + "shortDescription": { + "description": "short description", + "type": "string" + }, + "userId": { + "description": "user id", + "type": "string" + }, + "userName": { + "description": "user name", + "type": "string" + } + } + }, + "devops.RunPipeline.changeSet": {}, + "devops.RunPipeline.description": {}, + "devops.RunPipeline.durationInMillis": {}, + "devops.RunPipeline.enQueueTime": {}, + "devops.RunPipeline.endTime": {}, + "devops.RunPipeline.estimatedDurationInMillis": {}, + "devops.RunPipeline.name": {}, + "devops.RunPipeline.runSummary": {}, + "devops.RunPipeline.startTime": {}, + "devops.SCMOrg": { + "properties": { + "_class": { + "description": "It’s a fully qualified name and is an identifier of the producer of this resource's capability.", + "type": "string" + }, + "_links": { + "description": "references the reachable path to this resource", + "$ref": "#/definitions/._links" + }, + "avatar": { + "description": "the url of organization avatar", + "type": "string" + }, + "jenkinsOrganizationPipeline": { + "description": "weather or not already have jenkins pipeline.", + "type": "boolean" + }, + "name": { + "description": "organization name", + "type": "string" + } + } + }, + "devops.SCMServer": { + "properties": { + "_class": { + "description": "It’s a fully qualified name and is an identifier of the producer of this resource's capability.", + "type": "string" + }, + "_links": { + "description": "references the reachable path to this resource", + "$ref": "#/definitions/._links" + }, + "apiUrl": { + "description": "url of scm server", + "type": "string" + }, + "id": { + "description": "server id of scm server", + "type": "string" + }, + "name": { + "description": "name of scm server", + "type": "string" + } + } + }, + "devops.StopPipeline": { + "properties": { + "_class": { + "description": "It’s a fully qualified name and is an identifier of the producer of this resource's capability.", + "type": "string" + }, + "_links": { + "description": "references the reachable path to this resource", + "$ref": "#/definitions/._links" + }, + "actions": { + "description": "the list of all actions.", + "type": "array", + "items": { + "$ref": "#/definitions/devops.StopPipeline.actions" + } + }, + "artifactsZipFile": { + "description": "the artifacts zip file", + "$ref": "#/definitions/devops.StopPipeline.artifactsZipFile" + }, + "branch": { + "$ref": "#/definitions/.branch" + }, + "causeOfBlockage": { + "description": "the cause of blockage", + "$ref": "#/definitions/devops.StopPipeline.causeOfBlockage" + }, + "causes": { + "type": "array", + "items": { + "$ref": "#/definitions/devops.StopPipeline.causes" + } + }, + "changeSet": { + "description": "changeset information", + "type": "array", + "items": { + "$ref": "#/definitions/devops.StopPipeline.changeSet" + } + }, + "commitId": { + "description": "commit id", + "type": "string" + }, + "commitUrl": { + "description": "commit url", + "$ref": "#/definitions/devops.StopPipeline.commitUrl" + }, + "description": { + "description": "description", + "$ref": "#/definitions/devops.StopPipeline.description" + }, + "durationInMillis": { + "description": "duration time in millis", + "type": "integer", + "format": "int32" + }, + "enQueueTime": { + "description": "the time of enter the queue", + "type": "string" + }, + "endTime": { + "description": "the time of end", + "type": "string" + }, + "estimatedDurationInMillis": { + "description": "estimated duration time in millis", + "type": "integer", + "format": "int32" + }, + "id": { + "description": "id", + "type": "string" + }, + "name": { + "description": "name", + "$ref": "#/definitions/devops.StopPipeline.name" + }, + "organization": { + "description": "the name of organization", + "type": "string" + }, + "pipeline": { + "description": "pipeline", + "type": "string" + }, + "pullRequest": { + "description": "pull request", + "$ref": "#/definitions/devops.StopPipeline.pullRequest" + }, + "replayable": { + "description": "replayable or not", + "type": "boolean" + }, + "result": { + "description": "the result of pipeline run. e.g. SUCCESS", + "type": "string" + }, + "runSummary": { + "description": "pipeline run summary", + "type": "string" + }, + "startTime": { + "description": "the time of start", + "type": "string" + }, + "state": { + "description": "run state. e.g. RUNNING", + "type": "string" + }, + "type": { + "description": "type", + "type": "string" + } + } + }, + "devops.StopPipeline.actions": {}, + "devops.StopPipeline.artifactsZipFile": {}, + "devops.StopPipeline.causeOfBlockage": {}, + "devops.StopPipeline.causes": { + "properties": { + "_class": { + "description": "It’s a fully qualified name and is an identifier of the producer of this resource's capability.", + "type": "string" + }, + "shortDescription": { + "description": "short description", + "type": "string" + } + } + }, + "devops.StopPipeline.changeSet": {}, + "devops.StopPipeline.commitUrl": {}, + "devops.StopPipeline.description": {}, + "devops.StopPipeline.name": {}, + "devops.StopPipeline.pullRequest": {}, + "devops.Validates": { + "properties": { + "credentialId": { + "description": "the id of credential", + "type": "string" + } + } + }, + "errors.Error": { + "required": [ + "message" + ], + "properties": { + "message": { + "description": "error message", + "type": "string" + } + } + }, + "events.Bucket": { + "required": [ + "time", + "count" + ], + "properties": { + "count": { + "description": "total number of events at intervals", + "type": "integer", + "format": "int64" + }, + "time": { + "description": "timestamp", + "type": "integer", + "format": "int64" + } + } + }, + "events.Events": { + "required": [ + "total", + "records" + ], + "properties": { + "records": { + "description": "actual array of results", + "type": "array", + "items": { + "$ref": "#/definitions/v1.Event" + } + }, + "total": { + "description": "total number of matched results", + "type": "integer", + "format": "int64" + } + } + }, + "events.Histogram": { + "required": [ + "total", + "buckets" + ], + "properties": { + "buckets": { + "description": "actual array of histogram results", + "type": "array", + "items": { + "$ref": "#/definitions/events.Bucket" + } + }, + "total": { + "description": "total number of events", + "type": "integer", + "format": "int64" + } + } + }, + "events.Statistics": { + "required": [ + "resources", + "events" + ], + "properties": { + "events": { + "description": "total number of events", + "type": "integer", + "format": "int64" + }, + "resources": { + "description": "total number of resources", + "type": "integer", + "format": "int64" + } + } + }, + "git.AuthInfo": { + "required": [ + "remoteUrl" + ], + "properties": { + "remoteUrl": { + "description": "git server url", + "type": "string" + }, + "secretRef": { + "description": "auth secret reference", + "$ref": "#/definitions/v1.SecretReference" + } + } + }, + "inf.Dec": { + "required": [ + "unscaled", + "scale" + ], + "properties": { + "scale": { + "type": "integer", + "format": "int32" + }, + "unscaled": { + "$ref": "#/definitions/big.Int" + } + } + }, + "logging.Bucket": { + "required": [ + "time", + "count" + ], + "properties": { + "count": { + "description": "total number of logs at intervals", + "type": "integer", + "format": "int64" + }, + "time": { + "description": "timestamp", + "type": "integer", + "format": "int64" + } + } + }, + "logging.Histogram": { + "required": [ + "total", + "histograms" + ], + "properties": { + "histograms": { + "description": "actual array of histogram results", + "type": "array", + "items": { + "$ref": "#/definitions/logging.Bucket" + } + }, + "total": { + "description": "total number of logs", + "type": "integer", + "format": "int64" + } + } + }, + "logging.Logs": { + "required": [ + "total" + ], + "properties": { + "records": { + "description": "actual array of results", + "type": "array", + "items": { + "$ref": "#/definitions/logging.Record" + } + }, + "total": { + "description": "total number of matched results", + "type": "integer", + "format": "int64" + } + } + }, + "logging.Record": { + "properties": { + "container": { + "description": "container name", + "type": "string" + }, + "log": { + "description": "log message", + "type": "string" + }, + "namespace": { + "description": "namespace", + "type": "string" + }, + "pod": { + "description": "pod name", + "type": "string" + }, + "time": { + "description": "log timestamp", + "type": "string" + } + } + }, + "logging.Statistics": { + "required": [ + "containers", + "logs" + ], + "properties": { + "containers": { + "description": "total number of containers", + "type": "integer", + "format": "int64" + }, + "logs": { + "description": "total number of logs", + "type": "integer", + "format": "int64" + } + } + }, + "models.PageableResponse": { + "required": [ + "items", + "total_count" + ], + "properties": { + "items": { + "description": "paging data", + "type": "array", + "items": { + "$ref": "#/definitions/models.PageableResponse.items" + } + }, + "total_count": { + "description": "total count", + "type": "integer", + "format": "int32" + } + } + }, + "models.PageableResponse.items": {}, + "models.PodInfo": { + "required": [ + "namespace", + "pod", + "container" + ], + "properties": { + "container": { + "description": "container name", + "type": "string" + }, + "namespace": { + "description": "namespace", + "type": "string" + }, + "pod": { + "description": "pod name", + "type": "string" + } + } + }, + "monitoring.Metadata": { + "required": [ + "data" + ], + "properties": { + "data": { + "description": "actual array of results", + "type": "array", + "items": { + "$ref": "#/definitions/monitoring.Metadata" + } + } + } + }, + "monitoring.Metric": { + "properties": { + "data": { + "description": "actual metric result", + "$ref": "#/definitions/monitoring.MetricData" + }, + "error": { + "type": "string" + }, + "metric_name": { + "description": "metric name, eg. scheduler_up_sum", + "type": "string" + } + } + }, + "monitoring.MetricData": { + "properties": { + "result": { + "description": "metric data including labels, time series and values", + "type": "array", + "items": { + "$ref": "#/definitions/monitoring.MetricValue" + } + }, + "resultType": { + "description": "result type, one of matrix, vector", + "type": "string" + } + } + }, + "monitoring.MetricLabelSet": { + "required": [ + "data" + ], + "properties": { + "data": { + "description": "actual array of results", + "type": "array", + "items": { + "$ref": "#/definitions/monitoring.MetricLabelSet.data" + } + } + } + }, + "monitoring.MetricLabelSet.data": { + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "monitoring.MetricValue": { + "properties": { + "metric": { + "description": "time series labels", + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "value": { + "description": "time series, values of vector type", + "type": "string" + }, + "values": { + "description": "time series, values of matrix type", + "type": "array", + "items": { + "$ref": "#/definitions/monitoring.Point" + } + } + } + }, + "monitoring.Point": {}, + "monitoring.Metrics": { + "required": [ + "results" + ], + "properties": { + "page": { + "description": "current page returned", + "type": "integer", + "format": "int32" + }, + "results": { + "description": "actual array of results", + "type": "array", + "items": { + "$ref": "#/definitions/monitoring.Metric" + } + }, + "total_item": { + "description": "page size", + "type": "integer", + "format": "int32" + }, + "total_page": { + "description": "total number of pages", + "type": "integer", + "format": "int32" + } + } + }, + "oauth.LoginRequest": { + "required": [ + "username", + "password" + ], + "properties": { + "password": { + "description": "password", + "type": "string" + }, + "username": { + "description": "username", + "type": "string" + } + } + }, + "oauth.Spec": { + "required": [ + "token" + ], + "properties": { + "token": { + "description": "access token", + "type": "string" + } + } + }, + "oauth.Status": { + "required": [ + "authenticated" + ], + "properties": { + "authenticated": { + "description": "is authenticated", + "type": "boolean" + }, + "user": { + "description": "user info", + "type": "object" + } + } + }, + "oauth.Token": { + "required": [ + "access_token" + ], + "properties": { + "access_token": { + "type": "string" + }, + "expires_in": { + "type": "integer", + "format": "int32" + }, + "refresh_token": { + "type": "string" + }, + "token_type": { + "type": "string" + } + } + }, + "oauth.TokenReview": { + "required": [ + "apiVersion", + "kind" + ], + "properties": { + "apiVersion": { + "description": "Kubernetes API version", + "type": "string" + }, + "kind": { + "description": "kind of the API object", + "type": "string" + }, + "spec": { + "$ref": "#/definitions/oauth.Spec" + }, + "status": { + "description": "token review status", + "$ref": "#/definitions/oauth.Status" + } + } + }, + "openpitrix.App": { + "required": [ + "category_set" + ], + "properties": { + "abstraction": { + "type": "string" + }, + "active": { + "type": "boolean" + }, + "app_id": { + "type": "string" + }, + "app_version_types": { + "type": "string" + }, + "category_set": { + "type": "array", + "items": { + "$ref": "#/definitions/openpitrix.ResourceCategory" + } + }, + "chart_name": { + "type": "string" + }, + "cluster_total": { + "type": "integer", + "format": "int32" + }, + "company_join_time": { + "type": "string" + }, + "company_name": { + "type": "string" + }, + "company_profile": { + "type": "string" + }, + "company_website": { + "type": "string" + }, + "create_time": { + "type": "string" + }, + "description": { + "type": "string" + }, + "home": { + "type": "string" + }, + "icon": { + "type": "string" + }, + "isv": { + "type": "string" + }, + "keywords": { + "type": "string" + }, + "latest_app_version": { + "$ref": "#/definitions/openpitrix.AppVersion" + }, + "maintainers": { + "type": "string" + }, + "name": { + "type": "string" + }, + "owner": { + "type": "string" + }, + "readme": { + "type": "string" + }, + "repo_id": { + "type": "string" + }, + "screenshots": { + "type": "string" + }, + "sources": { + "type": "string" + }, + "status": { + "type": "string" + }, + "status_time": { + "type": "string" + }, + "tos": { + "type": "string" + }, + "update_time": { + "type": "string" + } + } + }, + "openpitrix.AppVersion": { + "properties": { + "active": { + "type": "boolean" + }, + "app_id": { + "type": "string" + }, + "cluster_total": { + "type": "integer", + "format": "int32" + }, + "create_time": { + "type": "string" + }, + "description": { + "type": "string" + }, + "home": { + "type": "string" + }, + "icon": { + "type": "string" + }, + "keywords": { + "type": "string" + }, + "maintainers": { + "type": "string" + }, + "message": { + "type": "string" + }, + "name": { + "type": "string" + }, + "owner": { + "type": "string" + }, + "package_name": { + "type": "string" + }, + "readme": { + "type": "string" + }, + "review_id": { + "type": "string" + }, + "screenshots": { + "type": "string" + }, + "sequence": { + "type": "integer", + "format": "int64" + }, + "sources": { + "type": "string" + }, + "status": { + "type": "string" + }, + "status_time": { + "type": "string" + }, + "type": { + "type": "string" + }, + "update_time": { + "type": "string" + }, + "version_id": { + "type": "string" + } + } + }, + "openpitrix.AppVersionAudit": { + "properties": { + "app_id": { + "type": "string" + }, + "app_name": { + "type": "string" + }, + "message": { + "type": "string" + }, + "operator": { + "type": "string" + }, + "operator_type": { + "type": "string" + }, + "review_id": { + "type": "string" + }, + "status": { + "type": "string" + }, + "status_time": { + "type": "string" + }, + "version_id": { + "type": "string" + }, + "version_name": { + "type": "string" + }, + "version_type": { + "type": "string" + } + } + }, + "openpitrix.AppVersionReview": { + "properties": { + "app_id": { + "type": "string" + }, + "app_name": { + "type": "string" + }, + "phase": { + "type": "object", + "additionalProperties": { + "$ref": "#/definitions/openpitrix.AppVersionReviewPhase" + } + }, + "review_id": { + "type": "string" + }, + "reviewer": { + "type": "string" + }, + "status": { + "type": "string" + }, + "status_time": { + "type": "string" + }, + "version_id": { + "type": "string" + }, + "version_name": { + "type": "string" + }, + "version_type": { + "type": "string" + } + } + }, + "openpitrix.AppVersionReviewPhase": { + "properties": { + "message": { + "type": "string" + }, + "operator": { + "type": "string" + }, + "operator_type": { + "type": "string" + }, + "review_time": { + "type": "string" + }, + "status": { + "type": "string" + }, + "status_time": { + "type": "string" + } + } + }, + "openpitrix.Application": { + "required": [ + "name" + ], + "properties": { + "app": { + "description": "application template info", + "$ref": "#/definitions/openpitrix.App" + }, + "cluster": { + "description": "application cluster info", + "$ref": "#/definitions/openpitrix.Cluster" + }, + "ingresses": { + "description": "application ingresses", + "type": "array", + "items": { + "$ref": "#/definitions/v1beta1.Ingress" + } + }, + "name": { + "description": "application name", + "type": "string" + }, + "services": { + "description": "application services", + "type": "array", + "items": { + "$ref": "#/definitions/v1.Service" + } + }, + "version": { + "description": "application template version info", + "$ref": "#/definitions/openpitrix.AppVersion" + }, + "workloads": { + "description": "application workloads", + "$ref": "#/definitions/openpitrix.workLoads" + } + } + }, + "openpitrix.Attachment": { + "properties": { + "attachment_content": { + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "attachment_id": { + "type": "string" + }, + "create_time": { + "type": "string" + } + } + }, + "openpitrix.Category": { + "properties": { + "app_total": { + "type": "integer", + "format": "int32" + }, + "category_id": { + "type": "string" + }, + "create_time": { + "type": "string" + }, + "description": { + "type": "string" + }, + "icon": { + "type": "string" + }, + "locale": { + "type": "string" + }, + "name": { + "type": "string" + }, + "owner": { + "type": "string" + }, + "update_time": { + "type": "string" + } + } + }, + "openpitrix.Cluster": { + "properties": { + "additional_info": { + "type": "string" + }, + "app_id": { + "type": "string" + }, + "cluster_id": { + "type": "string" + }, + "cluster_type": { + "type": "integer", + "format": "int64" + }, + "create_time": { + "type": "string" + }, + "debug": { + "type": "boolean" + }, + "description": { + "type": "string" + }, + "endpoints": { + "type": "string" + }, + "env": { + "type": "string" + }, + "frontgate_id": { + "type": "string" + }, + "global_uuid": { + "type": "string" + }, + "metadata_root_access": { + "type": "boolean" + }, + "name": { + "type": "string" + }, + "owner": { + "type": "string" + }, + "runtime_id": { + "type": "string" + }, + "status": { + "type": "string" + }, + "status_time": { + "type": "string" + }, + "subnet_id": { + "type": "string" + }, + "transition_status": { + "type": "string" + }, + "upgrade_status": { + "type": "string" + }, + "upgrade_time": { + "type": "string" + }, + "version_id": { + "type": "string" + }, + "vpc_id": { + "type": "string" + }, + "zone": { + "type": "string" + } + } + }, + "openpitrix.CreateAppRequest": { + "properties": { + "icon": { + "type": "string" + }, + "isv": { + "type": "string" + }, + "name": { + "type": "string" + }, + "version_name": { + "type": "string" + }, + "version_package": { + "type": "string" + }, + "version_type": { + "type": "string" + } + } + }, + "openpitrix.CreateAppResponse": { + "properties": { + "app_id": { + "type": "string" + }, + "version_id": { + "type": "string" + } + } + }, + "openpitrix.CreateAppVersionRequest": { + "properties": { + "app_id": { + "type": "string" + }, + "description": { + "type": "string" + }, + "name": { + "type": "string" + }, + "package": { + "type": "string" + }, + "type": { + "type": "string" + } + } + }, + "openpitrix.CreateAppVersionResponse": { + "properties": { + "version_id": { + "type": "string" + } + } + }, + "openpitrix.CreateCategoryRequest": { + "properties": { + "description": { + "type": "string" + }, + "icon": { + "type": "string" + }, + "locale": { + "type": "string" + }, + "name": { + "type": "string" + } + } + }, + "openpitrix.CreateCategoryResponse": { + "properties": { + "category_id": { + "type": "string" + } + } + }, + "openpitrix.CreateClusterRequest": { + "required": [ + "advanced_param" + ], + "properties": { + "advanced_param": { + "type": "array", + "items": { + "type": "string" + } + }, + "app_id": { + "type": "string" + }, + "conf": { + "type": "string" + }, + "runtime_id": { + "type": "string" + }, + "version_id": { + "type": "string" + } + } + }, + "openpitrix.CreateRepoRequest": { + "required": [ + "providers" + ], + "properties": { + "app_default_status": { + "type": "string" + }, + "category_id": { + "type": "string" + }, + "credential": { + "type": "string" + }, + "description": { + "type": "string" + }, + "name": { + "type": "string" + }, + "providers": { + "type": "array", + "items": { + "type": "string" + } + }, + "type": { + "type": "string" + }, + "url": { + "type": "string" + }, + "visibility": { + "type": "string" + }, + "workspace": { + "type": "string" + } + } + }, + "openpitrix.CreateRepoResponse": { + "properties": { + "repo_id": { + "type": "string" + } + } + }, + "openpitrix.GetAppVersionPackageFilesResponse": { + "properties": { + "files": { + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "version_id": { + "type": "string" + } + } + }, + "openpitrix.GetAppVersionPackageResponse": { + "properties": { + "app_id": { + "type": "string" + }, + "package": { + "type": "string" + }, + "version_id": { + "type": "string" + } + } + }, + "openpitrix.ModifyAppVersionRequest": { + "properties": { + "description": { + "type": "string" + }, + "name": { + "type": "string" + }, + "package": { + "type": "string" + }, + "package_files": { + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "version_id": { + "type": "string" + } + } + }, + "openpitrix.ModifyCategoryRequest": { + "properties": { + "description": { + "type": "string" + }, + "icon": { + "type": "string" + }, + "locale": { + "type": "string" + }, + "name": { + "type": "string" + } + } + }, + "openpitrix.ModifyClusterAttributesRequest": { + "properties": { + "cluster_id": { + "type": "string" + }, + "description": { + "type": "string" + }, + "name": { + "type": "string" + } + } + }, + "openpitrix.ModifyRepoRequest": { + "required": [ + "providers" + ], + "properties": { + "app_default_status": { + "type": "string" + }, + "category_id": { + "type": "string" + }, + "credential": { + "type": "string" + }, + "description": { + "type": "string" + }, + "name": { + "type": "string" + }, + "providers": { + "type": "array", + "items": { + "type": "string" + } + }, + "type": { + "type": "string" + }, + "url": { + "type": "string" + }, + "visibility": { + "type": "string" + }, + "workspace": { + "type": "string" + } + } + }, + "openpitrix.Repo": { + "required": [ + "category_set", + "labels", + "providers", + "selectors" + ], + "properties": { + "app_default_status": { + "type": "string" + }, + "category_set": { + "type": "array", + "items": { + "$ref": "#/definitions/openpitrix.ResourceCategory" + } + }, + "controller": { + "type": "integer", + "format": "int32" + }, + "create_time": { + "type": "string" + }, + "credential": { + "type": "string" + }, + "description": { + "type": "string" + }, + "labels": { + "type": "array", + "items": { + "$ref": "#/definitions/openpitrix.RepoLabel" + } + }, + "name": { + "type": "string" + }, + "owner": { + "type": "string" + }, + "providers": { + "type": "array", + "items": { + "type": "string" + } + }, + "repo_id": { + "type": "string" + }, + "selectors": { + "type": "array", + "items": { + "$ref": "#/definitions/openpitrix.RepoSelector" + } + }, + "status": { + "type": "string" + }, + "status_time": { + "type": "string" + }, + "type": { + "type": "string" + }, + "url": { + "type": "string" + }, + "visibility": { + "type": "string" + } + } + }, + "openpitrix.RepoActionRequest": { + "required": [ + "action" + ], + "properties": { + "action": { + "type": "string" + } + } + }, + "openpitrix.RepoLabel": { + "properties": { + "create_time": { + "type": "string" + }, + "label_key": { + "type": "string" + }, + "label_value": { + "type": "string" + } + } + }, + "openpitrix.RepoSelector": { + "properties": { + "create_time": { + "type": "string" + }, + "selector_key": { + "type": "string" + }, + "selector_value": { + "type": "string" + } + } + }, + "openpitrix.ResourceCategory": { + "properties": { + "category_id": { + "type": "string" + }, + "create_time": { + "type": "string" + }, + "locale": { + "type": "string" + }, + "name": { + "type": "string" + }, + "status": { + "type": "string" + }, + "status_time": { + "type": "string" + } + } + }, + "openpitrix.UpgradeClusterRequest": { + "required": [ + "cluster_id", + "advanced_param" + ], + "properties": { + "advanced_param": { + "type": "array", + "items": { + "type": "string" + } + }, + "cluster_id": { + "type": "string" + }, + "conf": { + "type": "string" + }, + "runtime_id": { + "type": "string" + }, + "version_id": { + "type": "string" + } + } + }, + "openpitrix.workLoads": { + "properties": { + "daemonsets": { + "description": "daemonset list", + "type": "array", + "items": { + "$ref": "#/definitions/v1.DaemonSet" + } + }, + "deployments": { + "description": "deployment list", + "type": "array", + "items": { + "$ref": "#/definitions/v1.Deployment" + } + }, + "statefulsets": { + "description": "statefulset list", + "type": "array", + "items": { + "$ref": "#/definitions/v1.StatefulSet" + } + } + } + }, + "registries.Config": { + "properties": { + "ArgsEscaped": { + "description": "Command is already escaped (Windows only)", + "type": "boolean" + }, + "AttachStderr": { + "description": "Boolean value, attaches to stderr.", + "type": "boolean" + }, + "AttachStdin": { + "description": "Boolean value, attaches to stdin.", + "type": "boolean" + }, + "AttachStdout": { + "description": "Boolean value, attaches to stdout.", + "type": "boolean" + }, + "Cmd": { + "description": "Command to run specified as a string or an array of strings.", + "type": "array", + "items": { + "type": "string" + } + }, + "Domainname": { + "description": "A string value containing the domain name to use for the container.", + "type": "string" + }, + "Entrypoint": { + "description": "The entry point set for the container as a string or an array of strings.", + "$ref": "#/definitions/registries.Config.Entrypoint" + }, + "Env": { + "description": "A list of environment variables in the form of [\"VAR=value\", ...]", + "type": "array", + "items": { + "type": "string" + } + }, + "ExposedPorts": { + "description": "An object mapping ports to an empty object in the form of: \"ExposedPorts\": { \"\u003cport\u003e/\u003ctcp|udp\u003e: {}\" }", + "type": "object" + }, + "Hostname": { + "description": "A string value containing the hostname to use for the container.", + "type": "string" + }, + "Image": { + "description": "A string specifying the image name to use for the container.", + "type": "string" + }, + "Labels": { + "description": "The map of labels to a container.", + "$ref": "#/definitions/registries.Labels" + }, + "OnBuild": { + "description": "ONBUILD metadata that were defined in the image's Dockerfile.", + "$ref": "#/definitions/registries.Config.OnBuild" + }, + "OpenStdin": { + "description": "Boolean value, opens stdin", + "type": "boolean" + }, + "StdinOnce": { + "description": "Boolean value, close stdin after the 1 attached client disconnects.", + "type": "boolean" + }, + "StopSignal": { + "description": "Signal to stop a container as a string or unsigned integer.", + "type": "string" + }, + "Tty": { + "description": "Boolean value, Attach standard streams to a tty, including stdin if it is not closed.", + "type": "boolean" + }, + "User": { + "description": "A string value specifying the user inside the container.", + "type": "string" + }, + "Volumes": { + "description": "An object mapping mount point paths (strings) inside the container to empty objects.", + "$ref": "#/definitions/registries.Config.Volumes" + }, + "WorkingDir": { + "description": "A string specifying the working directory for commands to run in.", + "type": "string" + } + } + }, + "registries.Config.Entrypoint": {}, + "registries.Config.OnBuild": {}, + "registries.Config.Volumes": {}, + "registries.ContainerConfig": { + "properties": { + "ArgsEscaped": { + "description": "Command is already escaped (Windows only)", + "type": "boolean" + }, + "AttachStderr": { + "description": "Boolean value, attaches to stderr.", + "type": "boolean" + }, + "AttachStdin": { + "description": "Boolean value, attaches to stdin.", + "type": "boolean" + }, + "AttachStdout": { + "description": "Boolean value, attaches to stdout.", + "type": "boolean" + }, + "Cmd": { + "description": "Command to run specified as a string or an array of strings.", + "type": "array", + "items": { + "type": "string" + } + }, + "Domainname": { + "description": "A string value containing the domain name to use for the container.", + "type": "string" + }, + "Entrypoint": { + "description": "The entry point set for the container as a string or an array of strings.", + "$ref": "#/definitions/registries.ContainerConfig.Entrypoint" + }, + "Env": { + "description": "A list of environment variables in the form of [\"VAR=value\", ...]", + "type": "array", + "items": { + "type": "string" + } + }, + "ExposedPorts": { + "description": "An object mapping ports to an empty object in the form of: \"ExposedPorts\": { \"\u003cport\u003e/\u003ctcp|udp\u003e: {}\" }", + "type": "object" + }, + "Hostname": { + "description": "A string value containing the hostname to use for the container.", + "type": "string" + }, + "Image": { + "description": "A string specifying the image name to use for the container.", + "type": "string" + }, + "Labels": { + "description": "The map of labels to a container.", + "$ref": "#/definitions/registries.Labels" + }, + "OnBuild": { + "description": "ONBUILD metadata that were defined in the image's Dockerfile.", + "$ref": "#/definitions/registries.ContainerConfig.OnBuild" + }, + "OpenStdin": { + "description": "Boolean value, opens stdin", + "type": "boolean" + }, + "StdinOnce": { + "description": "Boolean value, close stdin after the 1 attached client disconnects.", + "type": "boolean" + }, + "StopSignal": { + "description": "Signal to stop a container as a string or unsigned integer.", + "type": "string" + }, + "Tty": { + "description": "Boolean value, Attach standard streams to a tty, including stdin if it is not closed.", + "type": "boolean" + }, + "User": { + "description": "A string value specifying the user inside the container.", + "type": "string" + }, + "Volumes": { + "description": "An object mapping mount point paths (strings) inside the container to empty objects.", + "$ref": "#/definitions/registries.ContainerConfig.Volumes" + }, + "WorkingDir": { + "description": "A string specifying the working directory for commands to run in.", + "type": "string" + } + } + }, + "registries.ContainerConfig.Entrypoint": {}, + "registries.ContainerConfig.OnBuild": {}, + "registries.ContainerConfig.Volumes": {}, + "registries.History": { + "properties": { + "created": { + "description": "Created time.", + "type": "string", + "format": "date-time" + }, + "created_by": { + "description": "Created command.", + "type": "string" + }, + "empty_layer": { + "description": "Layer empty or not.", + "type": "boolean" + } + } + }, + "registries.ImageBlob": { + "required": [ + "rootfs omitempty" + ], + "properties": { + "architecture": { + "description": "The architecture field specifies the CPU architecture, for example amd64 or ppc64le.", + "type": "string" + }, + "config": { + "description": "The config field references a configuration object for a container.", + "$ref": "#/definitions/registries.Config" + }, + "container": { + "description": "Container id.", + "type": "string" + }, + "container_config": { + "description": "The config data of container.", + "$ref": "#/definitions/registries.ContainerConfig" + }, + "created": { + "description": "Create time.", + "type": "string", + "format": "date-time" + }, + "docker_version": { + "description": "docker version.", + "type": "string" + }, + "history": { + "description": "The data of history update.", + "type": "array", + "items": { + "$ref": "#/definitions/registries.History" + } + }, + "os": { + "description": "Operating system.", + "type": "string" + }, + "rootfs omitempty": { + "description": "Root filesystem.", + "$ref": "#/definitions/registries.Rootfs" + } + } + }, + "registries.ImageDetails": { + "properties": { + "imageBlob": { + "description": "Retrieve the blob from the registry identified. Reference: https://docs.docker.com/registry/spec/api/#blob", + "$ref": "#/definitions/registries.ImageBlob" + }, + "imageManifest": { + "description": "Retrieve the manifest from the registry identified. Reference: https://docs.docker.com/registry/spec/api/#manifest", + "$ref": "#/definitions/registries.ImageManifest" + }, + "imageTag": { + "description": "image tag.", + "type": "string" + }, + "message": { + "description": "Status message.", + "type": "string" + }, + "registry": { + "description": "registry domain.", + "type": "string" + }, + "status": { + "description": "Status is the status of the image search, such as \"succeeded\".", + "type": "string" + } + } + }, + "registries.ImageManifest": { + "properties": { + "config": { + "description": "The config field references a configuration object for a container.", + "$ref": "#/definitions/registries.ManifestConfig" + }, + "layers": { + "description": "Fields of an item in the layers list.", + "type": "array", + "items": { + "$ref": "#/definitions/registries.Layers" + } + }, + "mediaType": { + "description": "The MIME type of the manifest.", + "type": "string" + }, + "schemaVersion": { + "description": "This field specifies the image manifest schema version as an integer.", + "type": "integer", + "format": "int32" + } + } + }, + "registries.Labels": { + "required": [ + "maintainer" + ], + "properties": { + "maintainer": { + "type": "string" + } + } + }, + "registries.Layers": { + "properties": { + "digest": { + "description": "The digest of the content, as defined by the Registry V2 HTTP API Specificiation. Reference https://docs.docker.com/registry/spec/api/#digest-parameter", + "type": "string" + }, + "mediaType": { + "description": "The MIME type of the layer.", + "type": "string" + }, + "size": { + "description": "The size in bytes of the layer.", + "type": "integer", + "format": "int32" + } + } + }, + "registries.ManifestConfig": { + "properties": { + "digest": { + "description": "The digest of the content, as defined by the Registry V2 HTTP API Specificiation. Reference https://docs.docker.com/registry/spec/api/#digest-parameter", + "type": "string" + }, + "mediaType": { + "description": "The MIME type of the image.", + "type": "string" + }, + "size": { + "description": "The size in bytes of the image.", + "type": "integer", + "format": "int32" + } + } + }, + "registries.Rootfs": { + "properties": { + "diff_ids": { + "description": "Contain ids of layer list", + "type": "array", + "items": { + "type": "string" + } + }, + "type": { + "description": "Root filesystem type, always \"layers\" ", + "type": "string" + } + } + }, + "resource.Quantity": { + "required": [ + "i", + "d", + "s", + "Format" + ], + "properties": { + "Format": { + "type": "string" + }, + "d": { + "$ref": "#/definitions/resource.infDecAmount" + }, + "i": { + "$ref": "#/definitions/resource.int64Amount" + }, + "s": { + "type": "string" + } + } + }, + "resource.infDecAmount": { + "required": [ + "Dec" + ], + "properties": { + "Dec": { + "$ref": "#/definitions/inf.Dec" + } + } + }, + "resource.int64Amount": { + "required": [ + "value", + "scale" + ], + "properties": { + "scale": { + "type": "integer", + "format": "int32" + }, + "value": { + "type": "integer", + "format": "int64" + } + } + }, + "v1.AWSElasticBlockStoreVolumeSource": { + "description": "Represents a Persistent Disk resource in AWS.\n\nAn AWS EBS disk must exist before mounting to a container. The disk must also be in the same AWS zone as the kubelet. An AWS EBS disk can only be mounted as read/write once. AWS EBS volumes support ownership management and SELinux relabeling.", + "required": [ + "volumeID" + ], + "properties": { + "fsType": { + "description": "Filesystem type of the volume that you want to mount. Tip: Ensure that the filesystem type is supported by the host operating system. Examples: \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore", + "type": "string" + }, + "partition": { + "description": "The partition in the volume that you want to mount. If omitted, the default is to mount by volume name. Examples: For volume /dev/sda1, you specify the partition as \"1\". Similarly, the volume partition for /dev/sda is \"0\" (or you can leave the property empty).", + "type": "integer", + "format": "int32" + }, + "readOnly": { + "description": "Specify \"true\" to force and set the ReadOnly property in VolumeMounts to \"true\". If omitted, the default is \"false\". More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore", + "type": "boolean" + }, + "volumeID": { + "description": "Unique ID of the persistent disk resource in AWS (Amazon EBS volume). More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore", + "type": "string" + } + } + }, + "v1.Affinity": { + "description": "Affinity is a group of affinity scheduling rules.", + "properties": { + "nodeAffinity": { + "description": "Describes node affinity scheduling rules for the pod.", + "$ref": "#/definitions/v1.NodeAffinity" + }, + "podAffinity": { + "description": "Describes pod affinity scheduling rules (e.g. co-locate this pod in the same node, zone, etc. as some other pod(s)).", + "$ref": "#/definitions/v1.PodAffinity" + }, + "podAntiAffinity": { + "description": "Describes pod anti-affinity scheduling rules (e.g. avoid putting this pod in the same node, zone, etc. as some other pod(s)).", + "$ref": "#/definitions/v1.PodAntiAffinity" + } + } + }, + "v1.AggregationRule": { + "description": "AggregationRule describes how to locate ClusterRoles to aggregate into the ClusterRole", + "properties": { + "clusterRoleSelectors": { + "description": "ClusterRoleSelectors holds a list of selectors which will be used to find ClusterRoles and create the rules. If any of the selectors match, then the ClusterRole's permissions will be added", + "type": "array", + "items": { + "$ref": "#/definitions/v1.LabelSelector" + } + } + } + }, + "v1.AzureDiskVolumeSource": { + "description": "AzureDisk represents an Azure Data Disk mount on the host and bind mount to the pod.", + "required": [ + "diskName", + "diskURI" + ], + "properties": { + "cachingMode": { + "description": "Host Caching mode: None, Read Only, Read Write.", + "type": "string" + }, + "diskName": { + "description": "The Name of the data disk in the blob storage", + "type": "string" + }, + "diskURI": { + "description": "The URI the data disk in the blob storage", + "type": "string" + }, + "fsType": { + "description": "Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified.", + "type": "string" + }, + "kind": { + "description": "Expected values Shared: multiple blob disks per storage account Dedicated: single blob disk per storage account Managed: azure managed data disk (only in managed availability set). defaults to shared", + "type": "string" + }, + "readOnly": { + "description": "Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.", + "type": "boolean" + } + } + }, + "v1.AzureFileVolumeSource": { + "description": "AzureFile represents an Azure File Service mount on the host and bind mount to the pod.", + "required": [ + "secretName", + "shareName" + ], + "properties": { + "readOnly": { + "description": "Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.", + "type": "boolean" + }, + "secretName": { + "description": "the name of secret that contains Azure Storage Account Name and Key", + "type": "string" + }, + "shareName": { + "description": "Share Name", + "type": "string" + } + } + }, + "v1.CSIVolumeSource": { + "description": "Represents a source location of a volume to mount, managed by an external CSI driver", + "required": [ + "driver" + ], + "properties": { + "driver": { + "description": "Driver is the name of the CSI driver that handles this volume. Consult with your admin for the correct name as registered in the cluster.", + "type": "string" + }, + "fsType": { + "description": "Filesystem type to mount. Ex. \"ext4\", \"xfs\", \"ntfs\". If not provided, the empty value is passed to the associated CSI driver which will determine the default filesystem to apply.", + "type": "string" + }, + "nodePublishSecretRef": { + "description": "NodePublishSecretRef is a reference to the secret object containing sensitive information to pass to the CSI driver to complete the CSI NodePublishVolume and NodeUnpublishVolume calls. This field is optional, and may be empty if no secret is required. If the secret object contains more than one secret, all secret references are passed.", + "$ref": "#/definitions/v1.LocalObjectReference" + }, + "readOnly": { + "description": "Specifies a read-only configuration for the volume. Defaults to false (read/write).", + "type": "boolean" + }, + "volumeAttributes": { + "description": "VolumeAttributes stores driver-specific properties that are passed to the CSI driver. Consult your driver's documentation for supported values.", + "type": "object", + "additionalProperties": { + "type": "string" + } + } + } + }, + "v1.Capabilities": { + "description": "Adds and removes POSIX capabilities from running containers.", + "properties": { + "add": { + "description": "Added capabilities", + "type": "array", + "items": { + "type": "string" + } + }, + "drop": { + "description": "Removed capabilities", + "type": "array", + "items": { + "type": "string" + } + } + } + }, + "v1.CephFSVolumeSource": { + "description": "Represents a Ceph Filesystem mount that lasts the lifetime of a pod Cephfs volumes do not support ownership management or SELinux relabeling.", + "required": [ + "monitors" + ], + "properties": { + "monitors": { + "description": "Required: Monitors is a collection of Ceph monitors More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it", + "type": "array", + "items": { + "type": "string" + } + }, + "path": { + "description": "Optional: Used as the mounted root, rather than the full Ceph tree, default is /", + "type": "string" + }, + "readOnly": { + "description": "Optional: Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts. More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it", + "type": "boolean" + }, + "secretFile": { + "description": "Optional: SecretFile is the path to key ring for User, default is /etc/ceph/user.secret More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it", + "type": "string" + }, + "secretRef": { + "description": "Optional: SecretRef is reference to the authentication secret for User, default is empty. More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it", + "$ref": "#/definitions/v1.LocalObjectReference" + }, + "user": { + "description": "Optional: User is the rados user name, default is admin More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it", + "type": "string" + } + } + }, + "v1.CinderVolumeSource": { + "description": "Represents a cinder volume resource in Openstack. A Cinder volume must exist before mounting to a container. The volume must also be in the same region as the kubelet. Cinder volumes support ownership management and SELinux relabeling.", + "required": [ + "volumeID" + ], + "properties": { + "fsType": { + "description": "Filesystem type to mount. Must be a filesystem type supported by the host operating system. Examples: \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified. More info: https://examples.k8s.io/mysql-cinder-pd/README.md", + "type": "string" + }, + "readOnly": { + "description": "Optional: Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts. More info: https://examples.k8s.io/mysql-cinder-pd/README.md", + "type": "boolean" + }, + "secretRef": { + "description": "Optional: points to a secret object containing parameters used to connect to OpenStack.", + "$ref": "#/definitions/v1.LocalObjectReference" + }, + "volumeID": { + "description": "volume id used to identify the volume in cinder. More info: https://examples.k8s.io/mysql-cinder-pd/README.md", + "type": "string" + } + } + }, + "v1.ClientIPConfig": { + "description": "ClientIPConfig represents the configurations of Client IP based session affinity.", + "properties": { + "timeoutSeconds": { + "description": "timeoutSeconds specifies the seconds of ClientIP type session sticky time. The value must be \u003e0 \u0026\u0026 \u003c=86400(for 1 day) if ServiceAffinity == \"ClientIP\". Default value is 10800(for 3 hours).", + "type": "integer", + "format": "int32" + } + } + }, + "v1.ClusterRole": { + "description": "ClusterRole is a cluster level, logical grouping of PolicyRules that can be referenced as a unit by a RoleBinding or ClusterRoleBinding.", + "required": [ + "rules" + ], + "properties": { + "aggregationRule": { + "description": "AggregationRule is an optional field that describes how to build the Rules for this ClusterRole. If AggregationRule is set, then the Rules are controller managed and direct changes to Rules will be stomped by the controller.", + "$ref": "#/definitions/v1.AggregationRule" + }, + "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": { + "description": "Standard object's metadata.", + "$ref": "#/definitions/v1.ObjectMeta" + }, + "rules": { + "description": "Rules holds all the PolicyRules for this ClusterRole", + "type": "array", + "items": { + "$ref": "#/definitions/v1.PolicyRule" + } + } + } + }, + "v1.ConfigMapEnvSource": { + "description": "ConfigMapEnvSource selects a ConfigMap to populate the environment variables with.\n\nThe contents of the target ConfigMap's Data field will represent the key-value pairs as environment variables.", + "properties": { + "name": { + "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", + "type": "string" + }, + "optional": { + "description": "Specify whether the ConfigMap must be defined", + "type": "boolean" + } + } + }, + "v1.ConfigMapKeySelector": { + "description": "Selects a key from a ConfigMap.", + "required": [ + "key" + ], + "properties": { + "key": { + "description": "The key to select.", + "type": "string" + }, + "name": { + "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", + "type": "string" + }, + "optional": { + "description": "Specify whether the ConfigMap or its key must be defined", + "type": "boolean" + } + } + }, + "v1.ConfigMapProjection": { + "description": "Adapts a ConfigMap into a projected volume.\n\nThe contents of the target ConfigMap's Data field will be presented in a projected volume as files using the keys in the Data field as the file names, unless the items element is populated with specific mappings of keys to paths. Note that this is identical to a configmap volume source without the default mode.", + "properties": { + "items": { + "description": "If unspecified, each key-value pair in the Data field of the referenced ConfigMap will be projected into the volume as a file whose name is the key and content is the value. If specified, the listed keys will be projected into the specified paths, and unlisted keys will not be present. If a key is specified which is not present in the ConfigMap, the volume setup will error unless it is marked optional. Paths must be relative and may not contain the '..' path or start with '..'.", + "type": "array", + "items": { + "$ref": "#/definitions/v1.KeyToPath" + } + }, + "name": { + "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", + "type": "string" + }, + "optional": { + "description": "Specify whether the ConfigMap or its keys must be defined", + "type": "boolean" + } + } + }, + "v1.ConfigMapVolumeSource": { + "description": "Adapts a ConfigMap into a volume.\n\nThe contents of the target ConfigMap's Data field will be presented in a volume as files using the keys in the Data field as the file names, unless the items element is populated with specific mappings of keys to paths. ConfigMap volumes support ownership management and SELinux relabeling.", + "properties": { + "defaultMode": { + "description": "Optional: mode bits to use on created files by default. Must be a value between 0 and 0777. Defaults to 0644. Directories within the path are not affected by this setting. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.", + "type": "integer", + "format": "int32" + }, + "items": { + "description": "If unspecified, each key-value pair in the Data field of the referenced ConfigMap will be projected into the volume as a file whose name is the key and content is the value. If specified, the listed keys will be projected into the specified paths, and unlisted keys will not be present. If a key is specified which is not present in the ConfigMap, the volume setup will error unless it is marked optional. Paths must be relative and may not contain the '..' path or start with '..'.", + "type": "array", + "items": { + "$ref": "#/definitions/v1.KeyToPath" + } + }, + "name": { + "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", + "type": "string" + }, + "optional": { + "description": "Specify whether the ConfigMap or its keys must be defined", + "type": "boolean" + } + } + }, + "v1.Container": { + "description": "A single application container that you want to run within a pod.", + "required": [ + "name" + ], + "properties": { + "args": { + "description": "Arguments to the entrypoint. The docker image's CMD is used if this is not provided. Variable references $(VAR_NAME) are expanded using the container's environment. If a variable cannot be resolved, the reference in the input string will be unchanged. The $(VAR_NAME) syntax can be escaped with a double $$, ie: $$(VAR_NAME). Escaped references will never be expanded, regardless of whether the variable exists or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell", + "type": "array", + "items": { + "type": "string" + } + }, + "command": { + "description": "Entrypoint array. Not executed within a shell. The docker image's ENTRYPOINT is used if this is not provided. Variable references $(VAR_NAME) are expanded using the container's environment. If a variable cannot be resolved, the reference in the input string will be unchanged. The $(VAR_NAME) syntax can be escaped with a double $$, ie: $$(VAR_NAME). Escaped references will never be expanded, regardless of whether the variable exists or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell", + "type": "array", + "items": { + "type": "string" + } + }, + "env": { + "description": "List of environment variables to set in the container. Cannot be updated.", + "type": "array", + "items": { + "$ref": "#/definitions/v1.EnvVar" + } + }, + "envFrom": { + "description": "List of sources to populate environment variables in the container. The keys defined within a source must be a C_IDENTIFIER. All invalid keys will be reported as an event when the container is starting. When a key exists in multiple sources, the value associated with the last source will take precedence. Values defined by an Env with a duplicate key will take precedence. Cannot be updated.", + "type": "array", + "items": { + "$ref": "#/definitions/v1.EnvFromSource" + } + }, + "image": { + "description": "Docker image name. More info: https://kubernetes.io/docs/concepts/containers/images This field is optional to allow higher level config management to default or override container images in workload controllers like Deployments and StatefulSets.", + "type": "string" + }, + "imagePullPolicy": { + "description": "Image pull policy. One of Always, Never, IfNotPresent. Defaults to Always if :latest tag is specified, or IfNotPresent otherwise. Cannot be updated. More info: https://kubernetes.io/docs/concepts/containers/images#updating-images", + "type": "string" + }, + "lifecycle": { + "description": "Actions that the management system should take in response to container lifecycle events. Cannot be updated.", + "$ref": "#/definitions/v1.Lifecycle" + }, + "livenessProbe": { + "description": "Periodic probe of container liveness. Container will be restarted if the probe fails. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes", + "$ref": "#/definitions/v1.Probe" + }, + "name": { + "description": "Name of the container specified as a DNS_LABEL. Each container in a pod must have a unique name (DNS_LABEL). Cannot be updated.", + "type": "string" + }, + "ports": { + "description": "List of ports to expose from the container. Exposing a port here gives the system additional information about the network connections a container uses, but is primarily informational. Not specifying a port here DOES NOT prevent that port from being exposed. Any port which is listening on the default \"0.0.0.0\" address inside a container will be accessible from the network. Cannot be updated.", + "type": "array", + "items": { + "$ref": "#/definitions/v1.ContainerPort" + } + }, + "readinessProbe": { + "description": "Periodic probe of container service readiness. Container will be removed from service endpoints if the probe fails. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes", + "$ref": "#/definitions/v1.Probe" + }, + "resources": { + "description": "Compute Resources required by this container. Cannot be updated. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/", + "$ref": "#/definitions/v1.ResourceRequirements" + }, + "securityContext": { + "description": "Security options the pod should run with. More info: https://kubernetes.io/docs/concepts/policy/security-context/ More info: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/", + "$ref": "#/definitions/v1.SecurityContext" + }, + "startupProbe": { + "description": "StartupProbe indicates that the Pod has successfully initialized. If specified, no other probes are executed until this completes successfully. If this probe fails, the Pod will be restarted, just as if the livenessProbe failed. This can be used to provide different probe parameters at the beginning of a Pod's lifecycle, when it might take a long time to load data or warm a cache, than during steady-state operation. This cannot be updated. This is a beta feature enabled by the StartupProbe feature flag. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes", + "$ref": "#/definitions/v1.Probe" + }, + "stdin": { + "description": "Whether this container should allocate a buffer for stdin in the container runtime. If this is not set, reads from stdin in the container will always result in EOF. Default is false.", + "type": "boolean" + }, + "stdinOnce": { + "description": "Whether the container runtime should close the stdin channel after it has been opened by a single attach. When stdin is true the stdin stream will remain open across multiple attach sessions. If stdinOnce is set to true, stdin is opened on container start, is empty until the first client attaches to stdin, and then remains open and accepts data until the client disconnects, at which time stdin is closed and remains closed until the container is restarted. If this flag is false, a container processes that reads from stdin will never receive an EOF. Default is false", + "type": "boolean" + }, + "terminationMessagePath": { + "description": "Optional: Path at which the file to which the container's termination message will be written is mounted into the container's filesystem. Message written is intended to be brief final status, such as an assertion failure message. Will be truncated by the node if greater than 4096 bytes. The total message length across all containers will be limited to 12kb. Defaults to /dev/termination-log. Cannot be updated.", + "type": "string" + }, + "terminationMessagePolicy": { + "description": "Indicate how the termination message should be populated. File will use the contents of terminationMessagePath to populate the container status message on both success and failure. FallbackToLogsOnError will use the last chunk of container log output if the termination message file is empty and the container exited with an error. The log output is limited to 2048 bytes or 80 lines, whichever is smaller. Defaults to File. Cannot be updated.", + "type": "string" + }, + "tty": { + "description": "Whether this container should allocate a TTY for itself, also requires 'stdin' to be true. Default is false.", + "type": "boolean" + }, + "volumeDevices": { + "description": "volumeDevices is the list of block devices to be used by the container.", + "type": "array", + "items": { + "$ref": "#/definitions/v1.VolumeDevice" + } + }, + "volumeMounts": { + "description": "Pod volumes to mount into the container's filesystem. Cannot be updated.", + "type": "array", + "items": { + "$ref": "#/definitions/v1.VolumeMount" + } + }, + "workingDir": { + "description": "Container's working directory. If not specified, the container runtime's default will be used, which might be configured in the container image. Cannot be updated.", + "type": "string" + } + } + }, + "v1.ContainerPort": { + "description": "ContainerPort represents a network port in a single container.", + "required": [ + "containerPort" + ], + "properties": { + "containerPort": { + "description": "Number of port to expose on the pod's IP address. This must be a valid port number, 0 \u003c x \u003c 65536.", + "type": "integer", + "format": "int32" + }, + "hostIP": { + "description": "What host IP to bind the external port to.", + "type": "string" + }, + "hostPort": { + "description": "Number of port to expose on the host. If specified, this must be a valid port number, 0 \u003c x \u003c 65536. If HostNetwork is specified, this must match ContainerPort. Most containers do not need this.", + "type": "integer", + "format": "int32" + }, + "name": { + "description": "If specified, this must be an IANA_SVC_NAME and unique within the pod. Each named port in a pod must have a unique name. Name for the port that can be referred to by services.", + "type": "string" + }, + "protocol": { + "description": "Protocol for port. Must be UDP, TCP, or SCTP. Defaults to \"TCP\".", + "type": "string" + } + } + }, + "v1.DaemonSet": { + "description": "DaemonSet represents the configuration of a daemon set.", + "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": { + "description": "Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata", + "$ref": "#/definitions/v1.ObjectMeta" + }, + "spec": { + "description": "The desired behavior of this daemon set. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status", + "$ref": "#/definitions/v1.DaemonSetSpec" + }, + "status": { + "description": "The current status of this daemon set. This data may be out of date by some window of time. Populated by the system. Read-only. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status", + "$ref": "#/definitions/v1.DaemonSetStatus" + } + } + }, + "v1.DaemonSetCondition": { + "description": "DaemonSetCondition describes the state of a DaemonSet at a certain point.", + "required": [ + "type", + "status" + ], + "properties": { + "lastTransitionTime": { + "description": "Last time the condition transitioned from one status to another.", + "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 DaemonSet condition.", + "type": "string" + } + } + }, + "v1.DaemonSetSpec": { + "description": "DaemonSetSpec is the specification of a daemon set.", + "required": [ + "selector", + "template" + ], + "properties": { + "minReadySeconds": { + "description": "The minimum number of seconds for which a newly created DaemonSet pod should be ready without any of its container crashing, for it to be considered available. Defaults to 0 (pod will be considered available as soon as it is ready).", + "type": "integer", + "format": "int32" + }, + "revisionHistoryLimit": { + "description": "The number of old history to retain to allow rollback. This is a pointer to distinguish between explicit zero and not specified. Defaults to 10.", + "type": "integer", + "format": "int32" + }, + "selector": { + "description": "A label query over pods that are managed by the daemon set. Must match in order to be controlled. It must match the pod template's labels. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#label-selectors", + "$ref": "#/definitions/v1.LabelSelector" + }, + "template": { + "description": "An object that describes the pod that will be created. The DaemonSet will create exactly one copy of this pod on every node that matches the template's node selector (or on every node if no node selector is specified). More info: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller#pod-template", + "$ref": "#/definitions/v1.PodTemplateSpec" + }, + "updateStrategy": { + "description": "An update strategy to replace existing DaemonSet pods with new pods.", + "$ref": "#/definitions/v1.DaemonSetUpdateStrategy" + } + } + }, + "v1.DaemonSetStatus": { + "description": "DaemonSetStatus represents the current status of a daemon set.", + "required": [ + "currentNumberScheduled", + "numberMisscheduled", + "desiredNumberScheduled", + "numberReady" + ], + "properties": { + "collisionCount": { + "description": "Count of hash collisions for the DaemonSet. The DaemonSet controller uses this field as a collision avoidance mechanism when it needs to create the name for the newest ControllerRevision.", + "type": "integer", + "format": "int32" + }, + "conditions": { + "description": "Represents the latest available observations of a DaemonSet's current state.", + "type": "array", + "items": { + "$ref": "#/definitions/v1.DaemonSetCondition" + } + }, + "currentNumberScheduled": { + "description": "The number of nodes that are running at least 1 daemon pod and are supposed to run the daemon pod. More info: https://kubernetes.io/docs/concepts/workloads/controllers/daemonset/", + "type": "integer", + "format": "int32" + }, + "desiredNumberScheduled": { + "description": "The total number of nodes that should be running the daemon pod (including nodes correctly running the daemon pod). More info: https://kubernetes.io/docs/concepts/workloads/controllers/daemonset/", + "type": "integer", + "format": "int32" + }, + "numberAvailable": { + "description": "The number of nodes that should be running the daemon pod and have one or more of the daemon pod running and available (ready for at least spec.minReadySeconds)", + "type": "integer", + "format": "int32" + }, + "numberMisscheduled": { + "description": "The number of nodes that are running the daemon pod, but are not supposed to run the daemon pod. More info: https://kubernetes.io/docs/concepts/workloads/controllers/daemonset/", + "type": "integer", + "format": "int32" + }, + "numberReady": { + "description": "The number of nodes that should be running the daemon pod and have one or more of the daemon pod running and ready.", + "type": "integer", + "format": "int32" + }, + "numberUnavailable": { + "description": "The number of nodes that should be running the daemon pod and have none of the daemon pod running and available (ready for at least spec.minReadySeconds)", + "type": "integer", + "format": "int32" + }, + "observedGeneration": { + "description": "The most recent generation observed by the daemon set controller.", + "type": "integer", + "format": "int64" + }, + "updatedNumberScheduled": { + "description": "The total number of nodes that are running updated daemon pod", + "type": "integer", + "format": "int32" + } + } + }, + "v1.DaemonSetUpdateStrategy": { + "description": "DaemonSetUpdateStrategy is a struct used to control the update strategy for a DaemonSet.", + "properties": { + "rollingUpdate": { + "description": "Rolling update config params. Present only if type = \"RollingUpdate\".", + "$ref": "#/definitions/v1.RollingUpdateDaemonSet" + }, + "type": { + "description": "Type of daemon set update. Can be \"RollingUpdate\" or \"OnDelete\". Default is RollingUpdate.", + "type": "string" + } + } + }, + "v1.Deployment": { + "description": "Deployment enables declarative updates for Pods and ReplicaSets.", + "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": { + "description": "Standard object metadata.", + "$ref": "#/definitions/v1.ObjectMeta" + }, + "spec": { + "description": "Specification of the desired behavior of the Deployment.", + "$ref": "#/definitions/v1.DeploymentSpec" + }, + "status": { + "description": "Most recently observed status of the Deployment.", + "$ref": "#/definitions/v1.DeploymentStatus" + } + } + }, + "v1.DeploymentCondition": { + "description": "DeploymentCondition describes the state of a deployment at a certain point.", + "required": [ + "type", + "status" + ], + "properties": { + "lastTransitionTime": { + "description": "Last time the condition transitioned from one status to another.", + "type": "string" + }, + "lastUpdateTime": { + "description": "The last time this condition was updated.", + "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 deployment condition.", + "type": "string" + } + } + }, + "v1.DeploymentSpec": { + "description": "DeploymentSpec is the specification of the desired behavior of the Deployment.", + "required": [ + "selector", + "template" + ], + "properties": { + "minReadySeconds": { + "description": "Minimum number of seconds for which a newly created pod should be ready without any of its container crashing, for it to be considered available. Defaults to 0 (pod will be considered available as soon as it is ready)", + "type": "integer", + "format": "int32" + }, + "paused": { + "description": "Indicates that the deployment is paused.", + "type": "boolean" + }, + "progressDeadlineSeconds": { + "description": "The maximum time in seconds for a deployment to make progress before it is considered to be failed. The deployment controller will continue to process failed deployments and a condition with a ProgressDeadlineExceeded reason will be surfaced in the deployment status. Note that progress will not be estimated during the time a deployment is paused. Defaults to 600s.", + "type": "integer", + "format": "int32" + }, + "replicas": { + "description": "Number of desired pods. This is a pointer to distinguish between explicit zero and not specified. Defaults to 1.", + "type": "integer", + "format": "int32" + }, + "revisionHistoryLimit": { + "description": "The number of old ReplicaSets to retain to allow rollback. This is a pointer to distinguish between explicit zero and not specified. Defaults to 10.", + "type": "integer", + "format": "int32" + }, + "selector": { + "description": "Label selector for pods. Existing ReplicaSets whose pods are selected by this will be the ones affected by this deployment. It must match the pod template's labels.", + "$ref": "#/definitions/v1.LabelSelector" + }, + "strategy": { + "description": "The deployment strategy to use to replace existing pods with new ones.", + "$ref": "#/definitions/v1.DeploymentStrategy" + }, + "template": { + "description": "Template describes the pods that will be created.", + "$ref": "#/definitions/v1.PodTemplateSpec" + } + } + }, + "v1.DeploymentStatus": { + "description": "DeploymentStatus is the most recently observed status of the Deployment.", + "properties": { + "availableReplicas": { + "description": "Total number of available pods (ready for at least minReadySeconds) targeted by this deployment.", + "type": "integer", + "format": "int32" + }, + "collisionCount": { + "description": "Count of hash collisions for the Deployment. The Deployment controller uses this field as a collision avoidance mechanism when it needs to create the name for the newest ReplicaSet.", + "type": "integer", + "format": "int32" + }, + "conditions": { + "description": "Represents the latest available observations of a deployment's current state.", + "type": "array", + "items": { + "$ref": "#/definitions/v1.DeploymentCondition" + } + }, + "observedGeneration": { + "description": "The generation observed by the deployment controller.", + "type": "integer", + "format": "int64" + }, + "readyReplicas": { + "description": "Total number of ready pods targeted by this deployment.", + "type": "integer", + "format": "int32" + }, + "replicas": { + "description": "Total number of non-terminated pods targeted by this deployment (their labels match the selector).", + "type": "integer", + "format": "int32" + }, + "unavailableReplicas": { + "description": "Total number of unavailable pods targeted by this deployment. This is the total number of pods that are still required for the deployment to have 100% available capacity. They may either be pods that are running but not yet available or pods that still have not been created.", + "type": "integer", + "format": "int32" + }, + "updatedReplicas": { + "description": "Total number of non-terminated pods targeted by this deployment that have the desired template spec.", + "type": "integer", + "format": "int32" + } + } + }, + "v1.DeploymentStrategy": { + "description": "DeploymentStrategy describes how to replace existing pods with new ones.", + "properties": { + "rollingUpdate": { + "description": "Rolling update config params. Present only if DeploymentStrategyType = RollingUpdate.", + "$ref": "#/definitions/v1.RollingUpdateDeployment" + }, + "type": { + "description": "Type of deployment. Can be \"Recreate\" or \"RollingUpdate\". Default is RollingUpdate.", + "type": "string" + } + } + }, + "v1.DownwardAPIProjection": { + "description": "Represents downward API info for projecting into a projected volume. Note that this is identical to a downwardAPI volume source without the default mode.", + "properties": { + "items": { + "description": "Items is a list of DownwardAPIVolume file", + "type": "array", + "items": { + "$ref": "#/definitions/v1.DownwardAPIVolumeFile" + } + } + } + }, + "v1.DownwardAPIVolumeFile": { + "description": "DownwardAPIVolumeFile represents information to create the file containing the pod field", + "required": [ + "path" + ], + "properties": { + "fieldRef": { + "description": "Required: Selects a field of the pod: only annotations, labels, name and namespace are supported.", + "$ref": "#/definitions/v1.ObjectFieldSelector" + }, + "mode": { + "description": "Optional: mode bits to use on this file, must be a value between 0 and 0777. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.", + "type": "integer", + "format": "int32" + }, + "path": { + "description": "Required: Path is the relative path name of the file to be created. Must not be absolute or contain the '..' path. Must be utf-8 encoded. The first item of the relative path must not start with '..'", + "type": "string" + }, + "resourceFieldRef": { + "description": "Selects a resource of the container: only resources limits and requests (limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported.", + "$ref": "#/definitions/v1.ResourceFieldSelector" + } + } + }, + "v1.DownwardAPIVolumeSource": { + "description": "DownwardAPIVolumeSource represents a volume containing downward API info. Downward API volumes support ownership management and SELinux relabeling.", + "properties": { + "defaultMode": { + "description": "Optional: mode bits to use on created files by default. Must be a value between 0 and 0777. Defaults to 0644. Directories within the path are not affected by this setting. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.", + "type": "integer", + "format": "int32" + }, + "items": { + "description": "Items is a list of downward API volume file", + "type": "array", + "items": { + "$ref": "#/definitions/v1.DownwardAPIVolumeFile" + } + } + } + }, + "v1.EmptyDirVolumeSource": { + "description": "Represents an empty directory for a pod. Empty directory volumes support ownership management and SELinux relabeling.", + "properties": { + "medium": { + "description": "What type of storage medium should back this directory. The default is \"\" which means to use the node's default medium. Must be an empty string (default) or Memory. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir", + "type": "string" + }, + "sizeLimit": { + "description": "Total amount of local storage required for this EmptyDir volume. The size limit is also applicable for memory medium. The maximum usage on memory medium EmptyDir would be the minimum value between the SizeLimit specified here and the sum of memory limits of all containers in a pod. The default is nil which means that the limit is undefined. More info: http://kubernetes.io/docs/user-guide/volumes#emptydir", + "type": "string" + } + } + }, + "v1.EnvFromSource": { + "description": "EnvFromSource represents the source of a set of ConfigMaps", + "properties": { + "configMapRef": { + "description": "The ConfigMap to select from", + "$ref": "#/definitions/v1.ConfigMapEnvSource" + }, + "prefix": { + "description": "An optional identifier to prepend to each key in the ConfigMap. Must be a C_IDENTIFIER.", + "type": "string" + }, + "secretRef": { + "description": "The Secret to select from", + "$ref": "#/definitions/v1.SecretEnvSource" + } + } + }, + "v1.EnvVar": { + "description": "EnvVar represents an environment variable present in a Container.", + "required": [ + "name" + ], + "properties": { + "name": { + "description": "Name of the environment variable. Must be a C_IDENTIFIER.", + "type": "string" + }, + "value": { + "description": "Variable references $(VAR_NAME) are expanded using the previous defined environment variables in the container and any service environment variables. If a variable cannot be resolved, the reference in the input string will be unchanged. The $(VAR_NAME) syntax can be escaped with a double $$, ie: $$(VAR_NAME). Escaped references will never be expanded, regardless of whether the variable exists or not. Defaults to \"\".", + "type": "string" + }, + "valueFrom": { + "description": "Source for the environment variable's value. Cannot be used if value is not empty.", + "$ref": "#/definitions/v1.EnvVarSource" + } + } + }, + "v1.EnvVarSource": { + "description": "EnvVarSource represents a source for the value of an EnvVar.", + "properties": { + "configMapKeyRef": { + "description": "Selects a key of a ConfigMap.", + "$ref": "#/definitions/v1.ConfigMapKeySelector" + }, + "fieldRef": { + "description": "Selects a field of the pod: supports metadata.name, metadata.namespace, metadata.labels, metadata.annotations, spec.nodeName, spec.serviceAccountName, status.hostIP, status.podIP, status.podIPs.", + "$ref": "#/definitions/v1.ObjectFieldSelector" + }, + "resourceFieldRef": { + "description": "Selects a resource of the container: only resources limits and requests (limits.cpu, limits.memory, limits.ephemeral-storage, requests.cpu, requests.memory and requests.ephemeral-storage) are currently supported.", + "$ref": "#/definitions/v1.ResourceFieldSelector" + }, + "secretKeyRef": { + "description": "Selects a key of a secret in the pod's namespace", + "$ref": "#/definitions/v1.SecretKeySelector" + } + } + }, + "v1.EphemeralContainer": { + "description": "An EphemeralContainer is a container that may be added temporarily to an existing pod for user-initiated activities such as debugging. Ephemeral containers have no resource or scheduling guarantees, and they will not be restarted when they exit or when a pod is removed or restarted. If an ephemeral container causes a pod to exceed its resource allocation, the pod may be evicted. Ephemeral containers may not be added by directly updating the pod spec. They must be added via the pod's ephemeralcontainers subresource, and they will appear in the pod spec once added. This is an alpha feature enabled by the EphemeralContainers feature flag.", + "required": [ + "name" + ], + "properties": { + "args": { + "description": "Arguments to the entrypoint. The docker image's CMD is used if this is not provided. Variable references $(VAR_NAME) are expanded using the container's environment. If a variable cannot be resolved, the reference in the input string will be unchanged. The $(VAR_NAME) syntax can be escaped with a double $$, ie: $$(VAR_NAME). Escaped references will never be expanded, regardless of whether the variable exists or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell", + "type": "array", + "items": { + "type": "string" + } + }, + "command": { + "description": "Entrypoint array. Not executed within a shell. The docker image's ENTRYPOINT is used if this is not provided. Variable references $(VAR_NAME) are expanded using the container's environment. If a variable cannot be resolved, the reference in the input string will be unchanged. The $(VAR_NAME) syntax can be escaped with a double $$, ie: $$(VAR_NAME). Escaped references will never be expanded, regardless of whether the variable exists or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell", + "type": "array", + "items": { + "type": "string" + } + }, + "env": { + "description": "List of environment variables to set in the container. Cannot be updated.", + "type": "array", + "items": { + "$ref": "#/definitions/v1.EnvVar" + } + }, + "envFrom": { + "description": "List of sources to populate environment variables in the container. The keys defined within a source must be a C_IDENTIFIER. All invalid keys will be reported as an event when the container is starting. When a key exists in multiple sources, the value associated with the last source will take precedence. Values defined by an Env with a duplicate key will take precedence. Cannot be updated.", + "type": "array", + "items": { + "$ref": "#/definitions/v1.EnvFromSource" + } + }, + "image": { + "description": "Docker image name. More info: https://kubernetes.io/docs/concepts/containers/images", + "type": "string" + }, + "imagePullPolicy": { + "description": "Image pull policy. One of Always, Never, IfNotPresent. Defaults to Always if :latest tag is specified, or IfNotPresent otherwise. Cannot be updated. More info: https://kubernetes.io/docs/concepts/containers/images#updating-images", + "type": "string" + }, + "lifecycle": { + "description": "Lifecycle is not allowed for ephemeral containers.", + "$ref": "#/definitions/v1.Lifecycle" + }, + "livenessProbe": { + "description": "Probes are not allowed for ephemeral containers.", + "$ref": "#/definitions/v1.Probe" + }, + "name": { + "description": "Name of the ephemeral container specified as a DNS_LABEL. This name must be unique among all containers, init containers and ephemeral containers.", + "type": "string" + }, + "ports": { + "description": "Ports are not allowed for ephemeral containers.", + "type": "array", + "items": { + "$ref": "#/definitions/v1.ContainerPort" + } + }, + "readinessProbe": { + "description": "Probes are not allowed for ephemeral containers.", + "$ref": "#/definitions/v1.Probe" + }, + "resources": { + "description": "Resources are not allowed for ephemeral containers. Ephemeral containers use spare resources already allocated to the pod.", + "$ref": "#/definitions/v1.ResourceRequirements" + }, + "securityContext": { + "description": "SecurityContext is not allowed for ephemeral containers.", + "$ref": "#/definitions/v1.SecurityContext" + }, + "startupProbe": { + "description": "Probes are not allowed for ephemeral containers.", + "$ref": "#/definitions/v1.Probe" + }, + "stdin": { + "description": "Whether this container should allocate a buffer for stdin in the container runtime. If this is not set, reads from stdin in the container will always result in EOF. Default is false.", + "type": "boolean" + }, + "stdinOnce": { + "description": "Whether the container runtime should close the stdin channel after it has been opened by a single attach. When stdin is true the stdin stream will remain open across multiple attach sessions. If stdinOnce is set to true, stdin is opened on container start, is empty until the first client attaches to stdin, and then remains open and accepts data until the client disconnects, at which time stdin is closed and remains closed until the container is restarted. If this flag is false, a container processes that reads from stdin will never receive an EOF. Default is false", + "type": "boolean" + }, + "targetContainerName": { + "description": "If set, the name of the container from PodSpec that this ephemeral container targets. The ephemeral container will be run in the namespaces (IPC, PID, etc) of this container. If not set then the ephemeral container is run in whatever namespaces are shared for the pod. Note that the container runtime must support this feature.", + "type": "string" + }, + "terminationMessagePath": { + "description": "Optional: Path at which the file to which the container's termination message will be written is mounted into the container's filesystem. Message written is intended to be brief final status, such as an assertion failure message. Will be truncated by the node if greater than 4096 bytes. The total message length across all containers will be limited to 12kb. Defaults to /dev/termination-log. Cannot be updated.", + "type": "string" + }, + "terminationMessagePolicy": { + "description": "Indicate how the termination message should be populated. File will use the contents of terminationMessagePath to populate the container status message on both success and failure. FallbackToLogsOnError will use the last chunk of container log output if the termination message file is empty and the container exited with an error. The log output is limited to 2048 bytes or 80 lines, whichever is smaller. Defaults to File. Cannot be updated.", + "type": "string" + }, + "tty": { + "description": "Whether this container should allocate a TTY for itself, also requires 'stdin' to be true. Default is false.", + "type": "boolean" + }, + "volumeDevices": { + "description": "volumeDevices is the list of block devices to be used by the container.", + "type": "array", + "items": { + "$ref": "#/definitions/v1.VolumeDevice" + } + }, + "volumeMounts": { + "description": "Pod volumes to mount into the container's filesystem. Cannot be updated.", + "type": "array", + "items": { + "$ref": "#/definitions/v1.VolumeMount" + } + }, + "workingDir": { + "description": "Container's working directory. If not specified, the container runtime's default will be used, which might be configured in the container image. Cannot be updated.", + "type": "string" + } + } + }, + "v1.Event": { + "description": "Event is a report of an event somewhere in the cluster.", + "required": [ + "metadata", + "involvedObject", + "reportingComponent", + "reportingInstance" + ], + "properties": { + "action": { + "description": "What action was taken/failed regarding to the Regarding object.", + "type": "string" + }, + "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" + }, + "count": { + "description": "The number of times this event has occurred.", + "type": "integer", + "format": "int32" + }, + "eventTime": { + "description": "Time when this Event was first observed.", + "type": "string" + }, + "firstTimestamp": { + "description": "The time at which the event was first recorded. (Time of server receipt is in TypeMeta.)", + "type": "string" + }, + "involvedObject": { + "description": "The object that this event is about.", + "$ref": "#/definitions/v1.ObjectReference" + }, + "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" + }, + "lastTimestamp": { + "description": "The time at which the most recent occurrence of this event was recorded.", + "type": "string" + }, + "message": { + "description": "A human-readable description of the status of this operation.", + "type": "string" + }, + "metadata": { + "description": "Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata", + "$ref": "#/definitions/v1.ObjectMeta" + }, + "reason": { + "description": "This should be a short, machine understandable string that gives the reason for the transition into the object's current status.", + "type": "string" + }, + "related": { + "description": "Optional secondary object for more complex actions.", + "$ref": "#/definitions/v1.ObjectReference" + }, + "reportingComponent": { + "description": "Name of the controller that emitted this Event, e.g. `kubernetes.io/kubelet`.", + "type": "string" + }, + "reportingInstance": { + "description": "ID of the controller instance, e.g. `kubelet-xyzf`.", + "type": "string" + }, + "series": { + "description": "Data about the Event series this event represents or nil if it's a singleton Event.", + "$ref": "#/definitions/v1.EventSeries" + }, + "source": { + "description": "The component reporting this event. Should be a short machine understandable string.", + "$ref": "#/definitions/v1.EventSource" + }, + "type": { + "description": "Type of this event (Normal, Warning), new types could be added in the future", + "type": "string" + } + } + }, + "v1.EventSeries": { + "description": "EventSeries contain information on series of events, i.e. thing that was/is happening continuously for some time.", + "properties": { + "count": { + "description": "Number of occurrences in this series up to the last heartbeat time", + "type": "integer", + "format": "int32" + }, + "lastObservedTime": { + "description": "Time of the last occurrence observed", + "type": "string" + }, + "state": { + "description": "State of this Series: Ongoing or Finished Deprecated. Planned removal for 1.18", + "type": "string" + } + } + }, + "v1.EventSource": { + "description": "EventSource contains information for an event.", + "properties": { + "component": { + "description": "Component from which the event is generated.", + "type": "string" + }, + "host": { + "description": "Node name on which the event is generated.", + "type": "string" + } + } + }, + "v1.ExecAction": { + "description": "ExecAction describes a \"run in container\" action.", + "properties": { + "command": { + "description": "Command is the command line to execute inside the container, the working directory for the command is root ('/') in the container's filesystem. The command is simply exec'd, it is not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use a shell, you need to explicitly call out to that shell. Exit status of 0 is treated as live/healthy and non-zero is unhealthy.", + "type": "array", + "items": { + "type": "string" + } + } + } + }, + "v1.FCVolumeSource": { + "description": "Represents a Fibre Channel volume. Fibre Channel volumes can only be mounted as read/write once. Fibre Channel volumes support ownership management and SELinux relabeling.", + "properties": { + "fsType": { + "description": "Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified.", + "type": "string" + }, + "lun": { + "description": "Optional: FC target lun number", + "type": "integer", + "format": "int32" + }, + "readOnly": { + "description": "Optional: Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.", + "type": "boolean" + }, + "targetWWNs": { + "description": "Optional: FC target worldwide names (WWNs)", + "type": "array", + "items": { + "type": "string" + } + }, + "wwids": { + "description": "Optional: FC volume world wide identifiers (wwids) Either wwids or combination of targetWWNs and lun must be set, but not both simultaneously.", + "type": "array", + "items": { + "type": "string" + } + } + } + }, + "v1.FlexVolumeSource": { + "description": "FlexVolume represents a generic volume resource that is provisioned/attached using an exec based plugin.", + "required": [ + "driver" + ], + "properties": { + "driver": { + "description": "Driver is the name of the driver to use for this volume.", + "type": "string" + }, + "fsType": { + "description": "Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. \"ext4\", \"xfs\", \"ntfs\". The default filesystem depends on FlexVolume script.", + "type": "string" + }, + "options": { + "description": "Optional: Extra command options if any.", + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "readOnly": { + "description": "Optional: Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.", + "type": "boolean" + }, + "secretRef": { + "description": "Optional: SecretRef is reference to the secret object containing sensitive information to pass to the plugin scripts. This may be empty if no secret object is specified. If the secret object contains more than one secret, all secrets are passed to the plugin scripts.", + "$ref": "#/definitions/v1.LocalObjectReference" + } + } + }, + "v1.FlockerVolumeSource": { + "description": "Represents a Flocker volume mounted by the Flocker agent. One and only one of datasetName and datasetUUID should be set. Flocker volumes do not support ownership management or SELinux relabeling.", + "properties": { + "datasetName": { + "description": "Name of the dataset stored as metadata -\u003e name on the dataset for Flocker should be considered as deprecated", + "type": "string" + }, + "datasetUUID": { + "description": "UUID of the dataset. This is unique identifier of a Flocker dataset", + "type": "string" + } + } + }, + "v1.GCEPersistentDiskVolumeSource": { + "description": "Represents a Persistent Disk resource in Google Compute Engine.\n\nA GCE PD must exist before mounting to a container. The disk must also be in the same GCE project and zone as the kubelet. A GCE PD can only be mounted as read/write once or read-only many times. GCE PDs support ownership management and SELinux relabeling.", + "required": [ + "pdName" + ], + "properties": { + "fsType": { + "description": "Filesystem type of the volume that you want to mount. Tip: Ensure that the filesystem type is supported by the host operating system. Examples: \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk", + "type": "string" + }, + "partition": { + "description": "The partition in the volume that you want to mount. If omitted, the default is to mount by volume name. Examples: For volume /dev/sda1, you specify the partition as \"1\". Similarly, the volume partition for /dev/sda is \"0\" (or you can leave the property empty). More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk", + "type": "integer", + "format": "int32" + }, + "pdName": { + "description": "Unique name of the PD resource in GCE. Used to identify the disk in GCE. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk", + "type": "string" + }, + "readOnly": { + "description": "ReadOnly here will force the ReadOnly setting in VolumeMounts. Defaults to false. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk", + "type": "boolean" + } + } + }, + "v1.GitRepoVolumeSource": { + "description": "Represents a volume that is populated with the contents of a git repository. Git repo volumes do not support ownership management. Git repo volumes support SELinux relabeling.\n\nDEPRECATED: GitRepo is deprecated. To provision a container with a git repo, mount an EmptyDir into an InitContainer that clones the repo using git, then mount the EmptyDir into the Pod's container.", + "required": [ + "repository" + ], + "properties": { + "directory": { + "description": "Target directory name. Must not contain or start with '..'. If '.' is supplied, the volume directory will be the git repository. Otherwise, if specified, the volume will contain the git repository in the subdirectory with the given name.", + "type": "string" + }, + "repository": { + "description": "Repository URL", + "type": "string" + }, + "revision": { + "description": "Commit hash for the specified revision.", + "type": "string" + } + } + }, + "v1.GlusterfsVolumeSource": { + "description": "Represents a Glusterfs mount that lasts the lifetime of a pod. Glusterfs volumes do not support ownership management or SELinux relabeling.", + "required": [ + "endpoints", + "path" + ], + "properties": { + "endpoints": { + "description": "EndpointsName is the endpoint name that details Glusterfs topology. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod", + "type": "string" + }, + "path": { + "description": "Path is the Glusterfs volume path. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod", + "type": "string" + }, + "readOnly": { + "description": "ReadOnly here will force the Glusterfs volume to be mounted with read-only permissions. Defaults to false. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod", + "type": "boolean" + } + } + }, + "v1.HTTPGetAction": { + "description": "HTTPGetAction describes an action based on HTTP Get requests.", + "required": [ + "port" + ], + "properties": { + "host": { + "description": "Host name to connect to, defaults to the pod IP. You probably want to set \"Host\" in httpHeaders instead.", + "type": "string" + }, + "httpHeaders": { + "description": "Custom headers to set in the request. HTTP allows repeated headers.", + "type": "array", + "items": { + "$ref": "#/definitions/v1.HTTPHeader" + } + }, + "path": { + "description": "Path to access on the HTTP server.", + "type": "string" + }, + "port": { + "description": "Name or number of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.", + "type": "string" + }, + "scheme": { + "description": "Scheme to use for connecting to the host. Defaults to HTTP.", + "type": "string" + } + } + }, + "v1.HTTPHeader": { + "description": "HTTPHeader describes a custom header to be used in HTTP probes", + "required": [ + "name", + "value" + ], + "properties": { + "name": { + "description": "The header field name", + "type": "string" + }, + "value": { + "description": "The header field value", + "type": "string" + } + } + }, + "v1.Handler": { + "description": "Handler defines a specific action that should be taken", + "properties": { + "exec": { + "description": "One and only one of the following should be specified. Exec specifies the action to take.", + "$ref": "#/definitions/v1.ExecAction" + }, + "httpGet": { + "description": "HTTPGet specifies the http request to perform.", + "$ref": "#/definitions/v1.HTTPGetAction" + }, + "tcpSocket": { + "description": "TCPSocket specifies an action involving a TCP port. TCP hooks not yet supported", + "$ref": "#/definitions/v1.TCPSocketAction" + } + } + }, + "v1.HostAlias": { + "description": "HostAlias holds the mapping between IP and hostnames that will be injected as an entry in the pod's hosts file.", + "properties": { + "hostnames": { + "description": "Hostnames for the above IP address.", + "type": "array", + "items": { + "type": "string" + } + }, + "ip": { + "description": "IP address of the host file entry.", + "type": "string" + } + } + }, + "v1.HostPathVolumeSource": { + "description": "Represents a host path mapped into a pod. Host path volumes do not support ownership management or SELinux relabeling.", + "required": [ + "path" + ], + "properties": { + "path": { + "description": "Path of the directory on the host. If the path is a symlink, it will follow the link to the real path. More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath", + "type": "string" + }, + "type": { + "description": "Type for HostPath Volume Defaults to \"\" More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath", + "type": "string" + } + } + }, + "v1.ISCSIVolumeSource": { + "description": "Represents an ISCSI disk. ISCSI volumes can only be mounted as read/write once. ISCSI volumes support ownership management and SELinux relabeling.", + "required": [ + "targetPortal", + "iqn", + "lun" + ], + "properties": { + "chapAuthDiscovery": { + "description": "whether support iSCSI Discovery CHAP authentication", + "type": "boolean" + }, + "chapAuthSession": { + "description": "whether support iSCSI Session CHAP authentication", + "type": "boolean" + }, + "fsType": { + "description": "Filesystem type of the volume that you want to mount. Tip: Ensure that the filesystem type is supported by the host operating system. Examples: \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#iscsi", + "type": "string" + }, + "initiatorName": { + "description": "Custom iSCSI Initiator Name. If initiatorName is specified with iscsiInterface simultaneously, new iSCSI interface \u003ctarget portal\u003e:\u003cvolume name\u003e will be created for the connection.", + "type": "string" + }, + "iqn": { + "description": "Target iSCSI Qualified Name.", + "type": "string" + }, + "iscsiInterface": { + "description": "iSCSI Interface Name that uses an iSCSI transport. Defaults to 'default' (tcp).", + "type": "string" + }, + "lun": { + "description": "iSCSI Target Lun number.", + "type": "integer", + "format": "int32" + }, + "portals": { + "description": "iSCSI Target Portal List. The portal is either an IP or ip_addr:port if the port is other than default (typically TCP ports 860 and 3260).", + "type": "array", + "items": { + "type": "string" + } + }, + "readOnly": { + "description": "ReadOnly here will force the ReadOnly setting in VolumeMounts. Defaults to false.", + "type": "boolean" + }, + "secretRef": { + "description": "CHAP Secret for iSCSI target and initiator authentication", + "$ref": "#/definitions/v1.LocalObjectReference" + }, + "targetPortal": { + "description": "iSCSI Target Portal. The Portal is either an IP or ip_addr:port if the port is other than default (typically TCP ports 860 and 3260).", + "type": "string" + } + } + }, + "v1.KeyToPath": { + "description": "Maps a string key to a path within a volume.", + "required": [ + "key", + "path" + ], + "properties": { + "key": { + "description": "The key to project.", + "type": "string" + }, + "mode": { + "description": "Optional: mode bits to use on this file, must be a value between 0 and 0777. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.", + "type": "integer", + "format": "int32" + }, + "path": { + "description": "The relative path of the file to map the key to. May not be an absolute path. May not contain the path element '..'. May not start with the string '..'.", + "type": "string" + } + } + }, + "v1.LabelSelector": { + "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.", + "type": "array", + "items": { + "$ref": "#/definitions/v1.LabelSelectorRequirement" + } + }, + "matchLabels": { + "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", + "additionalProperties": { + "type": "string" + } + } + } + }, + "v1.LabelSelectorRequirement": { + "description": "A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.", + "required": [ + "key", + "operator" + ], + "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.", + "type": "array", + "items": { + "type": "string" + } + } + } + }, + "v1.Lifecycle": { + "description": "Lifecycle describes actions that the management system should take in response to container lifecycle events. For the PostStart and PreStop lifecycle handlers, management of the container blocks until the action is complete, unless the container process fails, in which case the handler is aborted.", + "properties": { + "postStart": { + "description": "PostStart is called immediately after a container is created. If the handler fails, the container is terminated and restarted according to its restart policy. Other management of the container blocks until the hook completes. More info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks", + "$ref": "#/definitions/v1.Handler" + }, + "preStop": { + "description": "PreStop is called immediately before a container is terminated due to an API request or management event such as liveness/startup probe failure, preemption, resource contention, etc. The handler is not called if the container crashes or exits. The reason for termination is passed to the handler. The Pod's termination grace period countdown begins before the PreStop hooked is executed. Regardless of the outcome of the handler, the container will eventually terminate within the Pod's termination grace period. Other management of the container blocks until the hook completes or until the termination grace period is reached. More info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks", + "$ref": "#/definitions/v1.Handler" + } + } + }, + "v1.LoadBalancerIngress": { + "description": "LoadBalancerIngress represents the status of a load-balancer ingress point: traffic intended for the service should be sent to an ingress point.", + "properties": { + "hostname": { + "description": "Hostname is set for load-balancer ingress points that are DNS based (typically AWS load-balancers)", + "type": "string" + }, + "ip": { + "description": "IP is set for load-balancer ingress points that are IP based (typically GCE or OpenStack load-balancers)", + "type": "string" + } + } + }, + "v1.LoadBalancerStatus": { + "description": "LoadBalancerStatus represents the status of a load-balancer.", + "properties": { + "ingress": { + "description": "Ingress is a list containing ingress points for the load-balancer. Traffic intended for the service should be sent to these ingress points.", + "type": "array", + "items": { + "$ref": "#/definitions/v1.LoadBalancerIngress" + } + } + } + }, + "v1.LocalObjectReference": { + "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", + "type": "string" + } + } + }, + "v1.ManagedFieldsEntry": { + "description": "ManagedFieldsEntry is a workflow-id, a FieldSet and the group version of the resource that the fieldset applies to.", + "properties": { + "apiVersion": { + "description": "APIVersion defines the version of this resource that this field set applies to. The format is \"group/version\" just like the top-level APIVersion field. It is necessary to track the version of a field set because it cannot be automatically converted.", + "type": "string" + }, + "fieldsType": { + "description": "FieldsType is the discriminator for the different fields format and version. There is currently only one possible value: \"FieldsV1\"", + "type": "string" + }, + "fieldsV1": { + "description": "FieldsV1 holds the first JSON version format as described in the \"FieldsV1\" type.", + "type": "string" + }, + "manager": { + "description": "Manager is an identifier of the workflow managing these fields.", + "type": "string" + }, + "operation": { + "description": "Operation is the type of operation which lead to this ManagedFieldsEntry being created. The only valid values for this field are 'Apply' and 'Update'.", + "type": "string" + }, + "time": { + "description": "Time is timestamp of when these fields were set. It should always be empty if Operation is 'Apply'", + "type": "string" + } + } + }, + "v1.NFSVolumeSource": { + "description": "Represents an NFS mount that lasts the lifetime of a pod. NFS volumes do not support ownership management or SELinux relabeling.", + "required": [ + "server", + "path" + ], + "properties": { + "path": { + "description": "Path that is exported by the NFS server. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs", + "type": "string" + }, + "readOnly": { + "description": "ReadOnly here will force the NFS export to be mounted with read-only permissions. Defaults to false. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs", + "type": "boolean" + }, + "server": { + "description": "Server is the hostname or IP address of the NFS server. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs", + "type": "string" + } + } + }, + "v1.Namespace": { + "description": "Namespace provides a scope for Names. Use of multiple namespaces is optional.", + "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": { + "description": "Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata", + "$ref": "#/definitions/v1.ObjectMeta" + }, + "spec": { + "description": "Spec defines the behavior of the Namespace. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status", + "$ref": "#/definitions/v1.NamespaceSpec" + }, + "status": { + "description": "Status describes the current status of a Namespace. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status", + "$ref": "#/definitions/v1.NamespaceStatus" + } + } + }, + "v1.NamespaceCondition": { + "description": "NamespaceCondition contains details about state of namespace.", + "required": [ + "type", + "status" + ], + "properties": { + "lastTransitionTime": { + "type": "string" + }, + "message": { + "type": "string" + }, + "reason": { + "type": "string" + }, + "status": { + "description": "Status of the condition, one of True, False, Unknown.", + "type": "string" + }, + "type": { + "description": "Type of namespace controller condition.", + "type": "string" + } + } + }, + "v1.NamespaceSpec": { + "description": "NamespaceSpec describes the attributes on a Namespace.", + "properties": { + "finalizers": { + "description": "Finalizers is an opaque list of values that must be empty to permanently remove object from storage. More info: https://kubernetes.io/docs/tasks/administer-cluster/namespaces/", + "type": "array", + "items": { + "type": "string" + } + } + } + }, + "v1.NamespaceStatus": { + "description": "NamespaceStatus is information about the current status of a Namespace.", + "properties": { + "conditions": { + "description": "Represents the latest available observations of a namespace's current state.", + "type": "array", + "items": { + "$ref": "#/definitions/v1.NamespaceCondition" + } + }, + "phase": { + "description": "Phase is the current lifecycle phase of the namespace. More info: https://kubernetes.io/docs/tasks/administer-cluster/namespaces/", + "type": "string" + } + } + }, + "v1.NodeAffinity": { + "description": "Node affinity is a group of node affinity scheduling rules.", + "properties": { + "preferredDuringSchedulingIgnoredDuringExecution": { + "description": "The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding \"weight\" to the sum if the node matches the corresponding matchExpressions; the node(s) with the highest sum are the most preferred.", + "type": "array", + "items": { + "$ref": "#/definitions/v1.PreferredSchedulingTerm" + } + }, + "requiredDuringSchedulingIgnoredDuringExecution": { + "description": "If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to an update), the system may or may not try to eventually evict the pod from its node.", + "$ref": "#/definitions/v1.NodeSelector" + } + } + }, + "v1.NodeSelector": { + "description": "A node selector represents the union of the results of one or more label queries over a set of nodes; that is, it represents the OR of the selectors represented by the node selector terms.", + "required": [ + "nodeSelectorTerms" + ], + "properties": { + "nodeSelectorTerms": { + "description": "Required. A list of node selector terms. The terms are ORed.", + "type": "array", + "items": { + "$ref": "#/definitions/v1.NodeSelectorTerm" + } + } + } + }, + "v1.NodeSelectorRequirement": { + "description": "A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.", + "required": [ + "key", + "operator" + ], + "properties": { + "key": { + "description": "The label key that the selector applies to.", + "type": "string" + }, + "operator": { + "description": "Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.", + "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. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch.", + "type": "array", + "items": { + "type": "string" + } + } + } + }, + "v1.NodeSelectorTerm": { + "description": "A null or empty node selector term matches no objects. The requirements of them are ANDed. The TopologySelectorTerm type implements a subset of the NodeSelectorTerm.", + "properties": { + "matchExpressions": { + "description": "A list of node selector requirements by node's labels.", + "type": "array", + "items": { + "$ref": "#/definitions/v1.NodeSelectorRequirement" + } + }, + "matchFields": { + "description": "A list of node selector requirements by node's fields.", + "type": "array", + "items": { + "$ref": "#/definitions/v1.NodeSelectorRequirement" + } + } + } + }, + "v1.ObjectFieldSelector": { + "description": "ObjectFieldSelector selects an APIVersioned field of an object.", + "required": [ + "fieldPath" + ], + "properties": { + "apiVersion": { + "description": "Version of the schema the FieldPath is written in terms of, defaults to \"v1\".", + "type": "string" + }, + "fieldPath": { + "description": "Path of the field to select in the specified API version.", + "type": "string" + } + } + }, + "v1.ObjectMeta": { + "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", + "properties": { + "annotations": { + "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "clusterName": { + "description": "The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.", + "type": "string" + }, + "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.\n\nPopulated by the system. Read-only. Null for lists. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata", + "type": "string" + }, + "deletionGracePeriodSeconds": { + "description": "Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.", + "type": "integer", + "format": "int64" + }, + "deletionTimestamp": { + "description": "DeletionTimestamp is RFC 3339 date and time at which this resource will be deleted. This field is set by the server when a graceful deletion is requested by the user, and is not directly settable by a client. The resource is expected to be deleted (no longer visible from resource lists, and not reachable by name) after the time in this field, once the finalizers list is empty. As long as the finalizers list contains items, deletion is blocked. Once the deletionTimestamp is set, this value may not be unset or be set further into the future, although it may be shortened or the resource may be deleted prior to this time. For example, a user may request that a pod is deleted in 30 seconds. The Kubelet will react by sending a graceful termination signal to the containers in the pod. After that 30 seconds, the Kubelet will send a hard termination signal (SIGKILL) to the container and after cleanup, remove the pod from the API. In the presence of network partitions, this object may still exist after this timestamp, until an administrator or automated process can determine the resource is fully terminated. If not set, graceful deletion of the object has not been requested.\n\nPopulated by the system when a graceful deletion is requested. Read-only. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata", + "type": "string" + }, + "finalizers": { + "description": "Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.", + "type": "array", + "items": { + "type": "string" + } + }, + "generateName": { + "description": "GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#idempotency", + "type": "string" + }, + "generation": { + "description": "A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.", + "type": "integer", + "format": "int64" + }, + "labels": { + "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "managedFields": { + "description": "ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like \"ci-cd\". The set of fields is always in the version that the workflow used when modifying the object.", + "type": "array", + "items": { + "$ref": "#/definitions/v1.ManagedFieldsEntry" + } + }, + "name": { + "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", + "type": "string" + }, + "namespace": { + "description": "Namespace defines the space within each name must be unique. An empty namespace is equivalent to the \"default\" namespace, but \"default\" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/namespaces", + "type": "string" + }, + "ownerReferences": { + "description": "List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.", + "type": "array", + "items": { + "$ref": "#/definitions/v1.OwnerReference" + } + }, + "resourceVersion": { + "description": "An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency", + "type": "string" + }, + "selfLink": { + "description": "SelfLink is a URL representing this object. Populated by the system. Read-only.\n\nDEPRECATED Kubernetes will stop propagating this field in 1.20 release and the field is planned to be removed in 1.21 release.", + "type": "string" + }, + "uid": { + "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", + "type": "string" + } + } + }, + "v1.ObjectReference": { + "description": "ObjectReference contains enough information to let you inspect or modify the referred object.", + "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.", + "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" + } + } + }, + "v1.OwnerReference": { + "description": "OwnerReference contains enough information to let you identify an owning object. An owning object must be in the same namespace as the dependent, or be cluster-scoped, so there is no namespace field.", + "required": [ + "apiVersion", + "kind", + "name", + "uid" + ], + "properties": { + "apiVersion": { + "description": "API version of the referent.", + "type": "string" + }, + "blockOwnerDeletion": { + "description": "If true, AND if the owner has the \"foregroundDeletion\" finalizer, then the owner cannot be deleted from the key-value store until this reference is removed. Defaults to false. To set this field, a user needs \"delete\" permission of the owner, otherwise 422 (Unprocessable Entity) will be returned.", + "type": "boolean" + }, + "controller": { + "description": "If true, this reference points to the managing controller.", + "type": "boolean" + }, + "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: http://kubernetes.io/docs/user-guide/identifiers#names", + "type": "string" + }, + "uid": { + "description": "UID of the referent. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", + "type": "string" + } + } + }, + "v1.PersistentVolumeClaim": { + "description": "PersistentVolumeClaim is a user's request for and claim to a persistent volume", + "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": { + "description": "Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata", + "$ref": "#/definitions/v1.ObjectMeta" + }, + "spec": { + "description": "Spec defines the desired characteristics of a volume requested by a pod author. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims", + "$ref": "#/definitions/v1.PersistentVolumeClaimSpec" + }, + "status": { + "description": "Status represents the current information/status of a persistent volume claim. Read-only. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims", + "$ref": "#/definitions/v1.PersistentVolumeClaimStatus" + } + } + }, + "v1.PersistentVolumeClaimCondition": { + "description": "PersistentVolumeClaimCondition contails details about state of pvc", + "required": [ + "type", + "status" + ], + "properties": { + "lastProbeTime": { + "description": "Last time we probed the condition.", + "type": "string" + }, + "lastTransitionTime": { + "description": "Last time the condition transitioned from one status to another.", + "type": "string" + }, + "message": { + "description": "Human-readable message indicating details about last transition.", + "type": "string" + }, + "reason": { + "description": "Unique, this should be a short, machine understandable string that gives the reason for condition's last transition. If it reports \"ResizeStarted\" that means the underlying persistent volume is being resized.", + "type": "string" + }, + "status": { + "type": "string" + }, + "type": { + "type": "string" + } + } + }, + "v1.PersistentVolumeClaimSpec": { + "description": "PersistentVolumeClaimSpec describes the common attributes of storage devices and allows a Source for provider-specific attributes", + "properties": { + "accessModes": { + "description": "AccessModes contains the desired access modes the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1", + "type": "array", + "items": { + "type": "string" + } + }, + "dataSource": { + "description": "This field can be used to specify either: * An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot - Beta) * An existing PVC (PersistentVolumeClaim) * An existing custom resource/object that implements data population (Alpha) In order to use VolumeSnapshot object types, the appropriate feature gate must be enabled (VolumeSnapshotDataSource or AnyVolumeDataSource) If the provisioner or an external controller can support the specified data source, it will create a new volume based on the contents of the specified data source. If the specified data source is not supported, the volume will not be created and the failure will be reported as an event. In the future, we plan to support more data source types and the behavior of the provisioner may change.", + "$ref": "#/definitions/v1.TypedLocalObjectReference" + }, + "resources": { + "description": "Resources represents the minimum resources the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources", + "$ref": "#/definitions/v1.ResourceRequirements" + }, + "selector": { + "description": "A label query over volumes to consider for binding.", + "$ref": "#/definitions/v1.LabelSelector" + }, + "storageClassName": { + "description": "Name of the StorageClass required by the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1", + "type": "string" + }, + "volumeMode": { + "description": "volumeMode defines what type of volume is required by the claim. Value of Filesystem is implied when not included in claim spec.", + "type": "string" + }, + "volumeName": { + "description": "VolumeName is the binding reference to the PersistentVolume backing this claim.", + "type": "string" + } + } + }, + "v1.PersistentVolumeClaimStatus": { + "description": "PersistentVolumeClaimStatus is the current status of a persistent volume claim.", + "properties": { + "accessModes": { + "description": "AccessModes contains the actual access modes the volume backing the PVC has. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1", + "type": "array", + "items": { + "type": "string" + } + }, + "capacity": { + "description": "Represents the actual resources of the underlying volume.", + "type": "object", + "additionalProperties": { + "$ref": "#/definitions/resource.Quantity" + } + }, + "conditions": { + "description": "Current Condition of persistent volume claim. If underlying persistent volume is being resized then the Condition will be set to 'ResizeStarted'.", + "type": "array", + "items": { + "$ref": "#/definitions/v1.PersistentVolumeClaimCondition" + } + }, + "phase": { + "description": "Phase represents the current phase of PersistentVolumeClaim.", + "type": "string" + } + } + }, + "v1.PersistentVolumeClaimVolumeSource": { + "description": "PersistentVolumeClaimVolumeSource references the user's PVC in the same namespace. This volume finds the bound PV and mounts that volume for the pod. A PersistentVolumeClaimVolumeSource is, essentially, a wrapper around another type of volume that is owned by someone else (the system).", + "required": [ + "claimName" + ], + "properties": { + "claimName": { + "description": "ClaimName is the name of a PersistentVolumeClaim in the same namespace as the pod using this volume. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims", + "type": "string" + }, + "readOnly": { + "description": "Will force the ReadOnly setting in VolumeMounts. Default false.", + "type": "boolean" + } + } + }, + "v1.PhotonPersistentDiskVolumeSource": { + "description": "Represents a Photon Controller persistent disk resource.", + "required": [ + "pdID" + ], + "properties": { + "fsType": { + "description": "Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified.", + "type": "string" + }, + "pdID": { + "description": "ID that identifies Photon Controller persistent disk", + "type": "string" + } + } + }, + "v1.PodAffinity": { + "description": "Pod affinity is a group of inter pod affinity scheduling rules.", + "properties": { + "preferredDuringSchedulingIgnoredDuringExecution": { + "description": "The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding \"weight\" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.", + "type": "array", + "items": { + "$ref": "#/definitions/v1.WeightedPodAffinityTerm" + } + }, + "requiredDuringSchedulingIgnoredDuringExecution": { + "description": "If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.", + "type": "array", + "items": { + "$ref": "#/definitions/v1.PodAffinityTerm" + } + } + } + }, + "v1.PodAffinityTerm": { + "description": "Defines a set of pods (namely those matching the labelSelector relative to the given namespace(s)) that this pod should be co-located (affinity) or not co-located (anti-affinity) with, where co-located is defined as running on a node whose value of the label with key \u003ctopologyKey\u003e matches that of any node on which a pod of the set of pods is running", + "required": [ + "topologyKey" + ], + "properties": { + "labelSelector": { + "description": "A label query over a set of resources, in this case pods.", + "$ref": "#/definitions/v1.LabelSelector" + }, + "namespaces": { + "description": "namespaces specifies which namespaces the labelSelector applies to (matches against); null or empty list means \"this pod's namespace\"", + "type": "array", + "items": { + "type": "string" + } + }, + "topologyKey": { + "description": "This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed.", + "type": "string" + } + } + }, + "v1.PodAntiAffinity": { + "description": "Pod anti affinity is a group of inter pod anti affinity scheduling rules.", + "properties": { + "preferredDuringSchedulingIgnoredDuringExecution": { + "description": "The scheduler will prefer to schedule pods to nodes that satisfy the anti-affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling anti-affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding \"weight\" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.", + "type": "array", + "items": { + "$ref": "#/definitions/v1.WeightedPodAffinityTerm" + } + }, + "requiredDuringSchedulingIgnoredDuringExecution": { + "description": "If the anti-affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the anti-affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.", + "type": "array", + "items": { + "$ref": "#/definitions/v1.PodAffinityTerm" + } + } + } + }, + "v1.PodDNSConfig": { + "description": "PodDNSConfig defines the DNS parameters of a pod in addition to those generated from DNSPolicy.", + "properties": { + "nameservers": { + "description": "A list of DNS name server IP addresses. This will be appended to the base nameservers generated from DNSPolicy. Duplicated nameservers will be removed.", + "type": "array", + "items": { + "type": "string" + } + }, + "options": { + "description": "A list of DNS resolver options. This will be merged with the base options generated from DNSPolicy. Duplicated entries will be removed. Resolution options given in Options will override those that appear in the base DNSPolicy.", + "type": "array", + "items": { + "$ref": "#/definitions/v1.PodDNSConfigOption" + } + }, + "searches": { + "description": "A list of DNS search domains for host-name lookup. This will be appended to the base search paths generated from DNSPolicy. Duplicated search paths will be removed.", + "type": "array", + "items": { + "type": "string" + } + } + } + }, + "v1.PodDNSConfigOption": { + "description": "PodDNSConfigOption defines DNS resolver options of a pod.", + "properties": { + "name": { + "description": "Required.", + "type": "string" + }, + "value": { + "type": "string" + } + } + }, + "v1.PodReadinessGate": { + "description": "PodReadinessGate contains the reference to a pod condition", + "required": [ + "conditionType" + ], + "properties": { + "conditionType": { + "description": "ConditionType refers to a condition in the pod's condition list with matching type.", + "type": "string" + } + } + }, + "v1.PodSecurityContext": { + "description": "PodSecurityContext holds pod-level security attributes and common container settings. Some fields are also present in container.securityContext. Field values of container.securityContext take precedence over field values of PodSecurityContext.", + "properties": { + "fsGroup": { + "description": "A special supplemental group that applies to all containers in a pod. Some volume types allow the Kubelet to change the ownership of that volume to be owned by the pod:\n\n1. The owning GID will be the FSGroup 2. The setgid bit is set (new files created in the volume will be owned by FSGroup) 3. The permission bits are OR'd with rw-rw ", + "type": "integer", + "format": "int64" + }, + "fsGroupChangePolicy": { + "description": "fsGroupChangePolicy defines behavior of changing ownership and permission of the volume before being exposed inside Pod. This field will only apply to volume types which support fsGroup based ownership(and permissions). It will have no effect on ephemeral volume types such as: secret, configmaps and emptydir. Valid values are \"OnRootMismatch\" and \"Always\". If not specified defaults to \"Always\".", + "type": "string" + }, + "runAsGroup": { + "description": "The GID to run the entrypoint of the container process. Uses runtime default if unset. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence for that container.", + "type": "integer", + "format": "int64" + }, + "runAsNonRoot": { + "description": "Indicates that the container must run as a non-root user. If true, the Kubelet will validate the image at runtime to ensure that it does not run as UID 0 (root) and fail to start the container if it does. If unset or false, no such validation will be performed. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.", + "type": "boolean" + }, + "runAsUser": { + "description": "The UID to run the entrypoint of the container process. Defaults to user specified in image metadata if unspecified. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence for that container.", + "type": "integer", + "format": "int64" + }, + "seLinuxOptions": { + "description": "The SELinux context to be applied to all containers. If unspecified, the container runtime will allocate a random SELinux context for each container. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence for that container.", + "$ref": "#/definitions/v1.SELinuxOptions" + }, + "supplementalGroups": { + "description": "A list of groups applied to the first process run in each container, in addition to the container's primary GID. If unspecified, no groups will be added to any container.", + "type": "array", + "items": { + "type": "integer" + } + }, + "sysctls": { + "description": "Sysctls hold a list of namespaced sysctls used for the pod. Pods with unsupported sysctls (by the container runtime) might fail to launch.", + "type": "array", + "items": { + "$ref": "#/definitions/v1.Sysctl" + } + }, + "windowsOptions": { + "description": "The Windows specific settings applied to all containers. If unspecified, the options within a container's SecurityContext will be used. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.", + "$ref": "#/definitions/v1.WindowsSecurityContextOptions" + } + } + }, + "v1.PodSpec": { + "description": "PodSpec is a description of a pod.", + "required": [ + "containers" + ], + "properties": { + "activeDeadlineSeconds": { + "description": "Optional duration in seconds the pod may be active on the node relative to StartTime before the system will actively try to mark it failed and kill associated containers. Value must be a positive integer.", + "type": "integer", + "format": "int64" + }, + "affinity": { + "description": "If specified, the pod's scheduling constraints", + "$ref": "#/definitions/v1.Affinity" + }, + "automountServiceAccountToken": { + "description": "AutomountServiceAccountToken indicates whether a service account token should be automatically mounted.", + "type": "boolean" + }, + "containers": { + "description": "List of containers belonging to the pod. Containers cannot currently be added or removed. There must be at least one container in a Pod. Cannot be updated.", + "type": "array", + "items": { + "$ref": "#/definitions/v1.Container" + } + }, + "dnsConfig": { + "description": "Specifies the DNS parameters of a pod. Parameters specified here will be merged to the generated DNS configuration based on DNSPolicy.", + "$ref": "#/definitions/v1.PodDNSConfig" + }, + "dnsPolicy": { + "description": "Set DNS policy for the pod. Defaults to \"ClusterFirst\". Valid values are 'ClusterFirstWithHostNet', 'ClusterFirst', 'Default' or 'None'. DNS parameters given in DNSConfig will be merged with the policy selected with DNSPolicy. To have DNS options set along with hostNetwork, you have to specify DNS policy explicitly to 'ClusterFirstWithHostNet'.", + "type": "string" + }, + "enableServiceLinks": { + "description": "EnableServiceLinks indicates whether information about services should be injected into pod's environment variables, matching the syntax of Docker links. Optional: Defaults to true.", + "type": "boolean" + }, + "ephemeralContainers": { + "description": "List of ephemeral containers run in this pod. Ephemeral containers may be run in an existing pod to perform user-initiated actions such as debugging. This list cannot be specified when creating a pod, and it cannot be modified by updating the pod spec. In order to add an ephemeral container to an existing pod, use the pod's ephemeralcontainers subresource. This field is alpha-level and is only honored by servers that enable the EphemeralContainers feature.", + "type": "array", + "items": { + "$ref": "#/definitions/v1.EphemeralContainer" + } + }, + "hostAliases": { + "description": "HostAliases is an optional list of hosts and IPs that will be injected into the pod's hosts file if specified. This is only valid for non-hostNetwork pods.", + "type": "array", + "items": { + "$ref": "#/definitions/v1.HostAlias" + } + }, + "hostIPC": { + "description": "Use the host's ipc namespace. Optional: Default to false.", + "type": "boolean" + }, + "hostNetwork": { + "description": "Host networking requested for this pod. Use the host's network namespace. If this option is set, the ports that will be used must be specified. Default to false.", + "type": "boolean" + }, + "hostPID": { + "description": "Use the host's pid namespace. Optional: Default to false.", + "type": "boolean" + }, + "hostname": { + "description": "Specifies the hostname of the Pod If not specified, the pod's hostname will be set to a system-defined value.", + "type": "string" + }, + "imagePullSecrets": { + "description": "ImagePullSecrets is an optional list of references to secrets in the same namespace to use for pulling any of the images used by this PodSpec. If specified, these secrets will be passed to individual puller implementations for them to use. For example, in the case of docker, only DockerConfig type secrets are honored. More info: https://kubernetes.io/docs/concepts/containers/images#specifying-imagepullsecrets-on-a-pod", + "type": "array", + "items": { + "$ref": "#/definitions/v1.LocalObjectReference" + } + }, + "initContainers": { + "description": "List of initialization containers belonging to the pod. Init containers are executed in order prior to containers being started. If any init container fails, the pod is considered to have failed and is handled according to its restartPolicy. The name for an init container or normal container must be unique among all containers. Init containers may not have Lifecycle actions, Readiness probes, Liveness probes, or Startup probes. The resourceRequirements of an init container are taken into account during scheduling by finding the highest request/limit for each resource type, and then using the max of of that value or the sum of the normal containers. Limits are applied to init containers in a similar fashion. Init containers cannot currently be added or removed. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/", + "type": "array", + "items": { + "$ref": "#/definitions/v1.Container" + } + }, + "nodeName": { + "description": "NodeName is a request to schedule this pod onto a specific node. If it is non-empty, the scheduler simply schedules this pod onto that node, assuming that it fits resource requirements.", + "type": "string" + }, + "nodeSelector": { + "description": "NodeSelector is a selector which must be true for the pod to fit on a node. Selector which must match a node's labels for the pod to be scheduled on that node. More info: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/", + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "overhead": { + "description": "Overhead represents the resource overhead associated with running a pod for a given RuntimeClass. This field will be autopopulated at admission time by the RuntimeClass admission controller. If the RuntimeClass admission controller is enabled, overhead must not be set in Pod create requests. The RuntimeClass admission controller will reject Pod create requests which have the overhead already set. If RuntimeClass is configured and selected in the PodSpec, Overhead will be set to the value defined in the corresponding RuntimeClass, otherwise it will remain unset and treated as zero. More info: https://git.k8s.io/enhancements/keps/sig-node/20190226-pod-overhead.md This field is alpha-level as of Kubernetes v1.16, and is only honored by servers that enable the PodOverhead feature.", + "type": "object", + "additionalProperties": { + "$ref": "#/definitions/resource.Quantity" + } + }, + "preemptionPolicy": { + "description": "PreemptionPolicy is the Policy for preempting pods with lower priority. One of Never, PreemptLowerPriority. Defaults to PreemptLowerPriority if unset. This field is alpha-level and is only honored by servers that enable the NonPreemptingPriority feature.", + "type": "string" + }, + "priority": { + "description": "The priority value. Various system components use this field to find the priority of the pod. When Priority Admission Controller is enabled, it prevents users from setting this field. The admission controller populates this field from PriorityClassName. The higher the value, the higher the priority.", + "type": "integer", + "format": "int32" + }, + "priorityClassName": { + "description": "If specified, indicates the pod's priority. \"system-node-critical\" and \"system-cluster-critical\" are two special keywords which indicate the highest priorities with the former being the highest priority. Any other name must be defined by creating a PriorityClass object with that name. If not specified, the pod priority will be default or zero if there is no default.", + "type": "string" + }, + "readinessGates": { + "description": "If specified, all readiness gates will be evaluated for pod readiness. A pod is ready when all its containers are ready AND all conditions specified in the readiness gates have status equal to \"True\" More info: https://git.k8s.io/enhancements/keps/sig-network/0007-pod-ready%2B%2B.md", + "type": "array", + "items": { + "$ref": "#/definitions/v1.PodReadinessGate" + } + }, + "restartPolicy": { + "description": "Restart policy for all containers within the pod. One of Always, OnFailure, Never. Default to Always. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#restart-policy", + "type": "string" + }, + "runtimeClassName": { + "description": "RuntimeClassName refers to a RuntimeClass object in the node.k8s.io group, which should be used to run this pod. If no RuntimeClass resource matches the named class, the pod will not be run. If unset or empty, the \"legacy\" RuntimeClass will be used, which is an implicit class with an empty definition that uses the default runtime handler. More info: https://git.k8s.io/enhancements/keps/sig-node/runtime-class.md This is a beta feature as of Kubernetes v1.14.", + "type": "string" + }, + "schedulerName": { + "description": "If specified, the pod will be dispatched by specified scheduler. If not specified, the pod will be dispatched by default scheduler.", + "type": "string" + }, + "securityContext": { + "description": "SecurityContext holds pod-level security attributes and common container settings. Optional: Defaults to empty. See type description for default values of each field.", + "$ref": "#/definitions/v1.PodSecurityContext" + }, + "serviceAccount": { + "description": "DeprecatedServiceAccount is a depreciated alias for ServiceAccountName. Deprecated: Use serviceAccountName instead.", + "type": "string" + }, + "serviceAccountName": { + "description": "ServiceAccountName is the name of the ServiceAccount to use to run this pod. More info: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/", + "type": "string" + }, + "shareProcessNamespace": { + "description": "Share a single process namespace between all of the containers in a pod. When this is set containers will be able to view and signal processes from other containers in the same pod, and the first process in each container will not be assigned PID 1. HostPID and ShareProcessNamespace cannot both be set. Optional: Default to false.", + "type": "boolean" + }, + "subdomain": { + "description": "If specified, the fully qualified Pod hostname will be \"\u003chostname\u003e.\u003csubdomain\u003e.\u003cpod namespace\u003e.svc.\u003ccluster domain\u003e\". If not specified, the pod will not have a domainname at all.", + "type": "string" + }, + "terminationGracePeriodSeconds": { + "description": "Optional duration in seconds the pod needs to terminate gracefully. May be decreased in delete request. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period will be used instead. The grace period is the duration in seconds after the processes running in the pod are sent a termination signal and the time when the processes are forcibly halted with a kill signal. Set this value longer than the expected cleanup time for your process. Defaults to 30 seconds.", + "type": "integer", + "format": "int64" + }, + "tolerations": { + "description": "If specified, the pod's tolerations.", + "type": "array", + "items": { + "$ref": "#/definitions/v1.Toleration" + } + }, + "topologySpreadConstraints": { + "description": "TopologySpreadConstraints describes how a group of pods ought to spread across topology domains. Scheduler will schedule pods in a way which abides by the constraints. This field is only honored by clusters that enable the EvenPodsSpread feature. All topologySpreadConstraints are ANDed.", + "type": "array", + "items": { + "$ref": "#/definitions/v1.TopologySpreadConstraint" + } + }, + "volumes": { + "description": "List of volumes that can be mounted by containers belonging to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes", + "type": "array", + "items": { + "$ref": "#/definitions/v1.Volume" + } + } + } + }, + "v1.PodTemplateSpec": { + "description": "PodTemplateSpec describes the data a pod should have when created from a template", + "properties": { + "metadata": { + "description": "Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata", + "$ref": "#/definitions/v1.ObjectMeta" + }, + "spec": { + "description": "Specification of the desired behavior of the pod. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status", + "$ref": "#/definitions/v1.PodSpec" + } + } + }, + "v1.PolicyRule": { + "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.", + "required": [ + "verbs" + ], + "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.", + "type": "array", + "items": { + "type": "string" + } + }, + "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.", + "type": "array", + "items": { + "type": "string" + } + }, + "resourceNames": { + "description": "ResourceNames is an optional white list of names that the rule applies to. An empty set means that everything is allowed.", + "type": "array", + "items": { + "type": "string" + } + }, + "resources": { + "description": "Resources is a list of resources this rule applies to. ResourceAll represents all resources.", + "type": "array", + "items": { + "type": "string" + } + }, + "verbs": { + "description": "Verbs is a list of Verbs that apply to ALL the ResourceKinds and AttributeRestrictions contained in this rule. VerbAll represents all kinds.", + "type": "array", + "items": { + "type": "string" + } + } + } + }, + "v1.PortworxVolumeSource": { + "description": "PortworxVolumeSource represents a Portworx volume resource.", + "required": [ + "volumeID" + ], + "properties": { + "fsType": { + "description": "FSType represents the filesystem type to mount Must be a filesystem type supported by the host operating system. Ex. \"ext4\", \"xfs\". Implicitly inferred to be \"ext4\" if unspecified.", + "type": "string" + }, + "readOnly": { + "description": "Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.", + "type": "boolean" + }, + "volumeID": { + "description": "VolumeID uniquely identifies a Portworx volume", + "type": "string" + } + } + }, + "v1.PreferredSchedulingTerm": { + "description": "An empty preferred scheduling term matches all objects with implicit weight 0 (i.e. it's a no-op). A null preferred scheduling term matches no objects (i.e. is also a no-op).", + "required": [ + "weight", + "preference" + ], + "properties": { + "preference": { + "description": "A node selector term, associated with the corresponding weight.", + "$ref": "#/definitions/v1.NodeSelectorTerm" + }, + "weight": { + "description": "Weight associated with matching the corresponding nodeSelectorTerm, in the range 1-100.", + "type": "integer", + "format": "int32" + } + } + }, + "v1.Probe": { + "description": "Probe describes a health check to be performed against a container to determine whether it is alive or ready to receive traffic.", + "properties": { + "exec": { + "description": "One and only one of the following should be specified. Exec specifies the action to take.", + "$ref": "#/definitions/v1.ExecAction" + }, + "failureThreshold": { + "description": "Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1.", + "type": "integer", + "format": "int32" + }, + "httpGet": { + "description": "HTTPGet specifies the http request to perform.", + "$ref": "#/definitions/v1.HTTPGetAction" + }, + "initialDelaySeconds": { + "description": "Number of seconds after the container has started before liveness probes are initiated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes", + "type": "integer", + "format": "int32" + }, + "periodSeconds": { + "description": "How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1.", + "type": "integer", + "format": "int32" + }, + "successThreshold": { + "description": "Minimum consecutive successes for the probe to be considered successful after having failed. Defaults to 1. Must be 1 for liveness and startup. Minimum value is 1.", + "type": "integer", + "format": "int32" + }, + "tcpSocket": { + "description": "TCPSocket specifies an action involving a TCP port. TCP hooks not yet supported", + "$ref": "#/definitions/v1.TCPSocketAction" + }, + "timeoutSeconds": { + "description": "Number of seconds after which the probe times out. Defaults to 1 second. Minimum value is 1. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes", + "type": "integer", + "format": "int32" + } + } + }, + "v1.ProjectedVolumeSource": { + "description": "Represents a projected volume source", + "required": [ + "sources" + ], + "properties": { + "defaultMode": { + "description": "Mode bits to use on created files by default. Must be a value between 0 and 0777. Directories within the path are not affected by this setting. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.", + "type": "integer", + "format": "int32" + }, + "sources": { + "description": "list of volume projections", + "type": "array", + "items": { + "$ref": "#/definitions/v1.VolumeProjection" + } + } + } + }, + "v1.QuobyteVolumeSource": { + "description": "Represents a Quobyte mount that lasts the lifetime of a pod. Quobyte volumes do not support ownership management or SELinux relabeling.", + "required": [ + "registry", + "volume" + ], + "properties": { + "group": { + "description": "Group to map volume access to Default is no group", + "type": "string" + }, + "readOnly": { + "description": "ReadOnly here will force the Quobyte volume to be mounted with read-only permissions. Defaults to false.", + "type": "boolean" + }, + "registry": { + "description": "Registry represents a single or multiple Quobyte Registry services specified as a string as host:port pair (multiple entries are separated with commas) which acts as the central registry for volumes", + "type": "string" + }, + "tenant": { + "description": "Tenant owning the given Quobyte volume in the Backend Used with dynamically provisioned Quobyte volumes, value is set by the plugin", + "type": "string" + }, + "user": { + "description": "User to map volume access to Defaults to serivceaccount user", + "type": "string" + }, + "volume": { + "description": "Volume is a string that references an already created Quobyte volume by name.", + "type": "string" + } + } + }, + "v1.RBDVolumeSource": { + "description": "Represents a Rados Block Device mount that lasts the lifetime of a pod. RBD volumes support ownership management and SELinux relabeling.", + "required": [ + "monitors", + "image" + ], + "properties": { + "fsType": { + "description": "Filesystem type of the volume that you want to mount. Tip: Ensure that the filesystem type is supported by the host operating system. Examples: \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#rbd", + "type": "string" + }, + "image": { + "description": "The rados image name. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it", + "type": "string" + }, + "keyring": { + "description": "Keyring is the path to key ring for RBDUser. Default is /etc/ceph/keyring. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it", + "type": "string" + }, + "monitors": { + "description": "A collection of Ceph monitors. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it", + "type": "array", + "items": { + "type": "string" + } + }, + "pool": { + "description": "The rados pool name. Default is rbd. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it", + "type": "string" + }, + "readOnly": { + "description": "ReadOnly here will force the ReadOnly setting in VolumeMounts. Defaults to false. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it", + "type": "boolean" + }, + "secretRef": { + "description": "SecretRef is name of the authentication secret for RBDUser. If provided overrides keyring. Default is nil. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it", + "$ref": "#/definitions/v1.LocalObjectReference" + }, + "user": { + "description": "The rados user name. Default is admin. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it", + "type": "string" + } + } + }, + "v1.ReplicaSet": { + "description": "ReplicaSet ensures that a specified number of pod replicas are running at any given time.", + "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": { + "description": "If the Labels of a ReplicaSet are empty, they are defaulted to be the same as the Pod(s) that the ReplicaSet manages. Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata", + "$ref": "#/definitions/v1.ObjectMeta" + }, + "spec": { + "description": "Spec defines the specification of the desired behavior of the ReplicaSet. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status", + "$ref": "#/definitions/v1.ReplicaSetSpec" + }, + "status": { + "description": "Status is the most recently observed status of the ReplicaSet. This data may be out of date by some window of time. Populated by the system. Read-only. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status", + "$ref": "#/definitions/v1.ReplicaSetStatus" + } + } + }, + "v1.ReplicaSetCondition": { + "description": "ReplicaSetCondition describes the state of a replica set at a certain point.", + "required": [ + "type", + "status" + ], + "properties": { + "lastTransitionTime": { + "description": "The last time the condition transitioned from one status to another.", + "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 replica set condition.", + "type": "string" + } + } + }, + "v1.ReplicaSetSpec": { + "description": "ReplicaSetSpec is the specification of a ReplicaSet.", + "required": [ + "selector" + ], + "properties": { + "minReadySeconds": { + "description": "Minimum number of seconds for which a newly created pod should be ready without any of its container crashing, for it to be considered available. Defaults to 0 (pod will be considered available as soon as it is ready)", + "type": "integer", + "format": "int32" + }, + "replicas": { + "description": "Replicas is the number of desired replicas. This is a pointer to distinguish between explicit zero and unspecified. Defaults to 1. More info: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller/#what-is-a-replicationcontroller", + "type": "integer", + "format": "int32" + }, + "selector": { + "description": "Selector is a label query over pods that should match the replica count. Label keys and values that must match in order to be controlled by this replica set. It must match the pod template's labels. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#label-selectors", + "$ref": "#/definitions/v1.LabelSelector" + }, + "template": { + "description": "Template is the object that describes the pod that will be created if insufficient replicas are detected. More info: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller#pod-template", + "$ref": "#/definitions/v1.PodTemplateSpec" + } + } + }, + "v1.ReplicaSetStatus": { + "description": "ReplicaSetStatus represents the current status of a ReplicaSet.", + "required": [ + "replicas" + ], + "properties": { + "availableReplicas": { + "description": "The number of available replicas (ready for at least minReadySeconds) for this replica set.", + "type": "integer", + "format": "int32" + }, + "conditions": { + "description": "Represents the latest available observations of a replica set's current state.", + "type": "array", + "items": { + "$ref": "#/definitions/v1.ReplicaSetCondition" + } + }, + "fullyLabeledReplicas": { + "description": "The number of pods that have labels matching the labels of the pod template of the replicaset.", + "type": "integer", + "format": "int32" + }, + "observedGeneration": { + "description": "ObservedGeneration reflects the generation of the most recently observed ReplicaSet.", + "type": "integer", + "format": "int64" + }, + "readyReplicas": { + "description": "The number of ready replicas for this replica set.", + "type": "integer", + "format": "int32" + }, + "replicas": { + "description": "Replicas is the most recently oberved number of replicas. More info: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller/#what-is-a-replicationcontroller", + "type": "integer", + "format": "int32" + } + } + }, + "v1.ResourceFieldSelector": { + "description": "ResourceFieldSelector represents container resources (cpu, memory) and their output format", + "required": [ + "resource" + ], + "properties": { + "containerName": { + "description": "Container name: required for volumes, optional for env vars", + "type": "string" + }, + "divisor": { + "description": "Specifies the output format of the exposed resources, defaults to \"1\"", + "type": "string" + }, + "resource": { + "description": "Required: resource to select", + "type": "string" + } + } + }, + "v1.ResourceQuotaStatus": { + "description": "ResourceQuotaStatus defines the enforced hard limits and observed use.", + "properties": { + "hard": { + "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", + "additionalProperties": { + "$ref": "#/definitions/resource.Quantity" + } + }, + "used": { + "description": "Used is the current observed total usage of the resource in the namespace.", + "type": "object", + "additionalProperties": { + "$ref": "#/definitions/resource.Quantity" + } + } + } + }, + "v1.ResourceRequirements": { + "description": "ResourceRequirements describes the compute resource requirements.", + "properties": { + "limits": { + "description": "Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/", + "type": "object", + "additionalProperties": { + "$ref": "#/definitions/resource.Quantity" + } + }, + "requests": { + "description": "Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/", + "type": "object", + "additionalProperties": { + "$ref": "#/definitions/resource.Quantity" + } + } + } + }, + "v1.Role": { + "description": "Role is a namespaced, logical grouping of PolicyRules that can be referenced as a unit by a RoleBinding.", + "required": [ + "rules" + ], + "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": { + "description": "Standard object's metadata.", + "$ref": "#/definitions/v1.ObjectMeta" + }, + "rules": { + "description": "Rules holds all the PolicyRules for this Role", + "type": "array", + "items": { + "$ref": "#/definitions/v1.PolicyRule" + } + } + } + }, + "v1.RoleBinding": { + "description": "RoleBinding references a role, but does not contain it. It can reference a Role in the same namespace or a ClusterRole in the global namespace. It adds who information via Subjects and namespace information by which namespace it exists in. RoleBindings in a given namespace only have effect in that namespace.", + "required": [ + "roleRef" + ], + "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": { + "description": "Standard object's metadata.", + "$ref": "#/definitions/v1.ObjectMeta" + }, + "roleRef": { + "description": "RoleRef can reference a Role in the current namespace or a ClusterRole in the global namespace. If the RoleRef cannot be resolved, the Authorizer must return an error.", + "$ref": "#/definitions/v1.RoleRef" + }, + "subjects": { + "description": "Subjects holds references to the objects the role applies to.", + "type": "array", + "items": { + "$ref": "#/definitions/v1.Subject" + } + } + } + }, + "v1.RoleRef": { + "description": "RoleRef contains information that points to the role being used", + "required": [ + "apiGroup", + "kind", + "name" + ], + "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" + } + } + }, + "v1.RollingUpdateDaemonSet": { + "description": "Spec to control the desired behavior of daemon set rolling update.", + "properties": { + "maxUnavailable": { + "description": "The maximum number of DaemonSet pods that can be unavailable during the update. Value can be an absolute number (ex: 5) or a percentage of total number of DaemonSet pods at the start of the update (ex: 10%). Absolute number is calculated from percentage by rounding up. This cannot be 0. Default value is 1. Example: when this is set to 30%, at most 30% of the total number of nodes that should be running the daemon pod (i.e. status.desiredNumberScheduled) can have their pods stopped for an update at any given time. The update starts by stopping at most 30% of those DaemonSet pods and then brings up new DaemonSet pods in their place. Once the new pods are available, it then proceeds onto other DaemonSet pods, thus ensuring that at least 70% of original number of DaemonSet pods are available at all times during the update.", + "type": "string" + } + } + }, + "v1.RollingUpdateDeployment": { + "description": "Spec to control the desired behavior of rolling update.", + "properties": { + "maxSurge": { + "description": "The maximum number of pods that can be scheduled above the desired number of pods. Value can be an absolute number (ex: 5) or a percentage of desired pods (ex: 10%). This can not be 0 if MaxUnavailable is 0. Absolute number is calculated from percentage by rounding up. Defaults to 25%. Example: when this is set to 30%, the new ReplicaSet can be scaled up immediately when the rolling update starts, such that the total number of old and new pods do not exceed 130% of desired pods. Once old pods have been killed, new ReplicaSet can be scaled up further, ensuring that total number of pods running at any time during the update is at most 130% of desired pods.", + "type": "string" + }, + "maxUnavailable": { + "description": "The maximum number of pods that can be unavailable during the update. Value can be an absolute number (ex: 5) or a percentage of desired pods (ex: 10%). Absolute number is calculated from percentage by rounding down. This can not be 0 if MaxSurge is 0. Defaults to 25%. Example: when this is set to 30%, the old ReplicaSet can be scaled down to 70% of desired pods immediately when the rolling update starts. Once new pods are ready, old ReplicaSet can be scaled down further, followed by scaling up the new ReplicaSet, ensuring that the total number of pods available at all times during the update is at least 70% of desired pods.", + "type": "string" + } + } + }, + "v1.RollingUpdateStatefulSetStrategy": { + "description": "RollingUpdateStatefulSetStrategy is used to communicate parameter for RollingUpdateStatefulSetStrategyType.", + "properties": { + "partition": { + "description": "Partition indicates the ordinal at which the StatefulSet should be partitioned. Default value is 0.", + "type": "integer", + "format": "int32" + } + } + }, + "v1.SELinuxOptions": { + "description": "SELinuxOptions are the labels to be applied to the container", + "properties": { + "level": { + "description": "Level is SELinux level label that applies to the container.", + "type": "string" + }, + "role": { + "description": "Role is a SELinux role label that applies to the container.", + "type": "string" + }, + "type": { + "description": "Type is a SELinux type label that applies to the container.", + "type": "string" + }, + "user": { + "description": "User is a SELinux user label that applies to the container.", + "type": "string" + } + } + }, + "v1.ScaleIOVolumeSource": { + "description": "ScaleIOVolumeSource represents a persistent ScaleIO volume", + "required": [ + "gateway", + "system", + "secretRef" + ], + "properties": { + "fsType": { + "description": "Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. \"ext4\", \"xfs\", \"ntfs\". Default is \"xfs\".", + "type": "string" + }, + "gateway": { + "description": "The host address of the ScaleIO API Gateway.", + "type": "string" + }, + "protectionDomain": { + "description": "The name of the ScaleIO Protection Domain for the configured storage.", + "type": "string" + }, + "readOnly": { + "description": "Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.", + "type": "boolean" + }, + "secretRef": { + "description": "SecretRef references to the secret for ScaleIO user and other sensitive information. If this is not provided, Login operation will fail.", + "$ref": "#/definitions/v1.LocalObjectReference" + }, + "sslEnabled": { + "description": "Flag to enable/disable SSL communication with Gateway, default false", + "type": "boolean" + }, + "storageMode": { + "description": "Indicates whether the storage for a volume should be ThickProvisioned or ThinProvisioned. Default is ThinProvisioned.", + "type": "string" + }, + "storagePool": { + "description": "The ScaleIO Storage Pool associated with the protection domain.", + "type": "string" + }, + "system": { + "description": "The name of the storage system as configured in ScaleIO.", + "type": "string" + }, + "volumeName": { + "description": "The name of a volume already created in the ScaleIO system that is associated with this volume source.", + "type": "string" + } + } + }, + "v1.Secret": { + "description": "Secret holds secret data of a certain type. The total bytes of the values in the Data field must be less than MaxSecretSize bytes.", + "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" + }, + "data": { + "description": "Data contains the secret data. Each key must consist of alphanumeric characters, '-', '_' or '.'. The serialized form of the secret data is a base64 encoded string, representing the arbitrary (possibly non-string) data value here. Described in https://tools.ietf.org/html/rfc4648#section-4", + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "immutable": { + "description": "Immutable, if set to true, ensures that data stored in the Secret cannot be updated (only object metadata can be modified). If not set to true, the field can be modified at any time. Defaulted to nil. This is an alpha field enabled by ImmutableEphemeralVolumes feature gate.", + "type": "boolean" + }, + "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": { + "description": "Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata", + "$ref": "#/definitions/v1.ObjectMeta" + }, + "stringData": { + "description": "stringData allows specifying non-binary secret data in string form. It is provided as a write-only convenience method. All keys and values are merged into the data field on write, overwriting any existing values. It is never output when reading from the API.", + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "type": { + "description": "Used to facilitate programmatic handling of secret data.", + "type": "string" + } + } + }, + "v1.SecretEnvSource": { + "description": "SecretEnvSource selects a Secret to populate the environment variables with.\n\nThe contents of the target Secret's Data field will represent the key-value pairs as environment variables.", + "properties": { + "name": { + "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", + "type": "string" + }, + "optional": { + "description": "Specify whether the Secret must be defined", + "type": "boolean" + } + } + }, + "v1.SecretKeySelector": { + "description": "SecretKeySelector selects a key of a Secret.", + "required": [ + "key" + ], + "properties": { + "key": { + "description": "The key of the secret to select from. Must be a valid secret key.", + "type": "string" + }, + "name": { + "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", + "type": "string" + }, + "optional": { + "description": "Specify whether the Secret or its key must be defined", + "type": "boolean" + } + } + }, + "v1.SecretProjection": { + "description": "Adapts a secret into a projected volume.\n\nThe contents of the target Secret's Data field will be presented in a projected volume as files using the keys in the Data field as the file names. Note that this is identical to a secret volume source without the default mode.", + "properties": { + "items": { + "description": "If unspecified, each key-value pair in the Data field of the referenced Secret will be projected into the volume as a file whose name is the key and content is the value. If specified, the listed keys will be projected into the specified paths, and unlisted keys will not be present. If a key is specified which is not present in the Secret, the volume setup will error unless it is marked optional. Paths must be relative and may not contain the '..' path or start with '..'.", + "type": "array", + "items": { + "$ref": "#/definitions/v1.KeyToPath" + } + }, + "name": { + "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", + "type": "string" + }, + "optional": { + "description": "Specify whether the Secret or its key must be defined", + "type": "boolean" + } + } + }, + "v1.SecretReference": { + "description": "SecretReference represents a Secret Reference. It has enough information to retrieve secret in any namespace", + "properties": { + "name": { + "description": "Name is unique within a namespace to reference a secret resource.", + "type": "string" + }, + "namespace": { + "description": "Namespace defines the space within which the secret name must be unique.", + "type": "string" + } + } + }, + "v1.SecretVolumeSource": { + "description": "Adapts a Secret into a volume.\n\nThe contents of the target Secret's Data field will be presented in a volume as files using the keys in the Data field as the file names. Secret volumes support ownership management and SELinux relabeling.", + "properties": { + "defaultMode": { + "description": "Optional: mode bits to use on created files by default. Must be a value between 0 and 0777. Defaults to 0644. Directories within the path are not affected by this setting. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.", + "type": "integer", + "format": "int32" + }, + "items": { + "description": "If unspecified, each key-value pair in the Data field of the referenced Secret will be projected into the volume as a file whose name is the key and content is the value. If specified, the listed keys will be projected into the specified paths, and unlisted keys will not be present. If a key is specified which is not present in the Secret, the volume setup will error unless it is marked optional. Paths must be relative and may not contain the '..' path or start with '..'.", + "type": "array", + "items": { + "$ref": "#/definitions/v1.KeyToPath" + } + }, + "optional": { + "description": "Specify whether the Secret or its keys must be defined", + "type": "boolean" + }, + "secretName": { + "description": "Name of the secret in the pod's namespace to use. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret", + "type": "string" + } + } + }, + "v1.SecurityContext": { + "description": "SecurityContext holds security configuration that will be applied to a container. Some fields are present in both SecurityContext and PodSecurityContext. When both are set, the values in SecurityContext take precedence.", + "properties": { + "allowPrivilegeEscalation": { + "description": "AllowPrivilegeEscalation controls whether a process can gain more privileges than its parent process. This bool directly controls if the no_new_privs flag will be set on the container process. AllowPrivilegeEscalation is true always when the container is: 1) run as Privileged 2) has CAP_SYS_ADMIN", + "type": "boolean" + }, + "capabilities": { + "description": "The capabilities to add/drop when running containers. Defaults to the default set of capabilities granted by the container runtime.", + "$ref": "#/definitions/v1.Capabilities" + }, + "privileged": { + "description": "Run container in privileged mode. Processes in privileged containers are essentially equivalent to root on the host. Defaults to false.", + "type": "boolean" + }, + "procMount": { + "description": "procMount denotes the type of proc mount to use for the containers. The default is DefaultProcMount which uses the container runtime defaults for readonly paths and masked paths. This requires the ProcMountType feature flag to be enabled.", + "type": "string" + }, + "readOnlyRootFilesystem": { + "description": "Whether this container has a read-only root filesystem. Default is false.", + "type": "boolean" + }, + "runAsGroup": { + "description": "The GID to run the entrypoint of the container process. Uses runtime default if unset. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.", + "type": "integer", + "format": "int64" + }, + "runAsNonRoot": { + "description": "Indicates that the container must run as a non-root user. If true, the Kubelet will validate the image at runtime to ensure that it does not run as UID 0 (root) and fail to start the container if it does. If unset or false, no such validation will be performed. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.", + "type": "boolean" + }, + "runAsUser": { + "description": "The UID to run the entrypoint of the container process. Defaults to user specified in image metadata if unspecified. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.", + "type": "integer", + "format": "int64" + }, + "seLinuxOptions": { + "description": "The SELinux context to be applied to the container. If unspecified, the container runtime will allocate a random SELinux context for each container. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.", + "$ref": "#/definitions/v1.SELinuxOptions" + }, + "windowsOptions": { + "description": "The Windows specific settings applied to all containers. If unspecified, the options from the PodSecurityContext will be used. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.", + "$ref": "#/definitions/v1.WindowsSecurityContextOptions" + } + } + }, + "v1.Service": { + "description": "Service is a named abstraction of software service (for example, mysql) consisting of local port (for example 3306) that the proxy listens on, and the selector that determines which pods will answer requests sent through the proxy.", + "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": { + "description": "Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata", + "$ref": "#/definitions/v1.ObjectMeta" + }, + "spec": { + "description": "Spec defines the behavior of a service. https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status", + "$ref": "#/definitions/v1.ServiceSpec" + }, + "status": { + "description": "Most recently observed status of the service. Populated by the system. Read-only. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status", + "$ref": "#/definitions/v1.ServiceStatus" + } + } + }, + "v1.ServiceAccountTokenProjection": { + "description": "ServiceAccountTokenProjection represents a projected service account token volume. This projection can be used to insert a service account token into the pods runtime filesystem for use against APIs (Kubernetes API Server or otherwise).", + "required": [ + "path" + ], + "properties": { + "audience": { + "description": "Audience is the intended audience of the token. A recipient of a token must identify itself with an identifier specified in the audience of the token, and otherwise should reject the token. The audience defaults to the identifier of the apiserver.", + "type": "string" + }, + "expirationSeconds": { + "description": "ExpirationSeconds is the requested duration of validity of the service account token. As the token approaches expiration, the kubelet volume plugin will proactively rotate the service account token. The kubelet will start trying to rotate the token if the token is older than 80 percent of its time to live or if the token is older than 24 hours.Defaults to 1 hour and must be at least 10 minutes.", + "type": "integer", + "format": "int64" + }, + "path": { + "description": "Path is the path relative to the mount point of the file to project the token into.", + "type": "string" + } + } + }, + "v1.ServicePort": { + "description": "ServicePort contains information on service's port.", + "required": [ + "port" + ], + "properties": { + "appProtocol": { + "description": "The application protocol for this port. This field follows standard Kubernetes label syntax. Un-prefixed names are reserved for IANA standard service names (as per RFC-6335 and http://www.iana.org/assignments/service-names). Non-standard protocols should use prefixed names such as mycompany.com/my-custom-protocol. Field can be enabled with ServiceAppProtocol feature gate.", + "type": "string" + }, + "name": { + "description": "The name of this port within the service. This must be a DNS_LABEL. All ports within a ServiceSpec must have unique names. When considering the endpoints for a Service, this must match the 'name' field in the EndpointPort. Optional if only one ServicePort is defined on this service.", + "type": "string" + }, + "nodePort": { + "description": "The port on each node on which this service is exposed when type=NodePort or LoadBalancer. Usually assigned by the system. If specified, it will be allocated to the service if unused or else creation of the service will fail. Default is to auto-allocate a port if the ServiceType of this Service requires one. More info: https://kubernetes.io/docs/concepts/services-networking/service/#type-nodeport", + "type": "integer", + "format": "int32" + }, + "port": { + "description": "The port that will be exposed by this service.", + "type": "integer", + "format": "int32" + }, + "protocol": { + "description": "The IP protocol for this port. Supports \"TCP\", \"UDP\", and \"SCTP\". Default is TCP.", + "type": "string" + }, + "targetPort": { + "description": "Number or name of the port to access on the pods targeted by the service. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME. If this is a string, it will be looked up as a named port in the target Pod's container ports. If this is not specified, the value of the 'port' field is used (an identity map). This field is ignored for services with clusterIP=None, and should be omitted or set equal to the 'port' field. More info: https://kubernetes.io/docs/concepts/services-networking/service/#defining-a-service", + "type": "string" + } + } + }, + "v1.ServiceSpec": { + "description": "ServiceSpec describes the attributes that a user creates on a service.", + "properties": { + "clusterIP": { + "description": "clusterIP is the IP address of the service and is usually assigned randomly by the master. If an address is specified manually and is not in use by others, it will be allocated to the service; otherwise, creation of the service will fail. This field can not be changed through updates. Valid values are \"None\", empty string (\"\"), or a valid IP address. \"None\" can be specified for headless services when proxying is not required. Only applies to types ClusterIP, NodePort, and LoadBalancer. Ignored if type is ExternalName. More info: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies", + "type": "string" + }, + "externalIPs": { + "description": "externalIPs is a list of IP addresses for which nodes in the cluster will also accept traffic for this service. These IPs are not managed by Kubernetes. The user is responsible for ensuring that traffic arrives at a node with this IP. A common example is external load-balancers that are not part of the Kubernetes system.", + "type": "array", + "items": { + "type": "string" + } + }, + "externalName": { + "description": "externalName is the external reference that kubedns or equivalent will return as a CNAME record for this service. No proxying will be involved. Must be a valid RFC-1123 hostname (https://tools.ietf.org/html/rfc1123) and requires Type to be ExternalName.", + "type": "string" + }, + "externalTrafficPolicy": { + "description": "externalTrafficPolicy denotes if this Service desires to route external traffic to node-local or cluster-wide endpoints. \"Local\" preserves the client source IP and avoids a second hop for LoadBalancer and Nodeport type services, but risks potentially imbalanced traffic spreading. \"Cluster\" obscures the client source IP and may cause a second hop to another node, but should have good overall load-spreading.", + "type": "string" + }, + "healthCheckNodePort": { + "description": "healthCheckNodePort specifies the healthcheck nodePort for the service. If not specified, HealthCheckNodePort is created by the service api backend with the allocated nodePort. Will use user-specified nodePort value if specified by the client. Only effects when Type is set to LoadBalancer and ExternalTrafficPolicy is set to Local.", + "type": "integer", + "format": "int32" + }, + "ipFamily": { + "description": "ipFamily specifies whether this Service has a preference for a particular IP family (e.g. IPv4 vs. IPv6). If a specific IP family is requested, the clusterIP field will be allocated from that family, if it is available in the cluster. If no IP family is requested, the cluster's primary IP family will be used. Other IP fields (loadBalancerIP, loadBalancerSourceRanges, externalIPs) and controllers which allocate external load-balancers should use the same IP family. Endpoints for this Service will be of this family. This field is immutable after creation. Assigning a ServiceIPFamily not available in the cluster (e.g. IPv6 in IPv4 only cluster) is an error condition and will fail during clusterIP assignment.", + "type": "string" + }, + "loadBalancerIP": { + "description": "Only applies to Service Type: LoadBalancer LoadBalancer will get created with the IP specified in this field. This feature depends on whether the underlying cloud-provider supports specifying the loadBalancerIP when a load balancer is created. This field will be ignored if the cloud-provider does not support the feature.", + "type": "string" + }, + "loadBalancerSourceRanges": { + "description": "If specified and supported by the platform, this will restrict traffic through the cloud-provider load-balancer will be restricted to the specified client IPs. This field will be ignored if the cloud-provider does not support the feature.\" More info: https://kubernetes.io/docs/tasks/access-application-cluster/configure-cloud-provider-firewall/", + "type": "array", + "items": { + "type": "string" + } + }, + "ports": { + "description": "The list of ports that are exposed by this service. More info: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies", + "type": "array", + "items": { + "$ref": "#/definitions/v1.ServicePort" + } + }, + "publishNotReadyAddresses": { + "description": "publishNotReadyAddresses, when set to true, indicates that DNS implementations must publish the notReadyAddresses of subsets for the Endpoints associated with the Service. The default value is false. The primary use case for setting this field is to use a StatefulSet's Headless Service to propagate SRV records for its Pods without respect to their readiness for purpose of peer discovery.", + "type": "boolean" + }, + "selector": { + "description": "Route service traffic to pods with label keys and values matching this selector. If empty or not present, the service is assumed to have an external process managing its endpoints, which Kubernetes will not modify. Only applies to types ClusterIP, NodePort, and LoadBalancer. Ignored if type is ExternalName. More info: https://kubernetes.io/docs/concepts/services-networking/service/", + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "sessionAffinity": { + "description": "Supports \"ClientIP\" and \"None\". Used to maintain session affinity. Enable client IP based session affinity. Must be ClientIP or None. Defaults to None. More info: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies", + "type": "string" + }, + "sessionAffinityConfig": { + "description": "sessionAffinityConfig contains the configurations of session affinity.", + "$ref": "#/definitions/v1.SessionAffinityConfig" + }, + "topologyKeys": { + "description": "topologyKeys is a preference-order list of topology keys which implementations of services should use to preferentially sort endpoints when accessing this Service, it can not be used at the same time as externalTrafficPolicy=Local. Topology keys must be valid label keys and at most 16 keys may be specified. Endpoints are chosen based on the first topology key with available backends. If this field is specified and all entries have no backends that match the topology of the client, the service has no backends for that client and connections should fail. The special value \"*\" may be used to mean \"any topology\". This catch-all value, if used, only makes sense as the last value in the list. If this is not specified or empty, no topology constraints will be applied.", + "type": "array", + "items": { + "type": "string" + } + }, + "type": { + "description": "type determines how the Service is exposed. Defaults to ClusterIP. Valid options are ExternalName, ClusterIP, NodePort, and LoadBalancer. \"ExternalName\" maps to the specified externalName. \"ClusterIP\" allocates a cluster-internal IP address for load-balancing to endpoints. Endpoints are determined by the selector or if that is not specified, by manual construction of an Endpoints object. If clusterIP is \"None\", no virtual IP is allocated and the endpoints are published as a set of endpoints rather than a stable IP. \"NodePort\" builds on ClusterIP and allocates a port on every node which routes to the clusterIP. \"LoadBalancer\" builds on NodePort and creates an external load-balancer (if supported in the current cloud) which routes to the clusterIP. More info: https://kubernetes.io/docs/concepts/services-networking/service/#publishing-services-service-types", + "type": "string" + } + } + }, + "v1.ServiceStatus": { + "description": "ServiceStatus represents the current status of a service.", + "properties": { + "loadBalancer": { + "description": "LoadBalancer contains the current status of the load-balancer, if one is present.", + "$ref": "#/definitions/v1.LoadBalancerStatus" + } + } + }, + "v1.SessionAffinityConfig": { + "description": "SessionAffinityConfig represents the configurations of session affinity.", + "properties": { + "clientIP": { + "description": "clientIP contains the configurations of Client IP based session affinity.", + "$ref": "#/definitions/v1.ClientIPConfig" + } + } + }, + "v1.StatefulSet": { + "description": "StatefulSet represents a set of pods with consistent identities. Identities are defined as:\n - Network: A single stable DNS and hostname.\n - Storage: As many VolumeClaims as requested.\nThe StatefulSet guarantees that a given network identity will always map to the same storage identity.", + "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": { + "$ref": "#/definitions/v1.ObjectMeta" + }, + "spec": { + "description": "Spec defines the desired identities of pods in this set.", + "$ref": "#/definitions/v1.StatefulSetSpec" + }, + "status": { + "description": "Status is the current status of Pods in this StatefulSet. This data may be out of date by some window of time.", + "$ref": "#/definitions/v1.StatefulSetStatus" + } + } + }, + "v1.StatefulSetCondition": { + "description": "StatefulSetCondition describes the state of a statefulset at a certain point.", + "required": [ + "type", + "status" + ], + "properties": { + "lastTransitionTime": { + "description": "Last time the condition transitioned from one status to another.", + "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 statefulset condition.", + "type": "string" + } + } + }, + "v1.StatefulSetSpec": { + "description": "A StatefulSetSpec is the specification of a StatefulSet.", + "required": [ + "selector", + "template", + "serviceName" + ], + "properties": { + "podManagementPolicy": { + "description": "podManagementPolicy controls how pods are created during initial scale up, when replacing pods on nodes, or when scaling down. The default policy is `OrderedReady`, where pods are created in increasing order (pod-0, then pod-1, etc) and the controller will wait until each pod is ready before continuing. When scaling down, the pods are removed in the opposite order. The alternative policy is `Parallel` which will create pods in parallel to match the desired scale without waiting, and on scale down will delete all pods at once.", + "type": "string" + }, + "replicas": { + "description": "replicas is the desired number of replicas of the given Template. These are replicas in the sense that they are instantiations of the same Template, but individual replicas also have a consistent identity. If unspecified, defaults to 1.", + "type": "integer", + "format": "int32" + }, + "revisionHistoryLimit": { + "description": "revisionHistoryLimit is the maximum number of revisions that will be maintained in the StatefulSet's revision history. The revision history consists of all revisions not represented by a currently applied StatefulSetSpec version. The default value is 10.", + "type": "integer", + "format": "int32" + }, + "selector": { + "description": "selector is a label query over pods that should match the replica count. It must match the pod template's labels. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#label-selectors", + "$ref": "#/definitions/v1.LabelSelector" + }, + "serviceName": { + "description": "serviceName is the name of the service that governs this StatefulSet. This service must exist before the StatefulSet, and is responsible for the network identity of the set. Pods get DNS/hostnames that follow the pattern: pod-specific-string.serviceName.default.svc.cluster.local where \"pod-specific-string\" is managed by the StatefulSet controller.", + "type": "string" + }, + "template": { + "description": "template is the object that describes the pod that will be created if insufficient replicas are detected. Each pod stamped out by the StatefulSet will fulfill this Template, but have a unique identity from the rest of the StatefulSet.", + "$ref": "#/definitions/v1.PodTemplateSpec" + }, + "updateStrategy": { + "description": "updateStrategy indicates the StatefulSetUpdateStrategy that will be employed to update Pods in the StatefulSet when a revision is made to Template.", + "$ref": "#/definitions/v1.StatefulSetUpdateStrategy" + }, + "volumeClaimTemplates": { + "description": "volumeClaimTemplates is a list of claims that pods are allowed to reference. The StatefulSet controller is responsible for mapping network identities to claims in a way that maintains the identity of a pod. Every claim in this list must have at least one matching (by name) volumeMount in one container in the template. A claim in this list takes precedence over any volumes in the template, with the same name.", + "type": "array", + "items": { + "$ref": "#/definitions/v1.PersistentVolumeClaim" + } + } + } + }, + "v1.StatefulSetStatus": { + "description": "StatefulSetStatus represents the current state of a StatefulSet.", + "required": [ + "replicas" + ], + "properties": { + "collisionCount": { + "description": "collisionCount is the count of hash collisions for the StatefulSet. The StatefulSet controller uses this field as a collision avoidance mechanism when it needs to create the name for the newest ControllerRevision.", + "type": "integer", + "format": "int32" + }, + "conditions": { + "description": "Represents the latest available observations of a statefulset's current state.", + "type": "array", + "items": { + "$ref": "#/definitions/v1.StatefulSetCondition" + } + }, + "currentReplicas": { + "description": "currentReplicas is the number of Pods created by the StatefulSet controller from the StatefulSet version indicated by currentRevision.", + "type": "integer", + "format": "int32" + }, + "currentRevision": { + "description": "currentRevision, if not empty, indicates the version of the StatefulSet used to generate Pods in the sequence [0,currentReplicas).", + "type": "string" + }, + "observedGeneration": { + "description": "observedGeneration is the most recent generation observed for this StatefulSet. It corresponds to the StatefulSet's generation, which is updated on mutation by the API Server.", + "type": "integer", + "format": "int64" + }, + "readyReplicas": { + "description": "readyReplicas is the number of Pods created by the StatefulSet controller that have a Ready Condition.", + "type": "integer", + "format": "int32" + }, + "replicas": { + "description": "replicas is the number of Pods created by the StatefulSet controller.", + "type": "integer", + "format": "int32" + }, + "updateRevision": { + "description": "updateRevision, if not empty, indicates the version of the StatefulSet used to generate Pods in the sequence [replicas-updatedReplicas,replicas)", + "type": "string" + }, + "updatedReplicas": { + "description": "updatedReplicas is the number of Pods created by the StatefulSet controller from the StatefulSet version indicated by updateRevision.", + "type": "integer", + "format": "int32" + } + } + }, + "v1.StatefulSetUpdateStrategy": { + "description": "StatefulSetUpdateStrategy indicates the strategy that the StatefulSet controller will use to perform updates. It includes any additional parameters necessary to perform the update for the indicated strategy.", + "properties": { + "rollingUpdate": { + "description": "RollingUpdate is used to communicate parameters when Type is RollingUpdateStatefulSetStrategyType.", + "$ref": "#/definitions/v1.RollingUpdateStatefulSetStrategy" + }, + "type": { + "description": "Type indicates the type of the StatefulSetUpdateStrategy. Default is RollingUpdate.", + "type": "string" + } + } + }, + "v1.StorageOSVolumeSource": { + "description": "Represents a StorageOS persistent volume resource.", + "properties": { + "fsType": { + "description": "Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified.", + "type": "string" + }, + "readOnly": { + "description": "Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.", + "type": "boolean" + }, + "secretRef": { + "description": "SecretRef specifies the secret to use for obtaining the StorageOS API credentials. If not specified, default values will be attempted.", + "$ref": "#/definitions/v1.LocalObjectReference" + }, + "volumeName": { + "description": "VolumeName is the human-readable name of the StorageOS volume. Volume names are only unique within a namespace.", + "type": "string" + }, + "volumeNamespace": { + "description": "VolumeNamespace specifies the scope of the volume within StorageOS. If no namespace is specified then the Pod's namespace will be used. This allows the Kubernetes name scoping to be mirrored within StorageOS for tighter integration. Set VolumeName to any name to override the default behaviour. Set to \"default\" if you are not using namespaces within StorageOS. Namespaces that do not pre-exist within StorageOS will be created.", + "type": "string" + } + } + }, + "v1.Subject": { + "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.", + "required": [ + "kind", + "name" + ], + "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" + } + } + }, + "v1.Sysctl": { + "description": "Sysctl defines a kernel parameter to be set", + "required": [ + "name", + "value" + ], + "properties": { + "name": { + "description": "Name of a property to set", + "type": "string" + }, + "value": { + "description": "Value of a property to set", + "type": "string" + } + } + }, + "v1.TCPSocketAction": { + "description": "TCPSocketAction describes an action based on opening a socket", + "required": [ + "port" + ], + "properties": { + "host": { + "description": "Optional: Host name to connect to, defaults to the pod IP.", + "type": "string" + }, + "port": { + "description": "Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.", + "type": "string" + } + } + }, + "v1.Toleration": { + "description": "The pod this Toleration is attached to tolerates any taint that matches the triple \u003ckey,value,effect\u003e using the matching operator \u003coperator\u003e.", + "properties": { + "effect": { + "description": "Effect indicates the taint effect to match. Empty means match all taint effects. When specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute.", + "type": "string" + }, + "key": { + "description": "Key is the taint key that the toleration applies to. Empty means match all taint keys. If the key is empty, operator must be Exists; this combination means to match all values and all keys.", + "type": "string" + }, + "operator": { + "description": "Operator represents a key's relationship to the value. Valid operators are Exists and Equal. Defaults to Equal. Exists is equivalent to wildcard for value, so that a pod can tolerate all taints of a particular category.", + "type": "string" + }, + "tolerationSeconds": { + "description": "TolerationSeconds represents the period of time the toleration (which must be of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default, it is not set, which means tolerate the taint forever (do not evict). Zero and negative values will be treated as 0 (evict immediately) by the system.", + "type": "integer", + "format": "int64" + }, + "value": { + "description": "Value is the taint value the toleration matches to. If the operator is Exists, the value should be empty, otherwise just a regular string.", + "type": "string" + } + } + }, + "v1.TopologySpreadConstraint": { + "description": "TopologySpreadConstraint specifies how to spread matching pods among the given topology.", + "required": [ + "maxSkew", + "topologyKey", + "whenUnsatisfiable" + ], + "properties": { + "labelSelector": { + "description": "LabelSelector is used to find matching pods. Pods that match this label selector are counted to determine the number of pods in their corresponding topology domain.", + "$ref": "#/definitions/v1.LabelSelector" + }, + "maxSkew": { + "description": "MaxSkew describes the degree to which pods may be unevenly distributed. It's the maximum permitted difference between the number of matching pods in any two topology domains of a given topology type. For example, in a 3-zone cluster, MaxSkew is set to 1, and pods with the same labelSelector spread as 1/1/0: ", + "type": "integer", + "format": "int32" + }, + "topologyKey": { + "description": "TopologyKey is the key of node labels. Nodes that have a label with this key and identical values are considered to be in the same topology. We consider each \u003ckey, value\u003e as a \"bucket\", and try to put balanced number of pods into each bucket. It's a required field.", + "type": "string" + }, + "whenUnsatisfiable": { + "description": "WhenUnsatisfiable indicates how to deal with a pod if it doesn't satisfy the spread constraint. - DoNotSchedule (default) tells the scheduler not to schedule it - ScheduleAnyway tells the scheduler to still schedule it It's considered as \"Unsatisfiable\" if and only if placing incoming pod on any topology violates \"MaxSkew\". For example, in a 3-zone cluster, MaxSkew is set to 1, and pods with the same labelSelector spread as 3/1/1: ", + "type": "string" + } + } + }, + "v1.TypedLocalObjectReference": { + "description": "TypedLocalObjectReference contains enough information to let you locate the typed referenced object inside the same namespace.", + "required": [ + "apiGroup", + "kind", + "name" + ], + "properties": { + "apiGroup": { + "description": "APIGroup is the group for the resource being referenced. If APIGroup is not specified, the specified Kind must be in the core API group. For any other third-party types, APIGroup is required.", + "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" + } + } + }, + "v1.Volume": { + "description": "Volume represents a named volume in a pod that may be accessed by any container in the pod.", + "required": [ + "name" + ], + "properties": { + "awsElasticBlockStore": { + "description": "AWSElasticBlockStore represents an AWS Disk resource that is attached to a kubelet's host machine and then exposed to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore", + "$ref": "#/definitions/v1.AWSElasticBlockStoreVolumeSource" + }, + "azureDisk": { + "description": "AzureDisk represents an Azure Data Disk mount on the host and bind mount to the pod.", + "$ref": "#/definitions/v1.AzureDiskVolumeSource" + }, + "azureFile": { + "description": "AzureFile represents an Azure File Service mount on the host and bind mount to the pod.", + "$ref": "#/definitions/v1.AzureFileVolumeSource" + }, + "cephfs": { + "description": "CephFS represents a Ceph FS mount on the host that shares a pod's lifetime", + "$ref": "#/definitions/v1.CephFSVolumeSource" + }, + "cinder": { + "description": "Cinder represents a cinder volume attached and mounted on kubelets host machine. More info: https://examples.k8s.io/mysql-cinder-pd/README.md", + "$ref": "#/definitions/v1.CinderVolumeSource" + }, + "configMap": { + "description": "ConfigMap represents a configMap that should populate this volume", + "$ref": "#/definitions/v1.ConfigMapVolumeSource" + }, + "csi": { + "description": "CSI (Container Storage Interface) represents storage that is handled by an external CSI driver (Alpha feature).", + "$ref": "#/definitions/v1.CSIVolumeSource" + }, + "downwardAPI": { + "description": "DownwardAPI represents downward API about the pod that should populate this volume", + "$ref": "#/definitions/v1.DownwardAPIVolumeSource" + }, + "emptyDir": { + "description": "EmptyDir represents a temporary directory that shares a pod's lifetime. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir", + "$ref": "#/definitions/v1.EmptyDirVolumeSource" + }, + "fc": { + "description": "FC represents a Fibre Channel resource that is attached to a kubelet's host machine and then exposed to the pod.", + "$ref": "#/definitions/v1.FCVolumeSource" + }, + "flexVolume": { + "description": "FlexVolume represents a generic volume resource that is provisioned/attached using an exec based plugin.", + "$ref": "#/definitions/v1.FlexVolumeSource" + }, + "flocker": { + "description": "Flocker represents a Flocker volume attached to a kubelet's host machine. This depends on the Flocker control service being running", + "$ref": "#/definitions/v1.FlockerVolumeSource" + }, + "gcePersistentDisk": { + "description": "GCEPersistentDisk represents a GCE Disk resource that is attached to a kubelet's host machine and then exposed to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk", + "$ref": "#/definitions/v1.GCEPersistentDiskVolumeSource" + }, + "gitRepo": { + "description": "GitRepo represents a git repository at a particular revision. DEPRECATED: GitRepo is deprecated. To provision a container with a git repo, mount an EmptyDir into an InitContainer that clones the repo using git, then mount the EmptyDir into the Pod's container.", + "$ref": "#/definitions/v1.GitRepoVolumeSource" + }, + "glusterfs": { + "description": "Glusterfs represents a Glusterfs mount on the host that shares a pod's lifetime. More info: https://examples.k8s.io/volumes/glusterfs/README.md", + "$ref": "#/definitions/v1.GlusterfsVolumeSource" + }, + "hostPath": { + "description": "HostPath represents a pre-existing file or directory on the host machine that is directly exposed to the container. This is generally used for system agents or other privileged things that are allowed to see the host machine. Most containers will NOT need this. More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath", + "$ref": "#/definitions/v1.HostPathVolumeSource" + }, + "iscsi": { + "description": "ISCSI represents an ISCSI Disk resource that is attached to a kubelet's host machine and then exposed to the pod. More info: https://examples.k8s.io/volumes/iscsi/README.md", + "$ref": "#/definitions/v1.ISCSIVolumeSource" + }, + "name": { + "description": "Volume's name. Must be a DNS_LABEL and unique within the pod. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", + "type": "string" + }, + "nfs": { + "description": "NFS represents an NFS mount on the host that shares a pod's lifetime More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs", + "$ref": "#/definitions/v1.NFSVolumeSource" + }, + "persistentVolumeClaim": { + "description": "PersistentVolumeClaimVolumeSource represents a reference to a PersistentVolumeClaim in the same namespace. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims", + "$ref": "#/definitions/v1.PersistentVolumeClaimVolumeSource" + }, + "photonPersistentDisk": { + "description": "PhotonPersistentDisk represents a PhotonController persistent disk attached and mounted on kubelets host machine", + "$ref": "#/definitions/v1.PhotonPersistentDiskVolumeSource" + }, + "portworxVolume": { + "description": "PortworxVolume represents a portworx volume attached and mounted on kubelets host machine", + "$ref": "#/definitions/v1.PortworxVolumeSource" + }, + "projected": { + "description": "Items for all in one resources secrets, configmaps, and downward API", + "$ref": "#/definitions/v1.ProjectedVolumeSource" + }, + "quobyte": { + "description": "Quobyte represents a Quobyte mount on the host that shares a pod's lifetime", + "$ref": "#/definitions/v1.QuobyteVolumeSource" + }, + "rbd": { + "description": "RBD represents a Rados Block Device mount on the host that shares a pod's lifetime. More info: https://examples.k8s.io/volumes/rbd/README.md", + "$ref": "#/definitions/v1.RBDVolumeSource" + }, + "scaleIO": { + "description": "ScaleIO represents a ScaleIO persistent volume attached and mounted on Kubernetes nodes.", + "$ref": "#/definitions/v1.ScaleIOVolumeSource" + }, + "secret": { + "description": "Secret represents a secret that should populate this volume. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret", + "$ref": "#/definitions/v1.SecretVolumeSource" + }, + "storageos": { + "description": "StorageOS represents a StorageOS volume attached and mounted on Kubernetes nodes.", + "$ref": "#/definitions/v1.StorageOSVolumeSource" + }, + "vsphereVolume": { + "description": "VsphereVolume represents a vSphere volume attached and mounted on kubelets host machine", + "$ref": "#/definitions/v1.VsphereVirtualDiskVolumeSource" + } + } + }, + "v1.VolumeDevice": { + "description": "volumeDevice describes a mapping of a raw block device within a container.", + "required": [ + "name", + "devicePath" + ], + "properties": { + "devicePath": { + "description": "devicePath is the path inside of the container that the device will be mapped to.", + "type": "string" + }, + "name": { + "description": "name must match the name of a persistentVolumeClaim in the pod", + "type": "string" + } + } + }, + "v1.VolumeMount": { + "description": "VolumeMount describes a mounting of a Volume within a container.", + "required": [ + "name", + "mountPath" + ], + "properties": { + "mountPath": { + "description": "Path within the container at which the volume should be mounted. Must not contain ':'.", + "type": "string" + }, + "mountPropagation": { + "description": "mountPropagation determines how mounts are propagated from the host to container and the other way around. When not set, MountPropagationNone is used. This field is beta in 1.10.", + "type": "string" + }, + "name": { + "description": "This must match the Name of a Volume.", + "type": "string" + }, + "readOnly": { + "description": "Mounted read-only if true, read-write otherwise (false or unspecified). Defaults to false.", + "type": "boolean" + }, + "subPath": { + "description": "Path within the volume from which the container's volume should be mounted. Defaults to \"\" (volume's root).", + "type": "string" + }, + "subPathExpr": { + "description": "Expanded path within the volume from which the container's volume should be mounted. Behaves similarly to SubPath but environment variable references $(VAR_NAME) are expanded using the container's environment. Defaults to \"\" (volume's root). SubPathExpr and SubPath are mutually exclusive.", + "type": "string" + } + } + }, + "v1.VolumeProjection": { + "description": "Projection that may be projected along with other supported volume types", + "properties": { + "configMap": { + "description": "information about the configMap data to project", + "$ref": "#/definitions/v1.ConfigMapProjection" + }, + "downwardAPI": { + "description": "information about the downwardAPI data to project", + "$ref": "#/definitions/v1.DownwardAPIProjection" + }, + "secret": { + "description": "information about the secret data to project", + "$ref": "#/definitions/v1.SecretProjection" + }, + "serviceAccountToken": { + "description": "information about the serviceAccountToken data to project", + "$ref": "#/definitions/v1.ServiceAccountTokenProjection" + } + } + }, + "v1.VsphereVirtualDiskVolumeSource": { + "description": "Represents a vSphere volume resource.", + "required": [ + "volumePath" + ], + "properties": { + "fsType": { + "description": "Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified.", + "type": "string" + }, + "storagePolicyID": { + "description": "Storage Policy Based Management (SPBM) profile ID associated with the StoragePolicyName.", + "type": "string" + }, + "storagePolicyName": { + "description": "Storage Policy Based Management (SPBM) profile name.", + "type": "string" + }, + "volumePath": { + "description": "Path that identifies vSphere volume vmdk", + "type": "string" + } + } + }, + "v1.WeightedPodAffinityTerm": { + "description": "The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)", + "required": [ + "weight", + "podAffinityTerm" + ], + "properties": { + "podAffinityTerm": { + "description": "Required. A pod affinity term, associated with the corresponding weight.", + "$ref": "#/definitions/v1.PodAffinityTerm" + }, + "weight": { + "description": "weight associated with matching the corresponding podAffinityTerm, in the range 1-100.", + "type": "integer", + "format": "int32" + } + } + }, + "v1.WindowsSecurityContextOptions": { + "description": "WindowsSecurityContextOptions contain Windows-specific options and credentials.", + "properties": { + "gmsaCredentialSpec": { + "description": "GMSACredentialSpec is where the GMSA admission webhook (https://github.com/kubernetes-sigs/windows-gmsa) inlines the contents of the GMSA credential spec named by the GMSACredentialSpecName field.", + "type": "string" + }, + "gmsaCredentialSpecName": { + "description": "GMSACredentialSpecName is the name of the GMSA credential spec to use.", + "type": "string" + }, + "runAsUserName": { + "description": "The UserName in Windows to run the entrypoint of the container process. Defaults to the user specified in image metadata if unspecified. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.", + "type": "string" + } + } + }, + "v1alpha1.APIResponse": { + "properties": { + "histogram": { + "description": "histogram results", + "$ref": "#/definitions/events.Histogram" + }, + "query": { + "description": "query results", + "$ref": "#/definitions/events.Events" + }, + "statistics": { + "description": "statistics results", + "$ref": "#/definitions/events.Statistics" + } + } + }, + "v1alpha1.WorkspaceSpec": { + "properties": { + "manager": { + "type": "string" + }, + "networkIsolation": { + "type": "boolean" + } + } + }, + "v1alpha2.APIResponse": { + "properties": { + "histogram": { + "description": "histogram results", + "$ref": "#/definitions/logging.Histogram" + }, + "query": { + "description": "query results", + "$ref": "#/definitions/logging.Logs" + }, + "statistics": { + "description": "statistics results", + "$ref": "#/definitions/logging.Statistics" + } + } + }, + "v1alpha2.BadRequestError": { + "required": [ + "status", + "reason" + ], + "properties": { + "reason": { + }, + "status": { + "type": "integer", + "format": "int32" + } + } + }, + "v1alpha2.Column": { + "required": [ + "id", + "label", + "dataType" + ], + "properties": { + "dataType": { + "type": "string" + }, + "id": { + "type": "string" + }, + "label": { + "type": "string" + } + } + }, + "v1alpha2.ComponentStatus": { + "required": [ + "name", + "namespace", + "selfLink", + "label", + "startedAt", + "totalBackends", + "healthyBackends" + ], + "properties": { + "healthyBackends": { + "description": "the number of healthy backend components", + "type": "integer", + "format": "int32" + }, + "label": { + "description": "labels", + "$ref": "#/definitions/v1alpha2.ComponentStatus.label" + }, + "name": { + "description": "component name", + "type": "string" + }, + "namespace": { + "description": "the name of the namespace", + "type": "string" + }, + "selfLink": { + "description": "self link", + "type": "string" + }, + "startedAt": { + "description": "started time", + "type": "string", + "format": "date-time" + }, + "totalBackends": { + "description": "the total replicas of each backend system component", + "type": "integer", + "format": "int32" + } + } + }, + "v1alpha2.ComponentStatus.label": {}, + "v1alpha2.Connection": { + "required": [ + "id", + "nodeId", + "label" + ], + "properties": { + "id": { + "type": "string" + }, + "label": { + "type": "string" + }, + "labelMinor": { + "type": "string" + }, + "metadata": { + "type": "array", + "items": { + "$ref": "#/definitions/v1alpha2.MetadataRow" + } + }, + "nodeId": { + "type": "string" + } + } + }, + "v1alpha2.ConnectionsSummary": { + "required": [ + "id", + "topologyId", + "label", + "columns", + "connections" + ], + "properties": { + "columns": { + "type": "array", + "items": { + "$ref": "#/definitions/v1alpha2.Column" + } + }, + "connections": { + "type": "array", + "items": { + "$ref": "#/definitions/v1alpha2.Connection" + } + }, + "id": { + "type": "string" + }, + "label": { + "type": "string" + }, + "topologyId": { + "type": "string" + } + } + }, + "v1alpha2.Control": { + "required": [ + "id", + "human", + "icon", + "rank" + ], + "properties": { + "confirmation": { + "type": "string" + }, + "human": { + "type": "string" + }, + "icon": { + "type": "string" + }, + "id": { + "type": "string" + }, + "rank": { + "type": "integer", + "format": "int32" + } + } + }, + "v1alpha2.ControlInstance": { + "required": [ + "ProbeID", + "NodeID", + "Control" + ], + "properties": { + "Control": { + "$ref": "#/definitions/v1alpha2.Control" + }, + "NodeID": { + "type": "string" + }, + "ProbeID": { + "type": "string" + } + } + }, + "v1alpha2.GlobalRole": { + "required": [ + "rules" + ], + "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": { + "$ref": "#/definitions/v1.ObjectMeta" + }, + "rules": { + "type": "array", + "items": { + "$ref": "#/definitions/v1.PolicyRule" + } + } + } + }, + "v1alpha2.Group": { + "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": { + "$ref": "#/definitions/v1.ObjectMeta" + }, + "spec": { + "$ref": "#/definitions/v1alpha2.GroupSpec" + }, + "status": { + "$ref": "#/definitions/v1alpha2.GroupStatus" + } + } + }, + "v1alpha2.GroupBinding": { + "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": { + "$ref": "#/definitions/v1alpha2.GroupRef" + }, + "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": { + "$ref": "#/definitions/v1.ObjectMeta" + }, + "users": { + "type": "array", + "items": { + "type": "string" + } + } + } + }, + "v1alpha2.GroupMember": { + "required": [ + "userName", + "groupName" + ], + "properties": { + "groupName": { + "type": "string" + }, + "userName": { + "type": "string" + } + } + }, + "v1alpha2.GroupRef": { + "properties": { + "apiGroup": { + "type": "string" + }, + "kind": { + "type": "string" + }, + "name": { + "type": "string" + } + } + }, + "v1alpha2.GroupSpec": {}, + "v1alpha2.GroupStatus": {}, + "v1alpha2.HealthStatus": { + "required": [ + "kubesphereStatus", + "nodeStatus" + ], + "properties": { + "kubesphereStatus": { + "description": "kubesphere components status", + "type": "array", + "items": { + "$ref": "#/definitions/v1alpha2.ComponentStatus" + } + }, + "nodeStatus": { + "description": "nodes status", + "$ref": "#/definitions/v1alpha2.NodeStatus" + } + } + }, + "v1alpha2.Member": { + "required": [ + "username", + "roleRef" + ], + "properties": { + "roleRef": { + "type": "string" + }, + "username": { + "type": "string" + } + } + }, + "v1alpha2.MetadataRow": { + "required": [ + "id", + "label", + "value" + ], + "properties": { + "dataType": { + "type": "string" + }, + "id": { + "type": "string" + }, + "label": { + "type": "string" + }, + "priority": { + "type": "number", + "format": "double" + }, + "truncate": { + "type": "integer", + "format": "int32" + }, + "value": { + "type": "string" + } + } + }, + "v1alpha2.Metric": { + "required": [ + "min", + "max" + ], + "properties": { + "max": { + "type": "number", + "format": "double" + }, + "min": { + "type": "number", + "format": "double" + }, + "samples": { + "type": "array", + "items": { + "$ref": "#/definitions/v1alpha2.Sample" + } + } + } + }, + "v1alpha2.MetricRow": { + "required": [ + "ID", + "Label", + "Format", + "Group", + "Value", + "ValueEmpty", + "Priority", + "URL", + "Metric" + ], + "properties": { + "Format": { + "type": "string" + }, + "Group": { + "type": "string" + }, + "ID": { + "type": "string" + }, + "Label": { + "type": "string" + }, + "Metric": { + "$ref": "#/definitions/v1alpha2.Metric" + }, + "Priority": { + "type": "number", + "format": "double" + }, + "URL": { + "type": "string" + }, + "Value": { + "type": "number", + "format": "double" + }, + "ValueEmpty": { + "type": "boolean" + } + } + }, + "v1alpha2.Node": { + "required": [ + "id", + "labelMinor", + "rank", + "label", + "controls" + ], + "properties": { + "adjacency": { + "type": "array", + "items": { + "type": "string" + } + }, + "children": { + "type": "array", + "items": { + "$ref": "#/definitions/v1alpha2.NodeSummaryGroup" + } + }, + "connections": { + "type": "array", + "items": { + "$ref": "#/definitions/v1alpha2.ConnectionsSummary" + } + }, + "controls": { + "type": "array", + "items": { + "$ref": "#/definitions/v1alpha2.ControlInstance" + } + }, + "id": { + "type": "string" + }, + "label": { + "type": "string" + }, + "labelMinor": { + "type": "string" + }, + "metadata": { + "type": "array", + "items": { + "$ref": "#/definitions/v1alpha2.MetadataRow" + } + }, + "metrics": { + "type": "array", + "items": { + "$ref": "#/definitions/v1alpha2.MetricRow" + } + }, + "parents": { + "type": "array", + "items": { + "$ref": "#/definitions/v1alpha2.Parent" + } + }, + "pseudo": { + "type": "boolean" + }, + "rank": { + "type": "string" + }, + "shape": { + "type": "string" + }, + "stack": { + "type": "boolean" + }, + "tables": { + "type": "array", + "items": { + "$ref": "#/definitions/v1alpha2.Table" + } + }, + "tag": { + "type": "string" + } + } + }, + "v1alpha2.NodeResponse": { + "required": [ + "node" + ], + "properties": { + "node": { + "$ref": "#/definitions/v1alpha2.Node" + } + } + }, + "v1alpha2.NodeStatus": { + "required": [ + "totalNodes", + "healthyNodes" + ], + "properties": { + "healthyNodes": { + "description": "the number of healthy nodes", + "type": "integer", + "format": "int32" + }, + "totalNodes": { + "description": "total number of nodes", + "type": "integer", + "format": "int32" + } + } + }, + "v1alpha2.NodeSummary": { + "required": [ + "id", + "label", + "labelMinor", + "rank" + ], + "properties": { + "adjacency": { + "type": "array", + "items": { + "type": "string" + } + }, + "id": { + "type": "string" + }, + "label": { + "type": "string" + }, + "labelMinor": { + "type": "string" + }, + "metadata": { + "type": "array", + "items": { + "$ref": "#/definitions/v1alpha2.MetadataRow" + } + }, + "metrics": { + "type": "array", + "items": { + "$ref": "#/definitions/v1alpha2.MetricRow" + } + }, + "parents": { + "type": "array", + "items": { + "$ref": "#/definitions/v1alpha2.Parent" + } + }, + "pseudo": { + "type": "boolean" + }, + "rank": { + "type": "string" + }, + "shape": { + "type": "string" + }, + "stack": { + "type": "boolean" + }, + "tables": { + "type": "array", + "items": { + "$ref": "#/definitions/v1alpha2.Table" + } + }, + "tag": { + "type": "string" + } + } + }, + "v1alpha2.NodeSummaryGroup": { + "required": [ + "id", + "label", + "nodes", + "topologyId", + "columns" + ], + "properties": { + "columns": { + "type": "array", + "items": { + "$ref": "#/definitions/v1alpha2.Column" + } + }, + "id": { + "type": "string" + }, + "label": { + "type": "string" + }, + "nodes": { + "type": "array", + "items": { + "$ref": "#/definitions/v1alpha2.NodeSummary" + } + }, + "topologyId": { + "type": "string" + } + } + }, + "v1alpha2.NotFoundError": { + "required": [ + "status", + "reason" + ], + "properties": { + "reason": { + }, + "status": { + "type": "integer", + "format": "int32" + } + } + }, + "v1alpha2.Parent": { + "required": [ + "id", + "label", + "topologyId" + ], + "properties": { + "id": { + "type": "string" + }, + "label": { + "type": "string" + }, + "topologyId": { + "type": "string" + } + } + }, + "v1alpha2.PasswordReset": { + "required": [ + "currentPassword", + "password" + ], + "properties": { + "currentPassword": { + "type": "string" + }, + "password": { + "type": "string" + } + } + }, + "v1alpha2.Row": { + "required": [ + "id", + "entries" + ], + "properties": { + "entries": { + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "id": { + "type": "string" + } + } + }, + "v1alpha2.Sample": { + "required": [ + "date", + "value" + ], + "properties": { + "date": { + "type": "string", + "format": "date-time" + }, + "value": { + "type": "number", + "format": "double" + } + } + }, + "v1alpha2.Table": { + "required": [ + "id", + "label", + "type", + "columns", + "rows" + ], + "properties": { + "columns": { + "type": "array", + "items": { + "$ref": "#/definitions/v1alpha2.Column" + } + }, + "id": { + "type": "string" + }, + "label": { + "type": "string" + }, + "rows": { + "type": "array", + "items": { + "$ref": "#/definitions/v1alpha2.Row" + } + }, + "truncationCount": { + "type": "integer", + "format": "int32" + }, + "type": { + "type": "string" + } + } + }, + "v1alpha2.TopologyResponse": { + "required": [ + "nodes" + ], + "properties": { + "nodes": { + "type": "object", + "additionalProperties": { + "$ref": "#/definitions/v1alpha2.NodeSummary" + } + } + } + }, + "v1alpha2.User": { + "required": [ + "spec" + ], + "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": { + "$ref": "#/definitions/v1.ObjectMeta" + }, + "spec": { + "$ref": "#/definitions/v1alpha2.UserSpec" + }, + "status": { + "$ref": "#/definitions/v1alpha2.UserStatus" + } + } + }, + "v1alpha2.UserSpec": { + "required": [ + "email" + ], + "properties": { + "description": { + "type": "string" + }, + "displayName": { + "type": "string" + }, + "email": { + "type": "string" + }, + "groups": { + "type": "array", + "items": { + "type": "string" + } + }, + "lang": { + "type": "string" + }, + "password": { + "type": "string" + } + } + }, + "v1alpha2.UserStatus": { + "properties": { + "lastLoginTime": { + "type": "string" + }, + "lastTransitionTime": { + "type": "string" + }, + "reason": { + "type": "string" + }, + "state": { + "type": "string" + } + } + }, + "v1alpha2.WorkspaceRole": { + "required": [ + "rules" + ], + "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": { + "$ref": "#/definitions/v1.ObjectMeta" + }, + "rules": { + "type": "array", + "items": { + "$ref": "#/definitions/v1.PolicyRule" + } + } + } + }, + "v1alpha2.WorkspaceRoleBinding": { + "required": [ + "roleRef" + ], + "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": { + "$ref": "#/definitions/v1.ObjectMeta" + }, + "roleRef": { + "$ref": "#/definitions/v1.RoleRef" + }, + "subjects": { + "type": "array", + "items": { + "$ref": "#/definitions/v1.Subject" + } + } + } + }, + "v1alpha2.WorkspaceTemplate": { + "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": { + "$ref": "#/definitions/v1.ObjectMeta" + }, + "spec": { + "$ref": "#/definitions/v1beta1.FederatedWorkspaceSpec" + } + } + }, + "v1alpha2.appHealthResponse": {}, + "v1alpha2.graphResponse": {}, + "v1alpha2.metricsResponse": {}, + "v1alpha2.namespaceAppHealthResponse": {}, + "v1alpha2.serviceHealthResponse": {}, + "v1alpha2.workloadHealthResponse": {}, + "v1alpha3.BitbucketServerSource": { + "properties": { + "api_uri": { + "description": "The api url can specify the location of the github apiserver.For private cloud configuration", + "type": "string" + }, + "credential_id": { + "description": "credential id to access github source", + "type": "string" + }, + "discover_branches": { + "description": "Discover branch configuration", + "type": "integer", + "format": "int32" + }, + "discover_pr_from_forks": { + "description": "Discover fork PR configuration", + "$ref": "#/definitions/v1alpha3.DiscoverPRFromForks" + }, + "discover_pr_from_origin": { + "description": "Discover origin PR configuration", + "type": "integer", + "format": "int32" + }, + "discover_tags": { + "description": "Discover tag configuration", + "type": "boolean" + }, + "git_clone_option": { + "description": "advavced git clone options", + "$ref": "#/definitions/v1alpha3.GitCloneOption" + }, + "owner": { + "description": "owner of github repo", + "type": "string" + }, + "regex_filter": { + "description": "Regex used to match the name of the branch that needs to be run", + "type": "string" + }, + "repo": { + "description": "repo name of github repo", + "type": "string" + }, + "scm_id": { + "description": "uid of scm", + "type": "string" + } + } + }, + "v1alpha3.DevOpsProject": { + "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": { + "$ref": "#/definitions/v1.ObjectMeta" + }, + "spec": { + "$ref": "#/definitions/v1alpha3.DevOpsProjectSpec" + }, + "status": { + "$ref": "#/definitions/v1alpha3.DevOpsProjectStatus" + } + } + }, + "v1alpha3.DevOpsProjectSpec": {}, + "v1alpha3.DevOpsProjectStatus": { + "properties": { + "adminNamespace": { + "type": "string" + } + } + }, + "v1alpha3.DiscarderProperty": { + "properties": { + "days_to_keep": { + "description": "days to keep pipeline", + "type": "string" + }, + "num_to_keep": { + "description": "nums to keep pipeline", + "type": "string" + } + } + }, + "v1alpha3.DiscoverPRFromForks": { + "properties": { + "strategy": { + "description": "github discover strategy", + "type": "integer", + "format": "int32" + }, + "trust": { + "description": "trust user type", + "type": "integer", + "format": "int32" + } + } + }, + "v1alpha3.GitCloneOption": { + "properties": { + "depth": { + "description": "git clone depth", + "type": "integer", + "format": "int32" + }, + "shallow": { + "description": "Whether to use git shallow clone", + "type": "boolean" + }, + "timeout": { + "description": "git clone timeout mins", + "type": "integer", + "format": "int32" + } + } + }, + "v1alpha3.GitSource": { + "properties": { + "credential_id": { + "description": "credential id to access git source", + "type": "string" + }, + "discover_branches": { + "description": "Whether to discover a branch", + "type": "boolean" + }, + "discover_tags": { + "description": "Discover tags configuration", + "type": "boolean" + }, + "git_clone_option": { + "description": "advavced git clone options", + "$ref": "#/definitions/v1alpha3.GitCloneOption" + }, + "regex_filter": { + "description": "Regex used to match the name of the branch that needs to be run", + "type": "string" + }, + "scm_id": { + "description": "uid of scm", + "type": "string" + }, + "url": { + "description": "url of git source", + "type": "string" + } + } + }, + "v1alpha3.GithubSource": { + "properties": { + "api_uri": { + "description": "The api url can specify the location of the github apiserver.For private cloud configuration", + "type": "string" + }, + "credential_id": { + "description": "credential id to access github source", + "type": "string" + }, + "discover_branches": { + "description": "Discover branch configuration", + "type": "integer", + "format": "int32" + }, + "discover_pr_from_forks": { + "description": "Discover fork PR configuration", + "$ref": "#/definitions/v1alpha3.DiscoverPRFromForks" + }, + "discover_pr_from_origin": { + "description": "Discover origin PR configuration", + "type": "integer", + "format": "int32" + }, + "discover_tags": { + "description": "Discover tag configuration", + "type": "boolean" + }, + "git_clone_option": { + "description": "advavced git clone options", + "$ref": "#/definitions/v1alpha3.GitCloneOption" + }, + "owner": { + "description": "owner of github repo", + "type": "string" + }, + "regex_filter": { + "description": "Regex used to match the name of the branch that needs to be run", + "type": "string" + }, + "repo": { + "description": "repo name of github repo", + "type": "string" + }, + "scm_id": { + "description": "uid of scm", + "type": "string" + } + } + }, + "v1alpha3.GitlabSource": { + "properties": { + "api_uri": { + "description": "The api url can specify the location of the gitlab apiserver.For private cloud configuration", + "type": "string" + }, + "credential_id": { + "description": "credential id to access gitlab source", + "type": "string" + }, + "discover_branches": { + "description": "Discover branch configuration", + "type": "integer", + "format": "int32" + }, + "discover_pr_from_forks": { + "description": "Discover fork PR configuration", + "$ref": "#/definitions/v1alpha3.DiscoverPRFromForks" + }, + "discover_pr_from_origin": { + "description": "Discover origin PR configuration", + "type": "integer", + "format": "int32" + }, + "discover_tags": { + "description": "Discover tags configuration", + "type": "boolean" + }, + "git_clone_option": { + "description": "advavced git clone options", + "$ref": "#/definitions/v1alpha3.GitCloneOption" + }, + "owner": { + "description": "owner of gitlab repo", + "type": "string" + }, + "regex_filter": { + "description": "Regex used to match the name of the branch that needs to be run", + "type": "string" + }, + "repo": { + "description": "repo name of gitlab repo", + "type": "string" + }, + "scm_id": { + "description": "uid of scm", + "type": "string" + }, + "server_name": { + "description": "the name of gitlab server which was configured in jenkins", + "type": "string" + } + } + }, + "v1alpha3.MultiBranchJobTrigger": { + "properties": { + "create_action_job_to_trigger": { + "description": "pipeline name to trigger", + "type": "string" + }, + "delete_action_job_to_trigger": { + "description": "pipeline name to trigger", + "type": "string" + } + } + }, + "v1alpha3.MultiBranchPipeline": { + "required": [ + "name", + "source_type", + "script_path" + ], + "properties": { + "bitbucket_server_source": { + "description": "bitbucket server scm defile", + "$ref": "#/definitions/v1alpha3.BitbucketServerSource" + }, + "description": { + "description": "description of pipeline", + "type": "string" + }, + "discarder": { + "description": "Discarder of pipeline, managing when to drop a pipeline", + "$ref": "#/definitions/v1alpha3.DiscarderProperty" + }, + "git_source": { + "description": "git scm define", + "$ref": "#/definitions/v1alpha3.GitSource" + }, + "github_source": { + "description": "github scm define", + "$ref": "#/definitions/v1alpha3.GithubSource" + }, + "gitlab_source": { + "description": "gitlab scm define", + "$ref": "#/definitions/v1alpha3.GitlabSource" + }, + "multibranch_job_trigger": { + "description": "Pipeline tasks that need to be triggered when branch creation/deletion", + "$ref": "#/definitions/v1alpha3.MultiBranchJobTrigger" + }, + "name": { + "description": "name of pipeline", + "type": "string" + }, + "script_path": { + "description": "script path in scm", + "type": "string" + }, + "single_svn_source": { + "description": "single branch svn scm define", + "$ref": "#/definitions/v1alpha3.SingleSvnSource" + }, + "source_type": { + "description": "type of scm, such as github/git/svn", + "type": "string" + }, + "svn_source": { + "description": "multi branch svn scm define", + "$ref": "#/definitions/v1alpha3.SvnSource" + }, + "timer_trigger": { + "description": "Timer to trigger pipeline run", + "$ref": "#/definitions/v1alpha3.TimerTrigger" + } + } + }, + "v1alpha3.NoScmPipeline": { + "required": [ + "name" + ], + "properties": { + "description": { + "description": "description of pipeline", + "type": "string" + }, + "disable_concurrent": { + "description": "Whether to prohibit the pipeline from running in parallel", + "type": "boolean" + }, + "discarder": { + "description": "Discarder of pipeline, managing when to drop a pipeline", + "$ref": "#/definitions/v1alpha3.DiscarderProperty" + }, + "jenkinsfile": { + "description": "Jenkinsfile's content'", + "type": "string" + }, + "name": { + "description": "name of pipeline", + "type": "string" + }, + "parameters": { + "description": "Parameters define of pipeline,user could pass param when run pipeline", + "type": "array", + "items": { + "$ref": "#/definitions/v1alpha3.Parameter" + } + }, + "remote_trigger": { + "description": "Remote api define to trigger pipeline run", + "$ref": "#/definitions/v1alpha3.RemoteTrigger" + }, + "timer_trigger": { + "description": "Timer to trigger pipeline run", + "$ref": "#/definitions/v1alpha3.TimerTrigger" + } + } + }, + "v1alpha3.Parameter": { + "required": [ + "name", + "type" + ], + "properties": { + "default_value": { + "description": "default value of param", + "type": "string" + }, + "description": { + "description": "description of pipeline", + "type": "string" + }, + "name": { + "description": "name of param", + "type": "string" + }, + "type": { + "description": "type of param", + "type": "string" + } + } + }, + "v1alpha3.Pipeline": { + "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": { + "$ref": "#/definitions/v1.ObjectMeta" + }, + "spec": { + "$ref": "#/definitions/v1alpha3.PipelineSpec" + }, + "status": { + "$ref": "#/definitions/v1alpha3.PipelineStatus" + } + } + }, + "v1alpha3.PipelineSpec": { + "required": [ + "type" + ], + "properties": { + "multi_branch_pipeline": { + "description": "in scm pipeline structs", + "$ref": "#/definitions/v1alpha3.MultiBranchPipeline" + }, + "pipeline": { + "description": "no scm pipeline structs", + "$ref": "#/definitions/v1alpha3.NoScmPipeline" + }, + "type": { + "description": "type of devops pipeline, in scm or no scm", + "type": "string" + } + } + }, + "v1alpha3.PipelineStatus": {}, + "v1alpha3.RemoteTrigger": { + "properties": { + "token": { + "description": "remote trigger token", + "type": "string" + } + } + }, + "v1alpha3.SingleSvnSource": { + "properties": { + "credential_id": { + "description": "credential id to access svn source", + "type": "string" + }, + "remote": { + "description": "remote address url", + "type": "string" + }, + "scm_id": { + "description": "uid of scm", + "type": "string" + } + } + }, + "v1alpha3.SvnSource": { + "properties": { + "credential_id": { + "description": "credential id to access svn source", + "type": "string" + }, + "excludes": { + "description": "branches do not run pipeline", + "type": "string" + }, + "includes": { + "description": "branches to run pipeline", + "type": "string" + }, + "remote": { + "description": "remote address url", + "type": "string" + }, + "scm_id": { + "description": "uid of scm", + "type": "string" + } + } + }, + "v1alpha3.TimerTrigger": { + "properties": { + "cron": { + "description": "jenkins cron script", + "type": "string" + }, + "interval": { + "description": "interval ms", + "type": "string" + } + } + }, + "v1beta1.ClusterOverride": { + "required": [ + "path" + ], + "properties": { + "op": { + "type": "string" + }, + "path": { + "type": "string" + }, + "value": { + "type": "string" + } + } + }, + "v1beta1.FederatedWorkspaceSpec": { + "required": [ + "template", + "placement" + ], + "properties": { + "overrides": { + "type": "array", + "items": { + "$ref": "#/definitions/v1beta1.GenericOverrideItem" + } + }, + "placement": { + "$ref": "#/definitions/v1beta1.GenericPlacementFields" + }, + "template": { + "$ref": "#/definitions/v1beta1.WorkspaceTemplate" + } + } + }, + "v1beta1.GenericClusterReference": { + "required": [ + "name" + ], + "properties": { + "name": { + "type": "string" + } + } + }, + "v1beta1.GenericOverrideItem": { + "required": [ + "clusterName" + ], + "properties": { + "clusterName": { + "type": "string" + }, + "clusterOverrides": { + "type": "array", + "items": { + "$ref": "#/definitions/v1beta1.ClusterOverride" + } + } + } + }, + "v1beta1.GenericPlacementFields": { + "properties": { + "clusterSelector": { + "$ref": "#/definitions/v1.LabelSelector" + }, + "clusters": { + "type": "array", + "items": { + "$ref": "#/definitions/v1beta1.GenericClusterReference" + } + } + } + }, + "v1beta1.HTTPIngressPath": { + "description": "HTTPIngressPath associates a path with a backend. Incoming urls matching the path are forwarded to the backend.", + "required": [ + "backend" + ], + "properties": { + "backend": { + "description": "Backend defines the referenced service endpoint to which the traffic will be forwarded to.", + "$ref": "#/definitions/v1beta1.IngressBackend" + }, + "path": { + "description": "Path is matched against the path of an incoming request. Currently it can contain characters disallowed from the conventional \"path\" part of a URL as defined by RFC 3986. Paths must begin with a '/'. When unspecified, all paths from incoming requests are matched.", + "type": "string" + }, + "pathType": { + "description": "PathType determines the interpretation of the Path matching. PathType can be one of the following values: * Exact: Matches the URL path exactly. * Prefix: Matches based on a URL path prefix split by '/'. Matching is\n done on a path element by element basis. A path element refers is the\n list of labels in the path split by the '/' separator. A request is a\n match for path p if every p is an element-wise prefix of p of the\n request path. Note that if the last element of the path is a substring\n of the last element in request path, it is not a match (e.g. /foo/bar\n matches /foo/bar/baz, but does not match /foo/barbaz).\n* ImplementationSpecific: Interpretation of the Path matching is up to\n the IngressClass. Implementations can treat this as a separate PathType\n or treat it identically to Prefix or Exact path types.\nImplementations are required to support all path types. Defaults to ImplementationSpecific.", + "type": "string" + } + } + }, + "v1beta1.HTTPIngressRuleValue": { + "description": "HTTPIngressRuleValue is a list of http selectors pointing to backends. In the example: http://\u003chost\u003e/\u003cpath\u003e?\u003csearchpart\u003e -\u003e backend where where parts of the url correspond to RFC 3986, this resource will be used to match against everything after the last '/' and before the first '?' or '#'.", + "required": [ + "paths" + ], + "properties": { + "paths": { + "description": "A collection of paths that map requests to backends.", + "type": "array", + "items": { + "$ref": "#/definitions/v1beta1.HTTPIngressPath" + } + } + } + }, + "v1beta1.Ingress": { + "description": "Ingress is a collection of rules that allow inbound connections to reach the endpoints defined by a backend. An Ingress can be configured to give services externally-reachable urls, load balance traffic, terminate SSL, offer name based virtual hosting etc. DEPRECATED - This group version of Ingress is deprecated by networking.k8s.io/v1beta1 Ingress. See the release notes for more information.", + "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": { + "description": "Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata", + "$ref": "#/definitions/v1.ObjectMeta" + }, + "spec": { + "description": "Spec is the desired state of the Ingress. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status", + "$ref": "#/definitions/v1beta1.IngressSpec" + }, + "status": { + "description": "Status is the current state of the Ingress. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status", + "$ref": "#/definitions/v1beta1.IngressStatus" + } + } + }, + "v1beta1.IngressBackend": { + "description": "IngressBackend describes all endpoints for a given service and port.", + "properties": { + "resource": { + "description": "Resource is an ObjectRef to another Kubernetes resource in the namespace of the Ingress object. If resource is specified, serviceName and servicePort must not be specified.", + "$ref": "#/definitions/v1.TypedLocalObjectReference" + }, + "serviceName": { + "description": "Specifies the name of the referenced service.", + "type": "string" + }, + "servicePort": { + "description": "Specifies the port of the referenced service.", + "type": "string" + } + } + }, + "v1beta1.IngressRule": { + "description": "IngressRule represents the rules mapping the paths under a specified host to the related backend services. Incoming requests are first evaluated for a host match, then routed to the backend associated with the matching IngressRuleValue.", + "properties": { + "host": { + "description": "Host is the fully qualified domain name of a network host, as defined by RFC 3986. Note the following deviations from the \"host\" part of the URI as defined in RFC 3986: 1. IPs are not allowed. Currently an IngressRuleValue can only apply to\n the IP in the Spec of the parent Ingress.\n2. The `:` delimiter is not respected because ports are not allowed.\n\t Currently the port of an Ingress is implicitly :80 for http and\n\t :443 for https.\nBoth these may change in the future. Incoming requests are matched against the host before the IngressRuleValue. If the host is unspecified, the Ingress routes all traffic based on the specified IngressRuleValue.\n\nHost can be \"precise\" which is a domain name without the terminating dot of a network host (e.g. \"foo.bar.com\") or \"wildcard\", which is a domain name prefixed with a single wildcard label (e.g. \"*.foo.com\"). The wildcard character '*' must appear by itself as the first DNS label and matches only a single label. You cannot have a wildcard label by itself (e.g. Host == \"*\"). Requests will be matched against the Host field in the following way: 1. If Host is precise, the request matches this rule if the http host header is equal to Host. 2. If Host is a wildcard, then the request matches this rule if the http host header is to equal to the suffix (removing the first label) of the wildcard rule.", + "type": "string" + }, + "http": { + "$ref": "#/definitions/v1beta1.HTTPIngressRuleValue" + } + } + }, + "v1beta1.IngressSpec": { + "description": "IngressSpec describes the Ingress the user wishes to exist.", + "properties": { + "backend": { + "description": "A default backend capable of servicing requests that don't match any rule. At least one of 'backend' or 'rules' must be specified. This field is optional to allow the loadbalancer controller or defaulting logic to specify a global default.", + "$ref": "#/definitions/v1beta1.IngressBackend" + }, + "ingressClassName": { + "description": "IngressClassName is the name of the IngressClass cluster resource. The associated IngressClass defines which controller will implement the resource. This replaces the deprecated `kubernetes.io/ingress.class` annotation. For backwards compatibility, when that annotation is set, it must be given precedence over this field. The controller may emit a warning if the field and annotation have different values. Implementations of this API should ignore Ingresses without a class specified. An IngressClass resource may be marked as default, which can be used to set a default value for this field. For more information, refer to the IngressClass documentation.", + "type": "string" + }, + "rules": { + "description": "A list of host rules used to configure the Ingress. If unspecified, or no rule matches, all traffic is sent to the default backend.", + "type": "array", + "items": { + "$ref": "#/definitions/v1beta1.IngressRule" + } + }, + "tls": { + "description": "TLS configuration. Currently the Ingress only supports a single TLS port, 443. If multiple members of this list specify different hosts, they will be multiplexed on the same port according to the hostname specified through the SNI TLS extension, if the ingress controller fulfilling the ingress supports SNI.", + "type": "array", + "items": { + "$ref": "#/definitions/v1beta1.IngressTLS" + } + } + } + }, + "v1beta1.IngressStatus": { + "description": "IngressStatus describe the current state of the Ingress.", + "properties": { + "loadBalancer": { + "description": "LoadBalancer contains the current status of the load-balancer.", + "$ref": "#/definitions/v1.LoadBalancerStatus" + } + } + }, + "v1beta1.IngressTLS": { + "description": "IngressTLS describes the transport layer security associated with an Ingress.", + "properties": { + "hosts": { + "description": "Hosts are a list of hosts included in the TLS certificate. The values in this list must match the name/s used in the tlsSecret. Defaults to the wildcard host setting for the loadbalancer controller fulfilling this Ingress, if left unspecified.", + "type": "array", + "items": { + "type": "string" + } + }, + "secretName": { + "description": "SecretName is the name of the secret used to terminate SSL traffic on 443. Field is left optional to allow SSL routing based on SNI hostname alone. If the SNI host in a listener conflicts with the \"Host\" header field used by an IngressRule, the SNI host is used for termination and value of the Host header is used for routing.", + "type": "string" + } + } + }, + "v1beta1.WorkspaceTemplate": { + "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", + "properties": { + "metadata": { + "$ref": "#/definitions/v1.ObjectMeta" + }, + "spec": { + "$ref": "#/definitions/v1alpha1.WorkspaceSpec" + } + } + } + }, + "securityDefinitions": { + "jwt": { + "type": "apiKey", + "name": "Authorization", + "in": "header" + } + }, + "security": [ + { + "jwt": [] + } + ] +} \ No newline at end of file