Skip to content

Commit 8998615

Browse files
authored
Doc: Rework documentation site structure (#513)
* Add linter config * Doc: Update deployment doc prefix lists Add IPv4 and IPv6 prefix list Ids to security group ingress onboarding step instead of the specific IP range used by the Lattice network. * Doc: Update development doc with prefix lists Add IPv4 and IPv6 prefix list Ids to security group ingress onboarding step instead of the specific IP range used by the Lattice network. * ci: Use mattn/goveralls instead of shogo821/goveralls * ci: Use mattn/goveralls instead of shogo821/goveralls * doc: update overview page for v1 * Doc: Update readme * doc: add link to SG docs in deploy * nit: space and wording cleanup * Docs: Major doc folder structure update * doc: add code of conduct * doc: Move api reference back to top-level nav * doc: fix merge conflict
1 parent a50ab17 commit 8998615

17 files changed

+137
-126
lines changed

README.md

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,9 +16,7 @@ website: [https://www.gateway-api-controller.eks.aws.dev/][ghp].
1616

1717
### Concepts
1818

19-
To get started, please read through [API concepts][concepts] and
20-
[Security model][security-model]. These documents give the necessary background
21-
to understand the API and the use-cases it targets.
19+
To get started, please read through [API concepts][concepts]. These documents give the necessary background to understand the API and the use-cases it targets.
2220

2321
### Getting started
2422

@@ -57,6 +55,5 @@ This project is licensed under the Apache-2.0 License.
5755
[getting-started]: https://www.gateway-api-controller.eks.aws.dev/getstarted/
5856
[spec]: https://www.gateway-api-controller.eks.aws.dev/reference/grpc-route/
5957
[concepts]: https://www.gateway-api-controller.eks.aws.dev/configure/
60-
[security-model]: https://gateway-api.sigs.k8s.io/concepts/security-model
6158
[gh_release]: https://github.com/aws/aws-application-networking-k8s/releases/tag/v0.0.18
6259
[godoc]: https://www.gateway-api-controller.eks.aws.dev/

code-of-conduct.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
# Code of Conduct
2+
The AWS Gateway API Controller project follows the [CNCF Community Code of Conduct](https://github.com/cncf/foundation/blob/master/code-of-conduct.md).
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.

docs/deploy.md

Lines changed: 0 additions & 106 deletions
Original file line numberDiff line numberDiff line change
@@ -1,106 +0,0 @@
1-
# Deploying the AWS Gateway API Controller
2-
3-
Follow these instructions to create a cluster and deploy the AWS Gateway API Controller.
4-
Run through them again for a second cluster to use with the extended example shown later.
5-
6-
**NOTE**: You can get the yaml files used on this page by cloning the [AWS Gateway API Controller for VPC Lattice](https://github.com/aws/aws-application-networking-k8s) site. The files are in the `examples/` directory.
7-
8-
1. Set your region and cluster name as environment variables. See the [Amazon VPC Lattice FAQs](https://aws.amazon.com/vpc/lattice/faqs/) for a list of supported regions. For this example, we use `us-west-2`:
9-
```bash
10-
export AWS_REGION=us-west-2
11-
export CLUSTER_NAME=my-cluster
12-
```
13-
2. You can use an existing EKS cluster or create a new one as shown here:
14-
```bash
15-
eksctl create cluster --name $CLUSTER_NAME --region $AWS_REGION
16-
```
17-
3. Configure security group to receive traffic from the VPC Lattice network. You must set up security groups so that they allow all Pods communicating with VPC Lattice to allow traffic from the VPC Lattice managed prefix lists. See [Control traffic to resources using security groups](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_SecurityGroups.html) for details. Lattice has both an IPv4 and IPv6 prefix lists available.
18-
19-
```bash
20-
CLUSTER_SG=$(aws eks describe-cluster --name $CLUSTER_NAME --output json| jq -r '.cluster.resourcesVpcConfig.clusterSecurityGroupId')
21-
PREFIX_LIST_ID=$(aws ec2 describe-managed-prefix-lists --query "PrefixLists[?PrefixListName=="\'com.amazonaws.$AWS_REGION.vpc-lattice\'"].PrefixListId" | jq -r '.[]')
22-
aws ec2 authorize-security-group-ingress --group-id $CLUSTER_SG --ip-permissions "PrefixListIds=[{PrefixListId=${PREFIX_LIST_ID}}],IpProtocol=-1"
23-
PREFIX_LIST_ID_IPV6=$(aws ec2 describe-managed-prefix-lists --query "PrefixLists[?PrefixListName=="\'com.amazonaws.$AWS_REGION.ipv6.vpc-lattice\'"].PrefixListId" | jq -r '.[]')
24-
aws ec2 authorize-security-group-ingress --group-id $CLUSTER_SG --ip-permissions "PrefixListIds=[{PrefixListId=${PREFIX_LIST_ID_IPV6}}],IpProtocol=-1"
25-
```
26-
3. Create an IAM OIDC provider: See [Creating an IAM OIDC provider for your cluster](https://docs.aws.amazon.com/eks/latest/userguide/enable-iam-roles-for-service-accounts.html) for details.
27-
```bash
28-
eksctl utils associate-iam-oidc-provider --cluster $CLUSTER_NAME --approve --region $AWS_REGION
29-
```
30-
4. Create a policy (`recommended-inline-policy.json`) in IAM with the following content that can invoke the gateway API and copy the policy arn for later use:
31-
```bash
32-
{
33-
"Version": "2012-10-17",
34-
"Statement": [
35-
{
36-
"Effect": "Allow",
37-
"Action": [
38-
"vpc-lattice:*",
39-
"iam:CreateServiceLinkedRole",
40-
"ec2:DescribeVpcs",
41-
"ec2:DescribeSubnets",
42-
"ec2:DescribeTags",
43-
"ec2:DescribeSecurityGroups",
44-
"logs:CreateLogDelivery",
45-
"logs:GetLogDelivery",
46-
"logs:UpdateLogDelivery",
47-
"logs:DeleteLogDelivery",
48-
"logs:ListLogDeliveries"
49-
],
50-
"Resource": "*"
51-
}
52-
]
53-
}
54-
```
55-
```bash
56-
aws iam create-policy \
57-
--policy-name VPCLatticeControllerIAMPolicy \
58-
--policy-document file://examples/recommended-inline-policy.json
59-
```
60-
5. Create the `aws-application-networking-system` namespace:
61-
```bash
62-
kubectl apply -f examples/deploy-namesystem.yaml
63-
```
64-
6. Retrieve the policy ARN:
65-
```bash
66-
export VPCLatticeControllerIAMPolicyArn=$(aws iam list-policies --query 'Policies[?PolicyName==`VPCLatticeControllerIAMPolicy`].Arn' --output text)
67-
```
68-
7. Create an iamserviceaccount for pod level permission:
69-
```bash
70-
eksctl create iamserviceaccount \
71-
--cluster=$CLUSTER_NAME \
72-
--namespace=aws-application-networking-system \
73-
--name=gateway-api-controller \
74-
--attach-policy-arn=$VPCLatticeControllerIAMPolicyArn \
75-
--override-existing-serviceaccounts \
76-
--region $AWS_REGION \
77-
--approve
78-
```
79-
8. Run either `kubectl` or `helm` to deploy the controller:
80-
```bash
81-
kubectl apply -f examples/deploy-v0.0.18.yaml
82-
```
83-
or
84-
```bash
85-
# login to ECR
86-
aws ecr-public get-login-password --region us-east-1 | helm registry login --username AWS --password-stdin public.ecr.aws
87-
# Run helm with either install or upgrade
88-
helm install gateway-api-controller \
89-
oci://public.ecr.aws/aws-application-networking-k8s/aws-gateway-controller-chart\
90-
--version=v0.0.18 \
91-
--set=serviceAccount.create=false --namespace aws-application-networking-system \
92-
# awsRegion, clusterVpcId, clusterName, awsAccountId are required for case where IMDS is NOT AVAILABLE, e.g Fargate, self-managed clusters with IMDS access blocked
93-
--set=awsRegion= \
94-
--set=clusterVpcId= \
95-
--set=clusterName= \
96-
--set=awsAccountId= \
97-
--set=defaultServiceNetwork= \ # check environment.md for more its details
98-
# latticeEndpoint is required for the case where the VPC Lattice endpoint is being overridden
99-
--set=latticeEndpoint= \
100-
101-
102-
```
103-
9. Create the `amazon-vpc-lattice` GatewayClass:
104-
```bash
105-
kubectl apply -f examples/gatewayclass.yaml
106-
```

docs/faq.md

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
# Frequently Asked Questions (FAQ)
2+
3+
Q: How can I get involved with AWS Gateway API Controller?
4+
A: We welcome general feedback, questions, feature requests, or bug reports by creating a [Github issue](https://github.com/aws/aws-application-networking-k8s/issues/new).
5+
6+
Q: Where can I find AWS Gateway API Controller releases?
7+
A: AWS Gateway API Controller releases are tags of the Github repository. The [Github releases page](https://github.com/aws/aws-application-networking-k8s/releases) shows all the releases.
8+
9+
Q: Which EKS CNI versions are supported?
10+
A: Your AWS VPC CNI must be v1.8.0 or later to work with VPC Lattice.

docs/guides/deploy.md

Lines changed: 104 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,104 @@
1+
# Deploying the AWS Gateway API Controller
2+
3+
Follow these instructions to create a cluster and deploy the AWS Gateway API Controller.
4+
Run through them again for a second cluster to use with the extended example shown later.
5+
6+
**NOTE**: You can get the yaml files used on this page by cloning the [AWS Gateway API Controller for VPC Lattice](https://github.com/aws/aws-application-networking-k8s) site. The files are in the `examples/` directory.
7+
8+
1. Set your region and cluster name as environment variables. See the [Amazon VPC Lattice FAQs](https://aws.amazon.com/vpc/lattice/faqs/) for a list of supported regions. For this example, we use `us-west-2`:
9+
```bash
10+
export AWS_REGION=us-west-2
11+
export CLUSTER_NAME=my-cluster
12+
```
13+
2. You can use an existing EKS cluster or create a new one as shown here:
14+
```bash
15+
eksctl create cluster --name $CLUSTER_NAME --region $AWS_REGION
16+
```
17+
3. Configure security group to receive traffic from the VPC Lattice network. You must set up security groups so that they allow all Pods communicating with VPC Lattice to allow traffic from the VPC Lattice managed prefix lists. See [Control traffic to resources using security groups](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_SecurityGroups.html) for details. Lattice has both an IPv4 and IPv6 prefix lists available.
18+
19+
```bash
20+
CLUSTER_SG=$(aws eks describe-cluster --name $CLUSTER_NAME --output json| jq -r '.cluster.resourcesVpcConfig.clusterSecurityGroupId')
21+
PREFIX_LIST_ID=$(aws ec2 describe-managed-prefix-lists --query "PrefixLists[?PrefixListName=="\'com.amazonaws.$AWS_REGION.vpc-lattice\'"].PrefixListId" | jq -r '.[]')
22+
aws ec2 authorize-security-group-ingress --group-id $CLUSTER_SG --ip-permissions "PrefixListIds=[{PrefixListId=${PREFIX_LIST_ID}}],IpProtocol=-1"
23+
PREFIX_LIST_ID_IPV6=$(aws ec2 describe-managed-prefix-lists --query "PrefixLists[?PrefixListName=="\'com.amazonaws.$AWS_REGION.ipv6.vpc-lattice\'"].PrefixListId" | jq -r '.[]')
24+
aws ec2 authorize-security-group-ingress --group-id $CLUSTER_SG --ip-permissions "PrefixListIds=[{PrefixListId=${PREFIX_LIST_ID_IPV6}}],IpProtocol=-1"
25+
```
26+
3. Create an IAM OIDC provider: See [Creating an IAM OIDC provider for your cluster](https://docs.aws.amazon.com/eks/latest/userguide/enable-iam-roles-for-service-accounts.html) for details.
27+
```bash
28+
eksctl utils associate-iam-oidc-provider --cluster $CLUSTER_NAME --approve --region $AWS_REGION
29+
```
30+
4. Create a policy (`recommended-inline-policy.json`) in IAM with the following content that can invoke the gateway API and copy the policy arn for later use:
31+
```bash
32+
{
33+
"Version": "2012-10-17",
34+
"Statement": [
35+
{
36+
"Effect": "Allow",
37+
"Action": [
38+
"vpc-lattice:*",
39+
"iam:CreateServiceLinkedRole",
40+
"ec2:DescribeVpcs",
41+
"ec2:DescribeSubnets",
42+
"ec2:DescribeTags",
43+
"ec2:DescribeSecurityGroups",
44+
"logs:CreateLogDelivery",
45+
"logs:GetLogDelivery",
46+
"logs:UpdateLogDelivery",
47+
"logs:DeleteLogDelivery",
48+
"logs:ListLogDeliveries"
49+
],
50+
"Resource": "*"
51+
}
52+
]
53+
}
54+
```
55+
```bash
56+
aws iam create-policy \
57+
--policy-name VPCLatticeControllerIAMPolicy \
58+
--policy-document file://examples/recommended-inline-policy.json
59+
```
60+
5. Create the `aws-application-networking-system` namespace:
61+
```bash
62+
kubectl apply -f examples/deploy-namesystem.yaml
63+
```
64+
6. Retrieve the policy ARN:
65+
```bash
66+
export VPCLatticeControllerIAMPolicyArn=$(aws iam list-policies --query 'Policies[?PolicyName==`VPCLatticeControllerIAMPolicy`].Arn' --output text)
67+
```
68+
7. Create an iamserviceaccount for pod level permission:
69+
```bash
70+
eksctl create iamserviceaccount \
71+
--cluster=$CLUSTER_NAME \
72+
--namespace=aws-application-networking-system \
73+
--name=gateway-api-controller \
74+
--attach-policy-arn=$VPCLatticeControllerIAMPolicyArn \
75+
--override-existing-serviceaccounts \
76+
--region $AWS_REGION \
77+
--approve
78+
```
79+
8. Run either `kubectl` or `helm` to deploy the controller:
80+
```bash
81+
kubectl apply -f examples/deploy-v0.0.18.yaml
82+
```
83+
or
84+
```bash
85+
# login to ECR
86+
aws ecr-public get-login-password --region us-east-1 | helm registry login --username AWS --password-stdin public.ecr.aws
87+
# Run helm with either install or upgrade
88+
helm install gateway-api-controller \
89+
oci://public.ecr.aws/aws-application-networking-k8s/aws-gateway-controller-chart\
90+
--version=v0.0.18 \
91+
--set=serviceAccount.create=false --namespace aws-application-networking-system \
92+
# awsRegion, clusterVpcId, clusterName, awsAccountId are required for case where IMDS is NOT AVAILABLE, e.g Fargate, self-managed clusters with IMDS access blocked
93+
--set=awsRegion= \
94+
--set=clusterVpcId= \
95+
--set=clusterName= \
96+
--set=awsAccountId= \
97+
# latticeEndpoint is required for the case where the VPC Lattice endpoint is being overridden
98+
--set=latticeEndpoint= \
99+
100+
```
101+
9. Create the `amazon-vpc-lattice` GatewayClass:
102+
```bash
103+
kubectl apply -f examples/gatewayclass.yaml
104+
```
File renamed without changes.
File renamed without changes.

mkdocs.yml

Lines changed: 20 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -7,23 +7,27 @@ strict: true
77

88
nav:
99
- Home: index.md
10-
- Deployment: deploy.md
11-
- Getting Started: getstarted.md
12-
- Developer Guide: developer.md
13-
- Configuration:
14-
- Overview: configure/index.md
15-
- Environment Variables: configure/environment.md
16-
- TLS: configure/https.md
17-
- Custom Domain Name: configure/custom-domain-name.md
18-
- GRPC: configure/grpc.md
10+
- User Guides:
11+
- Quick Start: guides/deploy.md
12+
- Basic Setup: guides/getstarted.md
13+
- Concepts:
14+
- Design Overview: concepts/overview.md
15+
- Environment Variables: concepts/environment.md
16+
- TLS: concepts/https.md
17+
- Custom Domain Name: concepts/custom-domain-name.md
18+
- GRPC: concepts/grpc.md
19+
- Cross-Account Sharing: concepts/ram-sharing.md
1920
- API Specification: api-reference.md
20-
- API Types:
21-
- GRPCRoute: api-types/grpc-route.md
22-
- TargetGroupPolicy: api-types/target-group-policy.md
23-
- VpcAssociationPolicy: api-types/vpc-association-policy.md
24-
- AccessLogPolicy: api-types/access-log-policy.md
25-
- IAMAuthPolicy: api-types/iam-auth-policy.md
26-
- Design Overview: overview.md
21+
- API Reference:
22+
- GRPCRoute: reference/grpc-route.md
23+
- TargetGroupPolicy: reference/target-group-policy.md
24+
- VpcAssociationPolicy: reference/vpc-association-policy.md
25+
- AccessLogPolicy: reference/access-log-policy.md
26+
- IAMAuthPolicy: reference/iam-auth-policy.md
27+
- Contributing:
28+
- Developer Guide: contributing/developer.md
29+
- Developer Cheat Sheet: contributing/developer-cheat-sheet.md
30+
- FAQ: faq.md
2731

2832
plugins:
2933
- search

0 commit comments

Comments
 (0)