Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

RHIDP-3440 CX: Add troubleshooting content #548

Open
wants to merge 2 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
[id="rhdh-about-rhdh-plugins_{context}"]
= About {product} plugins

//include::../modules/dynamic-plugins/con-rhdh-plugins.adoc[leveloffset=+1]
include::../modules/dynamic-plugins/con-rhdh-plugins.adoc[leveloffset=+1]
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
[id="rhdh-troubleshooting-rhdh-plugins_{context}"]
= Troubleshooting {product-short} plugins

//include::../modules/dynamic-plugins/con-rhdh-plugins.adoc[leveloffset=+1]
include::../modules/dynamic-plugins/con-rhdh-troubleshooting-plugins.adoc[leveloffset=+1]
71 changes: 71 additions & 0 deletions modules/dynamic-plugins/con-rhdh-plugins.adoc
Original file line number Diff line number Diff line change
@@ -0,0 +1,71 @@
[id="con-rhdh-plugins"]

= Plugins in {product}

// The {product} application offers a unified platform with various plugins. Using the plugin ecosystem within the {product-short} application, you can access any kind of development infrastructure or software development tool.

// The plugins in {product-short} maximize the productivity and streamline the development workflows by maintaining the consistency in the overall user experience.

The {product} ({product-very-short}) application offers a unified platform with various plugins. Using the plugin ecosystem within the {product-very-short} application, you can access any kind of development infrastructure or software development tool.

Plugins are modular extensions for {product-very-short} that extend functionality, streamline development workflows, and improve the developer experience. You can add and configure plugins in {product-very-short} to access various software development tools.

Each plugin is treated as a self-contained application and can include almost any type of content. Plugins use a common set of platform APIs and reusable UI components. Plugins can get data from external sources using APIs or by depending on external modules to do the work.

{product-very-short} provides both static plugins and dynamic plugins which extend {product-very-short} functionality. Static plugins are built into the core of the {product-very-short} application, dynamic plugins are sideloaded into your Developer Hub instance without having to recompile your code or rebuild the container.

To install or update a static plugin you must update your {product-very-short} application source code and rebuild the application and container image.

To install or update a dynamic plugin, you must restart your {product-very-short} application source code after installing the plugin.

You can also import your own custom-built or third-party plugins or create new features using dynamic plugins.


Dynamic plugins boost modularity and scalability by enabling more flexible and efficient functionality loading, significantly enhancing the developer experience and customization of your {product-very-short} instance.

== Dynamic plugins
{product-very-short} dynamic plugins offer several benefits, particularly in environments where flexibility, scalability, and customization are key. Here are some of the benefits that using dynamic plugins in {product-very-short} provide:

Modularity and extensibility::
Dynamic plugins allow teams to add or modify features without altering the core {product-very-short} application. This modular approach makes it easier to extend functionality as needs evolve.

Customization::
Different teams or projects might have unique requirements. Dynamic plugins enable users to tailor {product-very-short} to fit specific workflows and use cases, enhancing the overall user experience.

Reduced maintenance and update overhead::
With dynamic plugins, updates or new features can be deployed independently of the main {product-very-short} codebase. This reduces the risks and efforts associated with maintaining and updating the platform.

Faster iteration::
Developers can create and test new features more rapidly as plugins. This encourages experimentation and innovation, allowing teams to quickly iterate based on feedback.

Improved collaboration::
Organizations can share plugins across teams or even externally. This sharing can foster collaboration and reduce duplication of effort, as well as help establish best practices across an organization.

Scalability::
As organizations grow, their needs become more complex. Dynamic plugins enable {product-very-short} to scale alongside these needs, accommodating an increasing number of users and services.

Ecosystem growth::
Encouraging the development of plugins can lead to a vibrant ecosystem around {product-very-short}. This community can contribute plugins that address a wide range of needs, further enriching the platform.

Security and compliance::
Plugins can be developed with specific security and compliance requirements in mind, ensuring that {product-very-short} installations meet the necessary standards without compromising the core application.

Overall, the use of dynamic plugins in {product-very-short} promotes a flexible, adaptable, and sustainable approach to managing and scaling development infrastructure.

== Comparing dynamic plugins to static plugins
Static plugins are built into the core of the {product-very-short} application. Installing or updating a static plugin requires a restart of the application after installing the plugin.

The following table provides a comparison between static and dynamic plugins in {product-very-short}.

[%header,cols=3*]
|===
|*Feature* |*Static plugins* |*Dynamic plugins*
|Integration |Built into the core application. |Loaded at runtime, separate from the core.
|Flexibility |Requires core changes to add or update features. |Add or update features without core changes.
|Development speed |Slower, requires a complete rebuild for new
features. |Faster, deploy new functionalities quickly.
|Customization |Limited to predefined options. |Easy to tailor platform by loading specific plugins.
|Maintenance |More complex due to tightly coupled features. |Enhanced by modular architecture.
|Resource use |All features loaded at startup. |Only necessary plugins loaded dynamically.
|Innovation |Slower experimentation due to rebuild cycles. |Quick experimentation with new plugins.
|===
10 changes: 10 additions & 0 deletions modules/dynamic-plugins/con-rhdh-troubleshooting-plugins.adoc
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
[id="con-rhdh-troubleshooting-plugins_{context}"]
= Mandatory environment variables
Some dynamic plugins require environment variables to be set. If a mandatory environment variable is not set, and the plugin is enabled, then the application might fail at startup.

The mandatory environment variables for each plugin are listed in the Dynamic plugins support matrix.

= Zib-bomb detection
Zib-bomb detection When installing some dynamic plugin containing large files, if the installation script considers the package archive to be a Zib-Bomb, the installation fails.

To increase the maximum permitted size of a file inside a package archive, you can increase the `MAX_ENTRY_SIZE` environment value of the deployment `install-dynamic-plugins initContainer` from the default size of `20000000` bytes.