You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: CONTRIBUTING.md
+17-7Lines changed: 17 additions & 7 deletions
Original file line number
Diff line number
Diff line change
@@ -14,23 +14,27 @@ The following is a set of guidelines for contributing to the NGINX AWS Auto-Scal
14
14
*[Git Style Guide](#git-style-guide)
15
15
*[Go Style Guide](#go-style-guide)
16
16
17
-
[Code of Conduct](https://github.com/nginxinc/nginx-asg-sync/blob/main/CODE_OF_CONDUCT.md)
17
+
[Code of Conduct](CODE_OF_CONDUCT.md)
18
18
19
19
## Ask a Question
20
20
21
-
We will have a public forum soon where you can come and ask questions and have a discussion. For now please open an Issue on GitHub with the label `question`.
21
+
To ask a question please use [Github Discussions](https://github.com/nginxinc/nginx-asg-sync/discussions).
22
+
23
+
You can also join our [Community Slack](https://community.nginx.org/joinslack) which has a wider NGINX audience.
24
+
25
+
Please reserve GitHub issues for feature requests and bugs rather than general questions.
22
26
23
27
24
28
## Getting Started
25
29
26
-
Read the installation, configuration and building steps in the [README](https://github.com/nginxinc/nginx-asg-sync/blob/main/README.md).
30
+
Read the installation, configuration and building steps in the [README](README.md).
27
31
28
32
### Project Structure
29
33
30
34
* nginx-asg-sync is a service written in Go that works with NGINX Plus.
31
35
* The main code is found under `/cmd/sync/`
32
36
* Tools for building the service for supported Operating Systems are found under `/build/package`
33
-
*The project dependencies reside in the `/vendor`. We use [dep](https://github.com/golang/dep) for managing dependencies.
37
+
* We use [Go modules](https://github.com/golang/go/wiki/Modules) for managing dependencies.
34
38
* There is a Makefile at the project root used in the build steps.
35
39
36
40
## Contributing
@@ -46,16 +50,22 @@ To suggest an enhancement, please create an issue on GitHub with the label `enha
46
50
### Open a Pull Request
47
51
48
52
* Fork the repo, create a branch, submit a PR when your changes are tested and ready for review
49
-
* Fill in [our pull request template](https://github.com/nginxinc/nginx-asg-sync/blob/main/.github/PULL_REQUEST_TEMPLATE.md)
53
+
* Fill in [our pull request template](.github/PULL_REQUEST_TEMPLATE.md)
54
+
55
+
> **Note**
56
+
>
57
+
> If you’d like to implement a new feature, please consider creating a feature request issue first to start a discussion about the feature.
58
+
59
+
### Issue lifecycle
50
60
51
-
Note: if you’d like to implement a new feature, please consider creating a feature request issue first to start a discussion about the feature.
61
+
* When an issue or PR is created, it will be triaged by the core development team and assigned a label to indicate the type of issue it is (bug, feature request, etc) and to determine the milestone. Please see the [Issue Lifecycle](ISSUE_LIFECYCLE.md) document for more information.
52
62
53
63
## Style Guides
54
64
55
65
### Git Style Guide
56
66
57
67
* Keep a clean, concise and meaningful git commit history on your branch, rebasing locally and squashing before submitting a PR
58
-
* Follow the guidelines of writing a good commit message as described here https://chris.beams.io/posts/git-commit/ and summarised in the next few points
68
+
* Follow the guidelines of writing a good commit message as described here https://chris.beams.io/posts/git-commit/ and summarized in the next few points
59
69
* In the subject line, use the present tense ("Add feature" not "Added feature")
60
70
* In the subject line, use the imperative mood ("Move cursor to..." not "Moves cursor to...")
To ensure a balance between work carried out by the NGINX engineering team while encouraging community involvement on this project, we use the following issue lifecycle. (Note: The issue *creator* refers to the community member that created the issue. The issue *owner* refers to the NGINX team member that is responsible for managing the issue lifecycle.)
4
+
5
+
1. New issue created by community member.
6
+
7
+
8
+
2. Assign issue owner: All new issues are assigned an owner on the NGINX engineering team. This owner shepherds the issue through the subsequent stages in the issue lifecycle.
9
+
10
+
11
+
3. Determine issue type: This is done with automation where possible, and manually by the owner where necessary. The associated label is applied to the issue.
12
+
#### Possible Issue Types
13
+
`needs more info`: The owner should use the issue to request information from the creator. If we don't receive the needed information within 7 days, automation closes the issue.
14
+
15
+
`bug`: The implementation of a feature is not correct.
16
+
17
+
`proposal`: Request for a change. This can be a new feature, tackling technical debt, documentation changes, or improving existing features.
18
+
19
+
`question`: The owner converts the issue to a github discussion and engages the creator.
20
+
21
+
22
+
4. Determine milestone: The owner, in collaboration with the wider team (PM & engineering), determines what milestone to attach to an issue. Generally, milestones correspond to product releases - however there are two 'magic' milestones with special meanings (not tied to a specific release):
23
+
24
+
- Issues assigned to backlog: Our team is in favour of implementing the feature request/fixing the issue, however the implementation is not yet assigned to a concrete release. If and when a `backlog` issue aligns well with our roadmap, it will be scheduled for a concrete iteration. We review and update our roadmap at least once every quarter. The `backlog` list helps us shape our roadmap, but it is not the only source of input. Therefore, some `backlog` items may eventually be closed as `out of scope`, or relabelled as `backlog candidate` once it becomes clear that they do not align with our evolving roadmap.
25
+
26
+
- Issues assigned to `backlog candidate`: Our team does not intend to implement the feature/fix request described in the issue and wants the community to weigh in before we make our final decision.
27
+
28
+
`backlog` issues can be labeled by the owner as `help wanted` and/or `good first issue` as appropriate.
29
+
30
+
31
+
5. Promotion of `backlog candidate` issue to `backlog` issue: If an issue labelled `backlog candidate` receives more than 30 upvotes within 60 days, we promote the issue by applying the `backlog` label. While issues promoted in this manner have not been committed to a particular release, we welcome PRs from the community on them.
32
+
33
+
If an issue does not make our roadmap and has not been moved to a discussion, it is closed with the label `out of scope`. The goal is to get every issue in the issues list to one of the following end states:
Copy file name to clipboardExpand all lines: README.md
+12-4Lines changed: 12 additions & 4 deletions
Original file line number
Diff line number
Diff line change
@@ -14,7 +14,9 @@ nginx-asg-sync is an agent process that runs on the same instance as NGINX Plus.
14
14
15
15
When it sees that a scaling event has happened, it adds or removes the corresponding backend instances from the NGINX Plus configuration via the NGINX Plus API.
16
16
17
-
**Note:** nginx-asg-sync does not scale cloud scaling groups, it only gets the IP addresses of the instances in the groups.
17
+
> **Note**
18
+
>
19
+
> nginx-asg-sync does not scale cloud scaling groups, it only gets the IP addresses of the instances in the groups.
18
20
19
21
In the example below (AWS), NGINX Plus is configured to load balance among the instances of two AWS Auto Scaling groups -- Backend One and Backend Two.
20
22
nginx-asg-sync, running on the same instance as NGINX Plus, ensures that whenever you scale the Auto Scaling groups, the corresponding instances are added (or removed) from the NGINX Plus configuration.
@@ -24,7 +26,9 @@ nginx-asg-sync, running on the same instance as NGINX Plus, ensures that wheneve
24
26
Below you will find documentation on how to use nginx-asg-sync.
25
27
26
28
## Documentation
27
-
**Note:** the documentation for **the latest stable release** is available via a link in the description of the release. See the [releases page](https://github.com/nginxinc/nginx-asg-sync/releases).
29
+
> **Note**
30
+
>
31
+
> The documentation for **the latest stable release** is available via a link in the description of the release. See the [releases page](https://github.com/nginxinc/nginx-asg-sync/releases).
28
32
29
33
**Contents:**
30
34
-[NGINX Plus Integration with Cloud Autoscaling -- nginx-asg-sync](#nginx-plus-integration-with-cloud-autoscaling----nginx-asg-sync)
@@ -134,7 +138,9 @@ Small timeouts ensure that a health check will fail fast if the backend instance
134
138
135
139
When using AWS it's possible to filter out the instances that are not in a `InService` state of the [Lifecycle](https://docs.aws.amazon.com/autoscaling/ec2/userguide/AutoScalingGroupLifecycle.html) with the parameter `in_service` set to `true`. This will ensure that the IP won't be added until the instance is ready to accept requests.
136
140
This also works when an instance is being terminated: the asg-sync will remove the IP of an instance that went from the `InService` state to one of the terminating states.
137
-
**Note**: because the asg-sync works on a polling-based model, there will be a delay between the instance going to a terminating state and the asg-sync removing its IP from NGINX Plus. To guarantee that NGINX Plus doesn't send any requests to a terminated instance, make sure the instance goes to the `Terminating:Wait` state for a period greater than the interval `sync_interval_in_seconds`.
141
+
> **Note**
142
+
>
143
+
> Because the asg-sync works on a polling-based model, there will be a delay between the instance going to a terminating state and the asg-sync removing its IP from NGINX Plus. To guarantee that NGINX Plus doesn't send any requests to a terminated instance, make sure the instance goes to the `Terminating:Wait` state for a period greater than the interval `sync_interval_in_seconds`.
138
144
139
145
### Configuration for Cloud Providers
140
146
@@ -164,7 +170,9 @@ To build the binaries and packages for all the supported architectures, run `$ m
164
170
165
171
To build the binaries and packages for all the supported architectures in Docker, run `$ make build-goreleaser-docker`.
166
172
167
-
**Note: When building with GoReleaser the resulting binaries and packages are located in the `dist` folder.**
173
+
> **Note**
174
+
>
175
+
> When building with GoReleaser the resulting binaries and packages are located in the `dist` folder.
0 commit comments