Skip to content

Commit d4e6587

Browse files
author
Bharath Nallapeta
authoredJan 12, 2024
Improved readme (#411)
1 parent d3434c7 commit d4e6587

File tree

1 file changed

+125
-122
lines changed

1 file changed

+125
-122
lines changed
 

‎README.md

+125-122
Original file line numberDiff line numberDiff line change
@@ -7,24 +7,24 @@
77
- [Introduction](#introduction)
88
- [Problem](#problem)
99
- [Solution](#solution)
10-
- [Deployment Guide](#deployment-guide)
10+
- [Features](#features)
11+
- [Admin Guide](#admin-guide)
1112
- [Vanilla Manifests](#vanilla-manifests)
1213
- [Helm Charts](#helm-charts)
13-
- [Configuration](#configuration)
14-
- [Ingresses](#ingresses)
15-
- [Forecastle](#forecastle)
14+
- [Configuration](#configuration)
1615
- [NamespaceSelector](#namespaceselector)
1716
- [Custom Apps](#custom-apps)
18-
- [ForecastleApp CRD](#forecastleapp-crd)
19-
- [Automatically discover URL's from Kubernetes Resources](#automatically-discover-urls-from-kubernetes-resources)
2017
- [Example Config](#example-configuration)
21-
- [Features](#features)
22-
- [Scaling with Multiple Instances](#scaling-with-multiple-instances)
23-
- [Help](#help)
24-
- [Talk to us on Slack](#talk-to-us-on-slack)
25-
- [Contributing](#contributing)
18+
- [Scaling with Multiple Instances](#scaling-with-multiple-instances)
19+
- [User Guide](#user-guide)
20+
- [Ingresses](#ingresses)
21+
- [ForecastleApp CRD](#forecastleapp-crd)
22+
- [Automatically discover URL's from Kubernetes Resources](#automatically-discover-urls-from-kubernetes-resources)
23+
- [Developer Guide](#developer-guide)
2624
- [Bug Reports & Feature Requests](#bug-reports--feature-requests)
2725
- [Developing](#developing)
26+
- [Help](#help)
27+
- [Talk to us on Slack](#talk-to-us-on-slack)
2828
- [Changelog](#changelog)
2929
- [License](#license)
3030
- [About](#about)
@@ -46,9 +46,33 @@ Forecastle provides a unified control panel, serving as a convenient gateway to
4646

4747
![Screenshot](assets/forecastle.png)
4848

49-
## Deployment Guide
49+
## Features
50+
51+
Forecastle boasts a range of functionalities designed to streamline the management and accessibility of applications in Kubernetes environments. Key features include:
52+
53+
1. **Comprehensive App Listing**: Forecastle aggregates and displays apps from all namespaces specified in the ConfigMap, providing a centralized view of your resources.
54+
55+
2. **Search Functionality**: Quickly locate specific applications with an intuitive search feature, enhancing user experience and efficiency.
56+
57+
3. **Namespace Grouping**: Apps are neatly organized and grouped by their respective namespaces, making navigation and management more straightforward.
58+
59+
4. **Customizable Header**: Tailor the look and feel of your Forecastle dashboard with configurable header options, including title customization and color schemes.
60+
61+
5. **Support for Multiple Instances**: Forecastle is designed to support multiple instances, accommodating varied and complex deployment scenarios.
62+
63+
6. **Custom Apps Integration**: Easily add non-Kubernetes or external applications to your dashboard for a more comprehensive overview of your tools and resources.
64+
65+
7. **ForecastleApp CRD**: Utilize the ForecastleApp Custom Resource Definition to dynamically add custom applications, further enhancing the dashboard’s flexibility.
5066

51-
Forecastle can be seamlessly deployed on both Kubernetes and OpenShift platforms. You have the option to use either vanilla Kubernetes manifests or Helm charts for deployment. Below are the step-by-step instructions for each method.
67+
8. **Custom Grouping and URLs**: Organize your applications into custom groups and assign specific URLs for tailored navigation and accessibility.
68+
69+
9. **Detailed App Information**: Each application comes with detailed information, offering insights and essential details at a glance.
70+
71+
## Admin Guide
72+
73+
This section is intended for Administrators aiming to deploy Forecastle in Kubernetes environments. Forecastle offers flexible deployment options, accommodating both Kubernetes and OpenShift platforms with ease.
74+
75+
You have the choice of deploying Forecastle using traditional Kubernetes manifests or through Helm charts. Detailed instructions for both methods are provided below to guide you through the deployment process.
5276

5377
### Vanilla Manifests
5478

@@ -74,29 +98,10 @@ Adjust the configuration in values.yaml if required and run the following comman
7498
helm install forecastle ./deployments/kubernetes/chart/forecastle
7599
```
76100

77-
## Configuration
101+
### Configuration
78102

79103
Forecastle simplifies the discovery and management of applications on Kubernetes and OpenShift. It utilizes specific annotations on ingresses and offers various configuration options for customization.
80104

81-
### Ingresses
82-
83-
Forecastle identifies applications through annotations added to Kubernetes ingresses. Here’s a guide to the necessary annotations:
84-
85-
To be discovered by Forecastle, add the following annotations to your ingresses:
86-
87-
| Annotation | Description | Required |
88-
| -------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------- | -------- |
89-
| `forecastle.stakater.com/expose` | Add this with value `true` to the ingress of the app you want to show in Forecastle | `true` |
90-
| `forecastle.stakater.com/icon` | Icon/Image URL of the application; An icons/logos/images collection repo [Icons](https://github.com/stakater/ForecastleIcons) | `false` |
91-
| `forecastle.stakater.com/appName` | A custom name for your application. Use if you don't want to use name of the ingress | `false` |
92-
| `forecastle.stakater.com/group` | A custom group name. Use if you want the application to show in a different group than the namespace it is running in | `false` |
93-
| `forecastle.stakater.com/instance` | A comma separated list of name/s of the forecastle instance/s where you want this application to appear. Use when you have multiple forecastle dashboards | `false` |
94-
| `forecastle.stakater.com/url` | A URL for the forecastle app (This will override the ingress URL). It MUST begin with a scheme i.e., `http://` or `https://` | `false` |
95-
| `forecastle.stakater.com/properties` | A comma separate list of `key:value` pairs for the properties. This will appear as an expandable list for the app | `false` |
96-
| `forecastle.stakater.com/network-restricted` | Specify whether the app is network restricted or not (true or false) | `false` |
97-
98-
### Forecastle
99-
100105
You can customize Forecastle using either a ConfigMap or the values.yaml file when deploying with Helm. Below are the configurable fields:
101106

102107
| Field | Description | Default | Type |
@@ -136,9 +141,81 @@ Allows adding non-Kubernetes or external apps to Forecastle. This is an extremel
136141
| properties | Additional Properties of the app as a map | map[string]string |
137142
| networkRestricted | Whether app is network restricted or not | bool |
138143

139-
#### ForecastleApp CRD
144+
#### Example Configuration
145+
146+
Below is an example of how you might configure Forecastle using a combination of namespace selectors and custom apps:
147+
148+
```yaml
149+
namespaceSelector:
150+
labelSelector:
151+
matchLabels:
152+
component: redis
153+
matchExpressions:
154+
- {key: tier, operator: In, values: [cache]}
155+
matchNames:
156+
- test
157+
title:
158+
headerBackground:
159+
headerForeground: "#ffffff"
160+
instanceName: "Hello"
161+
crdEnabled: false
162+
customApps:
163+
- name: Hello
164+
icon: http://hello
165+
url: http://helloicon
166+
group: Test
167+
properties:
168+
Version: 1.0
169+
```
170+
171+
This configuration demonstrates how to set namespace selectors, customize the header's appearance, enable or disable the CRD feature, and add a custom app with specific properties.
172+
173+
174+
### Scaling with Multiple Instances
175+
176+
Forecastle's design allows for running multiple instances, providing scalability and flexibility in diverse environments. Here's how you can effectively scale Forecastle.
177+
178+
#### Deploying Multiple Instances
179+
180+
*Basic Deployment*: To run multiple Forecastle instances, deploy each instance in a separate namespace. Specify a list of namespaces for each instance to monitor ingresses.
181+
182+
#### Configuring Named Instances for Enhanced Flexibility
183+
184+
*Named Instance Configuration*: For greater control over which applications are displayed in specific instances (irrespective of their namespaces), configure each Forecastle instance with a unique name using the `instanceName` setting in the Forecastle configuration.
185+
186+
#### Controlling Application Display Across Instances
187+
188+
*Application-Specific Instance Display*: After naming your instances, use the `forecastle.stakater.com/instance` annotation on your ingresses. This annotation dictates which application appears in which Forecastle instance.
189+
190+
*Multiple Instance Display*: It's possible for a single application (ingress) to appear in multiple Forecastle dashboards. For instance, if you have two instances named dev-dashboard and prod-dashboard, adding `dev-dashboard,prod-dashboard` in the ingress's instance annotation will ensure the application is visible on both dashboards.
191+
192+
#### Helm Deployment Considerations
193+
194+
*Unique Naming in Helm*: When deploying Forecastle instances via Helm, ensure each instance has a unique `nameOverride` value (default is forecastle). This step is crucial to avoid conflicts between global resources like ClusterRole and ClusterRoleBinding.
140195

141-
With Forecastle, you can dynamically integrate applications into the dashboard using the ForecastleApp Custom Resource Definition (CRD). This feature allows for greater flexibility and decouples application configuration from both Ingresses and the Forecastle configuration.
196+
## User Guide
197+
198+
This section is intended for Users aiming to use Forecastle in their Kubernetes environments.
199+
200+
### Ingresses
201+
202+
Forecastle identifies applications through annotations added to Kubernetes ingresses. Here’s how you would add the necessary annotations:
203+
204+
| Annotation | Description | Required |
205+
| -------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------- | -------- |
206+
| `forecastle.stakater.com/expose` | Add this with value `true` to the ingress of the app you want to show in Forecastle | `true` |
207+
| `forecastle.stakater.com/icon` | Icon/Image URL of the application; An icons/logos/images collection repo [Icons](https://github.com/stakater/ForecastleIcons) | `false` |
208+
| `forecastle.stakater.com/appName` | A custom name for your application. Use if you don't want to use name of the ingress | `false` |
209+
| `forecastle.stakater.com/group` | A custom group name. Use if you want the application to show in a different group than the namespace it is running in | `false` |
210+
| `forecastle.stakater.com/instance` | A comma separated list of name/s of the forecastle instance/s where you want this application to appear. Use when you have multiple forecastle dashboards | `false` |
211+
| `forecastle.stakater.com/url` | A URL for the forecastle app (This will override the ingress URL). It MUST begin with a scheme i.e., `http://` or `https://` | `false` |
212+
| `forecastle.stakater.com/properties` | A comma separate list of `key:value` pairs for the properties. This will appear as an expandable list for the app | `false` |
213+
| `forecastle.stakater.com/network-restricted` | Specify whether the app is network restricted or not (true or false) | `false` |
214+
215+
216+
### ForecastleApp CRD
217+
218+
Another way Forecastle enhances your ability to dynamically integrate applications is by using ForecastleApp Custom Resource Definition (CRD). This feature adds a layer of flexibility, allowing you to separate the application configuration from the Ingress settings and Forecastle's own configuration.
142219

143220
**Creating a ForecastleApp:**
144221

@@ -166,10 +243,8 @@ ForecastleApp CRD supports automatic URL discovery from certain Kubernetes resou
166243

167244
- Ingress: Ensures the application's URL is automatically retrieved from the Ingress resource in the same namespace.
168245

169-
170-
171246
To utilize this feature, add the urlFrom field to your ForecastleApp specification like so:
172-
*Please note that the type of resource that you want to discover has be be in the same namespace as the `ForecastleApp` CR.*
247+
*Please note that the type of resource that you want to discover has to be in the same namespace as the `ForecastleApp` CR.*
173248

174249
```yaml
175250
apiVersion: forecastle.stakater.com/v1alpha1
@@ -187,80 +262,26 @@ spec:
187262

188263
This configuration instructs Forecastle to fetch the app URL directly from the specified Ingress resource, simplifying deployment and configuration.
189264

190-
*Note: To use the CRD feature, ensure it's enabled by setting `crdEnabled: true` in the Forecastle configuration or enabling it in the Helm chart.*
191-
192-
#### Example Configuration
193-
194-
Below is an example of how you might configure Forecastle using a combination of namespace selectors and custom apps:
195-
196-
```yaml
197-
namespaceSelector:
198-
labelSelector:
199-
matchLabels:
200-
component: redis
201-
matchExpressions:
202-
- {key: tier, operator: In, values: [cache]}
203-
matchNames:
204-
- test
205-
title:
206-
headerBackground:
207-
headerForeground: "#ffffff"
208-
instanceName: "Hello"
209-
crdEnabled: false
210-
customApps:
211-
- name: Hello
212-
icon: http://hello
213-
url: http://helloicon
214-
group: Test
215-
properties:
216-
Version: 1.0
217-
```
218-
219-
This configuration demonstrates how to set namespace selectors, customize the header's appearance, enable or disable the CRD feature, and add a custom app with specific properties.
220-
221-
## Features
222-
223-
Forecastle boasts a range of functionalities designed to streamline the management and accessibility of applications in Kubernetes environments. Key features include:
224-
225-
1. **Comprehensive App Listing**: Forecastle aggregates and displays apps from all namespaces specified in the ConfigMap, providing a centralized view of your resources.
226-
227-
2. **Search Functionality**: Quickly locate specific applications with an intuitive search feature, enhancing user experience and efficiency.
228-
229-
3. **Namespace Grouping**: Apps are neatly organized and grouped by their respective namespaces, making navigation and management more straightforward.
230-
231-
4. **Customizable Header**: Tailor the look and feel of your Forecastle dashboard with configurable header options, including title customization and color schemes.
232-
233-
5. **Support for Multiple Instances**: Forecastle is designed to support multiple instances, accommodating varied and complex deployment scenarios.
234-
235-
6. **Custom Apps Integration**: Easily add non-Kubernetes or external applications to your dashboard for a more comprehensive overview of your tools and resources.
236-
237-
7. **ForecastleApp CRD**: Utilize the ForecastleApp Custom Resource Definition to dynamically add custom applications, further enhancing the dashboard’s flexibility.
238-
239-
8. **Custom Grouping and URLs**: Organize your applications into custom groups and assign specific URLs for tailored navigation and accessibility.
265+
*Note: To use the CRD feature, ensure it's enabled by setting `crdEnabled: true` in the Forecastle configuration or by enabling it in the Helm chart.*
240266

241-
9. **Detailed App Information**: Each application comes with detailed information, offering insights and essential details at a glance.
242-
243-
## Scaling with Multiple Instances
244267

245-
Forecastle's design allows for running multiple instances, providing scalability and flexibility in diverse environments. Here's how you can effectively scale Forecastle.
268+
## Developer Guide
246269

247-
### Deploying Multiple Instances
248-
249-
**Basic Deployment**: To run multiple Forecastle instances, deploy each instance in a separate namespace. Specify a list of namespaces for each instance to monitor ingresses.
250-
251-
### Configuring Named Instances for Enhanced Flexibility
252-
253-
**Named Instance Configuration**: For greater control over which applications are displayed in specific instances (irrespective of their namespaces), configure each Forecastle instance with a unique name using the `instanceName` setting in the Forecastle configuration.
270+
### Bug Reports & Feature Requests
254271

255-
### Controlling Application Display Across Instances
272+
Please use the [issue tracker](https://github.com/stakater/Forecastle/issues) to report any bugs or file feature requests.
256273

257-
**Application-Specific Instance Display**: After naming your instances, use the `forecastle.stakater.com/instance` annotation on your ingresses. This annotation dictates which application appears in which Forecastle instance.
274+
### Developing
258275

259-
**Multiple Instance Display**: It's possible for a single application (ingress) to appear in multiple Forecastle dashboards. For instance, if you have two instances named dev-dashboard and prod-dashboard, adding `dev-dashboard,prod-dashboard` in the ingress's instance annotation will ensure the application is visible on both dashboards.
276+
PRs are most welcome. In general, we follow the "fork-and-pull" Git workflow.
260277

261-
### Helm Deployment Considerations
278+
1. **Fork** the repo on GitHub.
279+
2. **Clone** the project to your own machine.
280+
3. **Commit** changes to your own branch.
281+
4. **Push** your work back up to your fork.
282+
5. Submit a **Pull request** so that we can review your changes.
262283

263-
**Unique Naming in Helm**: When deploying Forecastle instances via Helm, ensure each instance has a unique `nameOverride` value (default is forecastle). This step is crucial to avoid conflicts between global resources like ClusterRole and ClusterRoleBinding.
284+
*NOTE: Be sure to merge the latest from "upstream" before making a pull request!*
264285

265286
## Help
266287

@@ -274,24 +295,6 @@ Join and talk to us on the #tools-imc channel for discussing Forecastle
274295
[![Join Slack](https://stakater.github.io/README/stakater-join-slack-btn.png)](https://slack.stakater.com/)
275296
[![Chat](https://stakater.github.io/README/stakater-chat-btn.png)](https://stakater-community.slack.com/messages/CBM7Q80KX)
276297

277-
## Contributing
278-
279-
### Bug Reports & Feature Requests
280-
281-
Please use the [issue tracker](https://github.com/stakater/Forecastle/issues) to report any bugs or file feature requests.
282-
283-
### Developing
284-
285-
PRs are welcome. In general, we follow the "fork-and-pull" Git workflow.
286-
287-
1. **Fork** the repo on GitHub
288-
2. **Clone** the project to your own machine
289-
3. **Commit** changes to your own branch
290-
4. **Push** your work back up to your fork
291-
5. Submit a **Pull request** so that we can review your changes
292-
293-
NOTE: Be sure to merge the latest from "upstream" before making a pull request!
294-
295298
## Changelog
296299

297300
View our closed [Pull Requests](https://github.com/stakater/Forecastle/pulls?q=is%3Apr+is%3Aclosed).

0 commit comments

Comments
 (0)
Please sign in to comment.