-
-
Notifications
You must be signed in to change notification settings - Fork 5
docs(plugins): add plugins reference #64
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,42 @@ | ||
| --- | ||
| title: Introduction | ||
| description: Official plugins for creating infrastructure platforms | ||
| --- | ||
|
|
||
| Each plugin provides a specific infrastructure capability - like storage, compute, or networking. Compose these plugins to build complete platforms across multiple cloud providers. | ||
|
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Im still super confused about how to actually input these values. |
||
|
|
||
| ## Official Plugins | ||
|
|
||
| <CardGroup cols={3}> | ||
| <Card title="AWS" icon="aws" href="/plugins/aws" /> | ||
| <Card title="GCP" icon="google" href="/plugins/gcp" /> | ||
| <Card title="Neon" icon="database" href="/plugins/neon" /> | ||
| </CardGroup> | ||
|
|
||
| ## Compose Plugins to Build your Platform | ||
|
|
||
| 1. **Open the Suga editor** to build your platform: | ||
|
|
||
| ```bash | ||
| suga edit | ||
| ``` | ||
|
Comment on lines
+18
to
+22
Member
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. No need to use the cli to edit a platform, only to edit a local project. For users who want to create/update a platform they can navigate to https://app.addsuga.com and click the |
||
|
|
||
| 2. **Add plugins** into your platform and configure parameters using this reference | ||
|
Member
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Before this step, we probably want to document creating a platform or finding one to edit.
Member
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I think a section at the beginning explaining what Platforms, Plugins and Blueprints are would be helpful to setup some context for the reader. |
||
|
|
||
|  | ||
|
|
||
| <Tip> | ||
| Reference outputs from other plugins using `${type.name.output}` syntax, e.g. `${infra.vpc.vpc_id}` or `${databases.main.connection_string}` | ||
| </Tip> | ||
|
Comment on lines
+28
to
+30
Member
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. This tip feels out of context, I think the steps should include creating a new blueprint by dragging a copy of a plugin into the platform, then configuring the blueprint with manually set properties, then finally configuring properties that reference platform variables or variables from other blueprints. |
||
|
|
||
| 3. **Deploy your platform**: | ||
|
Member
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I think "Publish" or "Release" might be more accurate than Deploy in this context. |
||
| - Click "Commit revision" in the editor to update your platform | ||
| - Update the target in your `suga.yaml` to build terraform using your platform with the plugins that you have composed: | ||
|
|
||
| ```yaml | ||
| targets: | ||
| - suga/aws@2 | ||
| ``` | ||
|
Comment on lines
+34
to
+39
Member
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. This should be a new step, with more explaination in the previous step (a revision is created, note the revision number, then update the suga.yaml with the new revision reference) |
||
|
|
||
|
|
||
|
|
||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,53 @@ | ||
| --- | ||
| title: Overview | ||
| description: AWS plugins for compute, storage, networking, and identity management. | ||
| --- | ||
|
|
||
| ## Available Plugins | ||
|
|
||
| ### Storage | ||
|
|
||
| <CardGroup cols={2}> | ||
| <Card title="S3" icon="database" href="/plugins/aws/s3"> | ||
| Object storage for storing and retrieving data from anywhere | ||
| </Card> | ||
| </CardGroup> | ||
|
|
||
| ### Services | ||
|
|
||
| <CardGroup cols={2}> | ||
| <Card title="Fargate" icon="cube" href="/plugins/aws/fargate"> | ||
| Run long-running containerized services with automatic scaling | ||
| </Card> | ||
| <Card title="Lambda" icon="bolt" href="/plugins/aws/lambda"> | ||
| Run event-driven functions that execute on demand | ||
| </Card> | ||
| </CardGroup> | ||
|
|
||
| ### Entrypoints | ||
|
|
||
| <CardGroup cols={2}> | ||
| <Card title="CloudFront" icon="globe" href="/plugins/aws/cloudfront"> | ||
| Content Delivery Network for fast, global content delivery | ||
| </Card> | ||
| </CardGroup> | ||
|
|
||
| ### Infrastructure | ||
|
|
||
| <CardGroup cols={2}> | ||
| <Card title="Load Balancer" icon="scale-balanced" href="/plugins/aws/loadbalancer"> | ||
| Distribute incoming traffic across multiple targets | ||
| </Card> | ||
| <Card title="VPC" icon="network-wired" href="/plugins/aws/vpc"> | ||
| Virtual Private Cloud with isolated network and subnets | ||
| </Card> | ||
| </CardGroup> | ||
|
|
||
| ### Identity | ||
|
|
||
| <CardGroup cols={2}> | ||
| <Card title="IAM Role" icon="key" href="/plugins/aws/iamrole"> | ||
| Identity and Access Management role for secure access to AWS services | ||
| </Card> | ||
| </CardGroup> | ||
|
|
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,62 @@ | ||
| --- | ||
| title: CloudFront | ||
| description: Content Delivery Network for fast, global content delivery | ||
| --- | ||
|
|
||
| ## Configuration | ||
|
|
||
| <ParamField path="custom_domain" type="string"> | ||
| Custom domain name for CloudFront distribution | ||
|
|
||
| **Example:** `cdn.example.com` | ||
|
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I would really love these examples to be expanded showing where and how I can input them. Who can adjust them, how it would work for multiple environments or multiple apps on their own domains etc. As is I am really confused how to make use of this |
||
| </ParamField> | ||
|
|
||
| <ParamField path="custom_domain_is_root" type="bool" default="false"> | ||
| Indicates if the custom domain is the root domain for the purposes of hosted zone lookup and record creation | ||
| </ParamField> | ||
|
|
||
| <ParamField path="default_cache_policy_id" type="string"> | ||
| Default cache policy for CloudFront distribution | ||
|
|
||
| **Example:** `658327ea-f89d-4fab-a63d-7e88639e58f6` | ||
| </ParamField> | ||
|
|
||
| <ParamField path="default_origin_request_policy_id" type="string" default="b689b0a8-53d0-40ab-baf2-68738e2966ac"> | ||
| Default origin request policy | ||
|
|
||
| **Example:** `b689b0a8-53d0-40ab-baf2-68738e2966ac` | ||
| </ParamField> | ||
|
|
||
| <ParamField path="geo_restriction_locations" type="list(string)"> | ||
| List of ISO 3166-1 alpha-2 country codes for geo restriction | ||
|
|
||
| **Example:** `["US", "CA", "GB"]` | ||
| </ParamField> | ||
|
|
||
| <ParamField path="geo_restriction_type" type="string" default="none"> | ||
| Type of geo restriction (none, whitelist, blacklist) | ||
|
|
||
| **Example:** `none` | ||
| </ParamField> | ||
|
|
||
| <ParamField path="rate_limit_enabled" type="bool" default="true"> | ||
| Enable rate limiting rules for DDoS protection | ||
|
|
||
| **Example:** `True` | ||
| </ParamField> | ||
|
|
||
| <ParamField path="rate_limit_requests_per_5min" type="number" default="2000"> | ||
| Maximum requests per 5-minute period per IP | ||
|
|
||
| **Example:** `2000` | ||
| </ParamField> | ||
|
|
||
| <ParamField path="waf_enabled" type="bool" default="false"> | ||
| Enable AWS WAF for CloudFront distribution | ||
| </ParamField> | ||
|
|
||
| <ParamField path="waf_managed_rules" type="list(object)"> | ||
| List of AWS Managed Rule Groups to enable | ||
|
|
||
| **Example:** `[{"name": "AWSManagedRulesCommonRuleSet", "priority": 10, "override_action": "none"}, {"name": "AWSManagedRulesKnownBadInputsRuleSet", "priority": 20, "override_action": "none"}]` | ||
| </ParamField> | ||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,60 @@ | ||
| --- | ||
| title: Fargate | ||
| description: Run long-running containerized services with automatic scaling | ||
| --- | ||
|
|
||
| ## Configuration | ||
|
|
||
| <ParamField path="alb_arn" type="string" required> | ||
| ARN of the Application Load Balancer | ||
|
|
||
| **Example:** `arn:aws:elasticloadbalancing:us-west-2:123456789012:loadbalancer/app/my-alb/50dc6c495c0c9188` | ||
| </ParamField> | ||
|
|
||
| <ParamField path="alb_security_group" type="string"> | ||
| Security group ID of the Application Load Balancer | ||
|
|
||
| **Example:** `sg-0123456789abcdef0` | ||
| </ParamField> | ||
|
|
||
| <ParamField path="container_port" type="number" required> | ||
| Port number the container exposes | ||
|
|
||
| **Example:** `8080` | ||
| </ParamField> | ||
|
|
||
| <ParamField path="cpu" type="number" default="256"> | ||
| CPU units for the Fargate task (256, 512, 1024, etc.) | ||
|
|
||
| **Example:** `256` | ||
| </ParamField> | ||
|
|
||
| <ParamField path="environment" type="map(string)"> | ||
| Environment variables for the container | ||
|
|
||
| **Example:** `{"NODE_ENV": "production", "LOG_LEVEL": "info"}` | ||
| </ParamField> | ||
|
|
||
| <ParamField path="memory" type="number" default="512"> | ||
| Memory in MB for the Fargate task | ||
|
|
||
| **Example:** `512` | ||
| </ParamField> | ||
|
|
||
| <ParamField path="security_groups" type="list(string)"> | ||
| List of security group IDs for the Fargate service | ||
|
|
||
| **Example:** `["sg-0123456789abcdef0"]` | ||
| </ParamField> | ||
|
|
||
| <ParamField path="subnets" type="list(string)"> | ||
| List of subnet IDs for the Fargate service | ||
|
|
||
| **Example:** `["subnet-12345678", "subnet-87654321"]` | ||
| </ParamField> | ||
|
|
||
| <ParamField path="vpc_id" type="string"> | ||
| VPC ID where the Fargate service will run | ||
|
|
||
| **Example:** `vpc-12345678` | ||
| </ParamField> |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,18 @@ | ||
| --- | ||
| title: IAM Role | ||
| description: Identity and Access Management role for secure access to AWS services | ||
| --- | ||
|
|
||
| ## Configuration | ||
|
|
||
| <ParamField path="trusted_actions" type="list(string)"> | ||
| List of trusted actions for the assume role policy | ||
|
|
||
| **Example:** `["sts:AssumeRole"]` | ||
| </ParamField> | ||
|
|
||
| <ParamField path="trusted_services" type="list(string)"> | ||
| List of AWS services that can assume this role | ||
|
|
||
| **Example:** `["lambda.amazonaws.com", "ecs-tasks.amazonaws.com"]` | ||
| </ParamField> |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,54 @@ | ||
| --- | ||
| title: Lambda | ||
| description: Run event-driven functions that execute on demand | ||
| --- | ||
|
|
||
| ## Configuration | ||
|
|
||
| <ParamField path="architecture" type="string" default="x86_64"> | ||
| Instruction set architecture for the Lambda function (x86_64 or arm64) | ||
|
|
||
| **Example:** `x86_64` | ||
| </ParamField> | ||
|
|
||
| <ParamField path="environment" type="map(string)"> | ||
| Environment variables for the Lambda function | ||
|
|
||
| **Example:** `{"NODE_ENV": "production", "LOG_LEVEL": "info"}` | ||
| </ParamField> | ||
|
|
||
| <ParamField path="ephemeral_storage" type="number" default="1024"> | ||
| Size of ephemeral storage in MB (512-10240) | ||
|
|
||
| **Example:** `1024` | ||
| </ParamField> | ||
|
|
||
| <ParamField path="function_url_auth_type" type="string" default="AWS_IAM"> | ||
| Authorization type for function URL (AWS_IAM or NONE) | ||
|
|
||
| **Example:** `AWS_IAM` | ||
| </ParamField> | ||
|
|
||
| <ParamField path="memory" type="number" default="1024"> | ||
| Amount of memory in MB (128-10240) | ||
|
|
||
| **Example:** `1024` | ||
| </ParamField> | ||
|
|
||
| <ParamField path="security_group_ids" type="list(string)"> | ||
| List of security group IDs for VPC configuration | ||
|
|
||
| **Example:** `["sg-0123456789abcdef0"]` | ||
| </ParamField> | ||
|
|
||
| <ParamField path="subnet_ids" type="list(string)"> | ||
| List of subnet IDs for VPC configuration | ||
|
|
||
| **Example:** `["subnet-12345678", "subnet-87654321"]` | ||
| </ParamField> | ||
|
|
||
| <ParamField path="timeout" type="number" default="300"> | ||
| Maximum execution time in seconds (1-900) | ||
|
|
||
| **Example:** `300` | ||
| </ParamField> |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
They're not really providers, we might want a new name for this grouping/plugin collection. However, this documentation should be clearly noted as the suga plugin library, since it's just the one we provide out of the box, teams are able to make their own privately or share them publicly and those will have/need their own docs.
@tjholm @raksiv this make me think these docs might want to be generated by the platform or something so we can co-locate it with the plugin browser. Let's chat.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
We could allow a README.md in the plugins and render it in the app. Could call it "Official Plugins" or "Suga Plugins"
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I've got it auto generating atm from the manifests which I've updated, thinking about this more over the weekend and the docs are required in the future for plugin configuration reference, but they aren't really required on the docs website as they muddy the water.