├── .github ├── ISSUE_TEMPLATE │ ├── bug_report.md │ ├── document_request.md │ ├── feature_request.md │ └── propose_new_controller.md ├── PULL_REQUEST_TEMPLATE.md └── workflows │ └── issue-response.yml ├── .gitignore ├── ADOPTERS.md ├── ATTRIBUTION.md ├── CODEOWNERS ├── CODE_OF_CONDUCT.md ├── CONTRIBUTING.md ├── GOVERNANCE.md ├── LICENSE ├── NOTICE ├── OWNERS ├── OWNERS_ALIASES ├── README.md ├── docs ├── .editorconfig ├── .eslintignore ├── .eslintrc.json ├── .gitignore ├── .markdownlint.json ├── .markdownlintignore ├── .stylelintignore ├── .stylelintrc.json ├── README.md ├── archetypes │ ├── blog.md │ ├── default.md │ └── docs.md ├── assets │ ├── fonts │ │ └── .gitkeep │ ├── images │ │ └── .gitkeep │ ├── js │ │ ├── app.js │ │ ├── bootstrap.js │ │ ├── clipboard.js │ │ ├── darkmode-init.js │ │ ├── darkmode.js │ │ ├── highlight.js │ │ ├── index.js │ │ ├── instant.page.js │ │ ├── katex.js │ │ ├── lazysizes.js │ │ ├── mermaid.js │ │ └── vendor │ │ │ └── .gitkeep │ └── scss │ │ ├── app.scss │ │ ├── common │ │ ├── _dark.scss │ │ ├── _fonts.scss │ │ ├── _global.scss │ │ └── _variables.scss │ │ ├── components │ │ ├── _alerts.scss │ │ ├── _buttons.scss │ │ ├── _code.scss │ │ ├── _comments.scss │ │ ├── _forms.scss │ │ ├── _hint.scss │ │ ├── _images.scss │ │ ├── _mermaid.scss │ │ ├── _reference_table.scss │ │ ├── _search.scss │ │ ├── _syntax.scss │ │ └── _tables.scss │ │ ├── layouts │ │ ├── _footer.scss │ │ ├── _header.scss │ │ ├── _home.scss │ │ ├── _pages.scss │ │ ├── _posts.scss │ │ └── _sidebar.scss │ │ └── vendor │ │ └── .gitkeep ├── babel.config.js ├── config │ ├── _default │ │ ├── config.toml │ │ ├── menus.toml │ │ └── params.toml │ ├── postcss.config.js │ └── production │ │ └── config.toml ├── content │ ├── _index.md │ ├── blog │ │ ├── _index.md │ │ └── say-hello-to-doks │ │ │ ├── index.md │ │ │ └── say-hello-to-doks.png │ ├── docs │ │ ├── community │ │ │ ├── .gitignore │ │ │ ├── background.md │ │ │ ├── discussions.md │ │ │ ├── faq.md │ │ │ ├── how-it-works.md │ │ │ ├── images │ │ │ │ └── ack-how-it-works.png │ │ │ ├── overview.md │ │ │ └── releases.md │ │ ├── contributor-docs │ │ │ ├── api-inference.md │ │ │ ├── building-controller.md │ │ │ ├── code-generation.md │ │ │ ├── code-generator-config.md │ │ │ ├── code-organization.md │ │ │ ├── images │ │ │ │ ├── github-pr.png │ │ │ │ ├── multi-phase-code-generation.png │ │ │ │ └── operatorhub-preview.png │ │ │ ├── operatorhub-onboarding.md │ │ │ ├── overview.md │ │ │ ├── release.md │ │ │ ├── setup.md │ │ │ ├── tenets.md │ │ │ └── testing.md │ │ ├── tutorials │ │ │ ├── apigatewayv2-reference-example.md │ │ │ ├── aurora-serverless-v2.md │ │ │ ├── autoscaling-example.md │ │ │ ├── ec2-example.md │ │ │ ├── emr-on-eks-example.md │ │ │ ├── eventbridge-example.md │ │ │ ├── images │ │ │ │ └── networktopology.png │ │ │ ├── lambda-oci-example.md │ │ │ ├── memorydb-example.md │ │ │ ├── pipes-example.md │ │ │ ├── rds-example.md │ │ │ ├── sagemaker-example.md │ │ │ └── sqs-example.md │ │ └── user-docs │ │ │ ├── ack-tags.md │ │ │ ├── adopted-resource.md │ │ │ ├── authentication.md │ │ │ ├── authorization.md │ │ │ ├── cleanup.md │ │ │ ├── cross-account-resource-management.md │ │ │ ├── deletion-policy.md │ │ │ ├── drift-recovery.md │ │ │ ├── features.md │ │ │ ├── field-export.md │ │ │ ├── images │ │ │ └── authorization.png │ │ │ ├── install.md │ │ │ ├── irsa.md │ │ │ ├── leader-election.md │ │ │ ├── multi-region-resource-management.md │ │ │ ├── openshift.md │ │ │ └── resource-crud.md │ └── reference │ │ └── _index.md ├── data │ └── .gitkeep ├── design │ └── proposals │ │ ├── adoption │ │ ├── images │ │ │ └── adoption-sequence-diagram.png │ │ └── resource-adoption.md │ │ ├── carm │ │ ├── cross-account-resource-management.md │ │ └── images │ │ │ └── carm-sequence-diagram.png │ │ ├── codegen-refactor │ │ ├── designs │ │ │ ├── Current Dev Loop.txt │ │ │ ├── README.txt │ │ │ └── proposed_pipeline.txt │ │ ├── generator.md │ │ ├── images │ │ │ ├── current_pipeline.png │ │ │ ├── proposed_cleanup.png │ │ │ ├── proposed_gen.png │ │ │ └── proposed_pipeline.png │ │ ├── inference.md │ │ ├── model_cmd.md │ │ └── proposal-summary.md │ │ ├── controller-bootstrap │ │ ├── controller-bootstrap.md │ │ └── images │ │ │ ├── controller-bootstrap-command-line-arguments.png │ │ │ ├── controller-bootstrap-command-line-screenshot.png │ │ │ ├── controller-bootstrap-eks-directory-screenshot.png │ │ │ ├── controller-bootstrap-flowchart.png │ │ │ ├── controller-bootstrap-sequence-diagram.png │ │ │ └── controller-bootstrap-table.png │ │ ├── destructive-operations │ │ └── destructive-operations.md │ │ ├── late-initialization │ │ └── late-initialization.md │ │ ├── native-binding │ │ └── native-binding.md │ │ ├── resource-reference │ │ ├── cross-api-group.md │ │ └── resource-reference.md │ │ ├── secrets │ │ ├── example-fields.yaml │ │ ├── images │ │ │ ├── rds-db-instance-creation-backend-flowchart.png │ │ │ ├── rds-db-instance-creation-command-line-screenshot.png │ │ │ ├── rds-db-instance-creation-sequence-diagram.png │ │ │ └── rds-db-instance-creation-user-flowchart.png │ │ └── secrets.md │ │ ├── security-patches │ │ └── security-patches.md │ │ └── split-repo │ │ └── split-repo.md ├── images │ └── release-criteria.png ├── layouts │ ├── 404.html │ ├── _default │ │ ├── _markup │ │ │ └── .gitkeep │ │ ├── baseof.html │ │ ├── index.js │ │ ├── index.json │ │ ├── list.html │ │ ├── section.sitemap.xml │ │ └── single.html │ ├── blog │ │ ├── list.html │ │ └── single.html │ ├── contributors │ │ └── list.html │ ├── docs │ │ ├── list.html │ │ └── single.html │ ├── index.headers │ ├── index.html │ ├── index.redirects │ ├── partials │ │ ├── footer │ │ │ ├── alert.html │ │ │ ├── footer.html │ │ │ └── script-footer.html │ │ ├── head │ │ │ ├── favicons.html │ │ │ ├── head.html │ │ │ ├── opengraph.html │ │ │ ├── resource-hints.html │ │ │ ├── script-header.html │ │ │ ├── seo.html │ │ │ ├── structured-data.html │ │ │ ├── stylesheet.html │ │ │ └── twitter_cards.html │ │ ├── header │ │ │ └── header.html │ │ ├── main │ │ │ ├── blog-meta.html │ │ │ ├── breadcrumb.html │ │ │ ├── docs-navigation.html │ │ │ ├── edit-page.html │ │ │ └── headline-hash.html │ │ └── sidebar │ │ │ ├── docs-menu.html │ │ │ ├── docs-toc.html │ │ │ ├── list-card.html │ │ │ ├── reference-menu-item.html │ │ │ └── reference-menu.html │ ├── reference │ │ ├── list.html │ │ └── single.html │ ├── robots.txt │ ├── rss.xml │ ├── shortcodes │ │ ├── alert.html │ │ ├── email.html │ │ ├── hint.html │ │ ├── img-simple.html │ │ ├── img.html │ │ ├── mermaid.html │ │ ├── reference-resource.html │ │ └── video.html │ └── sitemap.xml ├── package-lock.json ├── package.json ├── requirements.txt ├── scripts │ ├── gen_reference.py │ ├── gen_services.py │ └── templates │ │ ├── resource.jinja2 │ │ └── services.jinja2 └── static │ ├── ack.png │ ├── android-chrome-192x192.png │ ├── android-chrome-512x512.png │ ├── apple-touch-icon.png │ ├── browserconfig.xml │ ├── css │ └── vendor │ │ └── .gitkeep │ ├── favicon-16x16.png │ ├── favicon-32x32.png │ ├── favicon.ico │ ├── fonts │ ├── KaTeX_AMS-Regular.ttf │ ├── KaTeX_AMS-Regular.woff │ ├── KaTeX_AMS-Regular.woff2 │ ├── KaTeX_Caligraphic-Bold.ttf │ ├── KaTeX_Caligraphic-Bold.woff │ ├── KaTeX_Caligraphic-Bold.woff2 │ ├── KaTeX_Caligraphic-Regular.ttf │ ├── KaTeX_Caligraphic-Regular.woff │ ├── KaTeX_Caligraphic-Regular.woff2 │ ├── KaTeX_Fraktur-Bold.ttf │ ├── KaTeX_Fraktur-Bold.woff │ ├── KaTeX_Fraktur-Bold.woff2 │ ├── KaTeX_Fraktur-Regular.ttf │ ├── KaTeX_Fraktur-Regular.woff │ ├── KaTeX_Fraktur-Regular.woff2 │ ├── KaTeX_Main-Bold.ttf │ ├── KaTeX_Main-Bold.woff │ ├── KaTeX_Main-Bold.woff2 │ ├── KaTeX_Main-BoldItalic.ttf │ ├── KaTeX_Main-BoldItalic.woff │ ├── KaTeX_Main-BoldItalic.woff2 │ ├── KaTeX_Main-Italic.ttf │ ├── KaTeX_Main-Italic.woff │ ├── KaTeX_Main-Italic.woff2 │ ├── KaTeX_Main-Regular.ttf │ ├── KaTeX_Main-Regular.woff │ ├── KaTeX_Main-Regular.woff2 │ ├── KaTeX_Math-BoldItalic.ttf │ ├── KaTeX_Math-BoldItalic.woff │ ├── KaTeX_Math-BoldItalic.woff2 │ ├── KaTeX_Math-Italic.ttf │ ├── KaTeX_Math-Italic.woff │ ├── KaTeX_Math-Italic.woff2 │ ├── KaTeX_SansSerif-Bold.ttf │ ├── KaTeX_SansSerif-Bold.woff │ ├── KaTeX_SansSerif-Bold.woff2 │ ├── KaTeX_SansSerif-Italic.ttf │ ├── KaTeX_SansSerif-Italic.woff │ ├── KaTeX_SansSerif-Italic.woff2 │ ├── KaTeX_SansSerif-Regular.ttf │ ├── KaTeX_SansSerif-Regular.woff │ ├── KaTeX_SansSerif-Regular.woff2 │ ├── KaTeX_Script-Regular.ttf │ ├── KaTeX_Script-Regular.woff │ ├── KaTeX_Script-Regular.woff2 │ ├── KaTeX_Size1-Regular.ttf │ ├── KaTeX_Size1-Regular.woff │ ├── KaTeX_Size1-Regular.woff2 │ ├── KaTeX_Size2-Regular.ttf │ ├── KaTeX_Size2-Regular.woff │ ├── KaTeX_Size2-Regular.woff2 │ ├── KaTeX_Size3-Regular.ttf │ ├── KaTeX_Size3-Regular.woff │ ├── KaTeX_Size3-Regular.woff2 │ ├── KaTeX_Size4-Regular.ttf │ ├── KaTeX_Size4-Regular.woff │ ├── KaTeX_Size4-Regular.woff2 │ ├── KaTeX_Typewriter-Regular.ttf │ ├── KaTeX_Typewriter-Regular.woff │ └── KaTeX_Typewriter-Regular.woff2 │ ├── images │ ├── bg-dark-large.png │ ├── bg-large.png │ └── vendor │ │ └── .gitkeep │ ├── js │ └── vendor │ │ └── .gitkeep │ ├── mstile-150x150.png │ ├── og.png │ ├── safari-pinned-tab.svg │ └── site.webmanifest └── scripts └── BASH_STYLE_CONVENTIONS.md /.github/ISSUE_TEMPLATE/bug_report.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Bug report 3 | about: Create a report to help us improve 4 | title: '' 5 | labels: bug 6 | assignees: '' 7 | 8 | --- 9 | 10 | **Describe the bug** 11 | A concise description of what the bug is. 12 | 13 | **Steps to reproduce** 14 | 15 | **Expected outcome** 16 | A concise description of what you expected to happen. 17 | 18 | **Environment** 19 | 20 | * Kubernetes version 21 | * Using EKS (yes/no), if so version? 22 | * AWS service targeted (S3, RDS, etc.) 23 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/document_request.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Documentation Request 3 | about: Create a documentation request to help us improve 4 | title: '' 5 | labels: documentation 6 | assignees: '' 7 | 8 | --- 9 | 10 | 11 | 12 | **What is the URL of the document?** 13 | 14 | 15 | 16 | **Which section(s) is the issue in?** 17 | 18 | 19 | 20 | **What needs fixing?** 21 | 22 | 23 | 24 | **Additional context** 25 | 26 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/feature_request.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Feature request 3 | about: Suggest an idea for this project 4 | title: '' 5 | labels: enhancement 6 | assignees: '' 7 | 8 | --- 9 | 10 | **Is your feature request related to a problem?** 11 | A description of what the problem is. For example: I'm frustrated when [...] 12 | 13 | **Describe the solution you'd like** 14 | A description of what you want to happen. 15 | 16 | **Describe alternatives you've considered** 17 | A description of any alternative solutions or features you've considered. 18 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/propose_new_controller.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Propose a new ACK service controller 3 | about: Template for proposing a new ACK service controller 4 | title: "[name] service controller" 5 | labels: Service Controller 6 | assignees: '' 7 | 8 | --- 9 | 10 | ## New ACK Service Controller 11 | 12 | Support for [service name] 13 | 14 | ### List of API resources 15 | 16 | List the API resources in order of importance to you: 17 | 18 | 1) [resource 1] 19 | 1) [resource 2] 20 | -------------------------------------------------------------------------------- /.github/PULL_REQUEST_TEMPLATE.md: -------------------------------------------------------------------------------- 1 | Issue #, if available: 2 | 3 | Description of changes: 4 | 5 | By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license. 6 | -------------------------------------------------------------------------------- /.github/workflows/issue-response.yml: -------------------------------------------------------------------------------- 1 | name: Issue Responder 2 | 3 | on: 4 | issues: 5 | types: [opened] 6 | 7 | permissions: 8 | issues: write 9 | 10 | jobs: 11 | add-sla-comment: 12 | runs-on: ubuntu-latest 13 | steps: 14 | - name: Check if issue opener is an org member 15 | id: check_membership 16 | uses: actions/github-script@v6 17 | with: 18 | script: | 19 | const authorAssociation = context.payload.issue.author_association; 20 | console.log("Author association:", authorAssociation); 21 | 22 | // Check if user is a MEMBER or OWNER 23 | const isMember = ['OWNER', 'MEMBER'].includes(authorAssociation); 24 | console.log("Is member:", isMember); 25 | return isMember; 26 | - name: Add SLA Comment if Not Org Member 27 | if: steps.check_membership.outputs.result == 'false' 28 | uses: actions/github-script@v6 29 | with: 30 | github-token: ${{ secrets.GITHUB_TOKEN }} 31 | script: | 32 | const issue = context.payload.issue; 33 | const issueNumber = issue.number; 34 | const username = issue.user.login; 35 | 36 | const slaMessage = `Hello @${username} 👋 Thank you for opening an issue in ACK! A maintainer will triage this issue soon.\n\nWe encourage community contributions, so if you're interested in tackling this yourself or suggesting a solution, please check out our [Contribution](https://github.com/aws-controllers-k8s/community/blob/main/CONTRIBUTING.md) and [Code of Conduct](https://github.com/aws-controllers-k8s/community/blob/main/CODE_OF_CONDUCT.md) guidelines.\n\nYou can find more information about ACK on our [website](https://aws-controllers-k8s.github.io/community/).`; 37 | 38 | await github.rest.issues.createComment({ 39 | owner: context.repo.owner, 40 | repo: context.repo.repo, 41 | issue_number: issueNumber, 42 | body: slaMessage 43 | }); 44 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | *.swp 3 | *~ 4 | .idea 5 | /docs/site 6 | bin 7 | build 8 | -------------------------------------------------------------------------------- /ADOPTERS.md: -------------------------------------------------------------------------------- 1 | # Who is using ACK? 2 | This file is created to show who's using ACK. 3 | 4 | The following is a self-reported list of users to help identify adoption and points of contact. 5 | 6 | ## Community 7 | If you would like to ask question from the community please join the [weekly community meeting](./README.md/#community-meeting). 8 | 9 | ## Add yourself 10 | If you are using ACK please consider adding yourself as a user by opening a pull request to this file. 11 | If you are open to others contacting you about your use of ACK on the Kubernets Slack workspace, add your Slack name as well. The ACK slack channel name is [aws-controllers-k8s](https://kubernetes.slack.com/archives/C0402D8JJS1) 12 | 13 | ## Adopters (Alphabetical) 14 | 15 | | Organization | Description | Contacts | Link | 16 | | --- | --- | --- | --- | 17 | | Adobe | Global Kubernetes cluster provisioning, stateful service infrastructure provisioning using multiple ACK controllers | `@eadasiak` | | 18 | | BT | Modern platform for applications, using declarative approach to AWS service instantiation to create rich system architectures | `@oldhamtj` | | 19 | | Continuum Industries | ‪Accelerate development of renewable infrastructure | `@Emil-Hansen` | [Continuum Industries](https://continuum.industries) | 20 | -------------------------------------------------------------------------------- /CODEOWNERS: -------------------------------------------------------------------------------- 1 | # Please see documentation of use of CODEOWNERS file at 2 | # https://help.github.com/articles/about-codeowners/ and 3 | # https://github.com/blog/2392-introducing-code-owners 4 | 5 | # Amazon SageMaker CodeOwners 6 | /test/e2e/sagemaker @akartsky @jkuruba @mbaijal @RedbackThomson @surajkota -------------------------------------------------------------------------------- /CODE_OF_CONDUCT.md: -------------------------------------------------------------------------------- 1 | ## Code of Conduct 2 | This project has adopted the [Amazon Open Source Code of Conduct](https://aws.github.io/code-of-conduct). 3 | For more information see the [Code of Conduct FAQ](https://aws.github.io/code-of-conduct-faq) or contact 4 | opensource-codeofconduct@amazon.com with any additional questions or comments. 5 | -------------------------------------------------------------------------------- /CONTRIBUTING.md: -------------------------------------------------------------------------------- 1 | # Contributing Guidelines 2 | 3 | Thank you for your interest in contributing to our project. Whether it's a bug report, new feature, correction, or additional documentation, we greatly value feedback and contributions from our community. 4 | 5 | Please read through this document before submitting any issues or pull requests to ensure we have all the necessary information to effectively respond to your bug report or contribution. 6 | 7 | ## Reporting Bugs/Feature Requests 8 | 9 | We welcome you to use the GitHub issue tracker to report bugs or suggest features. 10 | 11 | When filing an issue, please check existing open, or recently closed, issues to make sure somebody else hasn't already reported the issue. Please try to include as much information as you can. Details like these are incredibly useful: 12 | 13 | * A reproducible test case or series of steps 14 | * The version of our code being used 15 | * Any modifications you've made relevant to the bug 16 | * Anything unusual about your environment or deployment 17 | 18 | ## Contributing via Pull Requests 19 | Contributions via pull requests are much appreciated. Before sending us a pull request, please ensure that: 20 | 21 | 1. You are working against the latest source on the *master* branch. 22 | 2. You check existing open, and recently merged, pull requests to make sure someone else hasn't addressed the problem already. 23 | 3. You open an issue to discuss any significant work - we would hate for your time to be wasted. 24 | 25 | To send us a pull request, please: 26 | 27 | 1. Fork the repository. 28 | 2. Modify the source; please focus on the specific change you are contributing. If you also reformat all the code, it will be hard for us to focus on your change. 29 | 3. Ensure local tests pass. 30 | 4. Commit to your fork using clear commit messages. 31 | 5. Send us a pull request, answering any default questions in the pull request interface. 32 | 6. Pay attention to any automated CI failures reported in the pull request, and stay involved in the conversation. 33 | 34 | GitHub provides additional document on [forking a repository](https://help.github.com/articles/fork-a-repo/) and [creating a pull request](https://help.github.com/articles/creating-a-pull-request/). 35 | 36 | ## Finding contributions to work on 37 | Looking at the existing issues is a great way to find something to contribute on. As our projects, by default, use the default GitHub issue labels (enhancement/bug/duplicate/help wanted/invalid/question/wontfix), looking at any 'help wanted' issues is a great place to start. 38 | 39 | ## Developer documentation 40 | [See the documentation](https://aws-controllers-k8s.github.io/community/docs/contributor-docs/overview/) for detailed development information. 41 | 42 | ## Code of Conduct 43 | This project has adopted the [Amazon Open Source Code of Conduct](https://aws.github.io/code-of-conduct). 44 | 45 | For more information see the [Code of Conduct FAQ](https://aws.github.io/code-of-conduct-faq) or contact opensource-codeofconduct@amazon.com with any additional questions or comments. 46 | 47 | ## Security issue notifications 48 | If you discover a potential security issue in this project we ask that you notify AWS/Amazon Security via our [vulnerability reporting page](http://aws.amazon.com/security/vulnerability-reporting/). Please do **not** create a public github issue. 49 | 50 | ## Licensing 51 | See the [LICENSE](LICENSE) file for our project's licensing. We will ask you to confirm the licensing of your contribution. 52 | -------------------------------------------------------------------------------- /GOVERNANCE.md: -------------------------------------------------------------------------------- 1 | # Project governance 2 | 3 | This document lays out the guidelines under which the AWS Controllers for Kubernetes (ACK) project will be governed. 4 | The goal is to make sure that the roles and responsibilities are well defined and clarify on how decisions are made. 5 | 6 | ## Roles 7 | 8 | In the context of ACK, we consider the following roles: 9 | 10 | * __Users__ ... everyone using ACK, typically willing to provide feedback on ACK by proposing features and/or filing issues. 11 | * __Contributors__ ... everyone contributing code, documentation, examples, testing infra, and participating in feature proposals as well as design discussions. Code contributions will require a Developer Certificate of Origin (DCO). 12 | * __Maintainers__ ... are responsible for engaging with and assisting contributors to iterate on the contributions until it reaches acceptable quality. Maintainers can decide whether the contributions can be accepted into the project or rejected. Any active contributor meeting the project quality can be made a Maintainer by the Advisory Board. 13 | * __Advisory Board__ ... is responsible for defining the guidelines and processes that the project operates under. 14 | 15 | The initial members of the Advisory Board are `@jaypipes` and `@mhausenblas`. 16 | 17 | 18 | ## Communication 19 | 20 | The primary mechanism for communication will be via the `#aws-controllers-k8s` channel on the Kubernetes Slack community. 21 | All features and bug fixes will be tracked as issues in GitHub. All decisions will be documented in GitHub issues. 22 | 23 | In the future, we may consider using a public mailing list, which can be better archived. 24 | 25 | ## Roadmap Planning 26 | 27 | Maintainers will share roadmap and release versions as milestones in GitHub. 28 | 29 | ## Release Management 30 | 31 | The Advisory Board will propose a release management proposal via a GitHub issue and resolve it there. 32 | 33 | ## Other relevant governance resources 34 | 35 | * The ACK [Contributing Guidelines](CONTRIBUTING.md) 36 | * Our [Code of Conduct](CODE_OF_CONDUCT.md) 37 | -------------------------------------------------------------------------------- /NOTICE: -------------------------------------------------------------------------------- 1 | Copyright 2019 Amazon.com, Inc. or its affiliates. All Rights Reserved. 2 | -------------------------------------------------------------------------------- /OWNERS: -------------------------------------------------------------------------------- 1 | # See the OWNERS docs at https://go.k8s.io/owners 2 | 3 | approvers: 4 | - core-ack-team -------------------------------------------------------------------------------- /OWNERS_ALIASES: -------------------------------------------------------------------------------- 1 | # See the OWNERS docs at https://go.k8s.io/owners#owners_aliases 2 | 3 | aliases: 4 | core-ack-team: 5 | - a-hilaly 6 | - jlbutler 7 | - ivelichkovich 8 | - jljaco 9 | emeritus-core-ack-team: 10 | - jaypipes 11 | - mhausenblas 12 | - RedbackThomson 13 | - vijtrip2 -------------------------------------------------------------------------------- /docs/.editorconfig: -------------------------------------------------------------------------------- 1 | # editorconfig.org 2 | 3 | root = true 4 | 5 | [*] 6 | indent_style = space 7 | indent_size = 2 8 | end_of_line = lf 9 | charset = utf-8 10 | trim_trailing_whitespace = true 11 | insert_final_newline = true -------------------------------------------------------------------------------- /docs/.eslintignore: -------------------------------------------------------------------------------- 1 | assets/js/index.js 2 | assets/js/katex.js 3 | assets/js/vendor 4 | node_modules -------------------------------------------------------------------------------- /docs/.eslintrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "env": { 3 | "browser": true, 4 | "commonjs": true, 5 | "es6": true, 6 | "node": true 7 | }, 8 | "extends": "eslint:recommended", 9 | "globals": { 10 | "Atomics": "readonly", 11 | "SharedArrayBuffer": "readonly" 12 | }, 13 | "parserOptions": { 14 | "ecmaVersion": 2018, 15 | "sourceType": "module" 16 | }, 17 | "rules": { 18 | "no-console": 0, 19 | "quotes": ["error", "single"], 20 | "comma-dangle": [ 21 | "error", 22 | { 23 | "arrays": "always-multiline", 24 | "objects": "always-multiline", 25 | "imports": "always-multiline", 26 | "exports": "always-multiline", 27 | "functions": "ignore" 28 | } 29 | ] 30 | } 31 | } -------------------------------------------------------------------------------- /docs/.gitignore: -------------------------------------------------------------------------------- 1 | bin 2 | node_modules 3 | public 4 | resources 5 | # Local Netlify folder 6 | .netlify 7 | TODO -------------------------------------------------------------------------------- /docs/.markdownlint.json: -------------------------------------------------------------------------------- 1 | { 2 | "comment": "Hyas rules", 3 | 4 | "default": true, 5 | "line_length": false, 6 | "no-inline-html": false, 7 | "no-trailing-punctuation": false, 8 | "no-duplicate-heading": false, 9 | "no-bare-urls": false 10 | } -------------------------------------------------------------------------------- /docs/.markdownlintignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | CHANGELOG.md 3 | README.md -------------------------------------------------------------------------------- /docs/.stylelintignore: -------------------------------------------------------------------------------- 1 | assets/scss/components/_syntax.scss 2 | assets/scss/vendor 3 | node_modules -------------------------------------------------------------------------------- /docs/.stylelintrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "stylelint-config-standard", 3 | "rules": { 4 | "no-empty-source": null, 5 | "string-quotes": "double", 6 | "at-rule-no-unknown": [ 7 | true, 8 | { 9 | "ignoreAtRules": [ 10 | "extend", 11 | "at-root", 12 | "debug", 13 | "warn", 14 | "error", 15 | "if", 16 | "else", 17 | "for", 18 | "each", 19 | "while", 20 | "mixin", 21 | "include", 22 | "content", 23 | "return", 24 | "function", 25 | "tailwind", 26 | "apply", 27 | "responsive", 28 | "variants", 29 | "screen" 30 | ] 31 | } 32 | ] 33 | } 34 | } -------------------------------------------------------------------------------- /docs/README.md: -------------------------------------------------------------------------------- 1 | 🟩 [View the live docs](https://aws-controllers-k8s.github.io/community/) 2 | 3 | # Writing and publishing docs 4 | 5 | Our docs are written using [Hugo](https://gohugo.io/) using the 6 | [Doks](https://getdoks.org/) theme as the base. 7 | 8 | Hugo is a static site generator. It converts markdown files to static html 9 | pages. Edit the markdown files, and view the rendered site with the Hugo server. 10 | 11 | ## Build the docs locally 12 | 13 | ### Install Hugo 14 | 15 | The development environment for Hugo requires NodeJS, with a number of 16 | dependencies that need to be downloaded from the `package.json` file. 17 | 18 | ``` 19 | npm install 20 | ``` 21 | 22 | ### Generating the reference 23 | 24 | Our documentation contains an API reference section that is autogenerated from 25 | the custom resource definitions of each ACK service. These reference documents 26 | need to be re-generated each time there is a change to any of the fields or 27 | versions of any of these CRDs. 28 | 29 | The `scripts/gen_reference.py` file will attempt to navigate every service 30 | controller repository in the `$GOPATH` and build a full model of every custom 31 | resource and version based off the CRD base files. It will then output these 32 | models using jinja2 templates into markdown files under 33 | `content/reference///.md`. 34 | 35 | To run `scripts/gen_reference.py` navigate to `community/docs`, install the 36 | python `requirements.txt` file and then run `python3 ./scripts/gen_reference.py`. 37 | 38 | ### Local preview 39 | 40 | 🟧 Test locally, including both the content and the navigation structure. 41 | 42 | Note: Before you can run the local preview for the first time, you will need to [generate the API reference](#generating-the-reference). 43 | 44 | The docs are just Markdown files and in order to see the rendered preview 45 | locally (before PRing the repo), do: 46 | 47 | ``` 48 | $ npm start 49 | Start building sites … 50 | hugo v0.87.0-B0C541E4+extended linux/amd64 BuildDate=2021-08-03T10:57:28Z VendorInfo=gohugoio 51 | 52 | | EN 53 | -------------------+------ 54 | Pages | 112 55 | Paginator pages | 0 56 | Non-page files | 5 57 | Static files | 75 58 | Processed images | 0 59 | Aliases | 0 60 | Sitemaps | 1 61 | Cleaned | 0 62 | 63 | Built in 877 ms 64 | Watching for changes in /local/home/go/src/github.com/aws-controllers-k8s/community/docs/{archetypes,assets,babel.config.js,content,data,layouts,node_modules,package.json,static} 65 | Watching for config changes in /local/home/go/src/github.com/aws-controllers-k8s/community/docs/config/_default 66 | Environment: "development" 67 | Serving pages from memory 68 | Running in Fast Render Mode. For full rebuilds on change: hugo server --disableFastRender 69 | Web Server is available at http://localhost:1313/ (bind address 0.0.0.0) 70 | Press Ctrl+C to stop 71 | ``` 72 | 73 | ### Writing 74 | 75 | The [Hugo documentation](https://gohugo.io/content-management/) includes 76 | information on the structure of the `docs/` folder, and writing in markdown. 77 | 78 | ### Publish 79 | 80 | To publish updated docs, commit changes to the markdown files and open a pull 81 | request. When the commit is merged, the updated documentation is published by a 82 | Prow job that runs whenever a new tag of any controller is published, or if any 83 | part of the documentation is updated. 84 | 85 | [View the status of Prow jobs.](https://prow.ack.aws.dev/?job=*-docs-release) 86 | -------------------------------------------------------------------------------- /docs/archetypes/blog.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "{{ replace .Name "-" " " | title }}" 3 | description: "" 4 | lead: "" 5 | date: {{ .Date }} 6 | lastmod: {{ .Date }} 7 | draft: true 8 | weight: 50 9 | images: ["{{ .Name | urlize }}.jpg"] 10 | contributors: [] 11 | --- 12 | 13 | {{< img src="{{ .Name | urlize }}.jpg" alt="{{ replace .Name "-" " " | title }}" caption="{{ replace .Name "-" " " | title }}" class="wide" >}} 14 | -------------------------------------------------------------------------------- /docs/archetypes/default.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "{{ replace .Name "-" " " | title }}" 3 | description: "" 4 | date: {{ .Date }} 5 | lastmod: {{ .Date }} 6 | draft: true 7 | images: [] 8 | --- 9 | -------------------------------------------------------------------------------- /docs/archetypes/docs.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "{{ replace .Name "-" " " | title }}" 3 | description: "" 4 | lead: "" 5 | date: {{ .Date }} 6 | lastmod: {{ .Date }} 7 | draft: true 8 | images: [] 9 | menu: 10 | docs: 11 | parent: "" 12 | weight: 999 13 | toc: true 14 | --- 15 | 16 | {{< img src="{{ .Name | urlize }}.jpg" alt="{{ replace .Name "-" " " | title }}" caption="{{ replace .Name "-" " " | title }}" >}} 17 | -------------------------------------------------------------------------------- /docs/assets/fonts/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-controllers-k8s/community/fea3f369a476b1fa105223695e2f67d279f4b298/docs/assets/fonts/.gitkeep -------------------------------------------------------------------------------- /docs/assets/images/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-controllers-k8s/community/fea3f369a476b1fa105223695e2f67d279f4b298/docs/assets/images/.gitkeep -------------------------------------------------------------------------------- /docs/assets/js/app.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-controllers-k8s/community/fea3f369a476b1fa105223695e2f67d279f4b298/docs/assets/js/app.js -------------------------------------------------------------------------------- /docs/assets/js/bootstrap.js: -------------------------------------------------------------------------------- 1 | import 'bootstrap/dist/js/bootstrap.bundle.min.js' 2 | // import 'bootstrap/dist/js/bootstrap.min.js' 3 | -------------------------------------------------------------------------------- /docs/assets/js/clipboard.js: -------------------------------------------------------------------------------- 1 | import Clipboard from 'clipboard'; 2 | 3 | var pre = document.getElementsByTagName('pre'); 4 | 5 | for (var i = 0; i < pre.length; ++ i) 6 | { 7 | var element = pre[i]; 8 | var mermaid = element.getElementsByClassName('language-mermaid')[0]; 9 | 10 | if (mermaid == null) { 11 | element.insertAdjacentHTML('afterbegin', ''); 12 | } 13 | } 14 | 15 | var clipboard = new Clipboard('.btn-copy', { 16 | 17 | target: function(trigger) { 18 | return trigger.nextElementSibling; 19 | }, 20 | 21 | }); 22 | 23 | clipboard.on('success', function(e) { 24 | 25 | /* 26 | console.info('Action:', e.action); 27 | console.info('Text:', e.text); 28 | console.info('Trigger:', e.trigger); 29 | */ 30 | 31 | e.clearSelection(); 32 | }); 33 | 34 | clipboard.on('error', function(e) { 35 | console.error('Action:', e.action); 36 | console.error('Trigger:', e.trigger); 37 | }); 38 | -------------------------------------------------------------------------------- /docs/assets/js/darkmode-init.js: -------------------------------------------------------------------------------- 1 | const globalDark = window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches; 2 | const localMode = localStorage.getItem('theme'); 3 | 4 | if (globalDark && (localMode === null)) { 5 | localStorage.setItem('theme', 'dark'); 6 | document.documentElement.setAttribute('data-dark-mode', ''); 7 | } 8 | 9 | if (globalDark && (localMode === 'dark')) { 10 | document.documentElement.setAttribute('data-dark-mode', ''); 11 | } 12 | 13 | if (localMode === 'dark') { 14 | document.documentElement.setAttribute('data-dark-mode', ''); 15 | } -------------------------------------------------------------------------------- /docs/assets/js/darkmode.js: -------------------------------------------------------------------------------- 1 | const mode = document.getElementById('mode'); 2 | if (mode !== null) { 3 | window.matchMedia('(prefers-color-scheme: dark)').addEventListener('change', event => { 4 | 5 | if (event.matches) { 6 | localStorage.setItem('theme', 'dark'); 7 | document.documentElement.setAttribute('data-dark-mode', ''); 8 | } else { 9 | localStorage.setItem('theme', 'light'); 10 | document.documentElement.removeAttribute('data-dark-mode'); 11 | } 12 | }) 13 | 14 | mode.addEventListener('click', () => { 15 | document.documentElement.toggleAttribute('data-dark-mode'); 16 | localStorage.setItem('theme', document.documentElement.hasAttribute('data-dark-mode') ? 'dark' : 'light'); 17 | }); 18 | 19 | if (localStorage.getItem('theme') === 'dark') { 20 | document.documentElement.setAttribute('data-dark-mode', ''); 21 | } else { 22 | document.documentElement.removeAttribute('data-dark-mode'); 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /docs/assets/js/highlight.js: -------------------------------------------------------------------------------- 1 | import hljs from 'highlight.js/lib/core'; 2 | 3 | import javascript from 'highlight.js/lib/languages/javascript'; 4 | import json from 'highlight.js/lib/languages/json'; 5 | import bash from 'highlight.js/lib/languages/bash'; 6 | import xml from 'highlight.js/lib/languages/xml'; 7 | import ini from 'highlight.js/lib/languages/ini'; 8 | import yaml from 'highlight.js/lib/languages/yaml'; 9 | import go from 'highlight.js/lib/languages/go'; 10 | import markdown from 'highlight.js/lib/languages/markdown'; 11 | 12 | hljs.registerLanguage('javascript', javascript); 13 | hljs.registerLanguage('json', json); 14 | hljs.registerLanguage('bash', bash); 15 | hljs.registerLanguage('html', xml); 16 | hljs.registerLanguage('ini', ini); 17 | hljs.registerLanguage('toml', ini); 18 | hljs.registerLanguage('yaml', yaml); 19 | hljs.registerLanguage('go', go); 20 | hljs.registerLanguage('md', markdown); 21 | 22 | document.addEventListener('DOMContentLoaded', () => { 23 | document.querySelectorAll('pre code:not(.language-mermaid)').forEach((block) => { 24 | hljs.highlightElement(block); 25 | }); 26 | }); 27 | -------------------------------------------------------------------------------- /docs/assets/js/index.js: -------------------------------------------------------------------------------- 1 | var suggestions = document.getElementById('suggestions'); 2 | var userinput = document.getElementById('userinput'); 3 | 4 | document.addEventListener('keydown', inputFocus); 5 | 6 | function inputFocus(e) { 7 | 8 | if (e.keyCode === 191 ) { 9 | e.preventDefault(); 10 | userinput.focus(); 11 | } 12 | 13 | if (e.keyCode === 27 ) { 14 | userinput.blur(); 15 | suggestions.classList.add('d-none'); 16 | } 17 | 18 | } 19 | 20 | document.addEventListener('click', function(event) { 21 | 22 | var isClickInsideElement = suggestions.contains(event.target); 23 | 24 | if (!isClickInsideElement) { 25 | suggestions.classList.add('d-none'); 26 | } 27 | 28 | }); 29 | 30 | /* 31 | Source: 32 | - https://dev.to/shubhamprakash/trap-focus-using-javascript-6a3 33 | */ 34 | 35 | document.addEventListener('keydown',suggestionFocus); 36 | 37 | function suggestionFocus(e){ 38 | 39 | const focusableSuggestions= suggestions.querySelectorAll('a'); 40 | const focusable= [...focusableSuggestions]; 41 | const index = focusable.indexOf(document.activeElement); 42 | 43 | let nextIndex = 0; 44 | 45 | if (e.keyCode === 38) { 46 | e.preventDefault(); 47 | nextIndex= index > 0 ? index-1 : 0; 48 | focusableSuggestions[nextIndex].focus(); 49 | } 50 | else if (e.keyCode === 40) { 51 | e.preventDefault(); 52 | nextIndex= index+1 < focusable.length ? index+1 : index; 53 | focusableSuggestions[nextIndex].focus(); 54 | } 55 | 56 | } 57 | 58 | 59 | /* 60 | Source: 61 | - https://github.com/nextapps-de/flexsearch#index-documents-field-search 62 | - https://raw.githack.com/nextapps-de/flexsearch/master/demo/autocomplete.html 63 | */ 64 | 65 | (function(){ 66 | 67 | var index = new FlexSearch.Document({ 68 | tokenize: "forward", 69 | cache: 100, 70 | document: { 71 | id: 'id', 72 | store: [ 73 | "href", "title", "description" 74 | ], 75 | index: ["title", "description", "content"] 76 | } 77 | }); 78 | 79 | 80 | // Not yet supported: https://github.com/nextapps-de/flexsearch#complex-documents 81 | 82 | // https://discourse.gohugo.io/t/range-length-or-last-element/3803/2 83 | 84 | {{ $list := (where .Site.Pages "Section" "in" .Site.Params.documentationSections) -}} 85 | {{ $len := (len $list) -}} 86 | 87 | index.add( 88 | {{ range $index, $element := $list -}} 89 | { 90 | id: {{ $index }}, 91 | href: "{{ .Permalink }}", 92 | title: {{ .Title | jsonify }}, 93 | description: {{ .Params.description | jsonify }}, 94 | content: {{ .Content | jsonify }} 95 | }) 96 | {{ if ne (add $index 1) $len -}} 97 | .add( 98 | {{ end -}} 99 | {{ end -}} 100 | ; 101 | 102 | userinput.addEventListener('input', show_results, true); 103 | suggestions.addEventListener('click', accept_suggestion, true); 104 | 105 | function show_results(){ 106 | const maxResult = 5; 107 | 108 | var value = this.value; 109 | var results = index.search(value, {limit: maxResult, enrich: true}); 110 | 111 | suggestions.classList.remove('d-none'); 112 | suggestions.innerHTML = ""; 113 | 114 | //flatSearch now returns results for each index field. create a single list 115 | const flatResults = {}; //keyed by href to dedupe results 116 | results.forEach(result=>{ 117 | result.result.forEach(r=>{ 118 | flatResults[r.doc.href] = r.doc; 119 | }); 120 | }); 121 | 122 | //construct a list of suggestions list 123 | for(const href in flatResults) { 124 | const doc = flatResults[href]; 125 | 126 | const entry = document.createElement('div'); 127 | entry.innerHTML = ''; 128 | 129 | entry.querySelector('a').href = href; 130 | entry.querySelector('span:first-child').textContent = doc.title; 131 | entry.querySelector('span:nth-child(2)').textContent = doc.description; 132 | 133 | suggestions.appendChild(entry); 134 | if(suggestions.childElementCount == maxResult) break; 135 | } 136 | } 137 | 138 | function accept_suggestion(){ 139 | 140 | while(suggestions.lastChild){ 141 | 142 | suggestions.removeChild(suggestions.lastChild); 143 | } 144 | 145 | return false; 146 | } 147 | 148 | }()); 149 | -------------------------------------------------------------------------------- /docs/assets/js/instant.page.js: -------------------------------------------------------------------------------- 1 | import 'instant.page'; 2 | -------------------------------------------------------------------------------- /docs/assets/js/katex.js: -------------------------------------------------------------------------------- 1 | document.addEventListener('DOMContentLoaded', function() { 2 | renderMathInElement(document.body, { 3 | delimiters: [ 4 | {left: '$$', right: '$$', display: true}, 5 | {left: '$', right: '$', display: false}, 6 | {left: '\\(', right: '\\)', display: false}, 7 | {left: '\\[', right: '\\]', display: true}, 8 | ], 9 | }); 10 | }); 11 | -------------------------------------------------------------------------------- /docs/assets/js/lazysizes.js: -------------------------------------------------------------------------------- 1 | import 'lazysizes'; 2 | -------------------------------------------------------------------------------- /docs/assets/js/mermaid.js: -------------------------------------------------------------------------------- 1 | import mermaid from 'mermaid/dist/mermaid'; 2 | 3 | var config = { 4 | theme: 'default', 5 | fontFamily: '"Open Sans", -apple-system, blinkmacsystemfont, "Segoe UI", roboto, "Helvetica Neue", arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";', 6 | }; 7 | 8 | document.addEventListener('DOMContentLoaded', () => { 9 | mermaid.initialize(config); 10 | mermaid.init(undefined, '.language-mermaid'); 11 | }); 12 | -------------------------------------------------------------------------------- /docs/assets/js/vendor/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-controllers-k8s/community/fea3f369a476b1fa105223695e2f67d279f4b298/docs/assets/js/vendor/.gitkeep -------------------------------------------------------------------------------- /docs/assets/scss/app.scss: -------------------------------------------------------------------------------- 1 | /** Import Bootstrap functions */ 2 | @import "bootstrap/scss/functions"; 3 | 4 | /** Import theme variables */ 5 | @import "common/variables"; 6 | 7 | /** Import Bootstrap */ 8 | @import "bootstrap/scss/bootstrap"; 9 | 10 | /** Import highlight.js */ 11 | @import "highlight.js/scss/github-dark-dimmed"; 12 | 13 | /** Import KaTeX */ 14 | @import "katex/dist/katex"; 15 | 16 | /** Import theme styles */ 17 | @import "common/fonts"; 18 | @import "common/global"; 19 | @import "common/dark"; 20 | @import "components/alerts"; 21 | @import "components/buttons"; 22 | @import "components/code"; 23 | @import "components/syntax"; 24 | @import "components/comments"; 25 | @import "components/forms"; 26 | @import "components/hint"; 27 | @import "components/images"; 28 | @import "components/mermaid"; 29 | @import "components/reference_table"; 30 | @import "components/search"; 31 | @import "components/tables"; 32 | @import "layouts/footer"; 33 | @import "layouts/header"; 34 | @import "layouts/home"; 35 | @import "layouts/pages"; 36 | @import "layouts/posts"; 37 | @import "layouts/sidebar"; 38 | -------------------------------------------------------------------------------- /docs/assets/scss/common/_fonts.scss: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-controllers-k8s/community/fea3f369a476b1fa105223695e2f67d279f4b298/docs/assets/scss/common/_fonts.scss -------------------------------------------------------------------------------- /docs/assets/scss/common/_global.scss: -------------------------------------------------------------------------------- 1 | html { 2 | height: 100%; 3 | } 4 | 5 | body { 6 | min-height: 100%; 7 | } 8 | 9 | .contributors .content, 10 | .blog .content, 11 | .page .content, 12 | .error404 .content, 13 | .docs.list .content, 14 | .tutorial.list .content, 15 | .showcase.list .content { 16 | padding-top: 1rem; 17 | padding-bottom: 3rem; 18 | } 19 | 20 | h1, 21 | h2, 22 | h3, 23 | h4, 24 | h5, 25 | h6, 26 | .h1, 27 | .h2, 28 | .h3, 29 | .h4, 30 | .h5, 31 | .h6 { 32 | margin: 2rem 0 1rem; 33 | } 34 | 35 | @include media-breakpoint-up(md) { 36 | body { 37 | font-size: $font-size-md; 38 | padding-top: 4rem !important; 39 | } 40 | 41 | h1, 42 | h2, 43 | h3, 44 | h4, 45 | h5, 46 | h6, 47 | .h1, 48 | .h2, 49 | .h3, 50 | .h4, 51 | .h5, 52 | .h6 { 53 | margin-bottom: 1.125rem; 54 | } 55 | } 56 | 57 | .home { 58 | background-image: url(images/escheresque.png); 59 | } 60 | 61 | .home h1 { 62 | /* font-size: calc(1.375rem + 1.5vw); */ 63 | font-size: calc(1.875rem + 1.5vw); 64 | } 65 | 66 | a:hover, 67 | a:focus { 68 | text-decoration: underline; 69 | } 70 | 71 | a.btn:hover, 72 | a.btn:focus { 73 | text-decoration: none; 74 | } 75 | 76 | .section { 77 | padding-top: 5rem; 78 | padding-bottom: 5rem; 79 | } 80 | 81 | .section-md { 82 | padding-top: 3rem; 83 | padding-bottom: 3rem; 84 | } 85 | 86 | .section-sm { 87 | padding-top: 1rem; 88 | padding-bottom: 1rem; 89 | } 90 | 91 | /* 92 | .section svg { 93 | display: inline-block; 94 | width: 2rem; 95 | height: 2rem; 96 | vertical-align: text-top; 97 | } 98 | */ 99 | 100 | body { 101 | padding-top: 3.5625rem; 102 | } 103 | 104 | .docs-sidebar { 105 | order: 2; 106 | } 107 | 108 | @include media-breakpoint-up(lg) { 109 | .docs-sidebar { 110 | order: 0; 111 | } 112 | 113 | @supports ((position:-webkit-sticky) or (position:sticky)) { 114 | .docs-sidebar { 115 | position: -webkit-sticky; 116 | position: sticky; 117 | top: 4rem; 118 | z-index: 1000; 119 | height: calc(100vh - 4rem); 120 | } 121 | } 122 | } 123 | 124 | @include media-breakpoint-up(xl) { 125 | .docs-sidebar { 126 | flex: 0 1 320px; 127 | } 128 | } 129 | 130 | .docs-links { 131 | padding-bottom: 5rem; 132 | } 133 | 134 | @include media-breakpoint-up(lg) { 135 | @supports ((position: -webkit-sticky) or (position: sticky)) { 136 | .docs-links { 137 | max-height: calc(100vh - 4rem); 138 | overflow-y: scroll; 139 | } 140 | } 141 | } 142 | 143 | @include media-breakpoint-up(lg) { 144 | .docs-links { 145 | display: block; 146 | width: auto; 147 | margin-right: -1.5rem; 148 | padding-bottom: 4rem; 149 | } 150 | } 151 | 152 | .docs-toc { 153 | order: 2; 154 | } 155 | 156 | @supports ((position:-webkit-sticky) or (position:sticky)) { 157 | .docs-toc { 158 | position: -webkit-sticky; 159 | position: sticky; 160 | top: 4rem; 161 | height: calc(100vh - 4rem); 162 | overflow-y: auto; 163 | } 164 | } 165 | 166 | .docs-content { 167 | padding-bottom: 3rem; 168 | order: 1; 169 | } 170 | 171 | .docs-content img { 172 | max-width: 100%; 173 | } 174 | 175 | .docs-navigation { 176 | border-top: 1px solid $gray-200; 177 | margin-top: 2rem; 178 | margin-bottom: 0; 179 | padding-top: 2rem; 180 | } 181 | 182 | .docs-navigation a { 183 | font-size: $font-size-base * 0.9; 184 | } 185 | 186 | @include media-breakpoint-up(lg) { 187 | .docs-navigation { 188 | margin-bottom: -1rem; 189 | } 190 | 191 | .docs-navigation a { 192 | font-size: $font-size-base; 193 | } 194 | } 195 | 196 | .navbar a:hover, 197 | .navbar a:focus { 198 | text-decoration: none; 199 | } 200 | 201 | #TableOfContents ul { 202 | padding-left: 0; 203 | list-style: none; 204 | } 205 | 206 | ::selection { 207 | background: rgba(212, 53, 159, 0.2); 208 | } 209 | 210 | .bg-dots { 211 | background-image: radial-gradient($gray-300 15%, transparent 15%); 212 | background-position: 0 0; 213 | background-size: 1rem 1rem; 214 | -webkit-mask: linear-gradient(to top, #fff, transparent); 215 | mask: linear-gradient(to top, #fff, transparent); 216 | width: 100%; 217 | height: 9rem; 218 | margin-top: -10rem; 219 | z-index: -1; 220 | } 221 | 222 | .bg-dots-md { 223 | margin-top: -11rem; 224 | } 225 | 226 | .bg-dots-lg { 227 | margin-top: -12rem; 228 | } 229 | 230 | .katex { 231 | font-size: $font-size-md; 232 | } 233 | 234 | .docs-content img { 235 | padding: 0.5rem; 236 | } 237 | -------------------------------------------------------------------------------- /docs/assets/scss/components/_alerts.scss: -------------------------------------------------------------------------------- 1 | .alert { 2 | font-family: $font-family-monospace; 3 | font-size: $font-size-sm; 4 | } 5 | 6 | .alert-icon { 7 | margin-right: 0.75rem; 8 | } 9 | 10 | .docs .alert { 11 | margin: 2rem -1.5rem; 12 | } 13 | 14 | .alert .alert-link { 15 | text-decoration: underline; 16 | } 17 | 18 | .alert-dark { 19 | color: $white; 20 | background-color: $black; 21 | } 22 | 23 | .alert-dark .alert-link { 24 | color: $white; 25 | } 26 | 27 | .alert-light { 28 | color: $black; 29 | } 30 | 31 | .alert-warning { 32 | background: $beige; 33 | color: $black; 34 | } 35 | 36 | /* 37 | .alert-light { 38 | color: #215888; 39 | background: linear-gradient(-45deg, rgb(212, 245, 255), rgb(234, 250, 255), rgb(234, 250, 255), #d3f6ef); 40 | } 41 | 42 | .alert-light .alert-link { 43 | color: #215888; 44 | } 45 | */ 46 | 47 | .alert-white { 48 | background-color: rgba(255, 255, 255, 0.95); 49 | } 50 | 51 | .alert-primary { 52 | color: $white; 53 | background-color: $primary; 54 | } 55 | 56 | .alert-primary .alert-link { 57 | color: $white; 58 | } 59 | 60 | .alert .alert-link:hover, 61 | .alert .alert-link:focus { 62 | text-decoration: none; 63 | } 64 | 65 | .alert code { 66 | background: darken($beige, 5%); 67 | color: $black; 68 | padding: 0.25rem 0.5rem; 69 | } 70 | -------------------------------------------------------------------------------- /docs/assets/scss/components/_buttons.scss: -------------------------------------------------------------------------------- 1 | .navbar .btn-link { 2 | color: $navbar-light-color; 3 | padding: 0.4375rem 0; 4 | } 5 | 6 | #mode { 7 | margin-right: 1.25rem; 8 | } 9 | 10 | .btn-link:focus { 11 | outline: 0; 12 | box-shadow: none; 13 | } 14 | 15 | #navigation { 16 | margin-left: 1.25rem; 17 | } 18 | 19 | @include media-breakpoint-up(md) { 20 | #mode { 21 | margin-right: 0.5rem; 22 | } 23 | 24 | .navbar .btn-link { 25 | padding: 0.5625em 0.25rem 0.5rem 0.125rem; 26 | } 27 | } 28 | 29 | .navbar .btn-link:hover { 30 | color: $navbar-light-hover-color; 31 | } 32 | 33 | .navbar .btn-link:active { 34 | color: $navbar-light-active-color; 35 | } 36 | 37 | body .toggle-dark { 38 | display: block; 39 | } 40 | 41 | body .toggle-light { 42 | display: none; 43 | } 44 | 45 | [data-dark-mode] body .toggle-light { 46 | display: block; 47 | } 48 | 49 | [data-dark-mode] body .toggle-dark { 50 | display: none; 51 | } 52 | 53 | pre { 54 | position: relative; 55 | } 56 | 57 | @include media-breakpoint-down(md) { 58 | .btn-copy { 59 | display: none; 60 | } 61 | } 62 | 63 | .btn-copy { 64 | transition: opacity 0.3s ease-in-out; 65 | opacity: 0; 66 | position: absolute; 67 | right: 0.25rem; 68 | top: 0.25rem; 69 | z-index: 10; 70 | font-family: $font-family-sans-serif; 71 | font-size: $font-size-sm; 72 | padding: 0.25rem 0.5rem; 73 | color: $color-btn-text; 74 | background-color: $color-btn-bg; 75 | border-color: $color-btn-border; 76 | } 77 | 78 | .btn-copy:hover { 79 | color: $color-btn-text; 80 | background-color: lighten($color-btn-bg, 5%); 81 | border-color: lighten($color-btn-border, 15%); 82 | } 83 | 84 | .btn-copy:focus { 85 | color: $color-btn-text; 86 | background-color: $color-btn-bg; 87 | border-color: lighten($color-btn-border, 15%); 88 | box-shadow: none; 89 | } 90 | 91 | .btn-copy:active, 92 | .btn-copy.active { 93 | color: $color-btn-text; 94 | background-color: $color-btn-bg; 95 | border-color: lighten($color-btn-border, 15%); 96 | } 97 | 98 | .btn-copy:active:focus, 99 | .btn-copy.active:focus { 100 | box-shadow: none; 101 | } 102 | 103 | @include media-breakpoint-up(md) { 104 | pre:hover .btn-copy { 105 | opacity: 1; 106 | } 107 | } 108 | 109 | .btn-copy::after { 110 | content: "Copy"; 111 | display: block; 112 | color: $color-btn-text; 113 | } 114 | 115 | .btn-copy:hover::after { 116 | content: "Copy"; 117 | display: block; 118 | color: $color-btn-text; 119 | } 120 | 121 | .btn-copy:focus::after, 122 | .btn-copy:active::after { 123 | content: "Copied"; 124 | display: block; 125 | color: $color-btn-text; 126 | } 127 | 128 | .collapsible-sidebar { 129 | margin: 2.125rem 0; 130 | } 131 | 132 | .btn-toggle { 133 | display: inline-flex; 134 | align-items: center; 135 | padding: 0.25rem 0.5rem 0.25rem 0.25rem; 136 | color: $body-color; 137 | background-color: transparent; 138 | border: 1px solid transparent; 139 | font-weight: 600; 140 | font-size: $font-size-md; 141 | -moz-osx-font-smoothing: grayscale; 142 | margin-bottom: 0.125rem; 143 | } 144 | 145 | .btn-toggle:hover, 146 | .btn-toggle:focus { 147 | color: $body-color; 148 | background-color: rgba($link-color, 0.1); 149 | border: 1px solid rgba($link-color, 0.1); 150 | outline: 0; 151 | box-shadow: none; 152 | } 153 | 154 | .btn-toggle:focus { 155 | border: 1px solid $link-color; 156 | } 157 | 158 | .btn-toggle::before { 159 | width: 1.25em; 160 | line-height: 0; 161 | content: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='14' height='14' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='rgba%2829, 45, 53, 0.75%29' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M5 14l6-6-6-6'/%3e%3c/svg%3e"); 162 | transition: transform 0.35s ease; 163 | transform-origin: 0.5em 50%; 164 | margin-bottom: 0.125rem; 165 | } 166 | 167 | .btn-toggle[aria-expanded="true"] { 168 | color: $body-color; 169 | } 170 | 171 | .btn-toggle[aria-expanded="true"]::before { 172 | transform: rotate(90deg); 173 | } 174 | 175 | .btn-toggle-nav a { 176 | display: inline-flex; 177 | padding: 0.1875rem 0.5rem; 178 | margin-top: 0.125rem; 179 | margin-left: 1.25rem; 180 | text-decoration: none; 181 | color: lighten($body-color, 20%); 182 | } 183 | 184 | .btn-toggle-nav a:hover, 185 | .btn-toggle-nav a:focus { 186 | background-color: rgba($link-color, 0.1); 187 | color: lighten($body-color, 10%); 188 | } 189 | 190 | .btn-toggle-nav a.active { 191 | font-weight: 600; 192 | color: $body-color; 193 | } 194 | -------------------------------------------------------------------------------- /docs/assets/scss/components/_code.scss: -------------------------------------------------------------------------------- 1 | pre, 2 | code, 3 | kbd, 4 | samp { 5 | font-family: $font-family-monospace; 6 | font-size: $font-size-sm; 7 | border-radius: $border-radius; 8 | } 9 | 10 | code { 11 | background: $gray-100; 12 | color: $black; 13 | padding: 0.25rem 0.5rem; 14 | } 15 | 16 | pre { 17 | margin: 2rem 0; 18 | } 19 | 20 | pre code { 21 | display: block; 22 | overflow-x: auto; 23 | line-height: $line-height-base; 24 | padding: 1.25rem 1.5rem; 25 | tab-size: 4; 26 | scrollbar-width: thin; 27 | scrollbar-color: transparent transparent; 28 | } 29 | 30 | .hljs { 31 | padding: 1.25rem 1.5rem; 32 | } 33 | 34 | @include media-breakpoint-down(sm) { 35 | pre, 36 | code, 37 | kbd, 38 | samp { 39 | border-radius: 0; 40 | } 41 | 42 | pre { 43 | margin: 2rem -1.5rem; 44 | } 45 | } 46 | 47 | pre code::-webkit-scrollbar { 48 | height: 5px; 49 | } 50 | 51 | pre code::-webkit-scrollbar-thumb { 52 | background: $gray-400; 53 | } 54 | 55 | pre code:hover { 56 | scrollbar-width: thin; 57 | scrollbar-color: $gray-500 transparent; 58 | } 59 | 60 | pre code::-webkit-scrollbar-thumb:hover { 61 | background: $gray-500; 62 | } 63 | 64 | code.language-mermaid { 65 | background: none; 66 | } 67 | -------------------------------------------------------------------------------- /docs/assets/scss/components/_comments.scss: -------------------------------------------------------------------------------- 1 | .comment-list { 2 | @extend .list-unstyled; 3 | } 4 | 5 | .comment-list ol { 6 | list-style: none; 7 | } 8 | 9 | .comment-form p { 10 | @extend .form-group !optional; 11 | } 12 | 13 | .comment-form input[type="text"], 14 | .comment-form input[type="email"], 15 | .comment-form input[type="url"], 16 | .comment-form textarea { 17 | @extend .form-control; 18 | } 19 | 20 | .comment-form input[type="submit"] { 21 | @extend .btn; 22 | @extend .btn-secondary; 23 | } 24 | 25 | blockquote { 26 | margin-bottom: 1rem; 27 | font-size: 1.25rem; 28 | border-left: 3px solid $gray-300; 29 | padding-left: 1rem; 30 | } 31 | -------------------------------------------------------------------------------- /docs/assets/scss/components/_forms.scss: -------------------------------------------------------------------------------- 1 | /** Search form */ 2 | .search-form { 3 | @extend .form-inline !optional; 4 | } 5 | 6 | .search-form label { 7 | @extend .form-group; 8 | 9 | font-weight: normal; 10 | } 11 | 12 | .search-form .search-field { 13 | @extend .form-control; 14 | } 15 | 16 | .search-form .search-submit { 17 | @extend .btn; 18 | @extend .btn-secondary; 19 | } 20 | -------------------------------------------------------------------------------- /docs/assets/scss/components/_hint.scss: -------------------------------------------------------------------------------- 1 | .hint { 2 | border-color: $primary !important; 3 | border-radius: $border-radius; 4 | } 5 | 6 | .hint-title { 7 | background-color: rgba($color: $primary, $alpha: 0.2); 8 | border-top-right-radius: $border-radius; 9 | 10 | &:before { 11 | content: "📝"; 12 | } 13 | } 14 | 15 | [data-dark-mode] body { 16 | .hint { 17 | border-color: $link-color-dark !important; 18 | border-radius: $border-radius; 19 | } 20 | 21 | .hint-title { 22 | background-color: rgba($color: $link-color-dark, $alpha: 0.2); 23 | border-top-right-radius: $border-radius; 24 | } 25 | } 26 | 27 | @mixin hint-type($type, $base-color, $icon) { 28 | .hint.hint-#{$type} { 29 | border-color: $base-color !important; 30 | 31 | .hint-title { 32 | background-color: rgba($color: $base-color, $alpha: 0.2) !important; 33 | 34 | &:before { 35 | content: $icon; 36 | } 37 | } 38 | } 39 | } 40 | 41 | // Have to put it inside body so that it overrides the !important 42 | body { 43 | @include hint-type("success", $success, "🔥"); 44 | @include hint-type("info", $info, "ℹ️"); 45 | @include hint-type("warning", $warning, "⚠️"); 46 | @include hint-type("danger", $danger, "🛑"); 47 | @include hint-type("answer", $gray-300, "📖"); 48 | } -------------------------------------------------------------------------------- /docs/assets/scss/components/_images.scss: -------------------------------------------------------------------------------- 1 | figure { 2 | margin: 2rem 0; 3 | } 4 | 5 | .figure-caption { 6 | margin: 0.25rem 0 0.75rem; 7 | } 8 | 9 | figure.wide { 10 | margin: 2rem -1.5rem; 11 | } 12 | 13 | figure.wide .figure-caption { 14 | margin: 0.25rem 1.5rem 0.75rem; 15 | } 16 | 17 | @include media-breakpoint-up(md) { 18 | figure.wide { 19 | margin: 2rem -2.5rem; 20 | } 21 | 22 | figure.wide .figure-caption { 23 | margin: 0.25rem 2.5rem 0.75rem; 24 | } 25 | } 26 | 27 | @include media-breakpoint-up(lg) { 28 | figure.wide { 29 | margin: 2rem -5rem; 30 | } 31 | 32 | figure.wide .figure-caption { 33 | margin: 0.25rem 5rem 0.75rem; 34 | } 35 | } 36 | 37 | .blur-up { 38 | filter: blur(5px); 39 | } 40 | 41 | .blur-up.lazyloaded { 42 | filter: unset; 43 | } 44 | 45 | .img-simple { 46 | margin-top: 0.375rem; 47 | margin-bottom: 1.25rem; 48 | } 49 | -------------------------------------------------------------------------------- /docs/assets/scss/components/_mermaid.scss: -------------------------------------------------------------------------------- 1 | .mermaid { 2 | margin: 1.5rem 0; 3 | padding: 1.5rem; 4 | } 5 | 6 | .mermaid svg { 7 | height: auto; 8 | } 9 | -------------------------------------------------------------------------------- /docs/assets/scss/components/_reference_table.scss: -------------------------------------------------------------------------------- 1 | .reference-content { 2 | table { 3 | table-layout: fixed; 4 | width: 100%; 5 | 6 | tr { 7 | display: flex; 8 | 9 | th:first-child, td:first-child { 10 | width: 33%; 11 | overflow-wrap: break-word; 12 | } 13 | 14 | th:not(:first-child), td:not(:first-child) { 15 | width: 66%; 16 | } 17 | } 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /docs/assets/scss/components/_search.scss: -------------------------------------------------------------------------------- 1 | .navbar-form { 2 | position: relative; 3 | } 4 | 5 | #suggestions { 6 | position: absolute; 7 | right: 0; 8 | margin-top: 0.5rem; 9 | width: calc(100vw - 3rem); 10 | } 11 | 12 | #suggestions a { 13 | display: block; 14 | text-decoration: none; 15 | padding: 0.75rem; 16 | margin: 0 0.5rem; 17 | } 18 | 19 | #suggestions a:focus { 20 | background: $gray-100; 21 | outline: 0; 22 | } 23 | 24 | #suggestions div:not(:first-child) { 25 | border-top: 1px dashed $gray-200; 26 | } 27 | 28 | #suggestions div:first-child { 29 | margin-top: 0.5rem; 30 | } 31 | 32 | #suggestions div:last-child { 33 | margin-bottom: 0.5rem; 34 | } 35 | 36 | #suggestions a:hover { 37 | background: $gray-100; 38 | } 39 | 40 | #suggestions span { 41 | display: flex; 42 | font-size: $font-size-base; 43 | } 44 | 45 | #suggestions span:first-child { 46 | font-weight: $headings-font-weight; 47 | color: $black; 48 | } 49 | 50 | #suggestions span:nth-child(2) { 51 | color: $gray-700; 52 | } 53 | 54 | @include media-breakpoint-up(sm) { 55 | #suggestions { 56 | width: 30rem; 57 | } 58 | 59 | #suggestions a { 60 | display: flex; 61 | } 62 | 63 | #suggestions span:first-child { 64 | width: 9rem; 65 | padding-right: 1rem; 66 | border-right: 1px solid $gray-200; 67 | display: inline-block; 68 | text-align: right; 69 | } 70 | 71 | #suggestions span:nth-child(2) { 72 | width: 19rem; 73 | padding-left: 1rem; 74 | } 75 | } 76 | -------------------------------------------------------------------------------- /docs/assets/scss/components/_syntax.scss: -------------------------------------------------------------------------------- 1 | .hljs { 2 | background: lighten(#22272e, 15%); 3 | } 4 | 5 | [data-dark-mode] body .hljs { 6 | background: $body-overlay-dark; 7 | } -------------------------------------------------------------------------------- /docs/assets/scss/components/_tables.scss: -------------------------------------------------------------------------------- 1 | table { 2 | @extend .table; 3 | 4 | margin: 3rem 0; 5 | } 6 | -------------------------------------------------------------------------------- /docs/assets/scss/layouts/_footer.scss: -------------------------------------------------------------------------------- 1 | .footer { 2 | padding-top: 1.125rem; 3 | padding-bottom: 1.125rem; 4 | } 5 | 6 | .footer ul { 7 | margin-bottom: 0; 8 | } 9 | 10 | .footer li { 11 | font-size: $font-size-sm; 12 | margin-bottom: 0; 13 | } 14 | 15 | @include media-breakpoint-up(md) { 16 | .footer li { 17 | font-size: $font-size-base; 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /docs/assets/scss/layouts/_home.scss: -------------------------------------------------------------------------------- 1 | .home { 2 | background: linear-gradient(to bottom, transparentize($body-bg, 1) 30%, transparentize($body-bg, 0) 595px), url(images/bg-large.png), $body-bg !important; 3 | background-repeat: repeat-x; 4 | background-clip: border-box; 5 | } 6 | 7 | .home .navbar { 8 | background: transparentize($body-bg, $amount: 0.75); 9 | opacity: 1; 10 | } -------------------------------------------------------------------------------- /docs/assets/scss/layouts/_pages.scss: -------------------------------------------------------------------------------- 1 | .docs-content > h2[id]::before, 2 | .docs-content > h3[id]::before, 3 | .docs-content > h4[id]::before { 4 | display: block; 5 | height: 6rem; 6 | margin-top: -6rem; 7 | content: ""; 8 | } 9 | 10 | .anchor { 11 | visibility: hidden; 12 | padding-left: 0.5rem; 13 | } 14 | 15 | h1:hover a, 16 | h2:hover a, 17 | h3:hover a, 18 | h4:hover a { 19 | visibility: visible; 20 | text-decoration: none; 21 | } 22 | 23 | .card-list { 24 | margin-top: 2.25rem; 25 | } 26 | 27 | .edit-page { 28 | margin-top: 3rem; 29 | font-size: $font-size-base; 30 | } 31 | 32 | .edit-page svg { 33 | margin-right: 0.5rem; 34 | margin-bottom: 0.25rem; 35 | } 36 | 37 | p.meta { 38 | margin-top: 0.5rem; 39 | font-size: $font-size-base; 40 | } 41 | 42 | .breadcrumb { 43 | margin-top: 2.25rem; 44 | font-size: $font-size-base; 45 | } 46 | -------------------------------------------------------------------------------- /docs/assets/scss/layouts/_posts.scss: -------------------------------------------------------------------------------- 1 | .home .card, 2 | .contributors.list .card, 3 | .blog.list .card { 4 | margin-top: 2rem; 5 | margin-bottom: 2rem; 6 | transition: transform 0.3s; 7 | } 8 | 9 | .home .card:hover, 10 | .contributors.list .card:hover, 11 | .blog.list .card:hover { 12 | transform: scale(1.025); 13 | } 14 | 15 | .home .card-body, 16 | .contributors.list .card-body, 17 | .blog.list .card-body { 18 | padding: 0 2rem 1rem; 19 | } 20 | 21 | .blog-header { 22 | text-align: center; 23 | margin-bottom: 2rem; 24 | } 25 | 26 | .blog-footer { 27 | text-align: center; 28 | } 29 | -------------------------------------------------------------------------------- /docs/assets/scss/layouts/_sidebar.scss: -------------------------------------------------------------------------------- 1 | .docs-links, 2 | .docs-toc { 3 | scrollbar-width: thin; 4 | scrollbar-color: $white transparent; 5 | } 6 | 7 | .docs-links::-webkit-scrollbar, 8 | .docs-toc::-webkit-scrollbar { 9 | width: 5px; 10 | } 11 | 12 | .docs-links::-webkit-scrollbar-track, 13 | .docs-toc::-webkit-scrollbar-track { 14 | background: $white; 15 | } 16 | 17 | .docs-links::-webkit-scrollbar-thumb, 18 | .docs-toc::-webkit-scrollbar-thumb { 19 | background: $white; 20 | } 21 | 22 | .docs-links:hover, 23 | .docs-toc:hover { 24 | scrollbar-width: thin; 25 | scrollbar-color: $gray-200 transparent; 26 | } 27 | 28 | .docs-links:hover::-webkit-scrollbar-thumb, 29 | .docs-toc:hover::-webkit-scrollbar-thumb { 30 | background: $gray-200; 31 | } 32 | 33 | .docs-links::-webkit-scrollbar-thumb:hover, 34 | .docs-toc::-webkit-scrollbar-thumb:hover { 35 | background: $gray-200; 36 | } 37 | 38 | .docs-links h3, 39 | .page-links h3 { 40 | font-size: $font-size-base; 41 | font-weight: 600; 42 | margin: 1.25rem 0 0.5rem 0; 43 | padding: 1.5rem 0 0 0; 44 | } 45 | 46 | @include media-breakpoint-up(lg) { 47 | .docs-links h3, 48 | .page-links h3 { 49 | margin: 1.125rem 1.5rem 0.75rem 0; 50 | padding: 1.375rem 0 0 0; 51 | } 52 | } 53 | 54 | .docs-links h3:not(:first-child) { 55 | border-top: 1px solid $gray-200; 56 | } 57 | 58 | .page-links hr { 59 | margin: 0.35rem 0; 60 | } 61 | 62 | .page-links li { 63 | margin-top: 0.125rem; 64 | padding: 0.1875rem 0; 65 | } 66 | 67 | .page-links li ul li { 68 | border-top: none; 69 | padding-left: 1rem; 70 | margin-top: 0.125rem; 71 | padding-top: 0.125rem; 72 | } 73 | 74 | .page-links a { 75 | color: lighten($body-color, 20%); 76 | } 77 | 78 | .page-links a:hover { 79 | color: lighten($body-color, 10%); 80 | text-decoration: underline; 81 | } -------------------------------------------------------------------------------- /docs/assets/scss/vendor/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-controllers-k8s/community/fea3f369a476b1fa105223695e2f67d279f4b298/docs/assets/scss/vendor/.gitkeep -------------------------------------------------------------------------------- /docs/babel.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | presets: [ 3 | [ 4 | '@babel/preset-env', 5 | { 6 | targets: { 7 | browsers: [ 8 | // Best practice: https://github.com/babel/babel/issues/7789 9 | '>=1%', 10 | 'not ie 11', 11 | 'not op_mini all' 12 | ] 13 | } 14 | } 15 | ] 16 | ] 17 | }; -------------------------------------------------------------------------------- /docs/config/_default/config.toml: -------------------------------------------------------------------------------- 1 | baseurl = "/" 2 | canonifyURLs = false 3 | disableAliases = true 4 | disableHugoGeneratorInject = true 5 | enableEmoji = true 6 | enableGitInfo = false 7 | enableRobotsTXT = true 8 | languageCode = "en-US" 9 | paginate = 7 10 | rssLimit = 10 11 | 12 | # add redirects/headers 13 | [outputs] 14 | home = ["HTML", "RSS", "REDIRECTS", "HEADERS"] 15 | section = ["HTML", "RSS", "SITEMAP"] 16 | 17 | # remove .{ext} from text/netlify 18 | [mediaTypes."text/netlify"] 19 | suffixes = [""] 20 | delimiter = "" 21 | 22 | # add output format for netlify _redirects 23 | [outputFormats.REDIRECTS] 24 | mediaType = "text/netlify" 25 | baseName = "_redirects" 26 | isPlainText = true 27 | notAlternative = true 28 | 29 | # add output format for netlify _headers 30 | [outputFormats.HEADERS] 31 | mediaType = "text/netlify" 32 | baseName = "_headers" 33 | isPlainText = true 34 | notAlternative = true 35 | 36 | # add output format for section sitemap.xml 37 | [outputFormats.SITEMAP] 38 | mediaType = "application/xml" 39 | baseName = "sitemap" 40 | isHTML = false 41 | isPlainText = true 42 | noUgly = true 43 | rel = "sitemap" 44 | 45 | [markup] 46 | [markup.goldmark] 47 | [markup.goldmark.extensions] 48 | linkify = false 49 | [markup.goldmark.parser] 50 | autoHeadingID = true 51 | autoHeadingIDType = "github" 52 | [markup.goldmark.parser.attribute] 53 | block = true 54 | title = true 55 | [markup.goldmark.renderer] 56 | unsafe = true 57 | [markup.highlight] 58 | codeFences = false 59 | guessSyntax = false 60 | hl_Lines = "" 61 | lineNoStart = 1 62 | lineNos = false 63 | lineNumbersInTable = true 64 | noClasses = false 65 | style = "dracula" 66 | tabWidth = 4 67 | 68 | [sitemap] 69 | changefreq = "weekly" 70 | filename = "sitemap.xml" 71 | priority = 0.5 72 | 73 | [taxonomies] 74 | contributor = "contributors" 75 | 76 | [permalinks] 77 | blog = "/blog/:title/" 78 | 79 | [minify.tdewolff.html] 80 | keepWhitespace = false 81 | 82 | [module] 83 | [module.hugoVersion] 84 | extended = true 85 | min = "0.80.0" 86 | max = "" 87 | [[module.mounts]] 88 | source = "assets" 89 | target = "assets" 90 | [[module.mounts]] 91 | source = "static" 92 | target = "static" 93 | [[module.mounts]] 94 | source = "node_modules/flexsearch" 95 | target = "assets/js/vendor/flexsearch" 96 | [[module.mounts]] 97 | source = "node_modules/katex" 98 | target = "assets/js/vendor/katex" 99 | [[module.mounts]] 100 | source = "node_modules/mermaid" 101 | target = "assets/js/vendor/mermaid" 102 | -------------------------------------------------------------------------------- /docs/config/_default/menus.toml: -------------------------------------------------------------------------------- 1 | [[main]] 2 | name = "Documentation" 3 | url = "/docs/community/overview/" 4 | weight = 10 5 | 6 | [[main]] 7 | name = "API Reference" 8 | url = "/reference/" 9 | weight = 20 10 | 11 | [[social]] 12 | name = "GitHub" 13 | pre = "" 14 | url = "https://github.com/aws-controllers-k8s/community" 15 | post = "v0.1.0" 16 | weight = 10 17 | 18 | [[docs]] 19 | name = "Introduction" 20 | identifier = "introduction" 21 | weight = 10 22 | 23 | [[docs]] 24 | name = "Getting Started" 25 | identifier = "getting-started" 26 | weight = 20 27 | 28 | [[docs]] 29 | name = "Tutorials" 30 | identifier = "tutorials" 31 | weight = 25 32 | 33 | [[docs]] 34 | name = "Contributor Docs" 35 | identifier = "contributor" 36 | weight = 30 37 | 38 | [[docs]] 39 | name = "Discussion" 40 | identifier = "discussion" 41 | weight = 40 42 | -------------------------------------------------------------------------------- /docs/config/_default/params.toml: -------------------------------------------------------------------------------- 1 | # Meta Data for SEO 2 | 3 | ## Homepage 4 | title = "ACK" 5 | titleSeparator = "-" 6 | titleAddition = "AWS Controllers for K8s" 7 | description = "Doks is a Hugo theme helping you build modern documentation websites that are secure, fast, and SEO-ready — by default." 8 | 9 | ## Open Graph 10 | images = ["og.png"] 11 | ogLocale = "en_US" 12 | domainTLD = "aws-controllers-k8s.github.io" 13 | titleHome = "AWS Controllers for K8s" 14 | 15 | ## Twitter Cards 16 | twitterSite = "@awscloud" 17 | twitterCreator = "" 18 | 19 | ## JSON-LD 20 | # schemaType = "Person" 21 | schemaType = "Organization" 22 | schemaName = "AWS Controllers for K8s" 23 | schemaAuthor = "AWS" 24 | schemaAuthorTwitter = "https://twitter.com/awscloud" 25 | schemaAuthorGitHub = "https://github.com/aws-controllers-k8s" 26 | schemaLocale = "en-US" 27 | schemaLogo = "ack.png" 28 | schemaLogoWidth = 512 29 | schemaLogoHeight = 512 30 | schemaTwitter = "https://twitter.com/awscloud" 31 | schemaLinkedIn = "" 32 | schemaGitHub = "https://github.com/aws-controllers-k8s/community" 33 | schemaSection = "blog" 34 | 35 | ## Sitelinks Search Box 36 | siteLinksSearchBox = false 37 | 38 | ## Chrome Browser 39 | themeColor = "#ff9900" 40 | 41 | # Images 42 | quality = 85 43 | bgColor = "#fff" 44 | landscapePhotoWidths = [900, 800, 700, 600, 500] 45 | portraitPhotoWidths = [800, 700, 600, 500] 46 | lqipWidth = "20x" 47 | 48 | # Footer 49 | footer = "Powered by Hugo and Doks" 50 | copyRight = "Copyright (c) 2021 Amazon" 51 | 52 | # Alert 53 | alert = true 54 | alertText = "Like ACK? Star us on GitHub. Thanks!" 55 | 56 | # Edit Page 57 | docsRepo = "https://github.com/aws-controllers-k8s/community" 58 | docsBranch = "main" 59 | docsPath = "docs/" 60 | editPage = true 61 | 62 | documentationSections = ["docs", "reference"] 63 | 64 | [options] 65 | lazySizes = true 66 | clipBoard = true 67 | instantPage = true 68 | flexSearch = true 69 | darkMode = true 70 | bootStrapJs = true 71 | breadCrumb = false 72 | highLight = true 73 | kaTex = false 74 | collapsibleSidebar = true 75 | -------------------------------------------------------------------------------- /docs/config/postcss.config.js: -------------------------------------------------------------------------------- 1 | const autoprefixer = require('autoprefixer'); 2 | const purgecss = require('@fullhuman/postcss-purgecss'); 3 | const whitelister = require('purgecss-whitelister'); 4 | 5 | module.exports = { 6 | plugins: [ 7 | autoprefixer(), 8 | purgecss({ 9 | content: [ 10 | './layouts/**/*.html', 11 | './content/**/*.md', 12 | ], 13 | safelist: [ 14 | 'lazyloaded', 15 | 'table', 16 | 'thead', 17 | 'tbody', 18 | 'tr', 19 | 'th', 20 | 'td', 21 | 'h5', 22 | 'alert-link', 23 | /hljs(-(.*))?/, 24 | /hint(-(.*))?/, 25 | ...whitelister([ 26 | './assets/scss/common/_dark.scss', 27 | './assets/scss/components/_buttons.scss', 28 | './assets/scss/components/_code.scss', 29 | './assets/scss/components/_diagrams.scss', 30 | './assets/scss/components/_hint.scss', 31 | './assets/scss/components/_reference_table.scss', 32 | './assets/scss/components/_search.scss', 33 | './assets/scss/components/_syntax.scss', 34 | './node_modules/katex/dist/katex.css', 35 | ]), 36 | ], 37 | }), 38 | ], 39 | } 40 | -------------------------------------------------------------------------------- /docs/config/production/config.toml: -------------------------------------------------------------------------------- 1 | baseurl = "https://aws-controllers-k8s.github.io/community/" 2 | canonifyURLs = true 3 | -------------------------------------------------------------------------------- /docs/content/_index.md: -------------------------------------------------------------------------------- 1 | --- 2 | title : "AWS Controllers for Kubernetes" 3 | description: "Manage AWS services using Kubernetes" 4 | lead: "Manage AWS services using Kubernetes" 5 | draft: false 6 | images: [] 7 | --- -------------------------------------------------------------------------------- /docs/content/blog/_index.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "Blog" 3 | description: "The Doks Blog." 4 | date: 2020-10-06T08:49:55+00:00 5 | lastmod: 2020-10-06T08:49:55+00:00 6 | draft: false 7 | images: [] 8 | --- 9 | -------------------------------------------------------------------------------- /docs/content/blog/say-hello-to-doks/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "Say hello to Doks 👋" 3 | description: "Introducing Doks, a Hugo theme helping you build modern documentation websites that are secure, fast, and SEO-ready — by default." 4 | lead: "Introducing Doks, a Hugo theme helping you build modern documentation websites that are secure, fast, and SEO-ready — by default." 5 | date: 2020-11-04T09:19:42+01:00 6 | lastmod: 2020-11-04T09:19:42+01:00 7 | draft: false 8 | weight: 50 9 | images: ["say-hello-to-doks.png"] 10 | contributors: ["Henk Verlinde"] 11 | --- -------------------------------------------------------------------------------- /docs/content/blog/say-hello-to-doks/say-hello-to-doks.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-controllers-k8s/community/fea3f369a476b1fa105223695e2f67d279f4b298/docs/content/blog/say-hello-to-doks/say-hello-to-doks.png -------------------------------------------------------------------------------- /docs/content/docs/community/.gitignore: -------------------------------------------------------------------------------- 1 | services.md -------------------------------------------------------------------------------- /docs/content/docs/community/background.md: -------------------------------------------------------------------------------- 1 | --- 2 | title : "Background" 3 | description: "History of the ACK project" 4 | lead: "" 5 | draft: false 6 | menu: 7 | docs: 8 | parent: "discussion" 9 | weight: 10 10 | toc: true 11 | --- 12 | 13 | In 10/2018 Chris Hein [introduced](https://aws.amazon.com/blogs/opensource/aws-service-operator-kubernetes-available/) the AWS Service Operator (ASO) project. We reviewed the feedback from the community and stakeholders and in 08/2019 [decided](https://github.com/aws/containers-roadmap/issues/456) to relaunch ASO as a first-tier open source project with concrete commitments from the container service team. In this process, we renamed the project to AWS Controllers for Kubernetes (ACK). 14 | 15 | The tenets for the relaunch were: 16 | 17 | 1. ACK is a community-driven project, based on a governance model defining roles and responsibilities. 18 | 2. ACK is optimized for production usage with full test coverage including performance and scalability test suites. 19 | 3. ACK strives to be the only codebase exposing AWS services via a Kubernetes operator. 20 | 21 | Since then, we worked on [design issues](https://github.com/aws/aws-controllers-k8s/issues?q=is%3Aissue+is%3Aopen+sort%3Aupdated-desc+label%3Adesign) and gathering feedback around which services to prioritize. 22 | 23 | 24 | ## Existing custom controllers 25 | 26 | AWS service teams use custom controllers, webhooks, and operators for different use cases and based on different approaches. Examples include: 27 | 28 | - [SageMaker operator](https://github.com/aws/amazon-sagemaker-operator-for-k8s), allowing to use SageMaker from Kubernetes 29 | - [App Mesh controller](https://github.com/aws/aws-app-mesh-controller-for-k8s), managing App Mesh resources from Kubernetes 30 | - [EKS Pod Identity Webhook](https://github.com/aws/amazon-eks-pod-identity-webhook), providing IAM roles for service accounts functionality 31 | 32 | While the autonomy in the different teams and project allows for rapid iterations and innovations, there are some drawbacks associated with it: 33 | 34 | - The UX differs and that can lead to frustration when adopting an offering. 35 | - A consistent quality bar across the different offerings is hard to establish and to verify. 36 | - It's wasteful to re-invent the plumbing and necessary infrastructure (testing, etc.). 37 | 38 | Above is the motivation for our 3rd tenet: we want to make sure that there is a common framework, implementing good practices as put forward, for example, in the [Operator Developer Guide](https://operators.gitbook.io/operator-developer-guide-for-red-hat-partners/) or in the [Programming Kubernetes](https://programming-kubernetes.info/) book. 39 | 40 | ## Related projects 41 | 42 | Outside of AWS, there are projects that share similar goals we have with the ASO, for example: 43 | 44 | - [Crossplane](https://github.com/crossplane/provider-aws) 45 | - [aws-s3-provisioner](https://github.com/yard-turkey/aws-s3-provisioner) -------------------------------------------------------------------------------- /docs/content/docs/community/discussions.md: -------------------------------------------------------------------------------- 1 | --- 2 | title : "Discussions" 3 | description: "" 4 | lead: "" 5 | draft: false 6 | menu: 7 | docs: 8 | parent: "discussion" 9 | weight: 30 10 | toc: true 11 | --- 12 | 13 | For discussions, please use the `#aws-controllers-k8s` channel on the [Kubernetes Slack community](https://kubernetes.slack.com/). 14 | -------------------------------------------------------------------------------- /docs/content/docs/community/how-it-works.md: -------------------------------------------------------------------------------- 1 | --- 2 | title : "How it Works" 3 | description: "How the ACK controller works" 4 | lead: "" 5 | draft: false 6 | menu: 7 | docs: 8 | parent: "introduction" 9 | weight: 20 10 | toc: true 11 | --- 12 | 13 | The idea behind AWS Controllers for Kubernetes (ACK) is to enable Kubernetes 14 | users to describe the desired state of AWS resources using the Kubernetes API 15 | and configuration language. In order to make this happen, let's take a look 16 | under the covers and walk through how different components in the system 17 | interact. 18 | 19 | ![event flow in ACK](../images/ack-how-it-works.png) 20 | 21 | 22 | In the diagram above, Alice is our Kubernetes user. Her application depends on 23 | the existence of an Amazon S3 Bucket named `my-bucket`. 24 | 25 | Instead of creating the S3 Bucket via the AWS web console, Alice wants to only 26 | use the Kubernetes API. After all, Alice uses the Kubernetes API to describe 27 | all her application resources -- a `Deployment`, a `Service`, an `Ingress`, 28 | etc. She'd like to use the Kubernetes API to describe all the resources her 29 | application requires, including this S3 Bucket. 30 | 31 | So, Alice issues a call to `kubectl apply`, passing in a file that describes a 32 | Kubernetes [custom resource][crd] describing her S3 Bucket. `kubectl apply` 33 | passes this file, called a [`Manifest`][manifest], to the Kubernetes API server 34 | running in the Kubernetes controller node. `(1)` 35 | 36 | The Kubernetes API server receives the `Manifest` describing the S3 Bucket and 37 | determines if Alice [has permissions][authz] to create a custom resource (CR) 38 | of [`Kind`][api-kind] `s3.services.k8s.aws/Bucket`, and that the custom 39 | resource is properly formatted `(2)`. 40 | 41 | If Alice is authorized and the CR is valid, the Kubernetes API server writes 42 | `(3)` the CR to its `etcd` data store and then responds back `(4)` to Alice 43 | that the CR has been created. 44 | 45 | At this point, the ACK service [controller][controller] for S3, which is 46 | running on a Kubernetes worker node within the context of a normal Kubernetes 47 | [`Pod`][pod], is notified `(5)` that a new CR of `Kind` 48 | `s3.services.k8s.aws/Bucket` has been created. 49 | 50 | The ACK service controller for S3 then communicates `(6)` with the AWS S3 API, 51 | calling the [S3 `CreateBucket` API call][s3-cb-api] to create the bucket in 52 | AWS. After communicating with the S3 API, the ACK service controller then calls 53 | the Kubernetes API server to update `(7)` the CR's [`Status`][spec-status] with 54 | information it received from S3. 55 | 56 | ## Drift Detection and Remediation 57 | 58 | There are times where a resource that an ACK service controller is managing is 59 | modified outside of ACK, e.g. through the AWS CLI or the console. An ACK service 60 | controller will look for any drift and attempt to remediate every 10 hours 61 | (unless a different frequency is configured). As part of the remediation, an ACK 62 | service controller will reconfigure the managed resource based on the `Spec`. 63 | 64 | For more information about configuring the drift remediation period, see 65 | [Recovering from Drift][drift] 66 | 67 | [api-kind]: https://kubernetes.io/docs/reference/using-api/api-concepts/#standard-api-terminology 68 | [authz]: ../../user-docs/authorization/ 69 | [pod]: https://kubernetes.io/docs/concepts/workloads/pods/ 70 | [manifest]: https://kubernetes.io/docs/reference/glossary/?all=true#term-manifest 71 | [controller]: https://kubernetes.io/docs/reference/glossary/?fundamental=true#term-controller 72 | [crd]: https://kubernetes.io/docs/concepts/extend-kubernetes/api-extension/custom-resources/ 73 | [s3-cb-api]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateBucket.html 74 | [spec-status]: https://kubernetes.io/docs/concepts/overview/working-with-objects/kubernetes-objects/#object-spec-and-status 75 | [drift]: ../../user-docs/drift-recovery -------------------------------------------------------------------------------- /docs/content/docs/community/images/ack-how-it-works.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-controllers-k8s/community/fea3f369a476b1fa105223695e2f67d279f4b298/docs/content/docs/community/images/ack-how-it-works.png -------------------------------------------------------------------------------- /docs/content/docs/community/overview.md: -------------------------------------------------------------------------------- 1 | --- 2 | title : "Overview" 3 | description: "AWS Controllers for Kubernetes (ACK) lets you define and use AWS service resources directly from Kubernetes" 4 | lead: "" 5 | draft: false 6 | menu: 7 | docs: 8 | parent: "introduction" 9 | weight: 10 10 | toc: true 11 | --- 12 | 13 | **AWS Controllers for Kubernetes (ACK)** lets you define and use AWS service resources directly from Kubernetes. With ACK, you can take advantage of AWS-managed services for your Kubernetes applications without needing to define resources outside of the cluster or run services that provide supporting capabilities like databases or message queues within the cluster. 14 | 15 | ## Container images 16 | 17 | Each ACK service controller is packaged into a separate container image that is published in a public repository corresponding to an individual ACK service controller. 18 | 19 | {{% hint title="Choose the ACK container image that is right for you" %}} 20 | Note that there is no single ACK container image. Instead, there are container 21 | images for each individual ACK service controller that manages resources 22 | for a particular AWS API. 23 | {{% /hint %}} 24 | 25 | Container images for ACK service controllers can be found in the [ACK registry within the Amazon ECR Public Gallery][ack-ecr-gallery]. To find a container image for a specific service, you can go to `gallery.ecr.aws/aws-controllers-k8s/$SERVICENAME-controller`. For example, the link to the ACK service controller container image for Amazon Simple Storage Service (Amazon S3) is [`gallery.ecr.aws/aws-controllers-k8s/s3-controller`][s3-ecr-controller]. 26 | 27 | Individual ACK service controllers are tagged with their release version. You can find image URIs for different releases under the `Image tags` section in the image repository on the ECR Public Gallery. 28 | 29 | {{% hint title="Be sure to specify a release version" type="info" %}} 30 | You must always specify a version tag when referencing an ACK service controller image. 31 | {{% /hint %}} 32 | 33 | In accordance with [best practices][no-latest-tag], we do not include `:latest` default tags for our image repositories. 34 | 35 | ## Next steps 36 | 37 | This guide assumes that you have access to a Kubernetes cluster. You do not need to use the Amazon Elastic Kubernetes Service (Amazon EKS) to get started with ACK service controllers. If you do not yet have a Kubernetes cluster and would like to use Amazon EKS, you can visit the [Amazon EKS Setup][eks-setup] guide. 38 | 39 | Once you have access to a Kubernetes cluster, you can [install the ACK service controller of your choice][install]. 40 | 41 | [ack-ecr-gallery]: https://gallery.ecr.aws/aws-controllers-k8s 42 | [s3-ecr-controller]: https://gallery.ecr.aws/aws-controllers-k8s/s3-controller 43 | [no-latest-tag]: https://vsupalov.com/docker-latest-tag/ 44 | [install]: ../../user-docs/install/ 45 | [eks-setup]: https://docs.aws.amazon.com/deep-learning-containers/latest/devguide/deep-learning-containers-eks-setup.html 46 | -------------------------------------------------------------------------------- /docs/content/docs/contributor-docs/building-controller.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "Building a Controller" 3 | description: "How to build or regenerate an ACK service controller" 4 | lead: "How to build or regenerate an ACK service controller" 5 | draft: false 6 | menu: 7 | docs: 8 | parent: "contributor" 9 | weight: 50 10 | toc: true 11 | --- 12 | 13 | ## Prerequisites 14 | 15 | You should have forked the `github.com/aws-controllers-k8s/code-generator` 16 | repository and `git clone`'d it locally when [setting up](../setup) your 17 | development environment, 18 | 19 | With the prerequisites out of the way, let's move on to the first step: 20 | building the code generator. 21 | 22 | ## Build code generator 23 | 24 | Building an ACK service controller (or regenerating an existing one from a 25 | newer API model file) requires the `ack-generate` binary, which is the main 26 | code generator CLI tool. 27 | 28 | To build the latest `ack-generate` binary, execute the following command from 29 | the root directory of the `github.com/aws-controllers-k8s/code-generator` 30 | source repository: 31 | 32 | ```bash 33 | make build-ack-generate 34 | ``` 35 | 36 | {{% hint title="One-off build" %}} 37 | You only have to do this once, overall. In other words: unless we change 38 | something upstream in terms of the code generation process, this is 39 | a one-off operation. Internally, the Makefile executes an `go build` here. 40 | {{% /hint %}} 41 | 42 | Don't worry if you forget this step, the script in the next step will complain 43 | with a message along the line of `ERROR: Unable to find an ack-generate binary` 44 | and will give you another opportunity to rectify the situation. 45 | 46 | ## Build an ACK service controller 47 | 48 | Now that we have the basic code generation step done we will create the 49 | respective ACK service controller and its supporting artifacts. 50 | 51 | So first you have to select a service that you want to build and test. 52 | You do that by setting the `SERVICE` environment variable. Let's say we want 53 | to test the S3 service (creating an S3 bucket), so we would execute the 54 | following: 55 | 56 | ```bash 57 | export SERVICE=s3 58 | ``` 59 | 60 | Now we are in a position to generate the ACK service controller for the S3 API. 61 | 62 | ```bash 63 | make build-controller SERVICE=$SERVICE 64 | ``` 65 | 66 | By default, running `make build-controller` will output the generated code to 67 | ACK service controller for S3's source code repository (the 68 | `$GOPATH/src/github.com/aws-controllers-k8s/s3-controller` directory). You can 69 | override this behaviour with the `SERVICE_CONTROLLER_SOURCE_PATH` environment 70 | variable. 71 | 72 | {{% hint type="info" title="Handle `controller-gen: command not found`" %}} 73 | If you run into the `controller-gen: command not found` message when 74 | executing `make build-controller` then you want to check if the 75 | `controller-gen` binary is available in `$GOPATH/bin`, also ensure that `$GOPATH/bin` is part of your `$PATH`, see also 76 | [`#234`](https://github.com/aws/aws-controllers-k8s/issues/234). 77 | You can also install the required version of `controller-gen` using the 78 | `scripts/install-controller-gen.sh` helper script. 79 | {{% /hint %}} 80 | 81 | In addition to the ACK service controller code, above generates the 82 | custom resource definition (CRD) manifests as well as the necessary RBAC 83 | settings using the [`/scripts/build-controller.sh`][bc-script]. 84 | 85 | [bc-script]: https://github.com/aws-controllers-k8s/code-generator/blob/main/scripts/build-controller.sh 86 | 87 | ## Next Steps 88 | 89 | Now that we have the generation part completed, we want to see if the 90 | generated artifacts indeed are able to create an S3 bucket for us. 91 | 92 | Learn about how to [run e2e tests for an ACK controller](../testing). 93 | -------------------------------------------------------------------------------- /docs/content/docs/contributor-docs/code-organization.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "Code Organization" 3 | description: "How the source code for ACK is organized" 4 | lead: "" 5 | draft: false 6 | menu: 7 | docs: 8 | parent: "contributor" 9 | weight: 20 10 | toc: true 11 | --- 12 | 13 | ACK is a collection of source repositories containing a common runtime and type 14 | system, a code generator and individual service controllers that manage 15 | resources in a specific AWS API. 16 | 17 | * [`github.com/aws-controllers-k8s/community`][comm-repo]: docs, issues and 18 | project management (this repo) 19 | * [`github.com/aws-controllers-k8s/runtime`][rt-repo]: common ACK runtime and types 20 | * [`github.com/aws-controllers-k8s/code-generator`][codegen-repo]: the code generator and 21 | templates 22 | * [`github.com/aws-controllers-k8s/test-infra`][testinfra-repo]: common test code and infrastructure 23 | * `github.com/aws-controllers-k8s/$SERVICE-controller`: individual ACK 24 | controllers for AWS services. 25 | 26 | ## `github.com/aws-controllers-k8s/community` (this repo) 27 | 28 | The [`github.com/aws-controllers-k8s/community`][comm-repo] source code 29 | repository (this repo) contains the documentation that gets published to 30 | https://aws-controllers-k8s.github.io/community/. 31 | 32 | {{% hint type="info" title="Bug reports and feature requests" %}} 33 | **NOTE**: All [bug reports and feature requests][issues] for all ACK source repositories 34 | are contained in this repository. 35 | {{% /hint %}} 36 | 37 | ## `github.com/aws-controllers-k8s/runtime` 38 | 39 | The [`github.com/aws-controllers-k8s/runtime`][rt-repo] source code repository contains 40 | the common ACK controller runtime (`/pkg/runtime`, `/pkg/types`) and core 41 | public Kubernetes API types (`/apis/core`). 42 | 43 | ## `github.com/aws-controllers-k8s/code-generator` 44 | 45 | The [`github.com/aws-controllers-k8s/code-generator`][codegen-repo] source code repository 46 | contains the `ack-generate` CLI tool (`/cmd/ack-generate`), the Go packages 47 | that are used in API inference and code generation (`/pkg/generate`, 48 | `/pkg/model`) and Bash scripts to build an ACK service controller 49 | (`/scripts/build-controller.sh`). 50 | 51 | ## `github.com/aws-controllers-k8s/test-infra` 52 | 53 | The [`github.com/aws-controllers-k8s/test-infra`][testinfra-repo] source code repository 54 | contains the `acktest` Python package for common ACK e2e test code, the CDK to 55 | deploy our Prow CI/CD system and the scripts for running tests locally. 56 | 57 | ## `github.com/aws-controllers-k8s/$SERVICE-controller` 58 | 59 | Each AWS API that has had a Kubernetes controller built to manage resources in 60 | that API has its own source code repository in the 61 | `github.com/aws-controllers-k8s` Github Organization. The source repos will be 62 | called `$SERVICE-controller`, for example the ACK service controller for S3 is 63 | located at [`github.com/aws-controllers-k8s/s3-controller`][s3-repo]. 64 | 65 | These service controller repositories contain Go code for the main controller 66 | binary (`/cmd/controller/`), the public API types for the controllers 67 | (`/apis`), the Go code for the resource managers used by the controller 68 | (`/pkg/resource/*/`), static configuration manifests (`/config`), Helm 69 | charts for the controller installation (`/helm`) along with a set of end-to-end 70 | tests for the resources exposed by that controller (`/test/e2e`). 71 | 72 | [issues]: https://github.com/aws-controllers-k8s/community/issues 73 | [comm-repo]: https://github.com/aws-controllers-k8s/community/ 74 | [rt-repo]: https://github.com/aws-controllers-k8s/runtime/ 75 | [codegen-repo]: https://github.com/aws-controllers-k8s/code-generator/ 76 | [testinfra-repo]: https://github.com/aws-controllers-k8s/test-infra/ 77 | [s3-repo]: https://github.com/aws-controllers-k8s/s3-controller/ 78 | -------------------------------------------------------------------------------- /docs/content/docs/contributor-docs/images/github-pr.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-controllers-k8s/community/fea3f369a476b1fa105223695e2f67d279f4b298/docs/content/docs/contributor-docs/images/github-pr.png -------------------------------------------------------------------------------- /docs/content/docs/contributor-docs/images/multi-phase-code-generation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-controllers-k8s/community/fea3f369a476b1fa105223695e2f67d279f4b298/docs/content/docs/contributor-docs/images/multi-phase-code-generation.png -------------------------------------------------------------------------------- /docs/content/docs/contributor-docs/images/operatorhub-preview.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-controllers-k8s/community/fea3f369a476b1fa105223695e2f67d279f4b298/docs/content/docs/contributor-docs/images/operatorhub-preview.png -------------------------------------------------------------------------------- /docs/content/docs/contributor-docs/operatorhub-onboarding.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "OperatorHub Onboarding" 3 | description: "How controllers end up in OperatorHub" 4 | lead: "" 5 | draft: false 6 | menu: 7 | docs: 8 | parent: "contributor" 9 | weight: 20 10 | toc: true 11 | --- 12 | 13 | There are two ways a user can install an operator, one is via an OLM enabled cluster using OperatorHub.io and the other 14 | is via the embedded OperatorHub within an OpenShift cluster. In order to onboard a new controller and have it appear in both 15 | places, the below steps should be followed. After these steps are completed, the build/release process will then raise pull 16 | requests against the proper repos. 17 | 18 | ## Add an OLM Config File to Controller Repository 19 | 20 | The OLM config file is used during the build/release process of a controller to assist in the generation of the 21 | [ClusterServiceVersion](https://olm.operatorframework.io/docs/concepts/crds/clusterserviceversion/) ("CSV") in the controller's bundle. 22 | The file should live at `./olm/olmconfig.yaml` in the project structure of a controller. It should also contain a sample for each `CustomResource` 23 | managed by the controller. Please see the S3 controller's `olmconfig.yaml` found 24 | [here](https://github.com/aws-controllers-k8s/s3-controller/blob/main/olm/olmconfig.yaml) for proper formatting. 25 | 26 | ## Validate the Generated CSV 27 | 28 | After the `olmconfig.yaml` has been generated it's a good practice to validate that the CSV for the controller looks 29 | as expected, this ensures proper AWS branding for the controller. This does not need to be done after ever change to the 30 | controller, but if changes to the `olmconfig.yaml` are done, or a new CR is added to the controller, it's best to validate that 31 | the new changes in the CSV appears as expected. 32 | 33 | 1. Build the controller locally using the `code-generator` project 34 | 1. Install Operator SDK in the `code-generator` `/bin` directory using the below script 35 | 1. `$ ./scripts/install-operator-sdk.sh` 36 | 2. Target the appropriate controller 37 | 1. `$ export SERVICE=s3` 38 | 3. Build the controller and generate the bundle 39 | 1. `$ ACK_GENERATE_OLM=true make build-controller SERVICE=$SERVICE` 40 | 2. Validate that the CSV was generated 41 | 1. Unless overridden, the CSV will be at `$GOPATH/src/github.com/aws-controllers-k8s/s3-controller/olm/bundle/manifests/ack-s3-controller.clusterserviceversion.yaml` 42 | 3. The CSV can be [previewed](https://operatorhub.io/preview) by copying and pasting the CSV 43 | 44 | ![OperatorHub.io Preview](../images/operatorhub-preview.png) 45 | 46 | ## Raise Pull Requests to Community Operators Repositories 47 | 48 | Both repositories rely on the same folder structure for each operator, which is laid out below. For the initial onboarding 49 | all that needs to be worried about is adding `./operators/ack-new-controller` and the `ci.yaml` file. Since the ACK project 50 | releases all the operators using semantic versioning, each ACK operator CI file will be identical, so an existing ACK operator's 51 | CI file can be copied and used in the Pull Request. 52 | 53 | ```shell 54 | . 55 | └── ack-new-controller 56 | ├── 0.0.1 57 | ├── 0.0.2 58 | └── ci.yaml 59 | ``` 60 | 61 | 1. Raise a Pull Request for OperatorHub.io [here](https://github.com/k8s-operatorhub/community-operators) 62 | - Below is a quote from this repository's Readme file explaining its usage 63 | > This repo is the canonical source for Kubernetes Operators that appear on [OperatorHub.io](https://operatorhub.io). 64 | The solutions merged on this repository are distributed via the [OLM][olm] index catalog [quay.io/operatorhubio/catalog][quay.io]. 65 | Users can install [OLM][olm] in any Kubernetes or vendor such as Openshift to consume this content by adding a new CatalogSource for the index image 66 | `quay.io/operatorhubio/catalog`. [(more info)][catalog] 67 | 68 | 2. Raise a Pull Request for embedded OperatorHub in OpenShift [here](https://github.com/redhat-openshift-ecosystem/community-operators-prod) 69 | - Below is a quote from this repository's Readme file explaining its usage 70 | > This repo is the canonical source for Kubernetes Operators that appear on [OpenShift Container Platform](https://openshift.com) 71 | and [OKD](https://www.okd.io/). 72 | 73 | The build for these Pull Requests will fail since no bundle has been provided, but that is okay, the maintainers will still review and 74 | merge the pull request. After these Pull Requests have been merged, the new controller is now onboarded and ready for a release. 75 | 76 | [olm]: https://github.com/operator-framework/operator-lifecycle-manager 77 | [quay.io]: https://quay.io/repository/operatorhubio/catalog?tag=latest&tab=tags 78 | [catalog]: https://k8s-operatorhub.github.io/community-operators/testing-operators/#1-create-the-catalogsource 79 | -------------------------------------------------------------------------------- /docs/content/docs/contributor-docs/overview.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "Contribution Overview" 3 | description: "Context on the contributor documentation" 4 | lead: "" 5 | draft: false 6 | menu: 7 | docs: 8 | parent: "contributor" 9 | weight: 10 10 | toc: true 11 | --- 12 | 13 | This section of the docs is for contributors to the AWS Controllers for 14 | Kubernetes (ACK) project. 15 | 16 | If you're interested in enhancing our platform, developing on a specific 17 | service controller or just curious how ACK is architected, you've come to the 18 | right place. 19 | 20 | ## Project Tenets (unless you know better ones) 21 | 22 | We follow a set of tenets in building AWS Controllers for Kubernetes. 23 | 24 | 1. **Collaborate in the Open**: Our source code is open. Our development 25 | methodology is open. Our testing, release and documentation processes are 26 | open. We are a community-driven project that strives to meet our users where 27 | they are. 28 | 29 | 2. **Generate Everything**: We choose to generate as much of our code as 30 | possible. Generated code is easier to maintain and encourages consistency. 31 | 32 | 3. **Focus on Kubernetes**: We seek ways to make the Kubernetes user experience 33 | as simple and consistent as possible for managing AWS resources. 34 | 35 | 4. **Run Anywhere**: ACK service controllers can be installed on any Kubernetes 36 | cluster, regardless of whether a user chooses to use Amazon Elastic 37 | Kubernetes Service (EKS). 38 | 39 | 5. **Minimize Service Dependencies**: The only AWS services that ACK service 40 | controllers depend on should be IAM/STS and the specific AWS service that 41 | the controller integrates with. We do not take a dependency on any stateful 42 | resource-tracking service. 43 | 44 | Read more about our [project tenets and design principles][tenets]. 45 | 46 | [tenets]: ../tenets/ 47 | 48 | ## Code Organization 49 | 50 | ACK is a collection of source repositories containing a common runtime and type 51 | system, a code generator and individual service controllers that manage 52 | resources in a specific AWS API. 53 | 54 | Learn more about how our [source code repositories are organized][code-org]. 55 | 56 | [code-org]: ../code-organization/ 57 | 58 | ## API Inference 59 | 60 | Read about [how the code generator infers][api-inference] information about a 61 | Kubernetes Custom Resource Definitions (CRDs) from an AWS API model file. 62 | 63 | [api-inference]: ../api-inference/ 64 | 65 | ## Code Generation 66 | 67 | The [code generation](../code-generation/) section gives you a bit of background 68 | on how we go about automating the code generation for controllers and supporting 69 | artifacts. 70 | 71 | ## Setting up a Development Environemnt 72 | 73 | In the [setup](../setup/) section we walk you through setting up your local Git 74 | environment with the repo and how advise you on how we handle contributions. 75 | 76 | ## Building an ACK Service Controller 77 | 78 | After getting your development environment established, you will want to learn 79 | [how to build an ACK service controller](../building-controller). 80 | 81 | ## Testing an ACK Service Controller 82 | 83 | Last but not least, in the [testing](../testing/) section we show you how to 84 | test ACK locally. 85 | -------------------------------------------------------------------------------- /docs/content/docs/contributor-docs/tenets.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "Project Tenets" 3 | description: "Our project tenets and design principles" 4 | lead: "" 5 | draft: false 6 | menu: 7 | docs: 8 | parent: "contributor" 9 | weight: 15 10 | toc: true 11 | --- 12 | 13 | We follow a set of tenets in building AWS Controllers for Kubernetes. 14 | 15 | ## Collaborate in the Open 16 | 17 | When given a choice between keeping something hidden or making something open, 18 | we default to open. 19 | 20 | All of our [source code][source] is open. 21 | 22 | Our development methodology is open. 23 | 24 | Our [testing][testing], [release][release] and [documentation][docs] processes 25 | are open. 26 | 27 | Our [continuous integration system][ci] is open. 28 | 29 | We are a community-driven project that strives to meet our users where they 30 | are. Come join our [community meeting][comm-meet] on Zoom. 31 | 32 | [source]: https://github.com/aws-controllers-k8s/ 33 | [testing]: https://github.com/aws-controllers-k8s/test-infra 34 | [release]: ../../community/releases/ 35 | [docs]: https://github.com/aws-controllers-k8s/community/tree/main/docs 36 | [ci]: https://prow.ack.aws.dev/ 37 | [comm-meet]: https://github.com/aws-controllers-k8s/community/#community-meeting 38 | 39 | ## Generate Everything 40 | 41 | We choose to generate as much of our code as possible. 42 | 43 | While we recognize that the differences and peculiarities of AWS service APIs 44 | will naturally require some implementation code to be hand-written, we look for 45 | patterns in AWS service APIs and enhance our code generator to handle these 46 | patterns. 47 | 48 | Generated code is easier to maintain and encourages consistency. 49 | 50 | ## Focus on Kubernetes 51 | 52 | The ACK code generator produces controller implementations that include a 53 | [common ACK runtime][rt]. This common runtime builds on top of the Kubernetes 54 | upstream [controller-runtime][ctrl-rt] framework and provides a common 55 | reconciliation loop that processes events received from the Kubernetes API 56 | server representing create, modify or delete operations for a custom resource. 57 | By building ACK controllers with a common ACK runtime, we encourage consistent 58 | behaviour in how controllers handle these custom resources. 59 | 60 | We seek ways to make the **Kubernetes user experience** as simple and 61 | consistent as possible for managing AWS resources. This means that the ACK code 62 | generator enables service teams to rename fields for a resource, inject custom 63 | code into a controller and instruct the controller implementation to handle 64 | resources in ways that smooth over the inconsistencies between AWS service 65 | APIs. 66 | 67 | [rt]: https://github.com/aws-controllers-k8s/runtime 68 | [ctrl-rt]: https://github.com/kubernetes-sigs/controller-runtime/ 69 | 70 | ## Run Anywhere 71 | 72 | ACK service controllers can be installed on any Kubernetes cluster, regardless 73 | of whether a user chooses to use Amazon Elastic Kubernetes Service (EKS). 74 | 75 | ## Minimize Service Dependencies 76 | 77 | The only AWS services that ACK service controllers depend on should be IAM/STS 78 | and the specific AWS service that the controller integrates with. 79 | 80 | We do not take a dependency on any stateful resource-tracking service, 81 | including AWS CloudFormation, the AWS Cloud Control API, or Terraform. 82 | 83 | ACK service controllers communicate directly with the AWS service API that the 84 | controller is built for. The `s3-controller` speaks the S3 API. The 85 | `ec2-controller` speaks the EC2 API. 86 | -------------------------------------------------------------------------------- /docs/content/docs/tutorials/images/networktopology.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-controllers-k8s/community/fea3f369a476b1fa105223695e2f67d279f4b298/docs/content/docs/tutorials/images/networktopology.png -------------------------------------------------------------------------------- /docs/content/docs/user-docs/ack-tags.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "Managing Tags on your AWS Resources" 3 | description: "Managing Tags on your AWS Resources" 4 | lead: "" 5 | draft: false 6 | menu: 7 | docs: 8 | parent: "getting-started" 9 | weight: 67 10 | toc: true 11 | --- 12 | 13 | Most AWS resources can have one or more Tags, defined as simple key/value 14 | pairs, associated with them. These Tags allow you to organize and categorize 15 | your AWS resources for accounting and informational purposes. ACK custom 16 | resources (CRs) that support Tags will have a *Spec.Tags* field that 17 | stores user-defined key/value pairs. In addition to user-defined Tags, 18 | ACK also supports a set of default tags, which are Tags that the ACK 19 | controller will automatically ensure are on all resources that it manages. 20 | 21 | The two default tags added by ACK controller are `services.k8s.aws/controller-version` 22 | and `services.k8s.aws/namespace`. The *controller-version* tag value is the name of 23 | corresponding AWS service and version for that controller(Ex: `s3-0.1.3`). 24 | And the *namespace* tag value is the Kubernetes namespace for the ACK 25 | resource.(Ex: `default`) 26 | 27 | When tags are already present inside the Kubernetes custom resource's `Spec.Tags`, 28 | ACK default tags are added to the AWS resource's tags collection along with those 29 | tags from `Spec.Tags`. Priority is given to `Spec.Tags` when there is a 30 | conflict between ACK default tag keys and tag keys in `Spec.Tags`. 31 | 32 | ## Example 33 | 34 | For a resource manifest like 35 | 36 | ```yaml 37 | apiVersion: ecr.services.k8s.aws/v1alpha1 38 | kind: Repository 39 | metadata: 40 | name: my-ack-tagging-repo 41 | namespace: default 42 | spec: 43 | name: my-ack-tagging-repo 44 | tags: 45 | - key: "first" 46 | value: "1" 47 | - key: "second" 48 | value: "2" 49 | ``` 50 | 51 | The sample response for `list-tags-for-resource` will look like 52 | 53 | ```bash 54 | aws ecr list-tags-for-resource --resource-arn arn:aws:ecr:us-west-2:************:repository/my-ack-tagging-repo 55 | { 56 | "tags": [ 57 | { 58 | "Key": "services.k8s.aws/controller-version", 59 | "Value": "ecr-0.1.4" 60 | }, 61 | { 62 | "Key": "first", 63 | "Value": "1" 64 | }, 65 | { 66 | "Key": "services.k8s.aws/namespace", 67 | "Value": "default" 68 | }, 69 | { 70 | "Key": "second", 71 | "Value": "2" 72 | } 73 | ] 74 | } 75 | 76 | ``` 77 | 78 | ## Configuring Default Tags 79 | 80 | The default tags added by ACK controllers are configurable during controller 81 | installation. 82 | 83 | * To remove the ACK default tags, set the `resourceTags` Helm value to be `{}` inside 84 | *values.yaml* file or use `--set 'resourceTags={}'` during helm chart installation. 85 | 86 | * To override the default ACK tags, include each tag "key=value" pair as a list under 87 | `resourceTags` in *values.yaml* file 88 | ```yaml 89 | resourceTags: 90 | - tk1=tv1 91 | - tk2=tv2 92 | ``` 93 | You can also override default ACK tags using `--set 'resourceTags=[tk1=tv1, tk2=tv2]'` 94 | during helm chart installation. 95 | 96 | * ACK supports variable expansion inside tag values for following variables: 97 | - %CONTROLLER_SERVICE% 98 | - %CONTROLLER_VERSION% 99 | - %K8S_NAMESPACE% 100 | - %K8S_RESOURCE_NAME% 101 | 102 | A custom resource tag `k8s-name=%K8S_RESOURCE_NAME` in above ecr repository example 103 | would be expanded to "k8s-name=my-ack-tagging-repo" 104 | -------------------------------------------------------------------------------- /docs/content/docs/user-docs/cleanup.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "Uninstall an ACK Controller" 3 | description: "Uninstall an ACK Controller" 4 | lead: "" 5 | draft: false 6 | menu: 7 | docs: 8 | parent: "getting-started" 9 | weight: 100 10 | toc: true 11 | --- 12 | 13 | Use the `helm uninstall` command to uninstall an ACK service controller: 14 | ```bash 15 | export SERVICE=s3 16 | 17 | # Uninstall the ACK service controller with Helm 18 | helm uninstall -n $ACK_SYSTEM_NAMESPACE ack-$SERVICE-controller 19 | ``` 20 | 21 | ## Delete CRDs 22 | 23 | ### Delete individual CRDS 24 | 25 | If you have multiple controllers installed and only want to delete CRDs related to a specific resource, use the `kubectl delete` command to delete the CRDs with the the service name prefix. 26 | 27 | For example, use the following commands to delete the CRD for Amazon S3 Buckets: 28 | ```bash 29 | export SERVICE=s3 30 | export CHART_EXPORT_PATH=/tmp/chart 31 | 32 | # Delete an individual CRD 33 | kubectl delete -f $CHART_EXPORT_PATH/$SERVICE-chart/crds/s3.services.k8s.aws_buckets.yaml 34 | ``` 35 | 36 | {{% hint type="warning" title="Check for CRDs that are common across services" %}} 37 | There are a few custom resource definitions (CRDs) that are common across services. If you have multiple controllers installed, you should not delete the common CRDs unless you are uninstalling all of the controllers. 38 | {{% /hint %}} 39 | 40 | ### Delete all CRDs 41 | 42 | If you are sure that you would like to delete all CRDs, use the following commands: 43 | ```bash 44 | export SERVICE=s3 45 | export CHART_EXPORT_PATH=/tmp/chart 46 | 47 | # Delete all CRDs 48 | kubectl delete -f $CHART_EXPORT_PATH/$SERVICE-chart/crds 49 | ``` 50 | 51 | ## Verify Helm charts were deleted 52 | 53 | Verify that the Helm chart for your ACK service controller was deleted with the following command: 54 | ```bash 55 | helm ls -n $ACK_SYSTEM_NAMESPACE 56 | ``` 57 | 58 | ## Delete namespaces 59 | 60 | Delete a specified namespace with the `kubectl delete namespace` command: 61 | ```bash 62 | kubectl delete namespace $ACK_SYSTEM_NAMESPACE 63 | ``` 64 | 65 | ## Delete ConfigMap 66 | 67 | If you used [cross account resource management][carm-docs], delete the `ConfigMap` you created. 68 | ```bash 69 | kubectl delete -n ack-system configmap ack-role-account-map 70 | ``` 71 | 72 | [carm-docs]: ../cross-account-resource-management/ 73 | 74 | -------------------------------------------------------------------------------- /docs/content/docs/user-docs/cross-account-resource-management.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "Manage Resources In Multiple AWS Accounts" 3 | description: "Managing resources in different AWS accounts" 4 | lead: "" 5 | draft: false 6 | menu: 7 | docs: 8 | parent: "getting-started" 9 | weight: 50 10 | toc: true 11 | --- 12 | 13 | ACK service controllers can manage resources in different AWS accounts. To enable and start using this feature, as an administrator, you will need to: 14 | 15 | 1. Configure the AWS accounts where the resources will be managed 16 | 2. Map AWS accounts with the Role ARNs that need to be assumed 17 | 3. Annotate namespaces with AWS Account IDs 18 | 19 | For detailed information about how ACK service controllers manage resources in multiple AWS accounts, please refer to the Cross-Account Resource Management (CARM) [design document](https://github.com/aws-controllers-k8s/community/blob/main/docs/design/proposals/carm/cross-account-resource-management.md). 20 | 21 | {{% hint type="note" title="To use CARM, `--watch-namespace` must be empty" %}} 22 | ACK service controllers may be started in either Cluster Mode or Namespace Mode. When a service controller is started in Namespace Mode, the `--watch-namespace` flag is supplied and the controller will *only* watch for custom resources (CRs) in that Kubernetes Namespace. Because the cross-account resource management feature requires the controller to watch for custom resources on many Kubernetes Namespaces, this feature is incompatible with the Namespace Mode of running a controller and thus the `--watch-namespace` flag must not be set (or be set to an empty string). 23 | {{% /hint %}} 24 | 25 | ## Step 1: Configure your AWS accounts 26 | 27 | AWS account administrators should create and configure IAM roles to allow ACK service controllers to assume roles in different AWS accounts. 28 | 29 | To allow account A (000000000000) to create AWS S3 buckets in account B (111111111111), you can use the following commands: 30 | ```bash 31 | # Using account B credentials 32 | aws iam create-role --role-name s3FullAccess \ 33 | --assume-role-policy-document '{"Version": "2012-10-17","Statement": [{ "Effect": "Allow", "Principal": {"AWS": "arn:aws:iam::000000000000:role/roleA-production"}, "Action": "sts:AssumeRole"}]}' 34 | aws iam attach-role-policy --role-name s3FullAccess \ 35 | --policy-arn 'arn:aws:iam::aws:policy/service-role/AmazonS3FullAccess' 36 | ``` 37 | 38 | ## Step 2: Map AWS accounts to their associated role ARNs 39 | 40 | Create a `ConfigMap` to associate each AWS Account ID with the role ARN that needs to be assumed in order to manage resources in that particular account. 41 | 42 | ```bash 43 | cat < bucket.yaml 38 | 39 | kubectl create -f bucket.yaml 40 | 41 | kubectl describe bucket/$BUCKET_NAME 42 | ``` 43 | 44 | ## Update the S3 bucket 45 | 46 | ```bash 47 | read -r -d '' BUCKET_MANIFEST < bucket.yaml 61 | 62 | kubectl apply -f bucket.yaml 63 | 64 | kubectl describe bucket/$BUCKET_NAME 65 | ``` 66 | 67 | ## Delete the S3 bucket 68 | 69 | ```bash 70 | kubectl delete -f bucket.yaml 71 | 72 | # verify the bucket no longer exists 73 | kubectl get bucket/$BUCKET_NAME 74 | ``` 75 | 76 | ## Next Steps 77 | 78 | Now that you have verified ACK service controller functionality, [checkout ACK 79 | functionality for creating resources in multiple AWS regions.](../multi-region-resource-management) 80 | -------------------------------------------------------------------------------- /docs/content/reference/_index.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: API Reference 3 | --- -------------------------------------------------------------------------------- /docs/data/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-controllers-k8s/community/fea3f369a476b1fa105223695e2f67d279f4b298/docs/data/.gitkeep -------------------------------------------------------------------------------- /docs/design/proposals/adoption/images/adoption-sequence-diagram.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-controllers-k8s/community/fea3f369a476b1fa105223695e2f67d279f4b298/docs/design/proposals/adoption/images/adoption-sequence-diagram.png -------------------------------------------------------------------------------- /docs/design/proposals/carm/images/carm-sequence-diagram.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-controllers-k8s/community/fea3f369a476b1fa105223695e2f67d279f4b298/docs/design/proposals/carm/images/carm-sequence-diagram.png -------------------------------------------------------------------------------- /docs/design/proposals/codegen-refactor/designs/Current Dev Loop.txt: -------------------------------------------------------------------------------- 1 | title Current Dev Loop 2 | 3 | actor User 4 | participant $SERVICE-controller 5 | participant code-generator 6 | 7 | User->$SERVICE-controller: edit generator.yaml 8 | User->code-generator: ./ack-generate apis && ./ack-generate controller 9 | code-generator->code-generator: generate API and Controller code 10 | code-generator-->$SERVICE-controller: writes to apis/ and pkg/ 11 | code-generator->User: Success! 12 | User->$SERVICE-controller: git diff -------------------------------------------------------------------------------- /docs/design/proposals/codegen-refactor/designs/README.txt: -------------------------------------------------------------------------------- 1 | - Navigate to https://sequencediagram.org/ 2 | - Load from 'source text' > select diagram.txt file 3 | -------------------------------------------------------------------------------- /docs/design/proposals/codegen-refactor/designs/proposed_pipeline.txt: -------------------------------------------------------------------------------- 1 | title Proposed Code Generator Pipeline 2 | 3 | actor User 4 | participant generateAPIs() 5 | participant generateModel() 6 | participant ackgenerate 7 | participant Common 8 | participant Model 9 | participant Github 10 | participant $SERVICE-controller 11 | 12 | User->generateModel(): ./ack-generate model $SERVICE 13 | note over User, generateModel():model args:\n- service\n- template-dirs\n- cache-dir\n- version\n- generator-config-path\n- metadata-config-path\n- aws-sdk-go-version 14 | generateModel()->Common: ensureSDKRepo() 15 | Common-->Github: 16 | note over Common, Github: Clones and caches aws-sdk-go repo, if not available locally 17 | Github-->Common: 18 | Common->generateModel(): return repo 19 | generateModel()->Model: loadModelWithAPIVersion(svcAlias, version) 20 | note over generateModel(), Model: uses ackgenconfig and aws-sdk to load and cache model 21 | Model-->generateModel(): return model 22 | generateModel()->User: ackmodel created and cached at ./cache/aws-controllers-k8s/ack-model.json 23 | User->generateAPIs(): ./ack-generate apis $SERVICE 24 | note over User, generateAPIs():api args:\n- service\n- cache-dir (for sdk and model)\n- template-dirs 25 | generateAPIs()->Common: GetModel() 26 | Common-->generateAPIs(): return model, nil (fetches from cache or exits) 27 | generateAPIs()->ackgenerate: ackgenerate.APIs(model, templateDir) 28 | ackgenerate->generateAPIs(): return templateSet, nil 29 | generateAPIs()->$SERVICE-controller: execute templates & write API files to output repo 30 | generateAPIs()->User: API files generated! 31 | -------------------------------------------------------------------------------- /docs/design/proposals/codegen-refactor/images/current_pipeline.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-controllers-k8s/community/fea3f369a476b1fa105223695e2f67d279f4b298/docs/design/proposals/codegen-refactor/images/current_pipeline.png -------------------------------------------------------------------------------- /docs/design/proposals/codegen-refactor/images/proposed_cleanup.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-controllers-k8s/community/fea3f369a476b1fa105223695e2f67d279f4b298/docs/design/proposals/codegen-refactor/images/proposed_cleanup.png -------------------------------------------------------------------------------- /docs/design/proposals/codegen-refactor/images/proposed_gen.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-controllers-k8s/community/fea3f369a476b1fa105223695e2f67d279f4b298/docs/design/proposals/codegen-refactor/images/proposed_gen.png -------------------------------------------------------------------------------- /docs/design/proposals/codegen-refactor/images/proposed_pipeline.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-controllers-k8s/community/fea3f369a476b1fa105223695e2f67d279f4b298/docs/design/proposals/codegen-refactor/images/proposed_pipeline.png -------------------------------------------------------------------------------- /docs/design/proposals/controller-bootstrap/images/controller-bootstrap-command-line-arguments.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-controllers-k8s/community/fea3f369a476b1fa105223695e2f67d279f4b298/docs/design/proposals/controller-bootstrap/images/controller-bootstrap-command-line-arguments.png -------------------------------------------------------------------------------- /docs/design/proposals/controller-bootstrap/images/controller-bootstrap-command-line-screenshot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-controllers-k8s/community/fea3f369a476b1fa105223695e2f67d279f4b298/docs/design/proposals/controller-bootstrap/images/controller-bootstrap-command-line-screenshot.png -------------------------------------------------------------------------------- /docs/design/proposals/controller-bootstrap/images/controller-bootstrap-eks-directory-screenshot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-controllers-k8s/community/fea3f369a476b1fa105223695e2f67d279f4b298/docs/design/proposals/controller-bootstrap/images/controller-bootstrap-eks-directory-screenshot.png -------------------------------------------------------------------------------- /docs/design/proposals/controller-bootstrap/images/controller-bootstrap-flowchart.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-controllers-k8s/community/fea3f369a476b1fa105223695e2f67d279f4b298/docs/design/proposals/controller-bootstrap/images/controller-bootstrap-flowchart.png -------------------------------------------------------------------------------- /docs/design/proposals/controller-bootstrap/images/controller-bootstrap-sequence-diagram.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-controllers-k8s/community/fea3f369a476b1fa105223695e2f67d279f4b298/docs/design/proposals/controller-bootstrap/images/controller-bootstrap-sequence-diagram.png -------------------------------------------------------------------------------- /docs/design/proposals/controller-bootstrap/images/controller-bootstrap-table.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-controllers-k8s/community/fea3f369a476b1fa105223695e2f67d279f4b298/docs/design/proposals/controller-bootstrap/images/controller-bootstrap-table.png -------------------------------------------------------------------------------- /docs/design/proposals/secrets/example-fields.yaml: -------------------------------------------------------------------------------- 1 | secretRefs: 2 | api: rds 3 | - action: CreateDBInstance 4 | fields: 5 | MasterUserPassword 6 | - action: CreateDBCluster 7 | 8 | -------------------------------------------------------------------------------- /docs/design/proposals/secrets/images/rds-db-instance-creation-backend-flowchart.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-controllers-k8s/community/fea3f369a476b1fa105223695e2f67d279f4b298/docs/design/proposals/secrets/images/rds-db-instance-creation-backend-flowchart.png -------------------------------------------------------------------------------- /docs/design/proposals/secrets/images/rds-db-instance-creation-command-line-screenshot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-controllers-k8s/community/fea3f369a476b1fa105223695e2f67d279f4b298/docs/design/proposals/secrets/images/rds-db-instance-creation-command-line-screenshot.png -------------------------------------------------------------------------------- /docs/design/proposals/secrets/images/rds-db-instance-creation-sequence-diagram.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-controllers-k8s/community/fea3f369a476b1fa105223695e2f67d279f4b298/docs/design/proposals/secrets/images/rds-db-instance-creation-sequence-diagram.png -------------------------------------------------------------------------------- /docs/design/proposals/secrets/images/rds-db-instance-creation-user-flowchart.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-controllers-k8s/community/fea3f369a476b1fa105223695e2f67d279f4b298/docs/design/proposals/secrets/images/rds-db-instance-creation-user-flowchart.png -------------------------------------------------------------------------------- /docs/images/release-criteria.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-controllers-k8s/community/fea3f369a476b1fa105223695e2f67d279f4b298/docs/images/release-criteria.png -------------------------------------------------------------------------------- /docs/layouts/404.html: -------------------------------------------------------------------------------- 1 | {{ define "main" }} 2 |
3 |
4 |
5 |

Page not found :(

6 |

The page you are looking for doesn't exist or has been moved.

7 |
8 |
9 |
10 | {{ end }} -------------------------------------------------------------------------------- /docs/layouts/_default/_markup/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-controllers-k8s/community/fea3f369a476b1fa105223695e2f67d279f4b298/docs/layouts/_default/_markup/.gitkeep -------------------------------------------------------------------------------- /docs/layouts/_default/baseof.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | {{ partial "head/head.html" . }} 4 | {{ if eq .Kind "home" -}} 5 | {{ .Scratch.Set "class" "home" -}} 6 | {{ else if eq .Kind "404" -}} 7 | {{ .Scratch.Set "class" "error404" -}} 8 | {{ else if eq .Kind "page" -}} 9 | {{ .Scratch.Set "class" .Type -}} 10 | {{ .Scratch.Add "class" " single" -}} 11 | {{ else -}} 12 | {{ .Scratch.Set "class" .Type -}} 13 | {{ .Scratch.Add "class" " list" -}} 14 | {{ end -}} 15 | 16 | {{ partial "header/header.html" . }} 17 |
18 |
19 | {{ block "main" . }}{{ end }} 20 |
21 |
22 | {{ block "sidebar-prefooter" . }}{{ end }} 23 | {{ block "sidebar-footer" . }}{{ end }} 24 | {{ partial "footer/footer.html" . }} 25 | {{ if and .IsHome .Site.Params.alert }} 26 | {{ partial "footer/alert.html" . }} 27 | {{ end }} 28 | {{ partial "footer/script-footer.html" . }} 29 | 30 | -------------------------------------------------------------------------------- /docs/layouts/_default/index.js: -------------------------------------------------------------------------------- 1 | var docs = [ 2 | {{ range $index, $page := (where .Site.Pages "Section" "in" .Site.Params.documentationSections) -}} 3 | { 4 | id: {{ $index }}, 5 | title: "{{ .Title }}", 6 | description: "{{ .Params.description }}", 7 | href: "{{ .URL | relURL }}" 8 | }, 9 | {{ end -}} 10 | ]; -------------------------------------------------------------------------------- /docs/layouts/_default/index.json: -------------------------------------------------------------------------------- 1 | {{- $.Scratch.Add "index" slice -}} 2 | {{- range .Site.RegularPages -}} 3 | {{- $.Scratch.Add "index" (dict "title" .Title "description" .Params.description "contents" .Plain "RelPermalink" .RelPermalink) -}} 4 | {{- end -}} 5 | {{- $.Scratch.Get "index" | jsonify -}} -------------------------------------------------------------------------------- /docs/layouts/_default/list.html: -------------------------------------------------------------------------------- 1 | {{ define "main" }} 2 |
3 |
4 | {{ range .Paginator.Pages }} 5 | 9 | {{ end }} 10 | {{ template "_internal/pagination.html" . }} 11 |
12 |
13 | {{ end }} -------------------------------------------------------------------------------- /docs/layouts/_default/section.sitemap.xml: -------------------------------------------------------------------------------- 1 | {{ printf "" | safeHTML -}} 2 | 4 | {{ range $i, $e := .Data.Pages -}} 5 | {{ if ne .Params.sitemap_exclude true }} 6 | 7 | {{ .Permalink }}{{ if not .Lastmod.IsZero }} 8 | {{ safeHTML ( .Lastmod.Format "2006-01-02T15:04:05-07:00" ) }}{{ end }}{{ with .Sitemap.ChangeFreq }} 9 | {{ . }}{{ end }}{{ if ge .Sitemap.Priority 0.0 }} 10 | {{ .Sitemap.Priority }}{{ end }}{{ if .IsTranslated }}{{ range .Translations }} 11 | {{ end }} 16 | {{ end }} 21 | 22 | {{ end -}} 23 | {{ end -}} 24 | {{ range .Sections -}} 25 | {{ range $i, $e := .Data.Pages -}} 26 | {{ if ne .Params.sitemap_exclude true -}} 27 | 28 | {{ .Permalink }}{{ if not .Lastmod.IsZero }} 29 | {{ safeHTML ( .Lastmod.Format "2006-01-02T15:04:05-07:00" ) }}{{ end }}{{ with .Sitemap.ChangeFreq }} 30 | {{ . }}{{ end }}{{ if ge .Sitemap.Priority 0.0 }} 31 | {{ .Sitemap.Priority }}{{ end }}{{ if .IsTranslated }}{{ range .Translations }} 32 | {{ end }} 37 | {{ end }} 42 | 43 | {{ end -}} 44 | {{ end -}} 45 | {{ end -}} 46 | -------------------------------------------------------------------------------- /docs/layouts/_default/single.html: -------------------------------------------------------------------------------- 1 | {{ define "main" }} 2 |
3 |
4 |
5 |

{{ .Title }}

6 | {{ .Content }} 7 |
8 |
9 |
10 | {{ end }} 11 | -------------------------------------------------------------------------------- /docs/layouts/blog/list.html: -------------------------------------------------------------------------------- 1 | {{ define "main" }} 2 |
3 |
4 |
5 |

{{ .Title }}

6 |
{{ .Content }}
7 |
8 | {{ range .Data.Pages -}} 9 |
10 |
11 |

{{ .Params.title }}

12 |

{{ .Params.lead | safeHTML }}

13 | {{ partial "main/blog-meta.html" . -}} 14 |
15 |
16 | {{ end -}} 17 |
18 |
19 |
20 |
21 | {{ end }} -------------------------------------------------------------------------------- /docs/layouts/blog/single.html: -------------------------------------------------------------------------------- 1 | {{ define "main" }} 2 |
3 |
4 |
5 |
6 |

{{ .Title }}

7 | {{ partial "main/blog-meta.html" . }} 8 |
9 |

{{ .Params.lead | safeHTML }}

10 | {{ .Content }} 11 |
12 |
13 |
14 | {{ end }} -------------------------------------------------------------------------------- /docs/layouts/contributors/list.html: -------------------------------------------------------------------------------- 1 | {{ define "main" }} 2 |
3 |
4 |
5 |

{{ .Title }}

6 |
{{ .Content }}
7 |
8 | {{ range .Data.Pages -}} 9 |
10 |
11 |

{{ .Params.title }}

12 | {{ if eq .Section "blog" -}} 13 |

{{ .Params.lead | safeHTML }}

14 | {{ partial "main/blog-meta.html" . -}} 15 | {{ end -}} 16 |
17 |
18 | {{ end -}} 19 |
20 |
21 |
22 |
23 | {{ end }} -------------------------------------------------------------------------------- /docs/layouts/docs/list.html: -------------------------------------------------------------------------------- 1 | {{ define "main" }} 2 |
3 |
4 | 7 |
8 |
9 |
10 |

{{ .Title }}

11 |
{{ .Content }}
12 |
13 | {{ $currentSection := .CurrentSection }} 14 | {{ range where .Site.RegularPages.ByTitle "Section" .Section }} 15 | {{ if in (.RelPermalink | string) $currentSection.RelPermalink }} 16 |
17 | 20 |
21 | {{ end }} 22 | {{ end }} 23 |
24 |
25 |
26 |
27 | {{ end }} -------------------------------------------------------------------------------- /docs/layouts/docs/single.html: -------------------------------------------------------------------------------- 1 | {{ define "main" }} 2 |
3 |
4 | 7 |
8 | {{ if ne .Params.toc false -}} 9 | 12 | {{ end -}} 13 | {{ if .Params.toc -}} 14 |
15 | {{ else -}} 16 |
17 | {{ end -}} 18 | {{ if .Site.Params.options.breadCrumb -}} 19 | 20 | 26 | {{ end }} 27 |

{{ .Title }}

28 |

{{ .Params.lead | safeHTML }}

29 | {{ partial "main/headline-hash.html" .Content }} 30 | {{ if .Site.Params.editPage -}} 31 | {{ partial "main/edit-page.html" . }} 32 | {{ end -}} 33 | {{ if not .Site.Params.options.collapsibleSidebar -}} 34 | {{ partial "main/docs-navigation.html" . }} 35 | {{ else -}} 36 |
37 | {{ end -}} 38 |
39 |
40 | {{ end }} -------------------------------------------------------------------------------- /docs/layouts/index.headers: -------------------------------------------------------------------------------- 1 | /* 2 | Strict-Transport-Security: max-age=31536000; includeSubDomains; preload 3 | X-Content-Type-Options: nosniff 4 | X-XSS-Protection: 1; mode=block 5 | Content-Security-Policy: default-src 'self'; manifest-src 'self'; connect-src 'self'; font-src 'self'; img-src 'self' data:; script-src 'self'; style-src 'self' 'unsafe-inline' 6 | X-Frame-Options: SAMEORIGIN 7 | Referrer-Policy: strict-origin 8 | Feature-Policy: geolocation 'self' 9 | Cache-Control: public, max-age=31536000 -------------------------------------------------------------------------------- /docs/layouts/index.html: -------------------------------------------------------------------------------- 1 | {{ define "main" }} 2 |
3 |
4 |
5 |

{{ .Title }}

6 |
7 |
8 |

{{ .Params.lead | safeHTML }}

9 | Get started 10 |

Open-Sourced — Apache-2.0 Licensed — GitHub

11 |
12 |
13 |
14 | {{ end }} 15 | 16 | {{ define "sidebar-prefooter" }} 17 |
18 |
19 |
20 |
21 | {{ end }} 22 | 23 | {{ define "sidebar-footer" }} 24 |
25 |
26 |
27 | {{- .Content -}} 28 |
29 |
30 |
31 | {{ end }} 32 | -------------------------------------------------------------------------------- /docs/layouts/index.redirects: -------------------------------------------------------------------------------- 1 | # redirects for Netlify - https://www.netlify.com/docs/redirects/ 2 | {{- range $p := .Site.Pages -}} 3 | {{- range .Aliases }} 4 | {{ . }} {{ $p.RelPermalink -}} 5 | {{- end }} 6 | {{- end -}} -------------------------------------------------------------------------------- /docs/layouts/partials/footer/alert.html: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /docs/layouts/partials/footer/footer.html: -------------------------------------------------------------------------------- 1 |
2 |
3 |
4 |
5 |
    6 |
  • {{ .Site.Params.footer | safeHTML }}
  • 7 |
8 |
9 |
10 |
    11 | {{ range .Site.Menus.footer -}} 12 |
  • {{ .Name }}
  • 13 | {{ end -}} 14 |
15 |
16 |
17 |
18 |
-------------------------------------------------------------------------------- /docs/layouts/partials/footer/script-footer.html: -------------------------------------------------------------------------------- 1 | {{ $indexTemplate := resources.Get "js/index.js" -}} 2 | {{ $index := $indexTemplate | resources.ExecuteAsTemplate "index.js" . -}} 3 | 4 | {{ $bs := resources.Get "js/bootstrap.js" -}} 5 | {{ $bs := $bs | js.Build -}} 6 | 7 | {{ $highlight := resources.Get "js/highlight.js" -}} 8 | {{ $highlight := $highlight | js.Build -}} 9 | 10 | {{ $katex := resources.Get "js/vendor/katex/dist/katex.js" -}} 11 | {{ $katexAutoRender := resources.Get "js/vendor/katex/dist/contrib/auto-render.js" -}} 12 | 13 | {{ $mermaid := resources.Get "js/mermaid.js" | js.Build -}} 14 | 15 | {{ $app := resources.Get "js/app.js" -}} 16 | 17 | {{ $slice := slice $app -}} 18 | 19 | {{ if .Site.Params.options.lazySizes -}} 20 | {{ $lazySizes := resources.Get "js/lazysizes.js" -}} 21 | {{ $lazySizes := $lazySizes | js.Build -}} 22 | {{ $slice = $slice | append $lazySizes -}} 23 | {{ end -}} 24 | 25 | {{ if .Site.Params.options.clipBoard -}} 26 | {{ $clipBoard := resources.Get "js/clipboard.js" -}} 27 | {{ $clipBoard := $clipBoard | js.Build -}} 28 | {{ $slice = $slice | append $clipBoard -}} 29 | {{ end -}} 30 | 31 | {{ if .Site.Params.options.darkMode -}} 32 | {{ $darkMode := resources.Get "js/darkmode.js" -}} 33 | {{ $darkMode := $darkMode | js.Build -}} 34 | {{ $slice = $slice | append $darkMode -}} 35 | {{ end -}} 36 | 37 | {{ if .Site.Params.options.instantPage -}} 38 | {{ $instantPage := resources.Get "js/instant.page.js" -}} 39 | {{ $instantPage := $instantPage | js.Build -}} 40 | {{ $slice = $slice | append $instantPage -}} 41 | {{ end -}} 42 | 43 | {{ if .Site.Params.options.flexSearch -}} 44 | {{ $flexSearch := resources.Get "js/vendor/flexsearch/dist/flexsearch.bundle.js" -}} 45 | {{ $slice = $slice | append $flexSearch -}} 46 | {{ end -}} 47 | 48 | {{ if .Site.Params.options.kaTex -}} 49 | {{ $katexConfig := resources.Get "js/katex.js" -}} 50 | {{ $katexConfig := $katexConfig | js.Build -}} 51 | {{ $slice = $slice | append $katexConfig -}} 52 | {{ end -}} 53 | 54 | {{ $js := $slice | resources.Concat "main.js" -}} 55 | 56 | {{ if eq (hugo.Environment) "development" -}} 57 | {{ if .Site.Params.options.bootStrapJs -}} 58 | 59 | {{ end -}} 60 | {{ if .Site.Params.options.highLight -}} 61 | 62 | {{ end -}} 63 | {{ if .Site.Params.options.kaTex -}} 64 | 65 | 66 | {{ end -}} 67 | 68 | {{ with .Params.mermaid -}} 69 | 70 | {{ end -}} 71 | {{ if .Site.Params.options.flexSearch -}} 72 | 73 | {{ end -}} 74 | {{ else -}} 75 | {{ $js := $js | minify | fingerprint "sha512" -}} 76 | {{ $index := $index | minify | fingerprint "sha512" -}} 77 | {{ $bs := $bs | minify | fingerprint "sha512" -}} 78 | {{ $highlight := $highlight | minify | fingerprint "sha512" -}} 79 | {{ $katex := $katex | minify | fingerprint "sha512" -}} 80 | {{ $katexAutoRender := $katexAutoRender | minify | fingerprint "sha512" -}} 81 | {{ $mermaid := $mermaid | minify | fingerprint "sha512" -}} 82 | {{ if .Site.Params.options.bootStrapJs -}} 83 | 84 | {{ end -}} 85 | {{ if .Site.Params.options.highLight -}} 86 | 87 | {{ end -}} 88 | {{ if .Site.Params.options.kaTex -}} 89 | 90 | 91 | {{ end -}} 92 | 93 | {{ with .Params.mermaid -}} 94 | 95 | {{ end -}} 96 | {{ if .Site.Params.options.flexSearch -}} 97 | 98 | {{ end -}} 99 | {{ end -}} -------------------------------------------------------------------------------- /docs/layouts/partials/head/favicons.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /docs/layouts/partials/head/head.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | {{ block "head/resource-hints" . }}{{ partial "head/resource-hints.html" . }}{{ end }} 6 | {{ block "head/stylesheet" . }}{{ partial "head/stylesheet.html" . }}{{ end }} 7 | {{ block "head/seo" . }}{{ partial "head/seo.html" . }}{{ end }} 8 | {{ block "head/favicons" . }}{{ partial "head/favicons.html" . }}{{ end }} 9 | {{ block "head/script-header" . }}{{ partial "head/script-header.html" . }}{{ end }} 10 | -------------------------------------------------------------------------------- /docs/layouts/partials/head/opengraph.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | {{ if $.Scratch.Get "paginator" -}} 6 | {{ $paginator := .Paginate (where .Site.RegularPages.ByDate.Reverse "Section" "blog" ) -}} 7 | 8 | {{ else -}} 9 | 10 | {{ end -}} 11 | {{ with .Site.Params.title -}} 12 | 13 | {{ end -}} 14 | 15 | {{ $iso8601 := "2006-01-02T15:04:05-07:00" -}} 16 | {{ if .IsPage -}} 17 | {{ if not .PublishDate.IsZero -}} 18 | 19 | {{ else if not .Date.IsZero -}} 20 | 21 | {{ end -}} 22 | {{ if not .Lastmod.IsZero -}} 23 | 24 | {{ end -}} 25 | {{ else -}} 26 | {{ if not .Date.IsZero -}} 27 | 28 | {{ end -}} 29 | {{ end -}} 30 | 31 | {{ if eq .Kind "home" -}} 32 | {{ .Scratch.Set "title" .Site.Params.titleHome -}} 33 | {{ else -}} 34 | {{ .Scratch.Set "title" .Title -}} 35 | {{ end -}} 36 | 37 | {{ with $.Params.images -}} 38 | {{ range first 6 . -}} 39 | 40 | {{ end -}} 41 | {{ else -}} 42 | {{ $images := $.Resources.ByType "image" -}} 43 | {{ $featured := $images.GetMatch "*feature*" -}} 44 | {{ if not $featured -}} 45 | {{ $featured = $images.GetMatch "{*cover*,*thumbnail*}" }} 46 | {{ end -}} 47 | {{ with $featured -}} 48 | 49 | {{ else -}} 50 | {{ with $.Site.Params.images -}} 51 | 52 | 53 | {{ end -}} 54 | {{ end -}} 55 | {{ end -}} 56 | 57 | {{ with $.Site.Params.images -}} 58 | {{ $.Scratch.Set "primaryImage" (index . 0 | absURL) -}} 59 | {{ end -}} 60 | 61 | {{ with .Params.audio -}} 62 | 63 | {{ end -}} 64 | 65 | {{ with .Params.videos -}} 66 | {{ range . -}} 67 | 68 | {{ end -}} 69 | {{ end -}} 70 | -------------------------------------------------------------------------------- /docs/layouts/partials/head/resource-hints.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | {{ if .Site.Params.options.kaTex -}} 5 | 6 | 7 | {{ end -}} 8 | -------------------------------------------------------------------------------- /docs/layouts/partials/head/script-header.html: -------------------------------------------------------------------------------- 1 | {{ $darkMode := resources.Get "js/darkmode.js" -}} 2 | {{ $darkMode := $darkMode | js.Build -}} 3 | 4 | {{ if .Site.Params.options.darkMode -}} 5 | {{ $darkModeInit := resources.Get "js/darkmode-init.js" | js.Build | minify -}} 6 | 7 | {{ end -}} -------------------------------------------------------------------------------- /docs/layouts/partials/head/seo.html: -------------------------------------------------------------------------------- 1 | {{ if eq .Kind "404" -}} 2 | 3 | {{ else -}} 4 | {{ with .Params.robots -}} 5 | 6 | {{ else -}} 7 | 8 | 9 | 10 | {{ end -}} 11 | {{ end -}} 12 | 13 | {{ if .IsHome -}} 14 | {{ .Site.Params.title }} {{ .Site.Params.titleSeparator }} {{ .Site.Params.titleAddition }} 15 | {{ else -}} 16 | {{ .Title }} {{ .Site.Params.titleSeparator }} {{ .Site.Params.title }} 17 | {{ end -}} 18 | 19 | {{ with .Description -}} 20 | 21 | {{ else -}} 22 | 23 | {{ end -}} 24 | 25 | {{ if $.Scratch.Get "paginator" }} 26 | 27 | {{ if .Paginator.HasPrev -}} 28 | 29 | {{ end -}} 30 | {{ if .Paginator.HasNext -}} 31 | 32 | {{ end -}} 33 | {{ else -}} 34 | 35 | {{ end -}} 36 | 37 | {{ partial "head/opengraph.html" . }} 38 | {{ partial "head/twitter_cards.html" . }} 39 | 40 | {{ range .AlternativeOutputFormats -}} 41 | 42 | {{ end -}} 43 | 44 | {{ partial "head/structured-data.html" . }} 45 | -------------------------------------------------------------------------------- /docs/layouts/partials/head/stylesheet.html: -------------------------------------------------------------------------------- 1 | {{ if eq (hugo.Environment) "development" -}} 2 | {{ $options := (dict "targetPath" "main.css" "enableSourceMap" true "includePaths" (slice "node_modules")) -}} 3 | {{ $css := resources.Get "scss/app.scss" | toCSS $options -}} 4 | 5 | {{ else -}} 6 | {{ $options := (dict "targetPath" "main.css" "outputStyle" "compressed" "includePaths" (slice "node_modules")) -}} 7 | {{ $css := resources.Get "scss/app.scss" | toCSS $options | postCSS (dict "config" "config/postcss.config.js") -}} 8 | {{ $secureCSS := $css | resources.Fingerprint "sha512" -}} 9 | 10 | {{ end -}} 11 | -------------------------------------------------------------------------------- /docs/layouts/partials/head/twitter_cards.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | {{ with $.Params.images -}} 7 | 8 | {{ else -}} 9 | {{ $images := $.Resources.ByType "image" -}} 10 | {{ $featured := $images.GetMatch "*feature*" -}} 11 | {{ if not $featured -}} 12 | {{ $featured = $images.GetMatch "{*cover*,*thumbnail*}" -}} 13 | {{ end -}} 14 | {{ with $featured -}} 15 | 16 | {{ else -}} 17 | {{ with $.Site.Params.images -}} 18 | 19 | {{ else -}} 20 | 21 | {{ end -}} 22 | {{ end -}} 23 | {{ end -}} 24 | -------------------------------------------------------------------------------- /docs/layouts/partials/main/blog-meta.html: -------------------------------------------------------------------------------- 1 |

Posted {{ .PublishDate.Format "January 2, 2006" }} by {{ if .Params.contributors -}}{{ range $index, $contributor := .Params.contributors }}{{ if gt $index 0 }} and {{ end }}{{ . }}{{ end -}}{{ end -}} ‐ {{ .ReadingTime -}} min read

-------------------------------------------------------------------------------- /docs/layouts/partials/main/breadcrumb.html: -------------------------------------------------------------------------------- 1 | {{ with .Parent -}} 2 | {{ partial "main/breadcrumb.html" . -}} 3 |

4 | {{ end -}} -------------------------------------------------------------------------------- /docs/layouts/partials/main/docs-navigation.html: -------------------------------------------------------------------------------- 1 | {{ if or .Prev .Next -}} 2 |
3 | 4 | {{ $pages := where site.RegularPages "Section" .Section -}} 5 | {{ with $pages.Next . -}} 6 | 7 |
8 |
9 | ← {{ .Title }} 10 |
11 |
12 |
13 | {{ end -}} 14 | {{ with $pages.Prev . -}} 15 | 16 |
17 |
18 | {{ .Title }} → 19 |
20 |
21 |
22 | {{ end -}} 23 |
24 | {{ end -}} -------------------------------------------------------------------------------- /docs/layouts/partials/main/edit-page.html: -------------------------------------------------------------------------------- 1 |

Edit this page on GitHub

2 | -------------------------------------------------------------------------------- /docs/layouts/partials/main/headline-hash.html: -------------------------------------------------------------------------------- 1 | {{ . | replaceRE "()" `${1} ${3}` | safeHTML }} -------------------------------------------------------------------------------- /docs/layouts/partials/sidebar/docs-menu.html: -------------------------------------------------------------------------------- 1 | {{ if .Site.Params.options.collapsibleSidebar -}} 2 |
    3 | {{ $currentPage := . -}} 4 | {{ range $index, $element := .Site.Menus.docs -}} 5 | {{- $active := or ($currentPage.IsMenuCurrent "docs" .) ($currentPage.HasMenuCurrent "docs" .) -}} 6 | {{- $active = or $active (eq $currentPage.Section .Identifier) -}} 7 |
  • 8 | 11 | {{ if .HasChildren -}} 12 |
    13 |
      14 | {{ range .Children -}} 15 | {{- $active := or ($currentPage.IsMenuCurrent "docs" .) ($currentPage.HasMenuCurrent "docs" .) -}} 16 | {{- $active = or $active (eq $currentPage.Section .Identifier) -}} 17 |
    • {{ .Name }}
    • 18 | {{ end -}} 19 |
    20 |
    21 | {{ end -}} 22 |
  • 23 | {{ end -}} 24 |
25 | {{ else -}} 26 | {{ $currentPage := . -}} 27 | {{ range .Site.Menus.docs -}} 28 |

{{ .Name }}

29 | {{ if .HasChildren -}} 30 |
    31 | {{ range .Children -}} 32 | {{- $active := or ($currentPage.IsMenuCurrent "docs" .) ($currentPage.HasMenuCurrent "docs" .) -}} 33 | {{- $active = or $active (eq $currentPage.Section .Identifier) -}} 34 |
  • {{ .Name }}
  • 35 | {{ end -}} 36 |
37 | {{ end -}} 38 | {{ end -}} 39 | {{ end -}} -------------------------------------------------------------------------------- /docs/layouts/partials/sidebar/docs-toc.html: -------------------------------------------------------------------------------- 1 | {{ if ne .Params.toc false -}} 2 | 9 | {{ end -}} -------------------------------------------------------------------------------- /docs/layouts/partials/sidebar/list-card.html: -------------------------------------------------------------------------------- 1 |

{{ .service_metadata.service.short_name }}

2 |
3 |
    4 | {{ $service := . }} 5 | {{ range sort .resources "name" "asc" }} 6 |
    7 | {{ .name }} 8 | {{ .api_version }} 9 |
    10 | {{ end }} 11 |
12 |
-------------------------------------------------------------------------------- /docs/layouts/partials/sidebar/reference-menu-item.html: -------------------------------------------------------------------------------- 1 | {{ $root := . }} 2 |
  • 3 | {{ $serviceActive := eq $root.currentService $root.service.name }} 4 | 7 |
    8 | {{ range $api_version := sort $root.service.service_metadata.api_versions }} 9 | {{ $versionActive := and $serviceActive (eq $root.currentVersion ($api_version.api_version | lower)) }} 10 | 13 | {{ $versionAvailable := $api_version.status }} 14 | {{ if (eq $versionAvailable "available") }}Active{{ else }}Inactive{{ end }} 15 |
    16 |
      17 | {{ range $resource := sort $root.service.resources "name" "asc" -}} 18 | {{ if eq $resource.api_version $api_version.api_version -}} 19 | {{ $resourceActive := and $versionActive (eq $root.currentResource (.name | lower)) }} 20 |
    • {{ .name }}
    • 21 | {{ end -}} 22 | {{ end -}} 23 |
    24 |
    25 | {{ end -}} 26 |
    27 |
  • -------------------------------------------------------------------------------- /docs/layouts/partials/sidebar/reference-menu.html: -------------------------------------------------------------------------------- 1 |
    2 | 28 |
    -------------------------------------------------------------------------------- /docs/layouts/reference/list.html: -------------------------------------------------------------------------------- 1 | {{ define "main" }} 2 |
    3 | {{ partial "sidebar/reference-menu.html" .}} 4 |
    5 |
    6 |

    {{ .Title }}

    7 |
    {{ .Content }}
    8 |
    9 | 10 | {{ range sort .Site.Data.overview.services "name" "asc" }} 11 | {{ if eq (lower .service_metadata.service.short_name) "common" }} 12 | {{ partial "sidebar/list-card" . }} 13 | {{ end -}} 14 | {{ end }} 15 | 16 |
    17 | 18 | {{ range sort .Site.Data.overview.services "name" "asc" }} 19 | {{ if not (eq (lower .service_metadata.service.short_name) "common" ) }} 20 | {{ partial "sidebar/list-card" . }} 21 | {{ end -}} 22 | {{ end }} 23 |
    24 | 25 |
    26 |
    27 |
    28 | {{ end }} -------------------------------------------------------------------------------- /docs/layouts/reference/single.html: -------------------------------------------------------------------------------- 1 | {{ define "main" }} 2 |
    3 | {{ partial "sidebar/reference-menu.html" .}} 4 | {{ if ne .Params.toc false -}} 5 | 8 | {{ end -}} 9 | {{ if .Params.toc -}} 10 |
    11 | {{ else -}} 12 |
    13 | {{ end -}} 14 | {{ if .Site.Params.options.breadCrumb -}} 15 | 16 | 22 | {{ end }} 23 |

    {{ .Title }}

    24 |

    {{ .Params.lead | safeHTML }}

    25 | {{ partial "main/headline-hash.html" .Content }} 26 | {{ if not .Site.Params.options.collapsibleSidebar -}} 27 | {{ partial "main/docs-navigation.html" . }} 28 | {{ else -}} 29 |
    30 | {{ end -}} 31 |
    32 |
    33 | {{ end }} -------------------------------------------------------------------------------- /docs/layouts/robots.txt: -------------------------------------------------------------------------------- 1 | User-agent: * 2 | {{ if eq (hugo.Environment) "production" -}} 3 | Allow: / 4 | {{ else -}} 5 | Disallow: / 6 | {{ end }} 7 | Sitemap: {{ "sitemap.xml" | absURL -}} 8 | -------------------------------------------------------------------------------- /docs/layouts/rss.xml: -------------------------------------------------------------------------------- 1 | {{ printf "" | safeHTML }} 2 | 3 | 4 | {{ if eq .Title .Site.Title }}{{ .Site.Title }}{{ else }}{{ with .Title }}{{.}} on {{ end }}{{ .Site.Title }}{{ end }} 5 | {{ .Permalink }} 6 | Recent content {{ if ne .Title .Site.Title }}{{ with .Title }}in {{.}} {{ end }}{{ end }}on {{ .Site.Title }} 7 | Hugo -- gohugo.io{{ with .Site.LanguageCode }} 8 | {{.}}{{end}}{{ with .Site.Author.email }} 9 | {{.}}{{ with $.Site.Author.name }} ({{.}}){{end}}{{end}}{{ with .Site.Author.email }} 10 | {{.}}{{ with $.Site.Author.name }} ({{.}}){{end}}{{end}}{{ with .Site.Copyright }} 11 | {{.}}{{end}}{{ if not .Date.IsZero }} 12 | {{ .Date.Format "Mon, 02 Jan 2006 15:04:05 -0700" | safeHTML }}{{ end }} 13 | {{ with .OutputFormats.Get "RSS" }} 14 | {{ printf "" .Permalink .MediaType | safeHTML }} 15 | {{ end }} 16 | {{ range .Pages }}{{ if ne .Params.feed_exclude true }} 17 | 18 | {{ .Title }} 19 | {{ .Permalink }} 20 | {{ .Date.Format "Mon, 02 Jan 2006 15:04:05 -0700" | safeHTML }} 21 | {{ with .Site.Author.email }}{{.}}{{ with $.Site.Author.name }} ({{.}}){{end}}{{end}} 22 | {{ .Permalink }} 23 | {{ .Summary | html }} 24 | 25 | {{ end }}{{ end }} 26 | 27 | 28 | -------------------------------------------------------------------------------- /docs/layouts/shortcodes/alert.html: -------------------------------------------------------------------------------- 1 | 13 | -------------------------------------------------------------------------------- /docs/layouts/shortcodes/email.html: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /docs/layouts/shortcodes/hint.html: -------------------------------------------------------------------------------- 1 |
    2 |
    3 | {{ .Get "title" | default "Note" | markdownify | chomp }} 4 |
    5 |
    6 | {{ .Inner | markdownify | chomp }} 7 |
    8 |
    9 | -------------------------------------------------------------------------------- /docs/layouts/shortcodes/img-simple.html: -------------------------------------------------------------------------------- 1 | {{ $image := .Page.Resources.GetMatch (printf "*%s*" (.Get "src")) -}} 2 | {{ $lqip := $image.Resize $.Site.Params.lqipWidth -}} 3 | -------------------------------------------------------------------------------- /docs/layouts/shortcodes/img.html: -------------------------------------------------------------------------------- 1 | {{ $image := .Page.Resources.GetMatch (printf "*%s*" (.Get "src")) -}} 2 | {{ $lqip := $image.Resize $.Site.Params.lqipWidth -}} 3 | 4 | {{ $imgSrc := "" -}} 5 | {{ $imgSrcSet := slice -}} 6 | 7 | {{ $widths := $.Site.Params.landscapePhotoWidths -}} 8 | {{ if gt $image.Height $image.Width -}} 9 | {{ $widths = $.Site.Params.portraitPhotoWidths -}} 10 | {{ end -}} 11 | 12 | {{ range $widths -}} 13 | {{ $srcUrl := (printf "%dx" . | $image.Resize).Permalink -}} 14 | {{ if eq $imgSrc "" -}}{{ $imgSrc = $srcUrl -}}{{ end -}} 15 | {{ $imgSrcSet = $imgSrcSet | append (printf "%s %dw" $srcUrl .) -}} 16 | {{ end -}} 17 | {{ $imgSrcSet = (delimit $imgSrcSet ",") -}} 18 | 19 | 20 | 21 | 22 | {{ with .Get "caption" }}
    {{ . | safeHTML }}
    {{ end }} 23 | 24 | -------------------------------------------------------------------------------- /docs/layouts/shortcodes/mermaid.html: -------------------------------------------------------------------------------- 1 | {{ if .Page.Params.mermaid -}} 2 |
    3 | {{ $data := replaceRE "(^\\s+```)" "" .Inner -}} 4 | {{ replaceRE "(```\\s+$)" "" $data -}} 5 |
    6 | {{ else -}} 7 | {{ errorf "Failed to process mermaid shortcode: %s. Set mermaid to true in page front matter." .Position }} 8 | {{ end -}} 9 | -------------------------------------------------------------------------------- /docs/layouts/shortcodes/reference-resource.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-controllers-k8s/community/fea3f369a476b1fa105223695e2f67d279f4b298/docs/layouts/shortcodes/reference-resource.html -------------------------------------------------------------------------------- /docs/layouts/shortcodes/video.html: -------------------------------------------------------------------------------- 1 |
    2 | 3 | {{ with .Get "webm-src" -}} 4 | 5 | {{ end -}} 6 | {{ with .Get "mp4-src" -}} 7 | 8 | {{ end -}} 9 | Sorry, your browser doesn't support embedded videos. 10 | 11 |
    12 | -------------------------------------------------------------------------------- /docs/layouts/sitemap.xml: -------------------------------------------------------------------------------- 1 | {{ printf "" | safeHTML }} 2 | 4 | {{ range .Data.Pages }}{{ if ne .Params.sitemap_exclude true }} 5 | 6 | {{ .Permalink }}{{ if not .Lastmod.IsZero }} 7 | {{ safeHTML ( .Lastmod.Format "2006-01-02T15:04:05-07:00" ) }}{{ end }}{{ with .Sitemap.ChangeFreq }} 8 | {{ . }}{{ end }}{{ if ge .Sitemap.Priority 0.0 }} 9 | {{ .Sitemap.Priority }}{{ end }}{{ if .IsTranslated }}{{ range .Translations }} 10 | {{ end }} 15 | {{ end }} 20 | 21 | {{ end }}{{ end }} 22 | 23 | -------------------------------------------------------------------------------- /docs/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "ack-community-docs", 3 | "description": "AWS Controllers for Kubernetes documentation website", 4 | "version": "0.0.1", 5 | "browserslist": [ 6 | "defaults" 7 | ], 8 | "repository": "https://github.com/aws-controllers-k8s/community", 9 | "license": "Apache-2.0", 10 | "publishConfig": { 11 | "access": "public" 12 | }, 13 | "scripts": { 14 | "create": "exec-bin bin/hugo/hugo new", 15 | "prestart": "npm run clean", 16 | "start": "exec-bin bin/hugo/hugo server --bind=0.0.0.0 --disableFastRender", 17 | "prebuild": "npm run clean", 18 | "build": "exec-bin bin/hugo/hugo --gc --minify", 19 | "build:preview": "npm run build -D -F", 20 | "clean": "shx rm -rf public resources", 21 | "clean:install": "shx rm -rf package-lock.json bin node_modules ", 22 | "lint": "npm run -s lint:scripts && npm run -s lint:styles && npm run -s lint:markdown", 23 | "lint:scripts": "eslint assets/js config functions", 24 | "lint:styles": "stylelint \"assets/scss/**/*.{css,sass,scss,sss,less}\"", 25 | "lint:markdown": "markdownlint \"*.md\" \"content/**/*.md\"", 26 | "server": "exec-bin bin/hugo/hugo server", 27 | "test": "npm run -s lint", 28 | "env": "env", 29 | "precheck": "npm version", 30 | "check": "exec-bin bin/hugo/hugo version", 31 | "copy:katex-fonts": "shx cp ./node_modules/katex/dist/fonts/* ./static/fonts/", 32 | "postinstall": "hugo-installer --version otherDependencies.hugo --extended" 33 | }, 34 | "devDependencies": { 35 | "@babel/cli": "^7.23.4", 36 | "@babel/core": "^7.23.7", 37 | "@babel/preset-env": "^7.23.7", 38 | "@fullhuman/postcss-purgecss": "^4.1.3", 39 | "autoprefixer": "^10.4.16", 40 | "bootstrap": "^5.3.2", 41 | "clipboard": "^2.0.11", 42 | "eslint": "^7.32.0", 43 | "exec-bin": "^1.0.0", 44 | "flexsearch": "^0.7.31", 45 | "gh-pages": "3.2.3", 46 | "highlight.js": "^11.9.0", 47 | "hugo-installer": "^3.1.0", 48 | "instant.page": "^5.2.0", 49 | "katex": "^0.13.24", 50 | "lazysizes": "^5.3.2", 51 | "markdown-it": "^14.0.0", 52 | "markdownlint-cli": "^0.31.1", 53 | "mermaid": "^9.4.3", 54 | "nanoid": "^5.0.4", 55 | "postcss": "^8.4.32", 56 | "postcss-cli": "^8.3.1", 57 | "purgecss-whitelister": "^2.4.0", 58 | "set-value": "^4.1.0", 59 | "shelljs": "^0.8.5", 60 | "shx": "^0.3.4", 61 | "stylelint": "^16.1.0", 62 | "stylelint-config-standard": "^36.0.0" 63 | }, 64 | "otherDependencies": { 65 | "hugo": "0.87.0" 66 | } 67 | } 68 | -------------------------------------------------------------------------------- /docs/requirements.txt: -------------------------------------------------------------------------------- 1 | acktools @ git+https://github.com/aws-controllers-k8s/test-infra.git@817a75417079e595b394e175c1463ebcec958f97#subdirectory=tools 2 | PyGitHub==1.55 3 | Jinja2==3.0.1 4 | -------------------------------------------------------------------------------- /docs/scripts/templates/resource.jinja2: -------------------------------------------------------------------------------- 1 | --- 2 | title: "{{ name }}" 3 | draft: false 4 | toc: true 5 | --- 6 | 7 | `{{ group }}/{{ api_version }}` 8 | Type|Link 9 | ----|---- 10 | GoDoc|[{{ crd_package_path }}/{{ api_version }}#{{ names.kind }}](https://pkg.go.dev/github.com/aws-controllers-k8s/{{ crd_package_path }}/{{ api_version }}#{{ names.kind }}) 11 | 12 | ## Metadata 13 | Property|Value 14 | --------|----- 15 | Scope|{{ scope }} 16 | Kind|`{{ names.kind }}` 17 | ListKind|`{{ names.listKind }}` 18 | Plural|`{{ names.plural }}` 19 | Singular|`{{ names.singular }}` 20 | 21 | {{ description.split("\n")[1:] | join("\n") }} 22 | 23 | ## Spec 24 | 25 | {% macro render_yaml_field(field, indentation=0, has_list_delim=False) %} 26 | {%- if field.type == "array" -%} 27 | {{ field.name }}: 28 | {%- if field.contains is not string %} 29 | {%- for subfield in field.contains %} 30 | 31 | {{ render_yaml_field(subfield, indentation + 1, loop.first) | indent(2 + (-2 if loop.first and subfield.type not in ["array", "object"] else 0), True) }} 32 | {%- endfor -%} 33 | {%- else %} 34 | 35 | - {{ field.contains }} 36 | {%- endif -%} 37 | {%- elif field.type == "object" %} 38 | {{ field.name }}: {% if field.contains is string %}{}{% else %} 39 | {% for subfield in field.contains %} 40 | 41 | {{ render_yaml_field(subfield, indentation + 1, false) | indent(2, True) }} 42 | {%- endfor -%} 43 | {%- endif -%} 44 | {%- else %} 45 | {{ "- " if has_list_delim }}{{ field.name }}: {{ field.type }} 46 | {%- endif -%} 47 | {%- endmacro %} 48 | 49 | ```yaml 50 | {% for field in spec %} 51 | {{ render_yaml_field(field) }} 52 | {% endfor %} 53 | ``` 54 | 55 | {% macro render_field(field, prefix='') -%} 56 | | **{{ prefix }}{{ field.name }}**
    {{ "Required" if field.required else "Optional" }} | **{{ field.type }}**
    {{ field.description | replace("\n", "
    ") }} | 57 | {% if field.type == "array" -%} 58 | | **{{ prefix }}{{ field.name }}.[]**
    Required | **{% if field.contains is not string %}object{% else %}{{ field.contains }}{% endif %}**
    {{ field.contains_description if field.contains_description else "" }} | 59 | {%- if field.contains is not string -%} 60 | {%- for subfield in field.contains -%} 61 | {{ render_field(subfield, prefix + field.name + ".[].") }} 62 | {%- endfor -%} 63 | {%- endif -%} 64 | {%- elif field.type == "object" -%} 65 | {%- if field.contains is not string -%} 66 | {%- for subfield in field.contains -%} 67 | {{ render_field(subfield, prefix + field.name + ".") }} 68 | {%- endfor -%} 69 | {%- endif -%} 70 | {%- endif -%} 71 | {%- endmacro %} 72 | 73 | 74 | | Field | Description | 75 | | ----- | ----------- | 76 | {% for field in spec -%} 77 | {{ render_field(field) }} 78 | {%- endfor %} 79 | 80 | ## Status 81 | 82 | ```yaml 83 | {% for field in status %} 84 | {{ render_yaml_field(field) }} 85 | {% endfor %} 86 | ``` 87 | 88 | | Field | Description | 89 | | ----- | ----------- | 90 | {% for field in status -%} 91 | {{ render_field(field) }} 92 | {%- endfor %} -------------------------------------------------------------------------------- /docs/scripts/templates/services.jinja2: -------------------------------------------------------------------------------- 1 | --- 2 | title : "Services" 3 | description: "Project status of each supported service" 4 | lead: "" 5 | draft: false 6 | menu: 7 | docs: 8 | parent: "introduction" 9 | weight: 40 10 | toc: true 11 | --- 12 | 13 | The following AWS service APIs have service controllers included in ACK or have 14 | controllers in one of our [several project stages][project-stages]. 15 | 16 | [project-stages]: ../releases#project-stages 17 | 18 | ACK controllers that have reached the `RELEASED` project stage will also be in 19 | one of our [maintenance phases][maint-phases]. 20 | 21 | [maint-phases]: ../releases#maintenance-phases 22 | 23 | For details, including a list of planned AWS service APIs, see the [Service 24 | Controller Release Roadmap](https://github.com/aws-controllers-k8s/community/projects/1): 25 | 26 | {% raw %} 27 | {{% hint type="danger" title="IMPORTANT" %}} 28 | There is no single release of the ACK project. The ACK project contains a 29 | series of service controllers, one for each AWS service API. Each 30 | individual ACK service controller is released separately. Please see the 31 | [release documentation](../releases) for information on how we version and 32 | release ACK service controllers. 33 | {{% /hint %}} 34 | {% endraw %} 35 | 36 | {{ summary_table }} 37 | 38 | {{ services_table }} 39 | 40 | {% raw %} 41 | {{% hint type="info" title="Don't see a service listed?" %}} 42 | If you don't see a particular AWS service listed, feel free to 43 | [propose it](https://github.com/aws-controllers-k8s/community/issues/new?labels=Service+Controller&template=propose_new_controller.md&title=%5Bname%5D+service+controller)! 44 | {{% /hint %}} 45 | {% endraw %} 46 | 47 | {% for service_pkg, controller in controllers.items() %} 48 | ## {{ service_display_names[service_pkg] }} 49 | 50 | * ACK service controller: {{ controller.source_repo_url | urlize }} 51 | * Current project stage: `{{ controller.project_stage }}` 52 | * Current maintenance phase: `{{ controller.maintenance_phase }}` 53 | {% if controller.gh_issue_url is string %} 54 | * Controller proposal: {{ controller.gh_issue_url | urlize }} 55 | {% endif %} 56 | {% if controller.image_repo.uri is string %} 57 | * Container URI: `{{ controller.image_repo.uri }}` 58 | {% endif %} 59 | {% if controller.chart_repo.uri is string %} 60 | * Helm Chart URI: `{{ controller.chart_repo.uri }}` 61 | {% endif %} 62 | 63 | {% endfor %} 64 | -------------------------------------------------------------------------------- /docs/static/ack.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-controllers-k8s/community/fea3f369a476b1fa105223695e2f67d279f4b298/docs/static/ack.png -------------------------------------------------------------------------------- /docs/static/android-chrome-192x192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-controllers-k8s/community/fea3f369a476b1fa105223695e2f67d279f4b298/docs/static/android-chrome-192x192.png -------------------------------------------------------------------------------- /docs/static/android-chrome-512x512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-controllers-k8s/community/fea3f369a476b1fa105223695e2f67d279f4b298/docs/static/android-chrome-512x512.png -------------------------------------------------------------------------------- /docs/static/apple-touch-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-controllers-k8s/community/fea3f369a476b1fa105223695e2f67d279f4b298/docs/static/apple-touch-icon.png -------------------------------------------------------------------------------- /docs/static/browserconfig.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | #da532c 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/static/css/vendor/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-controllers-k8s/community/fea3f369a476b1fa105223695e2f67d279f4b298/docs/static/css/vendor/.gitkeep -------------------------------------------------------------------------------- /docs/static/favicon-16x16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-controllers-k8s/community/fea3f369a476b1fa105223695e2f67d279f4b298/docs/static/favicon-16x16.png -------------------------------------------------------------------------------- /docs/static/favicon-32x32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-controllers-k8s/community/fea3f369a476b1fa105223695e2f67d279f4b298/docs/static/favicon-32x32.png -------------------------------------------------------------------------------- /docs/static/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-controllers-k8s/community/fea3f369a476b1fa105223695e2f67d279f4b298/docs/static/favicon.ico -------------------------------------------------------------------------------- /docs/static/fonts/KaTeX_AMS-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-controllers-k8s/community/fea3f369a476b1fa105223695e2f67d279f4b298/docs/static/fonts/KaTeX_AMS-Regular.ttf -------------------------------------------------------------------------------- /docs/static/fonts/KaTeX_AMS-Regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-controllers-k8s/community/fea3f369a476b1fa105223695e2f67d279f4b298/docs/static/fonts/KaTeX_AMS-Regular.woff -------------------------------------------------------------------------------- /docs/static/fonts/KaTeX_AMS-Regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-controllers-k8s/community/fea3f369a476b1fa105223695e2f67d279f4b298/docs/static/fonts/KaTeX_AMS-Regular.woff2 -------------------------------------------------------------------------------- /docs/static/fonts/KaTeX_Caligraphic-Bold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-controllers-k8s/community/fea3f369a476b1fa105223695e2f67d279f4b298/docs/static/fonts/KaTeX_Caligraphic-Bold.ttf -------------------------------------------------------------------------------- /docs/static/fonts/KaTeX_Caligraphic-Bold.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-controllers-k8s/community/fea3f369a476b1fa105223695e2f67d279f4b298/docs/static/fonts/KaTeX_Caligraphic-Bold.woff -------------------------------------------------------------------------------- /docs/static/fonts/KaTeX_Caligraphic-Bold.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-controllers-k8s/community/fea3f369a476b1fa105223695e2f67d279f4b298/docs/static/fonts/KaTeX_Caligraphic-Bold.woff2 -------------------------------------------------------------------------------- /docs/static/fonts/KaTeX_Caligraphic-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-controllers-k8s/community/fea3f369a476b1fa105223695e2f67d279f4b298/docs/static/fonts/KaTeX_Caligraphic-Regular.ttf -------------------------------------------------------------------------------- /docs/static/fonts/KaTeX_Caligraphic-Regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-controllers-k8s/community/fea3f369a476b1fa105223695e2f67d279f4b298/docs/static/fonts/KaTeX_Caligraphic-Regular.woff -------------------------------------------------------------------------------- /docs/static/fonts/KaTeX_Caligraphic-Regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-controllers-k8s/community/fea3f369a476b1fa105223695e2f67d279f4b298/docs/static/fonts/KaTeX_Caligraphic-Regular.woff2 -------------------------------------------------------------------------------- /docs/static/fonts/KaTeX_Fraktur-Bold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-controllers-k8s/community/fea3f369a476b1fa105223695e2f67d279f4b298/docs/static/fonts/KaTeX_Fraktur-Bold.ttf -------------------------------------------------------------------------------- /docs/static/fonts/KaTeX_Fraktur-Bold.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-controllers-k8s/community/fea3f369a476b1fa105223695e2f67d279f4b298/docs/static/fonts/KaTeX_Fraktur-Bold.woff -------------------------------------------------------------------------------- /docs/static/fonts/KaTeX_Fraktur-Bold.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-controllers-k8s/community/fea3f369a476b1fa105223695e2f67d279f4b298/docs/static/fonts/KaTeX_Fraktur-Bold.woff2 -------------------------------------------------------------------------------- /docs/static/fonts/KaTeX_Fraktur-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-controllers-k8s/community/fea3f369a476b1fa105223695e2f67d279f4b298/docs/static/fonts/KaTeX_Fraktur-Regular.ttf -------------------------------------------------------------------------------- /docs/static/fonts/KaTeX_Fraktur-Regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-controllers-k8s/community/fea3f369a476b1fa105223695e2f67d279f4b298/docs/static/fonts/KaTeX_Fraktur-Regular.woff -------------------------------------------------------------------------------- /docs/static/fonts/KaTeX_Fraktur-Regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-controllers-k8s/community/fea3f369a476b1fa105223695e2f67d279f4b298/docs/static/fonts/KaTeX_Fraktur-Regular.woff2 -------------------------------------------------------------------------------- /docs/static/fonts/KaTeX_Main-Bold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-controllers-k8s/community/fea3f369a476b1fa105223695e2f67d279f4b298/docs/static/fonts/KaTeX_Main-Bold.ttf -------------------------------------------------------------------------------- /docs/static/fonts/KaTeX_Main-Bold.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-controllers-k8s/community/fea3f369a476b1fa105223695e2f67d279f4b298/docs/static/fonts/KaTeX_Main-Bold.woff -------------------------------------------------------------------------------- /docs/static/fonts/KaTeX_Main-Bold.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-controllers-k8s/community/fea3f369a476b1fa105223695e2f67d279f4b298/docs/static/fonts/KaTeX_Main-Bold.woff2 -------------------------------------------------------------------------------- /docs/static/fonts/KaTeX_Main-BoldItalic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-controllers-k8s/community/fea3f369a476b1fa105223695e2f67d279f4b298/docs/static/fonts/KaTeX_Main-BoldItalic.ttf -------------------------------------------------------------------------------- /docs/static/fonts/KaTeX_Main-BoldItalic.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-controllers-k8s/community/fea3f369a476b1fa105223695e2f67d279f4b298/docs/static/fonts/KaTeX_Main-BoldItalic.woff -------------------------------------------------------------------------------- /docs/static/fonts/KaTeX_Main-BoldItalic.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-controllers-k8s/community/fea3f369a476b1fa105223695e2f67d279f4b298/docs/static/fonts/KaTeX_Main-BoldItalic.woff2 -------------------------------------------------------------------------------- /docs/static/fonts/KaTeX_Main-Italic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-controllers-k8s/community/fea3f369a476b1fa105223695e2f67d279f4b298/docs/static/fonts/KaTeX_Main-Italic.ttf -------------------------------------------------------------------------------- /docs/static/fonts/KaTeX_Main-Italic.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-controllers-k8s/community/fea3f369a476b1fa105223695e2f67d279f4b298/docs/static/fonts/KaTeX_Main-Italic.woff -------------------------------------------------------------------------------- /docs/static/fonts/KaTeX_Main-Italic.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-controllers-k8s/community/fea3f369a476b1fa105223695e2f67d279f4b298/docs/static/fonts/KaTeX_Main-Italic.woff2 -------------------------------------------------------------------------------- /docs/static/fonts/KaTeX_Main-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-controllers-k8s/community/fea3f369a476b1fa105223695e2f67d279f4b298/docs/static/fonts/KaTeX_Main-Regular.ttf -------------------------------------------------------------------------------- /docs/static/fonts/KaTeX_Main-Regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-controllers-k8s/community/fea3f369a476b1fa105223695e2f67d279f4b298/docs/static/fonts/KaTeX_Main-Regular.woff -------------------------------------------------------------------------------- /docs/static/fonts/KaTeX_Main-Regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-controllers-k8s/community/fea3f369a476b1fa105223695e2f67d279f4b298/docs/static/fonts/KaTeX_Main-Regular.woff2 -------------------------------------------------------------------------------- /docs/static/fonts/KaTeX_Math-BoldItalic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-controllers-k8s/community/fea3f369a476b1fa105223695e2f67d279f4b298/docs/static/fonts/KaTeX_Math-BoldItalic.ttf -------------------------------------------------------------------------------- /docs/static/fonts/KaTeX_Math-BoldItalic.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-controllers-k8s/community/fea3f369a476b1fa105223695e2f67d279f4b298/docs/static/fonts/KaTeX_Math-BoldItalic.woff -------------------------------------------------------------------------------- /docs/static/fonts/KaTeX_Math-BoldItalic.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-controllers-k8s/community/fea3f369a476b1fa105223695e2f67d279f4b298/docs/static/fonts/KaTeX_Math-BoldItalic.woff2 -------------------------------------------------------------------------------- /docs/static/fonts/KaTeX_Math-Italic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-controllers-k8s/community/fea3f369a476b1fa105223695e2f67d279f4b298/docs/static/fonts/KaTeX_Math-Italic.ttf -------------------------------------------------------------------------------- /docs/static/fonts/KaTeX_Math-Italic.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-controllers-k8s/community/fea3f369a476b1fa105223695e2f67d279f4b298/docs/static/fonts/KaTeX_Math-Italic.woff -------------------------------------------------------------------------------- /docs/static/fonts/KaTeX_Math-Italic.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-controllers-k8s/community/fea3f369a476b1fa105223695e2f67d279f4b298/docs/static/fonts/KaTeX_Math-Italic.woff2 -------------------------------------------------------------------------------- /docs/static/fonts/KaTeX_SansSerif-Bold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-controllers-k8s/community/fea3f369a476b1fa105223695e2f67d279f4b298/docs/static/fonts/KaTeX_SansSerif-Bold.ttf -------------------------------------------------------------------------------- /docs/static/fonts/KaTeX_SansSerif-Bold.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-controllers-k8s/community/fea3f369a476b1fa105223695e2f67d279f4b298/docs/static/fonts/KaTeX_SansSerif-Bold.woff -------------------------------------------------------------------------------- /docs/static/fonts/KaTeX_SansSerif-Bold.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-controllers-k8s/community/fea3f369a476b1fa105223695e2f67d279f4b298/docs/static/fonts/KaTeX_SansSerif-Bold.woff2 -------------------------------------------------------------------------------- /docs/static/fonts/KaTeX_SansSerif-Italic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-controllers-k8s/community/fea3f369a476b1fa105223695e2f67d279f4b298/docs/static/fonts/KaTeX_SansSerif-Italic.ttf -------------------------------------------------------------------------------- /docs/static/fonts/KaTeX_SansSerif-Italic.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-controllers-k8s/community/fea3f369a476b1fa105223695e2f67d279f4b298/docs/static/fonts/KaTeX_SansSerif-Italic.woff -------------------------------------------------------------------------------- /docs/static/fonts/KaTeX_SansSerif-Italic.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-controllers-k8s/community/fea3f369a476b1fa105223695e2f67d279f4b298/docs/static/fonts/KaTeX_SansSerif-Italic.woff2 -------------------------------------------------------------------------------- /docs/static/fonts/KaTeX_SansSerif-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-controllers-k8s/community/fea3f369a476b1fa105223695e2f67d279f4b298/docs/static/fonts/KaTeX_SansSerif-Regular.ttf -------------------------------------------------------------------------------- /docs/static/fonts/KaTeX_SansSerif-Regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-controllers-k8s/community/fea3f369a476b1fa105223695e2f67d279f4b298/docs/static/fonts/KaTeX_SansSerif-Regular.woff -------------------------------------------------------------------------------- /docs/static/fonts/KaTeX_SansSerif-Regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-controllers-k8s/community/fea3f369a476b1fa105223695e2f67d279f4b298/docs/static/fonts/KaTeX_SansSerif-Regular.woff2 -------------------------------------------------------------------------------- /docs/static/fonts/KaTeX_Script-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-controllers-k8s/community/fea3f369a476b1fa105223695e2f67d279f4b298/docs/static/fonts/KaTeX_Script-Regular.ttf -------------------------------------------------------------------------------- /docs/static/fonts/KaTeX_Script-Regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-controllers-k8s/community/fea3f369a476b1fa105223695e2f67d279f4b298/docs/static/fonts/KaTeX_Script-Regular.woff -------------------------------------------------------------------------------- /docs/static/fonts/KaTeX_Script-Regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-controllers-k8s/community/fea3f369a476b1fa105223695e2f67d279f4b298/docs/static/fonts/KaTeX_Script-Regular.woff2 -------------------------------------------------------------------------------- /docs/static/fonts/KaTeX_Size1-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-controllers-k8s/community/fea3f369a476b1fa105223695e2f67d279f4b298/docs/static/fonts/KaTeX_Size1-Regular.ttf -------------------------------------------------------------------------------- /docs/static/fonts/KaTeX_Size1-Regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-controllers-k8s/community/fea3f369a476b1fa105223695e2f67d279f4b298/docs/static/fonts/KaTeX_Size1-Regular.woff -------------------------------------------------------------------------------- /docs/static/fonts/KaTeX_Size1-Regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-controllers-k8s/community/fea3f369a476b1fa105223695e2f67d279f4b298/docs/static/fonts/KaTeX_Size1-Regular.woff2 -------------------------------------------------------------------------------- /docs/static/fonts/KaTeX_Size2-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-controllers-k8s/community/fea3f369a476b1fa105223695e2f67d279f4b298/docs/static/fonts/KaTeX_Size2-Regular.ttf -------------------------------------------------------------------------------- /docs/static/fonts/KaTeX_Size2-Regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-controllers-k8s/community/fea3f369a476b1fa105223695e2f67d279f4b298/docs/static/fonts/KaTeX_Size2-Regular.woff -------------------------------------------------------------------------------- /docs/static/fonts/KaTeX_Size2-Regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-controllers-k8s/community/fea3f369a476b1fa105223695e2f67d279f4b298/docs/static/fonts/KaTeX_Size2-Regular.woff2 -------------------------------------------------------------------------------- /docs/static/fonts/KaTeX_Size3-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-controllers-k8s/community/fea3f369a476b1fa105223695e2f67d279f4b298/docs/static/fonts/KaTeX_Size3-Regular.ttf -------------------------------------------------------------------------------- /docs/static/fonts/KaTeX_Size3-Regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-controllers-k8s/community/fea3f369a476b1fa105223695e2f67d279f4b298/docs/static/fonts/KaTeX_Size3-Regular.woff -------------------------------------------------------------------------------- /docs/static/fonts/KaTeX_Size3-Regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-controllers-k8s/community/fea3f369a476b1fa105223695e2f67d279f4b298/docs/static/fonts/KaTeX_Size3-Regular.woff2 -------------------------------------------------------------------------------- /docs/static/fonts/KaTeX_Size4-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-controllers-k8s/community/fea3f369a476b1fa105223695e2f67d279f4b298/docs/static/fonts/KaTeX_Size4-Regular.ttf -------------------------------------------------------------------------------- /docs/static/fonts/KaTeX_Size4-Regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-controllers-k8s/community/fea3f369a476b1fa105223695e2f67d279f4b298/docs/static/fonts/KaTeX_Size4-Regular.woff -------------------------------------------------------------------------------- /docs/static/fonts/KaTeX_Size4-Regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-controllers-k8s/community/fea3f369a476b1fa105223695e2f67d279f4b298/docs/static/fonts/KaTeX_Size4-Regular.woff2 -------------------------------------------------------------------------------- /docs/static/fonts/KaTeX_Typewriter-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-controllers-k8s/community/fea3f369a476b1fa105223695e2f67d279f4b298/docs/static/fonts/KaTeX_Typewriter-Regular.ttf -------------------------------------------------------------------------------- /docs/static/fonts/KaTeX_Typewriter-Regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-controllers-k8s/community/fea3f369a476b1fa105223695e2f67d279f4b298/docs/static/fonts/KaTeX_Typewriter-Regular.woff -------------------------------------------------------------------------------- /docs/static/fonts/KaTeX_Typewriter-Regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-controllers-k8s/community/fea3f369a476b1fa105223695e2f67d279f4b298/docs/static/fonts/KaTeX_Typewriter-Regular.woff2 -------------------------------------------------------------------------------- /docs/static/images/bg-dark-large.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-controllers-k8s/community/fea3f369a476b1fa105223695e2f67d279f4b298/docs/static/images/bg-dark-large.png -------------------------------------------------------------------------------- /docs/static/images/bg-large.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-controllers-k8s/community/fea3f369a476b1fa105223695e2f67d279f4b298/docs/static/images/bg-large.png -------------------------------------------------------------------------------- /docs/static/images/vendor/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-controllers-k8s/community/fea3f369a476b1fa105223695e2f67d279f4b298/docs/static/images/vendor/.gitkeep -------------------------------------------------------------------------------- /docs/static/js/vendor/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-controllers-k8s/community/fea3f369a476b1fa105223695e2f67d279f4b298/docs/static/js/vendor/.gitkeep -------------------------------------------------------------------------------- /docs/static/mstile-150x150.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-controllers-k8s/community/fea3f369a476b1fa105223695e2f67d279f4b298/docs/static/mstile-150x150.png -------------------------------------------------------------------------------- /docs/static/og.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-controllers-k8s/community/fea3f369a476b1fa105223695e2f67d279f4b298/docs/static/og.png -------------------------------------------------------------------------------- /docs/static/safari-pinned-tab.svg: -------------------------------------------------------------------------------- 1 | 2 | 4 | 7 | 8 | Created by potrace 1.14, written by Peter Selinger 2001-2017 9 | 10 | 12 | 33 | 38 | 39 | 40 | -------------------------------------------------------------------------------- /docs/static/site.webmanifest: -------------------------------------------------------------------------------- 1 | { 2 | "name": "AWS Controllers for K8s", 3 | "short_name": "ACK", 4 | "icons": [ 5 | { 6 | "src": "/android-chrome-192x192.png", 7 | "sizes": "192x192", 8 | "type": "image/png" 9 | }, 10 | { 11 | "src": "/android-chrome-512x512.png", 12 | "sizes": "512x512", 13 | "type": "image/png" 14 | } 15 | ], 16 | "theme_color": "#ffffff", 17 | "background_color": "#ffffff", 18 | "display": "standalone" 19 | } 20 | -------------------------------------------------------------------------------- /scripts/BASH_STYLE_CONVENTIONS.md: -------------------------------------------------------------------------------- 1 | Bash Style Conventions 2 | ====================== 3 | 4 | This guide is meant to outline some conventions when writing bash scripts for this folder. 5 | The goal is to encourage everyone to keep a minimum of consistency between scripting styles. 6 | 7 | **Please participate**. The guide is open for adding new good practices and thoughts. 8 | 9 | Conventions 10 | ----------- 11 | 12 | ### Script Arguments 13 | 14 | We prefer to have a fixed number of arguments and rely on environment variables for optional behaviour switches instead of using alternatives like `getops`. An example would be the helm-package-controller.sh script: 15 | 16 | ``` bash 17 | USAGE=" 18 | Usage: 19 | $(basename "$0") 20 | 21 | should be an AWS service API aliases that you wish to build -- e.g. 22 | 's3' 'sns' or 'sqs' 23 | 24 | Environment variables: 25 | CHART_INPUT_PATH: Specify a path for the Helm chart to use as input. 26 | Default: services/{SERVICE}/helm 27 | PACKAGE_OUTPUT_PATH: Specify a path for the Helm chart package to output to. 28 | Default: $BUILD_DIR/release/{SERVICE} 29 | " 30 | 31 | if [ $# -ne 1 ]; then 32 | echo "ERROR: $(basename "$0") accepts one parameter, the SERVICE" 1>&2 33 | echo "$USAGE" 34 | exit 1 35 | fi 36 | ``` 37 | 38 | ### How the `SCRIPTS|THIS_DIR` and `ROOT_DIR` variables are determined 39 | 40 | Use: 41 | 42 | ``` bash 43 | THIS_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )" 44 | ROOT_DIR="$THIS_DIR/.." 45 | ``` 46 | 47 | It is consistent with how it's done in other folders like `/test`. 48 | It works even if the scripts are sourced. Otherwise, with alternatives that make use of `dirname $0`, it will point to the bash binary when sourced instead, e.g.: 49 | 50 | ``` bash 51 | #!/usr/bin/env bash 52 | # test.sh 53 | 54 | THIS_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )" 55 | echo $THIS_DIR 56 | SCRIPTS_DIR=$(cd "$(dirname "$0")"; pwd) 57 | echo $SCRIPTS_DIR 58 | ``` 59 | 60 | Then, 61 | 62 | ``` 63 | [user@localhost ]$ ./test.sh 64 | /home/user/aws-controllers-k8s 65 | /home/user/aws-controllers-k8s 66 | [user@localhost aws-controllers-k8s]$ . ./test.sh 67 | /home/user/aws-controllers-k8s 68 | /bin 69 | ``` 70 | 71 | ### Default values for variables 72 | 73 | 74 | Use `VAR=${VAR:-default}`: 75 | 76 | ``` bash 77 | AWS_ACCOUNT_ID=${AWS_ACCOUNT_ID:-""} 78 | ``` 79 | 80 | Makes it easier for reading and Bash only will test for a unset or null parameter before substitute it. 81 | 82 | 83 | ### Error handling 84 | 85 | Use: 86 | 87 | ``` bash 88 | set -eo pipefail 89 | ``` 90 | 91 | Avoid explicitly set `-x`, it will make the default output of the scripts extremely verbose. `-u` should also be skipped, there are a number of scripts that assume the presence of variables (in a "safe" manner). The -u option will just print a whole bunch of error messages that really aren't errors. 92 | --------------------------------------------------------------------------------