diff --git a/config.dev.yaml b/config.dev.yaml index d07420967..a439d4492 100644 --- a/config.dev.yaml +++ b/config.dev.yaml @@ -28,7 +28,7 @@ params: blog_url: https://appscode.com/blog slack_url: https://slack.appscode.com github_url: https://github.com/appscode - twitter_url: https://twitter.com/AppsCodeHQ + twitter_url: https://x.com/AppsCodeHQ facebook_url: https://www.facebook.com/appscode youtube_url: https://www.youtube.com/c/AppsCodeInc contact_email: support@appscode.com diff --git a/config.yaml b/config.yaml index d4b9720d7..8e3b523a0 100644 --- a/config.yaml +++ b/config.yaml @@ -28,7 +28,7 @@ params: blog_url: https://appscode.com/blog slack_url: https://slack.appscode.com github_url: https://github.com/appscode - twitter_url: https://twitter.com/AppsCodeHQ + twitter_url: https://x.com/AppsCodeHQ facebook_url: https://www.facebook.com/appscode youtube_url: https://www.youtube.com/c/AppsCodeInc contact_email: support@appscode.com diff --git a/content/docs/v2024.3.18/CHANGELOG-v2021.04.20-beta.2.md b/content/docs/v2024.3.18/CHANGELOG-v2021.04.20-beta.2.md new file mode 100644 index 000000000..15f3c4666 --- /dev/null +++ b/content/docs/v2024.3.18/CHANGELOG-v2021.04.20-beta.2.md @@ -0,0 +1,170 @@ +--- +title: Changelog | Voyager +description: Changelog +menu: + docs_v2024.3.18: + identifier: changelog-voyager-v2021.04.20-beta.2 + name: Changelog-v2021.04.20-beta.2 + parent: welcome + weight: 20210420 +product_name: voyager +menu_name: docs_v2024.3.18 +section_menu_id: welcome +url: /docs/v2024.3.18/welcome/changelog-v2021.04.20-beta.2/ +aliases: +- /docs/v2024.3.18/CHANGELOG-v2021.04.20-beta.2/ +info: + cli: v0.0.15 + installer: v2024.3.18 + version: v2024.3.18 +--- + +# Voyager v2021.04.20-beta.2 (2021-04-25) + + +## [voyagermesh/installer](https://github.com/voyagermesh/installer) + +### [v2021.04.20-beta.2](https://github.com/voyagermesh/installer/releases/tag/v2021.04.20-beta.2) + +- [37b8597](https://github.com/voyagermesh/installer/commit/37b8597) Prepare for release v2021.04.20-beta.2 (#71) +- [3a33e2e](https://github.com/voyagermesh/installer/commit/3a33e2e) Update Makefile +- [9c19ed2](https://github.com/voyagermesh/installer/commit/9c19ed2) Add voyager-crds chart (#66) +- [252f14a](https://github.com/voyagermesh/installer/commit/252f14a) Add cleaner skip option for YAML installation process (#65) +- [d737d14](https://github.com/voyagermesh/installer/commit/d737d14) Remove protobuf code generator (#64) +- [6fdc1ca](https://github.com/voyagermesh/installer/commit/6fdc1ca) Update repository config (#63) +- [81c5627](https://github.com/voyagermesh/installer/commit/81c5627) Update Kubernetes v1.18.9 dependencies (#62) +- [acf9453](https://github.com/voyagermesh/installer/commit/acf9453) Update repository config (#61) +- [9de2b98](https://github.com/voyagermesh/installer/commit/9de2b98) Update Kubernetes v1.18.9 dependencies (#60) +- [d2f88f6](https://github.com/voyagermesh/installer/commit/d2f88f6) Update repository config (#59) +- [2f97c0d](https://github.com/voyagermesh/installer/commit/2f97c0d) Update repository config (#58) +- [a17dcd6](https://github.com/voyagermesh/installer/commit/a17dcd6) Update Kubernetes v1.18.9 dependencies (#57) +- [1b34287](https://github.com/voyagermesh/installer/commit/1b34287) Update Kubernetes v1.18.9 dependencies (#56) +- [ce2fa80](https://github.com/voyagermesh/installer/commit/ce2fa80) Update Kubernetes v1.18.9 dependencies (#55) +- [3b9833f](https://github.com/voyagermesh/installer/commit/3b9833f) Update Kubernetes v1.18.9 dependencies (#54) +- [05c1ae4](https://github.com/voyagermesh/installer/commit/05c1ae4) Update repository config (#53) +- [9d5c567](https://github.com/voyagermesh/installer/commit/9d5c567) Update repository config (#52) +- [68974d1](https://github.com/voyagermesh/installer/commit/68974d1) Update Kubernetes v1.18.9 dependencies (#51) +- [1834e92](https://github.com/voyagermesh/installer/commit/1834e92) Update repository config (#50) +- [88837e9](https://github.com/voyagermesh/installer/commit/88837e9) Update Kubernetes v1.18.9 dependencies (#49) +- [fd8dd22](https://github.com/voyagermesh/installer/commit/fd8dd22) Update Kubernetes v1.18.9 dependencies (#48) +- [e5acaa0](https://github.com/voyagermesh/installer/commit/e5acaa0) Update Kubernetes v1.18.9 dependencies (#47) +- [b8f929a](https://github.com/voyagermesh/installer/commit/b8f929a) Update Kubernetes v1.18.9 dependencies (#46) +- [0d18bec](https://github.com/voyagermesh/installer/commit/0d18bec) Update Kubernetes v1.18.9 dependencies (#44) +- [eba9d11](https://github.com/voyagermesh/installer/commit/eba9d11) Update Kubernetes v1.18.9 dependencies (#43) +- [3e27095](https://github.com/voyagermesh/installer/commit/3e27095) Update repository config (#42) +- [877c601](https://github.com/voyagermesh/installer/commit/877c601) Update Kubernetes v1.18.9 dependencies (#41) +- [5cd3131](https://github.com/voyagermesh/installer/commit/5cd3131) Update repository config (#40) +- [14e8b27](https://github.com/voyagermesh/installer/commit/14e8b27) Update Kubernetes v1.18.9 dependencies (#39) +- [f219188](https://github.com/voyagermesh/installer/commit/f219188) Update Kubernetes v1.18.9 dependencies (#38) +- [58f432a](https://github.com/voyagermesh/installer/commit/58f432a) Update repository config (#37) +- [41dc0fd](https://github.com/voyagermesh/installer/commit/41dc0fd) Update repository config (#36) +- [a54c114](https://github.com/voyagermesh/installer/commit/a54c114) Update Kubernetes v1.18.9 dependencies (#35) +- [d95070d](https://github.com/voyagermesh/installer/commit/d95070d) Update Kubernetes v1.18.3 dependencies (#34) +- [c5ca00c](https://github.com/voyagermesh/installer/commit/c5ca00c) Update Kubernetes v1.18.3 dependencies (#33) +- [30dfe30](https://github.com/voyagermesh/installer/commit/30dfe30) Update Kubernetes v1.18.3 dependencies (#32) +- [e89a026](https://github.com/voyagermesh/installer/commit/e89a026) Update Kubernetes v1.18.3 dependencies (#31) +- [b91a6e9](https://github.com/voyagermesh/installer/commit/b91a6e9) Update Kubernetes v1.18.3 dependencies (#30) +- [236a3b1](https://github.com/voyagermesh/installer/commit/236a3b1) Update Kubernetes v1.18.3 dependencies (#29) +- [a2d4bff](https://github.com/voyagermesh/installer/commit/a2d4bff) Update Kubernetes v1.18.3 dependencies (#28) +- [bc8cac9](https://github.com/voyagermesh/installer/commit/bc8cac9) Update Kubernetes v1.18.3 dependencies (#27) +- [8c93371](https://github.com/voyagermesh/installer/commit/8c93371) Update Kubernetes v1.18.3 dependencies (#26) +- [51a239d](https://github.com/voyagermesh/installer/commit/51a239d) Update Kubernetes v1.18.3 dependencies (#25) +- [475bd11](https://github.com/voyagermesh/installer/commit/475bd11) Update Kubernetes v1.18.3 dependencies (#24) +- [4c472a4](https://github.com/voyagermesh/installer/commit/4c472a4) Update Kubernetes v1.18.3 dependencies (#23) +- [40c34b1](https://github.com/voyagermesh/installer/commit/40c34b1) Update to Kubernetes v1.18.3 (#22) +- [2b52571](https://github.com/voyagermesh/installer/commit/2b52571) Update to Kubernetes v1.18.3 (#21) +- [2d5ff81](https://github.com/voyagermesh/installer/commit/2d5ff81) Update to Kubernetes v1.18.3 (#20) +- [1c8cd5e](https://github.com/voyagermesh/installer/commit/1c8cd5e) Make chart registry configurable (#19) +- [c75e2fd](https://github.com/voyagermesh/installer/commit/c75e2fd) Publish to testing dir for alpha/beta releases +- [0fbed72](https://github.com/voyagermesh/installer/commit/0fbed72) Update to Kubernetes v1.18.3 (#18) +- [04abb9d](https://github.com/voyagermesh/installer/commit/04abb9d) Update ci.yml +- [52f62df](https://github.com/voyagermesh/installer/commit/52f62df) Tag chart and app version as string for yq +- [3aed33c](https://github.com/voyagermesh/installer/commit/3aed33c) Update update-release-tracker.sh +- [fe16afc](https://github.com/voyagermesh/installer/commit/fe16afc) Update update-release-tracker.sh +- [9740a56](https://github.com/voyagermesh/installer/commit/9740a56) Update release.yml +- [290be5b](https://github.com/voyagermesh/installer/commit/290be5b) Add script to update release tracker on pr merge (#17) +- [0256621](https://github.com/voyagermesh/installer/commit/0256621) Update kubernetes versions in CI workflow +- [5b4e797](https://github.com/voyagermesh/installer/commit/5b4e797) Add commands to update chart (#16) +- [59872d2](https://github.com/voyagermesh/installer/commit/59872d2) Fix chart release process (#15) +- [cf8f550](https://github.com/voyagermesh/installer/commit/cf8f550) Fix release workflow script +- [70ff5a6](https://github.com/voyagermesh/installer/commit/70ff5a6) Update .kodiak.toml +- [4c429a3](https://github.com/voyagermesh/installer/commit/4c429a3) Update to Kubernetes v1.18.3 (#10) +- [25d6aac](https://github.com/voyagermesh/installer/commit/25d6aac) Update to Kubernetes v1.18.3 +- [aeebca4](https://github.com/voyagermesh/installer/commit/aeebca4) Create .kodiak.toml + + + +## [voyagermesh/voyager](https://github.com/voyagermesh/voyager) + +### [v13.0.0-beta.2](https://github.com/voyagermesh/voyager/releases/tag/v13.0.0-beta.2) + +- [31e87b8e](https://github.com/voyagermesh/voyager/commit/31e87b8e) Disable building arm64 images +- [404a6bcd](https://github.com/voyagermesh/voyager/commit/404a6bcd) Update Dockerfile +- [4ae3aa3f](https://github.com/voyagermesh/voyager/commit/4ae3aa3f) Fix build +- [ae95cdb8](https://github.com/voyagermesh/voyager/commit/ae95cdb8) Build voyager binary before building haproxy image +- [8531ae0e](https://github.com/voyagermesh/voyager/commit/8531ae0e) Fix socklog download url +- [c2f9a803](https://github.com/voyagermesh/voyager/commit/c2f9a803) Publish images to GH registry +- [c2b1a5ce](https://github.com/voyagermesh/voyager/commit/c2b1a5ce) Add license verifier (#1583) +- [94562494](https://github.com/voyagermesh/voyager/commit/94562494) Update repository config (#1584) +- [ea232e45](https://github.com/voyagermesh/voyager/commit/ea232e45) Update license header (#1582) +- [0bdded99](https://github.com/voyagermesh/voyager/commit/0bdded99) Avoid issuing cert two times at creation (#1535) +- [b356066d](https://github.com/voyagermesh/voyager/commit/b356066d) fix CheckCertificates goroutine to run an infinite loop again (#1531) +- [7bd08749](https://github.com/voyagermesh/voyager/commit/7bd08749) Avoid concurrent haproxy starts or reloads (#1547) +- [5b423374](https://github.com/voyagermesh/voyager/commit/5b423374) Update kind in CI +- [6e9cced0](https://github.com/voyagermesh/voyager/commit/6e9cced0) Update README.md +- [c7f806e6](https://github.com/voyagermesh/voyager/commit/c7f806e6) Update repository config (#1579) +- [e13dc9e7](https://github.com/voyagermesh/voyager/commit/e13dc9e7) Update repository config (#1577) +- [a4705e66](https://github.com/voyagermesh/voyager/commit/a4705e66) Update Kubernetes v1.18.9 dependencies (#1576) +- [e937812b](https://github.com/voyagermesh/voyager/commit/e937812b) Update repository config (#1574) +- [8a9f92cc](https://github.com/voyagermesh/voyager/commit/8a9f92cc) Update repository config (#1573) +- [08872d74](https://github.com/voyagermesh/voyager/commit/08872d74) Update Kubernetes v1.18.9 dependencies (#1572) +- [01ad6049](https://github.com/voyagermesh/voyager/commit/01ad6049) Update Kubernetes v1.18.9 dependencies (#1571) +- [89e39d57](https://github.com/voyagermesh/voyager/commit/89e39d57) Update repository config (#1570) +- [777e2c53](https://github.com/voyagermesh/voyager/commit/777e2c53) Update repository config (#1569) +- [6fcc2041](https://github.com/voyagermesh/voyager/commit/6fcc2041) Update Kubernetes v1.18.9 dependencies (#1568) +- [120682e7](https://github.com/voyagermesh/voyager/commit/120682e7) Update Kubernetes v1.18.9 dependencies (#1567) +- [23193a8e](https://github.com/voyagermesh/voyager/commit/23193a8e) Update Kubernetes v1.18.9 dependencies (#1566) +- [23553514](https://github.com/voyagermesh/voyager/commit/23553514) Update Kubernetes v1.18.9 dependencies (#1565) +- [924fced5](https://github.com/voyagermesh/voyager/commit/924fced5) Update Kubernetes v1.18.9 dependencies (#1564) +- [8e0dc012](https://github.com/voyagermesh/voyager/commit/8e0dc012) Update Kubernetes v1.18.9 dependencies (#1563) +- [e54d2622](https://github.com/voyagermesh/voyager/commit/e54d2622) Update repository config (#1561) +- [ba9e4aa7](https://github.com/voyagermesh/voyager/commit/ba9e4aa7) Update Kubernetes v1.18.9 dependencies (#1559) +- [285dac84](https://github.com/voyagermesh/voyager/commit/285dac84) Update Kubernetes v1.18.9 dependencies (#1558) +- [f5e66408](https://github.com/voyagermesh/voyager/commit/f5e66408) Update Kubernetes v1.18.9 dependencies (#1557) +- [a51e4aa4](https://github.com/voyagermesh/voyager/commit/a51e4aa4) Update Kubernetes v1.18.9 dependencies (#1555) +- [1afdf274](https://github.com/voyagermesh/voyager/commit/1afdf274) Update Kubernetes v1.18.9 dependencies (#1554) +- [93e691ea](https://github.com/voyagermesh/voyager/commit/93e691ea) Update Kubernetes v1.18.9 dependencies (#1552) +- [3d1c72d4](https://github.com/voyagermesh/voyager/commit/3d1c72d4) Update Kubernetes v1.18.9 dependencies (#1549) +- [d48b88ed](https://github.com/voyagermesh/voyager/commit/d48b88ed) Update repository config (#1551) +- [603868db](https://github.com/voyagermesh/voyager/commit/603868db) Update repository config (#1550) +- [869936e4](https://github.com/voyagermesh/voyager/commit/869936e4) Update repository config (#1548) +- [ac8399a7](https://github.com/voyagermesh/voyager/commit/ac8399a7) Update Kubernetes v1.18.9 dependencies (#1546) +- [3889306c](https://github.com/voyagermesh/voyager/commit/3889306c) Update Kubernetes v1.18.9 dependencies (#1544) +- [2256661e](https://github.com/voyagermesh/voyager/commit/2256661e) Update repository config (#1543) +- [ed48d8f0](https://github.com/voyagermesh/voyager/commit/ed48d8f0) Update repository config (#1542) +- [c1d898d3](https://github.com/voyagermesh/voyager/commit/c1d898d3) Update Kubernetes v1.18.9 dependencies (#1541) +- [7764aac4](https://github.com/voyagermesh/voyager/commit/7764aac4) Update Kubernetes v1.18.3 dependencies (#1540) +- [f9f1732e](https://github.com/voyagermesh/voyager/commit/f9f1732e) Update Kubernetes v1.18.3 dependencies (#1539) +- [b3f18ffd](https://github.com/voyagermesh/voyager/commit/b3f18ffd) Update Kubernetes v1.18.3 dependencies (#1536) +- [c92a0f15](https://github.com/voyagermesh/voyager/commit/c92a0f15) Update Kubernetes v1.18.3 dependencies (#1534) +- [aa701496](https://github.com/voyagermesh/voyager/commit/aa701496) Update Kubernetes v1.18.3 dependencies (#1532) +- [cacef44c](https://github.com/voyagermesh/voyager/commit/cacef44c) Update Kubernetes v1.18.3 dependencies (#1529) +- [f9248332](https://github.com/voyagermesh/voyager/commit/f9248332) Update Kubernetes v1.18.3 dependencies (#1528) +- [fd3aa94c](https://github.com/voyagermesh/voyager/commit/fd3aa94c) Update Kubernetes v1.18.3 dependencies (#1527) +- [85915ab8](https://github.com/voyagermesh/voyager/commit/85915ab8) Update Kubernetes v1.18.3 dependencies (#1524) +- [dd3cc508](https://github.com/voyagermesh/voyager/commit/dd3cc508) Update to Kubernetes v1.18.3 (#1521) +- [cbd7d3e2](https://github.com/voyagermesh/voyager/commit/cbd7d3e2) Update to Kubernetes v1.18.3 (#1520) +- [d00a4c72](https://github.com/voyagermesh/voyager/commit/d00a4c72) Update to Kubernetes v1.18.3 (#1519) +- [c6bbe8cc](https://github.com/voyagermesh/voyager/commit/c6bbe8cc) Update to Kubernetes v1.18.3 (#1518) +- [dcc94c7e](https://github.com/voyagermesh/voyager/commit/dcc94c7e) Update ci.yml +- [d9c38862](https://github.com/voyagermesh/voyager/commit/d9c38862) Update update-release-tracker.sh +- [5c74ad2b](https://github.com/voyagermesh/voyager/commit/5c74ad2b) Update update-release-tracker.sh +- [21b03bbb](https://github.com/voyagermesh/voyager/commit/21b03bbb) Add script to update release tracker on pr merge (#1516) +- [57503de5](https://github.com/voyagermesh/voyager/commit/57503de5) Update .kodiak.toml +- [dbdb1e5c](https://github.com/voyagermesh/voyager/commit/dbdb1e5c) Update to Kubernetes v1.18.3 (#1514) +- [1abc059e](https://github.com/voyagermesh/voyager/commit/1abc059e) Update to Kubernetes v1.18.3 +- [7a61045e](https://github.com/voyagermesh/voyager/commit/7a61045e) Create .kodiak.toml + + + + diff --git a/content/docs/v2024.3.18/CHANGELOG-v2021.04.24-rc.0.md b/content/docs/v2024.3.18/CHANGELOG-v2021.04.24-rc.0.md new file mode 100644 index 000000000..32a79b55e --- /dev/null +++ b/content/docs/v2024.3.18/CHANGELOG-v2021.04.24-rc.0.md @@ -0,0 +1,184 @@ +--- +title: Changelog | Voyager +description: Changelog +menu: + docs_v2024.3.18: + identifier: changelog-voyager-v2021.04.24-rc.0 + name: Changelog-v2021.04.24-rc.0 + parent: welcome + weight: 20210424 +product_name: voyager +menu_name: docs_v2024.3.18 +section_menu_id: welcome +url: /docs/v2024.3.18/welcome/changelog-v2021.04.24-rc.0/ +aliases: +- /docs/v2024.3.18/CHANGELOG-v2021.04.24-rc.0/ +info: + cli: v0.0.15 + installer: v2024.3.18 + version: v2024.3.18 +--- + +# Voyager v2021.04.24-rc.0 (2021-04-25) + + +## [voyagermesh/installer](https://github.com/voyagermesh/installer) + +### [v2021.04.24-rc.0](https://github.com/voyagermesh/installer/releases/tag/v2021.04.24-rc.0) + +- [7996020](https://github.com/voyagermesh/installer/commit/7996020) Prepare for release v2021.04.24-rc.0 (#72) +- [37b8597](https://github.com/voyagermesh/installer/commit/37b8597) Prepare for release v2021.04.20-beta.2 (#71) +- [3a33e2e](https://github.com/voyagermesh/installer/commit/3a33e2e) Update Makefile +- [9c19ed2](https://github.com/voyagermesh/installer/commit/9c19ed2) Add voyager-crds chart (#66) +- [252f14a](https://github.com/voyagermesh/installer/commit/252f14a) Add cleaner skip option for YAML installation process (#65) +- [d737d14](https://github.com/voyagermesh/installer/commit/d737d14) Remove protobuf code generator (#64) +- [6fdc1ca](https://github.com/voyagermesh/installer/commit/6fdc1ca) Update repository config (#63) +- [81c5627](https://github.com/voyagermesh/installer/commit/81c5627) Update Kubernetes v1.18.9 dependencies (#62) +- [acf9453](https://github.com/voyagermesh/installer/commit/acf9453) Update repository config (#61) +- [9de2b98](https://github.com/voyagermesh/installer/commit/9de2b98) Update Kubernetes v1.18.9 dependencies (#60) +- [d2f88f6](https://github.com/voyagermesh/installer/commit/d2f88f6) Update repository config (#59) +- [2f97c0d](https://github.com/voyagermesh/installer/commit/2f97c0d) Update repository config (#58) +- [a17dcd6](https://github.com/voyagermesh/installer/commit/a17dcd6) Update Kubernetes v1.18.9 dependencies (#57) +- [1b34287](https://github.com/voyagermesh/installer/commit/1b34287) Update Kubernetes v1.18.9 dependencies (#56) +- [ce2fa80](https://github.com/voyagermesh/installer/commit/ce2fa80) Update Kubernetes v1.18.9 dependencies (#55) +- [3b9833f](https://github.com/voyagermesh/installer/commit/3b9833f) Update Kubernetes v1.18.9 dependencies (#54) +- [05c1ae4](https://github.com/voyagermesh/installer/commit/05c1ae4) Update repository config (#53) +- [9d5c567](https://github.com/voyagermesh/installer/commit/9d5c567) Update repository config (#52) +- [68974d1](https://github.com/voyagermesh/installer/commit/68974d1) Update Kubernetes v1.18.9 dependencies (#51) +- [1834e92](https://github.com/voyagermesh/installer/commit/1834e92) Update repository config (#50) +- [88837e9](https://github.com/voyagermesh/installer/commit/88837e9) Update Kubernetes v1.18.9 dependencies (#49) +- [fd8dd22](https://github.com/voyagermesh/installer/commit/fd8dd22) Update Kubernetes v1.18.9 dependencies (#48) +- [e5acaa0](https://github.com/voyagermesh/installer/commit/e5acaa0) Update Kubernetes v1.18.9 dependencies (#47) +- [b8f929a](https://github.com/voyagermesh/installer/commit/b8f929a) Update Kubernetes v1.18.9 dependencies (#46) +- [0d18bec](https://github.com/voyagermesh/installer/commit/0d18bec) Update Kubernetes v1.18.9 dependencies (#44) +- [eba9d11](https://github.com/voyagermesh/installer/commit/eba9d11) Update Kubernetes v1.18.9 dependencies (#43) +- [3e27095](https://github.com/voyagermesh/installer/commit/3e27095) Update repository config (#42) +- [877c601](https://github.com/voyagermesh/installer/commit/877c601) Update Kubernetes v1.18.9 dependencies (#41) +- [5cd3131](https://github.com/voyagermesh/installer/commit/5cd3131) Update repository config (#40) +- [14e8b27](https://github.com/voyagermesh/installer/commit/14e8b27) Update Kubernetes v1.18.9 dependencies (#39) +- [f219188](https://github.com/voyagermesh/installer/commit/f219188) Update Kubernetes v1.18.9 dependencies (#38) +- [58f432a](https://github.com/voyagermesh/installer/commit/58f432a) Update repository config (#37) +- [41dc0fd](https://github.com/voyagermesh/installer/commit/41dc0fd) Update repository config (#36) +- [a54c114](https://github.com/voyagermesh/installer/commit/a54c114) Update Kubernetes v1.18.9 dependencies (#35) +- [d95070d](https://github.com/voyagermesh/installer/commit/d95070d) Update Kubernetes v1.18.3 dependencies (#34) +- [c5ca00c](https://github.com/voyagermesh/installer/commit/c5ca00c) Update Kubernetes v1.18.3 dependencies (#33) +- [30dfe30](https://github.com/voyagermesh/installer/commit/30dfe30) Update Kubernetes v1.18.3 dependencies (#32) +- [e89a026](https://github.com/voyagermesh/installer/commit/e89a026) Update Kubernetes v1.18.3 dependencies (#31) +- [b91a6e9](https://github.com/voyagermesh/installer/commit/b91a6e9) Update Kubernetes v1.18.3 dependencies (#30) +- [236a3b1](https://github.com/voyagermesh/installer/commit/236a3b1) Update Kubernetes v1.18.3 dependencies (#29) +- [a2d4bff](https://github.com/voyagermesh/installer/commit/a2d4bff) Update Kubernetes v1.18.3 dependencies (#28) +- [bc8cac9](https://github.com/voyagermesh/installer/commit/bc8cac9) Update Kubernetes v1.18.3 dependencies (#27) +- [8c93371](https://github.com/voyagermesh/installer/commit/8c93371) Update Kubernetes v1.18.3 dependencies (#26) +- [51a239d](https://github.com/voyagermesh/installer/commit/51a239d) Update Kubernetes v1.18.3 dependencies (#25) +- [475bd11](https://github.com/voyagermesh/installer/commit/475bd11) Update Kubernetes v1.18.3 dependencies (#24) +- [4c472a4](https://github.com/voyagermesh/installer/commit/4c472a4) Update Kubernetes v1.18.3 dependencies (#23) +- [40c34b1](https://github.com/voyagermesh/installer/commit/40c34b1) Update to Kubernetes v1.18.3 (#22) +- [2b52571](https://github.com/voyagermesh/installer/commit/2b52571) Update to Kubernetes v1.18.3 (#21) +- [2d5ff81](https://github.com/voyagermesh/installer/commit/2d5ff81) Update to Kubernetes v1.18.3 (#20) +- [1c8cd5e](https://github.com/voyagermesh/installer/commit/1c8cd5e) Make chart registry configurable (#19) +- [c75e2fd](https://github.com/voyagermesh/installer/commit/c75e2fd) Publish to testing dir for alpha/beta releases +- [0fbed72](https://github.com/voyagermesh/installer/commit/0fbed72) Update to Kubernetes v1.18.3 (#18) +- [04abb9d](https://github.com/voyagermesh/installer/commit/04abb9d) Update ci.yml +- [52f62df](https://github.com/voyagermesh/installer/commit/52f62df) Tag chart and app version as string for yq +- [3aed33c](https://github.com/voyagermesh/installer/commit/3aed33c) Update update-release-tracker.sh +- [fe16afc](https://github.com/voyagermesh/installer/commit/fe16afc) Update update-release-tracker.sh +- [9740a56](https://github.com/voyagermesh/installer/commit/9740a56) Update release.yml +- [290be5b](https://github.com/voyagermesh/installer/commit/290be5b) Add script to update release tracker on pr merge (#17) +- [0256621](https://github.com/voyagermesh/installer/commit/0256621) Update kubernetes versions in CI workflow +- [5b4e797](https://github.com/voyagermesh/installer/commit/5b4e797) Add commands to update chart (#16) +- [59872d2](https://github.com/voyagermesh/installer/commit/59872d2) Fix chart release process (#15) +- [cf8f550](https://github.com/voyagermesh/installer/commit/cf8f550) Fix release workflow script +- [70ff5a6](https://github.com/voyagermesh/installer/commit/70ff5a6) Update .kodiak.toml +- [4c429a3](https://github.com/voyagermesh/installer/commit/4c429a3) Update to Kubernetes v1.18.3 (#10) +- [25d6aac](https://github.com/voyagermesh/installer/commit/25d6aac) Update to Kubernetes v1.18.3 +- [aeebca4](https://github.com/voyagermesh/installer/commit/aeebca4) Create .kodiak.toml +- [7aa3256](https://github.com/voyagermesh/installer/commit/7aa3256) Prepare release v13.0.0-beta.1 (#9) +- [c46cf95](https://github.com/voyagermesh/installer/commit/c46cf95) Add permissions for networking.k8s.io (#8) +- [40e7bef](https://github.com/voyagermesh/installer/commit/40e7bef) Generate both v1beta1 and v1 CRD YAML (#7) +- [080d925](https://github.com/voyagermesh/installer/commit/080d925) Prepare release v13.0.0-beta.0 +- [3e5eb03](https://github.com/voyagermesh/installer/commit/3e5eb03) Update to Kubernetes v1.18.3 (#6) + + + +## [voyagermesh/voyager](https://github.com/voyagermesh/voyager) + +### [v13.0.0-rc.0](https://github.com/voyagermesh/voyager/releases/tag/v13.0.0-rc.0) + +- [e43f1b78](https://github.com/voyagermesh/voyager/commit/e43f1b78) Update readme +- [31e87b8e](https://github.com/voyagermesh/voyager/commit/31e87b8e) Disable building arm64 images +- [404a6bcd](https://github.com/voyagermesh/voyager/commit/404a6bcd) Update Dockerfile +- [4ae3aa3f](https://github.com/voyagermesh/voyager/commit/4ae3aa3f) Fix build +- [ae95cdb8](https://github.com/voyagermesh/voyager/commit/ae95cdb8) Build voyager binary before building haproxy image +- [8531ae0e](https://github.com/voyagermesh/voyager/commit/8531ae0e) Fix socklog download url +- [c2f9a803](https://github.com/voyagermesh/voyager/commit/c2f9a803) Publish images to GH registry +- [c2b1a5ce](https://github.com/voyagermesh/voyager/commit/c2b1a5ce) Add license verifier (#1583) +- [94562494](https://github.com/voyagermesh/voyager/commit/94562494) Update repository config (#1584) +- [ea232e45](https://github.com/voyagermesh/voyager/commit/ea232e45) Update license header (#1582) +- [0bdded99](https://github.com/voyagermesh/voyager/commit/0bdded99) Avoid issuing cert two times at creation (#1535) +- [b356066d](https://github.com/voyagermesh/voyager/commit/b356066d) fix CheckCertificates goroutine to run an infinite loop again (#1531) +- [7bd08749](https://github.com/voyagermesh/voyager/commit/7bd08749) Avoid concurrent haproxy starts or reloads (#1547) +- [5b423374](https://github.com/voyagermesh/voyager/commit/5b423374) Update kind in CI +- [6e9cced0](https://github.com/voyagermesh/voyager/commit/6e9cced0) Update README.md +- [c7f806e6](https://github.com/voyagermesh/voyager/commit/c7f806e6) Update repository config (#1579) +- [e13dc9e7](https://github.com/voyagermesh/voyager/commit/e13dc9e7) Update repository config (#1577) +- [a4705e66](https://github.com/voyagermesh/voyager/commit/a4705e66) Update Kubernetes v1.18.9 dependencies (#1576) +- [e937812b](https://github.com/voyagermesh/voyager/commit/e937812b) Update repository config (#1574) +- [8a9f92cc](https://github.com/voyagermesh/voyager/commit/8a9f92cc) Update repository config (#1573) +- [08872d74](https://github.com/voyagermesh/voyager/commit/08872d74) Update Kubernetes v1.18.9 dependencies (#1572) +- [01ad6049](https://github.com/voyagermesh/voyager/commit/01ad6049) Update Kubernetes v1.18.9 dependencies (#1571) +- [89e39d57](https://github.com/voyagermesh/voyager/commit/89e39d57) Update repository config (#1570) +- [777e2c53](https://github.com/voyagermesh/voyager/commit/777e2c53) Update repository config (#1569) +- [6fcc2041](https://github.com/voyagermesh/voyager/commit/6fcc2041) Update Kubernetes v1.18.9 dependencies (#1568) +- [120682e7](https://github.com/voyagermesh/voyager/commit/120682e7) Update Kubernetes v1.18.9 dependencies (#1567) +- [23193a8e](https://github.com/voyagermesh/voyager/commit/23193a8e) Update Kubernetes v1.18.9 dependencies (#1566) +- [23553514](https://github.com/voyagermesh/voyager/commit/23553514) Update Kubernetes v1.18.9 dependencies (#1565) +- [924fced5](https://github.com/voyagermesh/voyager/commit/924fced5) Update Kubernetes v1.18.9 dependencies (#1564) +- [8e0dc012](https://github.com/voyagermesh/voyager/commit/8e0dc012) Update Kubernetes v1.18.9 dependencies (#1563) +- [e54d2622](https://github.com/voyagermesh/voyager/commit/e54d2622) Update repository config (#1561) +- [ba9e4aa7](https://github.com/voyagermesh/voyager/commit/ba9e4aa7) Update Kubernetes v1.18.9 dependencies (#1559) +- [285dac84](https://github.com/voyagermesh/voyager/commit/285dac84) Update Kubernetes v1.18.9 dependencies (#1558) +- [f5e66408](https://github.com/voyagermesh/voyager/commit/f5e66408) Update Kubernetes v1.18.9 dependencies (#1557) +- [a51e4aa4](https://github.com/voyagermesh/voyager/commit/a51e4aa4) Update Kubernetes v1.18.9 dependencies (#1555) +- [1afdf274](https://github.com/voyagermesh/voyager/commit/1afdf274) Update Kubernetes v1.18.9 dependencies (#1554) +- [93e691ea](https://github.com/voyagermesh/voyager/commit/93e691ea) Update Kubernetes v1.18.9 dependencies (#1552) +- [3d1c72d4](https://github.com/voyagermesh/voyager/commit/3d1c72d4) Update Kubernetes v1.18.9 dependencies (#1549) +- [d48b88ed](https://github.com/voyagermesh/voyager/commit/d48b88ed) Update repository config (#1551) +- [603868db](https://github.com/voyagermesh/voyager/commit/603868db) Update repository config (#1550) +- [869936e4](https://github.com/voyagermesh/voyager/commit/869936e4) Update repository config (#1548) +- [ac8399a7](https://github.com/voyagermesh/voyager/commit/ac8399a7) Update Kubernetes v1.18.9 dependencies (#1546) +- [3889306c](https://github.com/voyagermesh/voyager/commit/3889306c) Update Kubernetes v1.18.9 dependencies (#1544) +- [2256661e](https://github.com/voyagermesh/voyager/commit/2256661e) Update repository config (#1543) +- [ed48d8f0](https://github.com/voyagermesh/voyager/commit/ed48d8f0) Update repository config (#1542) +- [c1d898d3](https://github.com/voyagermesh/voyager/commit/c1d898d3) Update Kubernetes v1.18.9 dependencies (#1541) +- [7764aac4](https://github.com/voyagermesh/voyager/commit/7764aac4) Update Kubernetes v1.18.3 dependencies (#1540) +- [f9f1732e](https://github.com/voyagermesh/voyager/commit/f9f1732e) Update Kubernetes v1.18.3 dependencies (#1539) +- [b3f18ffd](https://github.com/voyagermesh/voyager/commit/b3f18ffd) Update Kubernetes v1.18.3 dependencies (#1536) +- [c92a0f15](https://github.com/voyagermesh/voyager/commit/c92a0f15) Update Kubernetes v1.18.3 dependencies (#1534) +- [aa701496](https://github.com/voyagermesh/voyager/commit/aa701496) Update Kubernetes v1.18.3 dependencies (#1532) +- [cacef44c](https://github.com/voyagermesh/voyager/commit/cacef44c) Update Kubernetes v1.18.3 dependencies (#1529) +- [f9248332](https://github.com/voyagermesh/voyager/commit/f9248332) Update Kubernetes v1.18.3 dependencies (#1528) +- [fd3aa94c](https://github.com/voyagermesh/voyager/commit/fd3aa94c) Update Kubernetes v1.18.3 dependencies (#1527) +- [85915ab8](https://github.com/voyagermesh/voyager/commit/85915ab8) Update Kubernetes v1.18.3 dependencies (#1524) +- [dd3cc508](https://github.com/voyagermesh/voyager/commit/dd3cc508) Update to Kubernetes v1.18.3 (#1521) +- [cbd7d3e2](https://github.com/voyagermesh/voyager/commit/cbd7d3e2) Update to Kubernetes v1.18.3 (#1520) +- [d00a4c72](https://github.com/voyagermesh/voyager/commit/d00a4c72) Update to Kubernetes v1.18.3 (#1519) +- [c6bbe8cc](https://github.com/voyagermesh/voyager/commit/c6bbe8cc) Update to Kubernetes v1.18.3 (#1518) +- [dcc94c7e](https://github.com/voyagermesh/voyager/commit/dcc94c7e) Update ci.yml +- [d9c38862](https://github.com/voyagermesh/voyager/commit/d9c38862) Update update-release-tracker.sh +- [5c74ad2b](https://github.com/voyagermesh/voyager/commit/5c74ad2b) Update update-release-tracker.sh +- [21b03bbb](https://github.com/voyagermesh/voyager/commit/21b03bbb) Add script to update release tracker on pr merge (#1516) +- [57503de5](https://github.com/voyagermesh/voyager/commit/57503de5) Update .kodiak.toml +- [dbdb1e5c](https://github.com/voyagermesh/voyager/commit/dbdb1e5c) Update to Kubernetes v1.18.3 (#1514) +- [1abc059e](https://github.com/voyagermesh/voyager/commit/1abc059e) Update to Kubernetes v1.18.3 +- [7a61045e](https://github.com/voyagermesh/voyager/commit/7a61045e) Create .kodiak.toml +- [4081635b](https://github.com/voyagermesh/voyager/commit/4081635b) Prepare release v13.0.0-beta.1 (#1512) +- [9b527d39](https://github.com/voyagermesh/voyager/commit/9b527d39) Generate both v1beta1 and v1 CRD YAML (#1511) +- [bb85c779](https://github.com/voyagermesh/voyager/commit/bb85c779) Prepare release v13.0.0-beta.0 (#1510) +- [c19455cf](https://github.com/voyagermesh/voyager/commit/c19455cf) Update to Kubernetes v1.18.3 (#1509) +- [9e750a13](https://github.com/voyagermesh/voyager/commit/9e750a13) Update README.md +- [f89dc723](https://github.com/voyagermesh/voyager/commit/f89dc723) Merge pull request #1507 from smarkets/fix-readme-docs-links +- [6ed3c7eb](https://github.com/voyagermesh/voyager/commit/6ed3c7eb) Fix README.md documentation links + + + + diff --git a/content/docs/v2024.3.18/CHANGELOG-v2021.09.15.md b/content/docs/v2024.3.18/CHANGELOG-v2021.09.15.md new file mode 100644 index 000000000..465045362 --- /dev/null +++ b/content/docs/v2024.3.18/CHANGELOG-v2021.09.15.md @@ -0,0 +1,1320 @@ +--- +title: Changelog | Voyager +description: Changelog +menu: + docs_v2024.3.18: + identifier: changelog-voyager-v2021.09.15 + name: Changelog-v2021.09.15 + parent: welcome + weight: 20210915 +product_name: voyager +menu_name: docs_v2024.3.18 +section_menu_id: welcome +url: /docs/v2024.3.18/welcome/changelog-v2021.09.15/ +aliases: +- /docs/v2024.3.18/CHANGELOG-v2021.09.15/ +info: + cli: v0.0.15 + installer: v2024.3.18 + version: v2024.3.18 +--- + +# Voyager v2021.09.15 (2021-09-16) + + +## [voyagermesh/apimachinery](https://github.com/voyagermesh/apimachinery) + +### [v0.1.0](https://github.com/voyagermesh/apimachinery/releases/tag/v0.1.0) + +- [c844b999](https://github.com/voyagermesh/apimachinery/commit/c844b999) Rework coordinator spec +- [dcf06153](https://github.com/voyagermesh/apimachinery/commit/dcf06153) Add CoordinatorResources field +- [f7b25e1f](https://github.com/voyagermesh/apimachinery/commit/f7b25e1f) Update api version annotations +- [3997eecd](https://github.com/voyagermesh/apimachinery/commit/3997eecd) Fix conversion v1 <-> v1beta1 +- [113fdd00](https://github.com/voyagermesh/apimachinery/commit/113fdd00) fix test +- [3c1f975e](https://github.com/voyagermesh/apimachinery/commit/3c1f975e) Update repository config (#8) +- [1f77bba1](https://github.com/voyagermesh/apimachinery/commit/1f77bba1) Update repository config (#7) +- [778bf7c9](https://github.com/voyagermesh/apimachinery/commit/778bf7c9) Update repository config (#6) +- [9a90d80f](https://github.com/voyagermesh/apimachinery/commit/9a90d80f) Update repository config (#5) +- [64ecf754](https://github.com/voyagermesh/apimachinery/commit/64ecf754) Only support secrets for TLS (#4) +- [5d540cbc](https://github.com/voyagermesh/apimachinery/commit/5d540cbc) Update dependencies (#3) +- [33b32bcd](https://github.com/voyagermesh/apimachinery/commit/33b32bcd) Test crds (#2) +- [06d18c2e](https://github.com/voyagermesh/apimachinery/commit/06d18c2e) Bring back v1beta1 api (#1) +- [0ad79ce9](https://github.com/voyagermesh/apimachinery/commit/0ad79ce9) Introduce v1 api version +- [73cfae18](https://github.com/voyagermesh/apimachinery/commit/73cfae18) Use voyager namespace +- [a95ec426](https://github.com/voyagermesh/apimachinery/commit/a95ec426) Update audit lib +- [1eebfc34](https://github.com/voyagermesh/apimachinery/commit/1eebfc34) Send audit events if analytics enabled (#1588) +- [6ea37116](https://github.com/voyagermesh/apimachinery/commit/6ea37116) Publish audit events +- [a300c51e](https://github.com/voyagermesh/apimachinery/commit/a300c51e) Use klog/v2 +- [19049190](https://github.com/voyagermesh/apimachinery/commit/19049190) Bring back grpc test +- [021a811f](https://github.com/voyagermesh/apimachinery/commit/021a811f) Update Kubernetes toolchain to v1.21.0 (#1585) +- [6677d82a](https://github.com/voyagermesh/apimachinery/commit/6677d82a) Update readme +- [7be79b98](https://github.com/voyagermesh/apimachinery/commit/7be79b98) Disable building arm64 images +- [e874bff6](https://github.com/voyagermesh/apimachinery/commit/e874bff6) Fix build +- [1a0f2c56](https://github.com/voyagermesh/apimachinery/commit/1a0f2c56) Build voyager binary before building haproxy image +- [ec811d3b](https://github.com/voyagermesh/apimachinery/commit/ec811d3b) Publish images to GH registry +- [cd3d0ea5](https://github.com/voyagermesh/apimachinery/commit/cd3d0ea5) Add license verifier (#1583) +- [6f3b9e74](https://github.com/voyagermesh/apimachinery/commit/6f3b9e74) Update repository config (#1584) +- [215976bb](https://github.com/voyagermesh/apimachinery/commit/215976bb) Update license header (#1582) +- [ebb61059](https://github.com/voyagermesh/apimachinery/commit/ebb61059) Update kind in CI +- [2ffaed1a](https://github.com/voyagermesh/apimachinery/commit/2ffaed1a) Update README.md +- [b2ec514b](https://github.com/voyagermesh/apimachinery/commit/b2ec514b) Update repository config (#1579) +- [387c5239](https://github.com/voyagermesh/apimachinery/commit/387c5239) Update repository config (#1577) +- [854c7d96](https://github.com/voyagermesh/apimachinery/commit/854c7d96) Update Kubernetes v1.18.9 dependencies (#1576) +- [1d92dc76](https://github.com/voyagermesh/apimachinery/commit/1d92dc76) Update repository config (#1574) +- [ccbe91a3](https://github.com/voyagermesh/apimachinery/commit/ccbe91a3) Update Kubernetes v1.18.9 dependencies (#1572) +- [255b0bcd](https://github.com/voyagermesh/apimachinery/commit/255b0bcd) Update Kubernetes v1.18.9 dependencies (#1571) +- [8f8e1dda](https://github.com/voyagermesh/apimachinery/commit/8f8e1dda) Update repository config (#1570) +- [2ae78311](https://github.com/voyagermesh/apimachinery/commit/2ae78311) Update repository config (#1569) +- [19e0a2e0](https://github.com/voyagermesh/apimachinery/commit/19e0a2e0) Update Kubernetes v1.18.9 dependencies (#1568) +- [5391e76a](https://github.com/voyagermesh/apimachinery/commit/5391e76a) Update Kubernetes v1.18.9 dependencies (#1567) +- [fd3ad20a](https://github.com/voyagermesh/apimachinery/commit/fd3ad20a) Update Kubernetes v1.18.9 dependencies (#1566) +- [44f58333](https://github.com/voyagermesh/apimachinery/commit/44f58333) Update Kubernetes v1.18.9 dependencies (#1565) +- [cca8be02](https://github.com/voyagermesh/apimachinery/commit/cca8be02) Update Kubernetes v1.18.9 dependencies (#1564) +- [b22ca14b](https://github.com/voyagermesh/apimachinery/commit/b22ca14b) Update Kubernetes v1.18.9 dependencies (#1563) +- [e1088ef3](https://github.com/voyagermesh/apimachinery/commit/e1088ef3) Update repository config (#1561) +- [f5f59ab3](https://github.com/voyagermesh/apimachinery/commit/f5f59ab3) Update Kubernetes v1.18.9 dependencies (#1559) +- [c42207db](https://github.com/voyagermesh/apimachinery/commit/c42207db) Update Kubernetes v1.18.9 dependencies (#1558) +- [306ce6d6](https://github.com/voyagermesh/apimachinery/commit/306ce6d6) Update Kubernetes v1.18.9 dependencies (#1557) +- [5bc96bb6](https://github.com/voyagermesh/apimachinery/commit/5bc96bb6) Update Kubernetes v1.18.9 dependencies (#1555) +- [9090362c](https://github.com/voyagermesh/apimachinery/commit/9090362c) Update Kubernetes v1.18.9 dependencies (#1554) +- [3ea1cbf8](https://github.com/voyagermesh/apimachinery/commit/3ea1cbf8) Update Kubernetes v1.18.9 dependencies (#1552) +- [79094a86](https://github.com/voyagermesh/apimachinery/commit/79094a86) Update Kubernetes v1.18.9 dependencies (#1549) +- [6e9f0a46](https://github.com/voyagermesh/apimachinery/commit/6e9f0a46) Update repository config (#1550) +- [11c3976b](https://github.com/voyagermesh/apimachinery/commit/11c3976b) Update Kubernetes v1.18.9 dependencies (#1546) +- [16c838e4](https://github.com/voyagermesh/apimachinery/commit/16c838e4) Update Kubernetes v1.18.9 dependencies (#1544) +- [a96efae7](https://github.com/voyagermesh/apimachinery/commit/a96efae7) Update repository config (#1543) +- [0fdc3aec](https://github.com/voyagermesh/apimachinery/commit/0fdc3aec) Update repository config (#1542) +- [adad38e7](https://github.com/voyagermesh/apimachinery/commit/adad38e7) Update Kubernetes v1.18.9 dependencies (#1541) +- [5a40bbe3](https://github.com/voyagermesh/apimachinery/commit/5a40bbe3) Update Kubernetes v1.18.3 dependencies (#1540) +- [4c06823e](https://github.com/voyagermesh/apimachinery/commit/4c06823e) Update Kubernetes v1.18.3 dependencies (#1539) +- [03966151](https://github.com/voyagermesh/apimachinery/commit/03966151) Update Kubernetes v1.18.3 dependencies (#1536) +- [34263c96](https://github.com/voyagermesh/apimachinery/commit/34263c96) Update Kubernetes v1.18.3 dependencies (#1534) +- [978fa2e4](https://github.com/voyagermesh/apimachinery/commit/978fa2e4) Update Kubernetes v1.18.3 dependencies (#1532) +- [6a43e6c2](https://github.com/voyagermesh/apimachinery/commit/6a43e6c2) Update Kubernetes v1.18.3 dependencies (#1529) +- [3e85fce7](https://github.com/voyagermesh/apimachinery/commit/3e85fce7) Update Kubernetes v1.18.3 dependencies (#1528) +- [18d16b90](https://github.com/voyagermesh/apimachinery/commit/18d16b90) Update Kubernetes v1.18.3 dependencies (#1527) +- [bc0a8afe](https://github.com/voyagermesh/apimachinery/commit/bc0a8afe) Update Kubernetes v1.18.3 dependencies (#1524) +- [10e4f502](https://github.com/voyagermesh/apimachinery/commit/10e4f502) Update to Kubernetes v1.18.3 (#1521) +- [4d2704ac](https://github.com/voyagermesh/apimachinery/commit/4d2704ac) Update to Kubernetes v1.18.3 (#1520) +- [cb16eb57](https://github.com/voyagermesh/apimachinery/commit/cb16eb57) Update to Kubernetes v1.18.3 (#1519) +- [24cae34e](https://github.com/voyagermesh/apimachinery/commit/24cae34e) Update to Kubernetes v1.18.3 (#1518) +- [2adc321a](https://github.com/voyagermesh/apimachinery/commit/2adc321a) Update ci.yml +- [0f568527](https://github.com/voyagermesh/apimachinery/commit/0f568527) Update update-release-tracker.sh +- [e989d1c8](https://github.com/voyagermesh/apimachinery/commit/e989d1c8) Update update-release-tracker.sh +- [a4189823](https://github.com/voyagermesh/apimachinery/commit/a4189823) Add script to update release tracker on pr merge (#1516) +- [b82735cd](https://github.com/voyagermesh/apimachinery/commit/b82735cd) Update .kodiak.toml +- [2acc748e](https://github.com/voyagermesh/apimachinery/commit/2acc748e) Update to Kubernetes v1.18.3 (#1514) +- [758e165f](https://github.com/voyagermesh/apimachinery/commit/758e165f) Update to Kubernetes v1.18.3 +- [43d5f6ca](https://github.com/voyagermesh/apimachinery/commit/43d5f6ca) Create .kodiak.toml +- [edea0341](https://github.com/voyagermesh/apimachinery/commit/edea0341) Prepare release v13.0.0-beta.1 (#1512) +- [a5a1d134](https://github.com/voyagermesh/apimachinery/commit/a5a1d134) Generate both v1beta1 and v1 CRD YAML (#1511) +- [c8539097](https://github.com/voyagermesh/apimachinery/commit/c8539097) Prepare release v13.0.0-beta.0 (#1510) +- [97f29eb4](https://github.com/voyagermesh/apimachinery/commit/97f29eb4) Update to Kubernetes v1.18.3 (#1509) +- [85934b04](https://github.com/voyagermesh/apimachinery/commit/85934b04) Update README.md +- [d62cf07d](https://github.com/voyagermesh/apimachinery/commit/d62cf07d) Merge pull request #1507 from smarkets/fix-readme-docs-links +- [00fe910e](https://github.com/voyagermesh/apimachinery/commit/00fe910e) Fix README.md documentation links +- [c8072132](https://github.com/voyagermesh/apimachinery/commit/c8072132) Prepare release v12.0.0 +- [e86772f1](https://github.com/voyagermesh/apimachinery/commit/e86772f1) Merge pull request #1503 from smarkets/master +- [d7554dd2](https://github.com/voyagermesh/apimachinery/commit/d7554dd2) Fix Update***Status helpers (#1505) +- [1de2c1fa](https://github.com/voyagermesh/apimachinery/commit/1de2c1fa) Update crazy-max/ghaction-docker-buildx flag +- [b23e3ecb](https://github.com/voyagermesh/apimachinery/commit/b23e3ecb) Use recommended kubernetes app labels (#1504) +- [6420effc](https://github.com/voyagermesh/apimachinery/commit/6420effc) Trigger the workflow on push or pull request +- [2ad37b9a](https://github.com/voyagermesh/apimachinery/commit/2ad37b9a) Change go module to voyagermesh.dev/voyager (#1500) +- [37480b2b](https://github.com/voyagermesh/apimachinery/commit/37480b2b) Update repository location (#1499) +- [dc8138c6](https://github.com/voyagermesh/apimachinery/commit/dc8138c6) Pass image pull secrets to helm chart +- [6c80753e](https://github.com/voyagermesh/apimachinery/commit/6c80753e) Show v12.0.0-rc.2 on README.md +- [d951acf5](https://github.com/voyagermesh/apimachinery/commit/d951acf5) Fix Helm chart publishing step in release workflow +- [a4547741](https://github.com/voyagermesh/apimachinery/commit/a4547741) Checkout repo in Helm job of release workflow +- [94371ee7](https://github.com/voyagermesh/apimachinery/commit/94371ee7) Fix HAProxy alpine image tag +- [2677e606](https://github.com/voyagermesh/apimachinery/commit/2677e606) Fix socklog arch in HAProxy 1.9.15 +- [a76b3d50](https://github.com/voyagermesh/apimachinery/commit/a76b3d50) Build HAProxy images from Makefile (#1498) +- [083615cd](https://github.com/voyagermesh/apimachinery/commit/083615cd) Build chart in release workflow +- [5cfb4cd3](https://github.com/voyagermesh/apimachinery/commit/5cfb4cd3) Install builddeps in release workflow +- [406c119e](https://github.com/voyagermesh/apimachinery/commit/406c119e) Use BASH_SOURCE to calculate $REPO_ROOT (#1497) +- [07afbc63](https://github.com/voyagermesh/apimachinery/commit/07afbc63) Rerun make gen fmt +- [5ad0a377](https://github.com/voyagermesh/apimachinery/commit/5ad0a377) Update CHANGELOG.md (#1496) +- [6dd778c5](https://github.com/voyagermesh/apimachinery/commit/6dd778c5) Security: Upgrade to HAProxy 1.19.15 (#1495) +- [ee1096dd](https://github.com/voyagermesh/apimachinery/commit/ee1096dd) Add rbac permissions for statefulset (#1494) +- [f350bbd1](https://github.com/voyagermesh/apimachinery/commit/f350bbd1) workload-kind support StatefulSet (#1482) +- [6576893f](https://github.com/voyagermesh/apimachinery/commit/6576893f) Apply various fixes to chart (#1493) +- [13426bbc](https://github.com/voyagermesh/apimachinery/commit/13426bbc) Merge pull request #1486 from jayjun/renewal +- [502109ab](https://github.com/voyagermesh/apimachinery/commit/502109ab) Merge pull request #1491 from smarkets/haproxy-exporter-image-repository +- [f11db3b3](https://github.com/voyagermesh/apimachinery/commit/f11db3b3) Add restrict-to-operator-namespace flag (#1481) +- [5de9075e](https://github.com/voyagermesh/apimachinery/commit/5de9075e) Add missing ingresses/status resource to operator ClusterRole (#1488) +- [880abc78](https://github.com/voyagermesh/apimachinery/commit/880abc78) Bump cloud.google.com/go to get timeout fix (#1487) +- [849febd5](https://github.com/voyagermesh/apimachinery/commit/849febd5) charts: Pass through haproxy and export image repository options +- [306ec67b](https://github.com/voyagermesh/apimachinery/commit/306ec67b) docs: Add documentation for haproxy and exporter repository arguments +- [9c80ca03](https://github.com/voyagermesh/apimachinery/commit/9c80ca03) Allow specifying rather than generating certs (#1479) +- [1184c68b](https://github.com/voyagermesh/apimachinery/commit/1184c68b) Refactor CI pipeline to build once. (#1476) +- [b6f5c93f](https://github.com/voyagermesh/apimachinery/commit/b6f5c93f) Bring back support for k8s 1.11 (#1475) +- [18a8b37f](https://github.com/voyagermesh/apimachinery/commit/18a8b37f) Use node[0]'s internal ip as minikube ip (#1474) +- [130ac325](https://github.com/voyagermesh/apimachinery/commit/130ac325) Prepare v12.0.0-rc.1 (#1473) +- [70b92854](https://github.com/voyagermesh/apimachinery/commit/70b92854) Pass --version flag to helm search repo command +- [517c6dcb](https://github.com/voyagermesh/apimachinery/commit/517c6dcb) Fix css class for helm 3 tab (#1470) +- [2f31439e](https://github.com/voyagermesh/apimachinery/commit/2f31439e) Prepare release v12.0.0-rc.0 (#1469) +- [580a3aad](https://github.com/voyagermesh/apimachinery/commit/580a3aad) Update installation instructions (#1467) +- [fc45a16a](https://github.com/voyagermesh/apimachinery/commit/fc45a16a) Run e2e tests in minikube (#1466) +- [8dfa49ca](https://github.com/voyagermesh/apimachinery/commit/8dfa49ca) Various fixes to chart (#1465) +- [12189523](https://github.com/voyagermesh/apimachinery/commit/12189523) Delete script based installer (#1464) +- [70bdbc9a](https://github.com/voyagermesh/apimachinery/commit/70bdbc9a) Revendor (#1463) +- [0b9469f3](https://github.com/voyagermesh/apimachinery/commit/0b9469f3) Fix typo for APISchemaIngress (#1461) +- [b7a16f8c](https://github.com/voyagermesh/apimachinery/commit/b7a16f8c) Use OwnerReference helpers from kmodules (#1460) +- [d3b76aa8](https://github.com/voyagermesh/apimachinery/commit/d3b76aa8) Fix helm v3.0.0 chart error on install (#1459) +- [479b9608](https://github.com/voyagermesh/apimachinery/commit/479b9608) Run fuzz tests for and set `preserveUnknownFields: false (#1458) +- [5272a522](https://github.com/voyagermesh/apimachinery/commit/5272a522) Properly handle empty image pull secret name in installer (#1457) +- [fd002b8f](https://github.com/voyagermesh/apimachinery/commit/fd002b8f) Fix broken links and chart validation (#1456) +- [00f33c66](https://github.com/voyagermesh/apimachinery/commit/00f33c66) Update client-go to kubernetes-1.16.3 (#1455) +- [97370527](https://github.com/voyagermesh/apimachinery/commit/97370527) Fix Linter Issues (#1448) +- [8e4a5907](https://github.com/voyagermesh/apimachinery/commit/8e4a5907) Use controller-tools@v0.2.2 to generate structural schema (#1450) +- [01e70986](https://github.com/voyagermesh/apimachinery/commit/01e70986) Various Makefile improvements (#1447) +- [2d6f6dfb](https://github.com/voyagermesh/apimachinery/commit/2d6f6dfb) Typo fix (#1445) +- [8b8212ed](https://github.com/voyagermesh/apimachinery/commit/8b8212ed) Use kubebuilder to generate crd manifests (#1442) +- [a6c4fe9c](https://github.com/voyagermesh/apimachinery/commit/a6c4fe9c) Fix helm chart install v11.0.1 (#1441) +- [a38f4212](https://github.com/voyagermesh/apimachinery/commit/a38f4212) Push docker image to GitHub registry +- [f5bb9864](https://github.com/voyagermesh/apimachinery/commit/f5bb9864) Update readme to show v11.0.1 +- [6e39a5df](https://github.com/voyagermesh/apimachinery/commit/6e39a5df) Fix frontmatter +- [8074e2d8](https://github.com/voyagermesh/apimachinery/commit/8074e2d8) Update changelog +- [88e81815](https://github.com/voyagermesh/apimachinery/commit/88e81815) Prepare v11.0.1 release +- [9ac046a0](https://github.com/voyagermesh/apimachinery/commit/9ac046a0) Fix broken helm chart: unexpected end definition in cluster-rol… (#1436) +- [f3ed6bc5](https://github.com/voyagermesh/apimachinery/commit/f3ed6bc5) Download onessl version v0.13.1 for Kubernetes 1.16 fix (#1437) +- [0f125f3b](https://github.com/voyagermesh/apimachinery/commit/0f125f3b) Enable GitHub actions +- [db9c905f](https://github.com/voyagermesh/apimachinery/commit/db9c905f) Templatize front matter (#1434) +- [1053495d](https://github.com/voyagermesh/apimachinery/commit/1053495d) Update changelog +- [02fee171](https://github.com/voyagermesh/apimachinery/commit/02fee171) Fix Dockerfile path +- [aa90d758](https://github.com/voyagermesh/apimachinery/commit/aa90d758) Fix frontmatter menu +- [ea7d3300](https://github.com/voyagermesh/apimachinery/commit/ea7d3300) Fix front matter +- [e04eff0e](https://github.com/voyagermesh/apimachinery/commit/e04eff0e) Run as fsGroup: 65535 +- [70d30963](https://github.com/voyagermesh/apimachinery/commit/70d30963) How to change scopes on a running kubernetes cluster. (#1428) +- [d888d6c5](https://github.com/voyagermesh/apimachinery/commit/d888d6c5) Add --ingress-class to hack/deploy/voyager.sh (#1430) +- [c6091400](https://github.com/voyagermesh/apimachinery/commit/c6091400) Use docker buildx +- [a24f7add](https://github.com/voyagermesh/apimachinery/commit/a24f7add) Prepare docs for v11.0.0 release (#1432) +- [f8c6b23f](https://github.com/voyagermesh/apimachinery/commit/f8c6b23f) Downgrade prometheus-operator dependency +- [5025c7ba](https://github.com/voyagermesh/apimachinery/commit/5025c7ba) Update dependencies (#1431) +- [d2653fec](https://github.com/voyagermesh/apimachinery/commit/d2653fec) Remove survey link +- [a3890408](https://github.com/voyagermesh/apimachinery/commit/a3890408) Use github.com/golang/protobuf@v1.2.0 +- [f62ad126](https://github.com/voyagermesh/apimachinery/commit/f62ad126) Add cert-manager docs (#1417) +- [33411980](https://github.com/voyagermesh/apimachinery/commit/33411980) Avoid 503 Error Doc (#1407) +- [9459ff10](https://github.com/voyagermesh/apimachinery/commit/9459ff10) Use github.com/akamai/AkamaiOPEN-edgegrid-golang@v0.8.0 (#1421) +- [5258eb78](https://github.com/voyagermesh/apimachinery/commit/5258eb78) Update .travis.yml +- [9fde8f29](https://github.com/voyagermesh/apimachinery/commit/9fde8f29) Add license header for Makefile (#1420) +- [36be6f50](https://github.com/voyagermesh/apimachinery/commit/36be6f50) Update azure-sdk-for-go to v31.1.0 (#1419) +- [6ef79b2f](https://github.com/voyagermesh/apimachinery/commit/6ef79b2f) Add hard-stop-after (#1405) +- [d1777218](https://github.com/voyagermesh/apimachinery/commit/d1777218) Change timeout connect to 5s (#1406) +- [1b9a9f04](https://github.com/voyagermesh/apimachinery/commit/1b9a9f04) Remove --rbac flag (#1397) +- [e61316ef](https://github.com/voyagermesh/apimachinery/commit/e61316ef) Allow Backend Weight to be 0 (#1396) +- [b6167d6d](https://github.com/voyagermesh/apimachinery/commit/b6167d6d) Add HAProxy Agent Check (#1395) +- [4739aa5a](https://github.com/voyagermesh/apimachinery/commit/4739aa5a) Update .yaml apps/v1 and Update Vendor to Fix DaemonSet Issue (#1410) +- [48a96ee4](https://github.com/voyagermesh/apimachinery/commit/48a96ee4) Allow replica change when no hpa (#1409) +- [633e7cbb](https://github.com/voyagermesh/apimachinery/commit/633e7cbb) Fix Docs and Example Files (#1408) +- [41be94ca](https://github.com/voyagermesh/apimachinery/commit/41be94ca) Docs: notice about tls secret special characters (#1416) +- [18263847](https://github.com/voyagermesh/apimachinery/commit/18263847) Add missing +- [f56b5563](https://github.com/voyagermesh/apimachinery/commit/f56b5563) Update to k8s client libraries to 1.14.0 (#1392) +- [21931c0c](https://github.com/voyagermesh/apimachinery/commit/21931c0c) Add Makefile (#1398) +- [03f2cc78](https://github.com/voyagermesh/apimachinery/commit/03f2cc78) Add GO cache directories +- [ad7c3b9a](https://github.com/voyagermesh/apimachinery/commit/ad7c3b9a) Use absolute path as aliases for reference docs (#1394) +- [bea3b4e3](https://github.com/voyagermesh/apimachinery/commit/bea3b4e3) Use GO Modules (#1391) +- [945e6209](https://github.com/voyagermesh/apimachinery/commit/945e6209) Revendor dependencies in preparation for go module support (#1390) +- [e172fd1c](https://github.com/voyagermesh/apimachinery/commit/e172fd1c) remove single quotes from servicePort (#1365) +- [6aeab0e7](https://github.com/voyagermesh/apimachinery/commit/6aeab0e7) Fix Typo (#1384) +- [9c0285b3](https://github.com/voyagermesh/apimachinery/commit/9c0285b3) Update README.md +- [153fc2da](https://github.com/voyagermesh/apimachinery/commit/153fc2da) Prepare docs for 10.0.0 release (#1383) +- [f8680f8a](https://github.com/voyagermesh/apimachinery/commit/f8680f8a) Update Kubernetes client libraries to 1.13.5 (#1379) +- [faec4e9f](https://github.com/voyagermesh/apimachinery/commit/faec4e9f) Update README.md +- [8806c979](https://github.com/voyagermesh/apimachinery/commit/8806c979) Get id-token from Authorization header (#1376) +- [c3b7789c](https://github.com/voyagermesh/apimachinery/commit/c3b7789c) Update haproxy version to 1.9.6 (#1374) +- [937cdf8a](https://github.com/voyagermesh/apimachinery/commit/937cdf8a) Update haproxy version to 1.9.4 (#1368) +- [1a1ba749](https://github.com/voyagermesh/apimachinery/commit/1a1ba749) Clarify how HAProxy presents certificates to clients (#1358) +- [0248eca2](https://github.com/voyagermesh/apimachinery/commit/0248eca2) Update Kubernetes client libraries to 1.13.0 (#1359) +- [4761686a](https://github.com/voyagermesh/apimachinery/commit/4761686a) Update README.md +- [430dd7e6](https://github.com/voyagermesh/apimachinery/commit/430dd7e6) Update LE certificate renewal buffer info (#1355) +- [db6a42e4](https://github.com/voyagermesh/apimachinery/commit/db6a42e4) Release 9.0.0 (#1354) +- [7e972312](https://github.com/voyagermesh/apimachinery/commit/7e972312) Fix hugo frontmatter for HTTP/2 doc (#1353) +- [9890a298](https://github.com/voyagermesh/apimachinery/commit/9890a298) Fix e2e test for empty backend (#1352) +- [e87174e1](https://github.com/voyagermesh/apimachinery/commit/e87174e1) Update changelog for 9.0.0 (#1350) +- [4e9c274e](https://github.com/voyagermesh/apimachinery/commit/4e9c274e) Prepare docs for 9.0.0 release (#1349) +- [8037e7dd](https://github.com/voyagermesh/apimachinery/commit/8037e7dd) Add guides for configuring multiple TLS (#1342) +- [4d86d3cc](https://github.com/voyagermesh/apimachinery/commit/4d86d3cc) Add option for configuring load balancing algorithm in backends (#1340) +- [ca02efc7](https://github.com/voyagermesh/apimachinery/commit/ca02efc7) Pass Annotations to Operator PodTemplate (#1347) +- [40a9d146](https://github.com/voyagermesh/apimachinery/commit/40a9d146) Don't use priority class when operator namespace is not kube-system (#1346) +- [4570c43e](https://github.com/voyagermesh/apimachinery/commit/4570c43e) Use onessl 0.10.0 (#1345) +- [8e49f415](https://github.com/voyagermesh/apimachinery/commit/8e49f415) Fix the case for deploying using MINGW64 for windows (#1344) +- [5ab8f3c7](https://github.com/voyagermesh/apimachinery/commit/5ab8f3c7) Update sticky-session.md (#1341) +- [6bdd46ff](https://github.com/voyagermesh/apimachinery/commit/6bdd46ff) Add test for gRPC stream (#1339) +- [0bb76144](https://github.com/voyagermesh/apimachinery/commit/0bb76144) Add support for Gandi V5 acme dns provider (#1338) +- [9e41b5f7](https://github.com/voyagermesh/apimachinery/commit/9e41b5f7) Add support for gRPC (#1328) +- [2fc167f3](https://github.com/voyagermesh/apimachinery/commit/2fc167f3) readme: single-service update (#1323) +- [e75f6622](https://github.com/voyagermesh/apimachinery/commit/e75f6622) single-service: should be 'test-service' instead of 'test-server' (#1322) +- [ca3fe1af](https://github.com/voyagermesh/apimachinery/commit/ca3fe1af) readme: overview: certificates.voyager.appscode.com (#1324) +- [c3c58101](https://github.com/voyagermesh/apimachinery/commit/c3c58101) Support mounting any configmap/secret into HAProxy pod (#1330) +- [a92f6a1e](https://github.com/voyagermesh/apimachinery/commit/a92f6a1e) readme: minor typo fix (#1321) +- [6f457d57](https://github.com/voyagermesh/apimachinery/commit/6f457d57) Update haproxy version to 1.9.2 (#1312) +- [86707118](https://github.com/voyagermesh/apimachinery/commit/86707118) Update TCP docs (#1336) +- [307bed12](https://github.com/voyagermesh/apimachinery/commit/307bed12) Add option for configuring certificate renewal (#1316) +- [ecb3730e](https://github.com/voyagermesh/apimachinery/commit/ecb3730e) Add support for named service port (#1310) +- [09cc6765](https://github.com/voyagermesh/apimachinery/commit/09cc6765) Fix ClusterProvider name for concourse tests (#1313) +- [bed9023f](https://github.com/voyagermesh/apimachinery/commit/bed9023f) Add certificate health checker (#1309) +- [c71cf697](https://github.com/voyagermesh/apimachinery/commit/c71cf697) Update xenwolf/lego to 2018-12 (#1305) +- [f9882e85](https://github.com/voyagermesh/apimachinery/commit/f9882e85) Update webhook error message format for Kubernetes 1.13+ (#1306) +- [6e368076](https://github.com/voyagermesh/apimachinery/commit/6e368076) Update appscode/oauth2_proxy image version (#1301) +- [5842ee64](https://github.com/voyagermesh/apimachinery/commit/5842ee64) Set periodic analytics (#1298) +- [8105630b](https://github.com/voyagermesh/apimachinery/commit/8105630b) Fixed typo (#1295) +- [ec6d6b06](https://github.com/voyagermesh/apimachinery/commit/ec6d6b06) Update Kubernetes client libraries to 1.12.0 (#1292) +- [aae1145d](https://github.com/voyagermesh/apimachinery/commit/aae1145d) Update xray to handle any webhook denied request (#1282) +- [1c025f5b](https://github.com/voyagermesh/apimachinery/commit/1c025f5b) Expose flags to chart (#1281) +- [19952dc3](https://github.com/voyagermesh/apimachinery/commit/19952dc3) Pass image pull secrets for cleaner job in chart (#1280) +- [3b12338e](https://github.com/voyagermesh/apimachinery/commit/3b12338e) Update kubernetes client libraries to 1.12.0 (#1279) +- [236a684f](https://github.com/voyagermesh/apimachinery/commit/236a684f) Show provider list for helm installer +- [27c164af](https://github.com/voyagermesh/apimachinery/commit/27c164af) Update changelog +- [66514c84](https://github.com/voyagermesh/apimachinery/commit/66514c84) Fix xray attempt counter +- [e42017da](https://github.com/voyagermesh/apimachinery/commit/e42017da) Expose flags to installer script (#1278) +- [49ec9038](https://github.com/voyagermesh/apimachinery/commit/49ec9038) Fix webhook xray checker (#1277) +- [16fbfc6a](https://github.com/voyagermesh/apimachinery/commit/16fbfc6a) Handle ErrCallingWebhook in xray (#1276) +- [457d8930](https://github.com/voyagermesh/apimachinery/commit/457d8930) Prepare docs for 8.0.1 release (#1275) +- [2a5ff790](https://github.com/voyagermesh/apimachinery/commit/2a5ff790) Update error message for webhook xray in installer script +- [57ecdce5](https://github.com/voyagermesh/apimachinery/commit/57ecdce5) Fix upgrade flow for installer script (#1273) +- [5a5f9925](https://github.com/voyagermesh/apimachinery/commit/5a5f9925) Update README.md +- [60359076](https://github.com/voyagermesh/apimachinery/commit/60359076) Fix Ingress column header (#1272) +- [7d3be9e6](https://github.com/voyagermesh/apimachinery/commit/7d3be9e6) Fix chart (#1271) +- [aec30bad](https://github.com/voyagermesh/apimachinery/commit/aec30bad) Prepare docs for 8.0.0 release (#1269) +- [ab4145d8](https://github.com/voyagermesh/apimachinery/commit/ab4145d8) Set SideEffects to None for webhooks (#1270) +- [b17d76ea](https://github.com/voyagermesh/apimachinery/commit/b17d76ea) Detect failure quickly. (#1268) +- [1074eb18](https://github.com/voyagermesh/apimachinery/commit/1074eb18) Check webhooks are activated in installer script (#1266) +- [07d9b36b](https://github.com/voyagermesh/apimachinery/commit/07d9b36b) Support readinessProbe and livenessProbe (#1263) +- [781756c5](https://github.com/voyagermesh/apimachinery/commit/781756c5) Write webhook xray event to operator workload (#1265) +- [45c3f24f](https://github.com/voyagermesh/apimachinery/commit/45c3f24f) Add validation webhook xray (#1261) +- [5cfb0f94](https://github.com/voyagermesh/apimachinery/commit/5cfb0f94) Update error-files.md (#1260) +- [036c791f](https://github.com/voyagermesh/apimachinery/commit/036c791f) Update FixAKS helper (#1259) +- [d149e6c0](https://github.com/voyagermesh/apimachinery/commit/d149e6c0) Use FQDN for kube-apiserver in AKS (#1258) +- [ffce360d](https://github.com/voyagermesh/apimachinery/commit/ffce360d) Rename webhook apiserver ca CN (#1257) +- [81e85c1d](https://github.com/voyagermesh/apimachinery/commit/81e85c1d) Check if Kubernetes version is supported before running operator (#1256) +- [95cc4098](https://github.com/voyagermesh/apimachinery/commit/95cc4098) Format user roles (#1255) +- [c8d8431c](https://github.com/voyagermesh/apimachinery/commit/c8d8431c) Enable webhooks by default in chart (#1254) +- [7aaad11f](https://github.com/voyagermesh/apimachinery/commit/7aaad11f) Update README.md +- [92cc3169](https://github.com/voyagermesh/apimachinery/commit/92cc3169) Update values.yaml +- [fbffb9cf](https://github.com/voyagermesh/apimachinery/commit/fbffb9cf) Support configuring cleaner image via values in chart (#1253) +- [d1b00ca6](https://github.com/voyagermesh/apimachinery/commit/d1b00ca6) add support for custom templates from config map to chart (#1246) +- [a94d5a8f](https://github.com/voyagermesh/apimachinery/commit/a94d5a8f) Remove support for Go 1.9 compiler +- [ab5da7d9](https://github.com/voyagermesh/apimachinery/commit/ab5da7d9) Merge commit 'ad6658c7954fdb859b71234edee0ac7d182ae042' +- [90c535cf](https://github.com/voyagermesh/apimachinery/commit/90c535cf) Use forked k8s.io/client-go v1.11.3 (#1243) +- [0992575c](https://github.com/voyagermesh/apimachinery/commit/0992575c) Update k8s.io/apiserver (#1241) +- [0ac0d665](https://github.com/voyagermesh/apimachinery/commit/0ac0d665) Merge commit 'c6b7add0b726df04be1b2e6f672b48f69bca42d8' +- [62b1ecbb](https://github.com/voyagermesh/apimachinery/commit/62b1ecbb) Merge commit '3c2ed9a2025e7d1eb26082f64c3c49683df01846' +- [d2b42cc1](https://github.com/voyagermesh/apimachinery/commit/d2b42cc1) Use kubernetes-1.11.3 (#1240) +- [a4a80e0c](https://github.com/voyagermesh/apimachinery/commit/a4a80e0c) Update CertStore (#1239) +- [2b997095](https://github.com/voyagermesh/apimachinery/commit/2b997095) Support pod annotations in chart (#1236) +- [39e66108](https://github.com/voyagermesh/apimachinery/commit/39e66108) Set serviceAccount for cleaner job (#1235) +- [5ce5adf4](https://github.com/voyagermesh/apimachinery/commit/5ce5adf4) Cleanup webhooks when chart is deleted (#1233) +- [0de886e1](https://github.com/voyagermesh/apimachinery/commit/0de886e1) Use IntHash as status.observedGeneration (#1231) +- [bf939eb8](https://github.com/voyagermesh/apimachinery/commit/bf939eb8) Update pipeline (#1230) +- [328d8888](https://github.com/voyagermesh/apimachinery/commit/328d8888) Merge commit 'e120f1f0a84476916440cd6d3618e5e0b125dcfd' +- [5aadbdb3](https://github.com/voyagermesh/apimachinery/commit/5aadbdb3) Add observedGenerationHash field (#1228) +- [34e4528c](https://github.com/voyagermesh/apimachinery/commit/34e4528c) Merge commit '9a5765f9a432ce84af0aca911316c0bd1699976e' +- [042c2fd8](https://github.com/voyagermesh/apimachinery/commit/042c2fd8) Fix uninstall for concourse (#1227) +- [2a013a70](https://github.com/voyagermesh/apimachinery/commit/2a013a70) Use priorityClass `system-cluster-critical` for operator pods. (#1223) +- [a60f4636](https://github.com/voyagermesh/apimachinery/commit/a60f4636) Revendor prometheus-operator (#1222) +- [59753762](https://github.com/voyagermesh/apimachinery/commit/59753762) Use apps/v1 apiGroup (#1221) +- [a121f350](https://github.com/voyagermesh/apimachinery/commit/a121f350) Merge commit 'b47d10c19f5225f9bc0f6c59afa7e1431bee1dcb' +- [c35e0380](https://github.com/voyagermesh/apimachinery/commit/c35e0380) Use concourse scripts from libbuild (#1219) +- [d9d03142](https://github.com/voyagermesh/apimachinery/commit/d9d03142) Merge commit '063baab00c216f575d04b47425198206f7feb2f0' +- [ffcddbca](https://github.com/voyagermesh/apimachinery/commit/ffcddbca) Merge commit 'a6dde7470230ff685bdce6ab3a99a7b18eb1a92f' +- [c57e7a6b](https://github.com/voyagermesh/apimachinery/commit/c57e7a6b) Add AlreadyObserved helpers (#1218) +- [b6576c53](https://github.com/voyagermesh/apimachinery/commit/b6576c53) Add categories (#1217) +- [acea9da9](https://github.com/voyagermesh/apimachinery/commit/acea9da9) Fix UpdateStatus helpers (#1216) +- [a20798b6](https://github.com/voyagermesh/apimachinery/commit/a20798b6) Merge commit '7b3ebe903887fb97f6c6f9ef67303eae072db583' +- [0ea61cfc](https://github.com/voyagermesh/apimachinery/commit/0ea61cfc) Upgrade xenwolf/lego library (#1214) +- [9d254eac](https://github.com/voyagermesh/apimachinery/commit/9d254eac) Support pod priority (#1213) +- [e0af0a2d](https://github.com/voyagermesh/apimachinery/commit/e0af0a2d) Enable status sub resource for crd yamls (#1212) +- [07767c73](https://github.com/voyagermesh/apimachinery/commit/07767c73) Move crds to api folder (#1209) +- [38f381a8](https://github.com/voyagermesh/apimachinery/commit/38f381a8) Retry UpdateStatus calls (#1208) +- [f73adbc1](https://github.com/voyagermesh/apimachinery/commit/f73adbc1) Revendor monitoring-agent-api (#1207) +- [83be45f3](https://github.com/voyagermesh/apimachinery/commit/83be45f3) Use kmodules.xyz/monitoring-agent-api (#1206) +- [a9c916d3](https://github.com/voyagermesh/apimachinery/commit/a9c916d3) Document limited NLB support (#1205) +- [93bacb0a](https://github.com/voyagermesh/apimachinery/commit/93bacb0a) Merge commit 'b73ca4d8b1038c8753aecd6469dc3128f2986446' +- [57ac071e](https://github.com/voyagermesh/apimachinery/commit/57ac071e) Update GKE cluster role (#1204) +- [3ac9e3ec](https://github.com/voyagermesh/apimachinery/commit/3ac9e3ec) Add throughput graph (#1201) +- [5cd98d15](https://github.com/voyagermesh/apimachinery/commit/5cd98d15) Correctly handle ignored openapi prefixes (#1198) +- [d12bc114](https://github.com/voyagermesh/apimachinery/commit/d12bc114) Repare docs for 7.4.0 release (#1192) +- [86c2c840](https://github.com/voyagermesh/apimachinery/commit/86c2c840) Use version and additional columns for crds (#1183) +- [8355cf60](https://github.com/voyagermesh/apimachinery/commit/8355cf60) Chart support for custom tolerations and affinity (#1182) +- [1118f1fb](https://github.com/voyagermesh/apimachinery/commit/1118f1fb) Update client-go to v8.0.0 (#1177) +- [cff3fc25](https://github.com/voyagermesh/apimachinery/commit/cff3fc25) Update chart installation instruction for Kubernetes 1.11 (#1180) +- [8234eb72](https://github.com/voyagermesh/apimachinery/commit/8234eb72) Prepare docs for 7.3.0 (#1179) +- [17312469](https://github.com/voyagermesh/apimachinery/commit/17312469) Format shell scripts (#1178) +- [7577c591](https://github.com/voyagermesh/apimachinery/commit/7577c591) Merge commit 'cd04c141128a36cbac75b3c61d9638f50a54f9ed' +- [7748674f](https://github.com/voyagermesh/apimachinery/commit/7748674f) Remove status from crd.yaml (#1176) +- [d68e484d](https://github.com/voyagermesh/apimachinery/commit/d68e484d) Use HAProxy 1.8.12 (#1175) +- [0446dfaf](https://github.com/voyagermesh/apimachinery/commit/0446dfaf) Add description to crd structs (#1174) +- [54acce19](https://github.com/voyagermesh/apimachinery/commit/54acce19) Document enableStatusSubresource in chart (#1171) +- [04fce77a](https://github.com/voyagermesh/apimachinery/commit/04fce77a) Enable status subresource for voyager crds (#1169) +- [625cf2c7](https://github.com/voyagermesh/apimachinery/commit/625cf2c7) Remove deprecated fields from Certificate crd (#1170) +- [01111af4](https://github.com/voyagermesh/apimachinery/commit/01111af4) Remove description on root schema (#1168) +- [1df7a323](https://github.com/voyagermesh/apimachinery/commit/1df7a323) Add nodeSelector for the operator (#1166) +- [ea0bd992](https://github.com/voyagermesh/apimachinery/commit/ea0bd992) Update changelog for 7.2.0 +- [51c6c630](https://github.com/voyagermesh/apimachinery/commit/51c6c630) Preparep docs for 7.2.0 release (#1160) +- [010d439a](https://github.com/voyagermesh/apimachinery/commit/010d439a) Use secrets for TLS connections (#1159) +- [251c4c88](https://github.com/voyagermesh/apimachinery/commit/251c4c88) Update faq.md +- [300a250d](https://github.com/voyagermesh/apimachinery/commit/300a250d) Update operator-profiling.md +- [6ee973c7](https://github.com/voyagermesh/apimachinery/commit/6ee973c7) Added docs for backend health check (#1156) +- [9b3fd711](https://github.com/voyagermesh/apimachinery/commit/9b3fd711) Document operator profiler (#1158) +- [9dfa67ef](https://github.com/voyagermesh/apimachinery/commit/9dfa67ef) Update operator-stats.md +- [2d9cfb09](https://github.com/voyagermesh/apimachinery/commit/2d9cfb09) Update operator-stats.md +- [682cc172](https://github.com/voyagermesh/apimachinery/commit/682cc172) Document how to view operator metrics (#1157) +- [90d626d1](https://github.com/voyagermesh/apimachinery/commit/90d626d1) Allow user to set healthCheckNodePort (#1153) +- [ac2f4c9c](https://github.com/voyagermesh/apimachinery/commit/ac2f4c9c) Fix fmt string in validator (#1154) +- [5b9cc7a7](https://github.com/voyagermesh/apimachinery/commit/5b9cc7a7) Always use RBAC-enabled instructions for monitoring tutorials (#1152) +- [efa4f7f3](https://github.com/voyagermesh/apimachinery/commit/efa4f7f3) Expose webhook server to expose operator metrics (#1151) +- [cc57f6e8](https://github.com/voyagermesh/apimachinery/commit/cc57f6e8) Pause certificate checks (#1149) +- [9093c7fb](https://github.com/voyagermesh/apimachinery/commit/9093c7fb) Revendor dependencies (#1150) +- [112365cc](https://github.com/voyagermesh/apimachinery/commit/112365cc) Forward X-Auth-Request-Id-Token header in oauth (#1126) +- [77075e9f](https://github.com/voyagermesh/apimachinery/commit/77075e9f) Revendor xenolf/lego (#1147) +- [3d28bb2b](https://github.com/voyagermesh/apimachinery/commit/3d28bb2b) Add api clients to readme +- [a2dd04be](https://github.com/voyagermesh/apimachinery/commit/a2dd04be) Update install.md +- [f92ae807](https://github.com/voyagermesh/apimachinery/commit/f92ae807) Move openapi-spec to api folder (#1143) +- [64031878](https://github.com/voyagermesh/apimachinery/commit/64031878) fix link +- [e78017b4](https://github.com/voyagermesh/apimachinery/commit/e78017b4) Install in kube-system namespace via Helm +- [931af0fb](https://github.com/voyagermesh/apimachinery/commit/931af0fb) Node port services are supported by external-dns (#1138) +- [c6325c00](https://github.com/voyagermesh/apimachinery/commit/c6325c00) Update changelog +- [70b44e00](https://github.com/voyagermesh/apimachinery/commit/70b44e00) Allocate cpu for operator pod. (#1136) +- [1108e045](https://github.com/voyagermesh/apimachinery/commit/1108e045) Prepare docs for 7.1.1 release (#1135) +- [0439388d](https://github.com/voyagermesh/apimachinery/commit/0439388d) Do not create namespace from yaml, it gets created with kubectl manually (#1132) +- [b7e490ae](https://github.com/voyagermesh/apimachinery/commit/b7e490ae) Get new LE account if user hits rate limits (#1134) +- [7d8f322b](https://github.com/voyagermesh/apimachinery/commit/7d8f322b) Fix rbac permissions for service monitors (#1133) +- [4d0f915f](https://github.com/voyagermesh/apimachinery/commit/4d0f915f) Fix haproxy-stats page link (#1131) +- [3e46f219](https://github.com/voyagermesh/apimachinery/commit/3e46f219) Update changelog (#1129) +- [aab258a5](https://github.com/voyagermesh/apimachinery/commit/aab258a5) haproxy-stats.md typo fix (#1127) +- [b0008a0c](https://github.com/voyagermesh/apimachinery/commit/b0008a0c) Add togglable tabs for Installation: Script & Helm (#1125) +- [3a386d99](https://github.com/voyagermesh/apimachinery/commit/3a386d99) Prepare docs for 7.1.0 release (#1111) +- [b526f4fd](https://github.com/voyagermesh/apimachinery/commit/b526f4fd) Concourse tests (#1081) +- [328f7a9b](https://github.com/voyagermesh/apimachinery/commit/328f7a9b) Forward X-Auth-Request headers in oauth (#1114) +- [15d40978](https://github.com/voyagermesh/apimachinery/commit/15d40978) Upgrade to HAProxy 1.8.9 (#1124) +- [4be48403](https://github.com/voyagermesh/apimachinery/commit/4be48403) Revendor dependencies (#1123) +- [b6423ff6](https://github.com/voyagermesh/apimachinery/commit/b6423ff6) Fix documentation about external-dns service (#1120) +- [2a1a19fe](https://github.com/voyagermesh/apimachinery/commit/2a1a19fe) Add support for aks (#1119) +- [f61fd386](https://github.com/voyagermesh/apimachinery/commit/f61fd386) Added digitalocean & Linode provider to installer script (#1113) +- [7727207f](https://github.com/voyagermesh/apimachinery/commit/7727207f) Additional metallb support (#1117) +- [9a27980d](https://github.com/voyagermesh/apimachinery/commit/9a27980d) Apply validation rules to ingress names (#1110) +- [adf91b31](https://github.com/voyagermesh/apimachinery/commit/adf91b31) Document how to setup kube dashboard with Voyager (#1101) +- [108c90ef](https://github.com/voyagermesh/apimachinery/commit/108c90ef) Document using Google oauth with Voyager (#1100) +- [56b424c9](https://github.com/voyagermesh/apimachinery/commit/56b424c9) Add LoadBalancer type ingress support for DO and Linode (#1109) +- [bb3ef893](https://github.com/voyagermesh/apimachinery/commit/bb3ef893) Detect haproxy-image-tag in dev mode (#1082) +- [a0c60ec8](https://github.com/voyagermesh/apimachinery/commit/a0c60ec8) Update timeout key list (#1104) +- [c95a2c18](https://github.com/voyagermesh/apimachinery/commit/c95a2c18) Update version for 1.7 (#1094) +- [f1a6ebff](https://github.com/voyagermesh/apimachinery/commit/f1a6ebff) Fix installer script for --restrict-to-namespace mode (#1091) +- [8fc277e8](https://github.com/voyagermesh/apimachinery/commit/8fc277e8) Use yaml file to create service account in installer script (#1088) +- [bfd1e9db](https://github.com/voyagermesh/apimachinery/commit/bfd1e9db) Avoid waiting for api services when not installed (#1087) +- [317747f2](https://github.com/voyagermesh/apimachinery/commit/317747f2) Fix formatting errors in validator (#1085) +- [addb868e](https://github.com/voyagermesh/apimachinery/commit/addb868e) Update changelog (#1077) +- [2ab7fe8d](https://github.com/voyagermesh/apimachinery/commit/2ab7fe8d) Prepare 7.0.0 release (#1076) +- [a1f63505](https://github.com/voyagermesh/apimachinery/commit/a1f63505) Prepare docs for 7.0.0-rc.3 (#1072) +- [08158a03](https://github.com/voyagermesh/apimachinery/commit/08158a03) Checked nil pointer before validating oauth (#1071) +- [73787be8](https://github.com/voyagermesh/apimachinery/commit/73787be8) Update changelog (#1069) +- [b6104242](https://github.com/voyagermesh/apimachinery/commit/b6104242) Delete user roles on purge (#1067) +- [2e732c0e](https://github.com/voyagermesh/apimachinery/commit/2e732c0e) Use hooks for user roles in chart (#1066) +- [14cc1387](https://github.com/voyagermesh/apimachinery/commit/14cc1387) Use onessl 0.3.0 +- [9e98a03c](https://github.com/voyagermesh/apimachinery/commit/9e98a03c) Update changelog (#1065) +- [1669ce52](https://github.com/voyagermesh/apimachinery/commit/1669ce52) Clarify messaging (#1064) +- [c7c7d0b3](https://github.com/voyagermesh/apimachinery/commit/c7c7d0b3) Install correct version of voyager chart (#1063) +- [dab2837c](https://github.com/voyagermesh/apimachinery/commit/dab2837c) Avoid creating apiservice when webhooks are not used. (#1062) +- [3cd1060b](https://github.com/voyagermesh/apimachinery/commit/3cd1060b) Add --haproxy-image-tag flag to installer (#1061) +- [6b0f793e](https://github.com/voyagermesh/apimachinery/commit/6b0f793e) Prepare docs for 7.0.0-rc.2 (#1060) +- [0a5cc05f](https://github.com/voyagermesh/apimachinery/commit/0a5cc05f) Support NodeSelector and Tolerations via annotation for std ingress (#1059) +- [13c82dd8](https://github.com/voyagermesh/apimachinery/commit/13c82dd8) Update README.md +- [41c3cad0](https://github.com/voyagermesh/apimachinery/commit/41c3cad0) No auth-check for auth-backend-path itself (#1056) +- [f166a61d](https://github.com/voyagermesh/apimachinery/commit/f166a61d) Added http2 example (#1052) +- [a32e2fa8](https://github.com/voyagermesh/apimachinery/commit/a32e2fa8) Update changelog (#1051) +- [9781b2df](https://github.com/voyagermesh/apimachinery/commit/9781b2df) Prepare docs for 7.0.0-rc.1 (#1050) +- [12231b0f](https://github.com/voyagermesh/apimachinery/commit/12231b0f) Support ALPN options in HTTP mode (#1042) +- [325b82e5](https://github.com/voyagermesh/apimachinery/commit/325b82e5) Find TLS secret only if NoTLS=false (#1041) +- [e9c81388](https://github.com/voyagermesh/apimachinery/commit/e9c81388) Include a test pem to fool haproxy in operator pod. (#1038) +- [e1390c7e](https://github.com/voyagermesh/apimachinery/commit/e1390c7e) Fix ambiguous comment (#1039) +- [5032fa7d](https://github.com/voyagermesh/apimachinery/commit/5032fa7d) Use double quotes with `*` (#1037) +- [b9ad1108](https://github.com/voyagermesh/apimachinery/commit/b9ad1108) Fix tcp-sni doc (#1036) +- [734aeafc](https://github.com/voyagermesh/apimachinery/commit/734aeafc) Fix installers (#1035) +- [c772b124](https://github.com/voyagermesh/apimachinery/commit/c772b124) Fix release script for alpine image (#1034) +- [55ea6780](https://github.com/voyagermesh/apimachinery/commit/55ea6780) Prepare docs for 7.0.0-rc.0 (#1027) +- [5d0ddf61](https://github.com/voyagermesh/apimachinery/commit/5d0ddf61) Update tcp-sni doc (#1033) +- [bd79baee](https://github.com/voyagermesh/apimachinery/commit/bd79baee) Updated doc for ssl-passthrough (#1031) +- [c06db022](https://github.com/voyagermesh/apimachinery/commit/c06db022) Separated config-check from render-config (#1030) +- [4bcaddba](https://github.com/voyagermesh/apimachinery/commit/4bcaddba) Fix typo (#1032) +- [e333fbe5](https://github.com/voyagermesh/apimachinery/commit/e333fbe5) Remove AssignTypeKind and GetGroupVersionKind util methods (#1029) +- [a5481eed](https://github.com/voyagermesh/apimachinery/commit/a5481eed) Support SNI in TCP mode (#805) +- [e95998a3](https://github.com/voyagermesh/apimachinery/commit/e95998a3) Handle empty renewed certificate (#1025) +- [1e17bf54](https://github.com/voyagermesh/apimachinery/commit/1e17bf54) Add haproxy stretch image (#1014) +- [6771df32](https://github.com/voyagermesh/apimachinery/commit/6771df32) Don't panic if admission options is nil (#1019) +- [dc342443](https://github.com/voyagermesh/apimachinery/commit/dc342443) Add Update***Status helpers (#1017) +- [10590411](https://github.com/voyagermesh/apimachinery/commit/10590411) Update client-go v7.0.0 (#1016) +- [7d8aa391](https://github.com/voyagermesh/apimachinery/commit/7d8aa391) Rename flag --analytics to --enable-analytics (#1013) +- [6416c01d](https://github.com/voyagermesh/apimachinery/commit/6416c01d) Revert "Remove voyager crds before uninstalling operator (#1010)" +- [eb2340b7](https://github.com/voyagermesh/apimachinery/commit/eb2340b7) Update workload api (#1011) +- [68a5742c](https://github.com/voyagermesh/apimachinery/commit/68a5742c) Issue wildcard certs using LE ACME v2 (#996) +- [a3264471](https://github.com/voyagermesh/apimachinery/commit/a3264471) Remove voyager crds before uninstalling operator (#1010) +- [eb378dcc](https://github.com/voyagermesh/apimachinery/commit/eb378dcc) Update private registry support in chart (#1009) +- [86a61029](https://github.com/voyagermesh/apimachinery/commit/86a61029) Support both Deployment and DaemonSet to run HAProxy pods (#999) +- [030d00eb](https://github.com/voyagermesh/apimachinery/commit/030d00eb) Rename --analytics -> --enable-analytics (#1008) +- [f2c282da](https://github.com/voyagermesh/apimachinery/commit/f2c282da) Print namespace where voyager is installed (#1007) +- [5832d549](https://github.com/voyagermesh/apimachinery/commit/5832d549) Change default HAProxy tag to 1.8.8-6.1.0 (#1006) +- [0f3d251c](https://github.com/voyagermesh/apimachinery/commit/0f3d251c) Improve installer (#1005) +- [cd4340d5](https://github.com/voyagermesh/apimachinery/commit/cd4340d5) Updated validator for merging empty-host with wildcard-host (#998) +- [5dd24267](https://github.com/voyagermesh/apimachinery/commit/5dd24267) Used appscode/oauth2_proxy (#995) +- [84d4a809](https://github.com/voyagermesh/apimachinery/commit/84d4a809) Add support for external-auth/oauth (#954) +- [02bb735a](https://github.com/voyagermesh/apimachinery/commit/02bb735a) Fix .gitignore file (#993) +- [5aee21c5](https://github.com/voyagermesh/apimachinery/commit/5aee21c5) Use HAProxy 1.8.8 (#992) +- [c67bf447](https://github.com/voyagermesh/apimachinery/commit/c67bf447) Use separate offshootLabels and offshootSelector (#991) +- [2f433c72](https://github.com/voyagermesh/apimachinery/commit/2f433c72) Use HAProxy 1.8.7 (#806) +- [eb123955](https://github.com/voyagermesh/apimachinery/commit/eb123955) Revendor DNSimple api (#988) +- [684fef50](https://github.com/voyagermesh/apimachinery/commit/684fef50) concourse configs (#946) +- [1ede9d2f](https://github.com/voyagermesh/apimachinery/commit/1ede9d2f) Add namespace to relevant kubernetes resources (#985) +- [775b05db](https://github.com/voyagermesh/apimachinery/commit/775b05db) Set version in swagger.json (#983) +- [b91417ab](https://github.com/voyagermesh/apimachinery/commit/b91417ab) Update chart readme (#982) +- [d8a9be41](https://github.com/voyagermesh/apimachinery/commit/d8a9be41) Update chart repository location (#981) +- [cb392a16](https://github.com/voyagermesh/apimachinery/commit/cb392a16) Support installing from local installer scripts (#979) +- [ef1c49ea](https://github.com/voyagermesh/apimachinery/commit/ef1c49ea) Generate correct schema for int-or-string type (#978) +- [7e888493](https://github.com/voyagermesh/apimachinery/commit/7e888493) Move swagger.json to apis pkg (#976) +- [f2d4fc06](https://github.com/voyagermesh/apimachinery/commit/f2d4fc06) Generate swagger.json (#975) +- [95dd4c79](https://github.com/voyagermesh/apimachinery/commit/95dd4c79) Add install package for voyager crds (#974) +- [5472b9dd](https://github.com/voyagermesh/apimachinery/commit/5472b9dd) Fix openapi spec for voyager crds (#973) +- [497c964a](https://github.com/voyagermesh/apimachinery/commit/497c964a) Adding support to Akamai FastDNS as challenge provider (#965) +- [c93f8945](https://github.com/voyagermesh/apimachinery/commit/c93f8945) Add metallb as a cloud provider option (#972) +- [ae3394c1](https://github.com/voyagermesh/apimachinery/commit/ae3394c1) Fix errors while updating existing CRD (#971) +- [d8dafe6f](https://github.com/voyagermesh/apimachinery/commit/d8dafe6f) Skip setting ListKind (#963) +- [f0ac9e30](https://github.com/voyagermesh/apimachinery/commit/f0ac9e30) Add CRD Validation (#962) +- [f585cf50](https://github.com/voyagermesh/apimachinery/commit/f585cf50) Hard to copy line (#960) +- [f1fd111a](https://github.com/voyagermesh/apimachinery/commit/f1fd111a) Add missing RBAC for service monitors in chart (#958) +- [02fac19a](https://github.com/voyagermesh/apimachinery/commit/02fac19a) Revendor dependencies (#957) +- [49600ee8](https://github.com/voyagermesh/apimachinery/commit/49600ee8) Fix install instruction for minikube 0.24.x (Kube 1.8.0) (#956) +- [37668930](https://github.com/voyagermesh/apimachinery/commit/37668930) Skip downloading onessl if already exists (#953) +- [eeec2d38](https://github.com/voyagermesh/apimachinery/commit/eeec2d38) Revendor jsonpatch library (#952) +- [9b1932a5](https://github.com/voyagermesh/apimachinery/commit/9b1932a5) Add front matter for changelog (#951) +- [67d27c90](https://github.com/voyagermesh/apimachinery/commit/67d27c90) Use appscode/kubernetes-webhook-util (#950) +- [defc2759](https://github.com/voyagermesh/apimachinery/commit/defc2759) Reorg objects deleted in uninstall command (#949) +- [bd3fe0e7](https://github.com/voyagermesh/apimachinery/commit/bd3fe0e7) Update basic-auth.md +- [e059b56b](https://github.com/voyagermesh/apimachinery/commit/e059b56b) Revendor admission api +- [5107b04f](https://github.com/voyagermesh/apimachinery/commit/5107b04f) Revendor webhook api (#944) +- [0839e8bd](https://github.com/voyagermesh/apimachinery/commit/0839e8bd) Mention how to handle wildcard domains in documentation (#938) +- [7f71a9af](https://github.com/voyagermesh/apimachinery/commit/7f71a9af) Add links for badges (#937) +- [9153adcb](https://github.com/voyagermesh/apimachinery/commit/9153adcb) Add Slack badge +- [d3e1c3a6](https://github.com/voyagermesh/apimachinery/commit/d3e1c3a6) Add coverage badge +- [90fa8590](https://github.com/voyagermesh/apimachinery/commit/90fa8590) Vendor test dependencies (#936) +- [d793a314](https://github.com/voyagermesh/apimachinery/commit/d793a314) Add badge for travis +- [5b737ea0](https://github.com/voyagermesh/apimachinery/commit/5b737ea0) Add travis.yaml (#935) +- [98dab0ea](https://github.com/voyagermesh/apimachinery/commit/98dab0ea) Update README.md +- [cc08bb38](https://github.com/voyagermesh/apimachinery/commit/cc08bb38) Add badge for docker pull stats (#934) +- [364c57fa](https://github.com/voyagermesh/apimachinery/commit/364c57fa) Update docs for 6.0.0-rc.3 (#932) +- [10d4740d](https://github.com/voyagermesh/apimachinery/commit/10d4740d) Document how to create internal LB in openstack (#931) +- [4f0ba8b0](https://github.com/voyagermesh/apimachinery/commit/4f0ba8b0) Various fixes and improved logging (#928) +- [0bb346be](https://github.com/voyagermesh/apimachinery/commit/0bb346be) Fix typo in README (#927) +- [0c69f201](https://github.com/voyagermesh/apimachinery/commit/0c69f201) Update install.md +- [f7f9d110](https://github.com/voyagermesh/apimachinery/commit/f7f9d110) Update overview.md (#926) +- [971839c0](https://github.com/voyagermesh/apimachinery/commit/971839c0) Update install.md +- [8fe9a8cc](https://github.com/voyagermesh/apimachinery/commit/8fe9a8cc) Delete Jenkinsfile +- [3b513a27](https://github.com/voyagermesh/apimachinery/commit/3b513a27) Simplify purge section +- [61a049ac](https://github.com/voyagermesh/apimachinery/commit/61a049ac) Show output after installation +- [5e14ae09](https://github.com/voyagermesh/apimachinery/commit/5e14ae09) Add "New to Voyager" header (#922) +- [96a19c9e](https://github.com/voyagermesh/apimachinery/commit/96a19c9e) Add --purge flag (#921) +- [15a9da3c](https://github.com/voyagermesh/apimachinery/commit/15a9da3c) Make headerRule, rewriteRule plural (#919) +- [d498da31](https://github.com/voyagermesh/apimachinery/commit/d498da31) Detect change when deletion timestamp is set for Ingress (#916) +- [d029ef64](https://github.com/voyagermesh/apimachinery/commit/d029ef64) Make it clear that installer is a single command (#915) +- [c6ced112](https://github.com/voyagermesh/apimachinery/commit/c6ced112) Update docs that --rbac is default on (#914) +- [2b690c1e](https://github.com/voyagermesh/apimachinery/commit/2b690c1e) Enable RBAC by default in installer (#913) +- [0a7f6ec5](https://github.com/voyagermesh/apimachinery/commit/0a7f6ec5) Update hostport.md +- [bac6e429](https://github.com/voyagermesh/apimachinery/commit/bac6e429) Fix installer (#912) +- [05e89cc1](https://github.com/voyagermesh/apimachinery/commit/05e89cc1) Prepare docs for 6.0.0-rc.2 (#911) +- [f97c9796](https://github.com/voyagermesh/apimachinery/commit/f97c9796) Update chart to match RBAC best practices for charts (#909) +- [ae7ad819](https://github.com/voyagermesh/apimachinery/commit/ae7ad819) Add checks to installer script (#908) +- [1419524d](https://github.com/voyagermesh/apimachinery/commit/1419524d) Cleanup admission webhook (#907) +- [31803453](https://github.com/voyagermesh/apimachinery/commit/31803453) Update changelog for 6.0.0-rc.1 (#905) +- [962f15a0](https://github.com/voyagermesh/apimachinery/commit/962f15a0) Fix front matter for changelog +- [87aeb761](https://github.com/voyagermesh/apimachinery/commit/87aeb761) Prepare docs for 6.0.0-rc.1 (#904) +- [94f711a3](https://github.com/voyagermesh/apimachinery/commit/94f711a3) Update links to latest release (#901) +- [686eec33](https://github.com/voyagermesh/apimachinery/commit/686eec33) Support --enable-admission-webhook=false (#900) +- [88a4747d](https://github.com/voyagermesh/apimachinery/commit/88a4747d) Sync chart to stable charts repo (#898) +- [edf15c3a](https://github.com/voyagermesh/apimachinery/commit/edf15c3a) Document Prometheus integration (#896) +- [19749243](https://github.com/voyagermesh/apimachinery/commit/19749243) Improve docs (#895) +- [4eb48e8a](https://github.com/voyagermesh/apimachinery/commit/4eb48e8a) Revendor haproxy exporter +- [dcbeb89a](https://github.com/voyagermesh/apimachinery/commit/dcbeb89a) Update haproxy exporter (#894) +- [0cae24fd](https://github.com/voyagermesh/apimachinery/commit/0cae24fd) Document user facing RBAC roles (#892) +- [9688320d](https://github.com/voyagermesh/apimachinery/commit/9688320d) Delete annotations-old.md +- [d0c81173](https://github.com/voyagermesh/apimachinery/commit/d0c81173) Update docs for supported annotations (#871) +- [d82251f8](https://github.com/voyagermesh/apimachinery/commit/d82251f8) Skip generating UpdateStatus method (#887) +- [44a9317b](https://github.com/voyagermesh/apimachinery/commit/44a9317b) Delete internal types (#886) +- [a832b2c9](https://github.com/voyagermesh/apimachinery/commit/a832b2c9) List CRD resources in user roles +- [063d58a1](https://github.com/voyagermesh/apimachinery/commit/063d58a1) Use official code generator scripts (#885) +- [9a4b652d](https://github.com/voyagermesh/apimachinery/commit/9a4b652d) Use HAProxy 1.7.10 (#884) +- [500b02e4](https://github.com/voyagermesh/apimachinery/commit/500b02e4) Move node selector to Ingress spec (#883) +- [c8f14f23](https://github.com/voyagermesh/apimachinery/commit/c8f14f23) Only check NodePort if provided (#880) +- [c92285a1](https://github.com/voyagermesh/apimachinery/commit/c92285a1) Create user facing aggregate roles (#879) +- [11b59013](https://github.com/voyagermesh/apimachinery/commit/11b59013) Use rbac/v1 api (#878) +- [4b2472a0](https://github.com/voyagermesh/apimachinery/commit/4b2472a0) Use github.com/pkg/errors +- [38874bea](https://github.com/voyagermesh/apimachinery/commit/38874bea) Use github.com/pkg/errors (#877) +- [131cf3ec](https://github.com/voyagermesh/apimachinery/commit/131cf3ec) Fix annotation +- [7e48299f](https://github.com/voyagermesh/apimachinery/commit/7e48299f) Update changelog +- [b1a4580d](https://github.com/voyagermesh/apimachinery/commit/b1a4580d) Update changelog +- [9799536d](https://github.com/voyagermesh/apimachinery/commit/9799536d) Prepare docs for 6.0.0-rc.0 +- [f9b537ee](https://github.com/voyagermesh/apimachinery/commit/f9b537ee) Use service port by default for LB type nodeport (#870) +- [e39d0ece](https://github.com/voyagermesh/apimachinery/commit/e39d0ece) Removed deprecated sticky annotation (#868) +- [5d591c4e](https://github.com/voyagermesh/apimachinery/commit/5d591c4e) Fix formatting +- [0cde2be4](https://github.com/voyagermesh/apimachinery/commit/0cde2be4) Drop support for Kube 1.7 from chart +- [9722bcd2](https://github.com/voyagermesh/apimachinery/commit/9722bcd2) Update chart readme +- [2239faaf](https://github.com/voyagermesh/apimachinery/commit/2239faaf) Fix remaining chart issues +- [0f8e5f73](https://github.com/voyagermesh/apimachinery/commit/0f8e5f73) Update charts to support api registration (#862) +- [7801f1fa](https://github.com/voyagermesh/apimachinery/commit/7801f1fa) Label all installer resources. +- [32e1746c](https://github.com/voyagermesh/apimachinery/commit/32e1746c) Document IAM permission required for AWS +- [7d36da02](https://github.com/voyagermesh/apimachinery/commit/7d36da02) Ignore error for missing backend services (#860) +- [3d8f3c6b](https://github.com/voyagermesh/apimachinery/commit/3d8f3c6b) Fixed e2e tests (#863) +- [c18f41ec](https://github.com/voyagermesh/apimachinery/commit/c18f41ec) Modify remaining ${} forms +- [1997f7c7](https://github.com/voyagermesh/apimachinery/commit/1997f7c7) Delete all voyager resources while uninstalling +- [b5009dea](https://github.com/voyagermesh/apimachinery/commit/b5009dea) Use binary operator for checking status of semver command +- [262e5f4d](https://github.com/voyagermesh/apimachinery/commit/262e5f4d) Modify remaining ${} forms +- [1a1455dd](https://github.com/voyagermesh/apimachinery/commit/1a1455dd) Use ${} form for onessl envsubst (#861) +- [43703b0b](https://github.com/voyagermesh/apimachinery/commit/43703b0b) Make operator run locally (#859) +- [e648caf1](https://github.com/voyagermesh/apimachinery/commit/e648caf1) Update comment regarding RBAC (#858) +- [c8ac28bc](https://github.com/voyagermesh/apimachinery/commit/c8ac28bc) Merge admission webhook and operator into one binary (#856) +- [7e11029b](https://github.com/voyagermesh/apimachinery/commit/7e11029b) Use envsubst from onessl +- [c79aeaa0](https://github.com/voyagermesh/apimachinery/commit/c79aeaa0) Update overview.md +- [cc44550f](https://github.com/voyagermesh/apimachinery/commit/cc44550f) Delete ingress-merging.md +- [c185e158](https://github.com/voyagermesh/apimachinery/commit/c185e158) Delete ingress-class.md +- [973b999b](https://github.com/voyagermesh/apimachinery/commit/973b999b) Update overview.md +- [f514660b](https://github.com/voyagermesh/apimachinery/commit/f514660b) Delete external-ip.md +- [5de5538a](https://github.com/voyagermesh/apimachinery/commit/5de5538a) Update loadbalancer.md +- [1f8f2cfd](https://github.com/voyagermesh/apimachinery/commit/1f8f2cfd) Install admission webhook for Kubernetes >=1.9.0 (#855) +- [3cfedd73](https://github.com/voyagermesh/apimachinery/commit/3cfedd73) Merge uninstall script into the voyager.sh script (#854) +- [eec0e222](https://github.com/voyagermesh/apimachinery/commit/eec0e222) Fixed panic during annotation parsing (#853) +- [ddff88ec](https://github.com/voyagermesh/apimachinery/commit/ddff88ec) Checked timeout and dns-resolver maps (#852) +- [feba0328](https://github.com/voyagermesh/apimachinery/commit/feba0328) Add missing RBAC for ServiceMonitor (#851) +- [c2f2303c](https://github.com/voyagermesh/apimachinery/commit/c2f2303c) Type check for annotations in validator (#844) +- [b81ecc6c](https://github.com/voyagermesh/apimachinery/commit/b81ecc6c) Delete gke.md +- [f292c8a7](https://github.com/voyagermesh/apimachinery/commit/f292c8a7) Document GKE permission options (#850) +- [a57d1654](https://github.com/voyagermesh/apimachinery/commit/a57d1654) Ignore --run-on-master flags for GKE (#849) +- [fcc16288](https://github.com/voyagermesh/apimachinery/commit/fcc16288) Change BackendRule to BackendRules (#845) +- [61aa607b](https://github.com/voyagermesh/apimachinery/commit/61aa607b) Checked for invalid backend service name (#839) +- [d7050f0a](https://github.com/voyagermesh/apimachinery/commit/d7050f0a) Copy generic-admission-server code into pkg (#835) +- [7fe38828](https://github.com/voyagermesh/apimachinery/commit/7fe38828) Update changelog +- [0389b2cd](https://github.com/voyagermesh/apimachinery/commit/0389b2cd) Merge commit '955bbbbaea3dee5158f9a32dcc7c058ff1f6804d' +- [82321c3e](https://github.com/voyagermesh/apimachinery/commit/82321c3e) Implement work-queue in operator (#803) +- [b1a92a97](https://github.com/voyagermesh/apimachinery/commit/b1a92a97) Update install.md +- [4b482046](https://github.com/voyagermesh/apimachinery/commit/4b482046) Update changelog +- [bb2fb1f8](https://github.com/voyagermesh/apimachinery/commit/bb2fb1f8) Use deterministic-suffix instead of random-suffix in backend name (#815) +- [a05d7ad0](https://github.com/voyagermesh/apimachinery/commit/a05d7ad0) Prepare docs for 6.0.0-alpha.0 (#830) +- [8fc5bcb9](https://github.com/voyagermesh/apimachinery/commit/8fc5bcb9) Updating kube-mon so service-monitor-endpoint-port is optional (#822) +- [59c8242f](https://github.com/voyagermesh/apimachinery/commit/59c8242f) Set --provider flag for installation instructions +- [61a9beb9](https://github.com/voyagermesh/apimachinery/commit/61a9beb9) Pass cloud provider to operator +- [8087acc0](https://github.com/voyagermesh/apimachinery/commit/8087acc0) Add ValidatingAdmissionWebhook for Voyager CRDs (#828) +- [16b44b6c](https://github.com/voyagermesh/apimachinery/commit/16b44b6c) Support private docker registry in installer (#829) +- [2f5da050](https://github.com/voyagermesh/apimachinery/commit/2f5da050) Use kubectl auth reconcile in installer script (#827) +- [e79034b9](https://github.com/voyagermesh/apimachinery/commit/e79034b9) Update changelog (#826) +- [bafb1c32](https://github.com/voyagermesh/apimachinery/commit/bafb1c32) Update client-go to 6.0.0 (#825) +- [0699da86](https://github.com/voyagermesh/apimachinery/commit/0699da86) Update copyright year to 2018 (#824) +- [a51e4de2](https://github.com/voyagermesh/apimachinery/commit/a51e4de2) Merge tls-mounter & kloader into haproxy-controller (#823) +- [efbd1984](https://github.com/voyagermesh/apimachinery/commit/efbd1984) Fix links in custom-templates.md +- [08bf7290](https://github.com/voyagermesh/apimachinery/commit/08bf7290) Update service.yaml +- [6aa8f96f](https://github.com/voyagermesh/apimachinery/commit/6aa8f96f) Improve concepts docs (#809) +- [032beb18](https://github.com/voyagermesh/apimachinery/commit/032beb18) Ignored not-found error for DNS resolver annotations (#812) +- [18ed58c4](https://github.com/voyagermesh/apimachinery/commit/18ed58c4) Add changelog (#801) +- [2fdfcec9](https://github.com/voyagermesh/apimachinery/commit/2fdfcec9) Add prometheus flags to command that uses it (#810) +- [8519448c](https://github.com/voyagermesh/apimachinery/commit/8519448c) Revendor coreos prometheus operator 0.16.0 (#808) +- [088e19f5](https://github.com/voyagermesh/apimachinery/commit/088e19f5) Revendor log wrapper (#804) +- [6b4a2c14](https://github.com/voyagermesh/apimachinery/commit/6b4a2c14) Fix links in chart (#802) +- [d3ae0b41](https://github.com/voyagermesh/apimachinery/commit/d3ae0b41) Fix doc links +- [44845bdc](https://github.com/voyagermesh/apimachinery/commit/44845bdc) Prepare docs for 5.0.0-rc.11 (#799) +- [0afab18d](https://github.com/voyagermesh/apimachinery/commit/0afab18d) Reorganize docs for hosting on product site (#798) +- [a2628612](https://github.com/voyagermesh/apimachinery/commit/a2628612) Update dead links (#794) +- [22020faf](https://github.com/voyagermesh/apimachinery/commit/22020faf) Detect client id from ENV (#795) +- [66257638](https://github.com/voyagermesh/apimachinery/commit/66257638) Support additional CORS headers (#793) +- [0530688c](https://github.com/voyagermesh/apimachinery/commit/0530688c) Support ingress.appscode.com key for all annotations (#792) +- [254c3e23](https://github.com/voyagermesh/apimachinery/commit/254c3e23) Fix panic in cert store +- [02a9148d](https://github.com/voyagermesh/apimachinery/commit/02a9148d) Use CertStore from kutil (#789) +- [5f479723](https://github.com/voyagermesh/apimachinery/commit/5f479723) Fix error message for ingress validator +- [40a6f431](https://github.com/voyagermesh/apimachinery/commit/40a6f431) Allow adding new domain to cert crd (#788) +- [141415a0](https://github.com/voyagermesh/apimachinery/commit/141415a0) Prepare docs for 5.0.0-rc.10 +- [7ef47374](https://github.com/voyagermesh/apimachinery/commit/7ef47374) Add front matter for docs 5.0.0-rc.9 (#784) +- [51911e13](https://github.com/voyagermesh/apimachinery/commit/51911e13) Generate host acl correctly for `*` host (#786) +- [c068180c](https://github.com/voyagermesh/apimachinery/commit/c068180c) Prepare docs for 5.0.0-rc.9 (#782) +- [95b9959d](https://github.com/voyagermesh/apimachinery/commit/95b9959d) Keep dependencies fixes to Kube 1.8.3 +- [c2be1108](https://github.com/voyagermesh/apimachinery/commit/c2be1108) Move Acme paths to top of path list (#781) +- [f043e440](https://github.com/voyagermesh/apimachinery/commit/f043e440) Use cmp methods from kutil (#777) +- [b2ba018b](https://github.com/voyagermesh/apimachinery/commit/b2ba018b) Remove TryPatch methods +- [3bf68313](https://github.com/voyagermesh/apimachinery/commit/3bf68313) Fix master node-selector +- [7c46fd1a](https://github.com/voyagermesh/apimachinery/commit/7c46fd1a) Show how to run haproxy pods on master (#776) +- [7760e959](https://github.com/voyagermesh/apimachinery/commit/7760e959) Use verb type to indicate mutation (#775) +- [7c4afe94](https://github.com/voyagermesh/apimachinery/commit/7c4afe94) Use kube-mon repo (#774) +- [2dfb17e2](https://github.com/voyagermesh/apimachinery/commit/2dfb17e2) Update docs for 5.0.0-rc.8 (#772) +- [0c5f4e5f](https://github.com/voyagermesh/apimachinery/commit/0c5f4e5f) Fix installation instructions in guides (#770) +- [60c7c312](https://github.com/voyagermesh/apimachinery/commit/60c7c312) Document how to use external-ip (#769) +- [7c273fa9](https://github.com/voyagermesh/apimachinery/commit/7c273fa9) Support wildcard in TLS searching (#768) +- [57c1f7cf](https://github.com/voyagermesh/apimachinery/commit/57c1f7cf) Merge monitor service ports correctly (#767) +- [baab567a](https://github.com/voyagermesh/apimachinery/commit/baab567a) Set ClientID for analytics (#765) +- [0c6c49d8](https://github.com/voyagermesh/apimachinery/commit/0c6c49d8) Rename tasks to guides (#764) +- [f20f81d8](https://github.com/voyagermesh/apimachinery/commit/f20f81d8) Remove cert features from readme +- [9081869a](https://github.com/voyagermesh/apimachinery/commit/9081869a) Revise ingress docs (#755) +- [f96fe708](https://github.com/voyagermesh/apimachinery/commit/f96fe708) Update stats-and-prometheus.md +- [ed66416c](https://github.com/voyagermesh/apimachinery/commit/ed66416c) Update stats-and-prometheus.md +- [c17574cd](https://github.com/voyagermesh/apimachinery/commit/c17574cd) Support --restrict-to-namespace flag +- [ddf6ebb4](https://github.com/voyagermesh/apimachinery/commit/ddf6ebb4) Prepare for 5.0.0-rc.7 release (#757) +- [e20ca104](https://github.com/voyagermesh/apimachinery/commit/e20ca104) Installer for custom template (#756) +- [a33e760e](https://github.com/voyagermesh/apimachinery/commit/a33e760e) Fix img & pod placement +- [8d1d11b8](https://github.com/voyagermesh/apimachinery/commit/8d1d11b8) Update pod-placement.md +- [9f0baa17](https://github.com/voyagermesh/apimachinery/commit/9f0baa17) Document updated cert manager (#581) +- [3680c2a5](https://github.com/voyagermesh/apimachinery/commit/3680c2a5) Document pod placement options (#753) +- [45110d7d](https://github.com/voyagermesh/apimachinery/commit/45110d7d) Change left_menu -> menu_name (#748) +- [e81e564e](https://github.com/voyagermesh/apimachinery/commit/e81e564e) Use RegisterCRDs from kutil (#743) +- [4862a52f](https://github.com/voyagermesh/apimachinery/commit/4862a52f) Use forked golang/x/oauth2 library (#741) +- [a1042f56](https://github.com/voyagermesh/apimachinery/commit/a1042f56) Merge commit '4dfd4b50ce4941fc64a6f283a5fc2fb31d007fdc' +- [91b64829](https://github.com/voyagermesh/apimachinery/commit/91b64829) Prepare docs for 5.0.0-rc.6 release (#739) +- [7e9910b2](https://github.com/voyagermesh/apimachinery/commit/7e9910b2) Revendor dependencies (#736) +- [a85be9bc](https://github.com/voyagermesh/apimachinery/commit/a85be9bc) Prepare docs for 5.0.0-rc.5 release (#735) +- [a0d208e1](https://github.com/voyagermesh/apimachinery/commit/a0d208e1) Add aliases for README file (#731) +- [19337935](https://github.com/voyagermesh/apimachinery/commit/19337935) Update front matter for docs (#730) +- [d3e655f7](https://github.com/voyagermesh/apimachinery/commit/d3e655f7) Add Docs Front Matter (#728) +- [df4f9f01](https://github.com/voyagermesh/apimachinery/commit/df4f9f01) Update run-on-master.yaml +- [b26a081e](https://github.com/voyagermesh/apimachinery/commit/b26a081e) Prepare docs for 5.0.0-rc.4 (#723) +- [3e37a9a6](https://github.com/voyagermesh/apimachinery/commit/3e37a9a6) Make voyager YAMLs installable from internet (#722) +- [069ac433](https://github.com/voyagermesh/apimachinery/commit/069ac433) Add front matter for voyager cli ref (#721) +- [b9ba3855](https://github.com/voyagermesh/apimachinery/commit/b9ba3855) Support rewrite-target annotation (#720) +- [7543eda0](https://github.com/voyagermesh/apimachinery/commit/7543eda0) Correctly handle updated ingress.class annotation (#715) +- [ac65b839](https://github.com/voyagermesh/apimachinery/commit/ac65b839) Update README.md +- [8e5c9abd](https://github.com/voyagermesh/apimachinery/commit/8e5c9abd) Perform ssl-redirect after matching host (#702) +- [67de7715](https://github.com/voyagermesh/apimachinery/commit/67de7715) Support aws or route53 as providers which read dns credential from ENV (#712) +- [2dd5a34f](https://github.com/voyagermesh/apimachinery/commit/2dd5a34f) Document azure support for load-balancer-ip (#708) +- [c5c67ff4](https://github.com/voyagermesh/apimachinery/commit/c5c67ff4) Revise StatsAccessor interface (#704) +- [aac42427](https://github.com/voyagermesh/apimachinery/commit/aac42427) Support direct scrapping via Prometheus (#703) +- [d58e9585](https://github.com/voyagermesh/apimachinery/commit/d58e9585) Merge pull request #649 from deuill/feature/frontend-bind-specific-address +- [249ca60a](https://github.com/voyagermesh/apimachinery/commit/249ca60a) Allow for binding HTTP or TCP ingress rules to specific addresses +- [883e4a79](https://github.com/voyagermesh/apimachinery/commit/883e4a79) Merge pull request #693 from drf/send-proxy +- [6db70341](https://github.com/voyagermesh/apimachinery/commit/6db70341) Apply annotation to service and add e2e tests +- [ebc2ddc5](https://github.com/voyagermesh/apimachinery/commit/ebc2ddc5) Add to backends the options for send-proxy variants for server. +- [82b18b8f](https://github.com/voyagermesh/apimachinery/commit/82b18b8f) Fix build (#700) +- [a050189d](https://github.com/voyagermesh/apimachinery/commit/a050189d) Support ExternalIPs (#690) +- [a876af52](https://github.com/voyagermesh/apimachinery/commit/a876af52) Enable server health check using service annotations and backend rules (#695) +- [d1c53533](https://github.com/voyagermesh/apimachinery/commit/d1c53533) Send copied object for transformation +- [173e961b](https://github.com/voyagermesh/apimachinery/commit/173e961b) Change pkg alias +- [116bf6e2](https://github.com/voyagermesh/apimachinery/commit/116bf6e2) Revendor kutil +- [0df6c52b](https://github.com/voyagermesh/apimachinery/commit/0df6c52b) Support PROXY protocol in test server (#699) +- [a05c434f](https://github.com/voyagermesh/apimachinery/commit/a05c434f) Update install.md +- [17b06c0d](https://github.com/voyagermesh/apimachinery/commit/17b06c0d) Update install.md +- [a9944c7f](https://github.com/voyagermesh/apimachinery/commit/a9944c7f) Update install.md +- [513ec609](https://github.com/voyagermesh/apimachinery/commit/513ec609) Update chart +- [a2527b0a](https://github.com/voyagermesh/apimachinery/commit/a2527b0a) Use DeepCopy with PATCH calls. (#685) +- [415626ad](https://github.com/voyagermesh/apimachinery/commit/415626ad) Update _helpers.tpl +- [299c6da8](https://github.com/voyagermesh/apimachinery/commit/299c6da8) Add nodeSelector to chart values +- [6ad95e56](https://github.com/voyagermesh/apimachinery/commit/6ad95e56) Move chart inside stable folder (#681) +- [d5373d15](https://github.com/voyagermesh/apimachinery/commit/d5373d15) Make chart namespaced (#680) +- [82ea7fe2](https://github.com/voyagermesh/apimachinery/commit/82ea7fe2) Add image/tag variables in chart (#677) +- [2db53f83](https://github.com/voyagermesh/apimachinery/commit/2db53f83) Prepare docs for 5.0.0-rc.3 (#675) +- [c77bd752](https://github.com/voyagermesh/apimachinery/commit/c77bd752) Add ImagePullSecrets in Ingress (#674) +- [df3f09eb](https://github.com/voyagermesh/apimachinery/commit/df3f09eb) Support openstack provider (#671) +- [a150b887](https://github.com/voyagermesh/apimachinery/commit/a150b887) Prepare docs for 5.0.0-rc.2 +- [30c2dafe](https://github.com/voyagermesh/apimachinery/commit/30c2dafe) Support GoDaddy DNS provier (#672) +- [55b6392a](https://github.com/voyagermesh/apimachinery/commit/55b6392a) Add `deletecollection` permission to voyager operator (#666) +- [f99a204c](https://github.com/voyagermesh/apimachinery/commit/f99a204c) Prepare docs for 5.0.0-rc.1 +- [037cabe7](https://github.com/voyagermesh/apimachinery/commit/037cabe7) Enable TCP mode in port 80 (#664) +- [15f7372e](https://github.com/voyagermesh/apimachinery/commit/15f7372e) Remove unused fields from LocalTypedReference (#662) +- [8a7dbd9c](https://github.com/voyagermesh/apimachinery/commit/8a7dbd9c) Update codegen.sh +- [b6899fb1](https://github.com/voyagermesh/apimachinery/commit/b6899fb1) Update codegen.sh +- [16b9a874](https://github.com/voyagermesh/apimachinery/commit/16b9a874) Use prometheus-operator v1 api/client (#658) +- [d2eecdcd](https://github.com/voyagermesh/apimachinery/commit/d2eecdcd) Generate openapi spec (#596) +- [38d50cdb](https://github.com/voyagermesh/apimachinery/commit/38d50cdb) Fix project name in header for auto generated files (#655) +- [1f095744](https://github.com/voyagermesh/apimachinery/commit/1f095744) Document the important of order of paths (#654) +- [84bb5abe](https://github.com/voyagermesh/apimachinery/commit/84bb5abe) Prepare docs for 5.0.0-rc.0 (#653) +- [97aa681d](https://github.com/voyagermesh/apimachinery/commit/97aa681d) Update prometheus-operator to implement DeepCopy() (#652) +- [4054b482](https://github.com/voyagermesh/apimachinery/commit/4054b482) Change `k8s.io/api/core/v1` pkg alias to core (#650) +- [4000f76b](https://github.com/voyagermesh/apimachinery/commit/4000f76b) Use client-go 5.x (#629) +- [9fdec22e](https://github.com/voyagermesh/apimachinery/commit/9fdec22e) Update developer-guide (#642) +- [17318855](https://github.com/voyagermesh/apimachinery/commit/17318855) Prepare docs for 4.0.0-rc.18 +- [9903618d](https://github.com/voyagermesh/apimachinery/commit/9903618d) Prepare docs for 4.0.0-rc.17 +- [6142a40f](https://github.com/voyagermesh/apimachinery/commit/6142a40f) Raise kubernetes/client-go QPS and Burst config (#641) +- [16886c7c](https://github.com/voyagermesh/apimachinery/commit/16886c7c) Prepare docs for 4.0.0-rc.16 +- [5312b3a0](https://github.com/voyagermesh/apimachinery/commit/5312b3a0) Implement `ingress.appscode.com/type: internal` (#636) +- [d6bc5027](https://github.com/voyagermesh/apimachinery/commit/d6bc5027) Prepare docs for 4.0.0-rc.15 +- [d3fd1200](https://github.com/voyagermesh/apimachinery/commit/d3fd1200) Update chart helper truncate length (#633) +- [0a669eed](https://github.com/voyagermesh/apimachinery/commit/0a669eed) Prepare docs for 4.0.0-rc.14 +- [0344575b](https://github.com/voyagermesh/apimachinery/commit/0344575b) Prepare docs for 4.0.0-rc.13 release +- [9490df01](https://github.com/voyagermesh/apimachinery/commit/9490df01) Replace reflect.Equal with github.com/google/go-cmp (#626) +- [538ba6d3](https://github.com/voyagermesh/apimachinery/commit/538ba6d3) Prepare docs for 4.0.0-rc.12 (#622) +- [e57c4131](https://github.com/voyagermesh/apimachinery/commit/e57c4131) Support TLS auth annotations (#621) +- [71b855fd](https://github.com/voyagermesh/apimachinery/commit/71b855fd) Support Basic auth in FrontendRules (#617) +- [041f20e5](https://github.com/voyagermesh/apimachinery/commit/041f20e5) Update hsts.md +- [39896579](https://github.com/voyagermesh/apimachinery/commit/39896579) Prepare docs for 4.0.0-rc.11 +- [3f30f051](https://github.com/voyagermesh/apimachinery/commit/3f30f051) Allow restricting voyager in a single namespace (#619) +- [cdc41868](https://github.com/voyagermesh/apimachinery/commit/cdc41868) Support ingress.kubernetes.io/ssl-redirect (#616) +- [93ddb8d7](https://github.com/voyagermesh/apimachinery/commit/93ddb8d7) Remove support for ingress.appscode.com/egress-points annotations (#615) +- [b947db1f](https://github.com/voyagermesh/apimachinery/commit/b947db1f) TLS auth (#606) +- [8a183e91](https://github.com/voyagermesh/apimachinery/commit/8a183e91) Move CRD definition to api folder. (#613) +- [7f1d2f1c](https://github.com/voyagermesh/apimachinery/commit/7f1d2f1c) Merge commit '3b48dbcfa7b6118fbf0a38ec4da9e284ac656137' +- [b9a7b0cd](https://github.com/voyagermesh/apimachinery/commit/b9a7b0cd) Clarify prometheus operator version (#612) +- [b1b621a1](https://github.com/voyagermesh/apimachinery/commit/b1b621a1) Prepare docs for 4.0.0-rc.10 release (#611) +- [33c5e01f](https://github.com/voyagermesh/apimachinery/commit/33c5e01f) Update prometheus-operator dependency to 0.13.0 (#609) +- [3b5be1a5](https://github.com/voyagermesh/apimachinery/commit/3b5be1a5) Update install.md +- [7bbc560b](https://github.com/voyagermesh/apimachinery/commit/7bbc560b) Document how to detect operator version (#607) +- [08daf7f9](https://github.com/voyagermesh/apimachinery/commit/08daf7f9) Secret Update reflection (#605) +- [d720b853](https://github.com/voyagermesh/apimachinery/commit/d720b853) Fix port in installer yaml +- [e6d67af5](https://github.com/voyagermesh/apimachinery/commit/e6d67af5) Merge commit '02768a825c3f5b0aa736804598dcf0ac729d6bf7' +- [c35585c7](https://github.com/voyagermesh/apimachinery/commit/c35585c7) Prepare 4.0.0-rc.9 docs +- [50a188b8](https://github.com/voyagermesh/apimachinery/commit/50a188b8) Fix validator so can specify either HTTP or TCP (#597) +- [2e64ccba](https://github.com/voyagermesh/apimachinery/commit/2e64ccba) Delete *.generated.go files for ugorji +- [92d1ba1f](https://github.com/voyagermesh/apimachinery/commit/92d1ba1f) Limit Connections (#571) +- [45f44a95](https://github.com/voyagermesh/apimachinery/commit/45f44a95) Prepare 4.0.0-rc.8 docs +- [ad639313](https://github.com/voyagermesh/apimachinery/commit/ad639313) Assume cert store as Secret, if Vault missing. (#592) +- [6e776552](https://github.com/voyagermesh/apimachinery/commit/6e776552) Fix Ingress validator secret ref checks. +- [a6299175](https://github.com/voyagermesh/apimachinery/commit/a6299175) Prepare docs for 4.0.0-rc.7 +- [e856629c](https://github.com/voyagermesh/apimachinery/commit/e856629c) Migrate Ingress before projection (#591) +- [faf415e9](https://github.com/voyagermesh/apimachinery/commit/faf415e9) Prepare docs for 4.0.0-rc.6 +- [85b6edfd](https://github.com/voyagermesh/apimachinery/commit/85b6edfd) Fix HTTP challenger (#589) +- [9cdf4cb9](https://github.com/voyagermesh/apimachinery/commit/9cdf4cb9) Prepare docs for 4.0.0-rc.5 (#585) +- [d8755a34](https://github.com/voyagermesh/apimachinery/commit/d8755a34) Add errofiles annotation (#574) +- [4cf0fb45](https://github.com/voyagermesh/apimachinery/commit/4cf0fb45) Add force-ssl-redirect (#563) +- [f84351ec](https://github.com/voyagermesh/apimachinery/commit/f84351ec) Update kutil dependency +- [16d00fe5](https://github.com/voyagermesh/apimachinery/commit/16d00fe5) Rename SecretRef to TLSRef (#580) +- [9b49aaf0](https://github.com/voyagermesh/apimachinery/commit/9b49aaf0) Add LocalTypedReference type (#579) +- [273fbd41](https://github.com/voyagermesh/apimachinery/commit/273fbd41) Update docs for 4.0.0-rc.4 (#576) +- [22413228](https://github.com/voyagermesh/apimachinery/commit/22413228) Fix NodePort mode in GKE. (#575) +- [80519a15](https://github.com/voyagermesh/apimachinery/commit/80519a15) Prepare docs for 4.0.0-rc.3 (#569) +- [5afabb13](https://github.com/voyagermesh/apimachinery/commit/5afabb13) Add PATCH permission and fix deployment RBAC spec (#568) +- [490c2c8c](https://github.com/voyagermesh/apimachinery/commit/490c2c8c) Revendor kutil +- [e09ddf15](https://github.com/voyagermesh/apimachinery/commit/e09ddf15) Set TypeMeta when creating object (#567) +- [faab334c](https://github.com/voyagermesh/apimachinery/commit/faab334c) Fix logging (#566) +- [ec811e80](https://github.com/voyagermesh/apimachinery/commit/ec811e80) Fix RBAC permissions for apps/v1beta1 Deployments (#565) +- [06119a65](https://github.com/voyagermesh/apimachinery/commit/06119a65) Prepare docs for 4.0.0-rc.2 (#561) +- [965e1d08](https://github.com/voyagermesh/apimachinery/commit/965e1d08) Docs for 4.0 - part 1 (#556) +- [bad7aabd](https://github.com/voyagermesh/apimachinery/commit/bad7aabd) Fix #522 (#557) +- [b7dd64ba](https://github.com/voyagermesh/apimachinery/commit/b7dd64ba) Use default empty string for ingressClass in chart +- [ae169c5d](https://github.com/voyagermesh/apimachinery/commit/ae169c5d) Add ingress class support for helm chart (#559) +- [4eb83f7b](https://github.com/voyagermesh/apimachinery/commit/4eb83f7b) Generate ugorji stuff (#553) +- [94f9c5f1](https://github.com/voyagermesh/apimachinery/commit/94f9c5f1) Add max-connections annotation (#546) +- [1e1e31ff](https://github.com/voyagermesh/apimachinery/commit/1e1e31ff) Add init-only mode for tls mounter (#548) +- [80ceb505](https://github.com/voyagermesh/apimachinery/commit/80ceb505) Fix deployment yaml +- [9b34f38f](https://github.com/voyagermesh/apimachinery/commit/9b34f38f) Update minimum required Kubernetes version for chart +- [5f37382b](https://github.com/voyagermesh/apimachinery/commit/5f37382b) Update roles to allow full access to TPR apigroup +- [72005677](https://github.com/voyagermesh/apimachinery/commit/72005677) Revendor lego to fix Azure dns provider +- [f32dc66c](https://github.com/voyagermesh/apimachinery/commit/f32dc66c) Update docs to CRD from TPR (#544) +- [c4e4daaa](https://github.com/voyagermesh/apimachinery/commit/c4e4daaa) Update weighted.md +- [7cac111b](https://github.com/voyagermesh/apimachinery/commit/7cac111b) Add whitelist-source-range annotation (#539) +- [2df6a312](https://github.com/voyagermesh/apimachinery/commit/2df6a312) Make SecretRef pointer again (#540) +- [96abed3e](https://github.com/voyagermesh/apimachinery/commit/96abed3e) Add links to user guide (#537) +- [63841b70](https://github.com/voyagermesh/apimachinery/commit/63841b70) Install voyager operator as critical addon (#536) +- [afcbc9ba](https://github.com/voyagermesh/apimachinery/commit/afcbc9ba) Update readme to point out CRD migration +- [8c1fd198](https://github.com/voyagermesh/apimachinery/commit/8c1fd198) Update docs for 4.0.0-rc.1 release +- [cfcf4687](https://github.com/voyagermesh/apimachinery/commit/cfcf4687) Use CreateOrPatch apis with RBAC. Also sets ownerReference. (#533) +- [2d493f31](https://github.com/voyagermesh/apimachinery/commit/2d493f31) Rewrap quote +- [e49e6e24](https://github.com/voyagermesh/apimachinery/commit/e49e6e24) Explain why tcp connections can't be whitelisted for AWS LoadBlancers (#514) +- [72389f40](https://github.com/voyagermesh/apimachinery/commit/72389f40) Update readme +- [a3a6b7ed](https://github.com/voyagermesh/apimachinery/commit/a3a6b7ed) Prepare docs for 4.0.0-rc.0 +- [e6dcf824](https://github.com/voyagermesh/apimachinery/commit/e6dcf824) Reimplement certificate controller (#506) +- [9443137d](https://github.com/voyagermesh/apimachinery/commit/9443137d) Fix install guide link. (#523) +- [0c3dc1f1](https://github.com/voyagermesh/apimachinery/commit/0c3dc1f1) Add HAProxy 1.7.9 (#522) +- [a481163d](https://github.com/voyagermesh/apimachinery/commit/a481163d) Add hsts-preload and hsts-include-subdomains annotations (#519) +- [40fe6cd2](https://github.com/voyagermesh/apimachinery/commit/40fe6cd2) Add hsts-max-age annotation (#515) +- [29994cf6](https://github.com/voyagermesh/apimachinery/commit/29994cf6) Revendor haproxy-exporter (#513) +- [91ca7007](https://github.com/voyagermesh/apimachinery/commit/91ca7007) Prepare docs for 3.2.1 patch release. +- [b411ca8b](https://github.com/voyagermesh/apimachinery/commit/b411ca8b) Update RBAC to allow watching nodes. (#510) +- [b4e6443e](https://github.com/voyagermesh/apimachinery/commit/b4e6443e) Clarify google cloud DNS credential type. +- [e1942267](https://github.com/voyagermesh/apimachinery/commit/e1942267) Fix DNS provider key for Google cloud DNS. (#509) +- [1b92e443](https://github.com/voyagermesh/apimachinery/commit/1b92e443) Update provider.md +- [2504c63a](https://github.com/voyagermesh/apimachinery/commit/2504c63a) Update default values for chart +- [9d04186f](https://github.com/voyagermesh/apimachinery/commit/9d04186f) Update README.md +- [5e51bede](https://github.com/voyagermesh/apimachinery/commit/5e51bede) Update provider.md +- [eb2e6e5b](https://github.com/voyagermesh/apimachinery/commit/eb2e6e5b) Update provider.md +- [5e0269c4](https://github.com/voyagermesh/apimachinery/commit/5e0269c4) Update create.md +- [569e1866](https://github.com/voyagermesh/apimachinery/commit/569e1866) Fix HTTP Provider Certificate (#502) +- [94354706](https://github.com/voyagermesh/apimachinery/commit/94354706) Add ssl passthrough support for annotations (#501) +- [abe2e4fc](https://github.com/voyagermesh/apimachinery/commit/abe2e4fc) Update chart readme. +- [15e3fd8f](https://github.com/voyagermesh/apimachinery/commit/15e3fd8f) Add Max Body size and CORS annotations (#500) +- [1e46272c](https://github.com/voyagermesh/apimachinery/commit/1e46272c) Change HAProxy image tag to 1.7.6-4.0.0-alpha.1 (#499) +- [0bebdca6](https://github.com/voyagermesh/apimachinery/commit/0bebdca6) Add support for `ingress.kubernetes.io/session-cookie-hash`. (#497) +- [fdc7271d](https://github.com/voyagermesh/apimachinery/commit/fdc7271d) Change return type to *apiv1.ObjectReference +- [1f72dc62](https://github.com/voyagermesh/apimachinery/commit/1f72dc62) Correct a small typo in the weighted doco (#495) +- [20fca9e7](https://github.com/voyagermesh/apimachinery/commit/20fca9e7) Add ObjectReference methods. (#494) +- [88871c5d](https://github.com/voyagermesh/apimachinery/commit/88871c5d) Add support for `ingress.kubernetes.io/affinity` and `ingress.kubernetes.io/session-cookie-name` (#493) +- [2af9b328](https://github.com/voyagermesh/apimachinery/commit/2af9b328) Update weighted.md +- [4409bcba](https://github.com/voyagermesh/apimachinery/commit/4409bcba) Update statefulset-pod.md +- [8bcb5ad1](https://github.com/voyagermesh/apimachinery/commit/8bcb5ad1) Remove operator service flag in chart +- [6201c997](https://github.com/voyagermesh/apimachinery/commit/6201c997) Update Chart RBAC format as recommended. (#490) +- [abce2dcd](https://github.com/voyagermesh/apimachinery/commit/abce2dcd) Use svc.Spec.ExternalTrafficPolicy (#489) +- [37974996](https://github.com/voyagermesh/apimachinery/commit/37974996) Use log & errors to appscode/go pkg (#487) +- [86e75811](https://github.com/voyagermesh/apimachinery/commit/86e75811) Use Deployment for HostPort mode (#486) +- [c646802f](https://github.com/voyagermesh/apimachinery/commit/c646802f) Replace TPR with CRD (#419) +- [4f4317eb](https://github.com/voyagermesh/apimachinery/commit/4f4317eb) Document noTLS feature (#485) +- [45801a03](https://github.com/voyagermesh/apimachinery/commit/45801a03) Update custom-http-port.md +- [0d5b8f8c](https://github.com/voyagermesh/apimachinery/commit/0d5b8f8c) Update custom-http-port.md +- [0ac62a18](https://github.com/voyagermesh/apimachinery/commit/0ac62a18) Update basic-auth.md +- [a8dc0aa4](https://github.com/voyagermesh/apimachinery/commit/a8dc0aa4) Prepare docs for 3.2.0 (#476) +- [3c53a624](https://github.com/voyagermesh/apimachinery/commit/3c53a624) Fix links in docs (#478) +- [ce4b53a1](https://github.com/voyagermesh/apimachinery/commit/ce4b53a1) Fix typo in doc (#479) +- [f21012eb](https://github.com/voyagermesh/apimachinery/commit/f21012eb) Enable accept-proxy (#475) +- [069653c6](https://github.com/voyagermesh/apimachinery/commit/069653c6) Fix NodePort mode for GCE (#472) +- [e0956d21](https://github.com/voyagermesh/apimachinery/commit/e0956d21) Correctly detect APISchema() (#471) +- [ed4b30fb](https://github.com/voyagermesh/apimachinery/commit/ed4b30fb) Implement Basic Auth for HTTP Ingresses (#470) +- [79b86894](https://github.com/voyagermesh/apimachinery/commit/79b86894) Fix typo. +- [d365c3ad](https://github.com/voyagermesh/apimachinery/commit/d365c3ad) Document how to use custom templates for HAProxy (#462) +- [cf870620](https://github.com/voyagermesh/apimachinery/commit/cf870620) Prepare docs for 3.2.0-rc.3 +- [804ce40b](https://github.com/voyagermesh/apimachinery/commit/804ce40b) Remove from log message. +- [0741c4c9](https://github.com/voyagermesh/apimachinery/commit/0741c4c9) Frontend rules (#467) +- [e262fd0e](https://github.com/voyagermesh/apimachinery/commit/e262fd0e) Fix NPE (#469) +- [0eec3609](https://github.com/voyagermesh/apimachinery/commit/0eec3609) Update NodePort docs (#466) +- [4b911ce6](https://github.com/voyagermesh/apimachinery/commit/4b911ce6) Modify certificate docs. (#463) +- [e93b44f6](https://github.com/voyagermesh/apimachinery/commit/e93b44f6) Apply Session affinity to Backend service (#460) +- [2b51d89e](https://github.com/voyagermesh/apimachinery/commit/2b51d89e) Prepare docs for 3.2.0-rc.2 +- [eecb812e](https://github.com/voyagermesh/apimachinery/commit/eecb812e) Support custom user templates (#454) +- [39625816](https://github.com/voyagermesh/apimachinery/commit/39625816) Add ingress.appscode.com/accept-proxy annotation (#452) +- [81f95919](https://github.com/voyagermesh/apimachinery/commit/81f95919) Increase informer resync period to 5 mins +- [d6687a35](https://github.com/voyagermesh/apimachinery/commit/d6687a35) Move analytics collector to root command (#450) +- [851fcc6f](https://github.com/voyagermesh/apimachinery/commit/851fcc6f) Add doc for node scaler +- [14d5de2e](https://github.com/voyagermesh/apimachinery/commit/14d5de2e) Fix doc link +- [d0570436](https://github.com/voyagermesh/apimachinery/commit/d0570436) Prepare docs for 3.2.0-rc.1 release +- [ae2dffd7](https://github.com/voyagermesh/apimachinery/commit/ae2dffd7) Add kubectl commands. +- [f541ff5a](https://github.com/voyagermesh/apimachinery/commit/f541ff5a) Show how to use kubectl. (#442) +- [d2917093](https://github.com/voyagermesh/apimachinery/commit/d2917093) Add Docs (#438) +- [6d86d5ce](https://github.com/voyagermesh/apimachinery/commit/6d86d5ce) Update annotations.go +- [008ac3f4](https://github.com/voyagermesh/apimachinery/commit/008ac3f4) Fix secret name (#433) +- [2467bc41](https://github.com/voyagermesh/apimachinery/commit/2467bc41) Fix secret name (#434) +- [7968825b](https://github.com/voyagermesh/apimachinery/commit/7968825b) Fix load-balancer-ip annotation (#431) +- [7882f349](https://github.com/voyagermesh/apimachinery/commit/7882f349) Minor fix (#432) +- [6946dbaa](https://github.com/voyagermesh/apimachinery/commit/6946dbaa) Prepare docs for 3.2.0-rc.0 (#426) +- [9dba00d0](https://github.com/voyagermesh/apimachinery/commit/9dba00d0) Restart HAProxy in case of renew certificates (#427) +- [5b5828be](https://github.com/voyagermesh/apimachinery/commit/5b5828be) Fix Host:Port Matching issue. (#425) +- [efc944c4](https://github.com/voyagermesh/apimachinery/commit/efc944c4) Fix cert (#410) +- [dd766ffa](https://github.com/voyagermesh/apimachinery/commit/dd766ffa) Fix Ingress validation error (#421) +- [63a645f4](https://github.com/voyagermesh/apimachinery/commit/63a645f4) Add Patch API Supports (#412) +- [a006a31e](https://github.com/voyagermesh/apimachinery/commit/a006a31e) Support TLS Backend (#408) +- [9b0c48e3](https://github.com/voyagermesh/apimachinery/commit/9b0c48e3) Update client-go to 3.0.0 from 3.0.0-beta (#406) +- [ac9af6bb](https://github.com/voyagermesh/apimachinery/commit/ac9af6bb) Improve test suite (#394) +- [33b5eb58](https://github.com/voyagermesh/apimachinery/commit/33b5eb58) Allow custom options (#403) +- [89bcc0ea](https://github.com/voyagermesh/apimachinery/commit/89bcc0ea) Update Azure SDK to 10.2.1-beta (#402) +- [47315e9a](https://github.com/voyagermesh/apimachinery/commit/47315e9a) Remove links to forum (#395) +- [35a533e2](https://github.com/voyagermesh/apimachinery/commit/35a533e2) Revise ingress controller update operations (#385) +- [4ee3e069](https://github.com/voyagermesh/apimachinery/commit/4ee3e069) Split ingress controller into micro controllers (#383) +- [744a9072](https://github.com/voyagermesh/apimachinery/commit/744a9072) Update aws sdk to v1.6.10 (#381) +- [d2a9773d](https://github.com/voyagermesh/apimachinery/commit/d2a9773d) Fix GO reportcard issues. (#379) +- [d13952d9](https://github.com/voyagermesh/apimachinery/commit/d13952d9) Update Ingress spec (#317) +- [c3f31ac8](https://github.com/voyagermesh/apimachinery/commit/c3f31ac8) Prepare docs for 3.1.4 release +- [b1e9721d](https://github.com/voyagermesh/apimachinery/commit/b1e9721d) Detect port changes correctly. (#376) +- [d19fc429](https://github.com/voyagermesh/apimachinery/commit/d19fc429) Revendor lego to detect DNS zone correctly. (#375) +- [d7236bc1](https://github.com/voyagermesh/apimachinery/commit/d7236bc1) Revendor lego (#373) +- [590ff358](https://github.com/voyagermesh/apimachinery/commit/590ff358) Merge commit '818765fcb70c5413ba8cf0f6797d54b84746b8e3' +- [d9f9c07e](https://github.com/voyagermesh/apimachinery/commit/d9f9c07e) Define timeouts in sec explicitly (#361) +- [34a26553](https://github.com/voyagermesh/apimachinery/commit/34a26553) DisableAutoGenTag for cobra commands. +- [264f954f](https://github.com/voyagermesh/apimachinery/commit/264f954f) Prepare docs for 3.1.3 release. +- [86d35db2](https://github.com/voyagermesh/apimachinery/commit/86d35db2) Fix test docs for ginkgo tests (#352) +- [dbc2dc97](https://github.com/voyagermesh/apimachinery/commit/dbc2dc97) Converting E2E tests to use Ginkgo (#334) +- [5432253c](https://github.com/voyagermesh/apimachinery/commit/5432253c) Add DCO (#351) +- [7966ae20](https://github.com/voyagermesh/apimachinery/commit/7966ae20) Allow secret create/update for Voyager cert controller. (#338) +- [5fa441ee](https://github.com/voyagermesh/apimachinery/commit/5fa441ee) Prepare docs for 3.1.2 release. (#336) +- [249503e1](https://github.com/voyagermesh/apimachinery/commit/249503e1) Use Lets Encrypt Prod URL as default (#335) +- [e9095ada](https://github.com/voyagermesh/apimachinery/commit/e9095ada) Document --rbac flag +- [ba596c69](https://github.com/voyagermesh/apimachinery/commit/ba596c69) Add install scripts (#332) +- [fea391b0](https://github.com/voyagermesh/apimachinery/commit/fea391b0) Prepare docs for 3.1.1 release. (#328) +- [1132d72c](https://github.com/voyagermesh/apimachinery/commit/1132d72c) Add cloud provider specific install scripts. (#327) +- [1f1219f5](https://github.com/voyagermesh/apimachinery/commit/1f1219f5) Disable critical addon feature (#326) +- [4a948c06](https://github.com/voyagermesh/apimachinery/commit/4a948c06) Fix typos (#325) +- [f93c66d2](https://github.com/voyagermesh/apimachinery/commit/f93c66d2) Delete deployments.yaml +- [b8813e2f](https://github.com/voyagermesh/apimachinery/commit/b8813e2f) Fix various chart issues (#324) +- [c6cac099](https://github.com/voyagermesh/apimachinery/commit/c6cac099) Correctly detect changed ports (#322) +- [3888103c](https://github.com/voyagermesh/apimachinery/commit/3888103c) Update voyager-without-rbac.yaml +- [92dad49a](https://github.com/voyagermesh/apimachinery/commit/92dad49a) Add Custom timeout docs (#323) +- [de8af4b8](https://github.com/voyagermesh/apimachinery/commit/de8af4b8) Revendor dependencies. (#312) +- [671bf699](https://github.com/voyagermesh/apimachinery/commit/671bf699) Use ```console instead of ```sh syntax highlighting (#309) +- [d754aae8](https://github.com/voyagermesh/apimachinery/commit/d754aae8) Fix Adding SSL to an existing ingress does not mount certs #260 (#306) +- [c0bfc3b9](https://github.com/voyagermesh/apimachinery/commit/c0bfc3b9) Fix External Service redirect Issue (#304) +- [1fc5ba46](https://github.com/voyagermesh/apimachinery/commit/1fc5ba46) Install Voyager as critical addon (#301) +- [949f6e39](https://github.com/voyagermesh/apimachinery/commit/949f6e39) Add ingress label to exported metrics (#300) +- [33899f8b](https://github.com/voyagermesh/apimachinery/commit/33899f8b) Build voyager binary using alpine docker image +- [f87b680b](https://github.com/voyagermesh/apimachinery/commit/f87b680b) Merge commit 'c085ca2be9aa3c81c386ecee3ec40d10be095496' +- [af75b4e4](https://github.com/voyagermesh/apimachinery/commit/af75b4e4) Prepare docs for 3.1.0 release +- [7971b073](https://github.com/voyagermesh/apimachinery/commit/7971b073) Fix RBAC configs (#295) +- [9e07bf47](https://github.com/voyagermesh/apimachinery/commit/9e07bf47) Record events against TPR (#290) +- [9a64773e](https://github.com/voyagermesh/apimachinery/commit/9a64773e) Rename deployment.yaml to deployments.yaml +- [17283e4e](https://github.com/voyagermesh/apimachinery/commit/17283e4e) Bring back deployment.yaml for old version of docs. +- [67c97d85](https://github.com/voyagermesh/apimachinery/commit/67c97d85) Make node selectors options for HostPort (#293) +- [b8259b16](https://github.com/voyagermesh/apimachinery/commit/b8259b16) Delete kube lister classes. (#291) +- [85d371f1](https://github.com/voyagermesh/apimachinery/commit/85d371f1) Create RBAC roles for Voyager during installation (#256) +- [05dd1bdb](https://github.com/voyagermesh/apimachinery/commit/05dd1bdb) Add configure option for Haproxy default timeout. (#286) +- [fa53e0d1](https://github.com/voyagermesh/apimachinery/commit/fa53e0d1) Support setting resource for pods (#289) +- [adc3baeb](https://github.com/voyagermesh/apimachinery/commit/adc3baeb) Add tpr constants (#288) +- [b44b3083](https://github.com/voyagermesh/apimachinery/commit/b44b3083) Remove event framework (#282) +- [6d2665db](https://github.com/voyagermesh/apimachinery/commit/6d2665db) Apply app:voyager label to operator and TPRs. +- [4b113880](https://github.com/voyagermesh/apimachinery/commit/4b113880) Revendor dependencies +- [4e6e158c](https://github.com/voyagermesh/apimachinery/commit/4e6e158c) Merge commit 'cbe1cc465f506dcfbfe359f78e60a2d607121e25' +- [d9beae11](https://github.com/voyagermesh/apimachinery/commit/d9beae11) fix the contribution guild link (#274) (#275) +- [c205cec9](https://github.com/voyagermesh/apimachinery/commit/c205cec9) Clarify that the SSL listener should only be on 443. (#269) +- [f966a084](https://github.com/voyagermesh/apimachinery/commit/f966a084) Remove reference to kubed +- [b227b727](https://github.com/voyagermesh/apimachinery/commit/b227b727) Add command reference docs (#265) +- [42433f45](https://github.com/voyagermesh/apimachinery/commit/42433f45) Remove broken links +- [a67f5ff0](https://github.com/voyagermesh/apimachinery/commit/a67f5ff0) Update dev docs. (#264) +- [91318842](https://github.com/voyagermesh/apimachinery/commit/91318842) Update major chart version per review. +- [e44b36f2](https://github.com/voyagermesh/apimachinery/commit/e44b36f2) Add appVersion to Chart +- [55607b6b](https://github.com/voyagermesh/apimachinery/commit/55607b6b) Support non-default service account with offshoot pods (#255) +- [94fbc85b](https://github.com/voyagermesh/apimachinery/commit/94fbc85b) Point to HPA example on readme pages. (#254) +- [f178a880](https://github.com/voyagermesh/apimachinery/commit/f178a880) Add example with hpa (#253) +- [fef2d214](https://github.com/voyagermesh/apimachinery/commit/fef2d214) Fix default stats service name +- [682b1465](https://github.com/voyagermesh/apimachinery/commit/682b1465) Update docs. +- [672c57df](https://github.com/voyagermesh/apimachinery/commit/672c57df) Update docs +- [f3235900](https://github.com/voyagermesh/apimachinery/commit/f3235900) Small typo fix (CLOUDE_CONFIG => CLOUD_CONFIG) (#251) +- [5cde5131](https://github.com/voyagermesh/apimachinery/commit/5cde5131) Compute scrape URL correctly +- [9380262c](https://github.com/voyagermesh/apimachinery/commit/9380262c) Fix exporter. +- [5620d1f8](https://github.com/voyagermesh/apimachinery/commit/5620d1f8) Update stats-and-prometheus.md +- [3d8b34dc](https://github.com/voyagermesh/apimachinery/commit/3d8b34dc) Apply labels to stats service for service monitor (#248) +- [53135c9a](https://github.com/voyagermesh/apimachinery/commit/53135c9a) Use stats service port name in ServiceMonitor (#246) +- [ddb36644](https://github.com/voyagermesh/apimachinery/commit/ddb36644) Initialize kube clients in exporter +- [36601cc8](https://github.com/voyagermesh/apimachinery/commit/36601cc8) Note test-ns policy (#243) +- [8ccb4af4](https://github.com/voyagermesh/apimachinery/commit/8ccb4af4) Update README.md +- [7a3e7ddc](https://github.com/voyagermesh/apimachinery/commit/7a3e7ddc) Update README.md +- [3b7d72b8](https://github.com/voyagermesh/apimachinery/commit/3b7d72b8) Update README.md +- [30b3ceb8](https://github.com/voyagermesh/apimachinery/commit/30b3ceb8) Fix testframework for aws and update docs. (#237) +- [461177fc](https://github.com/voyagermesh/apimachinery/commit/461177fc) Add acs provider (#236) +- [f12684f3](https://github.com/voyagermesh/apimachinery/commit/f12684f3) Revert "Change api group to networking.appscode.com (#232)" +- [523baa35](https://github.com/voyagermesh/apimachinery/commit/523baa35) Document http->https redirect with AWS cert manager (#235) +- [60293992](https://github.com/voyagermesh/apimachinery/commit/60293992) Update chart readme for cloud config (#234) +- [517d7920](https://github.com/voyagermesh/apimachinery/commit/517d7920) Make cloud config configurable. (#233) +- [2457effc](https://github.com/voyagermesh/apimachinery/commit/2457effc) Change api group to networking.appscode.com (#232) +- [b5efcfb2](https://github.com/voyagermesh/apimachinery/commit/b5efcfb2) Fix labels import +- [417025f6](https://github.com/voyagermesh/apimachinery/commit/417025f6) Update ***Getter interfaces match form (#231) +- [fb2aff62](https://github.com/voyagermesh/apimachinery/commit/fb2aff62) Delete pods & services matching old labels before starting operator (#230) +- [e51d86c6](https://github.com/voyagermesh/apimachinery/commit/e51d86c6) Add dns-resolver-check-health annotation to for ExternalName service (#226) +- [763a98f7](https://github.com/voyagermesh/apimachinery/commit/763a98f7) Use PreRun & PostRun to send analytics. (#224) +- [6325a235](https://github.com/voyagermesh/apimachinery/commit/6325a235) Update metric endpoints documentation (#223) +- [447bc444](https://github.com/voyagermesh/apimachinery/commit/447bc444) Fix port used for exposing metrics from operator. (#222) +- [d79658dd](https://github.com/voyagermesh/apimachinery/commit/d79658dd) Minor cleanup of monitoring annotations. +- [3d63fbb3](https://github.com/voyagermesh/apimachinery/commit/3d63fbb3) Mount cloud config in chart (#220) +- [2c000e80](https://github.com/voyagermesh/apimachinery/commit/2c000e80) Add cloud config file (#218) +- [ef1f7469](https://github.com/voyagermesh/apimachinery/commit/ef1f7469) Fix bugs (#217) +- [6fa35a33](https://github.com/voyagermesh/apimachinery/commit/6fa35a33) Rename exporter port to targetPort (#216) +- [42d157c7](https://github.com/voyagermesh/apimachinery/commit/42d157c7) Use Voyager group name correctly. (#215) +- [6b2f2f9d](https://github.com/voyagermesh/apimachinery/commit/6b2f2f9d) Merge commit '5a7c63280d7aa7b8c68d8b867dd0efabf73d92c6' +- [4eb5196c](https://github.com/voyagermesh/apimachinery/commit/4eb5196c) Update TPR api groups. +- [f059bfa4](https://github.com/voyagermesh/apimachinery/commit/f059bfa4) Update default ports (#214) +- [dc4afe28](https://github.com/voyagermesh/apimachinery/commit/dc4afe28) Update docs for service monitor integration (#213) +- [dfb86722](https://github.com/voyagermesh/apimachinery/commit/dfb86722) Change api group to voyager.appscode.com (#209) +- [05890bac](https://github.com/voyagermesh/apimachinery/commit/05890bac) Update docs to point to 3.0.0 (#208) +- [dadab06f](https://github.com/voyagermesh/apimachinery/commit/dadab06f) Stop creating stats service. (#207) +- [3c81a2fe](https://github.com/voyagermesh/apimachinery/commit/3c81a2fe) Automatically create ServiceMonitor for built-in exporter (#203) +- [c7c9dea7](https://github.com/voyagermesh/apimachinery/commit/c7c9dea7) Update labels applied to HAProxy pods & services. (#206) +- [66d3ea84](https://github.com/voyagermesh/apimachinery/commit/66d3ea84) Update NOTES.txt +- [1381ec53](https://github.com/voyagermesh/apimachinery/commit/1381ec53) Remove deprecated Daemon type. (#205) +- [9311d860](https://github.com/voyagermesh/apimachinery/commit/9311d860) Fix client-go fake import (#204) +- [b0d19bf1](https://github.com/voyagermesh/apimachinery/commit/b0d19bf1) Update README.md +- [d5821a5c](https://github.com/voyagermesh/apimachinery/commit/d5821a5c) Update release.md +- [84910d55](https://github.com/voyagermesh/apimachinery/commit/84910d55) Change default HAProxy image to 1.7.6-3.0.0 (#202) +- [f8b2b145](https://github.com/voyagermesh/apimachinery/commit/f8b2b145) Merge commit 'b074920b5d2073bac14cb7f41e8671a897072c13' +- [d435d068](https://github.com/voyagermesh/apimachinery/commit/d435d068) Merge commit '59330c227bd4165b3ced36dcbbb93f206f0760ad' +- [3f0587a3](https://github.com/voyagermesh/apimachinery/commit/3f0587a3) Track operator version (#200) +- [399cbef4](https://github.com/voyagermesh/apimachinery/commit/399cbef4) Update README.md +- [573416b9](https://github.com/voyagermesh/apimachinery/commit/573416b9) Add voyager export command (#199) +- [5f9f6656](https://github.com/voyagermesh/apimachinery/commit/5f9f6656) Update docs. (#198) +- [b87121eb](https://github.com/voyagermesh/apimachinery/commit/b87121eb) Use client-go (#196) +- [8c554673](https://github.com/voyagermesh/apimachinery/commit/8c554673) Update pod selectors +- [b52ba35c](https://github.com/voyagermesh/apimachinery/commit/b52ba35c) Update selector for operator deployment. +- [fc03bb58](https://github.com/voyagermesh/apimachinery/commit/fc03bb58) Update selector for svc +- [93b156fe](https://github.com/voyagermesh/apimachinery/commit/93b156fe) Delete keep-source-ip.md +- [d43ecd84](https://github.com/voyagermesh/apimachinery/commit/d43ecd84) Fix chart path (#191) +- [3fbfafd0](https://github.com/voyagermesh/apimachinery/commit/3fbfafd0) Document flag options (#190) +- [ae10f2b7](https://github.com/voyagermesh/apimachinery/commit/ae10f2b7) Docs for 1.5.6 (#183) +- [fe69629e](https://github.com/voyagermesh/apimachinery/commit/fe69629e) Create deployments.yaml +- [23abc80b](https://github.com/voyagermesh/apimachinery/commit/23abc80b) Add various comments in chart review +- [dd54134b](https://github.com/voyagermesh/apimachinery/commit/dd54134b) Merge commit 'dc0c1dee9a4f2c9faf611eac3456de866e4402f0' +- [b89e4161](https://github.com/voyagermesh/apimachinery/commit/b89e4161) ./hack/make.py test_deploy to generate deployments yaml (#184) +- [b7cf38da](https://github.com/voyagermesh/apimachinery/commit/b7cf38da) Install voyager operator in kube-system namespace +- [bc6a37ca](https://github.com/voyagermesh/apimachinery/commit/bc6a37ca) Merge commit '1dfe6c897bf277f03152548a968b2681c1d7413f' +- [abcbdf65](https://github.com/voyagermesh/apimachinery/commit/abcbdf65) Set metrics port to :8080 by default (#180) +- [14f65bc4](https://github.com/voyagermesh/apimachinery/commit/14f65bc4) Stop redefining -h flag for run command. (#179) +- [48d797fb](https://github.com/voyagermesh/apimachinery/commit/48d797fb) Prepare docs for 1.5.6 (#178) +- [97852bd6](https://github.com/voyagermesh/apimachinery/commit/97852bd6) Remove cluster name flag (#177) +- [ae7126b0](https://github.com/voyagermesh/apimachinery/commit/ae7126b0) Bring back NewIngressFromEngress +- [f9c824d2](https://github.com/voyagermesh/apimachinery/commit/f9c824d2) Remove --cluster-name flag (#176) +- [ae0ad436](https://github.com/voyagermesh/apimachinery/commit/ae0ad436) Remove persist annotation (#174) +- [6c61b9cb](https://github.com/voyagermesh/apimachinery/commit/6c61b9cb) Add support for ServiceTypeExternalName (#167) +- [a198b2a7](https://github.com/voyagermesh/apimachinery/commit/a198b2a7) Add nil check before reading options from Ingress annotations. (#170) +- [be337629](https://github.com/voyagermesh/apimachinery/commit/be337629) Update default HAProxy image to 1.7.5-1.5.6 +- [5bb6e829](https://github.com/voyagermesh/apimachinery/commit/5bb6e829) Various cleanup of annotations (#169) +- [e94cb9b9](https://github.com/voyagermesh/apimachinery/commit/e94cb9b9) Fix chart readme +- [515182e6](https://github.com/voyagermesh/apimachinery/commit/515182e6) Combine annotation keys ip & persist into persist (#162) +- [a025889f](https://github.com/voyagermesh/apimachinery/commit/a025889f) Make nodeSelector annotation applicable for any more. (#160) +- [ffb68e6a](https://github.com/voyagermesh/apimachinery/commit/ffb68e6a) Explain versioning policy. (#158) +- [8cd3d89e](https://github.com/voyagermesh/apimachinery/commit/8cd3d89e) Apply various comments from official charts team (#157) +- [677a713c](https://github.com/voyagermesh/apimachinery/commit/677a713c) Expose monitoring port in chart and deploy yamls (#156) +- [a065ffbf](https://github.com/voyagermesh/apimachinery/commit/a065ffbf) Move component docs directly under user-guide (#155) +- [b96418ab](https://github.com/voyagermesh/apimachinery/commit/b96418ab) Expose Operator & HAProxy metrics (#153) +- [16e7e01a](https://github.com/voyagermesh/apimachinery/commit/16e7e01a) Reorganize code to add run sub command (#152) +- [0ed1cbdc](https://github.com/voyagermesh/apimachinery/commit/0ed1cbdc) Correctly import forked cloudprovider package. +- [948fcba5](https://github.com/voyagermesh/apimachinery/commit/948fcba5) Add forked cloudprovider in third_party package (#151) +- [1094e855](https://github.com/voyagermesh/apimachinery/commit/1094e855) Ensure loadbalancer resource (#145) +- [a090de04](https://github.com/voyagermesh/apimachinery/commit/a090de04) Add LoadBalancerSourceRange to ingress Spec (#148) +- [0a15147f](https://github.com/voyagermesh/apimachinery/commit/0a15147f) Use ci-space cluster for testing (#131) +- [1f5006d4](https://github.com/voyagermesh/apimachinery/commit/1f5006d4) Remove dependency on k8s-addons (#141) +- [00618724](https://github.com/voyagermesh/apimachinery/commit/00618724) Revendor analytics library. +- [c3e05ae1](https://github.com/voyagermesh/apimachinery/commit/c3e05ae1) Fix stats behavior (#130) +- [b6b8d43d](https://github.com/voyagermesh/apimachinery/commit/b6b8d43d) Add Jenkinsfile (#118) +- [91fa3b10](https://github.com/voyagermesh/apimachinery/commit/91fa3b10) tcp.md: fix typo/port mismatch (#119) +- [bb6062b6](https://github.com/voyagermesh/apimachinery/commit/bb6062b6) Update README.md +- [9acaac3b](https://github.com/voyagermesh/apimachinery/commit/9acaac3b) Update README.md +- [5a22acdc](https://github.com/voyagermesh/apimachinery/commit/5a22acdc) Prepare docs for 1.5.5 release +- [37897a03](https://github.com/voyagermesh/apimachinery/commit/37897a03) Update top readme file (#112) +- [b506bbea](https://github.com/voyagermesh/apimachinery/commit/b506bbea) Update docs (#111) +- [0e4058f3](https://github.com/voyagermesh/apimachinery/commit/0e4058f3) NodePort Tests, Annotations Documentation (#110) +- [ddd44d7f](https://github.com/voyagermesh/apimachinery/commit/ddd44d7f) Add `go` and `glide` commands (#101) +- [599d61cd](https://github.com/voyagermesh/apimachinery/commit/599d61cd) Update docs to build HAProxy 1.7.5 (#92) +- [5b487b89](https://github.com/voyagermesh/apimachinery/commit/5b487b89) Update svc instead of Deleting svc (#87) +- [9931f0bc](https://github.com/voyagermesh/apimachinery/commit/9931f0bc) Rename Daemon type to HostPort (#84) +- [1f7957b9](https://github.com/voyagermesh/apimachinery/commit/1f7957b9) Update 1.5.5 Documentation (#82) +- [ce1d854b](https://github.com/voyagermesh/apimachinery/commit/ce1d854b) Feature: backend rules (#80) +- [85411591](https://github.com/voyagermesh/apimachinery/commit/85411591) Use appscode/errors v2 (#81) +- [3dc3133d](https://github.com/voyagermesh/apimachinery/commit/3dc3133d) Use https git url for our lego fork +- [f29012c8](https://github.com/voyagermesh/apimachinery/commit/f29012c8) Prepare docs for 1.5.4 release +- [7904d56f](https://github.com/voyagermesh/apimachinery/commit/7904d56f) Rename operator deployment to voyager-operator (#71) +- [f634810b](https://github.com/voyagermesh/apimachinery/commit/f634810b) Revendor dependencies. +- [5c727011](https://github.com/voyagermesh/apimachinery/commit/5c727011) Update statefulset-pod.md +- [e7611829](https://github.com/voyagermesh/apimachinery/commit/e7611829) Prepare docs for 1.5.3 release (#67) +- [a91fb2ae](https://github.com/voyagermesh/apimachinery/commit/a91fb2ae) Ingress Hostname based traffic forwarding (#66) +- [9eeb2e4f](https://github.com/voyagermesh/apimachinery/commit/9eeb2e4f) Update README.md +- [d88c87c9](https://github.com/voyagermesh/apimachinery/commit/d88c87c9) Spelling correction for SNI +- [eec1acf8](https://github.com/voyagermesh/apimachinery/commit/eec1acf8) Update docs to new chart location (#60) +- [402df8ef](https://github.com/voyagermesh/apimachinery/commit/402df8ef) Move chart to root directory (#59) +- [d4572d13](https://github.com/voyagermesh/apimachinery/commit/d4572d13) Add service to deployment.yaml (#58) +- [77206b2b](https://github.com/voyagermesh/apimachinery/commit/77206b2b) Prepare docs for version 1.5.2 (#57) +- [615510a1](https://github.com/voyagermesh/apimachinery/commit/615510a1) Add service in voyager (#56) +- [63b1ef7e](https://github.com/voyagermesh/apimachinery/commit/63b1ef7e) Various fixes to voyager chart (#55) +- [c4d8dc47](https://github.com/voyagermesh/apimachinery/commit/c4d8dc47) Merge commit '462dda880bd3d562e8f6af28b22a636cdb153fa2' +- [e96c537a](https://github.com/voyagermesh/apimachinery/commit/e96c537a) Use unversioned time. (#54) +- [c357345b](https://github.com/voyagermesh/apimachinery/commit/c357345b) Document http provider for LE (#53) +- [413f43f2](https://github.com/voyagermesh/apimachinery/commit/413f43f2) Update docs on DNS provider (#51) +- [c50600c2](https://github.com/voyagermesh/apimachinery/commit/c50600c2) Merge remote-tracking branch 'origin/master' +- [4b359cfe](https://github.com/voyagermesh/apimachinery/commit/4b359cfe) Initial voyager chart (#43) +- [2958606f](https://github.com/voyagermesh/apimachinery/commit/2958606f) Update README.md +- [fca91a3b](https://github.com/voyagermesh/apimachinery/commit/fca91a3b) Prepare docs for version 1.5.1 +- [348c7a6d](https://github.com/voyagermesh/apimachinery/commit/348c7a6d) Enable GKE (#45) +- [bb9a9e33](https://github.com/voyagermesh/apimachinery/commit/bb9a9e33) Add link to HAProxy +- [0d483c7d](https://github.com/voyagermesh/apimachinery/commit/0d483c7d) Fix Typos (#42) +- [0e1fef21](https://github.com/voyagermesh/apimachinery/commit/0e1fef21) update README (#41) +- [6dec948a](https://github.com/voyagermesh/apimachinery/commit/6dec948a) Explain how to update kloader version +- [3f34f16b](https://github.com/voyagermesh/apimachinery/commit/3f34f16b) Move release.md to developer guide. +- [0b40b621](https://github.com/voyagermesh/apimachinery/commit/0b40b621) Add doc explaining release process. (#37) +- [cf5ac0e1](https://github.com/voyagermesh/apimachinery/commit/cf5ac0e1) Add ALPN options to TCP Backends (#35) +- [9149e8f5](https://github.com/voyagermesh/apimachinery/commit/9149e8f5) Update docs with voyager options and test modes (#34) +- [6aebb45a](https://github.com/voyagermesh/apimachinery/commit/6aebb45a) Adding Tests - Unit and E2E (#12) +- [879cb88c](https://github.com/voyagermesh/apimachinery/commit/879cb88c) Update doc fix for #19 (#26) +- [33931ac5](https://github.com/voyagermesh/apimachinery/commit/33931ac5) Revendor dependencies. (#23) +- [7064a6f2](https://github.com/voyagermesh/apimachinery/commit/7064a6f2) Update README.md +- [997c0dcf](https://github.com/voyagermesh/apimachinery/commit/997c0dcf) Add example on front page. (#16) +- [c2f95947](https://github.com/voyagermesh/apimachinery/commit/c2f95947) README typos (#15) +- [5577a442](https://github.com/voyagermesh/apimachinery/commit/5577a442) Add links to HAProxy Docker image +- [1f707212](https://github.com/voyagermesh/apimachinery/commit/1f707212) Add links of subsections (#11) +- [34ae9069](https://github.com/voyagermesh/apimachinery/commit/34ae9069) Refactor docs (#10) +- [9fde741f](https://github.com/voyagermesh/apimachinery/commit/9fde741f) Rename voyager to Voyager (#8) +- [ed6549ac](https://github.com/voyagermesh/apimachinery/commit/ed6549ac) Use appscode/lego +- [8429c4a4](https://github.com/voyagermesh/apimachinery/commit/8429c4a4) Add acknowledgements (#7) +- [3a9bef41](https://github.com/voyagermesh/apimachinery/commit/3a9bef41) Documentation for voyager (#6) +- [3e44b51b](https://github.com/voyagermesh/apimachinery/commit/3e44b51b) Revendor to remove DeleteOptions +- [29be74c8](https://github.com/voyagermesh/apimachinery/commit/29be74c8) Revendor k8s-addons +- [91e70955](https://github.com/voyagermesh/apimachinery/commit/91e70955) Set default HAproxy to 1.7.2-k8s +- [909ea91f](https://github.com/voyagermesh/apimachinery/commit/909ea91f) Revendor. +- [94def797](https://github.com/voyagermesh/apimachinery/commit/94def797) Update README.md +- [42f5a55e](https://github.com/voyagermesh/apimachinery/commit/42f5a55e) Update README.md +- [5c7818df](https://github.com/voyagermesh/apimachinery/commit/5c7818df) Use our forked appscode/lego lib. +- [fade0840](https://github.com/voyagermesh/apimachinery/commit/fade0840) Use release-1.5 for k8s-addons. +- [9783125f](https://github.com/voyagermesh/apimachinery/commit/9783125f) Revendor to update Vultr/Lego lib. +- [edf2d572](https://github.com/voyagermesh/apimachinery/commit/edf2d572) Properly version k8s cloud providers. +- [b3dd4288](https://github.com/voyagermesh/apimachinery/commit/b3dd4288) Use appscode/go repo. +- [02b202b7](https://github.com/voyagermesh/apimachinery/commit/02b202b7) Merge commit '0e3394e0d8ebec7afdcc06940203811032d62344' as 'hack/libbuild' +- [f26d15dd](https://github.com/voyagermesh/apimachinery/commit/f26d15dd) Initial public release + + + +## [voyagermesh/haproxy-ingress](https://github.com/voyagermesh/haproxy-ingress) + +### [v13.0.0](https://github.com/voyagermesh/haproxy-ingress/releases/tag/v13.0.0) + +- [591bae2f](https://github.com/voyagermesh/haproxy-ingress/commit/591bae2f) Prepare for release v13.0.0 (#6) +- [e53fdb56](https://github.com/voyagermesh/haproxy-ingress/commit/e53fdb56) Fix linter error +- [bbc79553](https://github.com/voyagermesh/haproxy-ingress/commit/bbc79553) Fix CI +- [564e11cb](https://github.com/voyagermesh/haproxy-ingress/commit/564e11cb) Disable grpc test as breaks build +- [cea1bf26](https://github.com/voyagermesh/haproxy-ingress/commit/cea1bf26) Remove --enable-validating-webhook flag +- [9d8e9803](https://github.com/voyagermesh/haproxy-ingress/commit/9d8e9803) Add v1beta1 <-> v1 crd converter (#5) +- [5601bd36](https://github.com/voyagermesh/haproxy-ingress/commit/5601bd36) Fix lua script loading (#4) +- [dee97c55](https://github.com/voyagermesh/haproxy-ingress/commit/dee97c55) Log everything to stdout and notice to stderr +- [c8a1394d](https://github.com/voyagermesh/haproxy-ingress/commit/c8a1394d) Enable built-in prometheus exporter +- [c331002a](https://github.com/voyagermesh/haproxy-ingress/commit/c331002a) Implement voyager.appscode.com/v1 api operator (#3) +- [222e6506](https://github.com/voyagermesh/haproxy-ingress/commit/222e6506) Update repository config (#2) +- [110e198e](https://github.com/voyagermesh/haproxy-ingress/commit/110e198e) Stop using api versions removed in k8s 1.22 (#1) +- [56e15b13](https://github.com/voyagermesh/haproxy-ingress/commit/56e15b13) Use voyager namespace +- [87d89fab](https://github.com/voyagermesh/haproxy-ingress/commit/87d89fab) Update audit lib +- [a9dd2d72](https://github.com/voyagermesh/haproxy-ingress/commit/a9dd2d72) Send audit events if analytics enabled (#1588) +- [af1ec7b8](https://github.com/voyagermesh/haproxy-ingress/commit/af1ec7b8) Publish audit events +- [a527eb62](https://github.com/voyagermesh/haproxy-ingress/commit/a527eb62) Use klog/v2 +- [d3756322](https://github.com/voyagermesh/haproxy-ingress/commit/d3756322) Bring back grpc test +- [44fe45ea](https://github.com/voyagermesh/haproxy-ingress/commit/44fe45ea) Update Kubernetes toolchain to v1.21.0 (#1585) +- [e43f1b78](https://github.com/voyagermesh/haproxy-ingress/commit/e43f1b78) Update readme +- [31e87b8e](https://github.com/voyagermesh/haproxy-ingress/commit/31e87b8e) Disable building arm64 images +- [404a6bcd](https://github.com/voyagermesh/haproxy-ingress/commit/404a6bcd) Update Dockerfile +- [4ae3aa3f](https://github.com/voyagermesh/haproxy-ingress/commit/4ae3aa3f) Fix build +- [ae95cdb8](https://github.com/voyagermesh/haproxy-ingress/commit/ae95cdb8) Build voyager binary before building haproxy image +- [8531ae0e](https://github.com/voyagermesh/haproxy-ingress/commit/8531ae0e) Fix socklog download url +- [c2f9a803](https://github.com/voyagermesh/haproxy-ingress/commit/c2f9a803) Publish images to GH registry +- [c2b1a5ce](https://github.com/voyagermesh/haproxy-ingress/commit/c2b1a5ce) Add license verifier (#1583) +- [94562494](https://github.com/voyagermesh/haproxy-ingress/commit/94562494) Update repository config (#1584) +- [ea232e45](https://github.com/voyagermesh/haproxy-ingress/commit/ea232e45) Update license header (#1582) +- [0bdded99](https://github.com/voyagermesh/haproxy-ingress/commit/0bdded99) Avoid issuing cert two times at creation (#1535) +- [b356066d](https://github.com/voyagermesh/haproxy-ingress/commit/b356066d) fix CheckCertificates goroutine to run an infinite loop again (#1531) +- [7bd08749](https://github.com/voyagermesh/haproxy-ingress/commit/7bd08749) Avoid concurrent haproxy starts or reloads (#1547) +- [5b423374](https://github.com/voyagermesh/haproxy-ingress/commit/5b423374) Update kind in CI +- [6e9cced0](https://github.com/voyagermesh/haproxy-ingress/commit/6e9cced0) Update README.md +- [c7f806e6](https://github.com/voyagermesh/haproxy-ingress/commit/c7f806e6) Update repository config (#1579) +- [e13dc9e7](https://github.com/voyagermesh/haproxy-ingress/commit/e13dc9e7) Update repository config (#1577) +- [a4705e66](https://github.com/voyagermesh/haproxy-ingress/commit/a4705e66) Update Kubernetes v1.18.9 dependencies (#1576) +- [e937812b](https://github.com/voyagermesh/haproxy-ingress/commit/e937812b) Update repository config (#1574) +- [8a9f92cc](https://github.com/voyagermesh/haproxy-ingress/commit/8a9f92cc) Update repository config (#1573) +- [08872d74](https://github.com/voyagermesh/haproxy-ingress/commit/08872d74) Update Kubernetes v1.18.9 dependencies (#1572) +- [01ad6049](https://github.com/voyagermesh/haproxy-ingress/commit/01ad6049) Update Kubernetes v1.18.9 dependencies (#1571) +- [89e39d57](https://github.com/voyagermesh/haproxy-ingress/commit/89e39d57) Update repository config (#1570) +- [777e2c53](https://github.com/voyagermesh/haproxy-ingress/commit/777e2c53) Update repository config (#1569) +- [6fcc2041](https://github.com/voyagermesh/haproxy-ingress/commit/6fcc2041) Update Kubernetes v1.18.9 dependencies (#1568) +- [120682e7](https://github.com/voyagermesh/haproxy-ingress/commit/120682e7) Update Kubernetes v1.18.9 dependencies (#1567) +- [23193a8e](https://github.com/voyagermesh/haproxy-ingress/commit/23193a8e) Update Kubernetes v1.18.9 dependencies (#1566) +- [23553514](https://github.com/voyagermesh/haproxy-ingress/commit/23553514) Update Kubernetes v1.18.9 dependencies (#1565) +- [924fced5](https://github.com/voyagermesh/haproxy-ingress/commit/924fced5) Update Kubernetes v1.18.9 dependencies (#1564) +- [8e0dc012](https://github.com/voyagermesh/haproxy-ingress/commit/8e0dc012) Update Kubernetes v1.18.9 dependencies (#1563) +- [e54d2622](https://github.com/voyagermesh/haproxy-ingress/commit/e54d2622) Update repository config (#1561) +- [ba9e4aa7](https://github.com/voyagermesh/haproxy-ingress/commit/ba9e4aa7) Update Kubernetes v1.18.9 dependencies (#1559) +- [285dac84](https://github.com/voyagermesh/haproxy-ingress/commit/285dac84) Update Kubernetes v1.18.9 dependencies (#1558) +- [f5e66408](https://github.com/voyagermesh/haproxy-ingress/commit/f5e66408) Update Kubernetes v1.18.9 dependencies (#1557) +- [a51e4aa4](https://github.com/voyagermesh/haproxy-ingress/commit/a51e4aa4) Update Kubernetes v1.18.9 dependencies (#1555) +- [1afdf274](https://github.com/voyagermesh/haproxy-ingress/commit/1afdf274) Update Kubernetes v1.18.9 dependencies (#1554) +- [93e691ea](https://github.com/voyagermesh/haproxy-ingress/commit/93e691ea) Update Kubernetes v1.18.9 dependencies (#1552) +- [3d1c72d4](https://github.com/voyagermesh/haproxy-ingress/commit/3d1c72d4) Update Kubernetes v1.18.9 dependencies (#1549) +- [d48b88ed](https://github.com/voyagermesh/haproxy-ingress/commit/d48b88ed) Update repository config (#1551) +- [603868db](https://github.com/voyagermesh/haproxy-ingress/commit/603868db) Update repository config (#1550) +- [869936e4](https://github.com/voyagermesh/haproxy-ingress/commit/869936e4) Update repository config (#1548) +- [ac8399a7](https://github.com/voyagermesh/haproxy-ingress/commit/ac8399a7) Update Kubernetes v1.18.9 dependencies (#1546) +- [3889306c](https://github.com/voyagermesh/haproxy-ingress/commit/3889306c) Update Kubernetes v1.18.9 dependencies (#1544) +- [2256661e](https://github.com/voyagermesh/haproxy-ingress/commit/2256661e) Update repository config (#1543) +- [ed48d8f0](https://github.com/voyagermesh/haproxy-ingress/commit/ed48d8f0) Update repository config (#1542) +- [c1d898d3](https://github.com/voyagermesh/haproxy-ingress/commit/c1d898d3) Update Kubernetes v1.18.9 dependencies (#1541) +- [7764aac4](https://github.com/voyagermesh/haproxy-ingress/commit/7764aac4) Update Kubernetes v1.18.3 dependencies (#1540) +- [f9f1732e](https://github.com/voyagermesh/haproxy-ingress/commit/f9f1732e) Update Kubernetes v1.18.3 dependencies (#1539) +- [b3f18ffd](https://github.com/voyagermesh/haproxy-ingress/commit/b3f18ffd) Update Kubernetes v1.18.3 dependencies (#1536) +- [c92a0f15](https://github.com/voyagermesh/haproxy-ingress/commit/c92a0f15) Update Kubernetes v1.18.3 dependencies (#1534) +- [aa701496](https://github.com/voyagermesh/haproxy-ingress/commit/aa701496) Update Kubernetes v1.18.3 dependencies (#1532) +- [cacef44c](https://github.com/voyagermesh/haproxy-ingress/commit/cacef44c) Update Kubernetes v1.18.3 dependencies (#1529) +- [f9248332](https://github.com/voyagermesh/haproxy-ingress/commit/f9248332) Update Kubernetes v1.18.3 dependencies (#1528) +- [fd3aa94c](https://github.com/voyagermesh/haproxy-ingress/commit/fd3aa94c) Update Kubernetes v1.18.3 dependencies (#1527) +- [85915ab8](https://github.com/voyagermesh/haproxy-ingress/commit/85915ab8) Update Kubernetes v1.18.3 dependencies (#1524) +- [dd3cc508](https://github.com/voyagermesh/haproxy-ingress/commit/dd3cc508) Update to Kubernetes v1.18.3 (#1521) +- [cbd7d3e2](https://github.com/voyagermesh/haproxy-ingress/commit/cbd7d3e2) Update to Kubernetes v1.18.3 (#1520) +- [d00a4c72](https://github.com/voyagermesh/haproxy-ingress/commit/d00a4c72) Update to Kubernetes v1.18.3 (#1519) +- [c6bbe8cc](https://github.com/voyagermesh/haproxy-ingress/commit/c6bbe8cc) Update to Kubernetes v1.18.3 (#1518) +- [dcc94c7e](https://github.com/voyagermesh/haproxy-ingress/commit/dcc94c7e) Update ci.yml +- [d9c38862](https://github.com/voyagermesh/haproxy-ingress/commit/d9c38862) Update update-release-tracker.sh +- [5c74ad2b](https://github.com/voyagermesh/haproxy-ingress/commit/5c74ad2b) Update update-release-tracker.sh +- [21b03bbb](https://github.com/voyagermesh/haproxy-ingress/commit/21b03bbb) Add script to update release tracker on pr merge (#1516) +- [57503de5](https://github.com/voyagermesh/haproxy-ingress/commit/57503de5) Update .kodiak.toml +- [dbdb1e5c](https://github.com/voyagermesh/haproxy-ingress/commit/dbdb1e5c) Update to Kubernetes v1.18.3 (#1514) +- [1abc059e](https://github.com/voyagermesh/haproxy-ingress/commit/1abc059e) Update to Kubernetes v1.18.3 +- [7a61045e](https://github.com/voyagermesh/haproxy-ingress/commit/7a61045e) Create .kodiak.toml +- [4081635b](https://github.com/voyagermesh/haproxy-ingress/commit/4081635b) Prepare release v13.0.0-beta.1 (#1512) +- [9b527d39](https://github.com/voyagermesh/haproxy-ingress/commit/9b527d39) Generate both v1beta1 and v1 CRD YAML (#1511) +- [bb85c779](https://github.com/voyagermesh/haproxy-ingress/commit/bb85c779) Prepare release v13.0.0-beta.0 (#1510) +- [c19455cf](https://github.com/voyagermesh/haproxy-ingress/commit/c19455cf) Update to Kubernetes v1.18.3 (#1509) +- [9e750a13](https://github.com/voyagermesh/haproxy-ingress/commit/9e750a13) Update README.md +- [f89dc723](https://github.com/voyagermesh/haproxy-ingress/commit/f89dc723) Merge pull request #1507 from smarkets/fix-readme-docs-links +- [6ed3c7eb](https://github.com/voyagermesh/haproxy-ingress/commit/6ed3c7eb) Fix README.md documentation links + + + +## [voyagermesh/installer](https://github.com/voyagermesh/installer) + +### [v2021.09.15](https://github.com/voyagermesh/installer/releases/tag/v2021.09.15) + +- [12faf00](https://github.com/voyagermesh/installer/commit/12faf00) Prepare for release v2021.09.15 (#86) +- [d5e9b00](https://github.com/voyagermesh/installer/commit/d5e9b00) Fix import-crds script +- [62ba7dc](https://github.com/voyagermesh/installer/commit/62ba7dc) Make validating webhooks required +- [65f05df](https://github.com/voyagermesh/installer/commit/65f05df) Mark /convert path as always allow (#85) +- [0f5d596](https://github.com/voyagermesh/installer/commit/0f5d596) Use HAProxy 2.4.4 (#84) +- [d53eea0](https://github.com/voyagermesh/installer/commit/d53eea0) Update repository config (#83) +- [8fb004a](https://github.com/voyagermesh/installer/commit/8fb004a) Delete voyager.appscode.com_certificates.yaml +- [d966bb5](https://github.com/voyagermesh/installer/commit/d966bb5) Update repository config (#82) +- [323b08d](https://github.com/voyagermesh/installer/commit/323b08d) Update repository config (#81) +- [876aef6](https://github.com/voyagermesh/installer/commit/876aef6) Update chart description +- [a423445](https://github.com/voyagermesh/installer/commit/a423445) Update dependencies (#80) +- [05ede0e](https://github.com/voyagermesh/installer/commit/05ede0e) Minimum required k8s version to 1.19 +- [d06bf03](https://github.com/voyagermesh/installer/commit/d06bf03) Switch to AppsCode Community License +- [8ea7f8a](https://github.com/voyagermesh/installer/commit/8ea7f8a) Update README.md +- [e44a1c6](https://github.com/voyagermesh/installer/commit/e44a1c6) Stop using api versions removed in k8s 1.22 (#79) +- [a9822dd](https://github.com/voyagermesh/installer/commit/a9822dd) Add registryFQDN support (#78) +- [7db2985](https://github.com/voyagermesh/installer/commit/7db2985) Use Kubernetes v1.21.0 toolchain (#77) +- [2920e4c](https://github.com/voyagermesh/installer/commit/2920e4c) Use Kubernetes v1.21.0 toolchain (#76) +- [8d822e2](https://github.com/voyagermesh/installer/commit/8d822e2) Use Kubernetes v1.21.0 toolchain (#75) +- [88bbfdc](https://github.com/voyagermesh/installer/commit/88bbfdc) Use Kubernetes v1.21.0 toolchain (#74) +- [bf96a48](https://github.com/voyagermesh/installer/commit/bf96a48) Update Kubernetes toolchain to v1.21.0 (#73) +- [589ed14](https://github.com/voyagermesh/installer/commit/589ed14) Use apiregistration.k8s.io/v1 +- [7996020](https://github.com/voyagermesh/installer/commit/7996020) Prepare for release v2021.04.24-rc.0 (#72) +- [37b8597](https://github.com/voyagermesh/installer/commit/37b8597) Prepare for release v2021.04.20-beta.2 (#71) +- [3a33e2e](https://github.com/voyagermesh/installer/commit/3a33e2e) Update Makefile +- [9c19ed2](https://github.com/voyagermesh/installer/commit/9c19ed2) Add voyager-crds chart (#66) +- [252f14a](https://github.com/voyagermesh/installer/commit/252f14a) Add cleaner skip option for YAML installation process (#65) +- [d737d14](https://github.com/voyagermesh/installer/commit/d737d14) Remove protobuf code generator (#64) +- [6fdc1ca](https://github.com/voyagermesh/installer/commit/6fdc1ca) Update repository config (#63) +- [81c5627](https://github.com/voyagermesh/installer/commit/81c5627) Update Kubernetes v1.18.9 dependencies (#62) +- [acf9453](https://github.com/voyagermesh/installer/commit/acf9453) Update repository config (#61) +- [9de2b98](https://github.com/voyagermesh/installer/commit/9de2b98) Update Kubernetes v1.18.9 dependencies (#60) +- [d2f88f6](https://github.com/voyagermesh/installer/commit/d2f88f6) Update repository config (#59) +- [2f97c0d](https://github.com/voyagermesh/installer/commit/2f97c0d) Update repository config (#58) +- [a17dcd6](https://github.com/voyagermesh/installer/commit/a17dcd6) Update Kubernetes v1.18.9 dependencies (#57) +- [1b34287](https://github.com/voyagermesh/installer/commit/1b34287) Update Kubernetes v1.18.9 dependencies (#56) +- [ce2fa80](https://github.com/voyagermesh/installer/commit/ce2fa80) Update Kubernetes v1.18.9 dependencies (#55) +- [3b9833f](https://github.com/voyagermesh/installer/commit/3b9833f) Update Kubernetes v1.18.9 dependencies (#54) +- [05c1ae4](https://github.com/voyagermesh/installer/commit/05c1ae4) Update repository config (#53) +- [9d5c567](https://github.com/voyagermesh/installer/commit/9d5c567) Update repository config (#52) +- [68974d1](https://github.com/voyagermesh/installer/commit/68974d1) Update Kubernetes v1.18.9 dependencies (#51) +- [1834e92](https://github.com/voyagermesh/installer/commit/1834e92) Update repository config (#50) +- [88837e9](https://github.com/voyagermesh/installer/commit/88837e9) Update Kubernetes v1.18.9 dependencies (#49) +- [fd8dd22](https://github.com/voyagermesh/installer/commit/fd8dd22) Update Kubernetes v1.18.9 dependencies (#48) +- [e5acaa0](https://github.com/voyagermesh/installer/commit/e5acaa0) Update Kubernetes v1.18.9 dependencies (#47) +- [b8f929a](https://github.com/voyagermesh/installer/commit/b8f929a) Update Kubernetes v1.18.9 dependencies (#46) +- [0d18bec](https://github.com/voyagermesh/installer/commit/0d18bec) Update Kubernetes v1.18.9 dependencies (#44) +- [eba9d11](https://github.com/voyagermesh/installer/commit/eba9d11) Update Kubernetes v1.18.9 dependencies (#43) +- [3e27095](https://github.com/voyagermesh/installer/commit/3e27095) Update repository config (#42) +- [877c601](https://github.com/voyagermesh/installer/commit/877c601) Update Kubernetes v1.18.9 dependencies (#41) +- [5cd3131](https://github.com/voyagermesh/installer/commit/5cd3131) Update repository config (#40) +- [14e8b27](https://github.com/voyagermesh/installer/commit/14e8b27) Update Kubernetes v1.18.9 dependencies (#39) +- [f219188](https://github.com/voyagermesh/installer/commit/f219188) Update Kubernetes v1.18.9 dependencies (#38) +- [58f432a](https://github.com/voyagermesh/installer/commit/58f432a) Update repository config (#37) +- [41dc0fd](https://github.com/voyagermesh/installer/commit/41dc0fd) Update repository config (#36) +- [a54c114](https://github.com/voyagermesh/installer/commit/a54c114) Update Kubernetes v1.18.9 dependencies (#35) +- [d95070d](https://github.com/voyagermesh/installer/commit/d95070d) Update Kubernetes v1.18.3 dependencies (#34) +- [c5ca00c](https://github.com/voyagermesh/installer/commit/c5ca00c) Update Kubernetes v1.18.3 dependencies (#33) +- [30dfe30](https://github.com/voyagermesh/installer/commit/30dfe30) Update Kubernetes v1.18.3 dependencies (#32) +- [e89a026](https://github.com/voyagermesh/installer/commit/e89a026) Update Kubernetes v1.18.3 dependencies (#31) +- [b91a6e9](https://github.com/voyagermesh/installer/commit/b91a6e9) Update Kubernetes v1.18.3 dependencies (#30) +- [236a3b1](https://github.com/voyagermesh/installer/commit/236a3b1) Update Kubernetes v1.18.3 dependencies (#29) +- [a2d4bff](https://github.com/voyagermesh/installer/commit/a2d4bff) Update Kubernetes v1.18.3 dependencies (#28) +- [bc8cac9](https://github.com/voyagermesh/installer/commit/bc8cac9) Update Kubernetes v1.18.3 dependencies (#27) +- [8c93371](https://github.com/voyagermesh/installer/commit/8c93371) Update Kubernetes v1.18.3 dependencies (#26) +- [51a239d](https://github.com/voyagermesh/installer/commit/51a239d) Update Kubernetes v1.18.3 dependencies (#25) +- [475bd11](https://github.com/voyagermesh/installer/commit/475bd11) Update Kubernetes v1.18.3 dependencies (#24) +- [4c472a4](https://github.com/voyagermesh/installer/commit/4c472a4) Update Kubernetes v1.18.3 dependencies (#23) +- [40c34b1](https://github.com/voyagermesh/installer/commit/40c34b1) Update to Kubernetes v1.18.3 (#22) +- [2b52571](https://github.com/voyagermesh/installer/commit/2b52571) Update to Kubernetes v1.18.3 (#21) +- [2d5ff81](https://github.com/voyagermesh/installer/commit/2d5ff81) Update to Kubernetes v1.18.3 (#20) +- [1c8cd5e](https://github.com/voyagermesh/installer/commit/1c8cd5e) Make chart registry configurable (#19) +- [c75e2fd](https://github.com/voyagermesh/installer/commit/c75e2fd) Publish to testing dir for alpha/beta releases +- [0fbed72](https://github.com/voyagermesh/installer/commit/0fbed72) Update to Kubernetes v1.18.3 (#18) +- [04abb9d](https://github.com/voyagermesh/installer/commit/04abb9d) Update ci.yml +- [52f62df](https://github.com/voyagermesh/installer/commit/52f62df) Tag chart and app version as string for yq +- [3aed33c](https://github.com/voyagermesh/installer/commit/3aed33c) Update update-release-tracker.sh +- [fe16afc](https://github.com/voyagermesh/installer/commit/fe16afc) Update update-release-tracker.sh +- [9740a56](https://github.com/voyagermesh/installer/commit/9740a56) Update release.yml +- [290be5b](https://github.com/voyagermesh/installer/commit/290be5b) Add script to update release tracker on pr merge (#17) +- [0256621](https://github.com/voyagermesh/installer/commit/0256621) Update kubernetes versions in CI workflow +- [5b4e797](https://github.com/voyagermesh/installer/commit/5b4e797) Add commands to update chart (#16) +- [59872d2](https://github.com/voyagermesh/installer/commit/59872d2) Fix chart release process (#15) +- [cf8f550](https://github.com/voyagermesh/installer/commit/cf8f550) Fix release workflow script +- [70ff5a6](https://github.com/voyagermesh/installer/commit/70ff5a6) Update .kodiak.toml +- [4c429a3](https://github.com/voyagermesh/installer/commit/4c429a3) Update to Kubernetes v1.18.3 (#10) +- [25d6aac](https://github.com/voyagermesh/installer/commit/25d6aac) Update to Kubernetes v1.18.3 +- [aeebca4](https://github.com/voyagermesh/installer/commit/aeebca4) Create .kodiak.toml +- [7aa3256](https://github.com/voyagermesh/installer/commit/7aa3256) Prepare release v13.0.0-beta.1 (#9) +- [c46cf95](https://github.com/voyagermesh/installer/commit/c46cf95) Add permissions for networking.k8s.io (#8) +- [40e7bef](https://github.com/voyagermesh/installer/commit/40e7bef) Generate both v1beta1 and v1 CRD YAML (#7) +- [080d925](https://github.com/voyagermesh/installer/commit/080d925) Prepare release v13.0.0-beta.0 +- [3e5eb03](https://github.com/voyagermesh/installer/commit/3e5eb03) Update to Kubernetes v1.18.3 (#6) + + + + diff --git a/content/docs/v2024.3.18/CHANGELOG-v2021.10.16.md b/content/docs/v2024.3.18/CHANGELOG-v2021.10.16.md new file mode 100644 index 000000000..95f48be05 --- /dev/null +++ b/content/docs/v2024.3.18/CHANGELOG-v2021.10.16.md @@ -0,0 +1,64 @@ +--- +title: Changelog | Voyager +description: Changelog +menu: + docs_v2024.3.18: + identifier: changelog-voyager-v2021.10.16 + name: Changelog-v2021.10.16 + parent: welcome + weight: 20211016 +product_name: voyager +menu_name: docs_v2024.3.18 +section_menu_id: welcome +url: /docs/v2024.3.18/welcome/changelog-v2021.10.16/ +aliases: +- /docs/v2024.3.18/CHANGELOG-v2021.10.16/ +info: + cli: v0.0.15 + installer: v2024.3.18 + version: v2024.3.18 +--- + +# Voyager v2021.10.16 (2021-10-16) + + +## [voyagermesh/apimachinery](https://github.com/voyagermesh/apimachinery) + +### [v0.1.1](https://github.com/voyagermesh/apimachinery/releases/tag/v0.1.1) + +- [a7704e79](https://github.com/voyagermesh/apimachinery/commit/a7704e79) Set TypeMeta for converter methods (#15) +- [2ccd9780](https://github.com/voyagermesh/apimachinery/commit/2ccd9780) Fix jwt-go security vulnerability (#14) +- [7c884131](https://github.com/voyagermesh/apimachinery/commit/7c884131) Fix jwt-go security vulnerability (#13) +- [660e4478](https://github.com/voyagermesh/apimachinery/commit/660e4478) Update dependencies to publish SiteInfo (#12) +- [c175c94c](https://github.com/voyagermesh/apimachinery/commit/c175c94c) Update repository config (#11) +- [aabe0c90](https://github.com/voyagermesh/apimachinery/commit/aabe0c90) Rename minikube to kind (#10) +- [4216e746](https://github.com/voyagermesh/apimachinery/commit/4216e746) Remove deprecated fields (#9) + + + +## [voyagermesh/haproxy-ingress](https://github.com/voyagermesh/haproxy-ingress) + +### [v13.0.1](https://github.com/voyagermesh/haproxy-ingress/releases/tag/v13.0.1) + +- [1f65f08c](https://github.com/voyagermesh/haproxy-ingress/commit/1f65f08c) Prepare for release v13.0.1 (#24) +- [89dcd122](https://github.com/voyagermesh/haproxy-ingress/commit/89dcd122) Run separate operator and webhook server pods (#23) +- [f5621d0d](https://github.com/voyagermesh/haproxy-ingress/commit/f5621d0d) Fix jwt-go security vulnerability (#21) +- [b968bc02](https://github.com/voyagermesh/haproxy-ingress/commit/b968bc02) Use nats.go v1.13.0 (#20) +- [e3c0c421](https://github.com/voyagermesh/haproxy-ingress/commit/e3c0c421) Setup SiteInfo publisher (#19) +- [5a3f21d3](https://github.com/voyagermesh/haproxy-ingress/commit/5a3f21d3) Update dependencies to publish SiteInfo (#18) + + + +## [voyagermesh/installer](https://github.com/voyagermesh/installer) + +### [v2021.10.16](https://github.com/voyagermesh/installer/releases/tag/v2021.10.16) + +- [c609411](https://github.com/voyagermesh/installer/commit/c609411) Prepare for release v2021.10.16 (#91) +- [66bc3ad](https://github.com/voyagermesh/installer/commit/66bc3ad) Use separate deployments for operator and webhook server (#90) +- [b2d8453](https://github.com/voyagermesh/installer/commit/b2d8453) Fix jwt-go security vulnerability (#89) +- [de86de2](https://github.com/voyagermesh/installer/commit/de86de2) Update dependencies to publish SiteInfo (#88) +- [0e722e0](https://github.com/voyagermesh/installer/commit/0e722e0) Update repository config (#87) + + + + diff --git a/content/docs/v2024.3.18/CHANGELOG-v2021.10.17.md b/content/docs/v2024.3.18/CHANGELOG-v2021.10.17.md new file mode 100644 index 000000000..5a7ddddfd --- /dev/null +++ b/content/docs/v2024.3.18/CHANGELOG-v2021.10.17.md @@ -0,0 +1,51 @@ +--- +title: Changelog | Voyager +description: Changelog +menu: + docs_v2024.3.18: + identifier: changelog-voyager-v2021.10.17 + name: Changelog-v2021.10.17 + parent: welcome + weight: 20211017 +product_name: voyager +menu_name: docs_v2024.3.18 +section_menu_id: welcome +url: /docs/v2024.3.18/welcome/changelog-v2021.10.17/ +aliases: +- /docs/v2024.3.18/CHANGELOG-v2021.10.17/ +info: + cli: v0.0.15 + installer: v2024.3.18 + version: v2024.3.18 +--- + +# Voyager v2021.10.17 (2021-10-16) + + +## [voyagermesh/apimachinery](https://github.com/voyagermesh/apimachinery) + +### [v0.1.2](https://github.com/voyagermesh/apimachinery/releases/tag/v0.1.2) + +- [1e37c726](https://github.com/voyagermesh/apimachinery/commit/1e37c726) Recover from conversion panic (#16) + + + +## [voyagermesh/haproxy-ingress](https://github.com/voyagermesh/haproxy-ingress) + +### [v13.0.2](https://github.com/voyagermesh/haproxy-ingress/releases/tag/v13.0.2) + +- [dab93b5e](https://github.com/voyagermesh/haproxy-ingress/commit/dab93b5e) Prepare for release v13.0.2 (#26) +- [42ef435b](https://github.com/voyagermesh/haproxy-ingress/commit/42ef435b) Log ensure crd error without failing operator (#25) +- [29e080ba](https://github.com/voyagermesh/haproxy-ingress/commit/29e080ba) Fix flag conflict + + + +## [voyagermesh/installer](https://github.com/voyagermesh/installer) + +### [v2021.10.17](https://github.com/voyagermesh/installer/releases/tag/v2021.10.17) + +- [a92784d](https://github.com/voyagermesh/installer/commit/a92784d) Prepare for release v2021.10.17 (#92) + + + + diff --git a/content/docs/v2024.3.18/CHANGELOG-v2021.10.18.md b/content/docs/v2024.3.18/CHANGELOG-v2021.10.18.md new file mode 100644 index 000000000..725a3b0e8 --- /dev/null +++ b/content/docs/v2024.3.18/CHANGELOG-v2021.10.18.md @@ -0,0 +1,63 @@ +--- +title: Changelog | Voyager +description: Changelog +menu: + docs_v2024.3.18: + identifier: changelog-voyager-v2021.10.18 + name: Changelog-v2021.10.18 + parent: welcome + weight: 20211018 +product_name: voyager +menu_name: docs_v2024.3.18 +section_menu_id: welcome +url: /docs/v2024.3.18/welcome/changelog-v2021.10.18/ +aliases: +- /docs/v2024.3.18/CHANGELOG-v2021.10.18/ +info: + cli: v0.0.15 + installer: v2024.3.18 + version: v2024.3.18 +--- + +# Voyager v2021.10.18 (2021-10-18) + + +## [voyagermesh/apimachinery](https://github.com/voyagermesh/apimachinery) + +### [v0.1.3](https://github.com/voyagermesh/apimachinery/releases/tag/v0.1.3) + +- [21c78451](https://github.com/voyagermesh/apimachinery/commit/21c78451) Fix v1beta1 to v1 type conversion (#17) +- [1fcd5596](https://github.com/voyagermesh/apimachinery/commit/1fcd5596) Remove kubectl.kubernetes.io/last-applied-configuration annotation + + + +## [voyagermesh/cli](https://github.com/voyagermesh/cli) + +### [v0.0.3](https://github.com/voyagermesh/cli/releases/tag/v0.0.3) + +- [115ccc1](https://github.com/voyagermesh/cli/commit/115ccc1) Prepare for release v0.0.3 (#2) + + + +## [voyagermesh/haproxy-ingress](https://github.com/voyagermesh/haproxy-ingress) + +### [v13.0.3](https://github.com/voyagermesh/haproxy-ingress/releases/tag/v13.0.3) + +- [bf746ef6](https://github.com/voyagermesh/haproxy-ingress/commit/bf746ef6) Prepare for release v13.0.3 (#30) +- [73778780](https://github.com/voyagermesh/haproxy-ingress/commit/73778780) Remove check and convert commands +- [5755c97e](https://github.com/voyagermesh/haproxy-ingress/commit/5755c97e) Move reference docs to a sub menu (#29) +- [8e5ab525](https://github.com/voyagermesh/haproxy-ingress/commit/8e5ab525) Load HAProxy templates using git submodule (#28) +- [69192031](https://github.com/voyagermesh/haproxy-ingress/commit/69192031) Add haproxy-templates git submodule +- [0f4310a6](https://github.com/voyagermesh/haproxy-ingress/commit/0f4310a6) Fix conversion panic (#27) + + + +## [voyagermesh/installer](https://github.com/voyagermesh/installer) + +### [v2021.10.18](https://github.com/voyagermesh/installer/releases/tag/v2021.10.18) + +- [7a4972c](https://github.com/voyagermesh/installer/commit/7a4972c) Prepare for release v2021.10.18 (#93) + + + + diff --git a/content/docs/v2024.3.18/CHANGELOG-v2022.01.01.md b/content/docs/v2024.3.18/CHANGELOG-v2022.01.01.md new file mode 100644 index 000000000..92fe721c1 --- /dev/null +++ b/content/docs/v2024.3.18/CHANGELOG-v2022.01.01.md @@ -0,0 +1,70 @@ +--- +title: Changelog | Voyager +description: Changelog +menu: + docs_v2024.3.18: + identifier: changelog-voyager-v2022.01.01 + name: Changelog-v2022.01.01 + parent: welcome + weight: 20220101 +product_name: voyager +menu_name: docs_v2024.3.18 +section_menu_id: welcome +url: /docs/v2024.3.18/welcome/changelog-v2022.01.01/ +aliases: +- /docs/v2024.3.18/CHANGELOG-v2022.01.01/ +info: + cli: v0.0.15 + installer: v2024.3.18 + version: v2024.3.18 +--- + +# Voyager v2022.01.01 (2022-01-02) + + +## [voyagermesh/apimachinery](https://github.com/voyagermesh/apimachinery) + +### [v0.2.0](https://github.com/voyagermesh/apimachinery/releases/tag/v0.2.0) + +- [b9ccd598](https://github.com/voyagermesh/apimachinery/commit/b9ccd598) Support proxy security context (#21) +- [1991e135](https://github.com/voyagermesh/apimachinery/commit/1991e135) Update repository config (#20) +- [0393f8de](https://github.com/voyagermesh/apimachinery/commit/0393f8de) Update repository config (#19) +- [f792df1d](https://github.com/voyagermesh/apimachinery/commit/f792df1d) Fix satori/go.uuid security vulnerability (#18) + + + +## [voyagermesh/cli](https://github.com/voyagermesh/cli) + +### [v0.0.4](https://github.com/voyagermesh/cli/releases/tag/v0.0.4) + +- [7ee2d31](https://github.com/voyagermesh/cli/commit/7ee2d31) Prepare for release v0.0.4 (#3) +- [979d215](https://github.com/voyagermesh/cli/commit/979d215) Correctly initialize klog flags + + + +## [voyagermesh/haproxy-ingress](https://github.com/voyagermesh/haproxy-ingress) + +### [v14.0.0](https://github.com/voyagermesh/haproxy-ingress/releases/tag/v14.0.0) + +- [cdb54de8](https://github.com/voyagermesh/haproxy-ingress/commit/cdb54de8) Prepare for release v14.0.0 (#34) +- [e591ca27](https://github.com/voyagermesh/haproxy-ingress/commit/e591ca27) Log changed files when haproxy is reloaded (#33) +- [83a3b1f0](https://github.com/voyagermesh/haproxy-ingress/commit/83a3b1f0) Various cleanup (#32) +- [1be18011](https://github.com/voyagermesh/haproxy-ingress/commit/1be18011) Update configreader +- [77b702a2](https://github.com/voyagermesh/haproxy-ingress/commit/77b702a2) Fix satori/go.uuid security vulnerability (#31) +- [b371aae6](https://github.com/voyagermesh/haproxy-ingress/commit/b371aae6) update templates + + + +## [voyagermesh/installer](https://github.com/voyagermesh/installer) + +### [v2022.01.01](https://github.com/voyagermesh/installer/releases/tag/v2022.01.01) + +- [0d683d5](https://github.com/voyagermesh/installer/commit/0d683d5) Prepare for release v2022.01.01 (#97) +- [3583265](https://github.com/voyagermesh/installer/commit/3583265) Remove enableAnalytics flag +- [21e6643](https://github.com/voyagermesh/installer/commit/21e6643) Update default HAProxy version to 2.5.0 (#96) +- [c3f75c3](https://github.com/voyagermesh/installer/commit/c3f75c3) Update repository config (#95) +- [2a22b46](https://github.com/voyagermesh/installer/commit/2a22b46) Fix satori/go.uuid security vulnerability (#94) + + + + diff --git a/content/docs/v2024.3.18/CHANGELOG-v2022.01.07.md b/content/docs/v2024.3.18/CHANGELOG-v2022.01.07.md new file mode 100644 index 000000000..4c09ea9e1 --- /dev/null +++ b/content/docs/v2024.3.18/CHANGELOG-v2022.01.07.md @@ -0,0 +1,43 @@ +--- +title: Changelog | Voyager +description: Changelog +menu: + docs_v2024.3.18: + identifier: changelog-voyager-v2022.01.07 + name: Changelog-v2022.01.07 + parent: welcome + weight: 20220107 +product_name: voyager +menu_name: docs_v2024.3.18 +section_menu_id: welcome +url: /docs/v2024.3.18/welcome/changelog-v2022.01.07/ +aliases: +- /docs/v2024.3.18/CHANGELOG-v2022.01.07/ +info: + cli: v0.0.15 + installer: v2024.3.18 + version: v2024.3.18 +--- + +# Voyager v2022.01.07 (2022-01-07) + + +## [voyagermesh/haproxy-ingress](https://github.com/voyagermesh/haproxy-ingress) + +### [v14.0.1](https://github.com/voyagermesh/haproxy-ingress/releases/tag/v14.0.1) + +- [f9861aed](https://github.com/voyagermesh/haproxy-ingress/commit/f9861aed) Log diffs for changed config files (#36) +- [ddcf94de](https://github.com/voyagermesh/haproxy-ingress/commit/ddcf94de) Run trivy scanner (#35) + + + +## [voyagermesh/installer](https://github.com/voyagermesh/installer) + +### [v2022.01.07](https://github.com/voyagermesh/installer/releases/tag/v2022.01.07) + +- [912f293](https://github.com/voyagermesh/installer/commit/912f293) Prepare for release v2022.01.07 (#98) +- [63c4565](https://github.com/voyagermesh/installer/commit/63c4565) Enable arm64 nodes by default + + + + diff --git a/content/docs/v2024.3.18/CHANGELOG-v2022.01.10.md b/content/docs/v2024.3.18/CHANGELOG-v2022.01.10.md new file mode 100644 index 000000000..3c9bab150 --- /dev/null +++ b/content/docs/v2024.3.18/CHANGELOG-v2022.01.10.md @@ -0,0 +1,60 @@ +--- +title: Changelog | Voyager +description: Changelog +menu: + docs_v2024.3.18: + identifier: changelog-voyager-v2022.01.10 + name: Changelog-v2022.01.10 + parent: welcome + weight: 20220110 +product_name: voyager +menu_name: docs_v2024.3.18 +section_menu_id: welcome +url: /docs/v2024.3.18/welcome/changelog-v2022.01.10/ +aliases: +- /docs/v2024.3.18/CHANGELOG-v2022.01.10/ +info: + cli: v0.0.15 + installer: v2024.3.18 + version: v2024.3.18 +--- + +# Voyager v2022.01.10 (2022-01-10) + + +## [voyagermesh/apimachinery](https://github.com/voyagermesh/apimachinery) + +### [v0.3.0](https://github.com/voyagermesh/apimachinery/releases/tag/v0.3.0) + +- [7d6c4d04](https://github.com/voyagermesh/apimachinery/commit/7d6c4d04) Convert ProxySecurityContext from v1beta1 to v1 api (#22) + + + +## [voyagermesh/cli](https://github.com/voyagermesh/cli) + +### [v0.0.5](https://github.com/voyagermesh/cli/releases/tag/v0.0.5) + +- [1824d2f](https://github.com/voyagermesh/cli/commit/1824d2f) Prepare for release v0.0.5 (#4) + + + +## [voyagermesh/haproxy-ingress](https://github.com/voyagermesh/haproxy-ingress) + +### [v14.1.0](https://github.com/voyagermesh/haproxy-ingress/releases/tag/v14.1.0) + +- [96ea81cb](https://github.com/voyagermesh/haproxy-ingress/commit/96ea81cb) Prepare for release v14.1.0 (#38) +- [9df118f9](https://github.com/voyagermesh/haproxy-ingress/commit/9df118f9) Mount emptyDir to /var/run (#37) +- [b48d48f9](https://github.com/voyagermesh/haproxy-ingress/commit/b48d48f9) Use HAProxy 2.5 (no patch) version + + + +## [voyagermesh/installer](https://github.com/voyagermesh/installer) + +### [v2022.01.10](https://github.com/voyagermesh/installer/releases/tag/v2022.01.10) + +- [dac9c9b](https://github.com/voyagermesh/installer/commit/dac9c9b) Prepare for release v2022.01.10 (#100) +- [40a8b9a](https://github.com/voyagermesh/installer/commit/40a8b9a) Use HAProxy 2.5-alpine version (#99) + + + + diff --git a/content/docs/v2024.3.18/CHANGELOG-v2022.02.22.md b/content/docs/v2024.3.18/CHANGELOG-v2022.02.22.md new file mode 100644 index 000000000..29a81546f --- /dev/null +++ b/content/docs/v2024.3.18/CHANGELOG-v2022.02.22.md @@ -0,0 +1,63 @@ +--- +title: Changelog | Voyager +description: Changelog +menu: + docs_v2024.3.18: + identifier: changelog-voyager-v2022.02.22 + name: Changelog-v2022.02.22 + parent: welcome + weight: 20220222 +product_name: voyager +menu_name: docs_v2024.3.18 +section_menu_id: welcome +url: /docs/v2024.3.18/welcome/changelog-v2022.02.22/ +aliases: +- /docs/v2024.3.18/CHANGELOG-v2022.02.22/ +info: + cli: v0.0.15 + installer: v2024.3.18 + version: v2024.3.18 +--- + +# Voyager v2022.02.22 (2022-02-18) + + +## [voyagermesh/apimachinery](https://github.com/voyagermesh/apimachinery) + +### [v0.4.0](https://github.com/voyagermesh/apimachinery/releases/tag/v0.4.0) + +- [1f3d5fa1](https://github.com/voyagermesh/apimachinery/commit/1f3d5fa1) Update SiteInfo (#24) +- [54c9652d](https://github.com/voyagermesh/apimachinery/commit/54c9652d) Update repository config (#23) + + + +## [voyagermesh/cli](https://github.com/voyagermesh/cli) + +### [v0.0.6](https://github.com/voyagermesh/cli/releases/tag/v0.0.6) + +- [0adaf81](https://github.com/voyagermesh/cli/commit/0adaf81) Prepare for release v0.0.6 (#5) + + + +## [voyagermesh/haproxy-ingress](https://github.com/voyagermesh/haproxy-ingress) + +### [v14.2.0](https://github.com/voyagermesh/haproxy-ingress/releases/tag/v14.2.0) + +- [1e0fe986](https://github.com/voyagermesh/haproxy-ingress/commit/1e0fe986) Prepare for release v14.2.0 (#41) +- [42297611](https://github.com/voyagermesh/haproxy-ingress/commit/42297611) Publish GenericResource event (#40) +- [90e4b8c3](https://github.com/voyagermesh/haproxy-ingress/commit/90e4b8c3) Update SiteInfo (#39) + + + +## [voyagermesh/installer](https://github.com/voyagermesh/installer) + +### [v2022.02.22](https://github.com/voyagermesh/installer/releases/tag/v2022.02.22) + +- [ee7b622](https://github.com/voyagermesh/installer/commit/ee7b622) Prepare for release v2022.02.22 (#105) +- [bfb6acb](https://github.com/voyagermesh/installer/commit/bfb6acb) Update repository config (#104) +- [c171823](https://github.com/voyagermesh/installer/commit/c171823) Use well-known os label (#103) +- [d1d214e](https://github.com/voyagermesh/installer/commit/d1d214e) Update SiteInfo (#102) + + + + diff --git a/content/docs/v2024.3.18/CHANGELOG-v2022.03.17.md b/content/docs/v2024.3.18/CHANGELOG-v2022.03.17.md new file mode 100644 index 000000000..81003a285 --- /dev/null +++ b/content/docs/v2024.3.18/CHANGELOG-v2022.03.17.md @@ -0,0 +1,60 @@ +--- +title: Changelog | Voyager +description: Changelog +menu: + docs_v2024.3.18: + identifier: changelog-voyager-v2022.03.17 + name: Changelog-v2022.03.17 + parent: welcome + weight: 20220317 +product_name: voyager +menu_name: docs_v2024.3.18 +section_menu_id: welcome +url: /docs/v2024.3.18/welcome/changelog-v2022.03.17/ +aliases: +- /docs/v2024.3.18/CHANGELOG-v2022.03.17/ +info: + cli: v0.0.15 + installer: v2024.3.18 + version: v2024.3.18 +--- + +# Voyager v2022.03.17 (2022-03-17) + + +## [voyagermesh/cli](https://github.com/voyagermesh/cli) + +### [v0.0.7](https://github.com/voyagermesh/cli/releases/tag/v0.0.7) + +- [16d852a](https://github.com/voyagermesh/cli/commit/16d852a) Prepare for release v0.0.7 (#8) +- [8b0b309](https://github.com/voyagermesh/cli/commit/8b0b309) Build darwin/arm64 images +- [b68c523](https://github.com/voyagermesh/cli/commit/b68c523) Use Go 1.18 (#7) +- [0bc96a7](https://github.com/voyagermesh/cli/commit/0bc96a7) make fmt (#6) + + + +## [voyagermesh/haproxy-ingress](https://github.com/voyagermesh/haproxy-ingress) + +### [v14.2.1](https://github.com/voyagermesh/haproxy-ingress/releases/tag/v14.2.1) + +- [73961286](https://github.com/voyagermesh/haproxy-ingress/commit/73961286) Prepare for release v14.2.1 (#46) +- [c9319f58](https://github.com/voyagermesh/haproxy-ingress/commit/c9319f58) Use Go 1.18 (#43) +- [56e996e9](https://github.com/voyagermesh/haproxy-ingress/commit/56e996e9) Fix CVEs reported in trivy scanner (#45) +- [6609a2e3](https://github.com/voyagermesh/haproxy-ingress/commit/6609a2e3) git submodule updated +- [cc3ccde8](https://github.com/voyagermesh/haproxy-ingress/commit/cc3ccde8) make fmt (#42) + + + +## [voyagermesh/installer](https://github.com/voyagermesh/installer) + +### [v2022.03.17](https://github.com/voyagermesh/installer/releases/tag/v2022.03.17) + +- [f9d677a](https://github.com/voyagermesh/installer/commit/f9d677a) Prepare for release v2022.03.17 (#109) +- [a1e348f](https://github.com/voyagermesh/installer/commit/a1e348f) Use k8s 1.23.3 in ci +- [e1f4155](https://github.com/voyagermesh/installer/commit/e1f4155) Use Go 1.18 (#107) +- [68be613](https://github.com/voyagermesh/installer/commit/68be613) Fix chart schema (#108) +- [4bcfebc](https://github.com/voyagermesh/installer/commit/4bcfebc) make fmt (#106) + + + + diff --git a/content/docs/v2024.3.18/CHANGELOG-v2022.04.13.md b/content/docs/v2024.3.18/CHANGELOG-v2022.04.13.md new file mode 100644 index 000000000..d929db0d5 --- /dev/null +++ b/content/docs/v2024.3.18/CHANGELOG-v2022.04.13.md @@ -0,0 +1,58 @@ +--- +title: Changelog | Voyager +description: Changelog +menu: + docs_v2024.3.18: + identifier: changelog-voyager-v2022.04.13 + name: Changelog-v2022.04.13 + parent: welcome + weight: 20220413 +product_name: voyager +menu_name: docs_v2024.3.18 +section_menu_id: welcome +url: /docs/v2024.3.18/welcome/changelog-v2022.04.13/ +aliases: +- /docs/v2024.3.18/CHANGELOG-v2022.04.13/ +info: + cli: v0.0.15 + installer: v2024.3.18 + version: v2024.3.18 +--- + +# Voyager v2022.04.13 (2022-04-14) + + +## [voyagermesh/apimachinery](https://github.com/voyagermesh/apimachinery) + +### [v0.4.2](https://github.com/voyagermesh/apimachinery/releases/tag/v0.4.2) + +- [0eb8cb31](https://github.com/voyagermesh/apimachinery/commit/0eb8cb31) Use Go 1.18 (#27) + + + +## [voyagermesh/cli](https://github.com/voyagermesh/cli) + +### [v0.0.8](https://github.com/voyagermesh/cli/releases/tag/v0.0.8) + +- [70b38ac](https://github.com/voyagermesh/cli/commit/70b38ac) Prepare for release v0.0.8 (#9) + + + +## [voyagermesh/haproxy-ingress](https://github.com/voyagermesh/haproxy-ingress) + +### [v14.2.2](https://github.com/voyagermesh/haproxy-ingress/releases/tag/v14.2.2) + +- [8182f293](https://github.com/voyagermesh/haproxy-ingress/commit/8182f293) Prepare for release v14.2.2 (#47) +- [91478824](https://github.com/voyagermesh/haproxy-ingress/commit/91478824) Add scanner + + + +## [voyagermesh/installer](https://github.com/voyagermesh/installer) + +### [v2022.04.13](https://github.com/voyagermesh/installer/releases/tag/v2022.04.13) + +- [2172ee0](https://github.com/voyagermesh/installer/commit/2172ee0) Prepare for release v2022.04.13 (#110) + + + + diff --git a/content/docs/v2024.3.18/CHANGELOG-v2022.06.20.md b/content/docs/v2024.3.18/CHANGELOG-v2022.06.20.md new file mode 100644 index 000000000..64148d1b3 --- /dev/null +++ b/content/docs/v2024.3.18/CHANGELOG-v2022.06.20.md @@ -0,0 +1,67 @@ +--- +title: Changelog | Voyager +description: Changelog +menu: + docs_v2024.3.18: + identifier: changelog-voyager-v2022.06.20 + name: Changelog-v2022.06.20 + parent: welcome + weight: 20220620 +product_name: voyager +menu_name: docs_v2024.3.18 +section_menu_id: welcome +url: /docs/v2024.3.18/welcome/changelog-v2022.06.20/ +aliases: +- /docs/v2024.3.18/CHANGELOG-v2022.06.20/ +info: + cli: v0.0.15 + installer: v2024.3.18 + version: v2024.3.18 +--- + +# Voyager v2022.06.20 (2022-06-17) + + +## [voyagermesh/apimachinery](https://github.com/voyagermesh/apimachinery) + +### [v0.5.0](https://github.com/voyagermesh/apimachinery/releases/tag/v0.5.0) + +- [9a6e26b7](https://github.com/voyagermesh/apimachinery/commit/9a6e26b7) Update to k8s 1.24 toolchain (#29) +- [6bfee384](https://github.com/voyagermesh/apimachinery/commit/6bfee384) Test against Kubernetes 1.24.0 (#28) + + + +## [voyagermesh/cli](https://github.com/voyagermesh/cli) + +### [v0.0.9](https://github.com/voyagermesh/cli/releases/tag/v0.0.9) + +- [696408d](https://github.com/voyagermesh/cli/commit/696408d) Prepare for release v0.0.9 (#11) +- [7b82992](https://github.com/voyagermesh/cli/commit/7b82992) Update to k8s 1.24 toolchain (#10) + + + +## [voyagermesh/haproxy-ingress](https://github.com/voyagermesh/haproxy-ingress) + +### [v15.0.0](https://github.com/voyagermesh/haproxy-ingress/releases/tag/v15.0.0) + +- [b9b68401](https://github.com/voyagermesh/haproxy-ingress/commit/b9b684018) Prepare for release v15.0.0 (#51) +- [804b350d](https://github.com/voyagermesh/haproxy-ingress/commit/804b350d9) Fix port detection for external name type service (#50) +- [126137a9](https://github.com/voyagermesh/haproxy-ingress/commit/126137a90) Fix CVE-2022-1586 CVE-2022-1587 +- [0a61fc9c](https://github.com/voyagermesh/haproxy-ingress/commit/0a61fc9c4) Update to k8s 1.24 toolchain (#49) +- [46b78cfe](https://github.com/voyagermesh/haproxy-ingress/commit/46b78cfed) Test against Kubernetes 1.24.0 (#48) + + + +## [voyagermesh/installer](https://github.com/voyagermesh/installer) + +### [v2022.06.20](https://github.com/voyagermesh/installer/releases/tag/v2022.06.20) + +- [61e1f75](https://github.com/voyagermesh/installer/commit/61e1f75) Prepare for release v2022.06.20 (#113) +- [d207168](https://github.com/voyagermesh/installer/commit/d207168) Get operator from chart appVersion +- [9bc4b6c](https://github.com/voyagermesh/installer/commit/9bc4b6c) Update to k8s 1.24 toolchain (#112) +- [84ab347](https://github.com/voyagermesh/installer/commit/84ab347) Test against Kubernetes 1.24.0 (#111) +- [02028da](https://github.com/voyagermesh/installer/commit/02028da) Change MY_POD_ env prefix to POD_ + + + + diff --git a/content/docs/v2024.3.18/CHANGELOG-v2022.08.17.md b/content/docs/v2024.3.18/CHANGELOG-v2022.08.17.md new file mode 100644 index 000000000..917de4d0e --- /dev/null +++ b/content/docs/v2024.3.18/CHANGELOG-v2022.08.17.md @@ -0,0 +1,62 @@ +--- +title: Changelog | Voyager +description: Changelog +menu: + docs_v2024.3.18: + identifier: changelog-voyager-v2022.08.17 + name: Changelog-v2022.08.17 + parent: welcome + weight: 20220817 +product_name: voyager +menu_name: docs_v2024.3.18 +section_menu_id: welcome +url: /docs/v2024.3.18/welcome/changelog-v2022.08.17/ +aliases: +- /docs/v2024.3.18/CHANGELOG-v2022.08.17/ +info: + cli: v0.0.15 + installer: v2024.3.18 + version: v2024.3.18 +--- + +# Voyager v2022.08.17 (2022-08-17) + + +## [voyagermesh/apimachinery](https://github.com/voyagermesh/apimachinery) + +### [v0.6.0](https://github.com/voyagermesh/apimachinery/releases/tag/v0.6.0) + +- [b0448934](https://github.com/voyagermesh/apimachinery/commit/b0448934) Use k8s 1.25 libs (#30) + + + +## [voyagermesh/cli](https://github.com/voyagermesh/cli) + +### [v0.0.10](https://github.com/voyagermesh/cli/releases/tag/v0.0.10) + +- [e5c1876](https://github.com/voyagermesh/cli/commit/e5c1876) Prepare for release v0.0.10 (#13) +- [865f31f](https://github.com/voyagermesh/cli/commit/865f31f) Use k8s 1.25 libs (#12) + + + +## [voyagermesh/haproxy-ingress](https://github.com/voyagermesh/haproxy-ingress) + +### [v16.0.0](https://github.com/voyagermesh/haproxy-ingress/releases/tag/v16.0.0) + +- [c4dcbf00](https://github.com/voyagermesh/haproxy-ingress/commit/c4dcbf001) Prepare for release v16.0.0 (#53) +- [65d5fa3f](https://github.com/voyagermesh/haproxy-ingress/commit/65d5fa3fb) Use HAProxy 2.6 +- [fae4ad3a](https://github.com/voyagermesh/haproxy-ingress/commit/fae4ad3a5) Use k8s 1.25 libs (#52) + + + +## [voyagermesh/installer](https://github.com/voyagermesh/installer) + +### [v2022.08.17](https://github.com/voyagermesh/installer/releases/tag/v2022.08.17) + +- [9725acc](https://github.com/voyagermesh/installer/commit/9725acc) Prepare for release v2022.08.17 (#116) +- [eaf13e0](https://github.com/voyagermesh/installer/commit/eaf13e0) Use k8s 1.25 libs (#115) +- [29170d3](https://github.com/voyagermesh/installer/commit/29170d3) Add permission for license-proxyserver (#114) + + + + diff --git a/content/docs/v2024.3.18/CHANGELOG-v2022.12.11.md b/content/docs/v2024.3.18/CHANGELOG-v2022.12.11.md new file mode 100644 index 000000000..319c78adc --- /dev/null +++ b/content/docs/v2024.3.18/CHANGELOG-v2022.12.11.md @@ -0,0 +1,75 @@ +--- +title: Changelog | Voyager +description: Changelog +menu: + docs_v2024.3.18: + identifier: changelog-voyager-v2022.12.11 + name: Changelog-v2022.12.11 + parent: welcome + weight: 20221211 +product_name: voyager +menu_name: docs_v2024.3.18 +section_menu_id: welcome +url: /docs/v2024.3.18/welcome/changelog-v2022.12.11/ +aliases: +- /docs/v2024.3.18/CHANGELOG-v2022.12.11/ +info: + cli: v0.0.15 + installer: v2024.3.18 + version: v2024.3.18 +--- + +# Voyager v2022.12.11 (2022-12-10) + + +## [voyagermesh/apimachinery](https://github.com/voyagermesh/apimachinery) + +### [v0.7.0](https://github.com/voyagermesh/apimachinery/releases/tag/v0.7.0) + +- [03ca8808](https://github.com/voyagermesh/apimachinery/commit/03ca8808) Update deps +- [6e495f8a](https://github.com/voyagermesh/apimachinery/commit/6e495f8a) Run GH actions on ubuntu-20.04 (#34) +- [e54c78b8](https://github.com/voyagermesh/apimachinery/commit/e54c78b8) Test against Kubernetes 1.25.0 (#33) +- [aaa19a94](https://github.com/voyagermesh/apimachinery/commit/aaa19a94) Use Go 1.19 (#32) +- [11bcee3c](https://github.com/voyagermesh/apimachinery/commit/11bcee3c) Use k8s 1.25.1 libs (#31) + + + +## [voyagermesh/cli](https://github.com/voyagermesh/cli) + +### [v0.0.11](https://github.com/voyagermesh/cli/releases/tag/v0.0.11) + +- [ee6eb0d](https://github.com/voyagermesh/cli/commit/ee6eb0d) Prepare for release v0.0.11 (#17) +- [7bf2e36](https://github.com/voyagermesh/cli/commit/7bf2e36) Run GH actions on ubuntu-20.04 (#16) +- [d597ca1](https://github.com/voyagermesh/cli/commit/d597ca1) Stop using ioutil (#15) +- [38e08ab](https://github.com/voyagermesh/cli/commit/38e08ab) Use k8s 1.25.1 libs (#14) + + + +## [voyagermesh/haproxy-ingress](https://github.com/voyagermesh/haproxy-ingress) + +### [v17.0.0](https://github.com/voyagermesh/haproxy-ingress/releases/tag/v17.0.0) + +- [b9e3daaa](https://github.com/voyagermesh/haproxy-ingress/commit/b9e3daaa4) Prepare for release v17.0.0 (#59) +- [cf06e700](https://github.com/voyagermesh/haproxy-ingress/commit/cf06e700c) Remove vulnerable deps +- [3370de4f](https://github.com/voyagermesh/haproxy-ingress/commit/3370de4f0) Run GH actions on ubuntu-20.04 (#58) +- [ccaa9278](https://github.com/voyagermesh/haproxy-ingress/commit/ccaa9278e) Acquire license from proxyserver (#57) +- [3b86fefe](https://github.com/voyagermesh/haproxy-ingress/commit/3b86fefef) Update KIND (#56) +- [a407ff28](https://github.com/voyagermesh/haproxy-ingress/commit/a407ff284) Use Go 1.19 (#55) +- [d53c24dc](https://github.com/voyagermesh/haproxy-ingress/commit/d53c24dce) Use k8s 1.25.1 libs (#54) +- [c9db24b2](https://github.com/voyagermesh/haproxy-ingress/commit/c9db24b25) Fix CVE-2022-27664 + + + +## [voyagermesh/installer](https://github.com/voyagermesh/installer) + +### [v2022.12.11](https://github.com/voyagermesh/installer/releases/tag/v2022.12.11) + +- [d8dd39f](https://github.com/voyagermesh/installer/commit/d8dd39f) Prepare for release v2022.12.11 (#120) +- [0f1c6c1](https://github.com/voyagermesh/installer/commit/0f1c6c1) Update kubectl version +- [8decf70](https://github.com/voyagermesh/installer/commit/8decf70) Run GH actions on ubuntu-20.04 (#119) +- [cd18ec8](https://github.com/voyagermesh/installer/commit/cd18ec8) Test against Kubernetes 1.25.0 (#118) +- [18fefdf](https://github.com/voyagermesh/installer/commit/18fefdf) Use Go 1.19 (#117) + + + + diff --git a/content/docs/v2024.3.18/CHANGELOG-v2023.02.22.md b/content/docs/v2024.3.18/CHANGELOG-v2023.02.22.md new file mode 100644 index 000000000..579ae582a --- /dev/null +++ b/content/docs/v2024.3.18/CHANGELOG-v2023.02.22.md @@ -0,0 +1,62 @@ +--- +title: Changelog | Voyager +description: Changelog +menu: + docs_v2024.3.18: + identifier: changelog-voyager-v2023.02.22 + name: Changelog-v2023.02.22 + parent: welcome + weight: 20230222 +product_name: voyager +menu_name: docs_v2024.3.18 +section_menu_id: welcome +url: /docs/v2024.3.18/welcome/changelog-v2023.02.22/ +aliases: +- /docs/v2024.3.18/CHANGELOG-v2023.02.22/ +info: + cli: v0.0.15 + installer: v2024.3.18 + version: v2024.3.18 +--- + +# Voyager v2023.02.22 (2023-02-23) + + +## [voyagermesh/apimachinery](https://github.com/voyagermesh/apimachinery) + +### [v0.7.1](https://github.com/voyagermesh/apimachinery/releases/tag/v0.7.1) + +- [8aa11417](https://github.com/voyagermesh/apimachinery/commit/8aa11417) Update dependencies (#35) + + + +## [voyagermesh/cli](https://github.com/voyagermesh/cli) + +### [v0.0.12](https://github.com/voyagermesh/cli/releases/tag/v0.0.12) + +- [4e9c89e](https://github.com/voyagermesh/cli/commit/4e9c89e) Prepare for release v0.0.12 (#18) + + + +## [voyagermesh/haproxy-ingress](https://github.com/voyagermesh/haproxy-ingress) + +### [v17.0.1](https://github.com/voyagermesh/haproxy-ingress/releases/tag/v17.0.1) + +- [663cfff4](https://github.com/voyagermesh/haproxy-ingress/commit/663cfff4b) Prepare for release v17.0.1 (#61) +- [7aa174bc](https://github.com/voyagermesh/haproxy-ingress/commit/7aa174bc7) Update dependencies +- [ece0471a](https://github.com/voyagermesh/haproxy-ingress/commit/ece0471ae) Update submodules +- [ea8416d3](https://github.com/voyagermesh/haproxy-ingress/commit/ea8416d32) Fix NPE using licenseproxy-server (#60) +- [e65b1682](https://github.com/voyagermesh/haproxy-ingress/commit/e65b16829) Fix NPE using licenseproxy-server (#60) + + + +## [voyagermesh/installer](https://github.com/voyagermesh/installer) + +### [v2023.02.22](https://github.com/voyagermesh/installer/releases/tag/v2023.02.22) + +- [e1d3789](https://github.com/voyagermesh/installer/commit/e1d3789) Prepare for release v2023.02.22 (#121) +- [7451bba](https://github.com/voyagermesh/installer/commit/7451bba) Publish helm charts as OCI artifacts + + + + diff --git a/content/docs/v2024.3.18/CHANGELOG-v2023.05.16.md b/content/docs/v2024.3.18/CHANGELOG-v2023.05.16.md new file mode 100644 index 000000000..483dba9e7 --- /dev/null +++ b/content/docs/v2024.3.18/CHANGELOG-v2023.05.16.md @@ -0,0 +1,78 @@ +--- +title: Changelog | Voyager +description: Changelog +menu: + docs_v2024.3.18: + identifier: changelog-voyager-v2023.05.16 + name: Changelog-v2023.05.16 + parent: welcome + weight: 20230516 +product_name: voyager +menu_name: docs_v2024.3.18 +section_menu_id: welcome +url: /docs/v2024.3.18/welcome/changelog-v2023.05.16/ +aliases: +- /docs/v2024.3.18/CHANGELOG-v2023.05.16/ +info: + cli: v0.0.15 + installer: v2024.3.18 + version: v2024.3.18 +--- + +# Voyager v2023.05.16 (2023-05-16) + + +## [voyagermesh/apimachinery](https://github.com/voyagermesh/apimachinery) + +### [v0.7.2](https://github.com/voyagermesh/apimachinery/releases/tag/v0.7.2) + +- [d3eab942](https://github.com/voyagermesh/apimachinery/commit/d3eab942) Update deps +- [d741654b](https://github.com/voyagermesh/apimachinery/commit/d741654b) Test against K8s 1.27.1 (#40) +- [f17a74a0](https://github.com/voyagermesh/apimachinery/commit/f17a74a0) Use uid 65534 and test against K8s 1.27.0 (#39) +- [5313fa2b](https://github.com/voyagermesh/apimachinery/commit/5313fa2b) Use ghcr.io/appscode/gengo (#38) +- [3cf19792](https://github.com/voyagermesh/apimachinery/commit/3cf19792) Use ghcr.io for appscode/golang-dev (#37) +- [882d1506](https://github.com/voyagermesh/apimachinery/commit/882d1506) Update wrokflows (Go 1.20, k8s 1.26) (#36) + + + +## [voyagermesh/cli](https://github.com/voyagermesh/cli) + +### [v0.0.13](https://github.com/voyagermesh/cli/releases/tag/v0.0.13) + +- [8941c49](https://github.com/voyagermesh/cli/commit/8941c49) Prepare for release v0.0.13 (#21) +- [2704ce0](https://github.com/voyagermesh/cli/commit/2704ce0) Use ghcr.io for appscode/golang-dev (#20) +- [c059723](https://github.com/voyagermesh/cli/commit/c059723) Update wrokflows (Go 1.20, k8s 1.26) (#19) + + + +## [voyagermesh/haproxy-ingress](https://github.com/voyagermesh/haproxy-ingress) + +### [v17.0.2](https://github.com/voyagermesh/haproxy-ingress/releases/tag/v17.0.2) + +- [e1ec6dc2](https://github.com/voyagermesh/haproxy-ingress/commit/e1ec6dc2b) Prepare for release v17.0.2 (#66) +- [50755363](https://github.com/voyagermesh/haproxy-ingress/commit/50755363b) Use HAProxy 2.6.12 (#65) +- [ad1af389](https://github.com/voyagermesh/haproxy-ingress/commit/ad1af389d) Publish to ghcr.io (#64) +- [b52228b5](https://github.com/voyagermesh/haproxy-ingress/commit/b52228b56) Add docker image label +- [dcde7f21](https://github.com/voyagermesh/haproxy-ingress/commit/dcde7f21f) Use ghcr.io for appscode/golang-dev (#63) +- [f46f506d](https://github.com/voyagermesh/haproxy-ingress/commit/f46f506da) Update wrokflows (Go 1.20, k8s 1.26) (#62) + + + +## [voyagermesh/installer](https://github.com/voyagermesh/installer) + +### [v2023.05.16](https://github.com/voyagermesh/installer/releases/tag/v2023.05.16) + +- [fabe300](https://github.com/voyagermesh/installer/commit/fabe300) Prepare for release v2023.05.16 (#131) +- [1f818ff](https://github.com/voyagermesh/installer/commit/1f818ff) Use kubectl 1.24 +- [f1f56c3](https://github.com/voyagermesh/installer/commit/f1f56c3) Test against K8s 1.27.1 (#130) +- [fa3a42c](https://github.com/voyagermesh/installer/commit/fa3a42c) Use uid 65534 and test against K8s 1.27.0 (#129) +- [59d0d9a](https://github.com/voyagermesh/installer/commit/59d0d9a) Use ghcr.io/appscode/gengo (#128) +- [f2ffd5a](https://github.com/voyagermesh/installer/commit/f2ffd5a) Stop publishing oci images to docker hub +- [9ef2b81](https://github.com/voyagermesh/installer/commit/9ef2b81) Use ghcr.io (#127) +- [c44f262](https://github.com/voyagermesh/installer/commit/c44f262) Use ghcr.io for appscode/golang-dev (#126) +- [d40e2fb](https://github.com/voyagermesh/installer/commit/d40e2fb) Update workflows (Go 1.20, k8s 1.26) (#125) +- [371fe3f](https://github.com/voyagermesh/installer/commit/371fe3f) Update wrokflows (Go 1.20, k8s 1.26) (#124) + + + + diff --git a/content/docs/v2024.3.18/CHANGELOG-v2023.9.18.md b/content/docs/v2024.3.18/CHANGELOG-v2023.9.18.md new file mode 100644 index 000000000..9b7822d28 --- /dev/null +++ b/content/docs/v2024.3.18/CHANGELOG-v2023.9.18.md @@ -0,0 +1,68 @@ +--- +title: Changelog | Voyager +description: Changelog +menu: + docs_v2024.3.18: + identifier: changelog-voyager-v2023.9.18 + name: Changelog-v2023.9.18 + parent: welcome + weight: 20230918 +product_name: voyager +menu_name: docs_v2024.3.18 +section_menu_id: welcome +url: /docs/v2024.3.18/welcome/changelog-v2023.9.18/ +aliases: +- /docs/v2024.3.18/CHANGELOG-v2023.9.18/ +info: + cli: v0.0.15 + installer: v2024.3.18 + version: v2024.3.18 +--- + +# Voyager v2023.9.18 (2023-09-17) + + +## [voyagermesh/apimachinery](https://github.com/voyagermesh/apimachinery) + +### [v0.7.3](https://github.com/voyagermesh/apimachinery/releases/tag/v0.7.3) + +- [7a511cc9](https://github.com/voyagermesh/apimachinery/commit/7a511cc9) Support custom ssl chipher annotation +- [757c19c1](https://github.com/voyagermesh/apimachinery/commit/757c19c1) Update license verifier (#41) + + + +## [voyagermesh/cli](https://github.com/voyagermesh/cli) + +### [v0.0.14](https://github.com/voyagermesh/cli/releases/tag/v0.0.14) + +- [d137c94](https://github.com/voyagermesh/cli/commit/d137c94) Prepare for release v0.0.14 (#22) + + + +## [voyagermesh/haproxy-ingress](https://github.com/voyagermesh/haproxy-ingress) + +### [v17.0.3](https://github.com/voyagermesh/haproxy-ingress/releases/tag/v17.0.3) + +- [8ac3587f](https://github.com/voyagermesh/haproxy-ingress/commit/8ac3587fb) Prepare for release v17.0.3 (#70) +- [0c7e59b3](https://github.com/voyagermesh/haproxy-ingress/commit/0c7e59b35) update haproxy template +- [f97e23e0](https://github.com/voyagermesh/haproxy-ingress/commit/f97e23e0d) Support custom ssl chipher (#69) +- [e461f0bc](https://github.com/voyagermesh/haproxy-ingress/commit/e461f0bc2) Update license verifier (#67) +- [5f4fb903](https://github.com/voyagermesh/haproxy-ingress/commit/5f4fb9032) Delete docker image is commit is not tagged + + + +## [voyagermesh/installer](https://github.com/voyagermesh/installer) + +### [v2023.9.18](https://github.com/voyagermesh/installer/releases/tag/v2023.9.18) + +- [7189d8a](https://github.com/voyagermesh/installer/commit/7189d8a) Prepare for release v2023.9.18 (#135) +- [2216fd3](https://github.com/voyagermesh/installer/commit/2216fd3) Handle charts without doc.yaml +- [576f837](https://github.com/voyagermesh/installer/commit/576f837) Update gateway 0.5.0 crds +- [8044712](https://github.com/voyagermesh/installer/commit/8044712) Use gateway v0.0.2 +- [2bc3aa6](https://github.com/voyagermesh/installer/commit/2bc3aa6) Upgrade to release/v0.5 (#134) +- [7fafdeb](https://github.com/voyagermesh/installer/commit/7fafdeb) Remove non crd objects from crds folder +- [677b93d](https://github.com/voyagermesh/installer/commit/677b93d) Use helm repo version + + + + diff --git a/content/docs/v2024.3.18/CHANGELOG-v2024.3.18.md b/content/docs/v2024.3.18/CHANGELOG-v2024.3.18.md new file mode 100644 index 000000000..76129eb8d --- /dev/null +++ b/content/docs/v2024.3.18/CHANGELOG-v2024.3.18.md @@ -0,0 +1,71 @@ +--- +title: Changelog | Voyager +description: Changelog +menu: + docs_v2024.3.18: + identifier: changelog-voyager-v2024.3.18 + name: Changelog-v2024.3.18 + parent: welcome + weight: 20240318 +product_name: voyager +menu_name: docs_v2024.3.18 +section_menu_id: welcome +url: /docs/v2024.3.18/welcome/changelog-v2024.3.18/ +aliases: +- /docs/v2024.3.18/CHANGELOG-v2024.3.18/ +info: + cli: v0.0.15 + installer: v2024.3.18 + version: v2024.3.18 +--- + +# Voyager v2024.3.18 (2024-03-18) + + +## [voyagermesh/apimachinery](https://github.com/voyagermesh/apimachinery) + +### [v0.8.0](https://github.com/voyagermesh/apimachinery/releases/tag/v0.8.0) + +- [5baa586c](https://github.com/voyagermesh/apimachinery/commit/5baa586c) Update deps +- [dbb90e92](https://github.com/voyagermesh/apimachinery/commit/dbb90e92) Use Go 1.22 (#45) +- [d50e1045](https://github.com/voyagermesh/apimachinery/commit/d50e1045) Update deps (#44) +- [b98cecb9](https://github.com/voyagermesh/apimachinery/commit/b98cecb9) Use k8s 1.29 client libs (#43) +- [06618b9e](https://github.com/voyagermesh/apimachinery/commit/06618b9e) Update deps + + + +## [voyagermesh/cli](https://github.com/voyagermesh/cli) + +### [v0.0.15](https://github.com/voyagermesh/cli/releases/tag/v0.0.15) + +- [99baac8](https://github.com/voyagermesh/cli/commit/99baac8) Prepare for release v0.0.15 (#24) +- [586acaf](https://github.com/voyagermesh/cli/commit/586acaf) Use Go 1.22 (#23) + + + +## [voyagermesh/haproxy-ingress](https://github.com/voyagermesh/haproxy-ingress) + +### [v17.1.0](https://github.com/voyagermesh/haproxy-ingress/releases/tag/v17.1.0) + +- [04b22e90](https://github.com/voyagermesh/haproxy-ingress/commit/04b22e905) Prepare for release v17.1.0 (#83) +- [d12ccf31](https://github.com/voyagermesh/haproxy-ingress/commit/d12ccf311) Use haproxy 2.6.16 +- [90e5842a](https://github.com/voyagermesh/haproxy-ingress/commit/90e5842af) Update deps +- [8ce183c7](https://github.com/voyagermesh/haproxy-ingress/commit/8ce183c7d) Use Go 1.22 (#82) +- [4ed0abc5](https://github.com/voyagermesh/haproxy-ingress/commit/4ed0abc5f) Update deps (#79) +- [c43d785c](https://github.com/voyagermesh/haproxy-ingress/commit/c43d785cd) Use k8s 1.29 client libs (#76) +- [a832564a](https://github.com/voyagermesh/haproxy-ingress/commit/a832564ad) Send hourly audit events (#75) +- [d2b57c9d](https://github.com/voyagermesh/haproxy-ingress/commit/d2b57c9da) Update deps +- [664aa057](https://github.com/voyagermesh/haproxy-ingress/commit/664aa0578) Disable cleanup of image + + + +## [voyagermesh/installer](https://github.com/voyagermesh/installer) + +### [v2024.3.18](https://github.com/voyagermesh/installer/releases/tag/v2024.3.18) + +- [32154e1](https://github.com/voyagermesh/installer/commit/32154e1) Prepare for release v2024.3.18 (#139) +- [18d19e2](https://github.com/voyagermesh/installer/commit/18d19e2) Use Go 1.22 (#138) + + + + diff --git a/content/docs/v2024.3.18/CHANGELOG.md b/content/docs/v2024.3.18/CHANGELOG.md new file mode 100644 index 000000000..a6899d410 --- /dev/null +++ b/content/docs/v2024.3.18/CHANGELOG.md @@ -0,0 +1,2193 @@ +--- +title: Changelog | Voyager +description: Changelog +menu: + docs_v2024.3.18: + identifier: changelog-voyager + name: Changelog + parent: welcome + weight: 10 +product_name: voyager +menu_name: docs_v2024.3.18 +section_menu_id: welcome +url: /docs/v2024.3.18/welcome/changelog/ +aliases: +- /docs/v2024.3.18/CHANGELOG/ +info: + cli: v0.0.15 + installer: v2024.3.18 + version: v2024.3.18 +--- + +# Change Log + +## [v13.0.0-beta.1](https://github.com/voyagermesh/voyager/tree/v13.0.0-beta.1) (2020-05-26) +[Full Changelog](https://github.com/voyagermesh/voyager/compare/v13.0.0-beta.0...v13.0.0-beta.1) + +**Merged pull requests:** + +- Prepare release v13.0.0-beta.1 [\#1512](https://github.com/voyagermesh/voyager/pull/1512) ([tamalsaha](https://github.com/tamalsaha)) +- Generate both v1beta1 and v1 CRD YAML [\#1511](https://github.com/voyagermesh/voyager/pull/1511) ([tamalsaha](https://github.com/tamalsaha)) + +## [v13.0.0-beta.0](https://github.com/voyagermesh/voyager/tree/v13.0.0-beta.0) (2020-05-22) +[Full Changelog](https://github.com/voyagermesh/voyager/compare/v12.0.0...v13.0.0-beta.0) + +**Closed issues:** + +- README.md documentation links are broken [\#1506](https://github.com/voyagermesh/voyager/issues/1506) +- v12 release? [\#1492](https://github.com/voyagermesh/voyager/issues/1492) + +**Merged pull requests:** + +- Prepare release v13.0.0-beta.0 [\#1510](https://github.com/voyagermesh/voyager/pull/1510) ([tamalsaha](https://github.com/tamalsaha)) +- Update to Kubernetes v1.18.3 [\#1509](https://github.com/voyagermesh/voyager/pull/1509) ([tamalsaha](https://github.com/tamalsaha)) +- Fix README.md documentation links [\#1507](https://github.com/voyagermesh/voyager/pull/1507) ([RobertKirk](https://github.com/RobertKirk)) + +## [v12.0.0](https://github.com/voyagermesh/voyager/tree/v12.0.0) (2020-05-18) +[Full Changelog](https://github.com/voyagermesh/voyager/compare/v12.0.0-rc.2...v12.0.0) + +**Closed issues:** + +- voyager helm install failed for version v12.0.0-rc.2 [\#1501](https://github.com/voyagermesh/voyager/issues/1501) +- Automatic certificate renewal didn't occur [\#1443](https://github.com/voyagermesh/voyager/issues/1443) + +**Merged pull requests:** + +- Fix Update\*\*\*Status helpers [\#1505](https://github.com/voyagermesh/voyager/pull/1505) ([tamalsaha](https://github.com/tamalsaha)) +- Use recommended kubernetes app labels [\#1504](https://github.com/voyagermesh/voyager/pull/1504) ([tamalsaha](https://github.com/tamalsaha)) +- Correctly load \(HAProxy|Exporter\)ImageRepository options [\#1503](https://github.com/voyagermesh/voyager/pull/1503) ([RobertKirk](https://github.com/RobertKirk)) +- Change go module to voyagermesh.dev/voyager [\#1500](https://github.com/voyagermesh/voyager/pull/1500) ([tamalsaha](https://github.com/tamalsaha)) +- Update repository location [\#1499](https://github.com/voyagermesh/voyager/pull/1499) ([tamalsaha](https://github.com/tamalsaha)) + +## [v12.0.0-rc.2](https://github.com/voyagermesh/voyager/tree/v12.0.0-rc.2) (2020-04-25) +[Full Changelog](https://github.com/voyagermesh/voyager/compare/v12.0.0-rc.1...v12.0.0-rc.2) + +**Closed issues:** + +- Voyager operator continue crash forbidden permission [\#1483](https://github.com/voyagermesh/voyager/issues/1483) +- Allow option to set Docker repository for HAProxy and Exporter images [\#1449](https://github.com/voyagermesh/voyager/issues/1449) + +**Merged pull requests:** + +- Build HAProxy images from Makefile [\#1498](https://github.com/voyagermesh/voyager/pull/1498) ([tamalsaha](https://github.com/tamalsaha)) +- Use BASH\_SOURCE to calculate $REPO\_ROOT [\#1497](https://github.com/voyagermesh/voyager/pull/1497) ([tamalsaha](https://github.com/tamalsaha)) +- Update CHANGELOG.md [\#1496](https://github.com/voyagermesh/voyager/pull/1496) ([tamalsaha](https://github.com/tamalsaha)) +- Security: Upgrade to HAProxy 1.19.15 [\#1495](https://github.com/voyagermesh/voyager/pull/1495) ([tamalsaha](https://github.com/tamalsaha)) +- Add rbac permissions for statefulset [\#1494](https://github.com/voyagermesh/voyager/pull/1494) ([tamalsaha](https://github.com/tamalsaha)) +- Apply various fixes to chart [\#1493](https://github.com/voyagermesh/voyager/pull/1493) ([tamalsaha](https://github.com/tamalsaha)) +- Haproxy exporter image repository [\#1491](https://github.com/voyagermesh/voyager/pull/1491) ([RobertKirk](https://github.com/RobertKirk)) +- Add missing ingresses/status resource to operator ClusterRole [\#1488](https://github.com/voyagermesh/voyager/pull/1488) ([aletundo](https://github.com/aletundo)) +- Bump cloud.google.com/go to get timeout fix [\#1487](https://github.com/voyagermesh/voyager/pull/1487) ([joshk0](https://github.com/joshk0)) +- Never exit certificates renewal infinite loop [\#1486](https://github.com/voyagermesh/voyager/pull/1486) ([jayjun](https://github.com/jayjun)) +- workload-kind support StatefulSet [\#1482](https://github.com/voyagermesh/voyager/pull/1482) ([kuring](https://github.com/kuring)) +- Add restrict-to-operator-namespace flag [\#1481](https://github.com/voyagermesh/voyager/pull/1481) ([mazzy89](https://github.com/mazzy89)) +- Allow specifying rather than generating certs [\#1479](https://github.com/voyagermesh/voyager/pull/1479) ([tamalsaha](https://github.com/tamalsaha)) +- Refactor CI pipeline to build once. [\#1476](https://github.com/voyagermesh/voyager/pull/1476) ([tamalsaha](https://github.com/tamalsaha)) +- Bring back support for k8s 1.11 [\#1475](https://github.com/voyagermesh/voyager/pull/1475) ([tamalsaha](https://github.com/tamalsaha)) +- Use node\[0\]'s internal ip as minikube ip [\#1474](https://github.com/voyagermesh/voyager/pull/1474) ([tamalsaha](https://github.com/tamalsaha)) + +## [v12.0.0-rc.1](https://github.com/voyagermesh/voyager/tree/v12.0.0-rc.1) (2020-01-03) +[Full Changelog](https://github.com/voyagermesh/voyager/compare/v12.0.0-rc.0...v12.0.0-rc.1) + +**Closed issues:** + +- Voyager stops with Fatal [\#1471](https://github.com/voyagermesh/voyager/issues/1471) +- Helm Chart v11.0.1 errors on install [\#1438](https://github.com/voyagermesh/voyager/issues/1438) +- Voyager 10 fails to deploy with Helm installer [\#1400](https://github.com/voyagermesh/voyager/issues/1400) +- RBAC issue with helm install [\#1333](https://github.com/voyagermesh/voyager/issues/1333) + +**Merged pull requests:** + +- Prepare v12.0.0-rc.1 [\#1473](https://github.com/voyagermesh/voyager/pull/1473) ([tamalsaha](https://github.com/tamalsaha)) +- Exit only if UpdateStatus returns error. [\#1472](https://github.com/voyagermesh/voyager/pull/1472) ([tamalsaha](https://github.com/tamalsaha)) + +## [v12.0.0-rc.0](https://github.com/voyagermesh/voyager/tree/v12.0.0-rc.0) (2020-01-03) +[Full Changelog](https://github.com/voyagermesh/voyager/compare/v11.0.1...v12.0.0-rc.0) + +**Closed issues:** + +- Voyager with GKE HTTP\(S\) -L7 Load balancer [\#1453](https://github.com/voyagermesh/voyager/issues/1453) +- Voyager Installation Issue [\#1452](https://github.com/voyagermesh/voyager/issues/1452) +- ServiceMonitor endpoint path created with the wrong APISchemaIngress \(typo?\) [\#1451](https://github.com/voyagermesh/voyager/issues/1451) +- Problem with lets encrypt certificates [\#1444](https://github.com/voyagermesh/voyager/issues/1444) +- Helm Chart v11.0.0 errors on install [\#1433](https://github.com/voyagermesh/voyager/issues/1433) + +**Merged pull requests:** + +- Fix css class for helm 3 tab [\#1470](https://github.com/voyagermesh/voyager/pull/1470) ([tamalsaha](https://github.com/tamalsaha)) +- Prepare release v12.0.0-rc.0 [\#1469](https://github.com/voyagermesh/voyager/pull/1469) ([tamalsaha](https://github.com/tamalsaha)) +- Fix failed e2e tests [\#1468](https://github.com/voyagermesh/voyager/pull/1468) ([tamalsaha](https://github.com/tamalsaha)) +- Update installation instructions [\#1467](https://github.com/voyagermesh/voyager/pull/1467) ([tamalsaha](https://github.com/tamalsaha)) +- Run e2e tests in minikube [\#1466](https://github.com/voyagermesh/voyager/pull/1466) ([tamalsaha](https://github.com/tamalsaha)) +- Various fixes to chart [\#1465](https://github.com/voyagermesh/voyager/pull/1465) ([tamalsaha](https://github.com/tamalsaha)) +- Delete script based installer [\#1464](https://github.com/voyagermesh/voyager/pull/1464) ([tamalsaha](https://github.com/tamalsaha)) +- Revendor [\#1463](https://github.com/voyagermesh/voyager/pull/1463) ([tamalsaha](https://github.com/tamalsaha)) +- Fix typo for APISchemaIngress [\#1461](https://github.com/voyagermesh/voyager/pull/1461) ([ttauveron](https://github.com/ttauveron)) +- Use OwnerReference helpers from kmodules [\#1460](https://github.com/voyagermesh/voyager/pull/1460) ([tamalsaha](https://github.com/tamalsaha)) +- Fix helm v3.0.0 chart error on install [\#1459](https://github.com/voyagermesh/voyager/pull/1459) ([bg-master](https://github.com/bg-master)) +- Run fuzz tests for and set `preserveUnknownFields: false [\#1458](https://github.com/voyagermesh/voyager/pull/1458) ([tamalsaha](https://github.com/tamalsaha)) +- Properly handle empty image pull secret name in installer [\#1457](https://github.com/voyagermesh/voyager/pull/1457) ([tamalsaha](https://github.com/tamalsaha)) +- Fix broken links and chart validation [\#1456](https://github.com/voyagermesh/voyager/pull/1456) ([tamalsaha](https://github.com/tamalsaha)) +- Update client-go to kubernetes-1.16.3 [\#1455](https://github.com/voyagermesh/voyager/pull/1455) ([tamalsaha](https://github.com/tamalsaha)) +- Use controller-tools@v0.2.2 to generate structural schema [\#1450](https://github.com/voyagermesh/voyager/pull/1450) ([tamalsaha](https://github.com/tamalsaha)) +- Fix Linter Issues [\#1448](https://github.com/voyagermesh/voyager/pull/1448) ([faem](https://github.com/faem)) +- Various Makefile improvements [\#1447](https://github.com/voyagermesh/voyager/pull/1447) ([tamalsaha](https://github.com/tamalsaha)) +- Typo fix [\#1445](https://github.com/voyagermesh/voyager/pull/1445) ([jwenz723](https://github.com/jwenz723)) +- Use kubebuilder to generate crd manifests [\#1442](https://github.com/voyagermesh/voyager/pull/1442) ([tamalsaha](https://github.com/tamalsaha)) +- Fix helm chart install v11.0.1 [\#1441](https://github.com/voyagermesh/voyager/pull/1441) ([soosap](https://github.com/soosap)) + +## [v11.0.1](https://github.com/voyagermesh/voyager/tree/v11.0.1) (2019-09-20) +[Full Changelog](https://github.com/voyagermesh/voyager/compare/v11.0.0...v11.0.1) + +**Merged pull requests:** + +- Download onessl version v0.13.1 for Kubernetes 1.16 fix [\#1437](https://github.com/voyagermesh/voyager/pull/1437) ([tamalsaha](https://github.com/tamalsaha)) +- Fix broken helm chart: unexpected end definition in cluster-role.yaml [\#1436](https://github.com/voyagermesh/voyager/pull/1436) ([kirrmann](https://github.com/kirrmann)) +- Templatize front matter [\#1434](https://github.com/voyagermesh/voyager/pull/1434) ([tamalsaha](https://github.com/tamalsaha)) + +## [v11.0.0](https://github.com/voyagermesh/voyager/tree/v11.0.0) (2019-09-10) +[Full Changelog](https://github.com/voyagermesh/voyager/compare/10.0.0...v11.0.0) + +**Closed issues:** + +- Integration issue with Jenkins [\#1403](https://github.com/voyagermesh/voyager/issues/1403) +- TLS on backend communication [\#1401](https://github.com/voyagermesh/voyager/issues/1401) +- Remove --rbac flag [\#1388](https://github.com/voyagermesh/voyager/issues/1388) +- Allow Backend Weight to be 0 [\#1387](https://github.com/voyagermesh/voyager/issues/1387) +- Voyager Let's Encrypt fails when using HTTP-01 challenge with multiple domains [\#1385](https://github.com/voyagermesh/voyager/issues/1385) +- Drain a backend in terminating status? [\#1196](https://github.com/voyagermesh/voyager/issues/1196) + +**Merged pull requests:** + +- Prepare docs for v11.0.0 release [\#1432](https://github.com/voyagermesh/voyager/pull/1432) ([tamalsaha](https://github.com/tamalsaha)) +- Update dependencies [\#1431](https://github.com/voyagermesh/voyager/pull/1431) ([tamalsaha](https://github.com/tamalsaha)) +- Add --ingress-class to hack/deploy/voyager.sh [\#1430](https://github.com/voyagermesh/voyager/pull/1430) ([mildred](https://github.com/mildred)) +- How to change scopes on a running kubernetes cluster. [\#1428](https://github.com/voyagermesh/voyager/pull/1428) ([sniip-code](https://github.com/sniip-code)) +- Use github.com/akamai/AkamaiOPEN-edgegrid-golang@v0.8.0 [\#1421](https://github.com/voyagermesh/voyager/pull/1421) ([tamalsaha](https://github.com/tamalsaha)) +- Add license header for Makefile [\#1420](https://github.com/voyagermesh/voyager/pull/1420) ([tamalsaha](https://github.com/tamalsaha)) +- Update azure-sdk-for-go to v31.1.0 [\#1419](https://github.com/voyagermesh/voyager/pull/1419) ([tamalsaha](https://github.com/tamalsaha)) +- Add cert-manager docs [\#1417](https://github.com/voyagermesh/voyager/pull/1417) ([kfoozminus](https://github.com/kfoozminus)) +- Docs: notice about tls secret special characters [\#1416](https://github.com/voyagermesh/voyager/pull/1416) ([mkozjak](https://github.com/mkozjak)) +- Update .yaml apps/v1 and Update Vendor to Fix DaemonSet Issue [\#1410](https://github.com/voyagermesh/voyager/pull/1410) ([kfoozminus](https://github.com/kfoozminus)) +- Allow replica change when no hpa [\#1409](https://github.com/voyagermesh/voyager/pull/1409) ([kfoozminus](https://github.com/kfoozminus)) +- Fix Docs and Example Files [\#1408](https://github.com/voyagermesh/voyager/pull/1408) ([kfoozminus](https://github.com/kfoozminus)) +- Avoid 503 Error Doc [\#1407](https://github.com/voyagermesh/voyager/pull/1407) ([kfoozminus](https://github.com/kfoozminus)) +- Change timeout connect to 5s [\#1406](https://github.com/voyagermesh/voyager/pull/1406) ([kfoozminus](https://github.com/kfoozminus)) +- Add hard-stop-after [\#1405](https://github.com/voyagermesh/voyager/pull/1405) ([kfoozminus](https://github.com/kfoozminus)) +- Add Makefile [\#1398](https://github.com/voyagermesh/voyager/pull/1398) ([tamalsaha](https://github.com/tamalsaha)) +- Remove --rbac flag [\#1397](https://github.com/voyagermesh/voyager/pull/1397) ([kfoozminus](https://github.com/kfoozminus)) +- Allow Backend Weight to be 0 [\#1396](https://github.com/voyagermesh/voyager/pull/1396) ([kfoozminus](https://github.com/kfoozminus)) +- Add HAProxy Agent Check [\#1395](https://github.com/voyagermesh/voyager/pull/1395) ([kfoozminus](https://github.com/kfoozminus)) +- Use absolute path as aliases for reference docs [\#1394](https://github.com/voyagermesh/voyager/pull/1394) ([tamalsaha](https://github.com/tamalsaha)) +- Update to k8s client libraries to 1.14.0 [\#1392](https://github.com/voyagermesh/voyager/pull/1392) ([tamalsaha](https://github.com/tamalsaha)) +- Use GO Modules [\#1391](https://github.com/voyagermesh/voyager/pull/1391) ([tamalsaha](https://github.com/tamalsaha)) +- Revendor dependencies in preparation for go module support [\#1390](https://github.com/voyagermesh/voyager/pull/1390) ([tamalsaha](https://github.com/tamalsaha)) +- Fix Typo [\#1384](https://github.com/voyagermesh/voyager/pull/1384) ([kfoozminus](https://github.com/kfoozminus)) +- remove single quotes from servicePort [\#1365](https://github.com/voyagermesh/voyager/pull/1365) ([fatelgit](https://github.com/fatelgit)) + +## [10.0.0](https://github.com/voyagermesh/voyager/tree/10.0.0) (2019-04-29) +[Full Changelog](https://github.com/voyagermesh/voyager/compare/9.0.0...10.0.0) + +**Closed issues:** + +- Custom LUA scripts support [\#1370](https://github.com/voyagermesh/voyager/issues/1370) +- 9.0.0 fails to install on new GKE cluster [\#1360](https://github.com/voyagermesh/voyager/issues/1360) +- Cannot use voyager/client with client-go collision with vendored packages [\#1356](https://github.com/voyagermesh/voyager/issues/1356) +- Oauth2\_Proxy is dead, long live Oauth2\_Proxy [\#1302](https://github.com/voyagermesh/voyager/issues/1302) +- Upgrade to HAProxy 1.9.5 [\#1362](https://github.com/voyagermesh/voyager/issues/1362) + +**Merged pull requests:** + +- Prepare docs for 10.0.0 release [\#1383](https://github.com/voyagermesh/voyager/pull/1383) ([tamalsaha](https://github.com/tamalsaha)) +- Update Kubernetes client libraries to 1.13.5 [\#1379](https://github.com/voyagermesh/voyager/pull/1379) ([tamalsaha](https://github.com/tamalsaha)) +- Get id-token from Authorization header [\#1376](https://github.com/voyagermesh/voyager/pull/1376) ([diptadas](https://github.com/diptadas)) +- Update haproxy version to 1.9.6 [\#1374](https://github.com/voyagermesh/voyager/pull/1374) ([diptadas](https://github.com/diptadas)) +- Update haproxy version to 1.9.4 [\#1368](https://github.com/voyagermesh/voyager/pull/1368) ([diptadas](https://github.com/diptadas)) +- Update Kubernetes client libraries to 1.13.0 [\#1359](https://github.com/voyagermesh/voyager/pull/1359) ([tamalsaha](https://github.com/tamalsaha)) +- Clarify how HAProxy presents certificates to clients [\#1358](https://github.com/voyagermesh/voyager/pull/1358) ([diptadas](https://github.com/diptadas)) + +## [9.0.0](https://github.com/voyagermesh/voyager/tree/9.0.0) (2019-02-20) +[Full Changelog](https://github.com/voyagermesh/voyager/compare/8.0.1...9.0.0) + +**Implemented enhancements:** + +- Mount custom configmap [\#1304](https://github.com/voyagermesh/voyager/issues/1304) + +**Fixed bugs:** + +- appscode/oauth2\_proxy:2.3.0 is broken [\#1300](https://github.com/voyagermesh/voyager/issues/1300) +- Unavailable services get removed from HAProxy configuration [\#1285](https://github.com/voyagermesh/voyager/issues/1285) + +**Closed issues:** + +- Add support for Gandi V5 acme dns provider [\#1337](https://github.com/voyagermesh/voyager/issues/1337) +- Memory and CPU requests for Daemonset? [\#1335](https://github.com/voyagermesh/voyager/issues/1335) +- HAProxy OAuth2 [\#1329](https://github.com/voyagermesh/voyager/issues/1329) +- Do not sort ALPN options [\#1327](https://github.com/voyagermesh/voyager/issues/1327) +- Support Haproxy 1.9.2 and gRPC [\#1326](https://github.com/voyagermesh/voyager/issues/1326) +- 503 Service Unavailable [\#1319](https://github.com/voyagermesh/voyager/issues/1319) +- Certificate renew should be configurable [\#1314](https://github.com/voyagermesh/voyager/issues/1314) +- Ingress Configuration with URL Redirection [\#1307](https://github.com/voyagermesh/voyager/issues/1307) +- unsupported LBType LoadBalancer [\#1297](https://github.com/voyagermesh/voyager/issues/1297) +- ingress uses unsupported LBType LoadBalancer [\#1293](https://github.com/voyagermesh/voyager/issues/1293) +- Dependabot couldn't find a Gopkg.toml for this project [\#1289](https://github.com/voyagermesh/voyager/issues/1289) +- Voyager can't communicate with other pods other than stats port [\#1287](https://github.com/voyagermesh/voyager/issues/1287) +- Cannot set cookie name or path [\#1286](https://github.com/voyagermesh/voyager/issues/1286) +- Voyager pods are destroyed and recreated without any clear reason. [\#1284](https://github.com/voyagermesh/voyager/issues/1284) +- Potential Issue With VOYAGER\_\* Environment Variables [\#1224](https://github.com/voyagermesh/voyager/issues/1224) +- support of named servicePort [\#1193](https://github.com/voyagermesh/voyager/issues/1193) +- Disable onessl analytics when voyager analytics is disabled [\#1332](https://github.com/voyagermesh/voyager/issues/1332) +- TLS with HTTP and TCP - Certificate Mismatch [\#1325](https://github.com/voyagermesh/voyager/issues/1325) +- installation error [\#1318](https://github.com/voyagermesh/voyager/issues/1318) +- Readiness probe failed: HTTP probe failed with statuscode: 403 [\#1296](https://github.com/voyagermesh/voyager/issues/1296) +- 503 Service Unavailable when nodePort is set to 443 [\#1290](https://github.com/voyagermesh/voyager/issues/1290) +- Stuck at deletion - finalizers: voyager.appscode.com [\#1249](https://github.com/voyagermesh/voyager/issues/1249) +- TCP SNI doesn't seem to work [\#1247](https://github.com/voyagermesh/voyager/issues/1247) +- Support multiple certificates for tls struct [\#1167](https://github.com/voyagermesh/voyager/issues/1167) +- Document how to use LB alg `leastconn` [\#945](https://github.com/voyagermesh/voyager/issues/945) + +**Merged pull requests:** + +- Update LE certificate renewal buffer info [\#1355](https://github.com/voyagermesh/voyager/pull/1355) ([tamalsaha](https://github.com/tamalsaha)) +- Release 9.0.0 [\#1354](https://github.com/voyagermesh/voyager/pull/1354) ([tamalsaha](https://github.com/tamalsaha)) +- Fix hugo frontmatter for HTTP/2 doc [\#1353](https://github.com/voyagermesh/voyager/pull/1353) ([tamalsaha](https://github.com/tamalsaha)) +- Fix e2e test for empty backend [\#1352](https://github.com/voyagermesh/voyager/pull/1352) ([tamalsaha](https://github.com/tamalsaha)) +- Update changelog for 9.0.0 [\#1350](https://github.com/voyagermesh/voyager/pull/1350) ([tamalsaha](https://github.com/tamalsaha)) +- Prepare docs for 9.0.0 release [\#1349](https://github.com/voyagermesh/voyager/pull/1349) ([tamalsaha](https://github.com/tamalsaha)) +- Don't remove backends with empty endpoints [\#1348](https://github.com/voyagermesh/voyager/pull/1348) ([tamalsaha](https://github.com/tamalsaha)) +- Pass Annotations to Operator PodTemplate [\#1347](https://github.com/voyagermesh/voyager/pull/1347) ([tamalsaha](https://github.com/tamalsaha)) +- Don't use priority class when operator namespace is not kube-system [\#1346](https://github.com/voyagermesh/voyager/pull/1346) ([tamalsaha](https://github.com/tamalsaha)) +- Use onessl 0.10.0 [\#1345](https://github.com/voyagermesh/voyager/pull/1345) ([tamalsaha](https://github.com/tamalsaha)) +- Fix the case for deploying using MINGW64 for windows [\#1344](https://github.com/voyagermesh/voyager/pull/1344) ([tamalsaha](https://github.com/tamalsaha)) +- Add guides for configuring multiple TLS [\#1342](https://github.com/voyagermesh/voyager/pull/1342) ([diptadas](https://github.com/diptadas)) +- Update sticky-session.md [\#1341](https://github.com/voyagermesh/voyager/pull/1341) ([mkozjak](https://github.com/mkozjak)) +- Add option for configuring load balancing algorithm in backends [\#1340](https://github.com/voyagermesh/voyager/pull/1340) ([diptadas](https://github.com/diptadas)) +- Add test for gRPC stream [\#1339](https://github.com/voyagermesh/voyager/pull/1339) ([diptadas](https://github.com/diptadas)) +- Add support for Gandi V5 acme dns provider [\#1338](https://github.com/voyagermesh/voyager/pull/1338) ([ThomasKliszowski](https://github.com/ThomasKliszowski)) +- Update TCP docs [\#1336](https://github.com/voyagermesh/voyager/pull/1336) ([diptadas](https://github.com/diptadas)) +- Fix test-server certs [\#1331](https://github.com/voyagermesh/voyager/pull/1331) ([diptadas](https://github.com/diptadas)) +- Support mounting any configmap/secret into HAProxy pod [\#1330](https://github.com/voyagermesh/voyager/pull/1330) ([diptadas](https://github.com/diptadas)) +- Add support for gRPC [\#1328](https://github.com/voyagermesh/voyager/pull/1328) ([diptadas](https://github.com/diptadas)) +- readme: overview: certificates.voyager.appscode.com [\#1324](https://github.com/voyagermesh/voyager/pull/1324) ([mkozjak](https://github.com/mkozjak)) +- readme: single-service update [\#1323](https://github.com/voyagermesh/voyager/pull/1323) ([mkozjak](https://github.com/mkozjak)) +- single-service: should be 'test-service' instead of 'test-server' [\#1322](https://github.com/voyagermesh/voyager/pull/1322) ([mkozjak](https://github.com/mkozjak)) +- readme: minor typo fix [\#1321](https://github.com/voyagermesh/voyager/pull/1321) ([mkozjak](https://github.com/mkozjak)) +- Add option for configuring certificate renewal [\#1316](https://github.com/voyagermesh/voyager/pull/1316) ([diptadas](https://github.com/diptadas)) +- Add finalizer only when firewall supported [\#1315](https://github.com/voyagermesh/voyager/pull/1315) ([diptadas](https://github.com/diptadas)) +- Fix ClusterProvider name for concourse tests [\#1313](https://github.com/voyagermesh/voyager/pull/1313) ([tahsinrahman](https://github.com/tahsinrahman)) +- Update haproxy version to 1.9.2 [\#1312](https://github.com/voyagermesh/voyager/pull/1312) ([diptadas](https://github.com/diptadas)) +- Fix cookie name and hash type in service annotation [\#1311](https://github.com/voyagermesh/voyager/pull/1311) ([diptadas](https://github.com/diptadas)) +- Add support for named service port [\#1310](https://github.com/voyagermesh/voyager/pull/1310) ([diptadas](https://github.com/diptadas)) +- Add certificate health checker [\#1309](https://github.com/voyagermesh/voyager/pull/1309) ([tamalsaha](https://github.com/tamalsaha)) +- Update webhook error message format for Kubernetes 1.13+ [\#1306](https://github.com/voyagermesh/voyager/pull/1306) ([tamalsaha](https://github.com/tamalsaha)) +- Update xenwolf/lego to 2018-12 [\#1305](https://github.com/voyagermesh/voyager/pull/1305) ([tamalsaha](https://github.com/tamalsaha)) +- Update appscode/oauth2\_proxy image version [\#1301](https://github.com/voyagermesh/voyager/pull/1301) ([diptadas](https://github.com/diptadas)) +- Set periodic analytics [\#1298](https://github.com/voyagermesh/voyager/pull/1298) ([tamalsaha](https://github.com/tamalsaha)) +- Fixed typo [\#1295](https://github.com/voyagermesh/voyager/pull/1295) ([endrec](https://github.com/endrec)) +- Update Kubernetes client libraries to 1.12.0 [\#1292](https://github.com/voyagermesh/voyager/pull/1292) ([tamalsaha](https://github.com/tamalsaha)) +- Update xray to handle any webhook denied request [\#1282](https://github.com/voyagermesh/voyager/pull/1282) ([tamalsaha](https://github.com/tamalsaha)) +- Expose flags to chart [\#1281](https://github.com/voyagermesh/voyager/pull/1281) ([tamalsaha](https://github.com/tamalsaha)) +- Pass image pull secrets for cleaner job in chart [\#1280](https://github.com/voyagermesh/voyager/pull/1280) ([tamalsaha](https://github.com/tamalsaha)) +- Update kubernetes client libraries to 1.12.0 [\#1279](https://github.com/voyagermesh/voyager/pull/1279) ([tamalsaha](https://github.com/tamalsaha)) + +## [8.0.1](https://github.com/voyagermesh/voyager/tree/8.0.1) (2018-10-11) +[Full Changelog](https://github.com/voyagermesh/voyager/compare/8.0.0...8.0.1) + +**Fixed bugs:** + +- Support EKS [\#1130](https://github.com/voyagermesh/voyager/issues/1130) +- Test against AKS [\#1112](https://github.com/voyagermesh/voyager/issues/1112) +- Only use apps/v1 apigroup from controller. [\#1274](https://github.com/voyagermesh/voyager/pull/1274) ([tamalsaha](https://github.com/tamalsaha)) + +**Merged pull requests:** + +- Expose flags to installer script [\#1278](https://github.com/voyagermesh/voyager/pull/1278) ([tamalsaha](https://github.com/tamalsaha)) +- Fix webhook xray checker [\#1277](https://github.com/voyagermesh/voyager/pull/1277) ([tamalsaha](https://github.com/tamalsaha)) +- Handle ErrCallingWebhook in xray [\#1276](https://github.com/voyagermesh/voyager/pull/1276) ([tamalsaha](https://github.com/tamalsaha)) +- Prepare docs for 8.0.1 release [\#1275](https://github.com/voyagermesh/voyager/pull/1275) ([tamalsaha](https://github.com/tamalsaha)) +- Fix upgrade flow for installer script [\#1273](https://github.com/voyagermesh/voyager/pull/1273) ([tamalsaha](https://github.com/tamalsaha)) + +## [8.0.0](https://github.com/voyagermesh/voyager/tree/8.0.0) (2018-10-09) +[Full Changelog](https://github.com/voyagermesh/voyager/compare/7.4.0...8.0.0) + +**Fixed bugs:** + +- Support custom errorfiles with .http ext [\#1238](https://github.com/voyagermesh/voyager/issues/1238) +- Correctly handle ignored openapi prefixes [\#1198](https://github.com/voyagermesh/voyager/pull/1198) ([tamalsaha](https://github.com/tamalsaha)) + +**Closed issues:** + +- Understanding/Documenting CPU Usage, behaviour and limits. [\#1267](https://github.com/voyagermesh/voyager/issues/1267) +- "enableValidatingWebhook: false" doesn't work anymore [\#1264](https://github.com/voyagermesh/voyager/issues/1264) +- Support readiness and liveness probes in generated deployments [\#1262](https://github.com/voyagermesh/voyager/issues/1262) +- Haproxy pods are constantly recreated when using multiple annotations [\#1251](https://github.com/voyagermesh/voyager/issues/1251) +- Support TLSv1.3 [\#1245](https://github.com/voyagermesh/voyager/issues/1245) +- Support Internal Load Balancer Type [\#1197](https://github.com/voyagermesh/voyager/issues/1197) +- Fix error message [\#1194](https://github.com/voyagermesh/voyager/issues/1194) +- official page: docs link dead [\#1190](https://github.com/voyagermesh/voyager/issues/1190) +- Use apps/v1 api [\#583](https://github.com/voyagermesh/voyager/issues/583) + +**Merged pull requests:** + +- Fix Ingress column header [\#1272](https://github.com/voyagermesh/voyager/pull/1272) ([tamalsaha](https://github.com/tamalsaha)) +- Fix chart [\#1271](https://github.com/voyagermesh/voyager/pull/1271) ([tamalsaha](https://github.com/tamalsaha)) +- Set SideEffects to None for webhooks [\#1270](https://github.com/voyagermesh/voyager/pull/1270) ([tamalsaha](https://github.com/tamalsaha)) +- Prepare docs for 8.0.0 release [\#1269](https://github.com/voyagermesh/voyager/pull/1269) ([tamalsaha](https://github.com/tamalsaha)) +- Detect failure quickly. [\#1268](https://github.com/voyagermesh/voyager/pull/1268) ([tamalsaha](https://github.com/tamalsaha)) +- Check webhooks are activated in installer script [\#1266](https://github.com/voyagermesh/voyager/pull/1266) ([tamalsaha](https://github.com/tamalsaha)) +- Write webhook xray event to operator workload [\#1265](https://github.com/voyagermesh/voyager/pull/1265) ([tamalsaha](https://github.com/tamalsaha)) +- Support readinessProbe and livenessProbe [\#1263](https://github.com/voyagermesh/voyager/pull/1263) ([bpineau](https://github.com/bpineau)) +- Update error-files.md [\#1260](https://github.com/voyagermesh/voyager/pull/1260) ([simnyc](https://github.com/simnyc)) +- Update FixAKS helper [\#1259](https://github.com/voyagermesh/voyager/pull/1259) ([tamalsaha](https://github.com/tamalsaha)) +- Use FQDN for kube-apiserver in AKS [\#1258](https://github.com/voyagermesh/voyager/pull/1258) ([tamalsaha](https://github.com/tamalsaha)) +- Rename webhook apiserver ca CN [\#1257](https://github.com/voyagermesh/voyager/pull/1257) ([tamalsaha](https://github.com/tamalsaha)) +- Check if Kubernetes version is supported before running operator [\#1256](https://github.com/voyagermesh/voyager/pull/1256) ([tamalsaha](https://github.com/tamalsaha)) +- Format user roles [\#1255](https://github.com/voyagermesh/voyager/pull/1255) ([tamalsaha](https://github.com/tamalsaha)) +- Enable webhooks by default in chart [\#1254](https://github.com/voyagermesh/voyager/pull/1254) ([tamalsaha](https://github.com/tamalsaha)) +- Support configuring cleaner image via values in chart [\#1253](https://github.com/voyagermesh/voyager/pull/1253) ([tamalsaha](https://github.com/tamalsaha)) +- Sort pod annotations to avoid template changes [\#1252](https://github.com/voyagermesh/voyager/pull/1252) ([lbernail](https://github.com/lbernail)) +- Use --pull flag with docker build [\#1248](https://github.com/voyagermesh/voyager/pull/1248) ([tamalsaha](https://github.com/tamalsaha)) +- add support for custom templates from config map to chart [\#1246](https://github.com/voyagermesh/voyager/pull/1246) ([bodewig](https://github.com/bodewig)) +- Use forked k8s.io/client-go v1.11.3 [\#1243](https://github.com/voyagermesh/voyager/pull/1243) ([tamalsaha](https://github.com/tamalsaha)) +- Update k8s.io/apiserver [\#1241](https://github.com/voyagermesh/voyager/pull/1241) ([tamalsaha](https://github.com/tamalsaha)) +- Use kubernetes-1.11.3 [\#1240](https://github.com/voyagermesh/voyager/pull/1240) ([tamalsaha](https://github.com/tamalsaha)) +- Update CertStore [\#1239](https://github.com/voyagermesh/voyager/pull/1239) ([tamalsaha](https://github.com/tamalsaha)) +- Touch custom errorfiles provided in configmap [\#1237](https://github.com/voyagermesh/voyager/pull/1237) ([tamalsaha](https://github.com/tamalsaha)) +- Support pod annotations in chart [\#1236](https://github.com/voyagermesh/voyager/pull/1236) ([tamalsaha](https://github.com/tamalsaha)) +- Set serviceAccount for cleaner job [\#1235](https://github.com/voyagermesh/voyager/pull/1235) ([tamalsaha](https://github.com/tamalsaha)) +- Cleanup webhooks when chart is deleted [\#1233](https://github.com/voyagermesh/voyager/pull/1233) ([tamalsaha](https://github.com/tamalsaha)) +- Fix log formatting [\#1232](https://github.com/voyagermesh/voyager/pull/1232) ([tamalsaha](https://github.com/tamalsaha)) +- Use IntHash as status.observedGeneration [\#1231](https://github.com/voyagermesh/voyager/pull/1231) ([tamalsaha](https://github.com/tamalsaha)) +- Update pipeline [\#1230](https://github.com/voyagermesh/voyager/pull/1230) ([tahsinrahman](https://github.com/tahsinrahman)) +- Add observedGenerationHash field [\#1228](https://github.com/voyagermesh/voyager/pull/1228) ([tamalsaha](https://github.com/tamalsaha)) +- Fix uninstall for concourse [\#1227](https://github.com/voyagermesh/voyager/pull/1227) ([tahsinrahman](https://github.com/tahsinrahman)) +- Use priorityClass `system-cluster-critical` for operator pods. [\#1223](https://github.com/voyagermesh/voyager/pull/1223) ([tamalsaha](https://github.com/tamalsaha)) +- Revendor prometheus-operator [\#1222](https://github.com/voyagermesh/voyager/pull/1222) ([tamalsaha](https://github.com/tamalsaha)) +- Use apps/v1 apiGroup [\#1221](https://github.com/voyagermesh/voyager/pull/1221) ([tamalsaha](https://github.com/tamalsaha)) +- Use concourse scripts from libbuild [\#1219](https://github.com/voyagermesh/voyager/pull/1219) ([tahsinrahman](https://github.com/tahsinrahman)) +- Add AlreadyObserved helpers [\#1218](https://github.com/voyagermesh/voyager/pull/1218) ([tamalsaha](https://github.com/tamalsaha)) +- Add categories [\#1217](https://github.com/voyagermesh/voyager/pull/1217) ([tamalsaha](https://github.com/tamalsaha)) +- Fix UpdateStatus helpers [\#1216](https://github.com/voyagermesh/voyager/pull/1216) ([tamalsaha](https://github.com/tamalsaha)) +- Upgrade xenwolf/lego library [\#1214](https://github.com/voyagermesh/voyager/pull/1214) ([tamalsaha](https://github.com/tamalsaha)) +- Support pod priority [\#1213](https://github.com/voyagermesh/voyager/pull/1213) ([tamalsaha](https://github.com/tamalsaha)) +- Enable status sub resource for crd yamls [\#1212](https://github.com/voyagermesh/voyager/pull/1212) ([tamalsaha](https://github.com/tamalsaha)) +- Move crds to api folder [\#1209](https://github.com/voyagermesh/voyager/pull/1209) ([tamalsaha](https://github.com/tamalsaha)) +- Retry UpdateStatus calls [\#1208](https://github.com/voyagermesh/voyager/pull/1208) ([tamalsaha](https://github.com/tamalsaha)) +- Revendor monitoring-agent-api [\#1207](https://github.com/voyagermesh/voyager/pull/1207) ([tamalsaha](https://github.com/tamalsaha)) +- Use kmodules.xyz/monitoring-agent-api [\#1206](https://github.com/voyagermesh/voyager/pull/1206) ([tamalsaha](https://github.com/tamalsaha)) +- Document limited NLB support [\#1205](https://github.com/voyagermesh/voyager/pull/1205) ([tamalsaha](https://github.com/tamalsaha)) +- Update GKE cluster role [\#1204](https://github.com/voyagermesh/voyager/pull/1204) ([tamalsaha](https://github.com/tamalsaha)) +- Add throughput graph [\#1201](https://github.com/voyagermesh/voyager/pull/1201) ([tamalsaha](https://github.com/tamalsaha)) +- Don't error out if old monitoring agent is missing [\#1195](https://github.com/voyagermesh/voyager/pull/1195) ([tamalsaha](https://github.com/tamalsaha)) +- Prepare docs for 7.4.0 release [\#1192](https://github.com/voyagermesh/voyager/pull/1192) ([tamalsaha](https://github.com/tamalsaha)) +- Add validation webhook xray [\#1261](https://github.com/voyagermesh/voyager/pull/1261) ([tamalsaha](https://github.com/tamalsaha)) + +## [7.4.0](https://github.com/voyagermesh/voyager/tree/7.4.0) (2018-07-12) +[Full Changelog](https://github.com/voyagermesh/voyager/compare/7.3.0...7.4.0) + +**Closed issues:** + +- Supporting multiple hostnames per backend service [\#1187](https://github.com/voyagermesh/voyager/issues/1187) +- Custom Tolerations and affinity [\#1181](https://github.com/voyagermesh/voyager/issues/1181) + +**Merged pull requests:** + +- Prepare docs for 7.4.0 release [\#1189](https://github.com/voyagermesh/voyager/pull/1189) ([tamalsaha](https://github.com/tamalsaha)) +- Use version and additional columns for crds [\#1183](https://github.com/voyagermesh/voyager/pull/1183) ([tamalsaha](https://github.com/tamalsaha)) +- Chart support for custom tolerations and affinity [\#1182](https://github.com/voyagermesh/voyager/pull/1182) ([octplane](https://github.com/octplane)) +- Update client-go to v8.0.0 [\#1177](https://github.com/voyagermesh/voyager/pull/1177) ([tamalsaha](https://github.com/tamalsaha)) + +## [7.3.0](https://github.com/voyagermesh/voyager/tree/7.3.0) (2018-07-08) +[Full Changelog](https://github.com/voyagermesh/voyager/compare/7.2.0...7.3.0) + +**Fixed bugs:** + +- Upgrade HAProxy [\#1173](https://github.com/voyagermesh/voyager/issues/1173) +- Throw validation error when LBType changes. [\#1172](https://github.com/voyagermesh/voyager/pull/1172) ([tamalsaha](https://github.com/tamalsaha)) + +**Closed issues:** + +- Backend name conflicts for multiple bind addresses [\#1164](https://github.com/voyagermesh/voyager/issues/1164) +- RBAC broken in 7.2 if using ClusterRole [\#1163](https://github.com/voyagermesh/voyager/issues/1163) +- Crash when operator container starts [\#1161](https://github.com/voyagermesh/voyager/issues/1161) + +**Merged pull requests:** + +- Update chart installation instruction for Kubernetes 1.11 [\#1180](https://github.com/voyagermesh/voyager/pull/1180) ([tamalsaha](https://github.com/tamalsaha)) +- Prepare docs for 7.3.0 [\#1179](https://github.com/voyagermesh/voyager/pull/1179) ([tamalsaha](https://github.com/tamalsaha)) +- Format shell scripts [\#1178](https://github.com/voyagermesh/voyager/pull/1178) ([tamalsaha](https://github.com/tamalsaha)) +- Remove status from crd.yaml [\#1176](https://github.com/voyagermesh/voyager/pull/1176) ([tamalsaha](https://github.com/tamalsaha)) +- Add description to crd structs [\#1174](https://github.com/voyagermesh/voyager/pull/1174) ([tamalsaha](https://github.com/tamalsaha)) +- Use HAProxy 1.8.12 [\#1175](https://github.com/voyagermesh/voyager/pull/1175) ([tamalsaha](https://github.com/tamalsaha)) +- Document enableStatusSubresource in chart [\#1171](https://github.com/voyagermesh/voyager/pull/1171) ([tamalsaha](https://github.com/tamalsaha)) +- Remove deprecated fields from Certificate crd [\#1170](https://github.com/voyagermesh/voyager/pull/1170) ([tamalsaha](https://github.com/tamalsaha)) +- Enable status subresource for voyager crds [\#1169](https://github.com/voyagermesh/voyager/pull/1169) ([tamalsaha](https://github.com/tamalsaha)) +- Remove description on root schema [\#1168](https://github.com/voyagermesh/voyager/pull/1168) ([conorbranagan](https://github.com/conorbranagan)) +- Add nodeSelector for the operator [\#1166](https://github.com/voyagermesh/voyager/pull/1166) ([ocdi](https://github.com/ocdi)) +- Fixed auto-generated backend names [\#1165](https://github.com/voyagermesh/voyager/pull/1165) ([diptadas](https://github.com/diptadas)) + +## [7.2.0](https://github.com/voyagermesh/voyager/tree/7.2.0) (2018-06-25) +[Full Changelog](https://github.com/voyagermesh/voyager/compare/7.1.1...7.2.0) + +**Implemented enhancements:** + +- Allow user to set healthCheckNodePort for LoadBalancer [\#1128](https://github.com/voyagermesh/voyager/issues/1128) + +**Fixed bugs:** + +- Certificate renew fails [\#1023](https://github.com/voyagermesh/voyager/issues/1023) +- Operator's memory usage over time [\#1004](https://github.com/voyagermesh/voyager/issues/1004) + +**Closed issues:** + +- 4xx and 5xx stats are not reported via prometheus exporter [\#1146](https://github.com/voyagermesh/voyager/issues/1146) +- Release java client for Voyager [\#1142](https://github.com/voyagermesh/voyager/issues/1142) +- Document ingress.appscode.com/check [\#1140](https://github.com/voyagermesh/voyager/issues/1140) +- tls-backend annotation ignored for external service [\#1139](https://github.com/voyagermesh/voyager/issues/1139) +- Revendor lego [\#1137](https://github.com/voyagermesh/voyager/issues/1137) +- support forwarding authorization header for oauth2\_proxy [\#1073](https://github.com/voyagermesh/voyager/issues/1073) +- Pause Certificate [\#1022](https://github.com/voyagermesh/voyager/issues/1022) + +**Merged pull requests:** + +- Preparep docs for 7.2.0 release [\#1160](https://github.com/voyagermesh/voyager/pull/1160) ([tamalsaha](https://github.com/tamalsaha)) +- Document operator profiler [\#1158](https://github.com/voyagermesh/voyager/pull/1158) ([tamalsaha](https://github.com/tamalsaha)) +- Added docs for backend health check [\#1156](https://github.com/voyagermesh/voyager/pull/1156) ([diptadas](https://github.com/diptadas)) +- Fix fmt string in validator [\#1154](https://github.com/voyagermesh/voyager/pull/1154) ([tamalsaha](https://github.com/tamalsaha)) +- Allow user to set healthCheckNodePort [\#1153](https://github.com/voyagermesh/voyager/pull/1153) ([diptadas](https://github.com/diptadas)) +- Pause certificate checks [\#1149](https://github.com/voyagermesh/voyager/pull/1149) ([tamalsaha](https://github.com/tamalsaha)) +- Parse tls-backend annotation for external service [\#1148](https://github.com/voyagermesh/voyager/pull/1148) ([enver](https://github.com/enver)) +- Revendor xenolf/lego [\#1147](https://github.com/voyagermesh/voyager/pull/1147) ([tamalsaha](https://github.com/tamalsaha)) +- Move openapi-spec to api folder [\#1143](https://github.com/voyagermesh/voyager/pull/1143) ([tamalsaha](https://github.com/tamalsaha)) +- Node port services are supported by external-dns [\#1138](https://github.com/voyagermesh/voyager/pull/1138) ([tamalsaha](https://github.com/tamalsaha)) +- Forward X-Auth-Request-Id-Token header in oauth [\#1126](https://github.com/voyagermesh/voyager/pull/1126) ([diptadas](https://github.com/diptadas)) +- Use secrets for TLS connections [\#1159](https://github.com/voyagermesh/voyager/pull/1159) ([tamalsaha](https://github.com/tamalsaha)) +- Document how to view operator metrics [\#1157](https://github.com/voyagermesh/voyager/pull/1157) ([tamalsaha](https://github.com/tamalsaha)) +- Fix fmt string in validator [\#1155](https://github.com/voyagermesh/voyager/pull/1155) ([tamalsaha](https://github.com/tamalsaha)) +- Always use RBAC-enabled instructions for monitoring tutorials [\#1152](https://github.com/voyagermesh/voyager/pull/1152) ([tamalsaha](https://github.com/tamalsaha)) +- Expose webhook server to expose operator metrics [\#1151](https://github.com/voyagermesh/voyager/pull/1151) ([tamalsaha](https://github.com/tamalsaha)) +- Revendor dependencies [\#1150](https://github.com/voyagermesh/voyager/pull/1150) ([tamalsaha](https://github.com/tamalsaha)) +- Use one global event recorder [\#1141](https://github.com/voyagermesh/voyager/pull/1141) ([tamalsaha](https://github.com/tamalsaha)) + +## [7.1.1](https://github.com/voyagermesh/voyager/tree/7.1.1) (2018-06-13) +[Full Changelog](https://github.com/voyagermesh/voyager/compare/7.1.0...7.1.1) + +**Fixed bugs:** + +- Fix rbac permissions for service monitors [\#1133](https://github.com/voyagermesh/voyager/pull/1133) ([tamalsaha](https://github.com/tamalsaha)) + +**Closed issues:** + +- Get new LE account if user hits rate limits [\#1122](https://github.com/voyagermesh/voyager/issues/1122) + +**Merged pull requests:** + +- Prepare docs for 7.1.1 release [\#1135](https://github.com/voyagermesh/voyager/pull/1135) ([tamalsaha](https://github.com/tamalsaha)) +- Get new LE account if user hits rate limits [\#1134](https://github.com/voyagermesh/voyager/pull/1134) ([tamalsaha](https://github.com/tamalsaha)) +- Do not create namespace from yaml, it gets created with kubectl manually [\#1132](https://github.com/voyagermesh/voyager/pull/1132) ([gavvvr](https://github.com/gavvvr)) +- Allocate cpu for operator pod. [\#1136](https://github.com/voyagermesh/voyager/pull/1136) ([tamalsaha](https://github.com/tamalsaha)) + +## [7.1.0](https://github.com/voyagermesh/voyager/tree/7.1.0) (2018-06-13) +[Full Changelog](https://github.com/voyagermesh/voyager/compare/5.0.0...7.1.0) + +**Fixed bugs:** + +- Deleting voyager gets stuck [\#1098](https://github.com/voyagermesh/voyager/issues/1098) +- Port 443 is opened with aws cert manager even only TCP is used [\#707](https://github.com/voyagermesh/voyager/issues/707) +- acme-challenge .well-known path is getting redirected [\#1097](https://github.com/voyagermesh/voyager/issues/1097) +- CRD registration fails with --restrict-to-namespace [\#1083](https://github.com/voyagermesh/voyager/issues/1083) +- Fix formatting errors in validator [\#1085](https://github.com/voyagermesh/voyager/pull/1085) ([tamalsaha](https://github.com/tamalsaha)) + +**Closed issues:** + +- Add metallb support for ExternalTrafficPolicy [\#1116](https://github.com/voyagermesh/voyager/issues/1116) +- Add support for metallb in install script [\#1115](https://github.com/voyagermesh/voyager/issues/1115) +- Add load-balancer-ip annotation support for metallb. [\#1105](https://github.com/voyagermesh/voyager/issues/1105) +- Update timeout keys [\#1103](https://github.com/voyagermesh/voyager/issues/1103) +- ReplicaSet pod always in Terminating status in GKE [\#1095](https://github.com/voyagermesh/voyager/issues/1095) +- Problem with TCP Ingress on GKE [\#1084](https://github.com/voyagermesh/voyager/issues/1084) +- Fix HAProxy config checks [\#1028](https://github.com/voyagermesh/voyager/issues/1028) +- Inject side-car to configure sysctl [\#758](https://github.com/voyagermesh/voyager/issues/758) +- oauth2 to accept self-signed certificates in backend [\#1107](https://github.com/voyagermesh/voyager/issues/1107) +- get username from oauth2\_proxy and forward this to protected backend [\#1102](https://github.com/voyagermesh/voyager/issues/1102) +- Document how to setup kube dashboard with Voyager [\#1075](https://github.com/voyagermesh/voyager/issues/1075) +- Document using Google oauth with Voyager [\#1074](https://github.com/voyagermesh/voyager/issues/1074) + +**Merged pull requests:** + +- Fix haproxy-stats page link [\#1131](https://github.com/voyagermesh/voyager/pull/1131) ([tamalsaha](https://github.com/tamalsaha)) +- Update changelog [\#1129](https://github.com/voyagermesh/voyager/pull/1129) ([tamalsaha](https://github.com/tamalsaha)) +- haproxy-stats.md typo fix [\#1127](https://github.com/voyagermesh/voyager/pull/1127) ([gavvvr](https://github.com/gavvvr)) +- Upgrade to HAProxy 1.8.9 [\#1124](https://github.com/voyagermesh/voyager/pull/1124) ([tamalsaha](https://github.com/tamalsaha)) +- Revendor dependencies [\#1123](https://github.com/voyagermesh/voyager/pull/1123) ([tamalsaha](https://github.com/tamalsaha)) +- Stop processing http request for LE well-known acme challenge path [\#1121](https://github.com/voyagermesh/voyager/pull/1121) ([tamalsaha](https://github.com/tamalsaha)) +- Fix documentation about external-dns service [\#1120](https://github.com/voyagermesh/voyager/pull/1120) ([giovannicandido](https://github.com/giovannicandido)) +- Add support for aks [\#1119](https://github.com/voyagermesh/voyager/pull/1119) ([tamalsaha](https://github.com/tamalsaha)) +- Additional metallb support [\#1117](https://github.com/voyagermesh/voyager/pull/1117) ([zsandrus](https://github.com/zsandrus)) +- Forward X-Auth-Request headers in oauth [\#1114](https://github.com/voyagermesh/voyager/pull/1114) ([diptadas](https://github.com/diptadas)) +- Added digitalocean & Linode provider to installer script [\#1113](https://github.com/voyagermesh/voyager/pull/1113) ([diptadas](https://github.com/diptadas)) +- Prepare docs for 7.1.0 release [\#1111](https://github.com/voyagermesh/voyager/pull/1111) ([tamalsaha](https://github.com/tamalsaha)) +- Add LoadBalancer type ingress support for DO and Linode [\#1109](https://github.com/voyagermesh/voyager/pull/1109) ([tamalsaha](https://github.com/tamalsaha)) +- Add metallb to providers that can have LoadBalancerIP set. [\#1106](https://github.com/voyagermesh/voyager/pull/1106) ([zsandrus](https://github.com/zsandrus)) +- Update timeout key list [\#1104](https://github.com/voyagermesh/voyager/pull/1104) ([tamalsaha](https://github.com/tamalsaha)) +- Document how to setup kube dashboard with Voyager [\#1101](https://github.com/voyagermesh/voyager/pull/1101) ([diptadas](https://github.com/diptadas)) +- Document using Google oauth with Voyager [\#1100](https://github.com/voyagermesh/voyager/pull/1100) ([diptadas](https://github.com/diptadas)) +- Update version for 1.7 [\#1094](https://github.com/voyagermesh/voyager/pull/1094) ([tamalsaha](https://github.com/tamalsaha)) +- Wait for loadbalancer ip assignment in e2e tests [\#1090](https://github.com/voyagermesh/voyager/pull/1090) ([diptadas](https://github.com/diptadas)) +- Added test for service auth annotation updates [\#1089](https://github.com/voyagermesh/voyager/pull/1089) ([diptadas](https://github.com/diptadas)) +- Detect haproxy-image-tag in dev mode [\#1082](https://github.com/voyagermesh/voyager/pull/1082) ([diptadas](https://github.com/diptadas)) +- Add togglable tabs for Installation: Script & Helm [\#1125](https://github.com/voyagermesh/voyager/pull/1125) ([sajibcse68](https://github.com/sajibcse68)) +- Apply validation rules to ingress names [\#1110](https://github.com/voyagermesh/voyager/pull/1110) ([tamalsaha](https://github.com/tamalsaha)) +- Concourse tests [\#1081](https://github.com/voyagermesh/voyager/pull/1081) ([tahsinrahman](https://github.com/tahsinrahman)) + +## [5.0.0](https://github.com/voyagermesh/voyager/tree/5.0.0) (2018-06-01) +[Full Changelog](https://github.com/voyagermesh/voyager/compare/7.0.0...5.0.0) + +**Implemented enhancements:** + +- Allow configuration of error files [\#525](https://github.com/voyagermesh/voyager/issues/525) +- Don't require spec.providerCredentialSecretName for own provider [\#366](https://github.com/voyagermesh/voyager/issues/366) +- Limit Connections [\#571](https://github.com/voyagermesh/voyager/pull/571) ([sadlil](https://github.com/sadlil)) +- Reimplement certificate controller [\#506](https://github.com/voyagermesh/voyager/pull/506) ([sadlil](https://github.com/sadlil)) +- Fix HTTP Provider Certificate [\#502](https://github.com/voyagermesh/voyager/pull/502) ([sadlil](https://github.com/sadlil)) +- Add ssl passthrough support for annotations [\#501](https://github.com/voyagermesh/voyager/pull/501) ([sadlil](https://github.com/sadlil)) +- Add Max Body size and CORS annotations [\#500](https://github.com/voyagermesh/voyager/pull/500) ([sadlil](https://github.com/sadlil)) +- Add support for affinity annotations for ingress [\#493](https://github.com/voyagermesh/voyager/pull/493) ([sadlil](https://github.com/sadlil)) + +**Fixed bugs:** + +- failed calling admission webhook "admission.voyager.appscode.com" [\#1080](https://github.com/voyagermesh/voyager/issues/1080) +- Upgrade Prometheus Operator [\#608](https://github.com/voyagermesh/voyager/issues/608) +- Test wildcard domains work with TLS [\#598](https://github.com/voyagermesh/voyager/issues/598) +- Watch secrets and update the config when Basic auth changes [\#560](https://github.com/voyagermesh/voyager/issues/560) +- Using HTTP challenge provider results in pod stuck at ContainerCreating stage [\#455](https://github.com/voyagermesh/voyager/issues/455) +- Avoid concurrency for NewACMEClient [\#382](https://github.com/voyagermesh/voyager/issues/382) +- ProviderCredential has to be created before Certificate object [\#370](https://github.com/voyagermesh/voyager/issues/370) +- Make AWS\_ACCESS\_KEY\_ID optional [\#644](https://github.com/voyagermesh/voyager/pull/644) ([tamalsaha](https://github.com/tamalsaha)) +- All Tests and Bug fixes for release-4 [\#628](https://github.com/voyagermesh/voyager/pull/628) ([sadlil](https://github.com/sadlil)) +- Don't reload HAProxy using tls mounter setup phase [\#610](https://github.com/voyagermesh/voyager/pull/610) ([tamalsaha](https://github.com/tamalsaha)) +- Inject well-known/acme-challenge path at the top of rules [\#588](https://github.com/voyagermesh/voyager/pull/588) ([tamalsaha](https://github.com/tamalsaha)) +- Fix NodePort mode in GKE [\#575](https://github.com/voyagermesh/voyager/pull/575) ([tamalsaha](https://github.com/tamalsaha)) +- Add PATCH permission and fix deployment RBAC spec [\#568](https://github.com/voyagermesh/voyager/pull/568) ([tamalsaha](https://github.com/tamalsaha)) +- Fix RBAC permissions for apps/v1beta1 Deployments [\#565](https://github.com/voyagermesh/voyager/pull/565) ([tamalsaha](https://github.com/tamalsaha)) +- Fix cert controller bugs [\#541](https://github.com/voyagermesh/voyager/pull/541) ([sadlil](https://github.com/sadlil)) + +**Closed issues:** + +- 7.0.0 chart fails on already existing clusterrole [\#1092](https://github.com/voyagermesh/voyager/issues/1092) +- Basic auth doesn't work 5.0.0-rc.11 [\#1079](https://github.com/voyagermesh/voyager/issues/1079) +- loadBalancerIP is ignored in azure mode [\#572](https://github.com/voyagermesh/voyager/issues/572) +- NodePort mode adds port to host header rule, but shouldn't [\#552](https://github.com/voyagermesh/voyager/issues/552) +- Test 3.2.0 to 5.0.0 migration is smooth [\#527](https://github.com/voyagermesh/voyager/issues/527) +- Bug: not creating RBAC roles in NodePort mode [\#524](https://github.com/voyagermesh/voyager/issues/524) +- Allow configuring options for each server entry [\#516](https://github.com/voyagermesh/voyager/issues/516) +- Redesign Certificate CRD [\#505](https://github.com/voyagermesh/voyager/issues/505) +- Upgrade haproxy\_exporter to 0.8.0 [\#504](https://github.com/voyagermesh/voyager/issues/504) +- \[Feature request\] Support for tolerations in ingress pod spec [\#503](https://github.com/voyagermesh/voyager/issues/503) +- DNS resolver test is timing out [\#484](https://github.com/voyagermesh/voyager/issues/484) +- Use Deployment for HostPort mode [\#446](https://github.com/voyagermesh/voyager/issues/446) +- Allow users to provide custom templates [\#444](https://github.com/voyagermesh/voyager/issues/444) +- Add Voyager to official ingress project docs. [\#437](https://github.com/voyagermesh/voyager/issues/437) +- Basic Auth annotations implementation [\#424](https://github.com/voyagermesh/voyager/issues/424) +- Set DNSpolicy to ClusterFirstWithHostNet in HostPort mode [\#417](https://github.com/voyagermesh/voyager/issues/417) +- se fields service.spec.externalTrafficPolicy and service.spec.healthCheckNodePort instead [\#415](https://github.com/voyagermesh/voyager/issues/415) +- Validate certificates [\#393](https://github.com/voyagermesh/voyager/issues/393) +- Document AWS IAM permissions for LE DNS validation. [\#337](https://github.com/voyagermesh/voyager/issues/337) +- Use kubernetes/code-generator to generate clients [\#329](https://github.com/voyagermesh/voyager/issues/329) +- Install Voyager as critical addon [\#292](https://github.com/voyagermesh/voyager/issues/292) +- Use OwnerReference [\#285](https://github.com/voyagermesh/voyager/issues/285) +- Bring annotation parity with Nginx Ingress [\#278](https://github.com/voyagermesh/voyager/issues/278) +- Update GCP annotation for preserving source IP [\#276](https://github.com/voyagermesh/voyager/issues/276) +- Switch to CustomResourceDefinitions [\#239](https://github.com/voyagermesh/voyager/issues/239) +- Use Deployments from apps/v1beta1 [\#238](https://github.com/voyagermesh/voyager/issues/238) + +**Merged pull requests:** + +- Prepare docs for 5.0.0 release [\#1093](https://github.com/voyagermesh/voyager/pull/1093) ([tamalsaha](https://github.com/tamalsaha)) +- Fix installer script for --restrict-to-namespace mode [\#1091](https://github.com/voyagermesh/voyager/pull/1091) ([tamalsaha](https://github.com/tamalsaha)) +- Use yaml file to create service account in installer script [\#1088](https://github.com/voyagermesh/voyager/pull/1088) ([tamalsaha](https://github.com/tamalsaha)) +- Avoid waiting for api services when not installed [\#1087](https://github.com/voyagermesh/voyager/pull/1087) ([tamalsaha](https://github.com/tamalsaha)) +- Trigger update when service auth-annotations changed [\#1086](https://github.com/voyagermesh/voyager/pull/1086) ([diptadas](https://github.com/diptadas)) +- Update developer-guide [\#642](https://github.com/voyagermesh/voyager/pull/642) ([sadlil](https://github.com/sadlil)) +- Support TLS auth annotations [\#621](https://github.com/voyagermesh/voyager/pull/621) ([tamalsaha](https://github.com/tamalsaha)) +- Support Basic auth in FrontendRules [\#617](https://github.com/voyagermesh/voyager/pull/617) ([tamalsaha](https://github.com/tamalsaha)) +- Support ingress.kubernetes.io/ssl-redirect [\#616](https://github.com/voyagermesh/voyager/pull/616) ([tamalsaha](https://github.com/tamalsaha)) +- Secret Update reflection [\#605](https://github.com/voyagermesh/voyager/pull/605) ([sadlil](https://github.com/sadlil)) +- Add LocalTypedReference type [\#579](https://github.com/voyagermesh/voyager/pull/579) ([tamalsaha](https://github.com/tamalsaha)) +- Add ingress class support for helm chart [\#559](https://github.com/voyagermesh/voyager/pull/559) ([xcompass](https://github.com/xcompass)) +- Docs for 4.0 - part 1 [\#556](https://github.com/voyagermesh/voyager/pull/556) ([sadlil](https://github.com/sadlil)) +- Don't log error if to-be-deleted object is missing. [\#554](https://github.com/voyagermesh/voyager/pull/554) ([tamalsaha](https://github.com/tamalsaha)) +- Generate ugorji stuff [\#553](https://github.com/voyagermesh/voyager/pull/553) ([tamalsaha](https://github.com/tamalsaha)) +- Add owner reference for Ingress [\#530](https://github.com/voyagermesh/voyager/pull/530) ([tamalsaha](https://github.com/tamalsaha)) +- Add HAProxy 1.7.9 [\#522](https://github.com/voyagermesh/voyager/pull/522) ([tamalsaha](https://github.com/tamalsaha)) +- Add support for `ingress.kubernetes.io/session-cookie-hash`. [\#497](https://github.com/voyagermesh/voyager/pull/497) ([sadlil](https://github.com/sadlil)) + +## [7.0.0](https://github.com/voyagermesh/voyager/tree/7.0.0) (2018-05-28) +[Full Changelog](https://github.com/voyagermesh/voyager/compare/7.0.0-rc.3...7.0.0) + +**Merged pull requests:** + +- Update changelog [\#1077](https://github.com/voyagermesh/voyager/pull/1077) ([tamalsaha](https://github.com/tamalsaha)) +- Prepare 7.0.0 release [\#1076](https://github.com/voyagermesh/voyager/pull/1076) ([tamalsaha](https://github.com/tamalsaha)) + +## [7.0.0-rc.3](https://github.com/voyagermesh/voyager/tree/7.0.0-rc.3) (2018-05-23) +[Full Changelog](https://github.com/voyagermesh/voyager/compare/7.0.0-rc.2...7.0.0-rc.3) + +**Fixed bugs:** + +- rc2 operator crashes [\#1070](https://github.com/voyagermesh/voyager/issues/1070) + +**Merged pull requests:** + +- Prepare docs for 7.0.0-rc.3 [\#1072](https://github.com/voyagermesh/voyager/pull/1072) ([tamalsaha](https://github.com/tamalsaha)) +- Checked nil pointer before validating oauth [\#1071](https://github.com/voyagermesh/voyager/pull/1071) ([diptadas](https://github.com/diptadas)) +- Update changelog [\#1069](https://github.com/voyagermesh/voyager/pull/1069) ([tamalsaha](https://github.com/tamalsaha)) + +## [7.0.0-rc.2](https://github.com/voyagermesh/voyager/tree/7.0.0-rc.2) (2018-05-23) +[Full Changelog](https://github.com/voyagermesh/voyager/compare/7.0.0-rc.1...7.0.0-rc.2) + +**Fixed bugs:** + +- Fix OAuth implementation [\#1053](https://github.com/voyagermesh/voyager/issues/1053) +- Use hooks for user roles in chart [\#1066](https://github.com/voyagermesh/voyager/pull/1066) ([tamalsaha](https://github.com/tamalsaha)) + +**Closed issues:** + +- Can't run tests on Solus linux, path for minikube is hardcoded [\#1047](https://github.com/voyagermesh/voyager/issues/1047) + +**Merged pull requests:** + +- Don't exit if migration fails. [\#1068](https://github.com/voyagermesh/voyager/pull/1068) ([tamalsaha](https://github.com/tamalsaha)) +- Delete user roles on purge [\#1067](https://github.com/voyagermesh/voyager/pull/1067) ([tamalsaha](https://github.com/tamalsaha)) +- Update changelog [\#1065](https://github.com/voyagermesh/voyager/pull/1065) ([tamalsaha](https://github.com/tamalsaha)) +- Clarify messaging [\#1064](https://github.com/voyagermesh/voyager/pull/1064) ([tamalsaha](https://github.com/tamalsaha)) +- Install correct version of voyager chart [\#1063](https://github.com/voyagermesh/voyager/pull/1063) ([tamalsaha](https://github.com/tamalsaha)) +- Avoid creating apiservice when webhooks are not used. [\#1062](https://github.com/voyagermesh/voyager/pull/1062) ([tamalsaha](https://github.com/tamalsaha)) +- Add --haproxy-image-tag flag to installer [\#1061](https://github.com/voyagermesh/voyager/pull/1061) ([tamalsaha](https://github.com/tamalsaha)) +- Prepare docs for 7.0.0-rc.2 [\#1060](https://github.com/voyagermesh/voyager/pull/1060) ([tamalsaha](https://github.com/tamalsaha)) +- Support NodeSelector and Tolerations via annotation for std ingress [\#1059](https://github.com/voyagermesh/voyager/pull/1059) ([tamalsaha](https://github.com/tamalsaha)) +- Remove redundant assignment [\#1058](https://github.com/voyagermesh/voyager/pull/1058) ([gavvvr](https://github.com/gavvvr)) +- Move oauth2-proxy image to Voyager repo [\#1057](https://github.com/voyagermesh/voyager/pull/1057) ([tamalsaha](https://github.com/tamalsaha)) +- No auth-check for auth-backend-path itself [\#1056](https://github.com/voyagermesh/voyager/pull/1056) ([diptadas](https://github.com/diptadas)) +- Added http2 example [\#1052](https://github.com/voyagermesh/voyager/pull/1052) ([ssro](https://github.com/ssro)) + +## [7.0.0-rc.1](https://github.com/voyagermesh/voyager/tree/7.0.0-rc.1) (2018-05-14) +[Full Changelog](https://github.com/voyagermesh/voyager/compare/7.0.0-rc.0...7.0.0-rc.1) + +**Fixed bugs:** + +- Fix panic [\#1045](https://github.com/voyagermesh/voyager/issues/1045) +- Include a test pem to fool haproxy in operator pod. [\#1038](https://github.com/voyagermesh/voyager/pull/1038) ([tamalsaha](https://github.com/tamalsaha)) + +**Closed issues:** + +- Delete Ingress \(service and co.\) [\#1043](https://github.com/voyagermesh/voyager/issues/1043) +- Allow h2 ALPN option for http mode [\#1040](https://github.com/voyagermesh/voyager/issues/1040) +- Letsencrypt wildcard certs? [\#1024](https://github.com/voyagermesh/voyager/issues/1024) +- CrashLoopBackOff on GKE [\#990](https://github.com/voyagermesh/voyager/issues/990) +- CrashLoopBackOff [\#987](https://github.com/voyagermesh/voyager/issues/987) + +**Merged pull requests:** + +- Update changelog [\#1051](https://github.com/voyagermesh/voyager/pull/1051) ([tamalsaha](https://github.com/tamalsaha)) +- Prepare docs for 7.0.0-rc.1 [\#1050](https://github.com/voyagermesh/voyager/pull/1050) ([tamalsaha](https://github.com/tamalsaha)) +- Correctly set port to binder [\#1049](https://github.com/voyagermesh/voyager/pull/1049) ([tamalsaha](https://github.com/tamalsaha)) +- Do not use absolute path for minikube, fixes \#1047 for 6.0 branch [\#1048](https://github.com/voyagermesh/voyager/pull/1048) ([gavvvr](https://github.com/gavvvr)) +- Fix TestALPNOptions [\#1046](https://github.com/voyagermesh/voyager/pull/1046) ([tamalsaha](https://github.com/tamalsaha)) +- Support ALPN options in HTTP mode [\#1042](https://github.com/voyagermesh/voyager/pull/1042) ([diptadas](https://github.com/diptadas)) +- Find TLS secret only if NoTLS=false [\#1041](https://github.com/voyagermesh/voyager/pull/1041) ([diptadas](https://github.com/diptadas)) +- Fix ambiguous comment [\#1039](https://github.com/voyagermesh/voyager/pull/1039) ([jaymeyerowitz](https://github.com/jaymeyerowitz)) +- Use double quotes with `\*` [\#1037](https://github.com/voyagermesh/voyager/pull/1037) ([tamalsaha](https://github.com/tamalsaha)) +- Fix tcp-sni doc [\#1036](https://github.com/voyagermesh/voyager/pull/1036) ([tamalsaha](https://github.com/tamalsaha)) + +## [7.0.0-rc.0](https://github.com/voyagermesh/voyager/tree/7.0.0-rc.0) (2018-05-10) +[Full Changelog](https://github.com/voyagermesh/voyager/compare/6.0.0...7.0.0-rc.0) + +**Fixed bugs:** + +- question re: ssl-passthrough [\#1012](https://github.com/voyagermesh/voyager/issues/1012) +- SSL redirect not working for LB type NodePort [\#967](https://github.com/voyagermesh/voyager/issues/967) +- Fix installers [\#1035](https://github.com/voyagermesh/voyager/pull/1035) ([tamalsaha](https://github.com/tamalsaha)) +- Generate correct schema for int-or-string type [\#978](https://github.com/voyagermesh/voyager/pull/978) ([tamalsaha](https://github.com/tamalsaha)) +- Fix openapi spec for voyager crds [\#973](https://github.com/voyagermesh/voyager/pull/973) ([tamalsaha](https://github.com/tamalsaha)) +- Fix errors while updating existing CRD [\#971](https://github.com/voyagermesh/voyager/pull/971) ([diptadas](https://github.com/diptadas)) +- Add RBAC for events [\#961](https://github.com/voyagermesh/voyager/pull/961) ([tamalsaha](https://github.com/tamalsaha)) + +**Closed issues:** + +- Test failing for LB type NodePort in Minikube v26 [\#1000](https://github.com/voyagermesh/voyager/issues/1000) +- Support Stretch / Alpine based HAproxy image [\#997](https://github.com/voyagermesh/voyager/issues/997) +- Consider implementing LetsEncrypt wildcard certificates [\#994](https://github.com/voyagermesh/voyager/issues/994) +- Test HAproxy config before setting to configmap [\#989](https://github.com/voyagermesh/voyager/issues/989) +- labels are not inherited to resources created via voyager Ingress [\#986](https://github.com/voyagermesh/voyager/issues/986) +- Add Explicit {{ .Release.Namespace }} reference in Helm Chart [\#984](https://github.com/voyagermesh/voyager/issues/984) +- Support for MetalLB [\#970](https://github.com/voyagermesh/voyager/issues/970) +- Failed to update existing CRDs [\#969](https://github.com/voyagermesh/voyager/issues/969) +- Voyager ingress pod re-created in case of tls setup [\#966](https://github.com/voyagermesh/voyager/issues/966) +- Support for parsing manifest yaml spec into client-go data structures [\#964](https://github.com/voyagermesh/voyager/issues/964) +- Getting error while trying to install release-6.0: Error: unknown shorthand flag: 'o' in -o=json [\#959](https://github.com/voyagermesh/voyager/issues/959) +- voyager pod replica is changed [\#940](https://github.com/voyagermesh/voyager/issues/940) +- Bring back DaemonSet support to place pods [\#897](https://github.com/voyagermesh/voyager/issues/897) +- Support SNI mode in TCP [\#751](https://github.com/voyagermesh/voyager/issues/751) +- Support external-auth /oauth2 [\#638](https://github.com/voyagermesh/voyager/issues/638) +- Generate non-GO clients for Voyager CRDs [\#456](https://github.com/voyagermesh/voyager/issues/456) +- Issue wildcard certs using ACME v2 [\#185](https://github.com/voyagermesh/voyager/issues/185) + +**Merged pull requests:** + +- Fix release script for alpine image [\#1034](https://github.com/voyagermesh/voyager/pull/1034) ([tamalsaha](https://github.com/tamalsaha)) +- Updated tcp-sni doc [\#1033](https://github.com/voyagermesh/voyager/pull/1033) ([diptadas](https://github.com/diptadas)) +- Fix typo [\#1032](https://github.com/voyagermesh/voyager/pull/1032) ([jaymeyerowitz](https://github.com/jaymeyerowitz)) +- Updated doc for ssl-passthrough [\#1031](https://github.com/voyagermesh/voyager/pull/1031) ([diptadas](https://github.com/diptadas)) +- Separated config-check from render-config [\#1030](https://github.com/voyagermesh/voyager/pull/1030) ([diptadas](https://github.com/diptadas)) +- Remove AssignTypeKind and GetGroupVersionKind util methods [\#1029](https://github.com/voyagermesh/voyager/pull/1029) ([tamalsaha](https://github.com/tamalsaha)) +- Prepare docs for 7.0.0-rc.0 [\#1027](https://github.com/voyagermesh/voyager/pull/1027) ([tamalsaha](https://github.com/tamalsaha)) +- Check HAProxy config before writing into configmap [\#1026](https://github.com/voyagermesh/voyager/pull/1026) ([diptadas](https://github.com/diptadas)) +- Handle empty renewed certificate [\#1025](https://github.com/voyagermesh/voyager/pull/1025) ([tamalsaha](https://github.com/tamalsaha)) +- Update chart path for release-5.0 [\#1021](https://github.com/voyagermesh/voyager/pull/1021) ([tamalsaha](https://github.com/tamalsaha)) +- Fix imagePullSecrets location for 5.0.0 chart [\#1020](https://github.com/voyagermesh/voyager/pull/1020) ([gavvvr](https://github.com/gavvvr)) +- Don't panic if admission options is nil [\#1019](https://github.com/voyagermesh/voyager/pull/1019) ([tamalsaha](https://github.com/tamalsaha)) +- Disable admission controllers for webhook server [\#1018](https://github.com/voyagermesh/voyager/pull/1018) ([tamalsaha](https://github.com/tamalsaha)) +- Add Update\*\*\*Status helpers [\#1017](https://github.com/voyagermesh/voyager/pull/1017) ([tamalsaha](https://github.com/tamalsaha)) +- Update client-go v7.0.0 [\#1016](https://github.com/voyagermesh/voyager/pull/1016) ([tamalsaha](https://github.com/tamalsaha)) +- Add haproxy stretch image [\#1014](https://github.com/voyagermesh/voyager/pull/1014) ([diptadas](https://github.com/diptadas)) +- Rename flag --analytics to --enable-analytics [\#1013](https://github.com/voyagermesh/voyager/pull/1013) ([diptadas](https://github.com/diptadas)) +- Update workload api [\#1011](https://github.com/voyagermesh/voyager/pull/1011) ([tamalsaha](https://github.com/tamalsaha)) +- Remove voyager crds before uninstalling operator [\#1010](https://github.com/voyagermesh/voyager/pull/1010) ([tamalsaha](https://github.com/tamalsaha)) +- Update private registry support in chart [\#1009](https://github.com/voyagermesh/voyager/pull/1009) ([tamalsaha](https://github.com/tamalsaha)) +- Rename --analytics -\> --enable-analytics [\#1008](https://github.com/voyagermesh/voyager/pull/1008) ([tamalsaha](https://github.com/tamalsaha)) +- Print namespace where voyager is installed [\#1007](https://github.com/voyagermesh/voyager/pull/1007) ([tamalsaha](https://github.com/tamalsaha)) +- Change default HAProxy tag to 1.8.8-6.1.0 [\#1006](https://github.com/voyagermesh/voyager/pull/1006) ([tamalsaha](https://github.com/tamalsaha)) +- Improve installer [\#1005](https://github.com/voyagermesh/voyager/pull/1005) ([tamalsaha](https://github.com/tamalsaha)) +- Fixed minikube urls for LB type hostport [\#1003](https://github.com/voyagermesh/voyager/pull/1003) ([diptadas](https://github.com/diptadas)) +- Regex replace host header only if port matched in SSL redirect [\#1002](https://github.com/voyagermesh/voyager/pull/1002) ([diptadas](https://github.com/diptadas)) +- Fixed nodeport service url for minikube [\#1001](https://github.com/voyagermesh/voyager/pull/1001) ([diptadas](https://github.com/diptadas)) +- Support both Deployment and DaemonSet to run HAProxy pods [\#999](https://github.com/voyagermesh/voyager/pull/999) ([tamalsaha](https://github.com/tamalsaha)) +- Updated validator for merging empty-host with wildcard-host [\#998](https://github.com/voyagermesh/voyager/pull/998) ([diptadas](https://github.com/diptadas)) +- Issue wildcard certs using LE ACME v2 [\#996](https://github.com/voyagermesh/voyager/pull/996) ([tamalsaha](https://github.com/tamalsaha)) +- Use appscode/oauth2\_proxy docker image [\#995](https://github.com/voyagermesh/voyager/pull/995) ([diptadas](https://github.com/diptadas)) +- Fix .gitignore file [\#993](https://github.com/voyagermesh/voyager/pull/993) ([tamalsaha](https://github.com/tamalsaha)) +- Use HAProxy 1.8.8 [\#992](https://github.com/voyagermesh/voyager/pull/992) ([tamalsaha](https://github.com/tamalsaha)) +- Use separate offshootLabels and offshootSelector [\#991](https://github.com/voyagermesh/voyager/pull/991) ([tamalsaha](https://github.com/tamalsaha)) +- Revendor DNSimple api [\#988](https://github.com/voyagermesh/voyager/pull/988) ([tamalsaha](https://github.com/tamalsaha)) +- Add namespace to relevant kubernetes resources [\#985](https://github.com/voyagermesh/voyager/pull/985) ([Rigdon](https://github.com/Rigdon)) +- Set version in swagger.json [\#983](https://github.com/voyagermesh/voyager/pull/983) ([tamalsaha](https://github.com/tamalsaha)) +- Update chart readme [\#982](https://github.com/voyagermesh/voyager/pull/982) ([tamalsaha](https://github.com/tamalsaha)) +- Update chart repository location [\#981](https://github.com/voyagermesh/voyager/pull/981) ([tamalsaha](https://github.com/tamalsaha)) +- Support installing from local installer scripts [\#979](https://github.com/voyagermesh/voyager/pull/979) ([tamalsaha](https://github.com/tamalsaha)) +- Move swagger.json to apis pkg [\#976](https://github.com/voyagermesh/voyager/pull/976) ([tamalsaha](https://github.com/tamalsaha)) +- Generate swagger.json [\#975](https://github.com/voyagermesh/voyager/pull/975) ([tamalsaha](https://github.com/tamalsaha)) +- Add install package for voyager crds [\#974](https://github.com/voyagermesh/voyager/pull/974) ([tamalsaha](https://github.com/tamalsaha)) +- \#970 Added metallb as a cloud provider option [\#972](https://github.com/voyagermesh/voyager/pull/972) ([schubter](https://github.com/schubter)) +- Fix SSL redirect for LB type NodePort [\#968](https://github.com/voyagermesh/voyager/pull/968) ([diptadas](https://github.com/diptadas)) +- Adding support to Akamai FastDNS provider for certificates [\#965](https://github.com/voyagermesh/voyager/pull/965) ([jeffersongirao](https://github.com/jeffersongirao)) +- Skip setting ListKind [\#963](https://github.com/voyagermesh/voyager/pull/963) ([tamalsaha](https://github.com/tamalsaha)) +- Add CRD Validation [\#962](https://github.com/voyagermesh/voyager/pull/962) ([tamalsaha](https://github.com/tamalsaha)) +- hard to copy line [\#960](https://github.com/voyagermesh/voyager/pull/960) ([joshuacox](https://github.com/joshuacox)) +- Add support for external-auth/oauth [\#954](https://github.com/voyagermesh/voyager/pull/954) ([diptadas](https://github.com/diptadas)) +- concourse configs [\#946](https://github.com/voyagermesh/voyager/pull/946) ([tahsinrahman](https://github.com/tahsinrahman)) +- Use HAProxy 1.8.7 [\#806](https://github.com/voyagermesh/voyager/pull/806) ([tamalsaha](https://github.com/tamalsaha)) +- Support SNI in TCP mode [\#805](https://github.com/voyagermesh/voyager/pull/805) ([tamalsaha](https://github.com/tamalsaha)) + +## [6.0.0](https://github.com/voyagermesh/voyager/tree/6.0.0) (2018-03-30) +[Full Changelog](https://github.com/voyagermesh/voyager/compare/6.0.0-rc.2...6.0.0) + +**Fixed bugs:** + +- Controller is not doing Sync/Add/Update for Service [\#941](https://github.com/voyagermesh/voyager/issues/941) +- TCP Ingress: invalid memory address or nil pointer dereference [\#906](https://github.com/voyagermesh/voyager/issues/906) +- Preemptible instances issues \(6.0.0.rc.0\) [\#902](https://github.com/voyagermesh/voyager/issues/902) +- Voyager 6.0.0 on GKE 1.8.5: Failed to list \*v1beta1.Ingress: unstructured cannot convert field labels [\#889](https://github.com/voyagermesh/voyager/issues/889) +- Add missing RBAC for service monitors in chart [\#958](https://github.com/voyagermesh/voyager/pull/958) ([tamalsaha](https://github.com/tamalsaha)) +- Run service monitor informer in its own go routine. [\#929](https://github.com/voyagermesh/voyager/pull/929) ([tamalsaha](https://github.com/tamalsaha)) +- Various fixes and improved logging [\#928](https://github.com/voyagermesh/voyager/pull/928) ([tamalsaha](https://github.com/tamalsaha)) +- Use user provided cookie name for default backend [\#920](https://github.com/voyagermesh/voyager/pull/920) ([tamalsaha](https://github.com/tamalsaha)) +- Fixed ingress finalizer [\#917](https://github.com/voyagermesh/voyager/pull/917) ([diptadas](https://github.com/diptadas)) +- Detect change when deletion timestamp is set for Ingress [\#916](https://github.com/voyagermesh/voyager/pull/916) ([tamalsaha](https://github.com/tamalsaha)) + +**Closed issues:** + +- voyager.sh install file now fails for k8s version below 1.9.0 [\#955](https://github.com/voyagermesh/voyager/issues/955) +- Support LB type in Openstack [\#930](https://github.com/voyagermesh/voyager/issues/930) +- Deployment model of voyager a bit overcomplex? [\#924](https://github.com/voyagermesh/voyager/issues/924) +- HTTP to HTTPS redirect [\#923](https://github.com/voyagermesh/voyager/issues/923) +- OpenStack support [\#669](https://github.com/voyagermesh/voyager/issues/669) +- Expose HAProxy config template var w/ Voyager deployment.spec.replicas [\#517](https://github.com/voyagermesh/voyager/issues/517) +- Improve AWS support [\#163](https://github.com/voyagermesh/voyager/issues/163) +- Use alpine as the base image for haproxy [\#108](https://github.com/voyagermesh/voyager/issues/108) +- Truly Seamless Reloads with HAProxy [\#89](https://github.com/voyagermesh/voyager/issues/89) + +**Merged pull requests:** + +- Revendor dependencies [\#957](https://github.com/voyagermesh/voyager/pull/957) ([tamalsaha](https://github.com/tamalsaha)) +- Fix install instruction for minikube 0.24.x \(Kube 1.8.0\) [\#956](https://github.com/voyagermesh/voyager/pull/956) ([tamalsaha](https://github.com/tamalsaha)) +- Skip downloading onessl if already exists [\#953](https://github.com/voyagermesh/voyager/pull/953) ([tamalsaha](https://github.com/tamalsaha)) +- Revendor jsonpatch library [\#952](https://github.com/voyagermesh/voyager/pull/952) ([tamalsaha](https://github.com/tamalsaha)) +- Add front matter for changelog [\#951](https://github.com/voyagermesh/voyager/pull/951) ([tamalsaha](https://github.com/tamalsaha)) +- Use appscode/kubernetes-webhook-util [\#950](https://github.com/voyagermesh/voyager/pull/950) ([tamalsaha](https://github.com/tamalsaha)) +- Reorg objects deleted in uninstall command [\#949](https://github.com/voyagermesh/voyager/pull/949) ([tamalsaha](https://github.com/tamalsaha)) +- Fixed nodeport-errorfile test [\#948](https://github.com/voyagermesh/voyager/pull/948) ([diptadas](https://github.com/diptadas)) +- Fixed haproxy duplicate logging [\#947](https://github.com/voyagermesh/voyager/pull/947) ([diptadas](https://github.com/diptadas)) +- Revendor webhook api [\#944](https://github.com/voyagermesh/voyager/pull/944) ([tamalsaha](https://github.com/tamalsaha)) +- Use correct queue for ingress [\#942](https://github.com/voyagermesh/voyager/pull/942) ([tamalsaha](https://github.com/tamalsaha)) +- Mention how to handle wildcard domains in documentation [\#938](https://github.com/voyagermesh/voyager/pull/938) ([hofmeister](https://github.com/hofmeister)) +- Add links for badges [\#937](https://github.com/voyagermesh/voyager/pull/937) ([tamalsaha](https://github.com/tamalsaha)) +- Install deps using glide in travis [\#936](https://github.com/voyagermesh/voyager/pull/936) ([tamalsaha](https://github.com/tamalsaha)) +- Add travis.yaml [\#935](https://github.com/voyagermesh/voyager/pull/935) ([tamalsaha](https://github.com/tamalsaha)) +- Add badge for docker pull stats [\#934](https://github.com/voyagermesh/voyager/pull/934) ([tamalsaha](https://github.com/tamalsaha)) +- Update docs for 6.0.0 [\#932](https://github.com/voyagermesh/voyager/pull/932) ([tamalsaha](https://github.com/tamalsaha)) +- Document how to create internal LB in openstack [\#931](https://github.com/voyagermesh/voyager/pull/931) ([tamalsaha](https://github.com/tamalsaha)) +- Fix typo in README [\#927](https://github.com/voyagermesh/voyager/pull/927) ([shaneog](https://github.com/shaneog)) +- Update overview.md [\#926](https://github.com/voyagermesh/voyager/pull/926) ([bewiwi](https://github.com/bewiwi)) +- Add "New to Voyager" header [\#922](https://github.com/voyagermesh/voyager/pull/922) ([tamalsaha](https://github.com/tamalsaha)) +- Add --purge flag [\#921](https://github.com/voyagermesh/voyager/pull/921) ([tamalsaha](https://github.com/tamalsaha)) +- Make headerRule, rewriteRule plural [\#919](https://github.com/voyagermesh/voyager/pull/919) ([tamalsaha](https://github.com/tamalsaha)) +- Make it clear that installer is a single command [\#915](https://github.com/voyagermesh/voyager/pull/915) ([tamalsaha](https://github.com/tamalsaha)) + +## [6.0.0-rc.2](https://github.com/voyagermesh/voyager/tree/6.0.0-rc.2) (2018-03-05) +[Full Changelog](https://github.com/voyagermesh/voyager/compare/6.0.0-rc.1...6.0.0-rc.2) + +**Merged pull requests:** + +- Update docs that --rbac is default on [\#914](https://github.com/voyagermesh/voyager/pull/914) ([tamalsaha](https://github.com/tamalsaha)) +- Enable RBAC by default in installer [\#913](https://github.com/voyagermesh/voyager/pull/913) ([tamalsaha](https://github.com/tamalsaha)) +- Fix installer [\#912](https://github.com/voyagermesh/voyager/pull/912) ([tamalsaha](https://github.com/tamalsaha)) +- Prepare docs for 6.0.0-rc.2 [\#911](https://github.com/voyagermesh/voyager/pull/911) ([tamalsaha](https://github.com/tamalsaha)) +- Stop using field selector in haproxy controller [\#910](https://github.com/voyagermesh/voyager/pull/910) ([tamalsaha](https://github.com/tamalsaha)) +- Update chart to match RBAC best practices for charts [\#909](https://github.com/voyagermesh/voyager/pull/909) ([tamalsaha](https://github.com/tamalsaha)) +- Add checks to installer script [\#908](https://github.com/voyagermesh/voyager/pull/908) ([tamalsaha](https://github.com/tamalsaha)) +- Cleanup admission webhook [\#907](https://github.com/voyagermesh/voyager/pull/907) ([tamalsaha](https://github.com/tamalsaha)) +- Update changelog for 6.0.0-rc.1 [\#905](https://github.com/voyagermesh/voyager/pull/905) ([tamalsaha](https://github.com/tamalsaha)) + +## [6.0.0-rc.1](https://github.com/voyagermesh/voyager/tree/6.0.0-rc.1) (2018-02-28) +[Full Changelog](https://github.com/voyagermesh/voyager/compare/6.0.0-rc.0...6.0.0-rc.1) + +**Implemented enhancements:** + +- Source IP affinity [\#759](https://github.com/voyagermesh/voyager/issues/759) + +**Fixed bugs:** + +- basic auth remove on upgrade to 5.0.0-rc11 [\#873](https://github.com/voyagermesh/voyager/issues/873) +- whitelist did not work [\#866](https://github.com/voyagermesh/voyager/issues/866) +- Update voyager docs [\#50](https://github.com/voyagermesh/voyager/issues/50) + +**Closed issues:** + +- Update Prometheus integration [\#893](https://github.com/voyagermesh/voyager/issues/893) +- Disabling HSTS - doesn't work [\#881](https://github.com/voyagermesh/voyager/issues/881) +- Upgrade from 5.0.0-rc.11 to 6.0.0-rc.0 [\#876](https://github.com/voyagermesh/voyager/issues/876) +- AWS ELB Proxy IP forwarded for occurs errors [\#749](https://github.com/voyagermesh/voyager/issues/749) +- How to use voyager instead of kubernetes nginx ingress controller [\#742](https://github.com/voyagermesh/voyager/issues/742) +- RBAC for voyager [\#732](https://github.com/voyagermesh/voyager/issues/732) +- Document default mode does not work for minikube [\#545](https://github.com/voyagermesh/voyager/issues/545) +- Document how to use Host IP as external IP in minikube for LoadBalancer type Service [\#511](https://github.com/voyagermesh/voyager/issues/511) +- Document RBAC setup on installer page. [\#508](https://github.com/voyagermesh/voyager/issues/508) +- Document external-dns configuration [\#355](https://github.com/voyagermesh/voyager/issues/355) +- Document why each ingress creates a new HAProxy in voyager [\#331](https://github.com/voyagermesh/voyager/issues/331) + +**Merged pull requests:** + +- Prepare docs for 6.0.0-rc.1 [\#904](https://github.com/voyagermesh/voyager/pull/904) ([tamalsaha](https://github.com/tamalsaha)) +- Fix service name in chart [\#903](https://github.com/voyagermesh/voyager/pull/903) ([tamalsaha](https://github.com/tamalsaha)) +- Update links to latest release [\#901](https://github.com/voyagermesh/voyager/pull/901) ([tamalsaha](https://github.com/tamalsaha)) +- Support --enable-admission-webhook=false [\#900](https://github.com/voyagermesh/voyager/pull/900) ([tamalsaha](https://github.com/tamalsaha)) +- Support multiple webhooks of same apiversion [\#899](https://github.com/voyagermesh/voyager/pull/899) ([tamalsaha](https://github.com/tamalsaha)) +- Sync chart to stable charts repo [\#898](https://github.com/voyagermesh/voyager/pull/898) ([tamalsaha](https://github.com/tamalsaha)) +- Document Prometheus integration [\#896](https://github.com/voyagermesh/voyager/pull/896) ([tamalsaha](https://github.com/tamalsaha)) +- Improve docs [\#895](https://github.com/voyagermesh/voyager/pull/895) ([tamalsaha](https://github.com/tamalsaha)) +- Update haproxy exporter [\#894](https://github.com/voyagermesh/voyager/pull/894) ([tamalsaha](https://github.com/tamalsaha)) +- Document user facing RBAC roles [\#892](https://github.com/voyagermesh/voyager/pull/892) ([tamalsaha](https://github.com/tamalsaha)) +- Skip generating UpdateStatus method [\#887](https://github.com/voyagermesh/voyager/pull/887) ([tamalsaha](https://github.com/tamalsaha)) +- Delete internal types [\#886](https://github.com/voyagermesh/voyager/pull/886) ([tamalsaha](https://github.com/tamalsaha)) +- Use official code generator scripts [\#885](https://github.com/voyagermesh/voyager/pull/885) ([tamalsaha](https://github.com/tamalsaha)) +- Use HAProxy 1.7.10 [\#884](https://github.com/voyagermesh/voyager/pull/884) ([tamalsaha](https://github.com/tamalsaha)) +- Move node selector to Ingress spec [\#883](https://github.com/voyagermesh/voyager/pull/883) ([tamalsaha](https://github.com/tamalsaha)) +- Only check NodePort if provided [\#880](https://github.com/voyagermesh/voyager/pull/880) ([tamalsaha](https://github.com/tamalsaha)) +- Create user facing aggregate roles [\#879](https://github.com/voyagermesh/voyager/pull/879) ([tamalsaha](https://github.com/tamalsaha)) +- Use rbac/v1 api [\#878](https://github.com/voyagermesh/voyager/pull/878) ([tamalsaha](https://github.com/tamalsaha)) +- Use github.com/pkg/errors [\#877](https://github.com/voyagermesh/voyager/pull/877) ([tamalsaha](https://github.com/tamalsaha)) +- Update docs for supported annotations [\#871](https://github.com/voyagermesh/voyager/pull/871) ([diptadas](https://github.com/diptadas)) + +## [6.0.0-rc.0](https://github.com/voyagermesh/voyager/tree/6.0.0-rc.0) (2018-02-14) +[Full Changelog](https://github.com/voyagermesh/voyager/compare/5.0.0-rc.11...6.0.0-rc.0) + +**Fixed bugs:** + +- Document GKE cluster RBAC setup [\#564](https://github.com/voyagermesh/voyager/issues/564) + +**Closed issues:** + +- LoadBalancer vs NodePort with manually setup LB \(haproxy.cfg difference\) [\#867](https://github.com/voyagermesh/voyager/issues/867) +- Ignore Rule if backend service is missing [\#848](https://github.com/voyagermesh/voyager/issues/848) +- Failed to list ServiceMonitor [\#847](https://github.com/voyagermesh/voyager/issues/847) +- Uninstall deletes object only from kube-system namespace [\#846](https://github.com/voyagermesh/voyager/issues/846) +- Multi backends for one domain [\#833](https://github.com/voyagermesh/voyager/issues/833) +- TCP Ingress Health Check Annotations not Working [\#832](https://github.com/voyagermesh/voyager/issues/832) +- DNS-01 Challenge provider missing key in credential [\#821](https://github.com/voyagermesh/voyager/issues/821) +- Allow users to specify backend names [\#819](https://github.com/voyagermesh/voyager/issues/819) +- Should we make acl names part of the "api"? [\#818](https://github.com/voyagermesh/voyager/issues/818) +- ACL generation: Support cookie matching [\#817](https://github.com/voyagermesh/voyager/issues/817) +- Default http-\>https redirect turns DELETE \(and possibly other HTTP verbs\) into GET [\#816](https://github.com/voyagermesh/voyager/issues/816) +- Panic in runtime.go when using TLS [\#814](https://github.com/voyagermesh/voyager/issues/814) +- ACL generation: Support multiple path matching per rule [\#813](https://github.com/voyagermesh/voyager/issues/813) +- ACL in haproxy not created correctly when an ingress has a single host rule [\#807](https://github.com/voyagermesh/voyager/issues/807) +- Constant "Back-off restarting failed container" for a nonexistent bad ingress. [\#797](https://github.com/voyagermesh/voyager/issues/797) +- When a pod linked to a service is deleted, Voyager Operator crashes and does not update ConfigMap [\#790](https://github.com/voyagermesh/voyager/issues/790) +- Pod reboot loop with "One or more Ingress objects are invalid" [\#779](https://github.com/voyagermesh/voyager/issues/779) +- Using Voyager and Let's Encrypt in multiple Kubernetes clusters in different regions [\#687](https://github.com/voyagermesh/voyager/issues/687) +- Self-referential Ingress and Certificate must be done in order [\#661](https://github.com/voyagermesh/voyager/issues/661) +- GRPC example [\#604](https://github.com/voyagermesh/voyager/issues/604) +- Websocket example [\#603](https://github.com/voyagermesh/voyager/issues/603) +- Support direct scrapping via Prometheus [\#593](https://github.com/voyagermesh/voyager/issues/593) +- Use field selectors in TLS mounters [\#558](https://github.com/voyagermesh/voyager/issues/558) +- Update Voyager to use workqueue [\#535](https://github.com/voyagermesh/voyager/issues/535) +- Change BackendRule to BackendRules [\#468](https://github.com/voyagermesh/voyager/issues/468) +- Use Kutil based PATCH to apply changes [\#457](https://github.com/voyagermesh/voyager/issues/457) +- Use Secret to store HAProxy.conf [\#447](https://github.com/voyagermesh/voyager/issues/447) +- voyager check should check annotations and dump the parsed annotations [\#367](https://github.com/voyagermesh/voyager/issues/367) +- Document IAM permission needed for HostPort mode [\#358](https://github.com/voyagermesh/voyager/issues/358) +- Canonicalize TemplateData [\#348](https://github.com/voyagermesh/voyager/issues/348) + +**Merged pull requests:** + +- Remove bad acl from haproxy template [\#875](https://github.com/voyagermesh/voyager/pull/875) ([tamalsaha](https://github.com/tamalsaha)) +- annotations.md typo fix [\#874](https://github.com/voyagermesh/voyager/pull/874) ([mu5h3r](https://github.com/mu5h3r)) +- Use service port by default for LB type nodeport [\#870](https://github.com/voyagermesh/voyager/pull/870) ([diptadas](https://github.com/diptadas)) +- Fixed configmap cleanup when ingress deleted [\#869](https://github.com/voyagermesh/voyager/pull/869) ([diptadas](https://github.com/diptadas)) +- Removed deprecated sticky annotation [\#868](https://github.com/voyagermesh/voyager/pull/868) ([diptadas](https://github.com/diptadas)) +- Pass client config to webhook [\#865](https://github.com/voyagermesh/voyager/pull/865) ([tamalsaha](https://github.com/tamalsaha)) +- Fixed e2e tests [\#863](https://github.com/voyagermesh/voyager/pull/863) ([diptadas](https://github.com/diptadas)) +- Update charts to support api registration [\#862](https://github.com/voyagermesh/voyager/pull/862) ([tamalsaha](https://github.com/tamalsaha)) +- Use ${} form for onessl envsubst [\#861](https://github.com/voyagermesh/voyager/pull/861) ([tamalsaha](https://github.com/tamalsaha)) +- Ignore error for missing backend services [\#860](https://github.com/voyagermesh/voyager/pull/860) ([diptadas](https://github.com/diptadas)) +- Make operator run locally [\#859](https://github.com/voyagermesh/voyager/pull/859) ([tamalsaha](https://github.com/tamalsaha)) +- Update comment regarding RBAC [\#858](https://github.com/voyagermesh/voyager/pull/858) ([bcyrill](https://github.com/bcyrill)) +- Don't append duplicate group versions [\#857](https://github.com/voyagermesh/voyager/pull/857) ([tamalsaha](https://github.com/tamalsaha)) +- Merge admission webhook and operator into one binary [\#856](https://github.com/voyagermesh/voyager/pull/856) ([tamalsaha](https://github.com/tamalsaha)) +- Install admission webhook for Kubernetes \>=1.9.0 [\#855](https://github.com/voyagermesh/voyager/pull/855) ([tamalsaha](https://github.com/tamalsaha)) +- Merge uninstall script into the voyager.sh script [\#854](https://github.com/voyagermesh/voyager/pull/854) ([tamalsaha](https://github.com/tamalsaha)) +- Fixed panic during annotation parsing [\#853](https://github.com/voyagermesh/voyager/pull/853) ([diptadas](https://github.com/diptadas)) +- Checked timeout and dns-resolver maps [\#852](https://github.com/voyagermesh/voyager/pull/852) ([diptadas](https://github.com/diptadas)) +- Add missing RBAC for ServiceMonitor [\#851](https://github.com/voyagermesh/voyager/pull/851) ([tamalsaha](https://github.com/tamalsaha)) +- Document GKE permission options [\#850](https://github.com/voyagermesh/voyager/pull/850) ([tamalsaha](https://github.com/tamalsaha)) +- Ignore --run-on-master flags for GKE [\#849](https://github.com/voyagermesh/voyager/pull/849) ([tamalsaha](https://github.com/tamalsaha)) +- Change BackendRule to BackendRules [\#845](https://github.com/voyagermesh/voyager/pull/845) ([tamalsaha](https://github.com/tamalsaha)) +- Type check for annotations in validator [\#844](https://github.com/voyagermesh/voyager/pull/844) ([diptadas](https://github.com/diptadas)) +- Revise host and path acl names to make them part of "api" [\#843](https://github.com/voyagermesh/voyager/pull/843) ([tamalsaha](https://github.com/tamalsaha)) +- Preserve original HTTP verb on redirect [\#842](https://github.com/voyagermesh/voyager/pull/842) ([tamalsaha](https://github.com/tamalsaha)) +- Only assign deployment replicas initially [\#841](https://github.com/voyagermesh/voyager/pull/841) ([diptadas](https://github.com/diptadas)) +- Fix DNS-01 Challenge provider missing key in credential [\#840](https://github.com/voyagermesh/voyager/pull/840) ([tamalsaha](https://github.com/tamalsaha)) +- Checked for invalid backend service name in validator [\#839](https://github.com/voyagermesh/voyager/pull/839) ([diptadas](https://github.com/diptadas)) +- Removed panic in operator for bad-ingress [\#837](https://github.com/voyagermesh/voyager/pull/837) ([diptadas](https://github.com/diptadas)) +- Checked nil backend before assigning [\#836](https://github.com/voyagermesh/voyager/pull/836) ([diptadas](https://github.com/diptadas)) +- Copy generic-admission-server code into pkg [\#835](https://github.com/voyagermesh/voyager/pull/835) ([tamalsaha](https://github.com/tamalsaha)) +- Log TemplateData in debug mode [\#834](https://github.com/voyagermesh/voyager/pull/834) ([tamalsaha](https://github.com/tamalsaha)) +- Removed maps from template data [\#831](https://github.com/voyagermesh/voyager/pull/831) ([diptadas](https://github.com/diptadas)) +- Prepare docs for 6.0.0-alpha.0 [\#830](https://github.com/voyagermesh/voyager/pull/830) ([tamalsaha](https://github.com/tamalsaha)) +- Support private docker registry in installer [\#829](https://github.com/voyagermesh/voyager/pull/829) ([tamalsaha](https://github.com/tamalsaha)) +- Add ValidatingAdmissionWebhook for Voyager CRDs [\#828](https://github.com/voyagermesh/voyager/pull/828) ([tamalsaha](https://github.com/tamalsaha)) +- Use kubectl auth reconcile in installer script [\#827](https://github.com/voyagermesh/voyager/pull/827) ([tamalsaha](https://github.com/tamalsaha)) +- Update changelog [\#826](https://github.com/voyagermesh/voyager/pull/826) ([tamalsaha](https://github.com/tamalsaha)) +- Update client-go to 6.0.0 [\#825](https://github.com/voyagermesh/voyager/pull/825) ([tamalsaha](https://github.com/tamalsaha)) +- Update copyright year to 2018 [\#824](https://github.com/voyagermesh/voyager/pull/824) ([tamalsaha](https://github.com/tamalsaha)) +- Merge tls-mounter & kloader into haproxy-controller [\#823](https://github.com/voyagermesh/voyager/pull/823) ([tamalsaha](https://github.com/tamalsaha)) +- Updating kube-mon so service-monitor-endpoint-port is optional [\#822](https://github.com/voyagermesh/voyager/pull/822) ([jeffersongirao](https://github.com/jeffersongirao)) +- Fix unit tests [\#820](https://github.com/voyagermesh/voyager/pull/820) ([jeffersongirao](https://github.com/jeffersongirao)) +- Use deterministic-suffix instead of random-suffix in backend name [\#815](https://github.com/voyagermesh/voyager/pull/815) ([diptadas](https://github.com/diptadas)) +- Ignored not-found error for DNS resolver annotations [\#812](https://github.com/voyagermesh/voyager/pull/812) ([diptadas](https://github.com/diptadas)) +- Add prometheus flags to command that uses it [\#810](https://github.com/voyagermesh/voyager/pull/810) ([tamalsaha](https://github.com/tamalsaha)) +- Improve concepts docs [\#809](https://github.com/voyagermesh/voyager/pull/809) ([tamalsaha](https://github.com/tamalsaha)) +- Revendor coreos prometheus operator 0.16.0 [\#808](https://github.com/voyagermesh/voyager/pull/808) ([tamalsaha](https://github.com/tamalsaha)) +- Revendor log wrapper [\#804](https://github.com/voyagermesh/voyager/pull/804) ([tamalsaha](https://github.com/tamalsaha)) +- Implement work-queue in operator [\#803](https://github.com/voyagermesh/voyager/pull/803) ([diptadas](https://github.com/diptadas)) +- Fix links in chart [\#802](https://github.com/voyagermesh/voyager/pull/802) ([tamalsaha](https://github.com/tamalsaha)) +- Add changelog [\#801](https://github.com/voyagermesh/voyager/pull/801) ([tamalsaha](https://github.com/tamalsaha)) + +## [5.0.0-rc.11](https://github.com/voyagermesh/voyager/tree/5.0.0-rc.11) (2018-01-04) +[Full Changelog](https://github.com/voyagermesh/voyager/compare/5.0.0-rc.10...5.0.0-rc.11) + +**Fixed bugs:** + +- Avoid unnecessary config reloads in HAProxy [\#512](https://github.com/voyagermesh/voyager/issues/512) +- Allow adding new domain to cert crd [\#788](https://github.com/voyagermesh/voyager/pull/788) ([tamalsaha](https://github.com/tamalsaha)) + +**Closed issues:** + +- Support all annotations under ingress.appscode.com key [\#791](https://github.com/voyagermesh/voyager/issues/791) +- expose port on host [\#778](https://github.com/voyagermesh/voyager/issues/778) +- Missing Ingress Annotation in Documentation [\#668](https://github.com/voyagermesh/voyager/issues/668) +- Support additional CORS headers [\#656](https://github.com/voyagermesh/voyager/issues/656) + +**Merged pull requests:** + +- Prepare docs for 5.0.0-rc.11 [\#799](https://github.com/voyagermesh/voyager/pull/799) ([tamalsaha](https://github.com/tamalsaha)) +- Reorganize docs for hosting on product site [\#798](https://github.com/voyagermesh/voyager/pull/798) ([tamalsaha](https://github.com/tamalsaha)) +- Detect client id from ENV [\#795](https://github.com/voyagermesh/voyager/pull/795) ([tamalsaha](https://github.com/tamalsaha)) +- Update dead links [\#794](https://github.com/voyagermesh/voyager/pull/794) ([ghost](https://github.com/ghost)) +- Support additional CORS headers [\#793](https://github.com/voyagermesh/voyager/pull/793) ([diptadas](https://github.com/diptadas)) +- Support ingress.appscode.com key for all annotations [\#792](https://github.com/voyagermesh/voyager/pull/792) ([diptadas](https://github.com/diptadas)) +- Use CertStore from kutil [\#789](https://github.com/voyagermesh/voyager/pull/789) ([tamalsaha](https://github.com/tamalsaha)) + +## [5.0.0-rc.10](https://github.com/voyagermesh/voyager/tree/5.0.0-rc.10) (2017-12-29) +[Full Changelog](https://github.com/voyagermesh/voyager/compare/5.0.0-rc.9...5.0.0-rc.10) + +**Fixed bugs:** + +- Set selector for headless service of a HostPort ingress [\#785](https://github.com/voyagermesh/voyager/pull/785) ([tamalsaha](https://github.com/tamalsaha)) + +**Closed issues:** + +- Issues with ACME well-known paths [\#787](https://github.com/voyagermesh/voyager/issues/787) + +**Merged pull requests:** + +- Generate host acl correctly for `\*` host [\#786](https://github.com/voyagermesh/voyager/pull/786) ([tamalsaha](https://github.com/tamalsaha)) +- Add front matter for docs 5.0.0-rc.9 [\#784](https://github.com/voyagermesh/voyager/pull/784) ([sajibcse68](https://github.com/sajibcse68)) + +## [5.0.0-rc.9](https://github.com/voyagermesh/voyager/tree/5.0.0-rc.9) (2017-12-28) +[Full Changelog](https://github.com/voyagermesh/voyager/compare/5.0.0-rc.8...5.0.0-rc.9) + +**Fixed bugs:** + +- Move Acme paths to top of path list [\#781](https://github.com/voyagermesh/voyager/pull/781) ([tamalsaha](https://github.com/tamalsaha)) + +**Closed issues:** + +- Baremetal setup not working at all [\#780](https://github.com/voyagermesh/voyager/issues/780) +- Patching voyager ingress fails [\#773](https://github.com/voyagermesh/voyager/issues/773) + +**Merged pull requests:** + +- Prepare docs for 5.0.0-rc.9 [\#782](https://github.com/voyagermesh/voyager/pull/782) ([tamalsaha](https://github.com/tamalsaha)) +- Use cmp methods from kutil [\#777](https://github.com/voyagermesh/voyager/pull/777) ([tamalsaha](https://github.com/tamalsaha)) +- Show how to run haproxy pods on master [\#776](https://github.com/voyagermesh/voyager/pull/776) ([tamalsaha](https://github.com/tamalsaha)) +- Use verb type to indicate mutation [\#775](https://github.com/voyagermesh/voyager/pull/775) ([tamalsaha](https://github.com/tamalsaha)) +- Use kube-mon repo [\#774](https://github.com/voyagermesh/voyager/pull/774) ([tamalsaha](https://github.com/tamalsaha)) + +## [5.0.0-rc.8](https://github.com/voyagermesh/voyager/tree/5.0.0-rc.8) (2017-12-20) +[Full Changelog](https://github.com/voyagermesh/voyager/compare/5.0.0-rc.7...5.0.0-rc.8) + +**Fixed bugs:** + +- Fix backend name checking for haproxy template [\#771](https://github.com/voyagermesh/voyager/pull/771) ([tamalsaha](https://github.com/tamalsaha)) +- Fix installation instructions in guides [\#770](https://github.com/voyagermesh/voyager/pull/770) ([tamalsaha](https://github.com/tamalsaha)) +- Support wildcard in TLS searching [\#768](https://github.com/voyagermesh/voyager/pull/768) ([tamalsaha](https://github.com/tamalsaha)) +- Merge monitor service ports correctly [\#767](https://github.com/voyagermesh/voyager/pull/767) ([tamalsaha](https://github.com/tamalsaha)) + +**Merged pull requests:** + +- Update docs for 5.0.0-rc.8 [\#772](https://github.com/voyagermesh/voyager/pull/772) ([tamalsaha](https://github.com/tamalsaha)) +- Document how to use external-ip [\#769](https://github.com/voyagermesh/voyager/pull/769) ([tamalsaha](https://github.com/tamalsaha)) +- Update RBAC for analytics [\#766](https://github.com/voyagermesh/voyager/pull/766) ([tamalsaha](https://github.com/tamalsaha)) +- Set ClientID for analytics [\#765](https://github.com/voyagermesh/voyager/pull/765) ([tamalsaha](https://github.com/tamalsaha)) +- Rename tasks to guides [\#764](https://github.com/voyagermesh/voyager/pull/764) ([tamalsaha](https://github.com/tamalsaha)) +- Revise ingress docs [\#755](https://github.com/voyagermesh/voyager/pull/755) ([tamalsaha](https://github.com/tamalsaha)) + +## [5.0.0-rc.7](https://github.com/voyagermesh/voyager/tree/5.0.0-rc.7) (2017-12-13) +[Full Changelog](https://github.com/voyagermesh/voyager/compare/5.0.0-rc.6...5.0.0-rc.7) + +**Closed issues:** + +- List of created ingresses? [\#745](https://github.com/voyagermesh/voyager/issues/745) +- create san cert with panic [\#744](https://github.com/voyagermesh/voyager/issues/744) + +**Merged pull requests:** + +- Prepare for 5.0.0-rc.7 release [\#757](https://github.com/voyagermesh/voyager/pull/757) ([tamalsaha](https://github.com/tamalsaha)) +- Installer for custom template [\#756](https://github.com/voyagermesh/voyager/pull/756) ([tamalsaha](https://github.com/tamalsaha)) +- Change left\_menu -\> menu\_name [\#748](https://github.com/voyagermesh/voyager/pull/748) ([tamalsaha](https://github.com/tamalsaha)) +- Fix panic when crt.status.LastIssuedCertificate is missing on renew [\#746](https://github.com/voyagermesh/voyager/pull/746) ([tamalsaha](https://github.com/tamalsaha)) +- Use RegisterCRDs from kutil [\#743](https://github.com/voyagermesh/voyager/pull/743) ([tamalsaha](https://github.com/tamalsaha)) +- Document updated cert manager [\#581](https://github.com/voyagermesh/voyager/pull/581) ([tamalsaha](https://github.com/tamalsaha)) + +## [5.0.0-rc.6](https://github.com/voyagermesh/voyager/tree/5.0.0-rc.6) (2017-12-05) +[Full Changelog](https://github.com/voyagermesh/voyager/compare/5.0.0-rc.5...5.0.0-rc.6) + +**Merged pull requests:** + +- Use forked golang/x/oauth2 library [\#741](https://github.com/voyagermesh/voyager/pull/741) ([tamalsaha](https://github.com/tamalsaha)) +- Prepare docs for 5.0.0-rc.6 release [\#739](https://github.com/voyagermesh/voyager/pull/739) ([tamalsaha](https://github.com/tamalsaha)) +- Avoid duplicate ACLs for host [\#738](https://github.com/voyagermesh/voyager/pull/738) ([tamalsaha](https://github.com/tamalsaha)) +- Trim space from ACME user email [\#737](https://github.com/voyagermesh/voyager/pull/737) ([tamalsaha](https://github.com/tamalsaha)) +- Revendor dependencies [\#736](https://github.com/voyagermesh/voyager/pull/736) ([tamalsaha](https://github.com/tamalsaha)) + +## [5.0.0-rc.5](https://github.com/voyagermesh/voyager/tree/5.0.0-rc.5) (2017-12-01) +[Full Changelog](https://github.com/voyagermesh/voyager/compare/5.0.0-rc.4...5.0.0-rc.5) + +**Fixed bugs:** + +- No certificates were found while parsing the bundle. [\#725](https://github.com/voyagermesh/voyager/issues/725) + +**Merged pull requests:** + +- Prepare docs for 5.0.0-rc.5 release [\#735](https://github.com/voyagermesh/voyager/pull/735) ([tamalsaha](https://github.com/tamalsaha)) +- Correctly encode cert for renewal. [\#734](https://github.com/voyagermesh/voyager/pull/734) ([tamalsaha](https://github.com/tamalsaha)) +- Add aliases for README file [\#731](https://github.com/voyagermesh/voyager/pull/731) ([sajibcse68](https://github.com/sajibcse68)) +- Update version in front matter for docs [\#730](https://github.com/voyagermesh/voyager/pull/730) ([tamalsaha](https://github.com/tamalsaha)) +- Add Docs Front Matter [\#728](https://github.com/voyagermesh/voyager/pull/728) ([sajibcse68](https://github.com/sajibcse68)) + +## [5.0.0-rc.4](https://github.com/voyagermesh/voyager/tree/5.0.0-rc.4) (2017-11-28) +[Full Changelog](https://github.com/voyagermesh/voyager/compare/5.0.0-rc.3...5.0.0-rc.4) + +**Implemented enhancements:** + +- Print namespace of missing service name [\#710](https://github.com/voyagermesh/voyager/issues/710) +- Support Health Check for backend [\#683](https://github.com/voyagermesh/voyager/issues/683) +- Allow send-ing proxy header to backend [\#164](https://github.com/voyagermesh/voyager/issues/164) + +**Fixed bugs:** + +- Check voyager respects --ingress-class flag [\#711](https://github.com/voyagermesh/voyager/issues/711) +- Adding annotation `ingress.kubernetes.io/hsts` makes voyager generate invalid haproxy config [\#701](https://github.com/voyagermesh/voyager/issues/701) +- Perform ssl-redirect after matching host [\#691](https://github.com/voyagermesh/voyager/issues/691) +- haproxy.cfg:42 rsprep error [\#678](https://github.com/voyagermesh/voyager/issues/678) +- Fix ssl-passthrough [\#665](https://github.com/voyagermesh/voyager/issues/665) +- HTTP -\> HTTPS redirection does not work in 1.8 cluster with AWS cert manager [\#639](https://github.com/voyagermesh/voyager/issues/639) +- Don't use backend name to generate acl name [\#726](https://github.com/voyagermesh/voyager/pull/726) ([tamalsaha](https://github.com/tamalsaha)) +- Unconditionally set headers defined in Ingress [\#717](https://github.com/voyagermesh/voyager/pull/717) ([tamalsaha](https://github.com/tamalsaha)) +- Correctly handle updated ingress.class annotation [\#715](https://github.com/voyagermesh/voyager/pull/715) ([tamalsaha](https://github.com/tamalsaha)) +- Support aws or route53 as providers which read dns credential from ENV [\#712](https://github.com/voyagermesh/voyager/pull/712) ([tamalsaha](https://github.com/tamalsaha)) + +**Closed issues:** + +- Stop cross namespace support when restricted to one namespace [\#698](https://github.com/voyagermesh/voyager/issues/698) +- One or more Ingress objects are invalid [\#697](https://github.com/voyagermesh/voyager/issues/697) +- Cannot create TCP ingress in k8s 1.8.2 and voyager 5.0.0-rc3 [\#696](https://github.com/voyagermesh/voyager/issues/696) +- monitor openstack [\#694](https://github.com/voyagermesh/voyager/issues/694) +- Configure HAProxy to terminate SSL and send PROXYv2 [\#692](https://github.com/voyagermesh/voyager/issues/692) +- voyager 5-rc3 non kube-system ingress , error [\#689](https://github.com/voyagermesh/voyager/issues/689) +- error creating a very simple object on version 5-rc3 [\#688](https://github.com/voyagermesh/voyager/issues/688) +- Support ExternalIPs [\#686](https://github.com/voyagermesh/voyager/issues/686) +- Support rewrite-target annotation [\#657](https://github.com/voyagermesh/voyager/issues/657) +- Document importance to order of paths [\#422](https://github.com/voyagermesh/voyager/issues/422) + +**Merged pull requests:** + +- Cleanup wildcard in ACL name [\#727](https://github.com/voyagermesh/voyager/pull/727) ([tamalsaha](https://github.com/tamalsaha)) +- Load AWS\_HOSTED\_ZONE\_ID if provided by user [\#724](https://github.com/voyagermesh/voyager/pull/724) ([tamalsaha](https://github.com/tamalsaha)) +- Prepare docs for 5.0.0-rc.4 [\#723](https://github.com/voyagermesh/voyager/pull/723) ([tamalsaha](https://github.com/tamalsaha)) +- Make voyager YAMLs installable from internet [\#722](https://github.com/voyagermesh/voyager/pull/722) ([tamalsaha](https://github.com/tamalsaha)) +- Add front matter for voyager cli ref [\#721](https://github.com/voyagermesh/voyager/pull/721) ([tamalsaha](https://github.com/tamalsaha)) +- Support rewrite-target annotation [\#720](https://github.com/voyagermesh/voyager/pull/720) ([tamalsaha](https://github.com/tamalsaha)) +- Print namespace of missing service name [\#716](https://github.com/voyagermesh/voyager/pull/716) ([tamalsaha](https://github.com/tamalsaha)) +- Use http-response set-header instead of rspadd [\#714](https://github.com/voyagermesh/voyager/pull/714) ([tamalsaha](https://github.com/tamalsaha)) +- Use const for test domain [\#713](https://github.com/voyagermesh/voyager/pull/713) ([tamalsaha](https://github.com/tamalsaha)) +- Don't allow cross ns backend when voyager is restricted to own ns [\#709](https://github.com/voyagermesh/voyager/pull/709) ([tamalsaha](https://github.com/tamalsaha)) +- Document azure support for load-balancer-ip [\#708](https://github.com/voyagermesh/voyager/pull/708) ([tamalsaha](https://github.com/tamalsaha)) +- Convert rules for SSL Passthrough [\#706](https://github.com/voyagermesh/voyager/pull/706) ([diptadas](https://github.com/diptadas)) +- Keep all newlines in haproxy.cfg [\#705](https://github.com/voyagermesh/voyager/pull/705) ([tamalsaha](https://github.com/tamalsaha)) +- Revise StatsAccessor interface [\#704](https://github.com/voyagermesh/voyager/pull/704) ([tamalsaha](https://github.com/tamalsaha)) +- Support direct scrapping via Prometheus [\#703](https://github.com/voyagermesh/voyager/pull/703) ([tamalsaha](https://github.com/tamalsaha)) +- Perform ssl-redirect after matching host [\#702](https://github.com/voyagermesh/voyager/pull/702) ([tamalsaha](https://github.com/tamalsaha)) +- Fix build [\#700](https://github.com/voyagermesh/voyager/pull/700) ([tamalsaha](https://github.com/tamalsaha)) +- Support PROXY protocol in test server [\#699](https://github.com/voyagermesh/voyager/pull/699) ([diptadas](https://github.com/diptadas)) +- Enable server health check using service annotations and backend rules [\#695](https://github.com/voyagermesh/voyager/pull/695) ([diptadas](https://github.com/diptadas)) +- Add to backends the options for send-proxy variants for server. [\#693](https://github.com/voyagermesh/voyager/pull/693) ([drf](https://github.com/drf)) +- Support ExternalIPs [\#690](https://github.com/voyagermesh/voyager/pull/690) ([tamalsaha](https://github.com/tamalsaha)) +- Use DeepCopy with PATCH calls. [\#685](https://github.com/voyagermesh/voyager/pull/685) ([tamalsaha](https://github.com/tamalsaha)) +- Fix template rendering [\#682](https://github.com/voyagermesh/voyager/pull/682) ([tamalsaha](https://github.com/tamalsaha)) +- Move chart inside stable folder [\#681](https://github.com/voyagermesh/voyager/pull/681) ([tamalsaha](https://github.com/tamalsaha)) +- Make chart namespaced [\#680](https://github.com/voyagermesh/voyager/pull/680) ([tamalsaha](https://github.com/tamalsaha)) +- Allow for binding HTTP or TCP ingress rules to specific addresses [\#649](https://github.com/voyagermesh/voyager/pull/649) ([deuill](https://github.com/deuill)) + +## [5.0.0-rc.3](https://github.com/voyagermesh/voyager/tree/5.0.0-rc.3) (2017-11-02) +[Full Changelog](https://github.com/voyagermesh/voyager/compare/5.0.0-rc.2...5.0.0-rc.3) + +**Closed issues:** + +- Support imagePullSecrets for HAProxy pods [\#673](https://github.com/voyagermesh/voyager/issues/673) +- Document how to configure DNS in Hostport / NodePort mode [\#354](https://github.com/voyagermesh/voyager/issues/354) + +**Merged pull requests:** + +- Add image/tag variables in chart [\#677](https://github.com/voyagermesh/voyager/pull/677) ([tamalsaha](https://github.com/tamalsaha)) +- Detect change in imagePullSecrets [\#676](https://github.com/voyagermesh/voyager/pull/676) ([tamalsaha](https://github.com/tamalsaha)) +- Prepare docs for 5.0.0-rc.3 [\#675](https://github.com/voyagermesh/voyager/pull/675) ([tamalsaha](https://github.com/tamalsaha)) +- Add ImagePullSecrets in Ingress [\#674](https://github.com/voyagermesh/voyager/pull/674) ([tamalsaha](https://github.com/tamalsaha)) + +## [5.0.0-rc.2](https://github.com/voyagermesh/voyager/tree/5.0.0-rc.2) (2017-11-02) +[Full Changelog](https://github.com/voyagermesh/voyager/compare/5.0.0-rc.1...5.0.0-rc.2) + +**Fixed bugs:** + +- Add `deletecollection` permission to voyager operator [\#666](https://github.com/voyagermesh/voyager/pull/666) ([tamalsaha](https://github.com/tamalsaha)) + +**Merged pull requests:** + +- Support GoDaddy DNS provider [\#672](https://github.com/voyagermesh/voyager/pull/672) ([tamalsaha](https://github.com/tamalsaha)) +- Support openstack provider [\#671](https://github.com/voyagermesh/voyager/pull/671) ([tamalsaha](https://github.com/tamalsaha)) +- Support `ingress.appscode.com/keep-source-ip` annotation for NodePort mode [\#667](https://github.com/voyagermesh/voyager/pull/667) ([tamalsaha](https://github.com/tamalsaha)) + +## [5.0.0-rc.1](https://github.com/voyagermesh/voyager/tree/5.0.0-rc.1) (2017-10-26) +[Full Changelog](https://github.com/voyagermesh/voyager/compare/5.0.0-alpha.1...5.0.0-rc.1) + +**Fixed bugs:** + +- TCP mode does not work in port 80 [\#663](https://github.com/voyagermesh/voyager/issues/663) + +**Merged pull requests:** + +- Enable TCP mode in port 80 [\#664](https://github.com/voyagermesh/voyager/pull/664) ([tamalsaha](https://github.com/tamalsaha)) +- Remove unused fields from LocalTypedReference [\#662](https://github.com/voyagermesh/voyager/pull/662) ([tamalsaha](https://github.com/tamalsaha)) + +## [5.0.0-alpha.1](https://github.com/voyagermesh/voyager/tree/5.0.0-alpha.1) (2017-10-24) +[Full Changelog](https://github.com/voyagermesh/voyager/compare/5.0.0-rc.0...5.0.0-alpha.1) + +**Fixed bugs:** + +- Avoid redirecting ACME requests to https scheme [\#660](https://github.com/voyagermesh/voyager/pull/660) ([tamalsaha](https://github.com/tamalsaha)) + +## [5.0.0-rc.0](https://github.com/voyagermesh/voyager/tree/5.0.0-rc.0) (2017-10-23) +[Full Changelog](https://github.com/voyagermesh/voyager/compare/4.0.0-rc.18...5.0.0-rc.0) + +**Implemented enhancements:** + +- Allow for binding frontends to specific addresses [\#602](https://github.com/voyagermesh/voyager/issues/602) + +**Fixed bugs:** + +- Fix Certificate Test Name [\#648](https://github.com/voyagermesh/voyager/pull/648) ([sadlil](https://github.com/sadlil)) + +**Merged pull requests:** + +- Use typed versioned client for CRD [\#659](https://github.com/voyagermesh/voyager/pull/659) ([tamalsaha](https://github.com/tamalsaha)) +- Use prometheus-operator v1 api/client [\#658](https://github.com/voyagermesh/voyager/pull/658) ([tamalsaha](https://github.com/tamalsaha)) +- Fix project name in header for auto generated files [\#655](https://github.com/voyagermesh/voyager/pull/655) ([tamalsaha](https://github.com/tamalsaha)) +- Document the important of order of paths [\#654](https://github.com/voyagermesh/voyager/pull/654) ([tamalsaha](https://github.com/tamalsaha)) +- Prepare docs for 5.0.0-rc.0 [\#653](https://github.com/voyagermesh/voyager/pull/653) ([tamalsaha](https://github.com/tamalsaha)) +- Update prometheus-operator to implement DeepCopy\(\) [\#652](https://github.com/voyagermesh/voyager/pull/652) ([tamalsaha](https://github.com/tamalsaha)) +- Fix NPE in time.Equal method [\#651](https://github.com/voyagermesh/voyager/pull/651) ([tamalsaha](https://github.com/tamalsaha)) +- Change `k8s.io/api/core/v1` pkg alias to core [\#650](https://github.com/voyagermesh/voyager/pull/650) ([tamalsaha](https://github.com/tamalsaha)) +- Use client-go 5.x [\#629](https://github.com/voyagermesh/voyager/pull/629) ([tamalsaha](https://github.com/tamalsaha)) +- Generate openapi spec [\#596](https://github.com/voyagermesh/voyager/pull/596) ([tamalsaha](https://github.com/tamalsaha)) + +## [4.0.0-rc.18](https://github.com/voyagermesh/voyager/tree/4.0.0-rc.18) (2017-10-18) +[Full Changelog](https://github.com/voyagermesh/voyager/compare/4.0.0-rc.17...4.0.0-rc.18) + +**Closed issues:** + +- Operator doesn't create CRD groups [\#643](https://github.com/voyagermesh/voyager/issues/643) + +## [4.0.0-rc.17](https://github.com/voyagermesh/voyager/tree/4.0.0-rc.17) (2017-10-18) +[Full Changelog](https://github.com/voyagermesh/voyager/compare/4.0.0-rc.16...4.0.0-rc.17) + +**Closed issues:** + +- Up kubernetes/client-go QPS and Burst config [\#640](https://github.com/voyagermesh/voyager/issues/640) + +**Merged pull requests:** + +- Raise kubernetes/client-go QPS and Burst config [\#641](https://github.com/voyagermesh/voyager/pull/641) ([tamalsaha](https://github.com/tamalsaha)) + +## [4.0.0-rc.16](https://github.com/voyagermesh/voyager/tree/4.0.0-rc.16) (2017-10-16) +[Full Changelog](https://github.com/voyagermesh/voyager/compare/4.0.0-rc.15...4.0.0-rc.16) + +**Fixed bugs:** + +- haproxy points to wrong file on tcp+tls config [\#630](https://github.com/voyagermesh/voyager/issues/630) + +**Closed issues:** + +- Support `ingress.appscode.com/type: internal` [\#627](https://github.com/voyagermesh/voyager/issues/627) + +**Merged pull requests:** + +- Implement `ingress.appscode.com/type: internal` [\#636](https://github.com/voyagermesh/voyager/pull/636) ([tamalsaha](https://github.com/tamalsaha)) + +## [4.0.0-rc.15](https://github.com/voyagermesh/voyager/tree/4.0.0-rc.15) (2017-10-16) +[Full Changelog](https://github.com/voyagermesh/voyager/compare/4.0.0-rc.14...4.0.0-rc.15) + +**Fixed bugs:** + +- Fix tcp frontend template [\#634](https://github.com/voyagermesh/voyager/pull/634) ([tamalsaha](https://github.com/tamalsaha)) + +**Merged pull requests:** + +- Update chart helper truncate length [\#633](https://github.com/voyagermesh/voyager/pull/633) ([tamalsaha](https://github.com/tamalsaha)) + +## [4.0.0-rc.14](https://github.com/voyagermesh/voyager/tree/4.0.0-rc.14) (2017-10-16) +[Full Changelog](https://github.com/voyagermesh/voyager/compare/4.0.0-rc.13...4.0.0-rc.14) + +**Merged pull requests:** + +- Rename SecretName to CertFile [\#632](https://github.com/voyagermesh/voyager/pull/632) ([tamalsaha](https://github.com/tamalsaha)) + +## [4.0.0-rc.13](https://github.com/voyagermesh/voyager/tree/4.0.0-rc.13) (2017-10-16) +[Full Changelog](https://github.com/voyagermesh/voyager/compare/4.0.0-rc.12...4.0.0-rc.13) + +**Fixed bugs:** + +- Replace reflect.Equal with github.com/google/go-cmp [\#626](https://github.com/voyagermesh/voyager/pull/626) ([tamalsaha](https://github.com/tamalsaha)) + +**Merged pull requests:** + +- Update unit tests [\#623](https://github.com/voyagermesh/voyager/pull/623) ([julianvmodesto](https://github.com/julianvmodesto)) + +## [4.0.0-rc.12](https://github.com/voyagermesh/voyager/tree/4.0.0-rc.12) (2017-10-13) +[Full Changelog](https://github.com/voyagermesh/voyager/compare/4.0.0-rc.11...4.0.0-rc.12) + +**Merged pull requests:** + +- Prepare docs for 4.0.0-rc.12 [\#622](https://github.com/voyagermesh/voyager/pull/622) ([tamalsaha](https://github.com/tamalsaha)) + +## [4.0.0-rc.11](https://github.com/voyagermesh/voyager/tree/4.0.0-rc.11) (2017-10-12) +[Full Changelog](https://github.com/voyagermesh/voyager/compare/4.0.0-rc.10...4.0.0-rc.11) + +**Implemented enhancements:** + +- TLS auth [\#606](https://github.com/voyagermesh/voyager/pull/606) ([sadlil](https://github.com/sadlil)) + +**Fixed bugs:** + +- TLS auth [\#606](https://github.com/voyagermesh/voyager/pull/606) ([sadlil](https://github.com/sadlil)) + +**Closed issues:** + +- Allow restricting voyager in a single namespace [\#582](https://github.com/voyagermesh/voyager/issues/582) +- zone-specific static IP on gke rather than global static [\#414](https://github.com/voyagermesh/voyager/issues/414) +- Add flag to handling standard ingress [\#369](https://github.com/voyagermesh/voyager/issues/369) + +**Merged pull requests:** + +- Allow restricting voyager in a single namespace [\#619](https://github.com/voyagermesh/voyager/pull/619) ([tamalsaha](https://github.com/tamalsaha)) +- Add support for CRL when using TLS Auth [\#618](https://github.com/voyagermesh/voyager/pull/618) ([tamalsaha](https://github.com/tamalsaha)) +- Remove support for ingress.appscode.com/egress-points annotations [\#615](https://github.com/voyagermesh/voyager/pull/615) ([tamalsaha](https://github.com/tamalsaha)) +- Add Wildcard domain Test [\#614](https://github.com/voyagermesh/voyager/pull/614) ([sadlil](https://github.com/sadlil)) +- Move CRD definition to api folder. [\#613](https://github.com/voyagermesh/voyager/pull/613) ([tamalsaha](https://github.com/tamalsaha)) + +## [4.0.0-rc.10](https://github.com/voyagermesh/voyager/tree/4.0.0-rc.10) (2017-10-10) +[Full Changelog](https://github.com/voyagermesh/voyager/compare/4.0.0-rc.9...4.0.0-rc.10) + +**Closed issues:** + +- Change test domain appscode.dev -\> appscode.test [\#590](https://github.com/voyagermesh/voyager/issues/590) + +**Merged pull requests:** + +- Clarify Prometheus operator version [\#612](https://github.com/voyagermesh/voyager/pull/612) ([tamalsaha](https://github.com/tamalsaha)) +- Prepare docs for 4.0.0-rc.10 release [\#611](https://github.com/voyagermesh/voyager/pull/611) ([tamalsaha](https://github.com/tamalsaha)) +- Update Prometheus operator dependency to 0.13.0 [\#609](https://github.com/voyagermesh/voyager/pull/609) ([tamalsaha](https://github.com/tamalsaha)) +- Add doc showing how to detect operator version [\#607](https://github.com/voyagermesh/voyager/pull/607) ([tamalsaha](https://github.com/tamalsaha)) +- Use .test TLD [\#601](https://github.com/voyagermesh/voyager/pull/601) ([tamalsaha](https://github.com/tamalsaha)) + +## [4.0.0-rc.9](https://github.com/voyagermesh/voyager/tree/4.0.0-rc.9) (2017-10-08) +[Full Changelog](https://github.com/voyagermesh/voyager/compare/4.0.0-rc.8...4.0.0-rc.9) + +**Fixed bugs:** + +- Fix validator so can specify either HTTP or TCP [\#597](https://github.com/voyagermesh/voyager/pull/597) ([tamalsaha](https://github.com/tamalsaha)) + +**Merged pull requests:** + +- Enable stats for e2e test [\#595](https://github.com/voyagermesh/voyager/pull/595) ([tamalsaha](https://github.com/tamalsaha)) +- Fix stats auth indentation when auth is omitted [\#594](https://github.com/voyagermesh/voyager/pull/594) ([tamalsaha](https://github.com/tamalsaha)) + +## [4.0.0-rc.8](https://github.com/voyagermesh/voyager/tree/4.0.0-rc.8) (2017-10-06) +[Full Changelog](https://github.com/voyagermesh/voyager/compare/4.0.0-rc.7...4.0.0-rc.8) + +**Fixed bugs:** + +- Assume cert store as Secret, if Vault missing. [\#592](https://github.com/voyagermesh/voyager/pull/592) ([tamalsaha](https://github.com/tamalsaha)) + +## [4.0.0-rc.7](https://github.com/voyagermesh/voyager/tree/4.0.0-rc.7) (2017-10-06) +[Full Changelog](https://github.com/voyagermesh/voyager/compare/4.0.0-rc.6...4.0.0-rc.7) + +**Fixed bugs:** + +- Migrate Ingress before projection [\#591](https://github.com/voyagermesh/voyager/pull/591) ([tamalsaha](https://github.com/tamalsaha)) + +## [4.0.0-rc.6](https://github.com/voyagermesh/voyager/tree/4.0.0-rc.6) (2017-10-06) +[Full Changelog](https://github.com/voyagermesh/voyager/compare/4.0.0-rc.5...4.0.0-rc.6) + +**Fixed bugs:** + +- LE: Too many invalid authorizations recently [\#587](https://github.com/voyagermesh/voyager/issues/587) +- Fix HTTP challenger [\#589](https://github.com/voyagermesh/voyager/pull/589) ([tamalsaha](https://github.com/tamalsaha)) + +## [4.0.0-rc.5](https://github.com/voyagermesh/voyager/tree/4.0.0-rc.5) (2017-10-06) +[Full Changelog](https://github.com/voyagermesh/voyager/compare/4.0.0-rc.4...4.0.0-rc.5) + +**Fixed bugs:** + +- Support static ip for Azure/ACS cluster. [\#584](https://github.com/voyagermesh/voyager/pull/584) ([tamalsaha](https://github.com/tamalsaha)) + +**Merged pull requests:** + +- Prepare docs for 4.0.0-rc.5 [\#585](https://github.com/voyagermesh/voyager/pull/585) ([tamalsaha](https://github.com/tamalsaha)) +- Rename SecretRef to TLSRef [\#580](https://github.com/voyagermesh/voyager/pull/580) ([tamalsaha](https://github.com/tamalsaha)) +- Add errofiles annotation [\#574](https://github.com/voyagermesh/voyager/pull/574) ([diptadas](https://github.com/diptadas)) +- Add force-ssl-redirect annotation [\#563](https://github.com/voyagermesh/voyager/pull/563) ([diptadas](https://github.com/diptadas)) + +## [4.0.0-rc.4](https://github.com/voyagermesh/voyager/tree/4.0.0-rc.4) (2017-10-05) +[Full Changelog](https://github.com/voyagermesh/voyager/compare/3.2.2...4.0.0-rc.4) + +**Closed issues:** + +- Log GO's current thread id [\#573](https://github.com/voyagermesh/voyager/issues/573) + +**Merged pull requests:** + +- Update docs for 4.0.0-rc.4 [\#576](https://github.com/voyagermesh/voyager/pull/576) ([tamalsaha](https://github.com/tamalsaha)) + +## [3.2.2](https://github.com/voyagermesh/voyager/tree/3.2.2) (2017-10-05) +[Full Changelog](https://github.com/voyagermesh/voyager/compare/4.0.0-rc.3...3.2.2) + +**Merged pull requests:** + +- Disable OCSP must staple [\#570](https://github.com/voyagermesh/voyager/pull/570) ([tamalsaha](https://github.com/tamalsaha)) + +## [4.0.0-rc.3](https://github.com/voyagermesh/voyager/tree/4.0.0-rc.3) (2017-10-04) +[Full Changelog](https://github.com/voyagermesh/voyager/compare/4.0.0-rc.2...4.0.0-rc.3) + +**Merged pull requests:** + +- Prepare docs for 4.0.0-rc.3 [\#569](https://github.com/voyagermesh/voyager/pull/569) ([tamalsaha](https://github.com/tamalsaha)) +- Set TypeMeta when creating object [\#567](https://github.com/voyagermesh/voyager/pull/567) ([tamalsaha](https://github.com/tamalsaha)) +- Fix logging [\#566](https://github.com/voyagermesh/voyager/pull/566) ([tamalsaha](https://github.com/tamalsaha)) + +## [4.0.0-rc.2](https://github.com/voyagermesh/voyager/tree/4.0.0-rc.2) (2017-10-04) +[Full Changelog](https://github.com/voyagermesh/voyager/compare/4.0.0-rc.1...4.0.0-rc.2) + +**Closed issues:** + +- Name server by pod name instead of endpoint ip [\#550](https://github.com/voyagermesh/voyager/issues/550) +- ocsp stapling [\#531](https://github.com/voyagermesh/voyager/issues/531) + +**Merged pull requests:** + +- Prepare docs for 4.0.0-rc.2 [\#561](https://github.com/voyagermesh/voyager/pull/561) ([tamalsaha](https://github.com/tamalsaha)) +- Fix \#552 [\#557](https://github.com/voyagermesh/voyager/pull/557) ([sadlil](https://github.com/sadlil)) +- Add service auth annotation [\#555](https://github.com/voyagermesh/voyager/pull/555) ([diptadas](https://github.com/diptadas)) +- Name server by pod name instead of endpoint ip [\#551](https://github.com/voyagermesh/voyager/pull/551) ([sadlil](https://github.com/sadlil)) +- Add max-connections annotation [\#546](https://github.com/voyagermesh/voyager/pull/546) ([diptadas](https://github.com/diptadas)) + +## [4.0.0-rc.1](https://github.com/voyagermesh/voyager/tree/4.0.0-rc.1) (2017-09-27) +[Full Changelog](https://github.com/voyagermesh/voyager/compare/4.0.0-rc.0...4.0.0-rc.1) + +**Merged pull requests:** + +- Fix test [\#549](https://github.com/voyagermesh/voyager/pull/549) ([diptadas](https://github.com/diptadas)) +- Add init-only mode for tls mounter [\#548](https://github.com/voyagermesh/voyager/pull/548) ([tamalsaha](https://github.com/tamalsaha)) +- Fix tls mounter [\#547](https://github.com/voyagermesh/voyager/pull/547) ([sadlil](https://github.com/sadlil)) +- Update docs to CRD from TPR [\#544](https://github.com/voyagermesh/voyager/pull/544) ([tamalsaha](https://github.com/tamalsaha)) +- Fix tls mounter [\#543](https://github.com/voyagermesh/voyager/pull/543) ([tamalsaha](https://github.com/tamalsaha)) +- Ensure RBAC if Ingress is updated [\#542](https://github.com/voyagermesh/voyager/pull/542) ([tamalsaha](https://github.com/tamalsaha)) +- Make SecretRef pointer again [\#540](https://github.com/voyagermesh/voyager/pull/540) ([tamalsaha](https://github.com/tamalsaha)) +- Add whitelist-source-range annotation [\#539](https://github.com/voyagermesh/voyager/pull/539) ([diptadas](https://github.com/diptadas)) +- Add links to user guide [\#537](https://github.com/voyagermesh/voyager/pull/537) ([tamalsaha](https://github.com/tamalsaha)) +- Install voyager operator as critical addon [\#536](https://github.com/voyagermesh/voyager/pull/536) ([tamalsaha](https://github.com/tamalsaha)) +- Remove UpdateRBAC mode. [\#534](https://github.com/voyagermesh/voyager/pull/534) ([tamalsaha](https://github.com/tamalsaha)) +- Use CreateOrPatch apis with RBAC. Also sets ownerReference. [\#533](https://github.com/voyagermesh/voyager/pull/533) ([tamalsaha](https://github.com/tamalsaha)) +- Disable OCSP must staple [\#532](https://github.com/voyagermesh/voyager/pull/532) ([tamalsaha](https://github.com/tamalsaha)) +- Explain why tcp connections can't be whitelisted for AWS LoadBlancers [\#514](https://github.com/voyagermesh/voyager/pull/514) ([tamalsaha](https://github.com/tamalsaha)) + +## [4.0.0-rc.0](https://github.com/voyagermesh/voyager/tree/4.0.0-rc.0) (2017-09-24) +[Full Changelog](https://github.com/voyagermesh/voyager/compare/3.2.1...4.0.0-rc.0) + +**Fixed bugs:** + +- AWS secrets don't seem to be used for ACME validation [\#526](https://github.com/voyagermesh/voyager/issues/526) +- Watcher should exit if it can't connect to master [\#136](https://github.com/voyagermesh/voyager/issues/136) + +**Closed issues:** + +- Support providing secrets as a PV [\#496](https://github.com/voyagermesh/voyager/issues/496) +- Use SharedInformer [\#443](https://github.com/voyagermesh/voyager/issues/443) +- GCE: Services \(LoadBalancer\) with static ip causes panic in 1.7 [\#416](https://github.com/voyagermesh/voyager/issues/416) +- Don't retry if rate-limited by LE [\#356](https://github.com/voyagermesh/voyager/issues/356) + +**Merged pull requests:** + +- Fix install guide link. [\#523](https://github.com/voyagermesh/voyager/pull/523) ([tamalsaha](https://github.com/tamalsaha)) +- Add e2e test for HSTS annotations [\#521](https://github.com/voyagermesh/voyager/pull/521) ([diptadas](https://github.com/diptadas)) +- Fix HSTS header template [\#520](https://github.com/voyagermesh/voyager/pull/520) ([diptadas](https://github.com/diptadas)) +- Add hsts-preload and hsts-include-subdomains annotations [\#519](https://github.com/voyagermesh/voyager/pull/519) ([diptadas](https://github.com/diptadas)) +- Update kloader to 4.0.1 [\#518](https://github.com/voyagermesh/voyager/pull/518) ([tamalsaha](https://github.com/tamalsaha)) +- Add hsts-max-age annotation [\#515](https://github.com/voyagermesh/voyager/pull/515) ([diptadas](https://github.com/diptadas)) +- Revendor haproxy-exporter [\#513](https://github.com/voyagermesh/voyager/pull/513) ([tamalsaha](https://github.com/tamalsaha)) + +## [3.2.1](https://github.com/voyagermesh/voyager/tree/3.2.1) (2017-09-19) +[Full Changelog](https://github.com/voyagermesh/voyager/compare/4.0.0-alpha.1...3.2.1) + +**Merged pull requests:** + +- Update RBAC to allow watching nodes. [\#510](https://github.com/voyagermesh/voyager/pull/510) ([tamalsaha](https://github.com/tamalsaha)) +- Fix DNS provider key for Google cloud DNS. [\#509](https://github.com/voyagermesh/voyager/pull/509) ([tamalsaha](https://github.com/tamalsaha)) +- Change HAProxy image tag to 1.7.6-4.0.0-alpha.1 [\#499](https://github.com/voyagermesh/voyager/pull/499) ([tamalsaha](https://github.com/tamalsaha)) + +## [4.0.0-alpha.1](https://github.com/voyagermesh/voyager/tree/4.0.0-alpha.1) (2017-09-15) +[Full Changelog](https://github.com/voyagermesh/voyager/compare/4.0.0-alpha.0...4.0.0-alpha.1) + +**Implemented enhancements:** + +- Fix tests for 4.0 [\#492](https://github.com/voyagermesh/voyager/pull/492) ([sadlil](https://github.com/sadlil)) + +**Closed issues:** + +- Allow configuring templates per Ingress [\#482](https://github.com/voyagermesh/voyager/issues/482) + +**Merged pull requests:** + +- Use kloader 4.0.0 [\#498](https://github.com/voyagermesh/voyager/pull/498) ([tamalsaha](https://github.com/tamalsaha)) +- Correct a small typo in the weighted doco [\#495](https://github.com/voyagermesh/voyager/pull/495) ([leprechaun](https://github.com/leprechaun)) +- Add ObjectReference methods. [\#494](https://github.com/voyagermesh/voyager/pull/494) ([tamalsaha](https://github.com/tamalsaha)) +- Update Chart RBAC format as recommended. [\#490](https://github.com/voyagermesh/voyager/pull/490) ([tamalsaha](https://github.com/tamalsaha)) + +## [4.0.0-alpha.0](https://github.com/voyagermesh/voyager/tree/4.0.0-alpha.0) (2017-09-11) +[Full Changelog](https://github.com/voyagermesh/voyager/compare/3.2.0...4.0.0-alpha.0) + +**Implemented enhancements:** + +- Replace TPR with CRD [\#419](https://github.com/voyagermesh/voyager/pull/419) ([sadlil](https://github.com/sadlil)) + +**Merged pull requests:** + +- Use svc.Spec.ExternalTrafficPolicy [\#489](https://github.com/voyagermesh/voyager/pull/489) ([tamalsaha](https://github.com/tamalsaha)) +- Use DNSPolicy ClusterFirstWithHostNet for HostPort mode. [\#488](https://github.com/voyagermesh/voyager/pull/488) ([tamalsaha](https://github.com/tamalsaha)) +- Use log & errors to appscode/go pkg [\#487](https://github.com/voyagermesh/voyager/pull/487) ([tamalsaha](https://github.com/tamalsaha)) +- Use Deployment for HostPort mode [\#486](https://github.com/voyagermesh/voyager/pull/486) ([tamalsaha](https://github.com/tamalsaha)) + +## [3.2.0](https://github.com/voyagermesh/voyager/tree/3.2.0) (2017-09-11) +[Full Changelog](https://github.com/voyagermesh/voyager/compare/3.2.0-rc.3...3.2.0) + +**Implemented enhancements:** + +- haproxy stats, named services [\#310](https://github.com/voyagermesh/voyager/issues/310) +- Serve both HTTP and HTTPS under same host [\#262](https://github.com/voyagermesh/voyager/issues/262) +- Open firewall for know providers in NodePort mode. [\#227](https://github.com/voyagermesh/voyager/issues/227) +- Allow users to specify NodePort for service ports in NodePort mode. [\#128](https://github.com/voyagermesh/voyager/issues/128) +- Run L7 ingress on non-standard ports [\#73](https://github.com/voyagermesh/voyager/issues/73) +- Validate Ingress [\#46](https://github.com/voyagermesh/voyager/issues/46) +- Update 3.2.0 Docs [\#477](https://github.com/voyagermesh/voyager/pull/477) ([sadlil](https://github.com/sadlil)) +- Implement Basic Auth for HTTP Ingresses [\#470](https://github.com/voyagermesh/voyager/pull/470) ([sadlil](https://github.com/sadlil)) +- Frontend rules [\#467](https://github.com/voyagermesh/voyager/pull/467) ([sadlil](https://github.com/sadlil)) +- Apply Session affinity to Backend service [\#460](https://github.com/voyagermesh/voyager/pull/460) ([sadlil](https://github.com/sadlil)) +- Restart HAProxy in case of renew certificates [\#413](https://github.com/voyagermesh/voyager/pull/413) ([sadlil](https://github.com/sadlil)) +- Converting E2E tests to use Ginkgo [\#334](https://github.com/voyagermesh/voyager/pull/334) ([sadlil](https://github.com/sadlil)) + +**Fixed bugs:** + +- Ingress validation error [\#420](https://github.com/voyagermesh/voyager/issues/420) +- Fix ACL for host:port in non-standard ports. [\#418](https://github.com/voyagermesh/voyager/issues/418) +- Update operations delete HAProxy pods gets reverted [\#386](https://github.com/voyagermesh/voyager/issues/386) +- Deleting and re-creating a Voyager Ingress in AWS fails due to leaked security groups [\#372](https://github.com/voyagermesh/voyager/issues/372) +- LE cert failed to issue with route53 [\#371](https://github.com/voyagermesh/voyager/issues/371) +- Restart HAProxy when new cert is issued. [\#340](https://github.com/voyagermesh/voyager/issues/340) +- Cert controller issues [\#124](https://github.com/voyagermesh/voyager/issues/124) +- Automatically update firewall when nodeSelector is changed. [\#20](https://github.com/voyagermesh/voyager/issues/20) +- Fix SG group name for GCE [\#472](https://github.com/voyagermesh/voyager/pull/472) ([tamalsaha](https://github.com/tamalsaha)) +- Correctly detect APISchema\(\) [\#471](https://github.com/voyagermesh/voyager/pull/471) ([tamalsaha](https://github.com/tamalsaha)) + +**Closed issues:** + +- Bug: stats.cfg generates an extra \t when no auth given [\#480](https://github.com/voyagermesh/voyager/issues/480) +- 3.2.0 docs [\#474](https://github.com/voyagermesh/voyager/issues/474) +- Allow Sticky session per service basis [\#453](https://github.com/voyagermesh/voyager/issues/453) +- Document how to whitelist IPs [\#441](https://github.com/voyagermesh/voyager/issues/441) +- Allow configuring logging [\#439](https://github.com/voyagermesh/voyager/issues/439) +- Add PATCH api support [\#411](https://github.com/voyagermesh/voyager/issues/411) +- Handle SSL frontend and backends [\#396](https://github.com/voyagermesh/voyager/issues/396) +- Set unit for timeouts in template [\#360](https://github.com/voyagermesh/voyager/issues/360) +- Add tests [\#357](https://github.com/voyagermesh/voyager/issues/357) +- Handle errors for serviceEndpoints\(\) and getEndpoints\(\) [\#350](https://github.com/voyagermesh/voyager/issues/350) +- Split ingress controller into micro controllers [\#347](https://github.com/voyagermesh/voyager/issues/347) +- setting a static port for type nodeport [\#344](https://github.com/voyagermesh/voyager/issues/344) +- Allow option http-keep-alive and TLS backends [\#343](https://github.com/voyagermesh/voyager/issues/343) +- Open port 443 in HTTP mode [\#333](https://github.com/voyagermesh/voyager/issues/333) +- Revise TCP secret name [\#319](https://github.com/voyagermesh/voyager/issues/319) +- Show validation error if multiple TCP rules are sharing the same port [\#318](https://github.com/voyagermesh/voyager/issues/318) +- Clean up cert controller. [\#287](https://github.com/voyagermesh/voyager/issues/287) +- Improve Prometheus labels from HAProxy Exporter [\#271](https://github.com/voyagermesh/voyager/issues/271) +- Convert tests to use Ginkgo [\#257](https://github.com/voyagermesh/voyager/issues/257) +- Add tests for TLS [\#175](https://github.com/voyagermesh/voyager/issues/175) +- Correctly compute content hash for HAproxy config [\#138](https://github.com/voyagermesh/voyager/issues/138) +- Improve test suite [\#31](https://github.com/voyagermesh/voyager/issues/31) + +**Merged pull requests:** + +- Document noTLS feature [\#485](https://github.com/voyagermesh/voyager/pull/485) ([tamalsaha](https://github.com/tamalsaha)) +- Keep whitespace from end to templates in haproxy.cfg [\#483](https://github.com/voyagermesh/voyager/pull/483) ([tamalsaha](https://github.com/tamalsaha)) +- Fix stats auth indentation when auth is omitted [\#481](https://github.com/voyagermesh/voyager/pull/481) ([julianvmodesto](https://github.com/julianvmodesto)) +- Fix typo in doc [\#479](https://github.com/voyagermesh/voyager/pull/479) ([pierreozoux](https://github.com/pierreozoux)) +- Fix links in docs [\#478](https://github.com/voyagermesh/voyager/pull/478) ([pierreozoux](https://github.com/pierreozoux)) +- Prepare docs for 3.2.0 [\#476](https://github.com/voyagermesh/voyager/pull/476) ([tamalsaha](https://github.com/tamalsaha)) +- Enable accept-proxy [\#475](https://github.com/voyagermesh/voyager/pull/475) ([tamalsaha](https://github.com/tamalsaha)) +- Document how to use custom templates for HAProxy [\#462](https://github.com/voyagermesh/voyager/pull/462) ([tamalsaha](https://github.com/tamalsaha)) +- Fix NPE [\#469](https://github.com/voyagermesh/voyager/pull/469) ([tamalsaha](https://github.com/tamalsaha)) +- Use .cfg extension for templates. [\#465](https://github.com/voyagermesh/voyager/pull/465) ([tamalsaha](https://github.com/tamalsaha)) +- Modify certificate docs. [\#463](https://github.com/voyagermesh/voyager/pull/463) ([sadlil](https://github.com/sadlil)) +- Support custom user templates [\#454](https://github.com/voyagermesh/voyager/pull/454) ([tamalsaha](https://github.com/tamalsaha)) +- Add ingress.appscode.com/accept-proxy annotation [\#452](https://github.com/voyagermesh/voyager/pull/452) ([tamalsaha](https://github.com/tamalsaha)) +- Update client-go to 3.0.0 from 3.0.0-beta [\#406](https://github.com/voyagermesh/voyager/pull/406) ([tamalsaha](https://github.com/tamalsaha)) +- Update Azure SDK to 10.2.1-beta [\#402](https://github.com/voyagermesh/voyager/pull/402) ([tamalsaha](https://github.com/tamalsaha)) +- Assign VoyagerCluster tag for Voyager Ingress [\#401](https://github.com/voyagermesh/voyager/pull/401) ([tamalsaha](https://github.com/tamalsaha)) +- Check for unset env var passed as flag values. [\#399](https://github.com/voyagermesh/voyager/pull/399) ([tamalsaha](https://github.com/tamalsaha)) +- Merge service and pod annotations [\#390](https://github.com/voyagermesh/voyager/pull/390) ([tamalsaha](https://github.com/tamalsaha)) +- Maintain support for Kubernetes 1.5 for HostPort daemonsets [\#388](https://github.com/voyagermesh/voyager/pull/388) ([tamalsaha](https://github.com/tamalsaha)) +- Split ingress controller into micro controllers [\#383](https://github.com/voyagermesh/voyager/pull/383) ([tamalsaha](https://github.com/tamalsaha)) +- Fix GO reportcard issues. [\#379](https://github.com/voyagermesh/voyager/pull/379) ([tamalsaha](https://github.com/tamalsaha)) +- Add voyager check command. [\#364](https://github.com/voyagermesh/voyager/pull/364) ([tamalsaha](https://github.com/tamalsaha)) +- Update Ingress spec [\#317](https://github.com/voyagermesh/voyager/pull/317) ([tamalsaha](https://github.com/tamalsaha)) + +## [3.2.0-rc.3](https://github.com/voyagermesh/voyager/tree/3.2.0-rc.3) (2017-09-07) +[Full Changelog](https://github.com/voyagermesh/voyager/compare/3.2.0-rc.2...3.2.0-rc.3) + +**Closed issues:** + +- Fix NodePort docs [\#461](https://github.com/voyagermesh/voyager/issues/461) + +**Merged pull requests:** + +- Update NodePort docs [\#466](https://github.com/voyagermesh/voyager/pull/466) ([tamalsaha](https://github.com/tamalsaha)) + +## [3.2.0-rc.2](https://github.com/voyagermesh/voyager/tree/3.2.0-rc.2) (2017-09-06) +[Full Changelog](https://github.com/voyagermesh/voyager/compare/3.2.0-rc.1...3.2.0-rc.2) + +**Fixed bugs:** + +- OVH DNS provider is not working [\#449](https://github.com/voyagermesh/voyager/issues/449) +- bug: ServiceAccount does not exist after upgrading [\#448](https://github.com/voyagermesh/voyager/issues/448) + +**Closed issues:** + +- `keep-source-ip` should enable PROXY protocol is bare metal cluster [\#451](https://github.com/voyagermesh/voyager/issues/451) + +**Merged pull requests:** + +- Create RBAC objects if missing [\#458](https://github.com/voyagermesh/voyager/pull/458) ([tamalsaha](https://github.com/tamalsaha)) +- Move analytics collector to root command [\#450](https://github.com/voyagermesh/voyager/pull/450) ([tamalsaha](https://github.com/tamalsaha)) + +## [3.2.0-rc.1](https://github.com/voyagermesh/voyager/tree/3.2.0-rc.1) (2017-09-01) +[Full Changelog](https://github.com/voyagermesh/voyager/compare/3.2.0-rc.0...3.2.0-rc.1) + +**Fixed bugs:** + +- Don't sort HTTP paths since the order matters to HAProxy [\#445](https://github.com/voyagermesh/voyager/pull/445) ([tamalsaha](https://github.com/tamalsaha)) + +**Closed issues:** + +- Handle both TCP and HTTP requests on same frontend [\#430](https://github.com/voyagermesh/voyager/issues/430) + +**Merged pull requests:** + +- Show how to use kubectl. [\#442](https://github.com/voyagermesh/voyager/pull/442) ([tamalsaha](https://github.com/tamalsaha)) +- Add Docs [\#438](https://github.com/voyagermesh/voyager/pull/438) ([sadlil](https://github.com/sadlil)) +- Fix secret name [\#434](https://github.com/voyagermesh/voyager/pull/434) ([rstuven](https://github.com/rstuven)) +- Fix secret name [\#433](https://github.com/voyagermesh/voyager/pull/433) ([rstuven](https://github.com/rstuven)) +- Minor fix [\#432](https://github.com/voyagermesh/voyager/pull/432) ([rstuven](https://github.com/rstuven)) +- Fix load-balancer-ip annotation references [\#431](https://github.com/voyagermesh/voyager/pull/431) ([rstuven](https://github.com/rstuven)) + +## [3.2.0-rc.0](https://github.com/voyagermesh/voyager/tree/3.2.0-rc.0) (2017-08-28) +[Full Changelog](https://github.com/voyagermesh/voyager/compare/3.2.0-beta.4...3.2.0-rc.0) + +**Fixed bugs:** + +- Fix Host:Port Matching issue. [\#425](https://github.com/voyagermesh/voyager/pull/425) ([sadlil](https://github.com/sadlil)) + +**Merged pull requests:** + +- Restart HAProxy in case of renew certificates [\#427](https://github.com/voyagermesh/voyager/pull/427) ([tamalsaha](https://github.com/tamalsaha)) +- Prepare docs for 3.2.0-rc.0 [\#426](https://github.com/voyagermesh/voyager/pull/426) ([tamalsaha](https://github.com/tamalsaha)) + +## [3.2.0-beta.4](https://github.com/voyagermesh/voyager/tree/3.2.0-beta.4) (2017-08-27) +[Full Changelog](https://github.com/voyagermesh/voyager/compare/3.2.0-beta.3...3.2.0-beta.4) + +**Implemented enhancements:** + +- Add Patch API Supports [\#412](https://github.com/voyagermesh/voyager/pull/412) ([sadlil](https://github.com/sadlil)) + +**Merged pull requests:** + +- Fix Ingress validation error [\#421](https://github.com/voyagermesh/voyager/pull/421) ([tamalsaha](https://github.com/tamalsaha)) +- Fix cert [\#410](https://github.com/voyagermesh/voyager/pull/410) ([sadlil](https://github.com/sadlil)) +- Print back ingress in YAML format [\#409](https://github.com/voyagermesh/voyager/pull/409) ([tamalsaha](https://github.com/tamalsaha)) +- TLS Backend [\#408](https://github.com/voyagermesh/voyager/pull/408) ([sadlil](https://github.com/sadlil)) + +## [3.2.0-beta.3](https://github.com/voyagermesh/voyager/tree/3.2.0-beta.3) (2017-08-19) +[Full Changelog](https://github.com/voyagermesh/voyager/compare/3.2.0-beta.2...3.2.0-beta.3) + +**Implemented enhancements:** + +- Allow custom options [\#403](https://github.com/voyagermesh/voyager/pull/403) ([sadlil](https://github.com/sadlil)) + +**Closed issues:** + +- single static port for the ingress resource and not a particular service [\#404](https://github.com/voyagermesh/voyager/issues/404) + +**Merged pull requests:** + +- Improve test suite [\#394](https://github.com/voyagermesh/voyager/pull/394) ([sadlil](https://github.com/sadlil)) + +## [3.2.0-beta.2](https://github.com/voyagermesh/voyager/tree/3.2.0-beta.2) (2017-08-16) +[Full Changelog](https://github.com/voyagermesh/voyager/compare/3.2.0-beta.1...3.2.0-beta.2) + +## [3.2.0-beta.1](https://github.com/voyagermesh/voyager/tree/3.2.0-beta.1) (2017-08-16) +[Full Changelog](https://github.com/voyagermesh/voyager/compare/3.2.0-beta.0...3.2.0-beta.1) + +**Merged pull requests:** + +- Change ingress sg tag to VoyagerCluster from KubernetesCluster [\#397](https://github.com/voyagermesh/voyager/pull/397) ([tamalsaha](https://github.com/tamalsaha)) +- Remove links to forum [\#395](https://github.com/voyagermesh/voyager/pull/395) ([tamalsaha](https://github.com/tamalsaha)) +- Open firewall for know providers in NodePort mode [\#392](https://github.com/voyagermesh/voyager/pull/392) ([tamalsaha](https://github.com/tamalsaha)) + +## [3.2.0-beta.0](https://github.com/voyagermesh/voyager/tree/3.2.0-beta.0) (2017-08-14) +[Full Changelog](https://github.com/voyagermesh/voyager/compare/3.1.4...3.2.0-beta.0) + +**Closed issues:** + +- Validate existing Ingress before starting operator [\#346](https://github.com/voyagermesh/voyager/issues/346) + +**Merged pull requests:** + +- Make AWS HostPort SG name unique across clusters [\#391](https://github.com/voyagermesh/voyager/pull/391) ([tamalsaha](https://github.com/tamalsaha)) +- Fix AWS SecurityGroup leakage in HostPort mode [\#389](https://github.com/voyagermesh/voyager/pull/389) ([tamalsaha](https://github.com/tamalsaha)) +- Revise ingress controller update operations [\#385](https://github.com/voyagermesh/voyager/pull/385) ([tamalsaha](https://github.com/tamalsaha)) +- Split IsExists tests [\#384](https://github.com/voyagermesh/voyager/pull/384) ([tamalsaha](https://github.com/tamalsaha)) +- Update aws sdk to v1.6.10 [\#381](https://github.com/voyagermesh/voyager/pull/381) ([tamalsaha](https://github.com/tamalsaha)) +- Avoid getting provider secret [\#378](https://github.com/voyagermesh/voyager/pull/378) ([sadlil](https://github.com/sadlil)) +- Fix BUGS and Tests [\#363](https://github.com/voyagermesh/voyager/pull/363) ([sadlil](https://github.com/sadlil)) + +## [3.1.4](https://github.com/voyagermesh/voyager/tree/3.1.4) (2017-08-11) +[Full Changelog](https://github.com/voyagermesh/voyager/compare/3.1.3...3.1.4) + +**Closed issues:** + +- Test aws cert manager 80-\>443 redirect [\#353](https://github.com/voyagermesh/voyager/issues/353) + +**Merged pull requests:** + +- Revendor lego [\#377](https://github.com/voyagermesh/voyager/pull/377) ([tamalsaha](https://github.com/tamalsaha)) +- Detect port changes correctly. [\#376](https://github.com/voyagermesh/voyager/pull/376) ([tamalsaha](https://github.com/tamalsaha)) +- Revendor lego to detect DNS zone correctly. [\#375](https://github.com/voyagermesh/voyager/pull/375) ([tamalsaha](https://github.com/tamalsaha)) +- Revendor lego [\#373](https://github.com/voyagermesh/voyager/pull/373) ([tamalsaha](https://github.com/tamalsaha)) +- Fix Implicit timeouts [\#361](https://github.com/voyagermesh/voyager/pull/361) ([sadlil](https://github.com/sadlil)) + +## [3.1.3](https://github.com/voyagermesh/voyager/tree/3.1.3) (2017-08-08) +[Full Changelog](https://github.com/voyagermesh/voyager/compare/3.1.2...3.1.3) + +**Fixed bugs:** + +- Fix Event Recorder type [\#341](https://github.com/voyagermesh/voyager/pull/341) ([sadlil](https://github.com/sadlil)) +- Fix Domain Comparison [\#339](https://github.com/voyagermesh/voyager/pull/339) ([sadlil](https://github.com/sadlil)) +- Allow secret create/update for Voyager cert controller. [\#338](https://github.com/voyagermesh/voyager/pull/338) ([tamalsaha](https://github.com/tamalsaha)) + +**Merged pull requests:** + +- Fix test docs for ginkgo tests [\#352](https://github.com/voyagermesh/voyager/pull/352) ([sadlil](https://github.com/sadlil)) +- Add DCO [\#351](https://github.com/voyagermesh/voyager/pull/351) ([tamalsaha](https://github.com/tamalsaha)) +- Rename Ingress controller receiver to c from lbc [\#345](https://github.com/voyagermesh/voyager/pull/345) ([tamalsaha](https://github.com/tamalsaha)) + +## [3.1.2](https://github.com/voyagermesh/voyager/tree/3.1.2) (2017-08-02) +[Full Changelog](https://github.com/voyagermesh/voyager/compare/3.1.1...3.1.2) + +**Implemented enhancements:** + +- Use Lets Encrypt Prod URL as default [\#335](https://github.com/voyagermesh/voyager/pull/335) ([sadlil](https://github.com/sadlil)) + +**Fixed bugs:** + +- Use Lets Encrypt Prod URL as default [\#335](https://github.com/voyagermesh/voyager/pull/335) ([sadlil](https://github.com/sadlil)) + +**Merged pull requests:** + +- Prepare docs for 3.1.2 release. [\#336](https://github.com/voyagermesh/voyager/pull/336) ([tamalsaha](https://github.com/tamalsaha)) +- Add install scripts [\#332](https://github.com/voyagermesh/voyager/pull/332) ([tamalsaha](https://github.com/tamalsaha)) + +## [3.1.1](https://github.com/voyagermesh/voyager/tree/3.1.1) (2017-07-22) +[Full Changelog](https://github.com/voyagermesh/voyager/compare/3.1.0...3.1.1) + +**Merged pull requests:** + +- typos [\#325](https://github.com/voyagermesh/voyager/pull/325) ([nstott](https://github.com/nstott)) +- Prepare docs for 3.1.1 release. [\#328](https://github.com/voyagermesh/voyager/pull/328) ([tamalsaha](https://github.com/tamalsaha)) +- Add cloud provider specific install scripts. [\#327](https://github.com/voyagermesh/voyager/pull/327) ([tamalsaha](https://github.com/tamalsaha)) +- Disable critical addon feature [\#326](https://github.com/voyagermesh/voyager/pull/326) ([tamalsaha](https://github.com/tamalsaha)) + +## [3.1.0](https://github.com/voyagermesh/voyager/tree/3.1.0) (2017-07-21) +[Full Changelog](https://github.com/voyagermesh/voyager/compare/3.0.0...3.1.0) + +**Implemented enhancements:** + +- Record events against TPR [\#79](https://github.com/voyagermesh/voyager/issues/79) +- Remove event framework from certificate [\#284](https://github.com/voyagermesh/voyager/pull/284) ([sadlil](https://github.com/sadlil)) +- Fix RBAC configs [\#295](https://github.com/voyagermesh/voyager/pull/295) ([sadlil](https://github.com/sadlil)) +- Add configure option for Haproxy default timeout. [\#286](https://github.com/voyagermesh/voyager/pull/286) ([sadlil](https://github.com/sadlil)) + +**Fixed bugs:** + +- podAffinityTerm.topologyKey: Required value: can not be empty [\#320](https://github.com/voyagermesh/voyager/issues/320) +- Restore objects if deleted by mistake. [\#283](https://github.com/voyagermesh/voyager/issues/283) +- HostPort mode does not work for AWS [\#281](https://github.com/voyagermesh/voyager/issues/281) +- Externalservice redirection gets reset [\#279](https://github.com/voyagermesh/voyager/issues/279) +- Voyager doesn't work with cloud = minikube and type = HostPort [\#272](https://github.com/voyagermesh/voyager/issues/272) +- Adding cert manager to existing ingress does not open port 443 [\#267](https://github.com/voyagermesh/voyager/issues/267) +- Bug: annotations are not applied [\#266](https://github.com/voyagermesh/voyager/issues/266) +- Add newline in pem file [\#261](https://github.com/voyagermesh/voyager/issues/261) +- Adding SSL to an existing ingress does not mount certs [\#260](https://github.com/voyagermesh/voyager/issues/260) +- Set topology key for pod anti-affinity [\#321](https://github.com/voyagermesh/voyager/pull/321) ([tamalsaha](https://github.com/tamalsaha)) +- Correctly detect changed ports [\#322](https://github.com/voyagermesh/voyager/pull/322) ([tamalsaha](https://github.com/tamalsaha)) +- Fix Adding SSL to an existing ingress does not mount certs \#260 [\#306](https://github.com/voyagermesh/voyager/pull/306) ([sadlil](https://github.com/sadlil)) +- Fix External Service redirect Issue [\#304](https://github.com/voyagermesh/voyager/pull/304) ([sadlil](https://github.com/sadlil)) +- Fix RBAC configs [\#295](https://github.com/voyagermesh/voyager/pull/295) ([sadlil](https://github.com/sadlil)) +- Fix Operator panic on service restore [\#273](https://github.com/voyagermesh/voyager/pull/273) ([sadlil](https://github.com/sadlil)) + +**Closed issues:** + +- Difficulties to setup, scarce docs [\#303](https://github.com/voyagermesh/voyager/issues/303) +- Setup Issues [\#298](https://github.com/voyagermesh/voyager/issues/298) +- Setup Issues [\#297](https://github.com/voyagermesh/voyager/issues/297) +- configurable HAProxy defaults [\#280](https://github.com/voyagermesh/voyager/issues/280) +- Support setting resource for pods [\#277](https://github.com/voyagermesh/voyager/issues/277) +- The link to contribution guide in README.md is broken. [\#274](https://github.com/voyagermesh/voyager/issues/274) +- Voyager exporter sidecar isn't exporting any metrics [\#270](https://github.com/voyagermesh/voyager/issues/270) +- Adding an AWS Cert and opening 80 and 443 doesn't work for plain http:// [\#268](https://github.com/voyagermesh/voyager/issues/268) +- Support HorizontalPodAutoscaling for HAProxy pods [\#242](https://github.com/voyagermesh/voyager/issues/242) +- Test updated chart with RBAC [\#302](https://github.com/voyagermesh/voyager/issues/302) +- Delete TPR when NS is deleted [\#258](https://github.com/voyagermesh/voyager/issues/258) +- voyager-operator should ensure that ServiceAccount/Role/RoleBinding exists for created voyager deploys. [\#252](https://github.com/voyagermesh/voyager/issues/252) +- RBAC objects for Voyager operator. [\#241](https://github.com/voyagermesh/voyager/issues/241) +- Should all hosts be passed to EnsureLoadBalancer [\#88](https://github.com/voyagermesh/voyager/issues/88) + +**Merged pull requests:** + +- Fix various chart issues [\#324](https://github.com/voyagermesh/voyager/pull/324) ([tamalsaha](https://github.com/tamalsaha)) +- Add Custom timeout docs [\#323](https://github.com/voyagermesh/voyager/pull/323) ([sadlil](https://github.com/sadlil)) +- Revendor dependencies. [\#312](https://github.com/voyagermesh/voyager/pull/312) ([tamalsaha](https://github.com/tamalsaha)) +- move RecognizeWellKnownRegions\(\) to the beginning of newAWSCloud\(\) [\#311](https://github.com/voyagermesh/voyager/pull/311) ([jipperinbham](https://github.com/jipperinbham)) +- Add ingress label to exported metrics [\#300](https://github.com/voyagermesh/voyager/pull/300) ([tamalsaha](https://github.com/tamalsaha)) +- Support setting resource for pods [\#289](https://github.com/voyagermesh/voyager/pull/289) ([tamalsaha](https://github.com/tamalsaha)) +- fix the contribution guild link \(\#274\) [\#275](https://github.com/voyagermesh/voyager/pull/275) ([aimof](https://github.com/aimof)) +- Update aws-cert-manager.md [\#269](https://github.com/voyagermesh/voyager/pull/269) ([julianvmodesto](https://github.com/julianvmodesto)) +- Add command reference docs [\#265](https://github.com/voyagermesh/voyager/pull/265) ([tamalsaha](https://github.com/tamalsaha)) +- Point to HPA example on readme pages. [\#254](https://github.com/voyagermesh/voyager/pull/254) ([tamalsaha](https://github.com/tamalsaha)) +- Add example with hpa [\#253](https://github.com/voyagermesh/voyager/pull/253) ([julianvmodesto](https://github.com/julianvmodesto)) +- Use ```bash instead of ```sh syntax highlighting [\#309](https://github.com/voyagermesh/voyager/pull/309) ([tamalsaha](https://github.com/tamalsaha)) +- Install Voyager as critical addon [\#301](https://github.com/voyagermesh/voyager/pull/301) ([tamalsaha](https://github.com/tamalsaha)) +- Add Stats Service events [\#299](https://github.com/voyagermesh/voyager/pull/299) ([sadlil](https://github.com/sadlil)) +- Recover ServiceMonitor [\#294](https://github.com/voyagermesh/voyager/pull/294) ([tamalsaha](https://github.com/tamalsaha)) +- Make node selectors optional for HostPort [\#293](https://github.com/voyagermesh/voyager/pull/293) ([tamalsaha](https://github.com/tamalsaha)) +- Delete kube lister classes. [\#291](https://github.com/voyagermesh/voyager/pull/291) ([tamalsaha](https://github.com/tamalsaha)) +- Record events against TPR [\#290](https://github.com/voyagermesh/voyager/pull/290) ([tamalsaha](https://github.com/tamalsaha)) +- Add tpr constants [\#288](https://github.com/voyagermesh/voyager/pull/288) ([tamalsaha](https://github.com/tamalsaha)) +- Remove event framework [\#282](https://github.com/voyagermesh/voyager/pull/282) ([tamalsaha](https://github.com/tamalsaha)) +- Update dev docs. [\#264](https://github.com/voyagermesh/voyager/pull/264) ([tamalsaha](https://github.com/tamalsaha)) +- Add a newline between crt & key. [\#263](https://github.com/voyagermesh/voyager/pull/263) ([tamalsaha](https://github.com/tamalsaha)) +- Create RBAC roles for Voyager during installation [\#256](https://github.com/voyagermesh/voyager/pull/256) ([tamalsaha](https://github.com/tamalsaha)) +- Support non-default service account with offshoot pods [\#255](https://github.com/voyagermesh/voyager/pull/255) ([tamalsaha](https://github.com/tamalsaha)) + +## [3.0.0](https://github.com/voyagermesh/voyager/tree/3.0.0) (2017-06-23) +[Full Changelog](https://github.com/voyagermesh/voyager/compare/1.5.6...3.0.0) + +**Implemented enhancements:** + +- Automatically create ServiceMonitor for built-in exporter [\#154](https://github.com/voyagermesh/voyager/issues/154) +- Fix testframework for aws and update docs. [\#237](https://github.com/voyagermesh/voyager/pull/237) ([sadlil](https://github.com/sadlil)) + +**Fixed bugs:** + +- Delete pods & services matching old labels before starting operator [\#229](https://github.com/voyagermesh/voyager/issues/229) +- Check for updates properly [\#250](https://github.com/voyagermesh/voyager/pull/250) ([tamalsaha](https://github.com/tamalsaha)) +- Don't restore stats service if stats is disabled. [\#249](https://github.com/voyagermesh/voyager/pull/249) ([tamalsaha](https://github.com/tamalsaha)) +- Apply labels to stats service for service monitor [\#248](https://github.com/voyagermesh/voyager/pull/248) ([tamalsaha](https://github.com/tamalsaha)) +- Fix Bugs [\#247](https://github.com/voyagermesh/voyager/pull/247) ([sadlil](https://github.com/sadlil)) +- Correctly parse target port [\#245](https://github.com/voyagermesh/voyager/pull/245) ([tamalsaha](https://github.com/tamalsaha)) +- Fix testframework for aws and update docs. [\#237](https://github.com/voyagermesh/voyager/pull/237) ([sadlil](https://github.com/sadlil)) +- Add dns-resolver-check-health annotation to for ExternalName service [\#226](https://github.com/voyagermesh/voyager/pull/226) ([tamalsaha](https://github.com/tamalsaha)) +- Add cloud config file [\#218](https://github.com/voyagermesh/voyager/pull/218) ([sadlil](https://github.com/sadlil)) +- Fix bugs [\#217](https://github.com/voyagermesh/voyager/pull/217) ([sadlil](https://github.com/sadlil)) + +**Closed issues:** + +- Add chart value for --cloud-config mount [\#228](https://github.com/voyagermesh/voyager/issues/228) +- Document http-\>https redirect with AWS cert manager [\#225](https://github.com/voyagermesh/voyager/issues/225) +- Update version policy [\#194](https://github.com/voyagermesh/voyager/issues/194) +- Change api group to voyager.appscode.com [\#193](https://github.com/voyagermesh/voyager/issues/193) +- Use client-go [\#192](https://github.com/voyagermesh/voyager/issues/192) +- Use pod anti-affinity for deployments [\#161](https://github.com/voyagermesh/voyager/issues/161) +- Change api group to voyager.appscode.com [\#142](https://github.com/voyagermesh/voyager/issues/142) + +**Merged pull requests:** + +- Small typo fix \(CLOUDE\_CONFIG =\> CLOUD\_CONFIG\) [\#251](https://github.com/voyagermesh/voyager/pull/251) ([thecodeassassin](https://github.com/thecodeassassin)) +- Document http-\>https redirect with AWS cert manager [\#235](https://github.com/voyagermesh/voyager/pull/235) ([tamalsaha](https://github.com/tamalsaha)) +- Remove deprecated Daemon type. [\#205](https://github.com/voyagermesh/voyager/pull/205) ([tamalsaha](https://github.com/tamalsaha)) +- Automatically create ServiceMonitor for built-in exporter [\#203](https://github.com/voyagermesh/voyager/pull/203) ([tamalsaha](https://github.com/tamalsaha)) +- Track operator version [\#200](https://github.com/voyagermesh/voyager/pull/200) ([tamalsaha](https://github.com/tamalsaha)) +- Update version policy to point to client-go [\#198](https://github.com/voyagermesh/voyager/pull/198) ([tamalsaha](https://github.com/tamalsaha)) +- Use client-go [\#196](https://github.com/voyagermesh/voyager/pull/196) ([tamalsaha](https://github.com/tamalsaha)) +- Use stats service port name in ServiceMonitor [\#246](https://github.com/voyagermesh/voyager/pull/246) ([tamalsaha](https://github.com/tamalsaha)) +- Use correct api schema when checking ingress class. [\#244](https://github.com/voyagermesh/voyager/pull/244) ([tamalsaha](https://github.com/tamalsaha)) +- Note test-ns policy [\#243](https://github.com/voyagermesh/voyager/pull/243) ([tamalsaha](https://github.com/tamalsaha)) +- Add acs provider [\#236](https://github.com/voyagermesh/voyager/pull/236) ([tamalsaha](https://github.com/tamalsaha)) +- Update chart readme for cloud config [\#234](https://github.com/voyagermesh/voyager/pull/234) ([tamalsaha](https://github.com/tamalsaha)) +- Make cloud config configurable. [\#233](https://github.com/voyagermesh/voyager/pull/233) ([tamalsaha](https://github.com/tamalsaha)) +- Change api group to networking.appscode.com [\#232](https://github.com/voyagermesh/voyager/pull/232) ([tamalsaha](https://github.com/tamalsaha)) +- Update \*\*\*Getter interfaces match form [\#231](https://github.com/voyagermesh/voyager/pull/231) ([tamalsaha](https://github.com/tamalsaha)) +- Delete pods & services matching old labels before starting operator [\#230](https://github.com/voyagermesh/voyager/pull/230) ([tamalsaha](https://github.com/tamalsaha)) +- Use PreRun & PostRun to send analytics. [\#224](https://github.com/voyagermesh/voyager/pull/224) ([tamalsaha](https://github.com/tamalsaha)) +- Update metric endpoints documentation. [\#223](https://github.com/voyagermesh/voyager/pull/223) ([tamalsaha](https://github.com/tamalsaha)) +- Fix port used for exposing metrics from operator. [\#222](https://github.com/voyagermesh/voyager/pull/222) ([tamalsaha](https://github.com/tamalsaha)) +- Open both port 443 & 80 when AWS cert manager is in use. [\#221](https://github.com/voyagermesh/voyager/pull/221) ([tamalsaha](https://github.com/tamalsaha)) +- Mount cloud config in chart [\#220](https://github.com/voyagermesh/voyager/pull/220) ([tamalsaha](https://github.com/tamalsaha)) +- Use root user inside docker [\#219](https://github.com/voyagermesh/voyager/pull/219) ([tamalsaha](https://github.com/tamalsaha)) +- Rename exporter port to targetPort [\#216](https://github.com/voyagermesh/voyager/pull/216) ([tamalsaha](https://github.com/tamalsaha)) +- Use Voyager group name correctly. [\#215](https://github.com/voyagermesh/voyager/pull/215) ([tamalsaha](https://github.com/tamalsaha)) +- Update default ports [\#214](https://github.com/voyagermesh/voyager/pull/214) ([tamalsaha](https://github.com/tamalsaha)) +- Update docs for service monitor integration [\#213](https://github.com/voyagermesh/voyager/pull/213) ([tamalsaha](https://github.com/tamalsaha)) +- Fix unit test build issues [\#210](https://github.com/voyagermesh/voyager/pull/210) ([tamalsaha](https://github.com/tamalsaha)) +- Change api group to voyager.appscode.com [\#209](https://github.com/voyagermesh/voyager/pull/209) ([tamalsaha](https://github.com/tamalsaha)) +- Update docs to point to 3.0.0 [\#208](https://github.com/voyagermesh/voyager/pull/208) ([tamalsaha](https://github.com/tamalsaha)) +- Stop creating stats service. [\#207](https://github.com/voyagermesh/voyager/pull/207) ([tamalsaha](https://github.com/tamalsaha)) +- Update labels applied to HAProxy pods & services. [\#206](https://github.com/voyagermesh/voyager/pull/206) ([tamalsaha](https://github.com/tamalsaha)) +- Fix client-go fake import [\#204](https://github.com/voyagermesh/voyager/pull/204) ([tamalsaha](https://github.com/tamalsaha)) +- Change default HAProxy image to 1.7.6-3.0.0 [\#202](https://github.com/voyagermesh/voyager/pull/202) ([tamalsaha](https://github.com/tamalsaha)) +- Add HAProxy 1.7.6 dockerfiles. [\#201](https://github.com/voyagermesh/voyager/pull/201) ([tamalsaha](https://github.com/tamalsaha)) +- Add voyager export command [\#199](https://github.com/voyagermesh/voyager/pull/199) ([tamalsaha](https://github.com/tamalsaha)) +- Only keep Firewall\(\) interface in cloud provider [\#195](https://github.com/voyagermesh/voyager/pull/195) ([tamalsaha](https://github.com/tamalsaha)) + +## [1.5.6](https://github.com/voyagermesh/voyager/tree/1.5.6) (2017-06-16) +[Full Changelog](https://github.com/voyagermesh/voyager/compare/1.5.5...1.5.6) + +**Implemented enhancements:** + +- Delete docker image from docker hub after integration test [\#125](https://github.com/voyagermesh/voyager/issues/125) +- Change how stats work [\#106](https://github.com/voyagermesh/voyager/issues/106) +- Use AWS ELB Proxy Protocol [\#100](https://github.com/voyagermesh/voyager/issues/100) +- Track Kube's refactoring cloud provider API [\#36](https://github.com/voyagermesh/voyager/issues/36) +- Expose HAProxy stats to prometheus [\#13](https://github.com/voyagermesh/voyager/issues/13) +- Support AWS cert manager [\#189](https://github.com/voyagermesh/voyager/pull/189) ([tamalsaha](https://github.com/tamalsaha)) +- Merge existing pods and service during create ingress resource [\#181](https://github.com/voyagermesh/voyager/pull/181) ([sadlil](https://github.com/sadlil)) +- Add support for ServiceTypeExternalName [\#167](https://github.com/voyagermesh/voyager/pull/167) ([sadlil](https://github.com/sadlil)) +- Collect analytics for voyager usages [\#133](https://github.com/voyagermesh/voyager/pull/133) ([sadlil](https://github.com/sadlil)) +- Fix stats behavior [\#130](https://github.com/voyagermesh/voyager/pull/130) ([sadlil](https://github.com/sadlil)) +- Improve test framework [\#121](https://github.com/voyagermesh/voyager/pull/121) ([sadlil](https://github.com/sadlil)) + +**Fixed bugs:** + +- Error out if Daemon type does not provide a node selector. [\#159](https://github.com/voyagermesh/voyager/issues/159) +- Disable analytics when running tests [\#147](https://github.com/voyagermesh/voyager/issues/147) +- Missing services should be an warning not error stack error [\#137](https://github.com/voyagermesh/voyager/issues/137) +- Bad ingress object results in unstable HAProxy [\#135](https://github.com/voyagermesh/voyager/issues/135) +- Add ingress hostname to Ingress [\#132](https://github.com/voyagermesh/voyager/issues/132) +- Deleting LB deployment does not get recreated [\#123](https://github.com/voyagermesh/voyager/issues/123) +- Ensure HAproxy running when endpoints changes. [\#120](https://github.com/voyagermesh/voyager/issues/120) +- Updating Ingress annotations are not picked up by controller [\#115](https://github.com/voyagermesh/voyager/issues/115) +- Fix Ingress Status Update Properly. [\#134](https://github.com/voyagermesh/voyager/pull/134) ([sadlil](https://github.com/sadlil)) +- Expose monitoring port in chart and deploy yamls [\#156](https://github.com/voyagermesh/voyager/pull/156) ([tamalsaha](https://github.com/tamalsaha)) +- Add LoadBalancerSourceRange to ingress Spec [\#148](https://github.com/voyagermesh/voyager/pull/148) ([sadlil](https://github.com/sadlil)) +- Ensure loadbalancer resource [\#145](https://github.com/voyagermesh/voyager/pull/145) ([sadlil](https://github.com/sadlil)) +- Add annotation to add accept-proxy in bind statements [\#144](https://github.com/voyagermesh/voyager/pull/144) ([sadlil](https://github.com/sadlil)) +- Remove unwanted stacktrace from log [\#139](https://github.com/voyagermesh/voyager/pull/139) ([sadlil](https://github.com/sadlil)) +- Fix stats behavior [\#130](https://github.com/voyagermesh/voyager/pull/130) ([sadlil](https://github.com/sadlil)) + +**Closed issues:** + +- Allow exposing port 443 on the LoadBalancer Service [\#188](https://github.com/voyagermesh/voyager/issues/188) +- Source IP detection [\#146](https://github.com/voyagermesh/voyager/issues/146) +- helm chart [\#113](https://github.com/voyagermesh/voyager/issues/113) +- Merge pods & services even on create [\#172](https://github.com/voyagermesh/voyager/issues/172) +- Document 1.5.6 changes [\#150](https://github.com/voyagermesh/voyager/issues/150) +- Support Services of type ExternalName [\#127](https://github.com/voyagermesh/voyager/issues/127) +- Collect usage analytics [\#126](https://github.com/voyagermesh/voyager/issues/126) +- Support use of field spec.loadBalancerSourceRanges on Services of type LoadBalancer [\#122](https://github.com/voyagermesh/voyager/issues/122) + +**Merged pull requests:** + +- Fix chart path [\#191](https://github.com/voyagermesh/voyager/pull/191) ([tamalsaha](https://github.com/tamalsaha)) +- ./hack/make.py test\_deploy to generate deployments yaml [\#184](https://github.com/voyagermesh/voyager/pull/184) ([ashiquzzaman33](https://github.com/ashiquzzaman33)) +- Disable analytics for test runs [\#182](https://github.com/voyagermesh/voyager/pull/182) ([tamalsaha](https://github.com/tamalsaha)) +- Prepare docs for 1.5.6 [\#178](https://github.com/voyagermesh/voyager/pull/178) ([tamalsaha](https://github.com/tamalsaha)) +- Remove cluster name flag [\#177](https://github.com/voyagermesh/voyager/pull/177) ([tamalsaha](https://github.com/tamalsaha)) +- Remove persist annotation [\#174](https://github.com/voyagermesh/voyager/pull/174) ([tamalsaha](https://github.com/tamalsaha)) +- Add TLS certs for testing [\#173](https://github.com/voyagermesh/voyager/pull/173) ([tamalsaha](https://github.com/tamalsaha)) +- Run kloader check without exec [\#171](https://github.com/voyagermesh/voyager/pull/171) ([tamalsaha](https://github.com/tamalsaha)) +- Error out if Daemon type does not provide a node selector. [\#168](https://github.com/voyagermesh/voyager/pull/168) ([tamalsaha](https://github.com/tamalsaha)) +- Remove dependency on k8s-addons [\#141](https://github.com/voyagermesh/voyager/pull/141) ([tamalsaha](https://github.com/tamalsaha)) +- Use kloader 1.5.1 and check config before starting runit. [\#140](https://github.com/voyagermesh/voyager/pull/140) ([tamalsaha](https://github.com/tamalsaha)) +- Use ci-space cluster for testing [\#131](https://github.com/voyagermesh/voyager/pull/131) ([ashiquzzaman33](https://github.com/ashiquzzaman33)) +- tcp.md: fix typo/port mismatch [\#119](https://github.com/voyagermesh/voyager/pull/119) ([alekssaul](https://github.com/alekssaul)) +- Add Jenkinsfile [\#118](https://github.com/voyagermesh/voyager/pull/118) ([ashiquzzaman33](https://github.com/ashiquzzaman33)) +- Jenkins test patch1 [\#117](https://github.com/voyagermesh/voyager/pull/117) ([ashiquzzaman33](https://github.com/ashiquzzaman33)) +- Document flag options [\#190](https://github.com/voyagermesh/voyager/pull/190) ([tamalsaha](https://github.com/tamalsaha)) +- Docs for 1.5.6 [\#183](https://github.com/voyagermesh/voyager/pull/183) ([sadlil](https://github.com/sadlil)) +- Set metrics port to :8080 by default [\#180](https://github.com/voyagermesh/voyager/pull/180) ([tamalsaha](https://github.com/tamalsaha)) +- Stop redefining -h flag for run command. [\#179](https://github.com/voyagermesh/voyager/pull/179) ([tamalsaha](https://github.com/tamalsaha)) +- Remove --cluster-name flag [\#176](https://github.com/voyagermesh/voyager/pull/176) ([tamalsaha](https://github.com/tamalsaha)) +- Add nil check before reading options from Ingress annotations. [\#170](https://github.com/voyagermesh/voyager/pull/170) ([tamalsaha](https://github.com/tamalsaha)) +- Various cleanup of annotations [\#169](https://github.com/voyagermesh/voyager/pull/169) ([tamalsaha](https://github.com/tamalsaha)) +- Use hyphen separated words as annotation key. [\#166](https://github.com/voyagermesh/voyager/pull/166) ([tamalsaha](https://github.com/tamalsaha)) +- Use ingress.appscode.com/keep-source-ip: true to preserve source IP [\#165](https://github.com/voyagermesh/voyager/pull/165) ([tamalsaha](https://github.com/tamalsaha)) +- Combine annotation keys ip & persist into persist [\#162](https://github.com/voyagermesh/voyager/pull/162) ([tamalsaha](https://github.com/tamalsaha)) +- Make nodeSelector annotation applicable for any mode. [\#160](https://github.com/voyagermesh/voyager/pull/160) ([tamalsaha](https://github.com/tamalsaha)) +- Explain versioning policy. [\#158](https://github.com/voyagermesh/voyager/pull/158) ([tamalsaha](https://github.com/tamalsaha)) +- Apply various comments from official charts team [\#157](https://github.com/voyagermesh/voyager/pull/157) ([tamalsaha](https://github.com/tamalsaha)) +- Move component docs directly under user-guide [\#155](https://github.com/voyagermesh/voyager/pull/155) ([tamalsaha](https://github.com/tamalsaha)) +- Expose Operator & HAProxy metrics [\#153](https://github.com/voyagermesh/voyager/pull/153) ([tamalsaha](https://github.com/tamalsaha)) +- Reorganize code to add run sub command [\#152](https://github.com/voyagermesh/voyager/pull/152) ([tamalsaha](https://github.com/tamalsaha)) +- Add forked cloudprovider in third\_party package [\#151](https://github.com/voyagermesh/voyager/pull/151) ([tamalsaha](https://github.com/tamalsaha)) + +## [1.5.5](https://github.com/voyagermesh/voyager/tree/1.5.5) (2017-05-22) +[Full Changelog](https://github.com/voyagermesh/voyager/compare/1.5.4...1.5.5) + +**Implemented enhancements:** + +- Support user provided annotations [\#103](https://github.com/voyagermesh/voyager/issues/103) +- Rename Daemon type to HostPort [\#72](https://github.com/voyagermesh/voyager/issues/72) +- expose NodePort like functionality to Ingress [\#68](https://github.com/voyagermesh/voyager/issues/68) +- Cross Namespace Service Support [\#40](https://github.com/voyagermesh/voyager/issues/40) +- Support health checks [\#38](https://github.com/voyagermesh/voyager/issues/38) +- Support full spectrum of HAProxy rules [\#21](https://github.com/voyagermesh/voyager/issues/21) +- Add user provided annotations in LoadBalancer in Service/Pods [\#105](https://github.com/voyagermesh/voyager/pull/105) ([sadlil](https://github.com/sadlil)) +- Feature weighted backend [\#77](https://github.com/voyagermesh/voyager/pull/77) ([sadlil](https://github.com/sadlil)) +- Update svc instead of Deleting svc [\#87](https://github.com/voyagermesh/voyager/pull/87) ([sadlil](https://github.com/sadlil)) +- Feature: backend rules [\#80](https://github.com/voyagermesh/voyager/pull/80) ([sadlil](https://github.com/sadlil)) + +**Fixed bugs:** + +- Update service in NodePort & LoadBalancer mode [\#86](https://github.com/voyagermesh/voyager/issues/86) +- Fix ALPN negotiation [\#32](https://github.com/voyagermesh/voyager/issues/32) +- Use annotations for backend weight [\#83](https://github.com/voyagermesh/voyager/pull/83) ([sadlil](https://github.com/sadlil)) +- Fix Loadbalancer Port Open Issues [\#99](https://github.com/voyagermesh/voyager/pull/99) ([sadlil](https://github.com/sadlil)) +- Ensure pod delete [\#97](https://github.com/voyagermesh/voyager/pull/97) ([sadlil](https://github.com/sadlil)) +- Update svc instead of Deleting svc [\#87](https://github.com/voyagermesh/voyager/pull/87) ([sadlil](https://github.com/sadlil)) + +**Closed issues:** + +- Allow free form HTTP rewriting [\#76](https://github.com/voyagermesh/voyager/issues/76) +- Test NodePort mode [\#98](https://github.com/voyagermesh/voyager/issues/98) +- Ensure pods are deleted before deleting RC / Deployment [\#96](https://github.com/voyagermesh/voyager/issues/96) +- Test that previously open NodePort is not reassigned [\#95](https://github.com/voyagermesh/voyager/issues/95) +- Use HAProxy 1.7.5 [\#90](https://github.com/voyagermesh/voyager/issues/90) +- Document 1.5.5 milestone features [\#78](https://github.com/voyagermesh/voyager/issues/78) +- Specify different services in a backend with weights [\#75](https://github.com/voyagermesh/voyager/issues/75) + +**Merged pull requests:** + +- Update top readme file [\#112](https://github.com/voyagermesh/voyager/pull/112) ([tamalsaha](https://github.com/tamalsaha)) +- Update docs [\#111](https://github.com/voyagermesh/voyager/pull/111) ([tamalsaha](https://github.com/tamalsaha)) +- NodePort Tests, Annotations Documentation [\#110](https://github.com/voyagermesh/voyager/pull/110) ([sadlil](https://github.com/sadlil)) +- Change HAProxy image to 1.7.5-1.5.5 [\#93](https://github.com/voyagermesh/voyager/pull/93) ([tamalsaha](https://github.com/tamalsaha)) +- Rename Daemon type to HostPort [\#84](https://github.com/voyagermesh/voyager/pull/84) ([tamalsaha](https://github.com/tamalsaha)) +- Use appscode/errors v2 [\#81](https://github.com/voyagermesh/voyager/pull/81) ([tamalsaha](https://github.com/tamalsaha)) +- Avoid upgrade in operator docker image [\#109](https://github.com/voyagermesh/voyager/pull/109) ([tamalsaha](https://github.com/tamalsaha)) +- Use alpine as the base image for operator [\#107](https://github.com/voyagermesh/voyager/pull/107) ([tamalsaha](https://github.com/tamalsaha)) +- Add `go` and `glide` commands to developer docs [\#101](https://github.com/voyagermesh/voyager/pull/101) ([julianvmodesto](https://github.com/julianvmodesto)) +- Ensure forward secrecy [\#94](https://github.com/voyagermesh/voyager/pull/94) ([tamalsaha](https://github.com/tamalsaha)) +- Update docs to build HAProxy 1.7.5 [\#92](https://github.com/voyagermesh/voyager/pull/92) ([tamalsaha](https://github.com/tamalsaha)) +- Use HAProxy 1.7.5 [\#91](https://github.com/voyagermesh/voyager/pull/91) ([tamalsaha](https://github.com/tamalsaha)) +- Introduce NodePort mode [\#85](https://github.com/voyagermesh/voyager/pull/85) ([tamalsaha](https://github.com/tamalsaha)) +- Update 1.5.5 Documentation [\#82](https://github.com/voyagermesh/voyager/pull/82) ([sadlil](https://github.com/sadlil)) + +## [1.5.4](https://github.com/voyagermesh/voyager/tree/1.5.4) (2017-05-08) +[Full Changelog](https://github.com/voyagermesh/voyager/compare/1.5.3...1.5.4) + +**Fixed bugs:** + +- Voyager pod is restarting itself when attached backend pod restarts [\#69](https://github.com/voyagermesh/voyager/issues/69) +- Do not restart lb pod when backend pod restarts [\#70](https://github.com/voyagermesh/voyager/pull/70) ([sadlil](https://github.com/sadlil)) + +**Merged pull requests:** + +- Rename operator deployment to voyager-operator [\#71](https://github.com/voyagermesh/voyager/pull/71) ([tamalsaha](https://github.com/tamalsaha)) + +## [1.5.3](https://github.com/voyagermesh/voyager/tree/1.5.3) (2017-05-03) +[Full Changelog](https://github.com/voyagermesh/voyager/compare/1.5.2...1.5.3) + +**Implemented enhancements:** + +- Support StatefulSet pod names in Voyager [\#14](https://github.com/voyagermesh/voyager/issues/14) +- Ingress Hostname based traffic forwarding [\#66](https://github.com/voyagermesh/voyager/pull/66) ([sadlil](https://github.com/sadlil)) + +**Fixed bugs:** + +- cloud-provider & cloud-name can't be always required [\#64](https://github.com/voyagermesh/voyager/issues/64) + +**Merged pull requests:** + +- Prepare docs for 1.5.3 release [\#67](https://github.com/voyagermesh/voyager/pull/67) ([tamalsaha](https://github.com/tamalsaha)) +- cloud-provider & cloud-name is not required for unknown providers. [\#65](https://github.com/voyagermesh/voyager/pull/65) ([tamalsaha](https://github.com/tamalsaha)) +- Test/fix ingress name [\#63](https://github.com/voyagermesh/voyager/pull/63) ([ashiquzzaman33](https://github.com/ashiquzzaman33)) +- Update docs to new chart location [\#60](https://github.com/voyagermesh/voyager/pull/60) ([tamalsaha](https://github.com/tamalsaha)) +- Move chart to root directory [\#59](https://github.com/voyagermesh/voyager/pull/59) ([tamalsaha](https://github.com/tamalsaha)) + +## [1.5.2](https://github.com/voyagermesh/voyager/tree/1.5.2) (2017-04-21) +[Full Changelog](https://github.com/voyagermesh/voyager/compare/1.5.1...1.5.2) + +**Implemented enhancements:** + +- Add Retry on DaemonMode Loadbalancer http test call [\#52](https://github.com/voyagermesh/voyager/pull/52) ([sadlil](https://github.com/sadlil)) +- Fix Documentation [\#51](https://github.com/voyagermesh/voyager/pull/51) ([sadlil](https://github.com/sadlil)) + +**Fixed bugs:** + +- Slack channel token\_revoked [\#48](https://github.com/voyagermesh/voyager/issues/48) +- Service ports should be int [\#47](https://github.com/voyagermesh/voyager/issues/47) + +**Merged pull requests:** + +- Add service to deployments.yaml [\#58](https://github.com/voyagermesh/voyager/pull/58) ([tamalsaha](https://github.com/tamalsaha)) +- Prepare docs for version 1.5.2 [\#57](https://github.com/voyagermesh/voyager/pull/57) ([tamalsaha](https://github.com/tamalsaha)) +- Add service in voyager [\#56](https://github.com/voyagermesh/voyager/pull/56) ([saumanbiswas](https://github.com/saumanbiswas)) +- Fix stable chart [\#55](https://github.com/voyagermesh/voyager/pull/55) ([saumanbiswas](https://github.com/saumanbiswas)) +- Use unversioned time. [\#54](https://github.com/voyagermesh/voyager/pull/54) ([tamalsaha](https://github.com/tamalsaha)) +- Doc/fix update [\#53](https://github.com/voyagermesh/voyager/pull/53) ([sadlil](https://github.com/sadlil)) +- Initial voyager chart [\#43](https://github.com/voyagermesh/voyager/pull/43) ([saumanbiswas](https://github.com/saumanbiswas)) + +## [1.5.1](https://github.com/voyagermesh/voyager/tree/1.5.1) (2017-04-05) +[Full Changelog](https://github.com/voyagermesh/voyager/compare/1.5.0...1.5.1) + +**Implemented enhancements:** + +- Enable GKE [\#44](https://github.com/voyagermesh/voyager/issues/44) + +**Merged pull requests:** + +- Enable GKE [\#45](https://github.com/voyagermesh/voyager/pull/45) ([tamalsaha](https://github.com/tamalsaha)) +- Fix Typos [\#42](https://github.com/voyagermesh/voyager/pull/42) ([sunkuet02](https://github.com/sunkuet02)) +- update README [\#41](https://github.com/voyagermesh/voyager/pull/41) ([utf18](https://github.com/utf18)) + +## [1.5.0](https://github.com/voyagermesh/voyager/tree/1.5.0) (2017-03-01) +**Implemented enhancements:** + +- Various clean ups [\#18](https://github.com/voyagermesh/voyager/issues/18) +- Add ALPN options to TCP Backends [\#35](https://github.com/voyagermesh/voyager/pull/35) ([sadlil](https://github.com/sadlil)) +- Update docs with voyager options and test modes [\#34](https://github.com/voyagermesh/voyager/pull/34) ([sadlil](https://github.com/sadlil)) +- Add alpn option while TLS is used [\#25](https://github.com/voyagermesh/voyager/pull/25) ([sadlil](https://github.com/sadlil)) +- Adding Tests - Unit and E2E [\#12](https://github.com/voyagermesh/voyager/pull/12) ([sadlil](https://github.com/sadlil)) +- Ensure TPR at runtime [\#9](https://github.com/voyagermesh/voyager/pull/9) ([sadlil](https://github.com/sadlil)) +- add ingress-class [\#4](https://github.com/voyagermesh/voyager/pull/4) ([sadlil](https://github.com/sadlil)) +- Renamed ingress annotations to "ingress.appscode.com" [\#3](https://github.com/voyagermesh/voyager/pull/3) ([sadlil](https://github.com/sadlil)) +- use updated reloader. [\#2](https://github.com/voyagermesh/voyager/pull/2) ([sadlil](https://github.com/sadlil)) + +**Fixed bugs:** + +- Failing to deploy [\#29](https://github.com/voyagermesh/voyager/issues/29) +- Remove ALPN h2 for https [\#33](https://github.com/voyagermesh/voyager/pull/33) ([sadlil](https://github.com/sadlil)) +- Update doc fix for \#19 [\#26](https://github.com/voyagermesh/voyager/pull/26) ([sadlil](https://github.com/sadlil)) + +**Closed issues:** + +- Update documentation for nodeSelector cleanup [\#24](https://github.com/voyagermesh/voyager/issues/24) + +**Merged pull requests:** + +- Add doc explaining release process. [\#37](https://github.com/voyagermesh/voyager/pull/37) ([tamalsaha](https://github.com/tamalsaha)) +- Pass KLOADER\_ARGS as env variable [\#30](https://github.com/voyagermesh/voyager/pull/30) ([tamalsaha](https://github.com/tamalsaha)) +- Init cloud provider for Azure. [\#28](https://github.com/voyagermesh/voyager/pull/28) ([tamalsaha](https://github.com/tamalsaha)) +- Revendor dependencies. [\#23](https://github.com/voyagermesh/voyager/pull/23) ([tamalsaha](https://github.com/tamalsaha)) +- Use Ubuntu:16.04 as the base image to enable ALPN. [\#22](https://github.com/voyagermesh/voyager/pull/22) ([tamalsaha](https://github.com/tamalsaha)) +- Resolve \#18 [\#19](https://github.com/voyagermesh/voyager/pull/19) ([sadlil](https://github.com/sadlil)) +- Add example on front page. [\#16](https://github.com/voyagermesh/voyager/pull/16) ([tamalsaha](https://github.com/tamalsaha)) +- README typos [\#15](https://github.com/voyagermesh/voyager/pull/15) ([JakeAustwick](https://github.com/JakeAustwick)) +- Add links of subsections [\#11](https://github.com/voyagermesh/voyager/pull/11) ([sadlil](https://github.com/sadlil)) +- Update docs [\#10](https://github.com/voyagermesh/voyager/pull/10) ([sadlil](https://github.com/sadlil)) +- Rename voyager to Voyager [\#8](https://github.com/voyagermesh/voyager/pull/8) ([sadlil](https://github.com/sadlil)) +- Add acknowledgements [\#7](https://github.com/voyagermesh/voyager/pull/7) ([sadlil](https://github.com/sadlil)) +- Documentation for voyager [\#6](https://github.com/voyagermesh/voyager/pull/6) ([sadlil](https://github.com/sadlil)) +- Use kloader. [\#5](https://github.com/voyagermesh/voyager/pull/5) ([tamalsaha](https://github.com/tamalsaha)) +- Custom pongo2 filters for loading haproxy data. [\#1](https://github.com/voyagermesh/voyager/pull/1) ([sadlil](https://github.com/sadlil)) + + + +\* *This Change Log was automatically generated by [github_changelog_generator](https://github.com/skywinder/GitHub-Changelog-Generator)* \ No newline at end of file diff --git a/content/docs/v2024.3.18/CONTRIBUTING.md b/content/docs/v2024.3.18/CONTRIBUTING.md new file mode 100644 index 000000000..3586d717d --- /dev/null +++ b/content/docs/v2024.3.18/CONTRIBUTING.md @@ -0,0 +1,66 @@ +--- +title: Contributing | Voyager +description: Contributing +menu: + docs_v2024.3.18: + identifier: contributing-voyager + name: Contributing + parent: welcome + weight: 10 +product_name: voyager +menu_name: docs_v2024.3.18 +section_menu_id: welcome +url: /docs/v2024.3.18/welcome/contributing/ +aliases: +- /docs/v2024.3.18/CONTRIBUTING/ +info: + cli: v0.0.15 + installer: v2024.3.18 + version: v2024.3.18 +--- + +# Contribution Guidelines +Want to hack on Voyager? + +AppsCode projects are [Apache 2.0 licensed](https://github.com/voyagermesh/voyager/blob/master/LICENSE) and accept contributions via +GitHub pull requests. This document outlines some of the conventions on +development workflow, commit message formatting, contact points and other +resources to make it easier to get your contribution accepted. + +## Certificate of Origin + +By contributing to this project you agree to the Developer Certificate of +Origin (DCO). This document was created by the Linux Kernel community and is a +simple statement that you, as a contributor, have the legal right to make the +contribution. See the [DCO](https://github.com/voyagermesh/voyager/blob/master/DCO) file for details. + +## Developer Guide + +We have a [Developer Guide](/docs/v2024.3.18/setup/developer-guide/overview) that outlines everything you need to know from setting up your +dev environment to how to build and test Voyager. If you find something undocumented or incorrect along the way, +please feel free to send a Pull Request. + +## Getting Help + +If you have a question about Voyager or having problem using it, you can contact us on the [AppsCode Slack team](https://appscode.slack.com/messages/C0XQFLGRM/details/) channel `#general`. Follow [this link](https://slack.appscode.com) to get invitation to our Slack channel. + +## Bugs/Feature request + +If you have found a bug with Voyager or want to request for new features, please [file an issue](https://github.com/voyagermesh/voyager/issues/new). + +## Submit PR + +If you fix a bug or developed a new feature, feel free to submit a PR. In either case, please file a [GitHub issue](https://github.com/voyagermesh/voyager/issues/new) first, so that we can have a discussion on it. This is a rough outline of what a contributor's workflow looks like: + + +- Create a topic branch from where you want to base your work (usually master). +- Make commits of logical units. +- Push your changes to a topic branch in your fork of the repository. +- Make sure the tests pass, and add any new tests as appropriate. +- Submit a pull request to the original repository. + +Thanks for your contributions! + +## Spread the word + +If you have written blog post or tutorial on Voyager, please share it with us on [Twitter](https://twitter.com/AppsCodeHQ) or [Slack](https://slack.appscode.com). diff --git a/content/docs/v2024.3.18/README.md b/content/docs/v2024.3.18/README.md new file mode 100644 index 000000000..ef09f815b --- /dev/null +++ b/content/docs/v2024.3.18/README.md @@ -0,0 +1,43 @@ +--- +title: Welcome | Voyager +description: Welcome to Voyager +menu: + docs_v2024.3.18: + identifier: readme-voyager + name: Readme + parent: welcome + weight: -1 +product_name: voyager +menu_name: docs_v2024.3.18 +section_menu_id: welcome +url: /docs/v2024.3.18/welcome/ +aliases: +- /docs/v2024.3.18/ +- /docs/v2024.3.18/README/ +info: + cli: v0.0.15 + installer: v2024.3.18 + version: v2024.3.18 +--- + +# Voyager + +Voyager is a [HAProxy](http://www.haproxy.org/) backed secure L7 and L4 ingress controller for Kubernetes developed by [AppsCode](https://appscode.com). This can be used with any Kubernetes cloud providers including aws, gce, gke, azure, acs. This can also be used with bare metal Kubernetes clusters. + +From here you can learn all about Voyager's architecture and how to deploy and use Voyager. + +- [Concepts](/docs/v2024.3.18/concepts/). Concepts explain some significant aspect of Voyager. This +is where you can learn about what Voyager does and how it does it. + +- [Setup](/docs/v2024.3.18/setup/). Setup contains instructions for installing + the Voyager in various cloud providers. + +- Guides. Guides show you how to perform tasks with Voyager. These are organized under [Ingress](/docs/v2024.3.18/guides/ingress) and [Certificate](/docs/v2024.3.18/guides/certificate). + +- [Reference](/docs/v2024.3.18/reference/). Detailed exhaustive lists of +command-line options, configuration options, API definitions, and procedures. + +We're always looking for help improving our documentation, so please don't hesitate to +[file an issue](https://github.com/voyagermesh/voyager/issues/new) if you see some problem. +Or better yet, submit your own [contributions](/docs/v2024.3.18/CONTRIBUTING) to help +make our docs better. diff --git a/content/docs/v2024.3.18/_index.md b/content/docs/v2024.3.18/_index.md new file mode 100644 index 000000000..627800bf6 --- /dev/null +++ b/content/docs/v2024.3.18/_index.md @@ -0,0 +1,15 @@ +--- +title: Docs | Voyager +description: Voyager Docs +menu: + docs_v2024.3.18: + identifier: welcome + name: Welcome + weight: 10 +menu_name: docs_v2024.3.18 +info: + cli: v0.0.15 + installer: v2024.3.18 + version: v2024.3.18 +--- + diff --git a/content/docs/v2024.3.18/acknowledgement.md b/content/docs/v2024.3.18/acknowledgement.md new file mode 100644 index 000000000..dfdb1f0b8 --- /dev/null +++ b/content/docs/v2024.3.18/acknowledgement.md @@ -0,0 +1,30 @@ +--- +title: Acknowledgement | Voyager +description: Acknowledgement +menu: + docs_v2024.3.18: + identifier: acknowledgement-voyager + name: Acknowledgement + parent: welcome + weight: 20 +product_name: voyager +menu_name: docs_v2024.3.18 +section_menu_id: welcome +url: /docs/v2024.3.18/welcome/acknowledgement/ +aliases: +- /docs/v2024.3.18/acknowledgement/ +info: + cli: v0.0.15 + installer: v2024.3.18 + version: v2024.3.18 +--- + +# Acknowledgement + + - docker-library/haproxy https://github.com/docker-library/haproxy + - kubernetes/contrib https://github.com/kubernetes/contrib/tree/master/service-loadbalancer + - kubernetes/ingress https://github.com/kubernetes/ingress + - xenolf/lego https://github.com/appscode/lego + - kelseyhightower/kube-cert-manager https://github.com/kelseyhightower/kube-cert-manager + - PalmStoneGames/kube-cert-manager https://github.com/PalmStoneGames/kube-cert-manager + - [Kubernetes cloudprovider implementation](https://github.com/kubernetes/kubernetes/tree/master/pkg/cloudprovider) diff --git a/content/docs/v2024.3.18/concepts/README.md b/content/docs/v2024.3.18/concepts/README.md new file mode 100644 index 000000000..a7598ba48 --- /dev/null +++ b/content/docs/v2024.3.18/concepts/README.md @@ -0,0 +1,31 @@ +--- +title: Concepts | Voyager +menu: + docs_v2024.3.18: + identifier: concepts-readme + name: Readme + parent: concepts + weight: -1 +product_name: voyager +menu_name: docs_v2024.3.18 +section_menu_id: concepts +url: /docs/v2024.3.18/concepts/ +aliases: +- /docs/v2024.3.18/concepts/README/ +info: + cli: v0.0.15 + installer: v2024.3.18 + version: v2024.3.18 +--- + +# Concepts + +Concepts help you learn about the different parts of the Voyager and the abstractions it uses. + +- [Overview](/docs/v2024.3.18/concepts/overview). Provides a conceptual introduction to Voyager, including the problems it solves and its high-level architecture. + +- Types of Ingress + - [LoadBalancer](/docs/v2024.3.18/concepts/ingress-types/loadbalancer). Explains how LoadBalancer type Ingress works. + - [NodePort](/docs/v2024.3.18/concepts/ingress-types/nodeport). Explains how NodePort type Ingress works. + - [HostPort](/docs/v2024.3.18/concepts/ingress-types/hostport). Explains how HostPort type Ingress works. + - [Internal](/docs/v2024.3.18/concepts/ingress-types/internal). Explains how Internal type Ingress works. diff --git a/content/docs/v2024.3.18/concepts/_index.md b/content/docs/v2024.3.18/concepts/_index.md new file mode 100644 index 000000000..648797786 --- /dev/null +++ b/content/docs/v2024.3.18/concepts/_index.md @@ -0,0 +1,15 @@ +--- +title: Guides +description: Voyager Guides +menu: + docs_v2024.3.18: + identifier: concepts + name: Concepts + weight: 20 +menu_name: docs_v2024.3.18 +info: + cli: v0.0.15 + installer: v2024.3.18 + version: v2024.3.18 +--- + diff --git a/content/docs/v2024.3.18/concepts/haproxy.md b/content/docs/v2024.3.18/concepts/haproxy.md new file mode 100644 index 000000000..e69de29bb diff --git a/content/docs/v2024.3.18/concepts/ingress-types/_index.md b/content/docs/v2024.3.18/concepts/ingress-types/_index.md new file mode 100644 index 000000000..5d292ba41 --- /dev/null +++ b/content/docs/v2024.3.18/concepts/ingress-types/_index.md @@ -0,0 +1,17 @@ +--- +title: Types of Ingress | Voyager +menu: + docs_v2024.3.18: + identifier: ingress-types-concepts + name: Types of Ingress + parent: concepts + weight: 15 +product_name: voyager +menu_name: docs_v2024.3.18 +section_menu_id: concepts +info: + cli: v0.0.15 + installer: v2024.3.18 + version: v2024.3.18 +--- + diff --git a/content/docs/v2024.3.18/concepts/ingress-types/hostport.md b/content/docs/v2024.3.18/concepts/ingress-types/hostport.md new file mode 100644 index 000000000..223bdb9f7 --- /dev/null +++ b/content/docs/v2024.3.18/concepts/ingress-types/hostport.md @@ -0,0 +1,182 @@ +--- +title: HostPort Ingress | Voyager +menu: + docs_v2024.3.18: + identifier: hostport-ingress + name: HostPort + parent: ingress-types-concepts + weight: 20 +product_name: voyager +menu_name: docs_v2024.3.18 +section_menu_id: concepts +info: + cli: v0.0.15 + installer: v2024.3.18 + version: v2024.3.18 +--- + +# HostPort + +In `HostPort` type Ingress, HAProxy pods are run via a Kubernetes deployment named `voyager-${ingress-name}` with `hostNetwork: true`. A headless Service is also created for the HAProxy pods. To enable this, apply the `ingress.appscode.com/type: HostPort` annotation on a Ingress object. + +## How It Works + +- First, install Voyager operator in your cluster following the steps [here](/docs/v2024.3.18/setup/install). + +- Now, deploy test servers using [this script](/docs/v2024.3.18/examples/ingress/types/hostport/deploy-servers.sh) script. + +```bash +curl -fsSL https://raw.githubusercontent.com/voyagermesh/voyager/{{< param "info.version" >}}/docs/examples/ingress/types/hostport/deploy-servers.sh | bash + +deployment "nginx" created +service "web" exposed +deployment "echoserver" created +service "rest" exposed +``` + +- Now, create an Ingress object running + +```bash +kubectl apply -f https://raw.githubusercontent.com/voyagermesh/voyager/{{< param "info.version" >}}/docs/examples/ingress/types/hostport/ing.yaml +``` + +Please note the annotation on ingress: + +```yaml + annotations: + ingress.appscode.com/type: HostPort +``` + +```bash +$ kubectl get pods,svc +NAME READY STATUS RESTARTS AGE +po/echoserver-566fcc4fdb-7fth7 1/1 Running 0 6m +po/nginx-d5dc44cf7-m4xcg 1/1 Running 0 6m +po/voyager-test-ingress-668594cc46-5zswh 1/1 Running 0 4m + +NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE +svc/kubernetes ClusterIP 10.96.0.1 443/TCP 1h +svc/rest ClusterIP 10.103.13.42 80/TCP 6m +svc/voyager-test-ingress ClusterIP None 80/TCP 4m +svc/web ClusterIP 10.99.232.60 80/TCP 6m +``` + +- Now, ssh into the minikube vm and run the following commands from host: + +```bash +$ minikube ssh + +$ curl -vv 127.0.0.1 -H "Host: web.example.com" +> GET / HTTP/1.1 +> Host: web.example.com +> User-Agent: curl/7.53.0 +> Accept: */* +> +< HTTP/1.1 200 OK +< Server: nginx/1.13.8 +< Date: Thu, 28 Dec 2017 04:27:20 GMT +< Content-Type: text/html +< Content-Length: 612 +< Last-Modified: Tue, 26 Dec 2017 11:11:22 GMT +< ETag: "5a422e5a-264" +< Accept-Ranges: bytes +< + + + +Welcome to nginx! + + + +

Welcome to nginx!

+

If you see this page, the nginx web server is successfully installed and +working. Further configuration is required.

+ +

For online documentation and support please refer to +nginx.org.
+Commercial support is available at +nginx.com.

+ +

Thank you for using nginx.

+ + +``` + +```bash +$ curl -vv 127.0.0.1 -H "Host: app.example.com" +> GET / HTTP/1.1 +> Host: app.example.com +> User-Agent: curl/7.53.0 +> Accept: */* +> +< HTTP/1.1 200 OK +< Server: nginx/1.10.0 +< Date: Thu, 28 Dec 2017 04:27:39 GMT +< Content-Type: text/plain +< Transfer-Encoding: chunked +< +CLIENT VALUES: +client_address=172.17.0.1 +command=GET +real path=/ +query=nil +request_version=1.1 +request_uri=http://app.example.com:8080/ + +SERVER VALUES: +server_version=nginx: 1.10.0 - lua: 10001 + +HEADERS RECEIVED: +accept=*/* +connection=close +host=app.example.com +user-agent=curl/7.53.0 +x-forwarded-for=127.0.0.1 +BODY: +``` + +Now, if you run `netstat`, you should port 80 is listened on by haproxy. + +```bash +$ netstat -tuln | grep 80 +tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN +tcp 0 0 127.0.0.1:2380 0.0.0.0:* LISTEN +``` + +## FAQ + +## Does Voyager configure firewalls for HostPort Ingress? + +Voyager operator will configure firewall rules for HostPort Ingress for the following cloud providers: AWS, GCE/GKE . + +## What IAM permissions are required for Voyager operator to configure firewalls for HostPort Ingress in AWS? + + - Master: For aws clusters provisioned via [Kops](https://github.com/kubernetes/kops/blob/master/docs/iam_roles.md), no additional permission should be needed. Master instances already has `ec2:*` iam permissions. + +- Nodes: `Describe*` permissions are applied by default. Additional `write` permissions need to be applied are: +``` +{ + "Effect": "Allow", + "Action": [ + "ec2:AuthorizeSecurityGroupIngress", + "ec2:CreateRoute", + "ec2:CreateSecurityGroup", + "ec2:CreateTags", + "ec2:DeleteRoute", + "ec2:DeleteSecurityGroup", + "ec2:ModifyInstanceAttribute", + "ec2:RevokeSecurityGroupIngress", + "ec2:DescribeInstances", + "ec2:DescribeRouteTables", + "ec2:DescribeSecurityGroups", + "ec2:DescribeSubnets" + ], + "Resource": "*" +} +``` diff --git a/content/docs/v2024.3.18/concepts/ingress-types/internal.md b/content/docs/v2024.3.18/concepts/ingress-types/internal.md new file mode 100644 index 000000000..34c911dc2 --- /dev/null +++ b/content/docs/v2024.3.18/concepts/ingress-types/internal.md @@ -0,0 +1,146 @@ +--- +title: Internal Ingress | Voyager +menu: + docs_v2024.3.18: + identifier: internal-ingress + name: Internal + parent: ingress-types-concepts + weight: 25 +product_name: voyager +menu_name: docs_v2024.3.18 +section_menu_id: concepts +info: + cli: v0.0.15 + installer: v2024.3.18 + version: v2024.3.18 +--- + +# Internal + +In `Internal` type Ingress, HAProxy pods are exposed via a ClusterIP type Kubernetes service named `voyager-${ingress-name}`. To enable this, apply the `ingress.appscode.com/type: Internal` annotation on a Ingress object. Unlike Kubernetes Service which operates at L4 level, this creates a cluster internal L7 proxy. An example use-case is proxy for ElasticSearch cluster to handle persistent connections, alleviating the ElasticSearch servers from having to deal w/ tons of connection creations. + +## How It Works + +- First, install Voyager operator in your cluster following the steps [here](/docs/v2024.3.18/setup/install). + +- Now, deploy test servers using [this script](/docs/v2024.3.18/examples/ingress/types/internal/deploy-servers.sh) script. + +```bash +curl -fsSL https://raw.githubusercontent.com/voyagermesh/voyager/{{< param "info.version" >}}/docs/examples/ingress/types/internal/deploy-servers.sh | bash + +deployment "nginx" created +service "web" exposed +deployment "echoserver" created +service "rest" exposed +``` + +- Now, create an Ingress object running + +```bash +kubectl apply -f https://raw.githubusercontent.com/voyagermesh/voyager/{{< param "info.version" >}}/docs/examples/ingress/types/internal/ing.yaml +``` + +Please note the annotation on ingress: + +```yaml + annotations: + ingress.appscode.com/type: Internal +``` + +```bash +$ kubectl get pods,svc +NAME READY STATUS RESTARTS AGE +po/echoserver-566fcc4fdb-bw4xm 1/1 Running 0 1m +po/nginx-d5dc44cf7-brgd4 1/1 Running 0 1m +po/voyager-test-ingress-6859dc5ddd-9mmz2 1/1 Running 0 34s + +NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE +svc/kubernetes ClusterIP 10.96.0.1 443/TCP 7m +svc/rest ClusterIP 10.105.80.152 80/TCP 1m +svc/voyager-test-ingress ClusterIP 10.97.153.185 80/TCP 34s +svc/web ClusterIP 10.96.37.26 80/TCP 1m + +$ minikube ip +192.168.99.100 +``` + +- Now, ssh into the minikube vm and run the following commands from host: + +```bash +$ minikube ssh + +$ curl -vv 10.97.153.185 -H "Host: web.example.com" +> GET / HTTP/1.1 +> Host: web.example.com +> User-Agent: curl/7.53.0 +> Accept: */* +> +< HTTP/1.1 200 OK +< Server: nginx/1.13.8 +< Date: Thu, 18 Jan 2018 06:58:29 GMT +< Content-Type: text/html +< Content-Length: 612 +< Last-Modified: Tue, 26 Dec 2017 11:11:22 GMT +< ETag: "5a422e5a-264" +< Accept-Ranges: bytes +< + + + +Welcome to nginx! + + + +

Welcome to nginx!

+

If you see this page, the nginx web server is successfully installed and +working. Further configuration is required.

+ +

For online documentation and support please refer to +nginx.org.
+Commercial support is available at +nginx.com.

+ +

Thank you for using nginx.

+ + +``` + +```bash +$ curl -vv 10.97.153.185 -H "Host: app.example.com" +> GET / HTTP/1.1 +> Host: app.example.com +> User-Agent: curl/7.53.0 +> Accept: */* +> +< HTTP/1.1 200 OK +< Server: nginx/1.10.0 +< Date: Thu, 18 Jan 2018 06:59:05 GMT +< Content-Type: text/plain +< Transfer-Encoding: chunked +< +CLIENT VALUES: +client_address=172.17.0.7 +command=GET +real path=/ +query=nil +request_version=1.1 +request_uri=http://app.example.com:8080/ + +SERVER VALUES: +server_version=nginx: 1.10.0 - lua: 10001 + +HEADERS RECEIVED: +accept=*/* +connection=close +host=app.example.com +user-agent=curl/7.53.0 +x-forwarded-for=10.0.2.15 +BODY: +-no body in request- +``` diff --git a/content/docs/v2024.3.18/concepts/ingress-types/loadbalancer.md b/content/docs/v2024.3.18/concepts/ingress-types/loadbalancer.md new file mode 100644 index 000000000..77e37f19a --- /dev/null +++ b/content/docs/v2024.3.18/concepts/ingress-types/loadbalancer.md @@ -0,0 +1,211 @@ +--- +title: LoadBalancer Ingress | Voyager +menu: + docs_v2024.3.18: + identifier: loadbalancer-ingress + name: LoadBalancer + parent: ingress-types-concepts + weight: 10 +product_name: voyager +menu_name: docs_v2024.3.18 +section_menu_id: concepts +info: + cli: v0.0.15 + installer: v2024.3.18 + version: v2024.3.18 +--- + +# LoadBalancer + +In `LoadBalancer` type Ingress, HAProxy pods are exposed via a LoadBalancer type Kubernetes service named `voyager-${ingress-name}`. You can apply the `ingress.appscode.com/type: LoadBalancer` annotation on a Ingress object to enable this type of Ingress. This is also the default type for Ingress objects. So, this annotation is not required to enable this type. + +## How It Works + +- First, install Voyager operator in your cluster following the steps [here](/docs/v2024.3.18/setup/install). + +- Now, deploy test servers using [this script](/docs/v2024.3.18/examples/ingress/types/loadbalancer/deploy-servers.sh) script. + +```bash +curl -fsSL https://raw.githubusercontent.com/voyagermesh/voyager/{{< param "info.version" >}}/docs/examples/ingress/types/loadbalancer/deploy-servers.sh | bash + +deployment "nginx" created +service "web" exposed +deployment "echoserver" created +service "rest" exposed +``` + +- Now, create an Ingress object running + +```bash +kubectl apply -f https://raw.githubusercontent.com/voyagermesh/voyager/{{< param "info.version" >}}/docs/examples/ingress/types/loadbalancer/ing.yaml +``` + +Please note the annotation on ingress: + +```yaml + annotations: + ingress.appscode.com/type: LoadBalancer +``` + +```bash +$ kubectl get pods,svc +NAME READY STATUS RESTARTS AGE +po/echoserver-848b75d85-wxdrz 1/1 Running 0 2m +po/nginx-7c87f569d-5q5mf 1/1 Running 0 3m +po/voyager-test-ingress-687d6b7c65-qjqzt 1/1 Running 0 1m + +NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE +svc/kubernetes ClusterIP 10.11.240.1 443/TCP 4m +svc/rest ClusterIP 10.11.252.242 80/TCP 2m +svc/voyager-test-ingress LoadBalancer 10.11.248.185 35.226.114.148 80:30854/TCP 1m +svc/web ClusterIP 10.11.253.33 80/TCP 2m +``` + +```bash +$ curl -vv 35.226.114.148 -H "Host: web.example.com" +* Rebuilt URL to: 35.226.114.148/ +* Trying 35.226.114.148... +* Connected to 35.226.114.148 (35.226.114.148) port 80 (#0) +> GET / HTTP/1.1 +> Host: web.example.com +> User-Agent: curl/7.47.0 +> Accept: */* +> +< HTTP/1.1 200 OK +< Server: nginx/1.13.8 +< Date: Thu, 18 Jan 2018 06:40:49 GMT +< Content-Type: text/html +< Content-Length: 612 +< Last-Modified: Tue, 26 Dec 2017 11:11:22 GMT +< ETag: "5a422e5a-264" +< Accept-Ranges: bytes +< + + + +Welcome to nginx! + + + +

Welcome to nginx!

+

If you see this page, the nginx web server is successfully installed and +working. Further configuration is required.

+ +

For online documentation and support please refer to +nginx.org.
+Commercial support is available at +nginx.com.

+ +

Thank you for using nginx.

+ + +* Connection #0 to host 35.226.114.148 left intact +``` + +```bash +$ curl -vv 35.226.114.148 -H "Host: app.example.com" +* Rebuilt URL to: 35.226.114.148/ +* Trying 35.226.114.148... +* Connected to 35.226.114.148 (35.226.114.148) port 80 (#0) +> GET / HTTP/1.1 +> Host: app.example.com +> User-Agent: curl/7.47.0 +> Accept: */* +> +< HTTP/1.1 200 OK +< Server: nginx/1.10.0 +< Date: Thu, 18 Jan 2018 06:41:36 GMT +< Content-Type: text/plain +< Transfer-Encoding: chunked +< +CLIENT VALUES: +client_address=10.8.0.14 +command=GET +real path=/ +query=nil +request_version=1.1 +request_uri=http://app.example.com:8080/ + +SERVER VALUES: +server_version=nginx: 1.10.0 - lua: 10001 + +HEADERS RECEIVED: +accept=*/* +connection=close +host=app.example.com +user-agent=curl/7.47.0 +x-forwarded-for=10.8.0.1 +BODY: +* Connection #0 to host 35.226.114.148 left intact +``` + +## FAQ + +**How do I ensure that IP assigned my Ingress does not change?** + +You can allocate a static IP to a LoadBalancer Ingress managed by Voyager. Say for example, you are using GKE. When you create an Ingress object, Voyager will create a Kubernetes Service of type LoadBalancer. This service will automatically get a regional IP. If you want to keep that IP, you can mark that IP as static in Google cloud console +and the apply the annotation to your Ingress. + +```yaml + annotations: + ingress.appscode.com/type: LoadBalancer + ` ingress.appscode.com/load-balancer-ip: 'a.b.c.d'` +``` + + +**How do I use a Global Static IP (anycast IP) with an Ingress in GKE?** + +You can't use Global Static IP with a LoabBalancer Ingress managed by GKE. Voyager creates a `LoadBalancer` Service to expose HAProxy pods. Under the hood, Kubernetes creates a `Network LoadBalancer` to expose that Kubernetes service. Network LoadBalancers can only use regional static IPs. + +If you want to use Global static IP with Google Cloud, these pods need to be exposed via a HTTP LoadBalancer. Voyager does not support this today. This is not a priority for us but if you want to contribute, we can talk more. To use HTTP LoadBalancers today, you can use the `gce` ingress controller: https://github.com/kubernetes/ingress-gce . You may already know that HTTP LoadBalancer can only open port 80, 8080 and 443 and serve HTTP traffic. Please consult the official docs for more details: https://cloud.google.com/compute/docs/load-balancing/ + + +**How to use LoadBalancer type ingress in Openstack?** + +If you need to create an internal LB in Openstack, you can do so using `ingress.appscode.com/annotations-service` annotation on the Ingress object. + +```yaml + annotations: + ingress.appscode.com/type: LoadBalancer + ingress.appscode.com/annotations-service: | + { + "service.beta.kubernetes.io/openstack-internal-load-balancer": "true" + } +``` + + +**How to use LoadBalancer type ingress in Minikube cluster?** + +Minikube clusters do not support service type `LoadBalancer`. So, you can try the following workarounds: + +- You can set the `Host` header is your http request to match the expected domain and port. This will ensure HAProxy matches the rules properly. + +```bash +$ curl -vv : -H "Host: app.example.com" +``` + +- This work around is available thanks to [@david92rl](https://github.com/david92rl). You can use a service type ClusterIP with an ip fixed (like 10.0.0.150), then create a route to it from host machine. + +**_Minikube on Mac with virtualbox/vmware providers_** + +```bash +sudo route -n delete ${K8S_NETWORK} > /dev/null 2>&1 +sudo route -n add ${K8S_NETWORK} $(minikube ip) +interface=$(ifconfig 'bridge0' | grep member | awk '{print $2}' | xargs | awk '{print $1}') +sudo ifconfig bridge0 -hostfilter ${interface} +``` + +**_Minikube on Linux_** + +```bash +sudo ip route del ${K8S_NETWORK} +sudo ip route add ${K8S_NETWORK} via $(minikube ip) +``` + +*K8S_NETWORK* usually is `10.0.0.0/24` but it's worth to double check always. diff --git a/content/docs/v2024.3.18/concepts/ingress-types/nodeport.md b/content/docs/v2024.3.18/concepts/ingress-types/nodeport.md new file mode 100644 index 000000000..862d26798 --- /dev/null +++ b/content/docs/v2024.3.18/concepts/ingress-types/nodeport.md @@ -0,0 +1,233 @@ +--- +title: NodePort Ingress | Voyager +menu: + docs_v2024.3.18: + identifier: nodeport-ingress + name: NodePort + parent: ingress-types-concepts + weight: 15 +product_name: voyager +menu_name: docs_v2024.3.18 +section_menu_id: concepts +info: + cli: v0.0.15 + installer: v2024.3.18 + version: v2024.3.18 +--- + +# NodePort + +In `NodePort` type Ingress, HAProxy pods are exposed via a NodePort type Kubernetes service named `voyager-${ingress-name}`. To enable this, apply the `ingress.appscode.com/type: NodePort` annotation on a Ingress object. + +## How It Works + +- First, install Voyager operator in your cluster following the steps [here](/docs/v2024.3.18/setup/install). + +- Then, deploy and expose a test server. + +```bash +$ kubectl run test-server --image=gcr.io/google_containers/echoserver:1.8 +deployment "test-server" created + +$ kubectl expose deployment test-server --type=LoadBalancer --port=80 --target-port=8080 +service "test-server" exposed +``` + +- Now, create an Ingress with `ingress.appscode.com/type: NodePort` annotation. + +```yaml +$ kubectl apply -f test-ingress.yaml + +apiVersion: voyager.appscode.com/v1 +kind: Ingress +metadata: + name: test-ingress + namespace: default + annotations: + ingress.appscode.com/type: NodePort +spec: + rules: + - host: voyager.appscode.test + http: + paths: + - path: /foo + backend: + service: + name: test-server + port: + number: 80 +``` + +```bash +$ kubectl get pods,svc +NAME READY STATUS RESTARTS AGE +po/test-server-68ddc845cd-x7dtv 1/1 Running 0 4h +po/voyager-test-ingress-5b758664f6-4vptr 1/1 Running 0 1m + +NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE +svc/kubernetes ClusterIP 10.96.0.1 443/TCP 2d +svc/test-server LoadBalancer 10.105.13.31 80:30390/TCP 21h +svc/voyager-test-ingress NodePort 10.107.182.219 80:30800/TCP 39m +``` + +```bash +$ minikube service --url voyager-test-ingress +http://192.168.99.100:30800 +``` + +```bash +$ curl -v -H 'Host: voyager.appscode.test' 192.168.99.100:30800/foo +* Trying 192.168.99.100... +* Connected to 192.168.99.100 (192.168.99.100) port 30800 (#0) +> GET /foo HTTP/1.1 +> Host: voyager.appscode.test +> User-Agent: curl/7.47.0 +> Accept: */* +> +< HTTP/1.1 200 OK +< Date: Wed, 14 Feb 2018 09:34:30 GMT +< Content-Type: text/plain +< Transfer-Encoding: chunked +< Server: echoserver +< + + +Hostname: test-server-68ddc845cd-x7dtv + +Pod Information: + -no pod information available- + +Server values: + server_version=nginx: 1.13.3 - lua: 10008 + +Request Information: + client_address=172.17.0.6 + method=GET + real path=/foo + query= + request_version=1.1 + request_uri=http://voyager.appscode.test:8080/foo + +Request Headers: + accept=*/* + connection=close + host=voyager.appscode.test + user-agent=curl/7.47.0 + x-forwarded-for=172.17.0.1 + +Request Body: + -no body in request- + +* Connection #0 to host 192.168.99.100 left intact +``` + +## External IP +If you are using NodePort type Ingress, you can specify [`externalIPs`](https://kubernetes.io/docs/concepts/services-networking/service/#external-ips) for the NodePort service used to export HAProxy pods. + +If you are running Voyager as Ingress controller in your `baremetal` cluster and want to assing a VIP to the HAProxy service for a highly available Ingress setup, you should use this option. + +Below is an example Ingress yaml that shows how to specify externalIPs: + +```yaml +apiVersion: voyager.appscode.com/v1 +kind: Ingress +metadata: + name: test-ingress + namespace: default + annotations: + ingress.appscode.com/type: NodePort +spec: + externalIPs: + - a.b.c.d + rules: + - host: voyager.appscode.test + http: + paths: + - path: /foo + backend: + service: + name: test-server + port: + number: 80 +``` + +## Understanding `ingress.appscode.com/use-node-port` annotation + +When you are using `NodePort` type Ingress, your external clients (example, web browser) can connect to your backend services in 2 ways: + + - You may expose the NodePort service using an external hardware loadbalancer (like F5) or software loadbalancer like ALB in AWS. In these scenarios, the front loadbalancer will receive connections on service port from external clients (like web browser) and connect to the HAProxy NodePorts. So, HAProxy will see that incoming traffic is using Host like `domain:ing-port`. To ensure that HAProxy matches against the NodePort, use the annotation `ingress.appscode.com/use-node-port: "false"`. This is also considered the default value for this annotation. So, if you do not provide this annotation, it will be considered set to `false`. + + - Using the `NodePort` assigned to the HAProxy service. In this scenarios, external traffic directly hits the HAProxy NodePort service. So, HAProxy will see that incoming traffic is using Host like `domain:node-port`. To ensure that HAProxy matches against the NodePort, use the annotation `ingress.appscode.com/use-node-port: "true"` . +To ensure that HAProxy service ports stay fixed, define them in the Ingress YAML following: https://github.com/voyagermesh/voyager/blob/master/docs/guides/ingress/configuration/node-port.md + +Below is an example Ingress with `ingress.appscode.com/use-node-port` annotation: + +```yaml +$ kubectl apply -f test-ingress.yaml + +apiVersion: voyager.appscode.com/v1 +kind: Ingress +metadata: + name: test-ingress + namespace: default + annotations: + ingress.appscode.com/type: NodePort + ingress.appscode.com/use-node-port: "true" +spec: + rules: + - host: voyager.appscode.test + http: + paths: + - path: /foo + backend: + service: + name: test-server + port: + number: 80 +``` + +```bash +$ curl -v -H 'Host: voyager.appscode.test:30800' 192.168.99.100:30800/foo +* Trying 192.168.99.100... +* Connected to 192.168.99.100 (192.168.99.100) port 30800 (#0) +> GET /foo HTTP/1.1 +> Host: voyager.appscode.test:30800 +> User-Agent: curl/7.47.0 +> Accept: */* +> +< HTTP/1.1 200 OK +< Date: Wed, 14 Feb 2018 09:47:43 GMT +< Content-Type: text/plain +< Transfer-Encoding: chunked +< Server: echoserver +< + + +Hostname: test-server-68ddc845cd-x7dtv + +Pod Information: + -no pod information available- + +Server values: + server_version=nginx: 1.13.3 - lua: 10008 + +Request Information: + client_address=172.17.0.6 + method=GET + real path=/foo + query= + request_version=1.1 + request_uri=http://voyager.appscode.test:8080/foo + +Request Headers: + accept=*/* + connection=close + host=voyager.appscode.test:30800 + user-agent=curl/7.47.0 + x-forwarded-for=172.17.0.1 + +Request Body: + -no body in request- + +* Connection #0 to host 192.168.99.100 left intact +``` \ No newline at end of file diff --git a/content/docs/v2024.3.18/concepts/overview.md b/content/docs/v2024.3.18/concepts/overview.md new file mode 100644 index 000000000..58bee7f94 --- /dev/null +++ b/content/docs/v2024.3.18/concepts/overview.md @@ -0,0 +1,86 @@ +--- +title: Overview | Voyager +menu: + docs_v2024.3.18: + identifier: overview-concepts + name: Overview + parent: concepts + weight: 10 +product_name: voyager +menu_name: docs_v2024.3.18 +section_menu_id: concepts +info: + cli: v0.0.15 + installer: v2024.3.18 + version: v2024.3.18 +--- + +# Voyager +Voyager is a [HAProxy](http://www.haproxy.org/) backed [secure](#certificate) L7 and L4 [ingress](#ingress) controller for Kubernetes developed by +[AppsCode](https://appscode.com). This can be used with any Kubernetes cloud providers including aws, gce, gke, azure, acs. This can also be used with bare metal Kubernetes clusters. + + +## Ingress +Voyager provides L7 and L4 loadbalancing using Kubernetes standard [Ingress](https://kubernetes.io/docs/concepts/services-networking/ingress/) resource. This is built on top of the [HAProxy](http://www.haproxy.org/) to support high availability, sticky sessions, name and path-based virtual hosting among other features. The following diagram shows how voyager operator works. Voyager also provides a custom [Ingress](/docs/v2024.3.18/guides/ingress) resource under `voyager.appscode.com` api group that extends the functionality of standard Ingress in a Kubernetes native way. + +![voyager-ingress](/docs/v2024.3.18/images/ingress/voyager-ingress.png) + +The above diagram shows how the Voyager operator works. When Voyager is [installed](/docs/v2024.3.18/setup/install) in a Kubernetes cluster, a pod named `voyager-operator-***` starts running in `voyager` namespace by default. This operator pod watches for Kubernetes Ingress resources and Voyager's own Ingress CRD. When an Ingress object is created, Voyager operator creates 3 Kubernetes resources in the same namespace of the Ingress: + +- a Configmap named `voyager-${ingress-name}`: This contains the auto generated HAProxy configuration under `haproxy.cfg` key. + +- a Deployment named `voyager-${ingress-name}`: This runs HAProxy pods that mounts the above configmap. Each pod has one container for HAProxy. This container also includes some additional binary to reload HAProxy when the respective configmap updates. This also includes logic for mounting and updating SSL secrets referenced in the corresponding Ingress resource. HAProxy pods can also contain a side-car container for exporting Prometheus ready metrics, if [enabled](/docs/v2024.3.18/guides/ingress/monitoring/haproxy-stats). + +- a Service named `voyager-${ingress-name}`: This Kubernetes Service exposes the above HAProxy pods to the internet. The type of Service can be configured by user via `ingress.appscode.com/type` annotation on the Ingress. + +- a Service named `voyager-${ingress-name}-stats`: This Kubernetes Service is used to expose Prometheus ready metrics for HAProxy pods. This service is always of type `ClusterIP` and only created if stats are [enabled](/docs/v2024.3.18/guides/ingress/monitoring/haproxy-stats). + +## Certificate + +Voyager can automagically provision and refresh SSL certificates issued from Let's Encrypt using a custom Kubernetes [Certificate](/docs/v2024.3.18/guides/certificate) resource. + +- Provision free TLS certificates from Let's Encrypt, +- Manage issued certificates using a Kubernetes Third Party Resource, +- Domain validation using ACME dns-01 challenges, +- Support for multiple DNS providers, +- Auto Renew Certificates, +- Use issued Certificates with Ingress to Secure Communications. + + +## FAQ + +**How do I run Voyager with other Ingress controllers in the same cluster?** + +Yes, Voyager can be used to manager Ingress objects alongside with other ingress controller. Voyager comes with its own CRD called `Ingress` under api version `voyager.appscode.com/v1` . This CRD is not recognized by other ingress controllers that works with the Kubernetes official Ingress object under `networking.k8s.io/v1` api version. + +By default, Voyager will also manage Kubernetes Ingress objects under `networking.k8s.io/v1` api version. Voyager can be configured to only handle default Kubernetes Ingress objects with ingress.class `voyager` . To do that, pass the flag `--ingress-class=voyager` in operator pod. After that + +```yaml + annotations: + kubernetes.io/ingress.class=voyager +``` + +**Why does Voyager creates separate HAProxy pods for each Ingress?** + +Various Ingress controller behave differently regarding whether separate Ingress object will result in separate LoadBalancer. + +- nginx: Nginx controller seem to combine Ingress objects into one and expose via same Nginx instance. +- gce: A separate GCE L7 is created for each Ingress object. +- Voyager: A separate HAProxy deployment is created for each Ingress. + +There is not a clear indication what is the intended behavior from https://kubernetes.io/docs/concepts/services-networking/ingress/ . Reasons why we think one LB (GCE L7 / nginx / haproxy) per Ingress is a better choice: + +1. This gives users choice/control whether they want to serve all service using the same IP or use separate IP. In voyager, to serve using same LB, users need to put them in the same Ingress. + +2. I think ux is clearer with this mode. If user don't have access to other namespaces, they may not know what else is going on. + +3. Voyager supports TCP. If 2 separate backend wants to use the same port, they need separate LB IP. Also, since all TCP services served via same LB is in the same YAML, it makes it easy to see what other ports are in use. + +4. In Voyager, the order of paths for same host is important. We maintain this order in generated HAProxy config. If the Ingresses are auto merged, user loses this control. This might be ok, since paths are matched as the url prefix. But will not work, if other options are used. + +5. Users can spread services across LB pods. If used with HPA, users can only scale up HAProxy deployments that they want. + +6. We do soft reload HAProxy. This gives better isolation. + + + diff --git a/content/docs/v2024.3.18/examples/cert-manager/azure/certificate.yaml b/content/docs/v2024.3.18/examples/cert-manager/azure/certificate.yaml new file mode 100644 index 000000000..27a507afa --- /dev/null +++ b/content/docs/v2024.3.18/examples/cert-manager/azure/certificate.yaml @@ -0,0 +1,11 @@ +apiVersion: cert-manager.io/v1 +kind: Certificate +metadata: + name: kiteci-azure-dns + namespace: default +spec: + secretName: kiteci-azure-dns-tls + issuerRef: + name: letsencrypt-staging-dns + dnsNames: + - kiteci-azure-dns.appscode.info \ No newline at end of file diff --git a/content/docs/v2024.3.18/examples/cert-manager/azure/ingress.yaml b/content/docs/v2024.3.18/examples/cert-manager/azure/ingress.yaml new file mode 100644 index 000000000..857e6c127 --- /dev/null +++ b/content/docs/v2024.3.18/examples/cert-manager/azure/ingress.yaml @@ -0,0 +1,25 @@ +apiVersion: networking.k8s.io/v1 +kind: Ingress +metadata: + name: test-ingress-deploy-k8s-azure-dns + namespace: default + annotations: + kubernetes.io/ingress.class: voyager + certmanager.k8s.io/issuer: "letsencrypt-staging-dns" + certmanager.k8s.io/acme-challenge-type: dns01 +spec: + tls: + - hosts: + - kiteci-azure-dns.appscode.info + secretName: kiteci-azure-dns-tls + rules: + - host: kiteci-azure-dns.appscode.info + http: + paths: + - backend: + service: + name: web + port: + number: 80 + path: / + pathType: Prefix diff --git a/content/docs/v2024.3.18/examples/cert-manager/azure/issuer.yaml b/content/docs/v2024.3.18/examples/cert-manager/azure/issuer.yaml new file mode 100644 index 000000000..196c0ce9e --- /dev/null +++ b/content/docs/v2024.3.18/examples/cert-manager/azure/issuer.yaml @@ -0,0 +1,28 @@ +apiVersion: cert-manager.io/v1 +kind: Issuer +metadata: + name: letsencrypt-staging-dns + namespace: default +spec: + acme: + server: https://acme-staging-v02.api.letsencrypt.org/directory + email: example@kite.com + # Name of a secret used to store the ACME account private key + privateKeySecretRef: + name: example-issuer-account-key + solvers: + - dns01: + azureDNS: + # Service principal clientId (also called appId) + clientID: riu478u-486ij8-uiu487j-468rjg8 + # A secretKeyRef to a service principal ClientSecret (password) + clientSecretSecretRef: + name: azuredns-secret + key: client-secret + # Azure subscription Id + subscriptionID: 45ji8t4-rgi4859-g845jg-9jjf9945r + # Azure AD tenant Id + tenantID: 348585ej-4358fdg8-f4588fg-45889fg + # ResourceGroup name where dns zone is provisioned + resourceGroupName: dev + hostedZoneName: appscode.info \ No newline at end of file diff --git a/content/docs/v2024.3.18/examples/cert-manager/certificate.yaml b/content/docs/v2024.3.18/examples/cert-manager/certificate.yaml new file mode 100644 index 000000000..9078cfd83 --- /dev/null +++ b/content/docs/v2024.3.18/examples/cert-manager/certificate.yaml @@ -0,0 +1,15 @@ +apiVersion: cert-manager.io/v1 +kind: Certificate +metadata: + name: example + namespace: default +spec: + secretName: example-tls + duration: 24h + renewBefore: 12h + dnsNames: + - foo.example.com + - bar.example.com + issuerRef: + name: my-internal-ca + kind: Issuer \ No newline at end of file diff --git a/content/docs/v2024.3.18/examples/cert-manager/google_cloud/certificate.yaml b/content/docs/v2024.3.18/examples/cert-manager/google_cloud/certificate.yaml new file mode 100644 index 000000000..ba66f8ece --- /dev/null +++ b/content/docs/v2024.3.18/examples/cert-manager/google_cloud/certificate.yaml @@ -0,0 +1,11 @@ +apiVersion: cert-manager.io/v1 +kind: Certificate +metadata: + name: kiteci-dns + namespace: default +spec: + secretName: kiteci-dns-tls + issuerRef: + name: letsencrypt-staging-dns + dnsNames: + - kiteci-dns.appscode.ninja \ No newline at end of file diff --git a/content/docs/v2024.3.18/examples/cert-manager/google_cloud/ingress.yaml b/content/docs/v2024.3.18/examples/cert-manager/google_cloud/ingress.yaml new file mode 100644 index 000000000..1a1f5656f --- /dev/null +++ b/content/docs/v2024.3.18/examples/cert-manager/google_cloud/ingress.yaml @@ -0,0 +1,25 @@ +apiVersion: networking.k8s.io/v1 +kind: Ingress +metadata: + name: test-ingress-deploy-k8s-dns + namespace: default + annotations: + kubernetes.io/ingress.class: voyager + certmanager.k8s.io/issuer: "letsencrypt-staging-dns" + certmanager.k8s.io/acme-challenge-type: dns01 +spec: + tls: + - hosts: + - kiteci-dns.appscode.ninja + secretName: kiteci-dns-tls + rules: + - host: kiteci-dns.appscode.ninja + http: + paths: + - backend: + service: + name: web + port: + number: 80 + path: / + pathType: Prefix diff --git a/content/docs/v2024.3.18/examples/cert-manager/google_cloud/issuer.yaml b/content/docs/v2024.3.18/examples/cert-manager/google_cloud/issuer.yaml new file mode 100644 index 000000000..062a05913 --- /dev/null +++ b/content/docs/v2024.3.18/examples/cert-manager/google_cloud/issuer.yaml @@ -0,0 +1,21 @@ +apiVersion: cert-manager.io/v1 +kind: Issuer +metadata: + name: letsencrypt-staging-dns + namespace: default +spec: + acme: + server: https://acme-staging-v02.api.letsencrypt.org/directory + email: example@kite.com + # Name of a secret used to store the ACME account private key + privateKeySecretRef: + name: example-issuer-account-key + solvers: + - dns01: + cloudDNS: + # A secretKeyRef to a google cloud json service account + serviceAccountSecretRef: + name: clouddns-service-account + key: service-account.json + # The project in which to update the DNS zone + project: test-cert \ No newline at end of file diff --git a/content/docs/v2024.3.18/examples/cert-manager/http/clusterissuer.yaml b/content/docs/v2024.3.18/examples/cert-manager/http/clusterissuer.yaml new file mode 100644 index 000000000..fa1d8a857 --- /dev/null +++ b/content/docs/v2024.3.18/examples/cert-manager/http/clusterissuer.yaml @@ -0,0 +1,19 @@ +apiVersion: cert-manager.io/v1 +kind: ClusterIssuer +metadata: + name: letsencrypt-staging +spec: + acme: + # You must replace this email address with your own. + # Let's Encrypt will use this to contact you about expiring + # certificates, and issues related to your account. + email: user@example.com + server: https://acme-staging-v02.api.letsencrypt.org/directory + privateKeySecretRef: + # Secret resource used to store the account's private key. + name: example-issuer-account-key + # Add a single challenge solver, HTTP01 using nginx + solvers: + - http01: + ingress: + name: test-ingress \ No newline at end of file diff --git a/content/docs/v2024.3.18/examples/cert-manager/http/ingress.yaml b/content/docs/v2024.3.18/examples/cert-manager/http/ingress.yaml new file mode 100644 index 000000000..34fbfe94d --- /dev/null +++ b/content/docs/v2024.3.18/examples/cert-manager/http/ingress.yaml @@ -0,0 +1,24 @@ +apiVersion: networking.k8s.io/v1 +kind: Ingress +metadata: + name: test-ingress + namespace: default + annotations: + kubernetes.io/ingress.class: voyager + certmanager.k8s.io/cluster-issuer: "letsencrypt-staging" + certmanager.k8s.io/acme-challenge-type: http01 +spec: + tls: + - hosts: + - kiteci.appscode.ninja + secretName: quickstart-kiteci-tls + rules: + - http: + paths: + - backend: + service: + name: web + port: + number: 80 + path: / + pathType: Prefix diff --git a/content/docs/v2024.3.18/examples/cert-manager/issuer.yaml b/content/docs/v2024.3.18/examples/cert-manager/issuer.yaml new file mode 100644 index 000000000..ecbbc0421 --- /dev/null +++ b/content/docs/v2024.3.18/examples/cert-manager/issuer.yaml @@ -0,0 +1,19 @@ +apiVersion: cert-manager.io/v1 +kind: Issuer +metadata: + name: letsencrypt-prod + namespace: edge-services +spec: + acme: + # The ACME server URL + server: https://acme-v02.api.letsencrypt.org/directory + # Email address used for ACME registration + email: user@example.com + # Name of a secret used to store the ACME account private key + privateKeySecretRef: + name: letsencrypt-prod + # Enable HTTP01 validations + solvers: + - http01: + ingress: + class: voyager diff --git a/content/docs/v2024.3.18/examples/cert-manager/multiple.yaml b/content/docs/v2024.3.18/examples/cert-manager/multiple.yaml new file mode 100644 index 000000000..3dcbccf28 --- /dev/null +++ b/content/docs/v2024.3.18/examples/cert-manager/multiple.yaml @@ -0,0 +1,47 @@ +apiVersion: cert-manager.io/v1 +kind: Issuer +metadata: + name: letsencrypt-staging-dns + namespace: default +spec: + acme: + server: https://acme-staging-v02.api.letsencrypt.org/directory + email: example@kite.com + # Name of a secret used to store the ACME account private key + privateKeySecretRef: + name: example-issuer-account-key + solvers: + - http01: + ingress: + name: test-ingress-deploy-k8s + - dns01: + route53: + accessKeyID: KIR2WO5YWT + region: us-east-1 + secretAccessKeySecretRef: + name: route53-secret + key: secret-access-key + hostedZoneID: J13B3AB + - dns01: + azureDNS: + # Service principal clientId (also called appId) + clientID: riu478u-486ij8-uiu487j-468rjg8 + # A secretKeyRef to a service principal ClientSecret (password) + clientSecretSecretRef: + name: azuredns-secret + key: client-secret + # Azure subscription Id + subscriptionID: 45ji8t4-rgi4859-g845jg-9jjf9945r + # Azure AD tenant Id + tenantID: 348585ej-4358fdg8-f4588fg-45889fg + # ResourceGroup name where dns zone is provisioned + resourceGroupName: dev + hostedZoneName: appscode.info + - dns01: + cloudDNS: + # A secretKeyRef to a google cloud json service account + serviceAccountSecretRef: + name: clouddns-service-account + key: service-account.json + # The project in which to update the DNS zone + project: test-cert \ No newline at end of file diff --git a/content/docs/v2024.3.18/examples/cert-manager/route53/certificate.yaml b/content/docs/v2024.3.18/examples/cert-manager/route53/certificate.yaml new file mode 100644 index 000000000..e69de29bb diff --git a/content/docs/v2024.3.18/examples/cert-manager/route53/ingress.yaml b/content/docs/v2024.3.18/examples/cert-manager/route53/ingress.yaml new file mode 100644 index 000000000..e69de29bb diff --git a/content/docs/v2024.3.18/examples/cert-manager/route53/issuer.yaml b/content/docs/v2024.3.18/examples/cert-manager/route53/issuer.yaml new file mode 100644 index 000000000..e69de29bb diff --git a/content/docs/v2024.3.18/examples/ingress/pod-placement/deploy-servers.sh b/content/docs/v2024.3.18/examples/ingress/pod-placement/deploy-servers.sh new file mode 100755 index 000000000..bbc8b259a --- /dev/null +++ b/content/docs/v2024.3.18/examples/ingress/pod-placement/deploy-servers.sh @@ -0,0 +1,25 @@ +#!/bin/bash + +# Copyright The Voyager Authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +set -x + +kubectl create namespace demo + +kubectl run nginx --image=nginx --namespace=demo +kubectl expose deployment nginx --name=web --namespace=demo --port=80 --target-port=80 + +kubectl run echoserver --image=gcr.io/google_containers/echoserver:1.4 --namespace=demo +kubectl expose deployment echoserver --name=rest --namespace=demo --port=80 --target-port=8080 diff --git a/content/docs/v2024.3.18/examples/ingress/pod-placement/ingress-w-node-selector.yaml b/content/docs/v2024.3.18/examples/ingress/pod-placement/ingress-w-node-selector.yaml new file mode 100644 index 000000000..469a3af1f --- /dev/null +++ b/content/docs/v2024.3.18/examples/ingress/pod-placement/ingress-w-node-selector.yaml @@ -0,0 +1,27 @@ +apiVersion: voyager.appscode.com/v1 +kind: Ingress +metadata: + name: ingress-w-node-selector + namespace: demo + annotations: + ingress.appscode.com/type: NodePort + ingress.appscode.com/use-node-port: 'true' + ingress.appscode.com/replicas: '2' +spec: + nodeSelector: + kubernetes.io/hostname: minikube + rules: + - http: + paths: + - path: / + backend: + service; + name: rest + port: + number: 80 + - path: /web + backend: + service: + name: web + port: + number: 80 diff --git a/content/docs/v2024.3.18/examples/ingress/pod-placement/ingress-w-pod-anti-affinity.yaml b/content/docs/v2024.3.18/examples/ingress/pod-placement/ingress-w-pod-anti-affinity.yaml new file mode 100644 index 000000000..a5a84515d --- /dev/null +++ b/content/docs/v2024.3.18/examples/ingress/pod-placement/ingress-w-pod-anti-affinity.yaml @@ -0,0 +1,39 @@ +apiVersion: voyager.appscode.com/v1 +kind: Ingress +metadata: + name: ingress-w-pod-anti-affinity + namespace: demo + annotations: + ingress.appscode.com/type: NodePort + ingress.appscode.com/use-node-port: 'true' + ingress.appscode.com/replicas: '2' +spec: + rules: + - http: + paths: + - path: / + backend: + service: + name: rest + port: + number: 80 + - path: /web + backend: + service: + name: web + port: + number: 80 + affinity: + podAntiAffinity: + requiredDuringSchedulingIgnoredDuringExecution: + - labelSelector: + matchExpressions: + - key: origin + operator: In + values: + - voyager + - key: origin-name + operator: In + values: + - voyager-ingress-w-pod-anti-affinity + topologyKey: 'kubernetes.io/hostname' diff --git a/content/docs/v2024.3.18/examples/ingress/pod-placement/ingress-w-toleration.yaml b/content/docs/v2024.3.18/examples/ingress/pod-placement/ingress-w-toleration.yaml new file mode 100644 index 000000000..37097c853 --- /dev/null +++ b/content/docs/v2024.3.18/examples/ingress/pod-placement/ingress-w-toleration.yaml @@ -0,0 +1,30 @@ +apiVersion: voyager.appscode.com/v1 +kind: Ingress +metadata: + name: ingress-w-toleration + namespace: demo + annotations: + ingress.appscode.com/type: NodePort + ingress.appscode.com/use-node-port: 'true' + ingress.appscode.com/replicas: '2' +spec: + rules: + - http: + paths: + - path: / + backend: + service: + name: rest + port: + number: 80 + - path: /web + backend: + service: + name: web + port: + number: 80 + tolerations: + - key: IngressOnly + operator: Equal + value: 'true' + effect: NoSchedule diff --git a/content/docs/v2024.3.18/examples/ingress/types/hostport/deploy-servers.sh b/content/docs/v2024.3.18/examples/ingress/types/hostport/deploy-servers.sh new file mode 100755 index 000000000..e074a0b6d --- /dev/null +++ b/content/docs/v2024.3.18/examples/ingress/types/hostport/deploy-servers.sh @@ -0,0 +1,21 @@ +#!/bin/bash + +# Copyright The Voyager Authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +kubectl run nginx --image=nginx +kubectl expose deployment nginx --name=web --port=80 --target-port=80 + +kubectl run echoserver --image=gcr.io/google_containers/echoserver:1.4 +kubectl expose deployment echoserver --name=rest --port=80 --target-port=8080 diff --git a/content/docs/v2024.3.18/examples/ingress/types/hostport/haproxy.cfg b/content/docs/v2024.3.18/examples/ingress/types/hostport/haproxy.cfg new file mode 100644 index 000000000..2520a2546 --- /dev/null +++ b/content/docs/v2024.3.18/examples/ingress/types/hostport/haproxy.cfg @@ -0,0 +1,47 @@ +# HAProxy configuration generated by https://github.com/appscode/voyager +# DO NOT EDIT! +global + daemon + stats socket /tmp/haproxy + server-state-file global + server-state-base /var/state/haproxy/ + # log using a syslog socket + log /dev/log local0 info + log /dev/log local0 notice + tune.ssl.default-dh-param 2048 + ssl-default-bind-ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!3DES:!MD5:!PSK + hard-stop-after 30s +defaults + log global + # https://cbonte.github.io/haproxy-dconv/1.7/configuration.html#4.2-option%20abortonclose + # https://github.com/voyagermesh/voyager/pull/403 + option dontlognull + option http-server-close + # Timeout values + timeout client 50s + timeout client-fin 50s + timeout connect 5s + timeout server 50s + timeout tunnel 50s + # Configure error files + # default traffic mode is http + # mode is overwritten in case of tcp services + mode http +frontend http-0_0_0_0-80 + bind *:80 + mode http + option httplog + option forwardfor + acl is_proxy_https hdr(X-Forwarded-Proto) https + acl host_acl_web.example.com hdr(host) -i web.example.com + acl host_acl_web.example.com hdr(host) -i web.example.com:80 + acl url_acl_web.example.com__ path_beg / + use_backend web.default:80-xmavcn if host_acl_web.example.com url_acl_web.example.com__ + acl host_acl_..example.com hdr_end(host) -i .example.com + acl host_acl_..example.com hdr_end(host) -i .example.com:80 + acl url_acl_..example.com__ path_beg / + use_backend rest.default:80-juma3e if host_acl_..example.com url_acl_..example.com__ +backend web.default:80-xmavcn + server pod-nginx-d5dc44cf7-dq7p7 172.17.0.4:80 +backend rest.default:80-juma3e + server pod-echoserver-566fcc4fdb-v8xj5 172.17.0.5:8080 diff --git a/content/docs/v2024.3.18/examples/ingress/types/hostport/ing.yaml b/content/docs/v2024.3.18/examples/ingress/types/hostport/ing.yaml new file mode 100644 index 000000000..6ccb24e85 --- /dev/null +++ b/content/docs/v2024.3.18/examples/ingress/types/hostport/ing.yaml @@ -0,0 +1,27 @@ +apiVersion: voyager.appscode.com/v1 +kind: Ingress +metadata: + name: test-ingress + namespace: default + annotations: + ingress.appscode.com/type: HostPort +spec: + rules: + - host: 'web.example.com' + http: + paths: + - backend: + service: + name: web + port: + number: 80 + path: / + - host: '*.example.com' + http: + paths: + - backend: + service: + name: rest + port: + number: 80 + path: / diff --git a/content/docs/v2024.3.18/examples/ingress/types/internal/deploy-servers.sh b/content/docs/v2024.3.18/examples/ingress/types/internal/deploy-servers.sh new file mode 100755 index 000000000..e074a0b6d --- /dev/null +++ b/content/docs/v2024.3.18/examples/ingress/types/internal/deploy-servers.sh @@ -0,0 +1,21 @@ +#!/bin/bash + +# Copyright The Voyager Authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +kubectl run nginx --image=nginx +kubectl expose deployment nginx --name=web --port=80 --target-port=80 + +kubectl run echoserver --image=gcr.io/google_containers/echoserver:1.4 +kubectl expose deployment echoserver --name=rest --port=80 --target-port=8080 diff --git a/content/docs/v2024.3.18/examples/ingress/types/internal/haproxy.cfg b/content/docs/v2024.3.18/examples/ingress/types/internal/haproxy.cfg new file mode 100644 index 000000000..2520a2546 --- /dev/null +++ b/content/docs/v2024.3.18/examples/ingress/types/internal/haproxy.cfg @@ -0,0 +1,47 @@ +# HAProxy configuration generated by https://github.com/appscode/voyager +# DO NOT EDIT! +global + daemon + stats socket /tmp/haproxy + server-state-file global + server-state-base /var/state/haproxy/ + # log using a syslog socket + log /dev/log local0 info + log /dev/log local0 notice + tune.ssl.default-dh-param 2048 + ssl-default-bind-ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!3DES:!MD5:!PSK + hard-stop-after 30s +defaults + log global + # https://cbonte.github.io/haproxy-dconv/1.7/configuration.html#4.2-option%20abortonclose + # https://github.com/voyagermesh/voyager/pull/403 + option dontlognull + option http-server-close + # Timeout values + timeout client 50s + timeout client-fin 50s + timeout connect 5s + timeout server 50s + timeout tunnel 50s + # Configure error files + # default traffic mode is http + # mode is overwritten in case of tcp services + mode http +frontend http-0_0_0_0-80 + bind *:80 + mode http + option httplog + option forwardfor + acl is_proxy_https hdr(X-Forwarded-Proto) https + acl host_acl_web.example.com hdr(host) -i web.example.com + acl host_acl_web.example.com hdr(host) -i web.example.com:80 + acl url_acl_web.example.com__ path_beg / + use_backend web.default:80-xmavcn if host_acl_web.example.com url_acl_web.example.com__ + acl host_acl_..example.com hdr_end(host) -i .example.com + acl host_acl_..example.com hdr_end(host) -i .example.com:80 + acl url_acl_..example.com__ path_beg / + use_backend rest.default:80-juma3e if host_acl_..example.com url_acl_..example.com__ +backend web.default:80-xmavcn + server pod-nginx-d5dc44cf7-dq7p7 172.17.0.4:80 +backend rest.default:80-juma3e + server pod-echoserver-566fcc4fdb-v8xj5 172.17.0.5:8080 diff --git a/content/docs/v2024.3.18/examples/ingress/types/internal/ing.yaml b/content/docs/v2024.3.18/examples/ingress/types/internal/ing.yaml new file mode 100644 index 000000000..33775d8c8 --- /dev/null +++ b/content/docs/v2024.3.18/examples/ingress/types/internal/ing.yaml @@ -0,0 +1,27 @@ +apiVersion: voyager.appscode.com/v1 +kind: Ingress +metadata: + name: test-ingress + namespace: default + annotations: + ingress.appscode.com/type: Internal +spec: + rules: + - host: 'web.example.com' + http: + paths: + - backend: + service: + name: web + port: + number: 80 + path: / + - host: '*.example.com' + http: + paths: + - backend: + service: + name: rest + port: + number: 80 + path: / diff --git a/content/docs/v2024.3.18/examples/ingress/types/loadbalancer/deploy-servers.sh b/content/docs/v2024.3.18/examples/ingress/types/loadbalancer/deploy-servers.sh new file mode 100755 index 000000000..e074a0b6d --- /dev/null +++ b/content/docs/v2024.3.18/examples/ingress/types/loadbalancer/deploy-servers.sh @@ -0,0 +1,21 @@ +#!/bin/bash + +# Copyright The Voyager Authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +kubectl run nginx --image=nginx +kubectl expose deployment nginx --name=web --port=80 --target-port=80 + +kubectl run echoserver --image=gcr.io/google_containers/echoserver:1.4 +kubectl expose deployment echoserver --name=rest --port=80 --target-port=8080 diff --git a/content/docs/v2024.3.18/examples/ingress/types/loadbalancer/haproxy.cfg b/content/docs/v2024.3.18/examples/ingress/types/loadbalancer/haproxy.cfg new file mode 100644 index 000000000..2520a2546 --- /dev/null +++ b/content/docs/v2024.3.18/examples/ingress/types/loadbalancer/haproxy.cfg @@ -0,0 +1,47 @@ +# HAProxy configuration generated by https://github.com/appscode/voyager +# DO NOT EDIT! +global + daemon + stats socket /tmp/haproxy + server-state-file global + server-state-base /var/state/haproxy/ + # log using a syslog socket + log /dev/log local0 info + log /dev/log local0 notice + tune.ssl.default-dh-param 2048 + ssl-default-bind-ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!3DES:!MD5:!PSK + hard-stop-after 30s +defaults + log global + # https://cbonte.github.io/haproxy-dconv/1.7/configuration.html#4.2-option%20abortonclose + # https://github.com/voyagermesh/voyager/pull/403 + option dontlognull + option http-server-close + # Timeout values + timeout client 50s + timeout client-fin 50s + timeout connect 5s + timeout server 50s + timeout tunnel 50s + # Configure error files + # default traffic mode is http + # mode is overwritten in case of tcp services + mode http +frontend http-0_0_0_0-80 + bind *:80 + mode http + option httplog + option forwardfor + acl is_proxy_https hdr(X-Forwarded-Proto) https + acl host_acl_web.example.com hdr(host) -i web.example.com + acl host_acl_web.example.com hdr(host) -i web.example.com:80 + acl url_acl_web.example.com__ path_beg / + use_backend web.default:80-xmavcn if host_acl_web.example.com url_acl_web.example.com__ + acl host_acl_..example.com hdr_end(host) -i .example.com + acl host_acl_..example.com hdr_end(host) -i .example.com:80 + acl url_acl_..example.com__ path_beg / + use_backend rest.default:80-juma3e if host_acl_..example.com url_acl_..example.com__ +backend web.default:80-xmavcn + server pod-nginx-d5dc44cf7-dq7p7 172.17.0.4:80 +backend rest.default:80-juma3e + server pod-echoserver-566fcc4fdb-v8xj5 172.17.0.5:8080 diff --git a/content/docs/v2024.3.18/examples/ingress/types/loadbalancer/ing.yaml b/content/docs/v2024.3.18/examples/ingress/types/loadbalancer/ing.yaml new file mode 100644 index 000000000..9d140319c --- /dev/null +++ b/content/docs/v2024.3.18/examples/ingress/types/loadbalancer/ing.yaml @@ -0,0 +1,27 @@ +apiVersion: voyager.appscode.com/v1 +kind: Ingress +metadata: + name: test-ingress + namespace: default + annotations: + ingress.appscode.com/type: LoadBalancer +spec: + rules: + - host: 'web.example.com' + http: + paths: + - backend: + service: + name: web + port: + number: 80 + path: / + - host: '*.example.com' + http: + paths: + - backend: + service: + name: rest + port: + number: 80 + path: / diff --git a/content/docs/v2024.3.18/examples/ingress/types/nodeport/deploy-servers.sh b/content/docs/v2024.3.18/examples/ingress/types/nodeport/deploy-servers.sh new file mode 100755 index 000000000..e074a0b6d --- /dev/null +++ b/content/docs/v2024.3.18/examples/ingress/types/nodeport/deploy-servers.sh @@ -0,0 +1,21 @@ +#!/bin/bash + +# Copyright The Voyager Authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +kubectl run nginx --image=nginx +kubectl expose deployment nginx --name=web --port=80 --target-port=80 + +kubectl run echoserver --image=gcr.io/google_containers/echoserver:1.4 +kubectl expose deployment echoserver --name=rest --port=80 --target-port=8080 diff --git a/content/docs/v2024.3.18/examples/ingress/types/nodeport/haproxy.cfg b/content/docs/v2024.3.18/examples/ingress/types/nodeport/haproxy.cfg new file mode 100644 index 000000000..2520a2546 --- /dev/null +++ b/content/docs/v2024.3.18/examples/ingress/types/nodeport/haproxy.cfg @@ -0,0 +1,47 @@ +# HAProxy configuration generated by https://github.com/appscode/voyager +# DO NOT EDIT! +global + daemon + stats socket /tmp/haproxy + server-state-file global + server-state-base /var/state/haproxy/ + # log using a syslog socket + log /dev/log local0 info + log /dev/log local0 notice + tune.ssl.default-dh-param 2048 + ssl-default-bind-ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!3DES:!MD5:!PSK + hard-stop-after 30s +defaults + log global + # https://cbonte.github.io/haproxy-dconv/1.7/configuration.html#4.2-option%20abortonclose + # https://github.com/voyagermesh/voyager/pull/403 + option dontlognull + option http-server-close + # Timeout values + timeout client 50s + timeout client-fin 50s + timeout connect 5s + timeout server 50s + timeout tunnel 50s + # Configure error files + # default traffic mode is http + # mode is overwritten in case of tcp services + mode http +frontend http-0_0_0_0-80 + bind *:80 + mode http + option httplog + option forwardfor + acl is_proxy_https hdr(X-Forwarded-Proto) https + acl host_acl_web.example.com hdr(host) -i web.example.com + acl host_acl_web.example.com hdr(host) -i web.example.com:80 + acl url_acl_web.example.com__ path_beg / + use_backend web.default:80-xmavcn if host_acl_web.example.com url_acl_web.example.com__ + acl host_acl_..example.com hdr_end(host) -i .example.com + acl host_acl_..example.com hdr_end(host) -i .example.com:80 + acl url_acl_..example.com__ path_beg / + use_backend rest.default:80-juma3e if host_acl_..example.com url_acl_..example.com__ +backend web.default:80-xmavcn + server pod-nginx-d5dc44cf7-dq7p7 172.17.0.4:80 +backend rest.default:80-juma3e + server pod-echoserver-566fcc4fdb-v8xj5 172.17.0.5:8080 diff --git a/content/docs/v2024.3.18/examples/ingress/types/nodeport/ing.yaml b/content/docs/v2024.3.18/examples/ingress/types/nodeport/ing.yaml new file mode 100644 index 000000000..4fe57fecc --- /dev/null +++ b/content/docs/v2024.3.18/examples/ingress/types/nodeport/ing.yaml @@ -0,0 +1,28 @@ +apiVersion: voyager.appscode.com/v1 +kind: Ingress +metadata: + name: test-ingress + namespace: default + annotations: + ingress.appscode.com/type: NodePort + ingress.appscode.com/use-node-port: 'false' +spec: + rules: + - host: 'web.example.com' + http: + paths: + - backend: + service: + name: web + port: + number: 80 + path: / + - host: '*.example.com' + http: + paths: + - backend: + service: + name: rest + port: + number: 80 + path: / diff --git a/content/docs/v2024.3.18/examples/monitoring/builtin-prometheus/demo-1.yaml b/content/docs/v2024.3.18/examples/monitoring/builtin-prometheus/demo-1.yaml new file mode 100644 index 000000000..8803354f8 --- /dev/null +++ b/content/docs/v2024.3.18/examples/monitoring/builtin-prometheus/demo-1.yaml @@ -0,0 +1,43 @@ +apiVersion: v1 +kind: ConfigMap +metadata: + name: prometheus-server-conf + labels: + name: prometheus-server-conf + namespace: demo +data: + prometheus.yml: |- + global: + scrape_interval: 5s + evaluation_interval: 5s + scrape_configs: + - job_name: 'kubernetes-service-endpoints' + + kubernetes_sd_configs: + - role: endpoints + + relabel_configs: + - source_labels: [__meta_kubernetes_service_annotation_prometheus_io_scrape] + action: keep + regex: true + - source_labels: [__meta_kubernetes_service_annotation_prometheus_io_scheme] + action: replace + target_label: __scheme__ + regex: (https?) + - source_labels: [__meta_kubernetes_service_annotation_prometheus_io_path] + action: replace + target_label: __metrics_path__ + regex: (.+) + - source_labels: [__address__, __meta_kubernetes_service_annotation_prometheus_io_port] + action: replace + target_label: __address__ + regex: ([^:]+)(?::\d+)?;(\d+) + replacement: $1:$2 + - action: labelmap + regex: __meta_kubernetes_service_label_(.+) + - source_labels: [__meta_kubernetes_namespace] + action: replace + target_label: kubernetes_namespace + - source_labels: [__meta_kubernetes_service_name] + action: replace + target_label: kubernetes_name diff --git a/content/docs/v2024.3.18/examples/monitoring/builtin-prometheus/demo-2.yaml b/content/docs/v2024.3.18/examples/monitoring/builtin-prometheus/demo-2.yaml new file mode 100644 index 000000000..6e184d5f6 --- /dev/null +++ b/content/docs/v2024.3.18/examples/monitoring/builtin-prometheus/demo-2.yaml @@ -0,0 +1,90 @@ +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRole +metadata: + name: prometheus-server +rules: +- apiGroups: [""] + resources: + - nodes + - nodes/proxy + - services + - endpoints + - pods + verbs: ["get", "list", "watch"] +- apiGroups: + - extensions + resources: + - ingresses + verbs: ["get", "list", "watch"] +- nonResourceURLs: ["/metrics"] + verbs: ["get"] +--- +apiVersion: v1 +kind: ServiceAccount +metadata: + name: prometheus-server + namespace: demo +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRoleBinding +metadata: + name: prometheus-server +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: ClusterRole + name: prometheus-server +subjects: +- kind: ServiceAccount + name: prometheus-server + namespace: demo +--- +apiVersion: apps/v1 +kind: Deployment +metadata: + name: prometheus-server + namespace: demo +spec: + replicas: 1 + selector: + matchLabels: + app: prometheus-server + template: + metadata: + labels: + app: prometheus-server + spec: + serviceAccountName: prometheus-server + containers: + - name: prometheus + image: prom/prometheus:v2.1.0 + args: + - "--config.file=/etc/prometheus/prometheus.yml" + - "--storage.tsdb.path=/prometheus/" + ports: + - containerPort: 9090 + volumeMounts: + - name: prometheus-config-volume + mountPath: /etc/prometheus/ + - name: prometheus-storage-volume + mountPath: /prometheus/ + volumes: + - name: prometheus-config-volume + configMap: + defaultMode: 420 + name: prometheus-server-conf + - name: prometheus-storage-volume + emptyDir: {} +--- +apiVersion: v1 +kind: Service +metadata: + name: prometheus-service + namespace: demo +spec: + selector: + app: prometheus-server + type: NodePort + ports: + - port: 9090 + targetPort: 9090 + nodePort: 30901 diff --git a/content/docs/v2024.3.18/examples/monitoring/builtin-prometheus/ing.yaml b/content/docs/v2024.3.18/examples/monitoring/builtin-prometheus/ing.yaml new file mode 100644 index 000000000..d83742a24 --- /dev/null +++ b/content/docs/v2024.3.18/examples/monitoring/builtin-prometheus/ing.yaml @@ -0,0 +1,20 @@ +apiVersion: voyager.appscode.com/v1 +kind: Ingress +metadata: + name: stats-ing + namespace: demo + annotations: + ingress.appscode.com/type: 'NodePort' + ingress.appscode.com/stats: 'true' + ingress.appscode.com/monitoring-agent: 'prometheus.io/builtin' +spec: + rules: + - host: voyager.appscode.test + http: + paths: + - path: / + backend: + service: + name: web + port: + number: 80 diff --git a/content/docs/v2024.3.18/examples/monitoring/coreos-operator/demo-0.yaml b/content/docs/v2024.3.18/examples/monitoring/coreos-operator/demo-0.yaml new file mode 100644 index 000000000..30bd06025 --- /dev/null +++ b/content/docs/v2024.3.18/examples/monitoring/coreos-operator/demo-0.yaml @@ -0,0 +1,100 @@ +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRole +metadata: + name: prometheus-operator +rules: +- apiGroups: + - extensions + resources: + - thirdpartyresources + verbs: + - "*" +- apiGroups: + - apiextensions.k8s.io + resources: + - customresourcedefinitions + verbs: + - "*" +- apiGroups: + - monitoring.coreos.com + resources: + - alertmanagers + - prometheuses + - servicemonitors + verbs: + - "*" +- apiGroups: + - apps + resources: + - statefulsets + verbs: ["*"] +- apiGroups: [""] + resources: + - configmaps + - secrets + verbs: ["*"] +- apiGroups: [""] + resources: + - pods + verbs: ["list", "delete"] +- apiGroups: [""] + resources: + - services + - endpoints + verbs: ["get", "create", "update"] +- apiGroups: [""] + resources: + - nodes + verbs: ["list", "watch"] +- apiGroups: [""] + resources: + - namespaces + verbs: ["list"] +--- +apiVersion: v1 +kind: ServiceAccount +metadata: + name: prometheus-operator + namespace: demo +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRoleBinding +metadata: + name: prometheus-operator +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: ClusterRole + name: prometheus-operator +subjects: +- kind: ServiceAccount + name: prometheus-operator + namespace: demo +--- +apiVersion: apps/v1 +kind: Deployment +metadata: + name: prometheus-operator + namespace: demo + labels: + operator: prometheus +spec: + replicas: 1 + selector: + matchLabels: + operator: prometheus + template: + metadata: + labels: + operator: prometheus + spec: + serviceAccountName: prometheus-operator + containers: + - name: prometheus-operator + image: quay.io/coreos/prometheus-operator:v0.16.0 + resources: + requests: + cpu: 100m + memory: 50Mi + limits: + cpu: 200m + memory: 100Mi diff --git a/content/docs/v2024.3.18/examples/monitoring/coreos-operator/demo-1.yaml b/content/docs/v2024.3.18/examples/monitoring/coreos-operator/demo-1.yaml new file mode 100644 index 000000000..7f4b1d600 --- /dev/null +++ b/content/docs/v2024.3.18/examples/monitoring/coreos-operator/demo-1.yaml @@ -0,0 +1,68 @@ +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRole +metadata: + name: prometheus +rules: +- apiGroups: [""] + resources: + - nodes + - services + - endpoints + - pods + verbs: ["get", "list", "watch"] +- apiGroups: [""] + resources: + - configmaps + verbs: ["get"] +- nonResourceURLs: ["/metrics"] + verbs: ["get"] +--- +apiVersion: v1 +kind: ServiceAccount +metadata: + name: prometheus + namespace: demo +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRoleBinding +metadata: + name: prometheus +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: ClusterRole + name: prometheus +subjects: +- kind: ServiceAccount + name: prometheus + namespace: demo +--- +apiVersion: monitoring.coreos.com/v1 +kind: Prometheus +metadata: + name: prometheus + namespace: demo +spec: + serviceAccountName: prometheus + serviceMonitorSelector: + matchLabels: + app: voyager + version: v1.7.0 + resources: + requests: + memory: 400Mi +--- +apiVersion: v1 +kind: Service +metadata: + name: prometheus + namespace: demo +spec: + type: LoadBalancer + ports: + - name: web + nodePort: 30900 + port: 9090 + protocol: TCP + targetPort: web + selector: + prometheus: prometheus diff --git a/content/docs/v2024.3.18/examples/monitoring/coreos-operator/ing.yaml b/content/docs/v2024.3.18/examples/monitoring/coreos-operator/ing.yaml new file mode 100644 index 000000000..54fecfc83 --- /dev/null +++ b/content/docs/v2024.3.18/examples/monitoring/coreos-operator/ing.yaml @@ -0,0 +1,22 @@ +apiVersion: voyager.appscode.com/v1 +kind: Ingress +metadata: + name: stats-ing + namespace: demo + annotations: + ingress.appscode.com/type: 'NodePort' + ingress.appscode.com/stats: 'true' + ingress.appscode.com/monitoring-agent: 'prometheus.io/coreos-operator' + ingress.appscode.com/service-monitor-labels: '{"app": "voyager"}' + ingress.appscode.com/service-monitor-namespace: 'demo' +spec: + rules: + - host: voyager.appscode.test + http: + paths: + - path: / + backend: + service: + name: web + port: + number: 80 diff --git a/content/docs/v2024.3.18/examples/monitoring/metrics-collector.yaml b/content/docs/v2024.3.18/examples/monitoring/metrics-collector.yaml new file mode 100644 index 000000000..e4377de77 --- /dev/null +++ b/content/docs/v2024.3.18/examples/monitoring/metrics-collector.yaml @@ -0,0 +1,20 @@ +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRole +metadata: + name: appscode:system:metrics-collector +rules: +- nonResourceURLs: ["/metrics"] + verbs: ["get"] +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRoleBinding +metadata: + name: appscode:system:metrics-collector +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: ClusterRole + name: appscode:system:metrics-collector +subjects: +- apiGroup: rbac.authorization.k8s.io + kind: User + name: system:anonymous diff --git a/content/docs/v2024.3.18/examples/monitoring/profiler.yaml b/content/docs/v2024.3.18/examples/monitoring/profiler.yaml new file mode 100644 index 000000000..1e1a35030 --- /dev/null +++ b/content/docs/v2024.3.18/examples/monitoring/profiler.yaml @@ -0,0 +1,20 @@ +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRole +metadata: + name: appscode:system:profiler +rules: +- nonResourceURLs: ["/debug/pprof/", "/debug/pprof/*"] + verbs: ["get", "post"] +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRoleBinding +metadata: + name: appscode:system:profiler +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: ClusterRole + name: appscode:system:profiler +subjects: +- apiGroup: rbac.authorization.k8s.io + kind: User + name: system:anonymous diff --git a/content/docs/v2024.3.18/examples/monitoring/stats-ing.yaml b/content/docs/v2024.3.18/examples/monitoring/stats-ing.yaml new file mode 100644 index 000000000..aad8546dd --- /dev/null +++ b/content/docs/v2024.3.18/examples/monitoring/stats-ing.yaml @@ -0,0 +1,19 @@ +apiVersion: voyager.appscode.com/v1 +kind: Ingress +metadata: + name: stats-ing + namespace: demo + annotations: + ingress.appscode.com/type: 'NodePort' + ingress.appscode.com/stats: 'true' +spec: + rules: + - host: voyager.appscode.test + http: + paths: + - path: / + backend: + service: + name: web + port: + number: 80 diff --git a/content/docs/v2024.3.18/guides/_index.md b/content/docs/v2024.3.18/guides/_index.md new file mode 100644 index 000000000..2dba01d4e --- /dev/null +++ b/content/docs/v2024.3.18/guides/_index.md @@ -0,0 +1,15 @@ +--- +title: Guides | Voyager +menu: + docs_v2024.3.18: + identifier: guides + name: Guides + weight: 40 + pre: dropdown +menu_name: docs_v2024.3.18 +info: + cli: v0.0.15 + installer: v2024.3.18 + version: v2024.3.18 +--- + diff --git a/content/docs/v2024.3.18/guides/cert-manager/README.md b/content/docs/v2024.3.18/guides/cert-manager/README.md new file mode 100644 index 000000000..87f350607 --- /dev/null +++ b/content/docs/v2024.3.18/guides/cert-manager/README.md @@ -0,0 +1,41 @@ +--- +title: cert-manager | Voyager +menu: + docs_v2024.3.18: + identifier: readme-cert-manager + name: Readme + parent: cert-manager-guides + weight: -1 +product_name: voyager +menu_name: docs_v2024.3.18 +section_menu_id: guides +url: /docs/v2024.3.18/guides/cert-manager/ +aliases: +- /docs/v2024.3.18/guides/cert-manager/README/ +info: + cli: v0.0.15 + installer: v2024.3.18 + version: v2024.3.18 +--- + +# Guides + +Guides show you how to use [jetstack/cert-manager](https://github.com/jetstack/cert-manager) with Voyager to issue free TLS/SSL certificates from Let's Encrypt. + +## Features + +- Provision free TLS certificates (including wildcard certificates) from Let's Encrypt. +- Manage certificates declaratively using a Kubernetes Custom Resource Definition (CRD). +- Domain validation using ACME http-01 and dns-01 challenges. +- Support for many popular DNS providers. +- Auto Renew certificates. +- Use issued certificates with Ingress to secure communications. + +## Next Steps + +- [Issue Let's Encrypt certificate using HTTP-01 challenge](/docs/v2024.3.18/guides/cert-manager/http01_challenge/overview) +- DNS-01 challenge providers + - [Issue Let's Encrypt certificate using AWS Route53](/docs/v2024.3.18/guides/cert-manager/dns01_challenge/aws-route53) + - [Issue Let's Encrypt certificate using Azure DNS](/docs/v2024.3.18/guides/cert-manager/dns01_challenge/azure-dns) + - [Issue Let's Encrypt certificate using Google Cloud DNS](/docs/v2024.3.18/guides/cert-manager/dns01_challenge/google-cloud-dns) + - [Multiple Providers](/docs/v2024.3.18/guides/cert-manager/dns01_challenge/multiple-challenge-solver) diff --git a/content/docs/v2024.3.18/guides/cert-manager/_index.md b/content/docs/v2024.3.18/guides/cert-manager/_index.md new file mode 100644 index 000000000..81c5e4a7e --- /dev/null +++ b/content/docs/v2024.3.18/guides/cert-manager/_index.md @@ -0,0 +1,15 @@ +--- +title: cert-manager +menu: + docs_v2024.3.18: + identifier: cert-manager-guides + name: Cert Manager + parent: guides + weight: 200 +menu_name: docs_v2024.3.18 +info: + cli: v0.0.15 + installer: v2024.3.18 + version: v2024.3.18 +--- + diff --git a/content/docs/v2024.3.18/guides/cert-manager/dns01_challenge/_index.md b/content/docs/v2024.3.18/guides/cert-manager/dns01_challenge/_index.md new file mode 100644 index 000000000..59dc53749 --- /dev/null +++ b/content/docs/v2024.3.18/guides/cert-manager/dns01_challenge/_index.md @@ -0,0 +1,16 @@ +--- +title: DNS01 Challenge +description: DNS01 Challenge +menu: + docs_v2024.3.18: + identifier: dns01-cert-manager + parent: cert-manager-guides + name: DNS01 Challenge + weight: 30 +menu_name: docs_v2024.3.18 +info: + cli: v0.0.15 + installer: v2024.3.18 + version: v2024.3.18 +--- + diff --git a/content/docs/v2024.3.18/guides/cert-manager/dns01_challenge/aws-route53.md b/content/docs/v2024.3.18/guides/cert-manager/dns01_challenge/aws-route53.md new file mode 100644 index 000000000..6986feabd --- /dev/null +++ b/content/docs/v2024.3.18/guides/cert-manager/dns01_challenge/aws-route53.md @@ -0,0 +1,216 @@ +--- +title: Issue Let's Encrypt certificate using Amazon Route53 +description: Issue Let's Encrypt certificate using Amazon Route53 in Kubernetes +menu: + docs_v2024.3.18: + identifier: amazon-route53-cert-manager + name: Amazon Route53 + parent: dns01-cert-manager + weight: 15 +product_name: voyager +menu_name: docs_v2024.3.18 +section_menu_id: guides +info: + cli: v0.0.15 + installer: v2024.3.18 + version: v2024.3.18 +--- + +> New to Voyager? Please start [here](/docs/v2024.3.18/concepts/overview). + +# Issue Let's Encrypt certificate using Amazon Route53 + +This tutorial shows how to issue free SSL certificate from Let's Encrypt via DNS challenge for domains using Amazon Route53. + +This article has been tested with a GKE cluster. + +```bash +$ kubectl version --short +Client Version: v1.8.8 +Server Version: v1.8.8-gke.0 +``` + +## 1. Setup Issuer + +Go to IAM page and create a user + +![iam](/docs/v2024.3.18/images/cert-manager/route53/iam.png) + +![add-user](/docs/v2024.3.18/images/cert-manager/route53/add-user.png) + +![access-type](/docs/v2024.3.18/images/cert-manager/route53/access-type.png) + +Click on next and select `Attach existing policies directly` and click on `Create Policy`. This will take you to a new page. + +![create-policy](/docs/v2024.3.18/images/cert-manager/route53/create-policy.png) + +Now click on `json` and paste this and click `Review Policy` + +```json +{ + "Version": "2012-10-17", + "Statement": [ + { + "Effect": "Allow", + "Action": "route53:GetChange", + "Resource": "arn:aws:route53:::change/*" + }, + { + "Effect": "Allow", + "Action": "route53:ChangeResourceRecordSets", + "Resource": "arn:aws:route53:::hostedzone/*" + }, + { + "Effect": "Allow", + "Action": "route53:ListHostedZonesByName", + "Resource": "*" + } + ] +} +``` + +Name the policy and click `Create policy`. + +![review-policy](/docs/v2024.3.18/images/cert-manager/route53/review-policy.png) + +Now go back to previous add user page, hit the refresh button and attach this policy to this user: + +![attach-policy](/docs/v2024.3.18/images/cert-manager/route53/attach-policy.png) + +Click on next (tags are optional - you can ignore this) and finish the process. Download the `.csv` file. + +![success-user](/docs/v2024.3.18/images/cert-manager/route53/success-user.png) + +Create a secret with the `Secret Access Key` + +```bash +kubectl create secret generic route53-secret --from-literal=secret-access-key="skjdflk4598sf/dkfj490jdfg/dlfjk59lkj" +``` + +Copy `Access key ID` from this same page and `hostedZoneID` from the following page: + +![hosted-zone-id](/docs/v2024.3.18/images/cert-manager/route53/hosted-zone-id.png) + +And put them in [issuer.yaml](/docs/v2024.3.18/examples/cert-manager/route53/issuer.yaml) + +```yaml +apiVersion: cert-manager.io/v1 +kind: Issuer +metadata: + name: letsencrypt-staging-dns + namespace: default +spec: + acme: + server: https://acme-staging-v02.api.letsencrypt.org/directory + email: example@kite.com + # Name of a secret used to store the ACME account private key + privateKeySecretRef: + name: example-issuer-account-key + solvers: + - dns01: + route53: + accessKeyID: KIR2WO5YWT + region: us-east-1 + secretAccessKeySecretRef: + name: route53-secret + key: secret-access-key + hostedZoneID: J13B3AB +``` + +Then create this issuer by `kubectl apply -f issuer.yaml` + +## 2. Create Ingress + +We are going to use a nginx server as the backend. To deploy nginx server, run the following commands: + +```bash +kubectl run nginx --image=nginx +kubectl expose deployment nginx --name=web --port=80 --target-port=80 +``` + +Now create [ingress.yaml](/docs/v2024.3.18/examples/cert-manager/route53/ingress.yaml): + +```yaml +apiVersion: networking.k8s.io/v1 +kind: Ingress +metadata: + name: test-ingress-deploy-k8s-route53-dns + namespace: default + annotations: + kubernetes.io/ingress.class: voyager + certmanager.k8s.io/issuer: "letsencrypt-staging-dns" + certmanager.k8s.io/acme-challenge-type: dns01 +spec: + tls: + - hosts: + - kiteci-route53-dns.appscode.me + secretName: kiteci-route53-dns-tls + rules: + - host: kiteci-route53-dns.appscode.me + http: + paths: + - backend: + service: + name: web + port: + number: 80 + path: / + pathType: Prefix +``` + +Then take the `EXTERNAL-IP` from the corresponding service and add a A-record in AWS Route53: + +```bash +kubectl get svc +``` + +```bash +NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE +voyager-test-ingress-deploy-k8s-route53-dns LoadBalancer 10.7.248.189 35.225.111.106 443:30713/TCP,80:31137/TCP 21m +``` + +![a-record](/docs/v2024.3.18/images/cert-manager/route53/a-record.png) + +## 3. Create Certificate + +Then create this [certificate.yaml](/docs/v2024.3.18/examples/cert-manager/route53/certificate.yaml) + +```yaml +apiVersion: cert-manager.io/v1 +kind: Certificate +metadata: + name: kiteci-route53-dns + namespace: default +spec: + secretName: kiteci-route53-dns-tls + issuerRef: + name: letsencrypt-staging-dns + dnsNames: + - kiteci-route53-dns.appscode.me +``` + +List the certificates and describe that certificate and wait until you see `Certificate issued successfully` when you describe the certificate. + +```bash +kubectl get certificates.certmanager.k8s.io --all-namespaces + +default kiteci-route53-dns True kiteci-route53-dns-tls 1m +``` + +```bash +kubectl describe certificates.certmanager.k8s.io kiteci-route53-dns +``` + +```bash +... +Events: + Type Reason Age From Message + ---- ------ ---- ---- ------- + Normal Generated 6s cert-manager Generated new private key + Normal GenerateSelfSigned 6s cert-manager Generated temporary self signed certificate + Normal OrderCreated 6s cert-manager Created Order resource "kiteci-route53-dns-290497833" + Normal OrderComplete 5s cert-manager Order "kiteci-route53-dns-290497833" completed successfully + Normal CertIssued 5s cert-manager Certificate issued successfully +``` + +Then visit `kiteci-route53-dns.appscode.me` from browser and check the certificate that it was issued from let's encrypt. (For let's encrypt staging environment, you will see that the certificate was issued by `Fake LE Intermediate X1`.) diff --git a/content/docs/v2024.3.18/guides/cert-manager/dns01_challenge/azure-dns.md b/content/docs/v2024.3.18/guides/cert-manager/dns01_challenge/azure-dns.md new file mode 100644 index 000000000..e90638b1d --- /dev/null +++ b/content/docs/v2024.3.18/guides/cert-manager/dns01_challenge/azure-dns.md @@ -0,0 +1,182 @@ +--- +title: Issue Let's Encrypt certificate using Azure DNS +description: Issue Let's Encrypt certificate using Azure DNS in Kubernetes +menu: + docs_v2024.3.18: + identifier: azure-dns-cert-manager + name: Azure DNS + parent: dns01-cert-manager + weight: 15 +product_name: voyager +menu_name: docs_v2024.3.18 +section_menu_id: guides +info: + cli: v0.0.15 + installer: v2024.3.18 + version: v2024.3.18 +--- + +> New to Voyager? Please start [here](/docs/v2024.3.18/concepts/overview). + +# Issue Let's Encrypt certificate using Azure DNS + +This tutorial shows how to issue free SSL certificate from Let's Encrypt via DNS challenge for domains using Azure DNS service. + +This article has been tested with a GKE cluster. + +```bash +$ kubectl version --short +Client Version: v1.8.8 +Server Version: v1.8.8-gke.0 +``` + +## 1. Setup Issuer + +Go to your DNS Zone page: + +![a-record](/docs/v2024.3.18/images/cert-manager/azure/a-record.png) + +You'll need this `Subscription id` and `Resource group` later while creating issuer. + +Go to Azure Active Directory -> App registrations and click on `New Registration` + +![new-registration](/docs/v2024.3.18/images/cert-manager/azure/new-registration.png) +![new-registration2](/docs/v2024.3.18/images/cert-manager/azure/new-registration2.png) + +You'll need the `Application (client) ID` and `Directory (tenant) ID` later for creating issuer. + +![client-tenant](/docs/v2024.3.18/images/cert-manager/azure/client-tenant.png) + +Now, create a new client-secret. + +![client-secret](/docs/v2024.3.18/images/cert-manager/azure/client-secret.png) + +Copy the password for this client-secret and create a kubernetes secret: + +```bash +kubectl create secret generic azuredns-secret --from-literal=client-secret="sdfsdfTEser@k3casdfbsdfsdf_m[4" +``` + +Now go to Subscriptions page and click on the corresponding subscription for your dns zone: + +![subscriptions](/docs/v2024.3.18/images/cert-manager/azure/subscriptions.png) + +Click on `Access control (IAM)` and `Add` -> `Add role assignment`. +If you see this as `Add role assignment (disabled)` then have your portal administrator perform this step, otherwise ignore this. + +Your administrator needs to go to the same page and add you as `Owner` or `User Access Administrator` + +![user-access](/docs/v2024.3.18/images/cert-manager/azure/user-access.png) + +Now that you have access to this, go to Subscriptions -> Access control (IAM) -> Add and you should be able to `Add role assignment`. Add `DNS Zone Contributor` to `dns-challenge` (the app registration you created before) + +![dns-zone-contributor](/docs/v2024.3.18/images/cert-manager/azure/dns-zone-contributor.png) + +Now create this issuer by applying [issuer.yaml](/docs/v2024.3.18/examples/cert-manager/azure/issuer.yaml) + +```yaml +apiVersion: cert-manager.io/v1 +kind: Issuer +metadata: + name: letsencrypt-staging-dns + namespace: default +spec: + acme: + server: https://acme-staging-v02.api.letsencrypt.org/directory + email: example@kite.com + # Name of a secret used to store the ACME account private key + privateKeySecretRef: + name: example-issuer-account-key + solvers: + - dns01: + azureDNS: + # Service principal clientId (also called appId) + clientID: riu478u-486ij8-uiu487j-468rjg8 + # A secretKeyRef to a service principal ClientSecret (password) + clientSecretSecretRef: + name: azuredns-secret + key: client-secret + # Azure subscription Id + subscriptionID: 45ji8t4-rgi4859-g845jg-9jjf9945r + # Azure AD tenant Id + tenantID: 348585ej-4358fdg8-f4588fg-45889fg + # ResourceGroup name where dns zone is provisioned + resourceGroupName: dev + hostedZoneName: appscode.info +``` + +## 2. Create Ingress + +We are going to use a nginx server as the backend. To deploy nginx server, run the following commands: + +```bash +kubectl run nginx --image=nginx +kubectl expose deployment nginx --name=web --port=80 --target-port=80 +``` + +Now, Create [ingress.yaml](/docs/v2024.3.18/examples/cert-manager/azure/ingress.yaml) + +```yaml +apiVersion: networking.k8s.io/v1 +kind: Ingress +metadata: + name: test-ingress-deploy-k8s-azure-dns + namespace: default + annotations: + kubernetes.io/ingress.class: voyager + certmanager.k8s.io/issuer: "letsencrypt-staging-dns" + certmanager.k8s.io/acme-challenge-type: dns01 +spec: + tls: + - hosts: + - kiteci-azure-dns.appscode.info + secretName: kiteci-azure-dns-tls + rules: + - host: kiteci-azure-dns.appscode.info + http: + paths: + - backend: + service: + name: web + port: + number: 80 + path: / + pathType: Prefix +``` + +Then take the `EXTERNAL-IP` from the corresponding service and add a A-record in Azure DNS: + +```bash +kubectl get svc +``` + +```bash +NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE +voyager-test-ingress-deploy-k8s-azure-dns LoadBalancer 10.7.254.246 35.192.150.216 443:31233/TCP,80:32271/TCP 26h +``` + +## 3. Create Certificate + +Then create this [certificate.yaml](/docs/v2024.3.18/examples/cert-manager/azure/certificate.yaml) + +```yaml +apiVersion: cert-manager.io/v1 +kind: Certificate +metadata: + name: kiteci-azure-dns + namespace: default +spec: + secretName: kiteci-azure-dns-tls + issuerRef: + name: letsencrypt-staging-dns + dnsNames: + - kiteci-azure-dns.appscode.info +``` + +Now, List the certificates and describe that certificate and wait until you see `Certificate issued successfully` when you describe the certificate. + +```bash +kubectl get certificates.certmanager.k8s.io --all-namespaces +``` + +Then visit `kiteci-azure-dns.appscode.info` from browser and check the certificate that it was issued from let's encrypt. (For let's encrypt staging environment, you will see that the certificate was issued by `Fake LE Intermediate X1`.) diff --git a/content/docs/v2024.3.18/guides/cert-manager/dns01_challenge/google-cloud-dns.md b/content/docs/v2024.3.18/guides/cert-manager/dns01_challenge/google-cloud-dns.md new file mode 100644 index 000000000..a9f1ae085 --- /dev/null +++ b/content/docs/v2024.3.18/guides/cert-manager/dns01_challenge/google-cloud-dns.md @@ -0,0 +1,155 @@ +--- +title: Issue Let's Encrypt certificate using Google Cloud DNS +description: Issue Let's Encrypt certificate using Google Cloud DNS in Kubernetes +menu: + docs_v2024.3.18: + identifier: google-cloud-dns-cert-manager + name: Google Cloud DNS + parent: dns01-cert-manager + weight: 15 +product_name: voyager +menu_name: docs_v2024.3.18 +section_menu_id: guides +info: + cli: v0.0.15 + installer: v2024.3.18 + version: v2024.3.18 +--- + +> New to Voyager? Please start [here](/docs/v2024.3.18/concepts/overview). + +# Issue Let's Encrypt certificate using Google Cloud DNS + +This tutorial shows how to issue free SSL certificate from Let's Encrypt via DNS challenge for domains using Google Cloud DNS service. + +This article has been tested with a GKE cluster. + +```bash +$ kubectl version --short +Client Version: v1.8.8 +Server Version: v1.8.8-gke.0 +``` + +## 1. Setup Issuer/ClusterIssuer + +Now create a service account from your Google Cloud Console + +![svcac1](/docs/v2024.3.18/images/cert-manager/google_dns/svcac1.png) +![svcac2](/docs/v2024.3.18/images/cert-manager/google_dns/svcac2.png) +![svcac3](/docs/v2024.3.18/images/cert-manager/google_dns/svcac3.png) + +Then create a Kubernetes Secret with this Service Account: + +```bash +kubectl create secret generic clouddns-service-account --from-file=service-account.json= +``` + +Now create this issuer by applying [issuer.yaml](/docs/v2024.3.18/examples/cert-manager/google_cloud/issuer.yaml) + +```yaml +apiVersion: cert-manager.io/v1 +kind: Issuer +metadata: + name: letsencrypt-staging-dns + namespace: default +spec: + acme: + server: https://acme-staging-v02.api.letsencrypt.org/directory + email: example@kite.com + # Name of a secret used to store the ACME account private key + privateKeySecretRef: + name: example-issuer-account-key + solvers: + - dns01: + cloudDNS: + # A secretKeyRef to a google cloud json service account + serviceAccountSecretRef: + name: clouddns-service-account + key: service-account.json + # The project in which to update the DNS zone + project: test-cert +``` + +## 2. Create Ingress + +We are going to use a nginx server as the backend. To deploy nginx server, run the following commands: + +```bash +kubectl run nginx --image=nginx +kubectl expose deployment nginx --name=web --port=80 --target-port=80 +``` + +Now, Create [ingress.yaml](/docs/v2024.3.18/examples/cert-manager/google_cloud/ingress.yaml) + +```yaml +apiVersion: networking.k8s.io/v1 +kind: Ingress +metadata: + name: test-ingress-deploy-k8s-dns + namespace: default + annotations: + kubernetes.io/ingress.class: voyager + certmanager.k8s.io/issuer: "letsencrypt-staging-dns" + certmanager.k8s.io/acme-challenge-type: dns01 +spec: + tls: + - hosts: + - kiteci-dns.appscode.ninja + secretName: kiteci-dns-tls + rules: + - host: kiteci-dns.appscode.ninja + http: + paths: + - backend: + service: + name: web + port: + number: 80 + path: / + pathType: Prefix +``` + +Then take the `EXTERNAL-IP` from the corresponding service: + +```bash +kubectl get svc +``` + +```bash +NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE +voyager-test-ingress-deploy-k8s-route53-dns LoadBalancer 10.7.248.189 35.225.111.106 443:30713/TCP,80:31137/TCP 21m +``` + +Create an A-record for `kiteci-dns.appscode.ninja` mapped to `35.225.111.106` with Google DNS. + +Wait until you can see it resolved: + +```bash +dig +short kiteci-dns.appscode.ninja +``` + +## 3. Create Certificate + +Then create this [certificate.yaml](/docs/v2024.3.18/examples/cert-manager/google_cloud/certificate.yaml) + +```yaml +apiVersion: cert-manager.io/v1 +kind: Certificate +metadata: + name: kiteci-dns + namespace: default +spec: + secretName: kiteci-dns-tls + issuerRef: + name: letsencrypt-staging-dns + dnsNames: + - kiteci-dns.appscode.ninja +``` + +Now, List the certificates and describe that certificate and wait until you see `Certificate issued successfully` when you describe the certificate. + +```bash +kubectl get certificates.certmanager.k8s.io --all-namespaces +``` + +Then visit `kiteci-dns.appscode.ninja` from browser and check the certificate that it was issued from let's encrypt. (For let's encrypt staging environment, you will see that the certificate was issued by `Fake LE Intermediate X1`.) diff --git a/content/docs/v2024.3.18/guides/cert-manager/dns01_challenge/multiple-challenge-solver.md b/content/docs/v2024.3.18/guides/cert-manager/dns01_challenge/multiple-challenge-solver.md new file mode 100644 index 000000000..3160a5bb4 --- /dev/null +++ b/content/docs/v2024.3.18/guides/cert-manager/dns01_challenge/multiple-challenge-solver.md @@ -0,0 +1,85 @@ +--- +title: Multiple Solver Type +description: Multiple Solver Type +menu: + docs_v2024.3.18: + identifier: multiple-solver-type + name: Multiple Solver Type + parent: dns01-cert-manager + weight: 15 +product_name: voyager +menu_name: docs_v2024.3.18 +section_menu_id: guides +info: + cli: v0.0.15 + installer: v2024.3.18 + version: v2024.3.18 +--- + +> New to Voyager? Please start [here](/docs/v2024.3.18/concepts/overview). + +# Multiple Solver Type + +A number of different DNS providers are supported for the ACME issuer. Below is a listing of available providers, their .yaml configurations, along with additional Kubernetes and provider specific notes regarding their usage. + +- [ACME-DNS](https://docs.cert-manager.io/en/latest/tasks/issuers/setup-acme/dns01/acme-dns.html) +- [Akamai FastDNS](https://docs.cert-manager.io/en/latest/tasks/issuers/setup-acme/dns01/akamai.html) +- [AzureDNS](/docs/v2024.3.18/guides/cert-manager/dns01_challenge/azure-dns) +- [Cloudflare](https://docs.cert-manager.io/en/latest/tasks/issuers/setup-acme/dns01/cloudflare.html) +- [Google CloudDNS](/docs/v2024.3.18/guides/cert-manager/dns01_challenge/google-cloud-dns) +- [Amazon Route53](/docs/v2024.3.18/guides/cert-manager/dns01_challenge/aws-route53) +- [DigitalOcean](https://docs.cert-manager.io/en/latest/tasks/issuers/setup-acme/dns01/digitalocean.html) +- [RFC-2136](https://docs.cert-manager.io/en/latest/tasks/issuers/setup-acme/dns01/rfc2136.html) + +Additionally, you can create only one Issuer/ClusterIssuer for each of http01 or dns01 challenge or even for +multiple dns providers, like [this](/docs/v2024.3.18/examples/cert-manager/multiple.yaml): + +```yaml +apiVersion: cert-manager.io/v1 +kind: Issuer +metadata: + name: letsencrypt-staging-dns + namespace: default +spec: + acme: + server: https://acme-staging-v02.api.letsencrypt.org/directory + email: example@kite.com + # Name of a secret used to store the ACME account private key + privateKeySecretRef: + name: example-issuer-account-key + solvers: + - http01: + ingress: + name: test-ingress-deploy-k8s + - dns01: + route53: + accessKeyID: KIR2WO5YWT + region: us-east-1 + secretAccessKeySecretRef: + name: route53-secret + key: secret-access-key + hostedZoneID: J13B3AB + - dns01: + azureDNS: + # Service principal clientId (also called appId) + clientID: riu478u-486ij8-uiu487j-468rjg8 + # A secretKeyRef to a service principal ClientSecret (password) + clientSecretSecretRef: + name: azuredns-secret + key: client-secret + # Azure subscription Id + subscriptionID: 45ji8t4-rgi4859-g845jg-9jjf9945r + # Azure AD tenant Id + tenantID: 348585ej-4358fdg8-f4588fg-45889fg + # ResourceGroup name where dns zone is provisioned + resourceGroupName: dev + hostedZoneName: appscode.info + - dns01: + cloudDNS: + # A secretKeyRef to a google cloud json service account + serviceAccountSecretRef: + name: clouddns-service-account + key: service-account.json + # The project in which to update the DNS zone + project: test-cert +``` diff --git a/content/docs/v2024.3.18/guides/cert-manager/get-started.md b/content/docs/v2024.3.18/guides/cert-manager/get-started.md new file mode 100644 index 000000000..ce47f4ad7 --- /dev/null +++ b/content/docs/v2024.3.18/guides/cert-manager/get-started.md @@ -0,0 +1,143 @@ +--- +title: Get Started with cert-manager | Voyager +menu: + docs_v2024.3.18: + identifier: get-started-cert-manager + name: Get Started + parent: cert-manager-guides + weight: 10 +product_name: voyager +menu_name: docs_v2024.3.18 +section_menu_id: guides +info: + cli: v0.0.15 + installer: v2024.3.18 + version: v2024.3.18 +--- + +> New to Voyager? Please start [here](/docs/v2024.3.18/concepts/overview). + +## 1. Install Cert-Manager + +https://docs.cert-manager.io/en/latest/getting-started/install/kubernetes.html + +```bash +kubectl create namespace cert-manager +kubectl label namespace cert-manager certmanager.k8s.io/disable-validation=true +kubectl apply -f https://github.com/jetstack/cert-manager/releases/download/v1.4.1/cert-manager.yaml +``` + +## 2. Setup Issuer/ClusterIssuer + +### [Supported Issuer](https://docs.cert-manager.io/en/latest/tasks/issuers/index.html) + +These are the supported Certificate Issuers: + +1. [acme](https://docs.cert-manager.io/en/latest/tasks/issuers/setup-acme/index.html) +2. [ca](https://docs.cert-manager.io/en/latest/tasks/issuers/setup-ca.html) +3. [self signed](https://docs.cert-manager.io/en/latest/tasks/issuers/setup-selfsigned.html) +4. [vault](https://docs.cert-manager.io/en/latest/tasks/issuers/setup-vault.html) +5. [venafi](https://docs.cert-manager.io/en/latest/tasks/issuers/setup-venafi.html) + +Here we will show issuing certificates from Let's Encrypt using ACME protocol. For others, click on the link for the respective issuers. + +#### [acme](https://docs.cert-manager.io/en/latest/tasks/issuers/setup-acme/index.html) + +The ACME Issuer type represents a single Account registered with the ACME server. When you create a new ACME Issuer, cert-manager will generate a private key which is used to identify you with the ACME server. To set up a basic ACME issuer, you should create a new Issuer or ClusterIssuer resource. + +### [Issuer](https://docs.cert-manager.io/en/latest/reference/issuers.html) + +Issuers (and ClusterIssuers) represent a certificate authority from which signed x509 certificates can be obtained, such as Let’s Encrypt. You will need at least one Issuer or ClusterIssuer in order to begin issuing certificates within your cluster. + +Like this [issuer.yaml](/docs/v2024.3.18/examples/cert-manager/issuer.yaml) + +```yaml +apiVersion: cert-manager.io/v1 +kind: Issuer +metadata: + name: letsencrypt-prod + namespace: edge-services +spec: + acme: + # The ACME server URL + server: https://acme-v02.api.letsencrypt.org/directory + # Email address used for ACME registration + email: user@example.com + # Name of a secret used to store the ACME account private key + privateKeySecretRef: + name: letsencrypt-prod + # Enable HTTP01 validations + solvers: + - http01: + ingress: + class: voyager +``` + +The `spec.email` will be used to register for your let's encrypt account and `privateKeySecretRef` will contain the private key of this account. + +#### [ClusterIssuer](https://docs.cert-manager.io/en/latest/reference/clusterissuers.html) + +An Issuer is a namespaced resource, and it is not possible to issue certificates from an Issuer in a different namespace. If you want to create a single issuer than can be consumed in multiple namespaces, you should consider creating a ClusterIssuer resource. + +```yaml +apiVersion: cert-manager.io/v1 +kind: ClusterIssuer +metadata: + name: letsencrypt-prod +spec: + acme: + # The ACME server URL + server: https://acme-v02.api.letsencrypt.org/directory + # Email address used for ACME registration + email: user@example.com + # Name of a secret used to store the ACME account private key + privateKeySecretRef: + name: letsencrypt-prod + # Enable HTTP01 validations + solvers: + - http01: + ingress: + class: voyager +``` + +When referencing a Secret resource in ClusterIssuer resources (eg `spec.acme.solvers.dns01.cloudflare.apiKeySecretRef`) the Secret needs to be in the same namespace as the cert-manager controller pod. You can optionally override this by using the `--cluster-resource-namespace` argument to the controller. + +### Let's Encrypt Production vs Staging Environment + +For production use, use the Let's Encrypt Production API like above. For testing things out, you can use the Staging API as there is a rate limit for issuing certificates. Just replace the `spec.acme.server` like this + +```yaml +spec: + acme: + server: https://acme-staging-v02.api.letsencrypt.org/directory +``` + +In this doc, we used the staging api and as a result, you will see that the certificate was issued by `Fake LE Intermediate X1`. + +For more to know, visit [here](https://letsencrypt.org/docs/rate-limits/) + +### [Certificate Duration and Renewal Window](https://docs.cert-manager.io/en/latest/reference/certificates.html) + +The default duration for all certificates is 90 days and the default renewal windows is 30 days. This means that certificates are considered valid for 3 months and renewal will be attempted within 1 month of expiration. + +You can change that value using `duration` and `renewBefore` field in [certificate.yaml](/docs/v2024.3.18/examples/cert-manager/certificate.yaml), + +```yaml +apiVersion: cert-manager.io/v1 +kind: Certificate +metadata: + name: example + namespace: edge-services +spec: + secretName: example-tls + duration: 24h + renewBefore: 12h + dnsNames: + - foo.example.com + - bar.example.com + issuerRef: + name: my-internal-ca + kind: Issuer +``` + +That means, this certificate's validity period is 24 hours and it will begin trying to renew 12 hours before the certificate expiration. diff --git a/content/docs/v2024.3.18/guides/cert-manager/http01_challenge/_index.md b/content/docs/v2024.3.18/guides/cert-manager/http01_challenge/_index.md new file mode 100644 index 000000000..a09a6da17 --- /dev/null +++ b/content/docs/v2024.3.18/guides/cert-manager/http01_challenge/_index.md @@ -0,0 +1,16 @@ +--- +title: HTTP01 Challenge +description: HTTP01 Challenge +menu: + docs_v2024.3.18: + identifier: http01-cert-manager + parent: cert-manager-guides + name: HTTP01 Challenge + weight: 20 +menu_name: docs_v2024.3.18 +info: + cli: v0.0.15 + installer: v2024.3.18 + version: v2024.3.18 +--- + diff --git a/content/docs/v2024.3.18/guides/cert-manager/http01_challenge/overview.md b/content/docs/v2024.3.18/guides/cert-manager/http01_challenge/overview.md new file mode 100644 index 000000000..ec3d1127b --- /dev/null +++ b/content/docs/v2024.3.18/guides/cert-manager/http01_challenge/overview.md @@ -0,0 +1,131 @@ +--- +title: Issue Let's Encrypt certificate using HTTP-01 challenge with cert-manager +description: Issue Let's Encrypt certificate using HTTP-01 challenge with cert-manager in Kubernetes +menu: + docs_v2024.3.18: + identifier: overview-http-cert-manager + name: Overview + parent: http01-cert-manager + weight: 10 +product_name: voyager +menu_name: docs_v2024.3.18 +section_menu_id: guides +info: + cli: v0.0.15 + installer: v2024.3.18 + version: v2024.3.18 +--- + +> New to Voyager? Please start [here](/docs/v2024.3.18/concepts/overview). + +# Issue Let's Encrypt certificate using HTTP-01 challenge with cert-manager + +## 1. Setup Issuer/ClusterIssuer + +Setup a [ClusterIssuer (Or Issuer)](/docs/v2024.3.18/guides/cert-manager/get-started) for your Ingress by applying +this [clusterissuer.yaml](/docs/v2024.3.18/examples/cert-manager/http/clusterissuer.yaml) + + + +```yaml +apiVersion: cert-manager.io/v1 +kind: ClusterIssuer +metadata: + name: letsencrypt-staging +spec: + acme: + # You must replace this email address with your own. + # Let's Encrypt will use this to contact you about expiring + # certificates, and issues related to your account. + email: user@example.com + server: https://acme-staging-v02.api.letsencrypt.org/directory + privateKeySecretRef: + # Secret resource used to store the account's private key. + name: example-issuer-account-key + # Add a single challenge solver, HTTP01 using nginx + solvers: + - http01: + ingress: + name: test-ingress +``` + +Here `test-ingress` is the name of ingress you're going to create. + +**IngressClass or IngressName?** + +If the ingressClass field is specified, cert-manager will create new Ingress resources in order to route traffic to the ‘acmesolver’ pods, which are responsible for responding to ACME challenge validation requests. If the `ingress.name` field is specified, cert-manager will edit the named ingress resource in order to solve HTTP01 challenges. Since Voyager allocates a separate external IP for each Ingress resource, use `ingress.name` mechanism for Voyager. + +## 2. Create Ingress + +We are going to use a nginx server as the backend. To deploy nginx server, run the following commands: + +```bash +kubectl run nginx --image=nginx +kubectl expose deployment nginx --name=web --port=80 --target-port=80 +``` + +Now create your ingress by applying [ingress.yaml](/docs/v2024.3.18/examples/cert-manager/http/ingress.yaml) + +```yaml +apiVersion: networking.k8s.io/v1 +kind: Ingress +metadata: + name: test-ingress + namespace: default + annotations: + kubernetes.io/ingress.class: voyager + certmanager.k8s.io/cluster-issuer: "letsencrypt-staging" + certmanager.k8s.io/acme-challenge-type: http01 +spec: + tls: + - hosts: + - kiteci.appscode.ninja + secretName: quickstart-kiteci-tls + rules: + - http: + paths: + - backend: + service: + name: web + port: + number: 80 + path: / + pathType: Prefix +``` + +Then you'll see that a Certificate crd is created automatically for this ingress + +```bash +kubectl get certificates.certmanager.k8s.io --all-namespaces +``` + +But the certificate is still invalid. + +Now take the `EXTERNAL-IP` from the corresponding service: + +```bash +kubectl get svc +``` + +```bash +NAMESPACE NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE +default voyager-test-ingress LoadBalancer 10.7.249.7 35.239.22.162 80:31919/TCP,443:32751/TCP 44s +``` + +Create an A-record for `kiteci-dns.appscode.ninja` mapped to `35.239.22.162`. + +Wait till this is resolved: + +```bash +dig +short kiteci-dns.appscode.ninja +``` + +Describe that certificate and wait until you see `Certificate issued successfully` when you describe the certificate. + +```bash +kubectl describe certificates.certmanager.k8s.io quickstart-kiteci-tls +``` + +Let’s Encrypt does not support issuing wildcard certificates with HTTP-01 challenges. To issue wildcard certificates, you must use the DNS-01 challenge. + +The dnsNames field specifies a list of Subject Alternative Names to be associated with the certificate. If the commonName field is omitted, the first element in the list will be the common name. diff --git a/content/docs/v2024.3.18/guides/ingress/README.md b/content/docs/v2024.3.18/guides/ingress/README.md new file mode 100644 index 000000000..628f2c1ec --- /dev/null +++ b/content/docs/v2024.3.18/guides/ingress/README.md @@ -0,0 +1,64 @@ +--- +title: Ingress | Voyager +menu: + docs_v2024.3.18: + identifier: readme-ingress + name: Readme + parent: ingress-guides + weight: -1 +product_name: voyager +menu_name: docs_v2024.3.18 +section_menu_id: guides +url: /docs/v2024.3.18/guides/ingress/ +aliases: +- /docs/v2024.3.18/guides/ingress/README/ +info: + cli: v0.0.15 + installer: v2024.3.18 + version: v2024.3.18 +--- + +# Guides + +Guides show you how to use Voyager as a Kubernetes Ingress controller. + +- HTTP + - [Exposing Service via Ingress](/docs/v2024.3.18/guides/ingress/http/single-service) + - [Virtual Hosting](/docs/v2024.3.18/guides/ingress/http/virtual-hosting) + - [Supports Loadbalancer Source Range](/docs/v2024.3.18/guides/ingress/http/source-range) + - [URL and Request Header Re-writing](/docs/v2024.3.18/guides/ingress/http/rewrite-rules) + - [Enable CORS](/docs/v2024.3.18/guides/ingress/http/cors) + - [Custom HTTP Port](/docs/v2024.3.18/guides/ingress/http/custom-http-port) + - [Using External Service as Ingress Backend](/docs/v2024.3.18/guides/ingress/http/external-svc) + - [HSTS](/docs/v2024.3.18/guides/ingress/http/hsts) + - [Forward Traffic to StatefulSet Pods](/docs/v2024.3.18/guides/ingress/http/statefulset-pod) + - [Configure Sticky session to Backends](/docs/v2024.3.18/guides/ingress/http/sticky-session) + - [Blue Green Deployments using weighted Loadbalancing](/docs/v2024.3.18/guides/ingress/http/blue-green-deployment) +- TLS/SSL + - [TLS Termination](/docs/v2024.3.18/guides/ingress/tls/overview) + - [Multiple TLS Entries](/docs/v2024.3.18/guides/ingress/tls/multiple-tls) + - [Backend TLS](/docs/v2024.3.18/guides/ingress/tls/backend-tls) + - [Supports AWS certificate manager](/docs/v2024.3.18/guides/ingress/tls/aws-cert-manager) +- TCP + - [TCP LoadBalancing](/docs/v2024.3.18/guides/ingress/tcp/overview) + - [TCP SNI](/docs/v2024.3.18/guides/ingress/tcp/tcp-sni) +- Configuration + - [Customize generated HAProxy config via BackendRule](/docs/v2024.3.18/guides/ingress/configuration/backend-rule) (can be used for [http rewriting](https://www.haproxy.com/doc/aloha/7.0/haproxy/http_rewriting.html), add [health checks](https://www.haproxy.com/doc/aloha/7.0/haproxy/healthchecks.html), etc.) + - [Apply Frontend Rules](/docs/v2024.3.18/guides/ingress/configuration/frontend-rule) + - [Supported Annotations](/docs/v2024.3.18/guides/ingress/configuration/annotations) + - [Specify NodePort](/docs/v2024.3.18/guides/ingress/configuration/node-port) + - [Configure global options](/docs/v2024.3.18/guides/ingress/configuration/default-options) + - [Configure Custom Timeouts for HAProxy](/docs/v2024.3.18/guides/ingress/configuration/default-timeouts) + - [Configure Load balancing algorithm](/docs/v2024.3.18/guides/ingress/configuration/loadbalancing-algorithm) + - [Using Custom HAProxy Templates](/docs/v2024.3.18/guides/ingress/configuration/custom-templates) + - [Using Additional Configuration Files](/docs/v2024.3.18/guides/ingress/configuration/config-volumes) + - [Using HTTP/2 and gRPC](/docs/v2024.3.18/guides/ingress/configuration/http-2) +- Security + - [Configure Basic Auth for HTTP Backends](/docs/v2024.3.18/guides/ingress/security/basic-auth) + - [Configure External Auth for HTTP Backends](/docs/v2024.3.18/guides/ingress/security/oauth) + - [TLS Authentication](/docs/v2024.3.18/guides/ingress/security/tls-auth) +- Monitoring + - [Exposing HAProxy Stats](/docs/v2024.3.18/guides/ingress/monitoring/haproxy-stats) +- [Scaling Ingress](/docs/v2024.3.18/guides/ingress/scaling) +- [Placement of Ingress Pods](/docs/v2024.3.18/guides/ingress/pod-placement) +- [Avoid 503 with Graceful Server Shutdown](/docs/v2024.3.18/guides/ingress/graceful-reload) \ No newline at end of file diff --git a/content/docs/v2024.3.18/guides/ingress/_index.md b/content/docs/v2024.3.18/guides/ingress/_index.md new file mode 100644 index 000000000..4a2dc467f --- /dev/null +++ b/content/docs/v2024.3.18/guides/ingress/_index.md @@ -0,0 +1,15 @@ +--- +title: Ingress +menu: + docs_v2024.3.18: + identifier: ingress-guides + name: Ingress + parent: guides + weight: 100 +menu_name: docs_v2024.3.18 +info: + cli: v0.0.15 + installer: v2024.3.18 + version: v2024.3.18 +--- + diff --git a/content/docs/v2024.3.18/guides/ingress/configuration/_index.md b/content/docs/v2024.3.18/guides/ingress/configuration/_index.md new file mode 100644 index 000000000..e782f73cd --- /dev/null +++ b/content/docs/v2024.3.18/guides/ingress/configuration/_index.md @@ -0,0 +1,15 @@ +--- +title: Configuration +menu: + docs_v2024.3.18: + identifier: config-ingress + name: Configuration + parent: ingress-guides + weight: 25 +menu_name: docs_v2024.3.18 +info: + cli: v0.0.15 + installer: v2024.3.18 + version: v2024.3.18 +--- + diff --git a/content/docs/v2024.3.18/guides/ingress/configuration/accept-proxy.md b/content/docs/v2024.3.18/guides/ingress/configuration/accept-proxy.md new file mode 100644 index 000000000..36668eb13 --- /dev/null +++ b/content/docs/v2024.3.18/guides/ingress/configuration/accept-proxy.md @@ -0,0 +1,118 @@ +--- +title: Configure Ingress Accept Proxy +menu: + docs_v2024.3.18: + identifier: accept-proxy-configuration + name: Accept Proxy + parent: config-ingress + weight: 10 +product_name: voyager +menu_name: docs_v2024.3.18 +section_menu_id: guides +info: + cli: v0.0.15 + installer: v2024.3.18 + version: v2024.3.18 +--- + +> New to Voyager? Please start [here](/docs/v2024.3.18/concepts/overview). + +# Accept Proxy + +If set to `true`, enforces the use of the PROXY protocol over any connection accepted by HAProxy. +It will add the `accept-proxy` keyword on the `bind` line of the generated `haproxy.cfg`. + +## Ingress Example + +First create a test-server and expose it via service: + +```bash +$ kubectl run test-server --image=gcr.io/google_containers/echoserver:1.8 +deployment "test-server" created + +$ kubectl expose deployment test-server --type=LoadBalancer --port=80 --target-port=8080 +service "test-server" exposed +``` + +Then create the ingress: + +```yaml +$ kubectl apply -f test-ingress.yaml + +apiVersion: voyager.appscode.com/v1 +kind: Ingress +metadata: + name: test-ingress + namespace: default + annotations: + ingress.appscode.com/accept-proxy: "true" +spec: + rules: + - host: voyager.appscode.test + http: + paths: + - path: /foo + backend: + service: + name: test-server + port: + number: 80 +``` + +```bash +$ kubectl get pods,svc +NAME READY STATUS RESTARTS AGE +po/test-server-68ddc845cd-x7dtv 1/1 Running 0 23h +po/voyager-test-ingress-5b758664f6-mb4hs 1/1 Running 0 2m + +NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE +svc/kubernetes ClusterIP 10.96.0.1 443/TCP 2d +svc/test-server LoadBalancer 10.105.13.31 80:30390/TCP 1d +svc/voyager-test-ingress LoadBalancer 10.106.53.141 80:30966/TCP 2m +``` + +Generated haproxy.cfg: + +```ini +# HAProxy configuration generated by https://github.com/appscode/voyager +# DO NOT EDIT! +global + daemon + stats socket /tmp/haproxy + server-state-file global + server-state-base /var/state/haproxy/ + # log using a syslog socket + log /dev/log local0 info + log /dev/log local0 notice + tune.ssl.default-dh-param 2048 + ssl-default-bind-ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!3DES:!MD5:!PSK + hard-stop-after 30s +defaults + log global + # https://cbonte.github.io/haproxy-dconv/1.7/configuration.html#4.2-option%20abortonclose + # https://github.com/voyagermesh/voyager/pull/403 + option dontlognull + option http-server-close + # Timeout values + timeout client 50s + timeout client-fin 50s + timeout connect 5s + timeout server 50s + timeout tunnel 50s + # Configure error files + # default traffic mode is http + # mode is overwritten in case of tcp services + mode http +frontend http-0_0_0_0-80 + bind *:80 accept-proxy + mode http + option httplog + option forwardfor + acl is_proxy_https hdr(X-Forwarded-Proto) https + acl acl_voyager.appscode.test hdr(host) -i voyager.appscode.test + acl acl_voyager.appscode.test hdr(host) -i voyager.appscode.test:80 + acl acl_voyager.appscode.test:foo path_beg /foo + use_backend test-server.default:80 if acl_voyager.appscode.test acl_voyager.appscode.test:foo +backend test-server.default:80 + server pod-test-server-68ddc845cd-x7dtv 172.17.0.4:8080 +``` \ No newline at end of file diff --git a/content/docs/v2024.3.18/guides/ingress/configuration/agent-check.md b/content/docs/v2024.3.18/guides/ingress/configuration/agent-check.md new file mode 100644 index 000000000..656f8ab68 --- /dev/null +++ b/content/docs/v2024.3.18/guides/ingress/configuration/agent-check.md @@ -0,0 +1,116 @@ +--- +title: Agent Check | Kubernetes Ingress +menu: + docs_v2024.3.18: + identifier: agent-check + name: Agent Check + parent: config-ingress + weight: 20 +product_name: voyager +menu_name: docs_v2024.3.18 +section_menu_id: guides +info: + cli: v0.0.15 + installer: v2024.3.18 + version: v2024.3.18 +--- + +> New to Voyager? Please start [here](/docs/v2024.3.18/concepts/overview). + +# Agent Check + +[haproxy-agent-check](http://cbonte.github.io/haproxy-dconv/1.8/configuration.html#5.2-agent-check) can be enabled for a specific backend server by assigning the agent server port in `ingress.appscode.com/agent-port` annotations to the corresponding service. You can also add [agent-inter](http://cbonte.github.io/haproxy-dconv/1.8/configuration.html#agent-inter) in `ingress.appscode.com/agent-interval` annotations to the same service, which defaults to 2000ms if not mentioned. + +## Example + +First deploy and expose a test server: + +```yaml +$ kubectl apply -f test-server.yaml + +apiVersion: apps/v1 +kind: Deployment +metadata: + labels: + run: test-server + name: test-server + namespace: default +spec: + selector: + matchLabels: + run: test-server + template: + metadata: + labels: + run: test-server + spec: + containers: + - image: appscode/test-server:2.4 + name: test-server +--- +apiVersion: v1 +kind: Service +metadata: + labels: + run: test-server + name: test-server + namespace: default +spec: + ports: + - port: 8080 + targetPort: 8080 + name: web + - port: 5555 + targetPort: 5555 + name: agent + selector: + run: test-server +``` + +Here, port 8080 will serve client's request and port 5555 will be used for agent-check. + +Then deploy the ingress: + +```yaml +$ kubectl apply test-ingress.yaml + +apiVersion: voyager.appscode.com/v1 +kind: Ingress +metadata: + name: test-ingress + namespace: default +spec: + rules: + - http: + paths: + - path: /app + backend: + service: + name: test-server + port: + number: 8080 +``` + +Now we need to annotate the backend service to enable agent-check for that backend. + +```bash +$ kubectl annotate svc test-server ingress.appscode.com/agent-port="5555" +``` + +To change the default agent-interval value, annotate the same service with: +```bash +$ kubectl annotate svc test-server ingress.appscode.com/agent-interval="3s" +``` + +## Time Format + +These timeout values are generally expressed in milliseconds (unless explicitly stated +otherwise) but may be expressed in any other unit by suffixing the unit to the +numeric value. Supported units are : + +- us : microseconds. 1 microsecond = 1/1000000 second +- ms : milliseconds. 1 millisecond = 1/1000 second. This is the default. +- s : seconds. 1s = 1000ms +- m : minutes. 1m = 60s = 60000ms +- h : hours. 1h = 60m = 3600s = 3600000ms +- d : days. 1d = 24h = 1440m = 86400s = 86400000ms diff --git a/content/docs/v2024.3.18/guides/ingress/configuration/annotations.md b/content/docs/v2024.3.18/guides/ingress/configuration/annotations.md new file mode 100644 index 000000000..539556afe --- /dev/null +++ b/content/docs/v2024.3.18/guides/ingress/configuration/annotations.md @@ -0,0 +1,89 @@ +--- +title: Configure Ingress Annotations +menu: + docs_v2024.3.18: + identifier: annotations-configuration + name: Annotations + parent: config-ingress + weight: 1 +product_name: voyager +menu_name: docs_v2024.3.18 +section_menu_id: guides +info: + cli: v0.0.15 + installer: v2024.3.18 + version: v2024.3.18 +--- + +> New to Voyager? Please start [here](/docs/v2024.3.18/concepts/overview). + +# Configure ingress with annotations + +Below is the full list of supported annotations: + +| Keys | Value | Default | +|--------|-----------|----------| +| [ingress.appscode.com/type](/docs/v2024.3.18/concepts/README) | LoadBalancer, HostPort, NodePort, Internal | `LoadBalancer` | +| [ingress.appscode.com/api-schema](/docs/v2024.3.18/concepts/overview) | {APIGroup}/{APIVersion} | `voyager.appscode.com/v1` | +| [ingress.appscode.com/accept-proxy](/docs/v2024.3.18/guides/ingress/configuration/accept-proxy) | bool | `false` | +| [ingress.appscode.com/affinity](/docs/v2024.3.18/guides/ingress/http/sticky-session) | `cookie` | | +| [ingress.appscode.com/session-cookie-hash](/docs/v2024.3.18/guides/ingress/http/sticky-session) | string | | +| [ingress.appscode.com/session-cookie-name](/docs/v2024.3.18/guides/ingress/http/sticky-session) | string | `SERVERID` | +| [ingress.appscode.com/hsts](/docs/v2024.3.18/guides/ingress/http/hsts) | bool | `true` | +| [ingress.appscode.com/hsts-include-subdomains](/docs/v2024.3.18/guides/ingress/http/hsts) | bool | `false` | +| [ingress.appscode.com/hsts-max-age](/docs/v2024.3.18/guides/ingress/http/hsts) | string | `15768000` | +| [ingress.appscode.com/hsts-preload](/docs/v2024.3.18/guides/ingress/http/hsts) | bool | `false` | +| [ingress.appscode.com/use-node-port](/docs/v2024.3.18/concepts/ingress-types/nodeport) | bool | `false` | +| [ingress.appscode.com/enable-cors](/docs/v2024.3.18/guides/ingress/http/cors) | bool | `false` | +| [ingress.appscode.com/cors-allow-headers](/docs/v2024.3.18/guides/ingress/http/cors) | string | `DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Authorization` | +| [ingress.appscode.com/cors-allow-methods](/docs/v2024.3.18/guides/ingress/http/cors) | string | `GET,PUT,POST,DELETE,PATCH,OPTIONS` | +| [ingress.appscode.com/cors-allow-origin](/docs/v2024.3.18/guides/ingress/http/cors) | string | `*` | +| [ingress.appscode.com/default-option](/docs/v2024.3.18/guides/ingress/configuration/default-options) | map | `{"http-server-close": "true", "dontlognull": "true"}` | +| [ingress.appscode.com/default-timeout](/docs/v2024.3.18/guides/ingress/configuration/default-timeouts) | map | `{"connect": "5s", "server": "50s", "client": "50s", "client-fin": "50s", "tunnel": "50s"}` | +| [ingress.appscode.com/hard-stop-after](/docs/v2024.3.18/guides/ingress/configuration/hard-stop-after) | string | `30s` | +| [ingress.appscode.com/auth-type](/docs/v2024.3.18/guides/ingress/security/basic-auth) | `basic` | | +| [ingress.appscode.com/auth-realm](/docs/v2024.3.18/guides/ingress/security/basic-auth) | string | | +| [ingress.appscode.com/auth-secret](/docs/v2024.3.18/guides/ingress/security/basic-auth) | string | | +| [ingress.appscode.com/auth-tls-error-page](/docs/v2024.3.18/guides/ingress/security/tls-auth) | string | | +| [ingress.appscode.com/auth-tls-secret](/docs/v2024.3.18/guides/ingress/security/tls-auth) | string | | +| [ingress.appscode.com/auth-tls-verify-client](/docs/v2024.3.18/guides/ingress/security/tls-auth) | `required` or, `optional` | `required` | +| [ingress.appscode.com/backend-tls](/docs/v2024.3.18/guides/ingress/tls/backend-tls) | string | | +| [ingress.appscode.com/replicas](/docs/v2024.3.18/guides/ingress/scaling) | int | `1` | +| [ingress.appscode.com/backend-weight](/docs/v2024.3.18/guides/ingress/http/blue-green-deployment) | int | 1 | +| [ingress.appscode.com/whitelist-source-range](/docs/v2024.3.18/guides/ingress/configuration/whitelist) | string | | +| [ingress.appscode.com/max-connections](/docs/v2024.3.18/guides/ingress/configuration/max-connections) | int | | +| [ingress.appscode.com/ssl-redirect](/docs/v2024.3.18/guides/ingress/configuration/ssl-redirect) | bool | `true` | +| [ingress.appscode.com/force-ssl-redirect](/docs/v2024.3.18/guides/ingress/configuration/ssl-redirect) | bool | `false` | +| [ingress.appscode.com/limit-connection](/docs/v2024.3.18/guides/ingress/configuration/rate-limit) | int | | +| [ingress.appscode.com/limit-rpm](/docs/v2024.3.18/guides/ingress/configuration/rate-limit) | int | | +| [ingress.appscode.com/limit-rps](/docs/v2024.3.18/guides/ingress/configuration/rate-limit) | int | | +| [ingress.appscode.com/errorfiles](/docs/v2024.3.18/guides/ingress/configuration/error-files) | string | | +| [ingress.appscode.com/proxy-body-size](/docs/v2024.3.18/guides/ingress/configuration/body-size) | int | | +| [ingress.appscode.com/ssl-passthrough](/docs/v2024.3.18/guides/ingress/configuration/ssl-passthrough) | bool | `false` | +| [ingress.appscode.com/rewrite-target](/docs/v2024.3.18/guides/ingress/configuration/rewrite-target) | string | | +| [ingress.appscode.com/keep-source-ip](/docs/v2024.3.18/guides/ingress/configuration/keep-source-ip) | bool | `false` | +| [ingress.appscode.com/health-check-nodeport](/docs/v2024.3.18/guides/ingress/configuration/keep-source-ip) | int | | +| [ingress.appscode.com/load-balancer-ip](/docs/v2024.3.18/guides/ingress/configuration/loadbalancer-ip) | string | | +| [ingress.appscode.com/annotations-pod](/docs/v2024.3.18/guides/ingress/configuration/pod-annotations) | map | | +| [ingress.appscode.com/annotations-service](/docs/v2024.3.18/guides/ingress/configuration/service-annotations) | map | | +| [ingress.appscode.com/stats](/docs/v2024.3.18/guides/ingress/monitoring/haproxy-stats) | bool | `false` | +| [ingress.appscode.com/stats-port](/docs/v2024.3.18/guides/ingress/monitoring/haproxy-stats) | int | `56789` | +| [ingress.appscode.com/stats-secret-name](/docs/v2024.3.18/guides/ingress/monitoring/haproxy-stats) | string | | +| [ingress.appscode.com/monitoring-agent](/docs/v2024.3.18/guides/ingress/monitoring/using-coreos-prometheus-operator) | string | | +| [ingress.appscode.com/service-monitor-labels](/docs/v2024.3.18/guides/ingress/monitoring/using-coreos-prometheus-operator) | map | | +| [ingress.appscode.com/service-monitor-namespace](/docs/v2024.3.18/guides/ingress/monitoring/using-coreos-prometheus-operator) | string | | +| [ingress.appscode.com/service-monitor-endpoint-port](/docs/v2024.3.18/guides/ingress/monitoring/using-coreos-prometheus-operator) | integer | 56790 | +| [ingress.appscode.com/service-monitor-endpoint-scrape-interval](/docs/v2024.3.18/guides/ingress/monitoring/using-coreos-prometheus-operator) | string | | +| [ingress.appscode.com/use-dns-resolver](/docs/v2024.3.18/guides/ingress/http/external-svc#using-external-domain) | bool | `false` | +| [ingress.appscode.com/dns-resolver-nameservers](/docs/v2024.3.18/guides/ingress/http/external-svc#using-external-domain) | string | | +| [ingress.appscode.com/dns-resolver-check-health](/docs/v2024.3.18/guides/ingress/http/external-svc#using-external-domain) | bool | `true` | +| [ingress.appscode.com/dns-resolver-retries](/docs/v2024.3.18/guides/ingress/http/external-svc#using-external-domain) | int | `0` | +| [ingress.appscode.com/dns-resolver-timeout](/docs/v2024.3.18/guides/ingress/http/external-svc#using-external-domain) | map | | +| [ingress.appscode.com/dns-resolver-hold](/docs/v2024.3.18/guides/ingress/http/external-svc#using-external-domain) | map | | +| [ingress.appscode.com/workload-kind](/docs/v2024.3.18/guides/ingress/pod-placement#choosing-workload-kind) | string | `Deployment` | +| [ingress.appscode.com/node-selector](/docs/v2024.3.18/guides/ingress/pod-placement#using-node-selector) | map | | +| [ingress.appscode.com/tolerations](/docs/v2024.3.18/guides/ingress/pod-placement#using-taints-and-toleration) | array | | +| [ingress.appscode.com/check](/docs/v2024.3.18/guides/ingress/configuration/health-check) | bool | `false` | +| [ingress.appscode.com/check-port](/docs/v2024.3.18/guides/ingress/configuration/health-check) | int | | +| [ingress.appscode.com/agent-port](/docs/v2024.3.18/guides/ingress/configuration/agent-check) | int | | +| [ingress.appscode.com/agent-interval](/docs/v2024.3.18/guides/ingress/configuration/agent-check) | string | "2000ms" | diff --git a/content/docs/v2024.3.18/guides/ingress/configuration/backend-rule.md b/content/docs/v2024.3.18/guides/ingress/configuration/backend-rule.md new file mode 100644 index 000000000..741d8b796 --- /dev/null +++ b/content/docs/v2024.3.18/guides/ingress/configuration/backend-rule.md @@ -0,0 +1,48 @@ +--- +title: Backend Rules | Kubernetes Ingress +menu: + docs_v2024.3.18: + identifier: backend-config + name: Backend Rule + parent: config-ingress + weight: 100 +product_name: voyager +menu_name: docs_v2024.3.18 +section_menu_id: guides +info: + cli: v0.0.15 + installer: v2024.3.18 + version: v2024.3.18 +--- + +> New to Voyager? Please start [here](/docs/v2024.3.18/concepts/overview). + +# Backend Rules + +Voyager supports full spectrum of HAProxy backend rules via `backendRule`. Read [more](https://cbonte.github.io/haproxy-dconv/1.7/configuration.html) +about HAProxy backend rules. + +```yaml +apiVersion: voyager.appscode.com/v1 +kind: Ingress +metadata: + name: test-ingress + namespace: default +spec: + rules: + - host: appscode.example.com + http: + paths: + - path: '/test' + backend: + service: + name: test-service + port: + number: 80 + backendRules: + - 'acl add_url capture.req.uri -m beg /test-second' + - 'http-response set-header X-Added-From-Proxy added-from-proxy if add_url' +``` + +This example will apply an acl to the server backend, and a extra header from Loadbalancer if request uri +starts with `/test-second`. \ No newline at end of file diff --git a/content/docs/v2024.3.18/guides/ingress/configuration/bind-address.md b/content/docs/v2024.3.18/guides/ingress/configuration/bind-address.md new file mode 100644 index 000000000..134debaa3 --- /dev/null +++ b/content/docs/v2024.3.18/guides/ingress/configuration/bind-address.md @@ -0,0 +1,19 @@ +--- +title: Configure Ingress Bind Address +menu: + docs_v2024.3.18: + identifier: bind-address-configuration + name: Bind Address + parent: config-ingress + weight: 10 +product_name: voyager +menu_name: docs_v2024.3.18 +section_menu_id: guides +info: + cli: v0.0.15 + installer: v2024.3.18 + version: v2024.3.18 +--- + +> New to Voyager? Please start [here](/docs/v2024.3.18/concepts/overview). + diff --git a/content/docs/v2024.3.18/guides/ingress/configuration/body-size.md b/content/docs/v2024.3.18/guides/ingress/configuration/body-size.md new file mode 100644 index 000000000..51aae7951 --- /dev/null +++ b/content/docs/v2024.3.18/guides/ingress/configuration/body-size.md @@ -0,0 +1,186 @@ +--- +title: Configure Ingress Body Size +menu: + docs_v2024.3.18: + identifier: body-size-configuration + name: Body Size + parent: config-ingress + weight: 10 +product_name: voyager +menu_name: docs_v2024.3.18 +section_menu_id: guides +info: + cli: v0.0.15 + installer: v2024.3.18 + version: v2024.3.18 +--- + +> New to Voyager? Please start [here](/docs/v2024.3.18/concepts/overview). + +# Maximum Body Size + +You can configure maximum allowed request body size in bytes using `ingress.appscode.com/proxy-body-size` annotation. It will applied globally for all frontends. If request body size exceeds the specified size then it will through error with code `400`. + +## Ingress Example + +```yaml +apiVersion: voyager.appscode.com/v1 +kind: Ingress +metadata: + name: test-ingress + namespace: default + annotations: + ingress.appscode.com/proxy-body-size: "8" +spec: + rules: + - host: voyager.appscode.test + http: + paths: + - path: /foo + backend: + service: + name: test-server + port: + number: 80 +``` + +It will add following to all frontends in generated haproxy.cfg: + +```ini +http-request deny deny_status 400 if { req.body_size gt 8 } +``` + +Generated haproxy.cfg: + +```ini +# HAProxy configuration generated by https://github.com/appscode/voyager +# DO NOT EDIT! +global + daemon + stats socket /tmp/haproxy + server-state-file global + server-state-base /var/state/haproxy/ + # log using a syslog socket + log /dev/log local0 info + log /dev/log local0 notice + tune.ssl.default-dh-param 2048 + ssl-default-bind-ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!3DES:!MD5:!PSK + hard-stop-after 30s +defaults + log global + # https://cbonte.github.io/haproxy-dconv/1.7/configuration.html#4.2-option%20abortonclose + # https://github.com/voyagermesh/voyager/pull/403 + option dontlognull + option http-server-close + # Timeout values + timeout client 50s + timeout client-fin 50s + timeout connect 5s + timeout server 50s + timeout tunnel 50s + # Configure error files + # default traffic mode is http + # mode is overwritten in case of tcp services + mode http +frontend http-0_0_0_0-80 + bind *:80 + mode http + option httplog + option forwardfor + http-request deny deny_status 400 if { req.body_size gt 8 } + acl is_proxy_https hdr(X-Forwarded-Proto) https + acl acl_voyager.appscode.test hdr(host) -i voyager.appscode.test + acl acl_voyager.appscode.test hdr(host) -i voyager.appscode.test:80 + acl acl_voyager.appscode.test:foo path_beg /foo + use_backend test-server.default:80 if acl_voyager.appscode.test acl_voyager.appscode.test:foo +backend test-server.default:80 + server pod-test-server-68ddc845cd-x5c78 172.17.0.4:8080 +``` + +Get url for ingress service: + +```bash +$ minikube service --url voyager-test-ingress +http://192.168.99.100:31996 +``` + +Send request with content-length smaller than allowed size: + +```bash +$ curl -X POST -v -H 'Host: voyager.appscode.test' --data "hello" 192.168.99.100:31996/foo +Note: Unnecessary use of -X or --request, POST is already inferred. +* Trying 192.168.99.100... +* Connected to 192.168.99.100 (192.168.99.100) port 31996 (#0) +> POST /foo HTTP/1.1 +> Host: voyager.appscode.test +> User-Agent: curl/7.47.0 +> Accept: */* +> Content-Length: 5 +> Content-Type: application/x-www-form-urlencoded +> +* upload completely sent off: 5 out of 5 bytes +< HTTP/1.1 200 OK +< Date: Fri, 16 Feb 2018 12:15:45 GMT +< Content-Type: text/plain +< Transfer-Encoding: chunked +< Server: echoserver +< + + +Hostname: test-server-68ddc845cd-x5c78 + +Pod Information: + -no pod information available- + +Server values: + server_version=nginx: 1.13.3 - lua: 10008 + +Request Information: + client_address=172.17.0.5 + method=POST + real path=/foo + query= + request_version=1.1 + request_uri=http://voyager.appscode.test:8080/foo + +Request Headers: + accept=*/* + connection=close + content-length=5 + content-type=application/x-www-form-urlencoded + host=voyager.appscode.test + user-agent=curl/7.47.0 + x-forwarded-for=172.17.0.1 + +Request Body: +hello + +* Connection #0 to host 192.168.99.100 left intact +``` + +Send another request with content-length larger than allowed size: + +```bash +$ curl -X POST -v -H 'Host: voyager.appscode.test' --data "this is raw data" 192.168.99.100:31996/foo +Note: Unnecessary use of -X or --request, POST is already inferred. +* Trying 192.168.99.100... +* Connected to 192.168.99.100 (192.168.99.100) port 31996 (#0) +> POST /foo HTTP/1.1 +> Host: voyager.appscode.test +> User-Agent: curl/7.47.0 +> Accept: */* +> Content-Length: 16 +> Content-Type: application/x-www-form-urlencoded +> +* upload completely sent off: 16 out of 16 bytes +* HTTP 1.0, assume close after body +< HTTP/1.0 400 Bad request +< Cache-Control: no-cache +< Connection: close +< Content-Type: text/html +< +

400 Bad request

+Your browser sent an invalid request. + +* Closing connection 0 +``` \ No newline at end of file diff --git a/content/docs/v2024.3.18/guides/ingress/configuration/config-volumes.md b/content/docs/v2024.3.18/guides/ingress/configuration/config-volumes.md new file mode 100644 index 000000000..2550d06ae --- /dev/null +++ b/content/docs/v2024.3.18/guides/ingress/configuration/config-volumes.md @@ -0,0 +1,196 @@ +--- +title: Configuration Volumes +menu: + docs_v2024.3.18: + identifier: config-volumes + name: Configuration Volumes + parent: config-ingress + weight: 10 +product_name: voyager +menu_name: docs_v2024.3.18 +section_menu_id: guides +info: + cli: v0.0.15 + installer: v2024.3.18 + version: v2024.3.18 +--- + +> New to Voyager? Please start [here](/docs/v2024.3.18/concepts/overview). + +# Configuration Volumes + +You might want to provide additional files to the haproxy container and use them in the haproxy configuration. For example, specifying a CA file for verifying backend server. Using voyager, you can mount additional files from secrets/configmaps by configuring `spec.configVolumes`. + +Note that, when `spec.configVolumes` is used, operator will skip the validation for generated haproxy configuration. + +## Example: Backend Server Verification + +First create demo namespace for this example. + +``` +$ kubectl create namespace demo +namespace/demo created +``` + +### Deploy Test Server + +Deploy a TLS enabled test server. + +```yaml +apiVersion: apps/v1 +kind: Deployment +metadata: + labels: + run: test-server + name: test-server + namespace: demo +spec: + selector: + matchLabels: + run: test-server + template: + metadata: + labels: + run: test-server + spec: + containers: + - image: appscode/test-server:2.3 + name: test-server + args: + - --ca + imagePullPolicy: Always +--- +apiVersion: v1 +kind: Service +metadata: + labels: + run: test-server + name: test-server + namespace: demo + annotations: + ingress.appscode.com/backend-tls: ssl ca-file /tmp/ca/ca.pem +spec: + ports: + - port: 6443 + targetPort: 6443 + name: https + selector: + run: test-server +``` + +Here, using `ingress.appscode.com/backend-tls` annotation we have specified the path of CA file. HAProxy will use this CA file to verify the backend server. So, we need to provide the CA file inside the haproxy-container in path `/tmp/ca/ca.pem`. + +### Create Secret + +If you use your own backend server, you might already have the CA file. Run following commands to get the CA file of the test-server used in this example. + +``` +$ kubectl get pods -n demo -l run=test-server +NAME READY STATUS RESTARTS AGE +test-server-64855d98cc-7bfpr 1/1 Running 0 74s +$ kubectl exec -it -n demo test-server-64855d98cc-7bfpr cat cert.pem > ca.pem +``` + +Now, create a secret using the CA file. + +``` +$ kubectl create secret generic ca-secret -n demo --from-file=ca.pem +secret/ca-secret created +``` + +### Create Ingress + +Create the ingress and specify the secret in `spec.configVolumes`. + +```yaml +apiVersion: voyager.appscode.com/v1 +kind: Ingress +metadata: + name: test-ingress + namespace: demo +spec: + configVolumes: + - name: ca-vol + secret: + secretName: ca-secret + mountPath: /tmp/ca + rules: + - host: "ssl.appscode.test" + http: + paths: + - path: /apis + backend: + service: + name: test-server + port: + number: 6443 +``` + +### Generated haproxy.cfg + +```ini +# HAProxy configuration generated by https://github.com/appscode/voyager +# DO NOT EDIT! +global + daemon + stats socket /var/run/haproxy.sock level admin expose-fd listeners + server-state-file global + server-state-base /var/state/haproxy/ + # log using a syslog socket + log /dev/log local0 info + tune.ssl.default-dh-param 2048 + ssl-default-bind-ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!3DES:!MD5:!PSK + lua-load /etc/auth-request.lua + hard-stop-after 30s +defaults + log global + # https://cbonte.github.io/haproxy-dconv/1.7/configuration.html#4.2-option%20abortonclose + # https://github.com/voyagermesh/voyager/pull/403 + option dontlognull + option http-server-close + # Timeout values + timeout client 50s + timeout client-fin 50s + timeout connect 5s + timeout server 50s + timeout tunnel 50s + # Configure error files + # default traffic mode is http + # mode is overwritten in case of tcp services + mode http +frontend http-0_0_0_0-80 + bind *:80 + mode http + option httplog + option forwardfor + acl is_proxy_https hdr(X-Forwarded-Proto) https + acl is_proxy_https ssl_fc + http-request set-var(req.scheme) str(https) if is_proxy_https + http-request set-var(req.scheme) str(http) if ! is_proxy_https + acl acl_ssl.appscode.test hdr(host) -i ssl.appscode.test + acl acl_ssl.appscode.test hdr(host) -i ssl.appscode.test:80 + acl acl_ssl.appscode.test:apis path_beg /apis + use_backend test-server.demo:6443 if acl_ssl.appscode.test acl_ssl.appscode.test:apis +backend test-server.demo:6443 + server pod-test-server-64855d98cc-7bfpr 172.17.0.5:6443 ssl ca-file /tmp/ca/ca.pem +``` + +### Check Response + +```bash +$ minikube service --url voyager-test-ingress -n demo +http://192.168.99.100:32598 + +$ curl -H "Host: ssl.appscode.test" 'http://192.168.99.100:32598/apis' +{"type":"http","host":"ssl.appscode.test","serverPort":":6443","path":"/apis","method":"GET","headers":{"Accept":["*/*"],"Connection":["close"],"User-Agent":["curl/7.58.0"],"X-Forwarded-For":["172.17.0.1"]}} +``` + +Note that, in this example, `curl` connects with HAProxy in no-tls mode, but HAProxy connects with backend server in tls mode. + +### Cleanup + +``` +$ kubectl delete ns demo +namespace "demo" deleted +``` + diff --git a/content/docs/v2024.3.18/guides/ingress/configuration/custom-templates.md b/content/docs/v2024.3.18/guides/ingress/configuration/custom-templates.md new file mode 100644 index 000000000..511d8000a --- /dev/null +++ b/content/docs/v2024.3.18/guides/ingress/configuration/custom-templates.md @@ -0,0 +1,70 @@ +--- +title: Using Custom HAProxy Templates | Kubernetes Ingress +menu: + docs_v2024.3.18: + identifier: custom-tpl-config + name: Custom Templates + parent: config-ingress + weight: 10 +product_name: voyager +menu_name: docs_v2024.3.18 +section_menu_id: guides +info: + cli: v0.0.15 + installer: v2024.3.18 + version: v2024.3.18 +--- + +> New to Voyager? Please start [here](/docs/v2024.3.18/concepts/overview). + +# Using Custom HAProxy Templates + +Since 3.2.0, Voyager can use custom templates provided by users to render HAProxy configuration. Voyager comes with a set of GO [text/templates](https://golang.org/pkg/text/template/) found [here](https://github.com/voyagermesh/voyager/tree/{{< param "info.version" >}}/hack/docker/voyager/templates). These templates are mounted at `/srv/voyager/templates`. You can mount a ConfigMap with matching template names when installing Voyager operator to a different location and pass that to Voyager operator using `--custom-templates` flag. Voyager will [load](https://github.com/voyagermesh/voyager/blob/3ae30cd023ff8fa6301d2656bf9fbc5765529691/pkg/haproxy/template.go#L40) the built-in templates first and then load any custom templates if provided. As long as the custom templates have [same name](https://golang.org/pkg/text/template/#Template.ParseGlob) as the built-in templates, custom templates will be used render HAProxy config. You can overwrite any number of templates as you wish. Also note that templates are loaded when Voyager operator starts. So, if you want to reload custom templates, you need to restart the running Voyager operator pod (not HAProxy pods). + +In this example, we are going to overwrite the [defaults.cfg](https://raw.githubusercontent.com/voyagermesh/voyager/{{< param "info.version" >}}/hack/docker/voyager/templates/defaults.cfg) template which is used to render the [`defaults`](https://github.com/voyagermesh/voyager/blob/3ae30cd023ff8fa6301d2656bf9fbc5765529691/hack/docker/voyager/templates/haproxy.cfg#L6) section of HAProxy config. + +```bash +$ cat /tmp/defaults.cfg + +defaults + log global + + # my custom template + # https://cbonte.github.io/haproxy-dconv/1.7/configuration.html#4.2-option%20abortonclose + option dontlog-normal + log /dev/log local0 notice alert + option dontlognull + option http-server-close + + # Timeout values + timeout client 5s + timeout client-fin 5s + timeout connect 5s + timeout server 5s + timeout tunnel 5s + + # default traffic mode is http + # mode is overwritten in case of tcp services + mode http +``` + +Now create a ConfigMap using the defaults.cfg as key and the file content as the value. + +```bash +$ kubectl create configmap -n voyager voyager-templates --from-file=/tmp/defaults.cfg +``` + +Now, the ConfigMap `voyager-templates` has to be mounted in the voyager operator pod and `--custom-templates` flag has to be set. To do this, set `templates.cfgmap` value to Voyager operator chart. + +```bash +$ helm install voyager oci://ghcr.io/appscode-charts/voyager \ + --version {{< param "info.version" >}} \ + --namespace voyager --create-namespace \ + --set cloudProvider=minikube \ + --set templates.cfgmap=voyager-templates \ + --wait --burst-limit=10000 --debug +``` + +![installer](/docs/v2024.3.18/images/ingress/configuration/custom-template/installer.png) + +This will restart the Voyager operator pods. After start, Voyager pod will update any existing HAProxy configuration to the new templates. diff --git a/content/docs/v2024.3.18/guides/ingress/configuration/default-options.md b/content/docs/v2024.3.18/guides/ingress/configuration/default-options.md new file mode 100644 index 000000000..7f80d7555 --- /dev/null +++ b/content/docs/v2024.3.18/guides/ingress/configuration/default-options.md @@ -0,0 +1,104 @@ +--- +title: Default HAProxy Options | Kubernetes Ingress +menu: + docs_v2024.3.18: + identifier: options-config + name: HAProxy Options + parent: config-ingress + weight: 10 +product_name: voyager +menu_name: docs_v2024.3.18 +section_menu_id: guides +info: + cli: v0.0.15 + installer: v2024.3.18 + version: v2024.3.18 +--- + +> New to Voyager? Please start [here](/docs/v2024.3.18/concepts/overview). + +# Default HAProxy Options + +Voyager Supports all valid options for [defaults section of HAProxy config](https://cbonte.github.io/haproxy-dconv/1.7/configuration.html#4.2-option%20abortonclose). You can provide these options using a json encoded map in Ingress annotations like below: + +`ingress.appscode.com/default-option: '{"http-keep-alive": "true", "dontlognull": "true", "clitcpka": "false"}'` + +This will be appended in the defaults section of HAProxy as: + +```ini +option http-keep-alive +option dontlognull +no option clitcpka +``` + +If you don't set the annotation `{"http-server-close": "true", "dontlognull": "true"}` will be considered as default value + +Ingress Example: + +```yaml +apiVersion: voyager.appscode.com/v1 +kind: Ingress +metadata: + name: test-ingress + namespace: default + annotations: + ingress.appscode.com/default-option: '{"http-keep-alive": "true", "dontlognull": "true", "clitcpka": "false"}' +spec: + rules: + - host: voyager.appscode.test + http: + paths: + - path: /foo + backend: + service: + name: test-server + port: + number: 80 +``` + +Generated haproxy.cfg: + +```ini +# HAProxy configuration generated by https://github.com/appscode/voyager +# DO NOT EDIT! +global + daemon + stats socket /tmp/haproxy + server-state-file global + server-state-base /var/state/haproxy/ + # log using a syslog socket + log /dev/log local0 info + log /dev/log local0 notice + tune.ssl.default-dh-param 2048 + ssl-default-bind-ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!3DES:!MD5:!PSK + hard-stop-after 30s +defaults + log global + # https://cbonte.github.io/haproxy-dconv/1.7/configuration.html#4.2-option%20abortonclose + # https://github.com/voyagermesh/voyager/pull/403 + no option clitcpka + option dontlognull + option http-keep-alive + # Timeout values + timeout client 50s + timeout client-fin 50s + timeout connect 5s + timeout server 50s + timeout tunnel 50s + # Configure error files + # default traffic mode is http + # mode is overwritten in case of tcp services + mode http +frontend http-0_0_0_0-80 + bind *:80 + mode http + option httplog + option forwardfor + acl is_proxy_https hdr(X-Forwarded-Proto) https + acl acl_voyager.appscode.test hdr(host) -i voyager.appscode.test + acl acl_voyager.appscode.test hdr(host) -i voyager.appscode.test:80 + acl acl_voyager.appscode.test:foo path_beg /foo + use_backend test-server.default:80 if acl_voyager.appscode.test acl_voyager.appscode.test:foo +backend test-server.default:80 + server pod-test-server-68ddc845cd-x7dtv 172.17.0.4:8080 +``` diff --git a/content/docs/v2024.3.18/guides/ingress/configuration/default-timeouts.md b/content/docs/v2024.3.18/guides/ingress/configuration/default-timeouts.md new file mode 100644 index 000000000..921d7688f --- /dev/null +++ b/content/docs/v2024.3.18/guides/ingress/configuration/default-timeouts.md @@ -0,0 +1,119 @@ +--- +title: Customize Ingress Timeouts | Kubernetes Ingress +menu: + docs_v2024.3.18: + identifier: custom-timeouts-config + name: Configure Timeouts + parent: config-ingress + weight: 10 +product_name: voyager +menu_name: docs_v2024.3.18 +section_menu_id: guides +info: + cli: v0.0.15 + installer: v2024.3.18 + version: v2024.3.18 +--- + +> New to Voyager? Please start [here](/docs/v2024.3.18/concepts/overview). + +# Customize Timeouts + +Custom timeouts can be configured for HAProxy via annotations. Supports all valid timeout option +for defaults section of HAProxy. [Read More](https://cbonte.github.io/haproxy-dconv/1.7/configuration.html#4.2-timeout%20check) + +`ingress.appscode.com/default-timeout` expects a JSON encoded map of timeouts values. +Valid map keys are `connect`, `server`, `client`, `client-fin` and `tunnel`. + +Ingress Example: + +```yaml +apiVersion: voyager.appscode.com/v1 +kind: Ingress +metadata: + name: test-ingress + namespace: default + annotations: + ingress.appscode.com/default-timeout: '{"connect": "15s", "server": "20s"}' +spec: + rules: + - host: voyager.appscode.test + http: + paths: + - path: /foo + backend: + service: + name: test-server + port: + number: 80 +``` + +Generated haproxy.cfg: + +```bash +# HAProxy configuration generated by https://github.com/appscode/voyager +# DO NOT EDIT! +global + daemon + stats socket /tmp/haproxy + server-state-file global + server-state-base /var/state/haproxy/ + # log using a syslog socket + log /dev/log local0 info + log /dev/log local0 notice + tune.ssl.default-dh-param 2048 + ssl-default-bind-ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!3DES:!MD5:!PSK + hard-stop-after 30s +defaults + log global + # https://cbonte.github.io/haproxy-dconv/1.7/configuration.html#4.2-option%20abortonclose + # https://github.com/voyagermesh/voyager/pull/403 + option dontlognull + option http-server-close + # Timeout values + timeout client 50s + timeout client-fin 50s + timeout connect 15s + timeout server 20s + timeout tunnel 50s + # Configure error files + # default traffic mode is http + # mode is overwritten in case of tcp services + mode http +frontend http-0_0_0_0-80 + bind *:80 + mode http + option httplog + option forwardfor + acl is_proxy_https hdr(X-Forwarded-Proto) https + acl acl_voyager.appscode.test hdr(host) -i voyager.appscode.test + acl acl_voyager.appscode.test hdr(host) -i voyager.appscode.test:80 + acl acl_voyager.appscode.test:foo path_beg /foo + use_backend test-server.default:80 if acl_voyager.appscode.test acl_voyager.appscode.test:foo +backend test-server.default:80 + server pod-test-server-68ddc845cd-x7dtv 172.17.0.4:8080 +``` + +If any required timeouts is not provided timeouts will be populated with the following values. + +```ini + timeout connect 5s + timeout client 50s + timeout client-fin 50s + timeout server 50s + timeout tunnel 50s +``` + +## Time Format + +These timeout values are generally expressed in milliseconds (unless explicitly stated +otherwise) but may be expressed in any other unit by suffixing the unit to the +numeric value. It is important to consider this because it will not be repeated +for every keyword. Supported units are : + +- us : microseconds. 1 microsecond = 1/1000000 second +- ms : milliseconds. 1 millisecond = 1/1000 second. This is the default. +- s : seconds. 1s = 1000ms +- m : minutes. 1m = 60s = 60000ms +- h : hours. 1h = 60m = 3600s = 3600000ms +- d : days. 1d = 24h = 1440m = 86400s = 86400000ms diff --git a/content/docs/v2024.3.18/guides/ingress/configuration/error-files.md b/content/docs/v2024.3.18/guides/ingress/configuration/error-files.md new file mode 100644 index 000000000..7db57f33f --- /dev/null +++ b/content/docs/v2024.3.18/guides/ingress/configuration/error-files.md @@ -0,0 +1,45 @@ +--- +title: Configure Ingress Error Files +menu: + docs_v2024.3.18: + identifier: error-files-configuration + name: Error Files + parent: config-ingress + weight: 10 +product_name: voyager +menu_name: docs_v2024.3.18 +section_menu_id: guides +info: + cli: v0.0.15 + installer: v2024.3.18 + version: v2024.3.18 +--- + +> New to Voyager? Please start [here](/docs/v2024.3.18/concepts/overview). + +# Error Files + +Using voyager you can configure haproxy to return a file-content or, execute a command instead of returning generated errors. To achieve this you need to create a `configmap` specifying the file-content or, command for different status codes. Then you have to specify the `configmap` name using `ingress.appscode.com/errorfiles` annotation. Then contents of the configmap will be mounted in the haproxy pod in path `/srv/voyager/errorfiles`. + +Supported commands are: `errorfile, errorloc, errorloc302, errorloc303`. +And supported status codes are: `200, 400, 403, 405, 408, 429, 500, 502, 503, 504`. + +For example, lets consider a `configmap` with following key-value pairs: + +```ini +503.http : +408 : []byte("errorfile /dev/null") +500 : []byte("errorloc https://example.com/500.hlml") +``` + +It will generate following block in `defaults` section of haproxy.cfg: + +```ini +errorfile 503 /srv/voyager/errorfiles/503.http +errorfile 408 /dev/null +errorloc 500 https://example.com/500.hlml +``` + +Note that, when status code with `.http` suffix is used as key, the command will be `errorfile` and you just need to specify the file contents as value. + +To learn more about these command see [here](https://cbonte.github.io/haproxy-dconv/1.7/configuration.html#4.2-errorfile). diff --git a/content/docs/v2024.3.18/guides/ingress/configuration/frontend-rule.md b/content/docs/v2024.3.18/guides/ingress/configuration/frontend-rule.md new file mode 100644 index 000000000..f7e1fe4d8 --- /dev/null +++ b/content/docs/v2024.3.18/guides/ingress/configuration/frontend-rule.md @@ -0,0 +1,174 @@ +--- +title: Frontend Ingress Rules| Voyager +menu: + docs_v2024.3.18: + identifier: frontend-rule-config + name: Frontend Rule + parent: config-ingress + weight: 105 +product_name: voyager +menu_name: docs_v2024.3.18 +section_menu_id: guides +info: + cli: v0.0.15 + installer: v2024.3.18 + version: v2024.3.18 +--- + +> New to Voyager? Please start [here](/docs/v2024.3.18/concepts/overview). + +# Frontend Rules + +Frontend rules specify a set of rules that are applied to HAProxy frontend configuration. +The set of keywords are from here https://cbonte.github.io/haproxy-dconv/1.7/configuration.html#4.1. +Only frontend sections can be applied here. **It is up to user to provide valid sets of rules**. +This allows acls or other options in frontend sections in HAProxy config. Frontend rules will be mapped to `spec.rules` according to HAProxy port. + + +```yaml +apiVersion: voyager.appscode.com/v1 +kind: Ingress +metadata: + name: test-ingress + namespace: default +spec: + frontendRules: + - port: 80 # Applies all the rule in frontend section for port 80 + rules: + - timeout client 5s # Set the maximum inactivity time on the client side. + - port: 9898 # Applies all the rule in frontend section for port 9898 + rules: + - timeout client 500s # Set the maximum inactivity time on the client side. + rules: + - host: foo.bar.com + http: + paths: + - backend: + service: + name: s1 + port: + number: 80 + - host: bar.foo.com + http: + paths: + - backend: + service: + name: s2 + port: + number: 80 + - host: tcp.bar.com + tcp: + port: 9898 + backend: + service: + name: tcp-service + port: + number: 50077 +``` + +This example ingress shows how to configure frontend rules in ingress resource. All the frontend rules for port 80 +will be applied to all the backends which listens to port 80. + + +## Example: Whitelist IP Addresses using Frontend Rules +This example demonstrates How to whitelist some IP addresses for a backend using frontend rule. + +```yaml +apiVersion: voyager.appscode.com/v1 +kind: Ingress +metadata: + name: test-ingress + namespace: default + annotations: + ingress.appscode.com/keep-source-ip: "true" +spec: + frontendRules: + - port: 80 + rules: + # you can use IP addresses but also networks in the src acl. Both 192.168.20.0/24 and 192.168.10.3 work. + - acl network_allowed src 128.196.0.5 128.196.0.5 + - block if !network_allowed + - port: 9898 + rules: + - acl network_allowed src 20.30.40.50 8.9.9.0/27 + - tcp-request connection reject if !network_allowed + rules: + - host: foo.bar.com + http: + paths: + - backend: + service: + name: s1 + port: + number: 80 + - host: tcp.bar.com + tcp: + port: 9898 + backend: + service: + name: tcp-service + port: + number: 50077 +``` + +## Example: ACL from file + +This example demonstrates how to use additional files with frontend rules. First create a configmap containing whitelisted IPs: + +```yaml +apiVersion: v1 +kind: ConfigMap +metadata: + name: whitelist-config + namespace: default +data: + whitelist.lst: 192.168.1.1/32 192.168.2.1/32 192.168.0.1/24 +``` + +Then mount this configmap using `spec.configVolumes` and specify the file path using frontend rules. + +```yaml +apiVersion: voyager.appscode.com/v1 +kind: Ingress +metadata: + name: test-ingress + namespace: default + annotations: + ingress.appscode.com/keep-source-ip: "true" +spec: + configVolumes: + - name: whitelist-vol + configMap: + name: whitelist-config + mountPath: /etc/haproxy + frontendRules: + - port: 80 + rules: + - acl network_allowed src -f /etc/haproxy/whitelist.lst + - block if !network_allowed + rules: + - host: foo.bar.com + http: + paths: + - backend: + service: + name: s1 + port: + number: 80 +``` + +See [here](/docs/v2024.3.18/guides/ingress/configuration/config-volumes) for complete example of `configVolumes`. + +## FAQ + +### Why does not IP whitelisting work in LoadBalancer type Ingress in AWS? + +From [HAProxy official documentation](https://cbonte.github.io/haproxy-dconv/1.7/configuration.html#5.1-accept-proxy): + + ``` +The PROXY protocol dictates the layer 3/4 addresses of the incoming connection +to be used everywhere an address is used, with the only exception of +"tcp-request connection" rules which will only see the real connection address. +``` + +The issue is that `keep-source-ip: true` annotation will enable `accept-proxy` option in HAProxy. But HAProxy does not use the IP received via PROXY protocol with `tcp-request connection reject`. Instead HAProxy uses the real IP it detected (which is the IP address of ELB in this case). This is actually an important security feature. Otherwise, any one can open a TCP connection and spoof their IP using the PROXY protocol header and by pass the whitelist. This works with HTTP on the backend rules, because in HTTP mode, HAProxy checks the header and by using `accept-proxy`, we have told HAProxy to trust the header in PROXY protocol. So, for TCP connections that are behind ELB, you need to reject connection at ELB layer using `spec.loadBalancerSourceRanges` in Ingress. If you were running a bare-metal cluster, where traffic directly hits HAProxy, `tcp-request connection reject` will behave as expected. diff --git a/content/docs/v2024.3.18/guides/ingress/configuration/hard-stop-after.md b/content/docs/v2024.3.18/guides/ingress/configuration/hard-stop-after.md new file mode 100644 index 000000000..db8870851 --- /dev/null +++ b/content/docs/v2024.3.18/guides/ingress/configuration/hard-stop-after.md @@ -0,0 +1,106 @@ +--- +title: Hard Stop After | Kubernetes Ingress +menu: + docs_v2024.3.18: + identifier: hard-stop-after + name: Hard Stop After + parent: config-ingress + weight: 10 +product_name: voyager +menu_name: docs_v2024.3.18 +section_menu_id: guides +info: + cli: v0.0.15 + installer: v2024.3.18 + version: v2024.3.18 +--- + +> New to Voyager? Please start [here](/docs/v2024.3.18/concepts/overview). + +# Hard Stop After + +[ingress.appscode.com/hard-stop-after] annotation defines the maximum duration an old haproxy configuration process may exist after configuration reload (e.g. any change in your ingress or backend service or deployment that invokes haproxy configuration change). Note that, this old configuration won't accept any new requests. It only holds importance if there are existing connections that haven't finished serving. If not mentioned, it will have 30s as default value. [Read More](https://cbonte.github.io/haproxy-dconv/1.9/configuration.html#hard-stop-after) + +Note that, if you change your backend pod's `terminationGracePeriodSeconds` (default value 30s) to allow graceful shutdown and finish serving current requests for more than 30s, then you will have to change this value accordingly (to allow remaining connections to route via haproxy process). + +Ingress Example: + +```yaml +apiVersion: voyager.appscode.com/v1 +kind: Ingress +metadata: + name: test-ingress + namespace: default + annotations: + ingress.appscode.com/hard-stop-after: 60s +spec: + rules: + - host: voyager.appscode.test + http: + paths: + - path: /foo + backend: + service: + name: test-server + port: + number: 80 +``` + +Generated haproxy.cfg: + +```bash +# HAProxy configuration generated by https://github.com/appscode/voyager +# DO NOT EDIT! +global + daemon + stats socket /tmp/haproxy + server-state-file global + server-state-base /var/state/haproxy/ + # log using a syslog socket + log /dev/log local0 info + log /dev/log local0 notice + tune.ssl.default-dh-param 2048 + ssl-default-bind-ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!3DES:!MD5:!PSK + hard-stop-after 60s +defaults + log global + # https://cbonte.github.io/haproxy-dconv/1.7/configuration.html#4.2-option%20abortonclose + # https://github.com/voyagermesh/voyager/pull/403 + option dontlognull + option http-server-close + # Timeout values + timeout client 50s + timeout client-fin 50s + timeout connect 5s + timeout server 50s + timeout tunnel 50s + # Configure error files + # default traffic mode is http + # mode is overwritten in case of tcp services + mode http +frontend http-0_0_0_0-80 + bind *:80 + mode http + option httplog + option forwardfor + acl is_proxy_https hdr(X-Forwarded-Proto) https + acl acl_voyager.appscode.test hdr(host) -i voyager.appscode.test + acl acl_voyager.appscode.test hdr(host) -i voyager.appscode.test:80 + acl acl_voyager.appscode.test:foo path_beg /foo + use_backend test-server.default:80 if acl_voyager.appscode.test acl_voyager.appscode.test:foo +backend test-server.default:80 + server pod-test-server-68ddc845cd-x7dtv 172.17.0.4:8080 +``` + +## Time Format + +These timeout values are generally expressed in milliseconds (unless explicitly stated +otherwise) but may be expressed in any other unit by suffixing the unit to the +numeric value. Supported units are : + +- us : microseconds. 1 microsecond = 1/1000000 second +- ms : milliseconds. 1 millisecond = 1/1000 second. This is the default. +- s : seconds. 1s = 1000ms +- m : minutes. 1m = 60s = 60000ms +- h : hours. 1h = 60m = 3600s = 3600000ms +- d : days. 1d = 24h = 1440m = 86400s = 86400000ms diff --git a/content/docs/v2024.3.18/guides/ingress/configuration/health-check.md b/content/docs/v2024.3.18/guides/ingress/configuration/health-check.md new file mode 100644 index 000000000..846a0d60f --- /dev/null +++ b/content/docs/v2024.3.18/guides/ingress/configuration/health-check.md @@ -0,0 +1,123 @@ +--- +title: Backend Health Check | Kubernetes Ingress +menu: + docs_v2024.3.18: + identifier: health-check + name: Backend Health Check + parent: config-ingress + weight: 100 +product_name: voyager +menu_name: docs_v2024.3.18 +section_menu_id: guides +info: + cli: v0.0.15 + installer: v2024.3.18 + version: v2024.3.18 +--- + +> New to Voyager? Please start [here](/docs/v2024.3.18/concepts/overview). + +# Server Health Check + +You can enable [haproxy-health-checks](https://www.haproxy.com/documentation/aloha/7-0/traffic-management/lb-layer7/health-checks/) for a specific backend server by applying `ingress.appscode.com/check` and `ingress.appscode.com/check-port` annotations to the corresponding service. You can also configure health-check behavior using backend rules. + +## Example + +First deploy and expose a test server: + +```yaml +$ kubectl apply -f test-server.yaml + +apiVersion: apps/v1 +kind: Deployment +metadata: + labels: + run: test-server + name: test-server + namespace: default +spec: + selector: + matchLabels: + run: test-server + template: + metadata: + labels: + run: test-server + spec: + containers: + - image: appscode/test-server:2.2 + name: test-server +--- +apiVersion: v1 +kind: Service +metadata: + labels: + run: test-server + name: test-server + namespace: default +spec: + ports: + - port: 8080 + targetPort: 8080 + name: web + - port: 9090 + targetPort: 9090 + name: health + selector: + run: test-server +``` + +Here, port 8080 will serve client's request and port 9090 will be used for health checks. + +Then deploy the ingress: + +```yaml +$ kubectl apply test-ingress.yaml + +apiVersion: voyager.appscode.com/v1 +kind: Ingress +metadata: + name: test-ingress + namespace: default +spec: + rules: + - http: + paths: + - path: /app + backend: + service: + name: test-server + port: + number: 8080 +``` + +Now we need to annotate the backend service to enable health check for that backend. + +```bash +$ kubectl annotate svc test-server ingress.appscode.com/check="true" +$ kubectl annotate svc test-server ingress.appscode.com/check-port="9090" +``` + +You can also specify the health-check behaviour using backend rules. For example: + +```yaml +apiVersion: voyager.appscode.com/v1 +kind: Ingress +metadata: + name: test-ingress + namespace: default +spec: + rules: + - http: + paths: + - path: /app + backend: + service: + name: test-server + port: + number: 8080 + backendRules: + - 'option httpchk GET /testpath/ok' + - 'http-check expect rstring (testpath/ok)' +``` + diff --git a/content/docs/v2024.3.18/guides/ingress/configuration/http-2.md b/content/docs/v2024.3.18/guides/ingress/configuration/http-2.md new file mode 100644 index 000000000..90b64763f --- /dev/null +++ b/content/docs/v2024.3.18/guides/ingress/configuration/http-2.md @@ -0,0 +1,387 @@ +--- +title: Configure HTTP/2 and GRPC | Kubernetes Ingress +menu: + docs_v2024.3.18: + identifier: enable-http-2 + name: Configure HTTP/2 and GRPC + parent: config-ingress + weight: 10 +product_name: voyager +menu_name: docs_v2024.3.18 +section_menu_id: guides +info: + cli: v0.0.15 + installer: v2024.3.18 + version: v2024.3.18 +--- + +> New to Voyager? Please start [here](/docs/v2024.3.18/concepts/overview). + +# Configure HTTP/2 and GRPC + +You can configure HTTP/2 by configuring `proto` or, `alpn` under `rules.http` section (for frontend) or, `backend` section (for specific backend). If you want to use only `HTTP/2.0`, then you can specify it using `proto: h2`. However, if you like to use both `HTTP/2.0` and `HTTP/1.1` in a preferred order, then you need to specify the order using `ALPN`. + +Please note the followings: +- TLS needed to be configured for using `ALPN`. +- A single rule/backend can't use both `ALPN` and `proto`. +- Multiple rules pointing the same frontend can't use different `ALPN` or, `proto` configurations. + +## Example: gRPC Without TLS + +First create demo namespace for this example. + +``` +$ kubectl create namespace demo +namespace/demo created +``` + +### Deploy gRPC Test Server + +```yaml +apiVersion: apps/v1 +kind: Deployment +metadata: + labels: + run: grpc-server + name: grpc-server + namespace: demo +spec: + selector: + matchLabels: + run: grpc-server + template: + metadata: + labels: + run: grpc-server + spec: + containers: + - image: appscode/hello-grpc:0.1.0 + args: + - run + - --v=3 + name: grpc-server + imagePullPolicy: Always + ports: + - containerPort: 8080 +--- +apiVersion: v1 +kind: Service +metadata: + labels: + run: grpc-server + name: grpc-server + namespace: demo +spec: + ports: + - port: 3000 + targetPort: 8080 + name: h2c + selector: + run: grpc-server +``` + +### Create Ingress + +```yaml +apiVersion: voyager.appscode.com/v1 +kind: Ingress +metadata: + name: test-ingress + namespace: demo +spec: + rules: + - host: "*" + http: + port: 3001 + proto: h2 + paths: + - path: / + backend: + service: + name: grpc-server + port: + number: 3000 + proto: h2 +``` + +### Generated haproxy.cfg + +```ini +# HAProxy configuration generated by https://github.com/appscode/voyager +# DO NOT EDIT! +global + daemon + stats socket /var/run/haproxy.sock level admin expose-fd listeners + server-state-file global + server-state-base /var/state/haproxy/ + # log using a syslog socket + log /dev/log local0 info + tune.ssl.default-dh-param 2048 + ssl-default-bind-ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!3DES:!MD5:!PSK + lua-load /etc/auth-request.lua + hard-stop-after 30s +defaults + log global + # https://cbonte.github.io/haproxy-dconv/1.7/configuration.html#4.2-option%20abortonclose + # https://github.com/voyagermesh/voyager/pull/403 + option dontlognull + option http-server-close + option http-use-htx + option logasap + # Timeout values + timeout client 50s + timeout client-fin 50s + timeout connect 5s + timeout server 50s + timeout tunnel 50s + # Configure error files + # default traffic mode is http + # mode is overwritten in case of tcp services + mode http +frontend http-0_0_0_0-3001 + bind *:3001 proto h2 + mode http + option httplog + option forwardfor + acl is_proxy_https hdr(X-Forwarded-Proto) https + acl is_proxy_https ssl_fc + http-request set-var(req.scheme) str(https) if is_proxy_https + http-request set-var(req.scheme) str(http) if ! is_proxy_https + acl acl_: path_beg / + use_backend grpc-server.demo:3000 if acl_: +backend grpc-server.demo:3000 + server pod-grpc-server-6c7f686bbb-jhngb 172.17.0.6:8080 proto h2 +``` + +### Check Response + +```bash +$ minikube service --url voyager-test-ingress -n demo +http://192.168.99.100:30652 +``` + +Run gRPC client using docker. + +``` +$ docker run -it appscode/hello-grpc:0.1.0 client --address=192.168.99.100:30652 --name=Voyager +2019/02/05 08:01:18 192.168.99.100:30652 +2019/02/05 08:01:18 intro:"hello, Voyager!" +``` + +### Cleanup + +``` +$ kubectl delete ns demo +namespace "demo" deleted +``` + +## Example: gRPC With TLS + +First create demo namespace for this example. + +``` +$ kubectl create namespace demo +namespace/demo created +``` + +### Create Secrets + +Generate certs and create secret for backend server. Here we are using [onessl](https://github.com/kubepack/onessl). You can use openssl or any other tools to generate the certificates. + +``` +$ mkdir server-certs; cd server-certs +$ onessl create ca-cert +$ onessl create server-cert --domains ssl.appscode.test --ips 192.168.99.100,127.0.0.1 +$ cat {server.crt,ca.crt} > bundle.crt +$ kubectl create secret tls server-secret -n demo --cert=bundle.crt --key=server.key +``` + +Generate certs and create secret for haproxy: + +``` +$ mkdir haproxy-certs; cd haproxy-certs +$ onessl create ca-cert +$ onessl create server-cert --domains ssl.appscode.test --ips 192.168.99.100,127.0.0.1 +$ cat {server.crt,ca.crt} > bundle.crt +$ kubectl create secret tls haproxy-secret -n demo --cert=bundle.crt --key=server.key +``` + +### Deploy gRPC Test Server + +Deploy the gRPC server and mount the `server-secret`. + +```yaml +apiVersion: apps/v1 +kind: Deployment +metadata: + labels: + run: grpc-server + name: grpc-server + namespace: demo +spec: + selector: + matchLabels: + run: grpc-server + template: + metadata: + labels: + run: grpc-server + spec: + volumes: + - name: secret-vol + secret: + secretName: server-secret + containers: + - image: appscode/hello-grpc:0.1.0 + args: + - run + - --tls-cert-file=/etc/certs/tls.crt + - --tls-private-key-file=/etc/certs/tls.key + - --v=3 + name: grpc-server + imagePullPolicy: Always + ports: + - containerPort: 8443 + volumeMounts: + - name: secret-vol + mountPath: "/etc/certs" + readOnly: true +--- +apiVersion: v1 +kind: Service +metadata: + labels: + run: grpc-server + name: grpc-server + namespace: demo + annotations: + ingress.appscode.com/backend-tls: ssl ca-file /tmp/certs/tls.crt +spec: + ports: + - port: 3000 + targetPort: 8443 + name: h2 + selector: + run: grpc-server +``` + +Here, `ingress.appscode.com/backend-tls` will be used by voyager to configure backend TLS. + +### Create Ingress + +Create ingress and specify the `spec.tls` and `spec.configVolumes`. + +```yaml +apiVersion: voyager.appscode.com/v1 +kind: Ingress +metadata: + name: test-ingress + namespace: demo +spec: + tls: + - secretName: haproxy-secret + hosts: + - "*" + configVolumes: + - name: server-certs-vol + secret: + secretName: server-secret + mountPath: /tmp/certs + rules: + - host: "*" + http: + port: 3001 + alpn: + - h2 + - http/1.1 + paths: + - path: / + backend: + service: + name: grpc-server + port: + number: 3000 + alpn: + - h2 + - http/1.1 +``` + +### Generated haproxy.cfg + +```ini +# HAProxy configuration generated by https://github.com/appscode/voyager +# DO NOT EDIT! +global + daemon + stats socket /var/run/haproxy.sock level admin expose-fd listeners + server-state-file global + server-state-base /var/state/haproxy/ + # log using a syslog socket + log /dev/log local0 info + tune.ssl.default-dh-param 2048 + ssl-default-bind-ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!3DES:!MD5:!PSK + lua-load /etc/auth-request.lua + hard-stop-after 30s +defaults + log global + # https://cbonte.github.io/haproxy-dconv/1.7/configuration.html#4.2-option%20abortonclose + # https://github.com/voyagermesh/voyager/pull/403 + option dontlognull + option http-server-close + option http-use-htx + option logasap + # Timeout values + timeout client 50s + timeout client-fin 50s + timeout connect 5s + timeout server 50s + timeout tunnel 50s + # Configure error files + # default traffic mode is http + # mode is overwritten in case of tcp services + mode http +frontend http-0_0_0_0-3001 + bind *:3001 ssl no-sslv3 no-tlsv10 no-tls-tickets crt /etc/ssl/private/haproxy/tls/ alpn h2,http/1.1 + # Mark all cookies as secure + rsprep ^Set-Cookie:\ (.*) Set-Cookie:\ \1;\ Secure + # Add the HSTS header with a 6 month default max-age + http-response set-header Strict-Transport-Security max-age=15768000 + mode http + option httplog + option forwardfor + acl is_proxy_https hdr(X-Forwarded-Proto) https + acl is_proxy_https ssl_fc + http-request set-var(req.scheme) str(https) if is_proxy_https + http-request set-var(req.scheme) str(http) if ! is_proxy_https + acl acl_: path_beg / + use_backend grpc-server.demo:3000 if acl_: +backend grpc-server.demo:3000 + server pod-grpc-server-7578bf9696-rbq49 172.17.0.7:8443 ssl ca-file /tmp/certs/server.crt alpn h2,http/1.1 +``` + +### Check Response + +```bash +$ minikube service --url voyager-test-ingress -n demo +http://192.168.99.100:30446 +``` + +Run gRPC client using docker and specify the haproxy certs. + +``` +$ docker run -v $(pwd)/haproxy-certs:/tmp/certs -it appscode/hello-grpc:0.1.0 client --address=192.168.99.100:30446 --crt=/tmp/certs/bundle.crt --name=Voyager +2019/02/05 12:11:13 192.168.99.100:30446 +2019/02/05 12:11:13 intro:"hello, Voyager!" +``` + +### Cleanup + +``` +$ kubectl delete ns demo +namespace "demo" deleted +``` + +## Reference + +- https://www.haproxy.com/blog/haproxy-1-9-2-adds-grpc-support + diff --git a/content/docs/v2024.3.18/guides/ingress/configuration/keep-source-ip.md b/content/docs/v2024.3.18/guides/ingress/configuration/keep-source-ip.md new file mode 100644 index 000000000..aac648d5c --- /dev/null +++ b/content/docs/v2024.3.18/guides/ingress/configuration/keep-source-ip.md @@ -0,0 +1,63 @@ +--- +title: Configure Ingress Keep Source IP +menu: + docs_v2024.3.18: + identifier: keep-source-ip-configuration + name: Keep Source IP + parent: config-ingress + weight: 10 +product_name: voyager +menu_name: docs_v2024.3.18 +section_menu_id: guides +info: + cli: v0.0.15 + installer: v2024.3.18 + version: v2024.3.18 +--- + +> New to Voyager? Please start [here](/docs/v2024.3.18/concepts/overview). + +# Keep Source IP + +You can preserve client source IP by setting annotation `ingress.appscode.com/keep-source-ip` to `true`. + +For `LoadBalancer` type ingresses, the actual configuration generated depends on the underlying cloud provider. + +- `GCE, GKE, Azure, ACS`: Sets `ExternalTrafficPolicy` to `Local` for services used to expose HAProxy. See [here](https://kubernetes.io/docs/tasks/access-application-cluster/create-external-load-balancer/#preserving-the-client-source-ip). +- `AWS`: Enables [accept-proxy](accept-proxy.md) that enforces the use of the PROXY protocol over any connection accepted by any of the sockets declared on the same line. + +For `NodePort` type ingresses, it sets `ExternalTrafficPolicy` to `Local` regardless the cloud provider. + +## Ingress Example + +```yaml +apiVersion: voyager.appscode.com/v1 +kind: Ingress +metadata: + name: test-ingress + namespace: default + annotations: + ingress.appscode.com/keep-source-ip: "true" + ingress.appscode.com/health-check-nodeport: "32312" +spec: + rules: + - host: voyager.appscode.test + http: + paths: + - path: /foo + backend: + service: + name: test-server + port: + number: 80 +``` + +Here `health-check-nodeport` annotation specifies `HealthCheckNodePort` field for services used to expose HAProxy. If not specified, it will be auto-assigned by kubernetes. Note that, it is only effective when `keep-source-ip` is `true` and ingress type is `LoadBalancer`. + +--- + +**NB:** Please note that, Kubernetes support for AWS NLB is limited as of 1.11.x release. Check [kubernetes/features#423](https://github.com/kubernetes/features/issues/423#issuecomment-407512634) for NLB support status. + +`service.beta.kubernetes.io/aws-load-balancer-proxy-protocol: "*"` annotation is not supported for AWS NLB as of 1.11.x release. At this time proxy protocol attribute needs to be set on the NLB target group either manually from the aws console or from [aws cli](https://docs.aws.amazon.com/cli/latest/reference/elbv2/modify-target-group-attributes.html). + +--- \ No newline at end of file diff --git a/content/docs/v2024.3.18/guides/ingress/configuration/loadbalancer-ip.md b/content/docs/v2024.3.18/guides/ingress/configuration/loadbalancer-ip.md new file mode 100644 index 000000000..a64d952ef --- /dev/null +++ b/content/docs/v2024.3.18/guides/ingress/configuration/loadbalancer-ip.md @@ -0,0 +1,47 @@ +--- +title: Configure Ingress Loadbalancer IP +menu: + docs_v2024.3.18: + identifier: loadbalancer-ip-configuration + name: Loadbalancer IP + parent: config-ingress + weight: 10 +product_name: voyager +menu_name: docs_v2024.3.18 +section_menu_id: guides +info: + cli: v0.0.15 + installer: v2024.3.18 + version: v2024.3.18 +--- + +> New to Voyager? Please start [here](/docs/v2024.3.18/concepts/overview). + +# LoadBalancer IP + +For `LoadBalancer` type ingresses, you can specify `LoadBalancerIP` of HAProxy services using `ingress.appscode.com/load-balancer-ip` annotation. + +Note that, this feature is supported for cloud providers GCE, GKE, Azure, ACS and Openstack. + +## Ingress Example + +```yaml +apiVersion: voyager.appscode.com/v1 +kind: Ingress +metadata: + name: test-ingress + namespace: default + annotations: + ingress.appscode.com/load-balancer-ip: "78.11.24.19" +spec: + rules: + - host: voyager.appscode.test + http: + paths: + - path: /foo + backend: + service: + name: test-server + port: + number: 80 +``` \ No newline at end of file diff --git a/content/docs/v2024.3.18/guides/ingress/configuration/loadbalancing-algorithm.md b/content/docs/v2024.3.18/guides/ingress/configuration/loadbalancing-algorithm.md new file mode 100644 index 000000000..54630f665 --- /dev/null +++ b/content/docs/v2024.3.18/guides/ingress/configuration/loadbalancing-algorithm.md @@ -0,0 +1,118 @@ +--- +title: Load Balancing Algorithm | Kubernetes Ingress +menu: + docs_v2024.3.18: + identifier: load-balancing-algorithm + name: Load Balancing Algorithm + parent: config-ingress + weight: 10 +product_name: voyager +menu_name: docs_v2024.3.18 +section_menu_id: guides +info: + cli: v0.0.15 + installer: v2024.3.18 + version: v2024.3.18 +--- + +> New to Voyager? Please start [here](/docs/v2024.3.18/concepts/overview). + +# Configure Load Balancing Algorithm + +You can configure a backend to use a specific [load balancing algorithm](https://cbonte.github.io/haproxy-dconv/1.9/configuration.html#balance) using `backend.loadBalanceOn`. You can specify any HAProxy supported options along with arguments. + +Ingress Example: + +```yaml +apiVersion: voyager.appscode.com/v1 +kind: Ingress +metadata: + name: test-ingress + namespace: demo +spec: + defaultBackend: + service: + name: test-server + port: + number: 80 + loadBalanceOn: roundrobin # configure for default backend + rules: + - http: + port: 8989 + paths: + - backend: + service: + name: test-server + port: + number: 8989 + loadBalanceOn: static-rr # configure for http backend + - tcp: + port: 4545 + backend: + service: + name: test-server + port: + number: 4545 + loadBalanceOn: leastconn # configure for tcp backend +``` + +Generated haproxy.cfg: + +```ini +# HAProxy configuration generated by https://github.com/appscode/voyager +# DO NOT EDIT! +global + daemon + stats socket /var/run/haproxy.sock level admin expose-fd listeners + server-state-file global + server-state-base /var/state/haproxy/ + # log using a syslog socket + log /dev/log local0 info + tune.ssl.default-dh-param 2048 + ssl-default-bind-ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!3DES:!MD5:!PSK + lua-load /etc/auth-request.lua + hard-stop-after 30s +defaults + log global + # https://cbonte.github.io/haproxy-dconv/1.7/configuration.html#4.2-option%20abortonclose + # https://github.com/voyagermesh/voyager/pull/403 + option dontlognull + option http-server-close + # Timeout values + timeout client 50s + timeout client-fin 50s + timeout connect 5s + timeout server 50s + timeout tunnel 50s + # Configure error files + # default traffic mode is http + # mode is overwritten in case of tcp services + mode http +frontend http-0_0_0_0-8989 + bind *:8989 + mode http + option httplog + option forwardfor + acl is_proxy_https hdr(X-Forwarded-Proto) https + acl is_proxy_https ssl_fc + http-request set-var(req.scheme) str(https) if is_proxy_https + http-request set-var(req.scheme) str(http) if ! is_proxy_https + use_backend test-server.demo:8989 + default_backend default-backend +backend test-server.demo:8989 + balance static-rr + server pod-test-server-47lck 172.17.0.5:8989 +frontend tcp-0_0_0_0-4545 + bind *:4545 + mode tcp + default_backend test-server.demo:4545 +backend test-server.demo:4545 + mode tcp + balance leastconn + server pod-test-server-47lck 172.17.0.5:4545 +backend default-backend + balance roundrobin + server pod-test-server-47lck 172.17.0.5:8080 +``` + +Instead of configuring backends you can also specify load balancing algorithm in `defaults` sections. For that, you need to add `balance ` in `defaults.cfg` using custom template. See [here](/docs/v2024.3.18/guides/ingress/configuration/custom-templates) for detailed example on custom template. diff --git a/content/docs/v2024.3.18/guides/ingress/configuration/max-connections.md b/content/docs/v2024.3.18/guides/ingress/configuration/max-connections.md new file mode 100644 index 000000000..8a05b2e25 --- /dev/null +++ b/content/docs/v2024.3.18/guides/ingress/configuration/max-connections.md @@ -0,0 +1,166 @@ +--- +title: Configure Ingress Max Connections +menu: + docs_v2024.3.18: + identifier: max-connections-configuration + name: Max Connections + parent: config-ingress + weight: 10 +product_name: voyager +menu_name: docs_v2024.3.18 +section_menu_id: guides +info: + cli: v0.0.15 + installer: v2024.3.18 + version: v2024.3.18 +--- + +> New to Voyager? Please start [here](/docs/v2024.3.18/concepts/overview). + +# Maximum Connections + +You can specify the maximum number of concurrent connections through the `ingress.appscode.com/max-connections` annotation. When applied to ingress, this rule will be applied globally for all backends. To apply for a specific backend, you need to apply the annotation to associated pod. + +## Ingress Example + +First create a test-server and expose it via service: + +```bash +$ kubectl run test-server --image=gcr.io/google_containers/echoserver:1.8 +deployment "test-server" created + +$ kubectl expose deployment test-server --type=LoadBalancer --port=80 --target-port=8080 +service "test-server" exposed +``` + +Then create the ingress: + +```yaml +$ kubectl apply -f test-ingress.yaml + +apiVersion: voyager.appscode.com/v1 +kind: Ingress +metadata: + name: test-ingress + namespace: default + annotations: + ingress.appscode.com/max-connections: "1" +spec: + rules: + - host: voyager.appscode.test + http: + paths: + - path: /foo + backend: + service: + name: test-server + port: + number: 80 +``` + +This will add `maxconn 1` in global section of generated haproxy.cfg. + +Generated haproxy.cfg: + +```ini +# HAProxy configuration generated by https://github.com/appscode/voyager +# DO NOT EDIT! +global + daemon + stats socket /tmp/haproxy + server-state-file global + server-state-base /var/state/haproxy/ + maxconn 1 + # log using a syslog socket + log /dev/log local0 info + log /dev/log local0 notice + tune.ssl.default-dh-param 2048 + ssl-default-bind-ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!3DES:!MD5:!PSK + hard-stop-after 30s +defaults + log global + # https://cbonte.github.io/haproxy-dconv/1.7/configuration.html#4.2-option%20abortonclose + # https://github.com/voyagermesh/voyager/pull/403 + option dontlognull + option http-server-close + # Timeout values + timeout client 50s + timeout client-fin 50s + timeout connect 5s + timeout server 50s + timeout tunnel 50s + # Configure error files + # default traffic mode is http + # mode is overwritten in case of tcp services + mode http +frontend http-0_0_0_0-80 + bind *:80 + mode http + option httplog + option forwardfor + acl is_proxy_https hdr(X-Forwarded-Proto) https + acl acl_voyager.appscode.test hdr(host) -i voyager.appscode.test + acl acl_voyager.appscode.test hdr(host) -i voyager.appscode.test:80 + acl acl_voyager.appscode.test:foo path_beg /foo + use_backend test-server.default:80 if acl_voyager.appscode.test acl_voyager.appscode.test:foo +backend test-server.default:80 + server pod-test-server-68ddc845cd-x7dtv 172.17.0.4:80 +``` + +## Pod Annotation + +To apply it for specific backend let's patch the deployment and add the annotation to pod template: + +```bash +$ kubectl patch deployment test-server -p '{"spec":{"template":{"metadata":{"annotations":{"ingress.appscode.com/max-connections": "3"}}}}}' +deployment "test-server" patched +``` + +This will add `maxconn 3` in server section of generated haproxy.cfg. + +Generated haproxy.cfg: + +```ini +# HAProxy configuration generated by https://github.com/appscode/voyager +# DO NOT EDIT! +global + daemon + stats socket /tmp/haproxy + server-state-file global + server-state-base /var/state/haproxy/ + maxconn 1 + # log using a syslog socket + log /dev/log local0 info + log /dev/log local0 notice + tune.ssl.default-dh-param 2048 + ssl-default-bind-ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!3DES:!MD5:!PSK + hard-stop-after 30s +defaults + log global + # https://cbonte.github.io/haproxy-dconv/1.7/configuration.html#4.2-option%20abortonclose + # https://github.com/voyagermesh/voyager/pull/403 + option dontlognull + option http-server-close + # Timeout values + timeout client 50s + timeout client-fin 50s + timeout connect 5s + timeout server 50s + timeout tunnel 50s + # Configure error files + # default traffic mode is http + # mode is overwritten in case of tcp services + mode http +frontend http-0_0_0_0-80 + bind *:80 + mode http + option httplog + option forwardfor + acl is_proxy_https hdr(X-Forwarded-Proto) https + acl acl_voyager.appscode.test hdr(host) -i voyager.appscode.test + acl acl_voyager.appscode.test hdr(host) -i voyager.appscode.test:80 + acl acl_voyager.appscode.test:foo path_beg /foo + use_backend test-server.default:80 if acl_voyager.appscode.test acl_voyager.appscode.test:foo +backend test-server.default:80 + server pod-test-server-77b558b98-8kc2d 172.17.0.4:80 maxconn 3 +``` \ No newline at end of file diff --git a/content/docs/v2024.3.18/guides/ingress/configuration/node-port.md b/content/docs/v2024.3.18/guides/ingress/configuration/node-port.md new file mode 100644 index 000000000..0b0145c95 --- /dev/null +++ b/content/docs/v2024.3.18/guides/ingress/configuration/node-port.md @@ -0,0 +1,208 @@ +--- +title: Specify Ingress NodePort | Kubernetes Ingress +menu: + docs_v2024.3.18: + identifier: nodeport-config + name: Specify NodePort + parent: config-ingress + weight: 10 +product_name: voyager +menu_name: docs_v2024.3.18 +section_menu_id: guides +info: + cli: v0.0.15 + installer: v2024.3.18 + version: v2024.3.18 +--- + +> New to Voyager? Please start [here](/docs/v2024.3.18/concepts/overview). + +# Specify NodePort + +If you are using a `NodePort` or `LoadBalancer` type Ingress, a `NodePort` or `LoadBalancer` type Service is used to expose HAProxy pods respectively. If no node port is specified for each HAProxy Service port, Kubernetes will randomly assign one for you. + +Since 3.2.0, you have the option to specify a NodePort for each HAProxy Service port. This allows you to guarantee that the port will not get changed, as you make changes to an Ingress object. If you specify nothing, Kubernetes will auto assign as before. + +### Ingress Example + +First create a test-server and expose it via service: + +```bash +$ kubectl run test-server --image=gcr.io/google_containers/echoserver:1.8 +deployment "test-server" created + +$ kubectl expose deployment test-server --type=LoadBalancer --port=80 --target-port=8080 +service "test-server" exposed +``` + +Then create the ingress: + +```yaml +apiVersion: voyager.appscode.com/v1 +kind: Ingress +metadata: + name: test-ingress + namespace: default + annotations: + ingress.appscode.com/type: NodePort +spec: + rules: + - host: one.example.com + http: + port: 8989 + nodePort: 32666 + paths: + - path: /t1 + backend: + service: + name: test-server + port: + number: 80 + - path: /t2 + backend: + service: + name: test-server + port: + number: 80 + - host: other.example.com + http: + port: 8989 + nodePort: 32666 + paths: + - backend: + service: + name: test-server + port: + number: 80 + - host: appscode.example.com + tcp: + port: 4343 + nodePort: 32667 + backend: + service: + name: test-server + port: + number: 80 +``` + +Since `ingress.appscode.com/type: NodePort` annotation is used, this Ingress is going to expose HAProxy pods via a `NodePort` Service. This service will listen to `8989` and `4343` port for incoming HTTP connections and these port will map to specified node ports, and will pass any request coming to it to the desired backend. + +```bash +$ kubectl get pods,svc +NAME READY STATUS RESTARTS AGE +po/test-server-68ddc845cd-x7dtv 1/1 Running 0 23h +po/voyager-test-ingress-77cc5d54d-sgzkv 1/1 Running 0 18s + +NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE +svc/kubernetes ClusterIP 10.96.0.1 443/TCP 2d +svc/test-server LoadBalancer 10.105.13.31 80:30390/TCP 1d +svc/voyager-test-ingress NodePort 10.106.53.141 8989:32666/TCP,4343:32667/TCP 26m +``` + +```yaml +$ kubectl get svc voyager-test-ingress -o yaml + +apiVersion: v1 +kind: Service +metadata: + annotations: + ingress.appscode.com/last-applied-annotation-keys: "" + ingress.appscode.com/origin-api-schema: voyager.appscode.com/v1 + ingress.appscode.com/origin-name: test-ingress + creationTimestamp: 2018-02-15T03:51:06Z + name: voyager-test-ingress + namespace: default + ownerReferences: + - apiVersion: voyager.appscode.com/v1 + blockOwnerDeletion: true + kind: Ingress + name: test-ingress + uid: 73203752-1203-11e8-b2d5-080027eaa7b2 + resourceVersion: "65769" + selfLink: /api/v1/namespaces/default/services/voyager-test-ingress + uid: 732a5322-1203-11e8-b2d5-080027eaa7b2 +spec: + clusterIP: 10.106.53.141 + externalTrafficPolicy: Cluster + ports: + - name: tcp-8989 + nodePort: 32666 + port: 8989 + protocol: TCP + targetPort: 8989 + - name: tcp-4343 + nodePort: 32667 + port: 4343 + protocol: TCP + targetPort: 4343 + selector: + origin: voyager + origin-api-group: voyager.appscode.com + origin-name: test-ingress + sessionAffinity: None + type: NodePort +status: + loadBalancer: {} +``` + +Now, if you check the HAProxy configuration generated by Voyager, you should see something like below: + +```ini +# HAProxy configuration generated by https://github.com/appscode/voyager +# DO NOT EDIT! +global + daemon + stats socket /tmp/haproxy + server-state-file global + server-state-base /var/state/haproxy/ + # log using a syslog socket + log /dev/log local0 info + log /dev/log local0 notice + tune.ssl.default-dh-param 2048 + ssl-default-bind-ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!3DES:!MD5:!PSK + hard-stop-after 30s +defaults + log global + # https://cbonte.github.io/haproxy-dconv/1.7/configuration.html#4.2-option%20abortonclose + # https://github.com/voyagermesh/voyager/pull/403 + option dontlognull + option http-server-close + # Timeout values + timeout client 50s + timeout client-fin 50s + timeout connect 5s + timeout server 50s + timeout tunnel 50s + # Configure error files + # default traffic mode is http + # mode is overwritten in case of tcp services + mode http +frontend http-0_0_0_0-8989 + bind *:8989 + mode http + option httplog + option forwardfor + acl is_proxy_https hdr(X-Forwarded-Proto) https + acl acl_other.example.com hdr(host) -i other.example.com:8989 + use_backend test-server.default:80-2bdf8f33305898e39d66486c50d39fc1 if acl_other.example.com + acl acl_one.example.com hdr(host) -i one.example.com:8989 + acl acl_one.example.com:t2 path_beg /t2 + use_backend test-server.default:80-64e63a31b2e805238363fc7982c38f12 if acl_one.example.com acl_one.example.com:t2 + acl acl_one.example.com:t1 path_beg /t1 + use_backend test-server.default:80-6c5cadcbfcb85a324f0cf5c4654dd952 if acl_one.example.com acl_one.example.com:t1 +backend test-server.default:80-2bdf8f33305898e39d66486c50d39fc1 + server pod-test-server-68ddc845cd-x7dtv 172.17.0.4:8080 +backend test-server.default:80-64e63a31b2e805238363fc7982c38f12 + server pod-test-server-68ddc845cd-x7dtv 172.17.0.4:8080 +backend test-server.default:80-6c5cadcbfcb85a324f0cf5c4654dd952 + server pod-test-server-68ddc845cd-x7dtv 172.17.0.4:8080 +frontend tcp-0_0_0_0-4343 + bind *:4343 + mode tcp + default_backend test-server.default:80-b700282ee9f2823f5b4ad3452658a791 +backend test-server.default:80-b700282ee9f2823f5b4ad3452658a791 + mode tcp + server pod-test-server-68ddc845cd-x7dtv 172.17.0.4:8080 +``` + +Port 8989 has 2 separate hosts `one.example.com` and `other.example.com`. `one.example.com` has 2 paths `/t1` and `/t2`. Since they all are exposed via the same HTTP port, they must use the same NodePort. diff --git a/content/docs/v2024.3.18/guides/ingress/configuration/pod-annotations.md b/content/docs/v2024.3.18/guides/ingress/configuration/pod-annotations.md new file mode 100644 index 000000000..b64e133e6 --- /dev/null +++ b/content/docs/v2024.3.18/guides/ingress/configuration/pod-annotations.md @@ -0,0 +1,62 @@ +--- +title: Configure Ingress Pod Annotations +menu: + docs_v2024.3.18: + identifier: pod-annotations-configuration + name: Pod Annotations + parent: config-ingress + weight: 10 +product_name: voyager +menu_name: docs_v2024.3.18 +section_menu_id: guides +info: + cli: v0.0.15 + installer: v2024.3.18 + version: v2024.3.18 +--- + +> New to Voyager? Please start [here](/docs/v2024.3.18/concepts/overview). + +# Pod Annotations + +You can specify annotations applied to HAProxy pods through ingress annotation `ingress.appscode.com/annotations-pod`. You have to provide it as a json formatted string to string map. + +## Ingress Example + +```yaml +apiVersion: voyager.appscode.com/v1 +kind: Ingress +metadata: + name: test-ingress + namespace: default + annotations: + ingress.appscode.com/annotations-pod: '{"foo": "bar", "bar":"foo"}' +spec: + rules: + - host: voyager.appscode.test + http: + paths: + - path: /foo + backend: + service: + name: test-server + port: + number: 80 +``` + +It will add following annotations to HAProxy pods: + +```yaml +annotations: + bar: foo + foo: bar + ingress.appscode.com/last-applied-annotation-keys: bar,foo +``` + +```bash +$ kubectl get pods voyager-test-ingress-6dbdbdf4f7-9f6w7 -o=jsonpath='{.metadata.annotations}' | tr " " "\n" + +map[foo:bar +bar:foo +ingress.appscode.com/last-applied-annotation-keys:foo,bar] +``` \ No newline at end of file diff --git a/content/docs/v2024.3.18/guides/ingress/configuration/rate-limit.md b/content/docs/v2024.3.18/guides/ingress/configuration/rate-limit.md new file mode 100644 index 000000000..5c57a58f8 --- /dev/null +++ b/content/docs/v2024.3.18/guides/ingress/configuration/rate-limit.md @@ -0,0 +1,109 @@ +--- +title: Configure Ingress Rate Limit +menu: + docs_v2024.3.18: + identifier: rate-limit-configuration + name: Rate Limit + parent: config-ingress + weight: 10 +product_name: voyager +menu_name: docs_v2024.3.18 +section_menu_id: guides +info: + cli: v0.0.15 + installer: v2024.3.18 + version: v2024.3.18 +--- + +> New to Voyager? Please start [here](/docs/v2024.3.18/concepts/overview). + +# Rate limiting + +You can define a limit on the connections that can be opened by a single client IP address through annotations. This can be used to mitigate DDoS Attacks. + +- `ingress.appscode.com/limit-connection`: number of concurrent connections allowed from a single IP address. + +- `ingress.appscode.com/limit-rps`: number of connections that may be accepted from a given IP each second. + +- `ingress.appscode.com/limit-rpm`: number of connections that may be accepted from a given IP each minute. + +These rules will be applied globally to all frontends. Note that, `limit-rpm` will takes precedence if you specify both `limit-rpm` and `limit-rps`. + +## Ingress Example + +```yaml +apiVersion: voyager.appscode.com/v1 +kind: Ingress +metadata: + name: test-ingress + namespace: default + annotations: + ingress.appscode.com/limit-connection: "3" + ingress.appscode.com/limit-rpm: "15" +spec: + rules: + - host: voyager.appscode.test + http: + paths: + - path: /foo + backend: + service: + name: test-server + port: + number: 80 +``` + +Generated haproxy.cfg: + +```ini +# HAProxy configuration generated by https://github.com/appscode/voyager +# DO NOT EDIT! +global + daemon + stats socket /tmp/haproxy + server-state-file global + server-state-base /var/state/haproxy/ + # log using a syslog socket + log /dev/log local0 info + log /dev/log local0 notice + tune.ssl.default-dh-param 2048 + ssl-default-bind-ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!3DES:!MD5:!PSK + hard-stop-after 30s +defaults + log global + # https://cbonte.github.io/haproxy-dconv/1.7/configuration.html#4.2-option%20abortonclose + # https://github.com/voyagermesh/voyager/pull/403 + option dontlognull + option http-server-close + # Timeout values + timeout client 50s + timeout client-fin 50s + timeout connect 5s + timeout server 50s + timeout tunnel 50s + # Configure error files + # default traffic mode is http + # mode is overwritten in case of tcp services + mode http +frontend http-0_0_0_0-80 + bind *:80 + mode http + stick-table type ip size 100k expire 2m store conn_cur + acl __mark_as_overload_conn__ sc1_conn_cur gt 3 + tcp-request content track-sc1 src + http-request deny if __mark_as_overload_conn__ + tcp-request inspect-delay 5s + stick-table type ip size 1m expire 5m store conn_rate(60s) + acl __mark_as_overload__ sc1_conn_rate gt 15 + tcp-request content track-sc1 src + http-request deny if __mark_as_overload__ + option httplog + option forwardfor + acl is_proxy_https hdr(X-Forwarded-Proto) https + acl acl_voyager.appscode.test hdr(host) -i voyager.appscode.test + acl acl_voyager.appscode.test hdr(host) -i voyager.appscode.test:80 + acl acl_voyager.appscode.test:foo path_beg /foo + use_backend test-server.default:80 if acl_voyager.appscode.test acl_voyager.appscode.test:foo +backend test-server.default:80 + server pod-test-server-68ddc845cd-6rnwn 172.17.0.4:80 +``` \ No newline at end of file diff --git a/content/docs/v2024.3.18/guides/ingress/configuration/rewrite-target.md b/content/docs/v2024.3.18/guides/ingress/configuration/rewrite-target.md new file mode 100644 index 000000000..8a01f8483 --- /dev/null +++ b/content/docs/v2024.3.18/guides/ingress/configuration/rewrite-target.md @@ -0,0 +1,155 @@ +--- +title: Configure Ingress Rewrite Target +menu: + docs_v2024.3.18: + identifier: rewrite-target-configuration + name: Rewrite Target + parent: config-ingress + weight: 10 +product_name: voyager +menu_name: docs_v2024.3.18 +section_menu_id: guides +info: + cli: v0.0.15 + installer: v2024.3.18 + version: v2024.3.18 +--- + +> New to Voyager? Please start [here](/docs/v2024.3.18/concepts/overview). + +# Rewrite Target + +In some scenarios the exposed URL in the backend service differs from the specified path in the Ingress rule. This will cause any request to return 404. In such scenarios you can set the path expected by the service using `ingress.appscode.com/rewrite-target` annotation. This will be applied globally for all paths. + +## Ingress Example + +```yaml +apiVersion: voyager.appscode.com/v1 +kind: Ingress +metadata: + name: test-ingress + namespace: default + annotations: + ingress.appscode.com/rewrite-target: "/bar" +spec: + rules: + - host: voyager.appscode.test + http: + paths: + - path: /foo + backend: + service: + name: test-server + port: + number: 80 +``` + +It will add following rule to replace request path in generated haproxy.cfg: + +```ini +reqrep ^([^\ :]*)\ /foo(.*$) \1\ /bar\2 +``` + +Generated haproxy.cfg: + +```ini +# HAProxy configuration generated by https://github.com/appscode/voyager +# DO NOT EDIT! +global + daemon + stats socket /tmp/haproxy + server-state-file global + server-state-base /var/state/haproxy/ + # log using a syslog socket + log /dev/log local0 info + log /dev/log local0 notice + tune.ssl.default-dh-param 2048 + ssl-default-bind-ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!3DES:!MD5:!PSK + hard-stop-after 30s +defaults + log global + # https://cbonte.github.io/haproxy-dconv/1.7/configuration.html#4.2-option%20abortonclose + # https://github.com/voyagermesh/voyager/pull/403 + option dontlognull + option http-server-close + # Timeout values + timeout client 50s + timeout client-fin 50s + timeout connect 5s + timeout server 50s + timeout tunnel 50s + # Configure error files + # default traffic mode is http + # mode is overwritten in case of tcp services + mode http +frontend http-0_0_0_0-80 + bind *:80 + mode http + option httplog + option forwardfor + acl is_proxy_https hdr(X-Forwarded-Proto) https + acl acl_voyager.appscode.test hdr(host) -i voyager.appscode.test + acl acl_voyager.appscode.test hdr(host) -i voyager.appscode.test:80 + acl acl_voyager.appscode.test:foo path_beg /foo + use_backend test-server.default:80 if acl_voyager.appscode.test acl_voyager.appscode.test:foo +backend test-server.default:80 + reqrep ^([^\ :]*)\ /foo(.*$) \1\ /bar\2 + server pod-test-server-68ddc845cd-x5c78 172.17.0.2:8080 +``` + +Get url for ingress service: + +```bash +$ minikube service --url voyager-test-ingress +http://192.168.99.100:31228 +``` + +Send request with path `/foo`: + +```bash +$ curl -v -H 'Host: voyager.appscode.test' 192.168.99.100:31228/foo +* Trying 192.168.99.100... +* Connected to 192.168.99.100 (192.168.99.100) port 31228 (#0) +> GET /foo HTTP/1.1 +> Host: voyager.appscode.test +> User-Agent: curl/7.47.0 +> Accept: */* +> +< HTTP/1.1 200 OK +< Date: Mon, 19 Feb 2018 05:53:14 GMT +< Content-Type: text/plain +< Transfer-Encoding: chunked +< Server: echoserver +< + + +Hostname: test-server-68ddc845cd-x5c78 + +Pod Information: + -no pod information available- + +Server values: + server_version=nginx: 1.13.3 - lua: 10008 + +Request Information: + client_address=172.17.0.5 + method=GET + real path=/bar + query= + request_version=1.1 + request_uri=http://voyager.appscode.test:8080/bar + +Request Headers: + accept=*/* + connection=close + host=voyager.appscode.test + user-agent=curl/7.47.0 + x-forwarded-for=172.17.0.1 + +Request Body: + -no body in request- + +* Connection #0 to host 192.168.99.100 left intact +``` + +Here although original request is sent to path `/foo`, it is redirected to path `/bar`. \ No newline at end of file diff --git a/content/docs/v2024.3.18/guides/ingress/configuration/service-annotations.md b/content/docs/v2024.3.18/guides/ingress/configuration/service-annotations.md new file mode 100644 index 000000000..2608118c7 --- /dev/null +++ b/content/docs/v2024.3.18/guides/ingress/configuration/service-annotations.md @@ -0,0 +1,64 @@ +--- +title: Configure Ingress Service Annotations +menu: + docs_v2024.3.18: + identifier: service-annotations-configuration + name: Service Annotations + parent: config-ingress + weight: 10 +product_name: voyager +menu_name: docs_v2024.3.18 +section_menu_id: guides +info: + cli: v0.0.15 + installer: v2024.3.18 + version: v2024.3.18 +--- + +> New to Voyager? Please start [here](/docs/v2024.3.18/concepts/overview). + +# Service Annotations + +You can specify annotations applied to HAProxy services through ingress annotation `ingress.appscode.com/annotations-service`. You have to provide it as a json formatted string to string map. + +## Ingress Example + +```yaml +apiVersion: voyager.appscode.com/v1 +kind: Ingress +metadata: + name: test-ingress + namespace: default + annotations: + ingress.appscode.com/annotations-service: '{"foo": "bar", "bar":"foo"}' +spec: + rules: + - host: voyager.appscode.test + http: + paths: + - path: /foo + backend: + service: + name: test-server + port: + number: 80 +``` + +It will add following annotations to HAProxy pods: + +```yaml +annotations: + bar: foo + foo: bar + ingress.appscode.com/last-applied-annotation-keys: bar,foo +``` + +```bash +$ kubectl get svc voyager-test-ingress -o=jsonpath='{.metadata.annotations}' | tr " " "\n" + +map[foo:bar +bar:foo +ingress.appscode.com/last-applied-annotation-keys:foo,bar +ingress.appscode.com/origin-api-schema:voyager.appscode.com/v1 +ingress.appscode.com/origin-name:test-ingress] +``` \ No newline at end of file diff --git a/content/docs/v2024.3.18/guides/ingress/configuration/ssl-passthrough.md b/content/docs/v2024.3.18/guides/ingress/configuration/ssl-passthrough.md new file mode 100644 index 000000000..efee58d79 --- /dev/null +++ b/content/docs/v2024.3.18/guides/ingress/configuration/ssl-passthrough.md @@ -0,0 +1,107 @@ +--- +title: Configure Ingress Ssl Passthrough +menu: + docs_v2024.3.18: + identifier: ssl-passthrough-configuration + name: Ssl Passthrough + parent: config-ingress + weight: 10 +product_name: voyager +menu_name: docs_v2024.3.18 +section_menu_id: guides +info: + cli: v0.0.15 + installer: v2024.3.18 + version: v2024.3.18 +--- + +> New to Voyager? Please start [here](/docs/v2024.3.18/concepts/overview). + +# SSL Passthrough + +The annotation `ingress.appscode.com/ssl-passthrough` allows to configure TLS termination in the backend and not in haproxy. When set to `true`, passes TLS connections directly to backend. + +If `ssl-passthrough` is used, HAProxy will use `tcp`. For more details see [here](https://www.haproxy.com/documentation/haproxy/deployment-guides/tls-infrastructure/). When `ssl-passthrough` is enabled, Voyager automatically converts your HTTP ingress rules to TCP rules. + +Please note that following features are not supported when using `ssl-passthrough`: + +- Multiple paths for HTTP rules. +- `headerRules` and `rewriteRules` for backends. +- Specifying TLS for TCP rules. So even if you define `spec.tls` for your HTTP hosts, it will be ignored. + +Voyager will not modify your existing TCP rules. Instead it will cause a validation error if TLS defined for existing TCP rules on same port. In that case, you have to either ensure TCP hosts do not match with `spec.tls` or, just set `noTLS=true` for those TCP rules. + +## Ingress Example + +```yaml +apiVersion: voyager.appscode.com/v1 +kind: Ingress +metadata: + name: test-ingress + namespace: default + annotations: + ingress.appscode.com/ssl-passthrough: "true" +spec: + rules: + - host: voyager.appscode.test + http: + port: 8443 + paths: + - path: /foo + backend: + service: + name: test-server + port: + number: 443 +``` + +Generated haproxy.cfg: + +```ini +# HAProxy configuration generated by https://github.com/appscode/voyager +# DO NOT EDIT! +global + daemon + stats socket /var/run/haproxy.sock level admin expose-fd listeners + server-state-file global + server-state-base /var/state/haproxy/ + # log using a syslog socket + log /dev/log local0 info + tune.ssl.default-dh-param 2048 + ssl-default-bind-ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!3DES:!MD5:!PSK + lua-load /etc/auth-request.lua + hard-stop-after 30s +defaults + log global + # https://cbonte.github.io/haproxy-dconv/1.7/configuration.html#4.2-option%20abortonclose + # https://github.com/voyagermesh/voyager/pull/403 + option dontlognull + option http-server-close + # Timeout values + timeout client 50s + timeout client-fin 50s + timeout connect 5s + timeout server 50s + timeout tunnel 50s + # Configure error files + # default traffic mode is http + # mode is overwritten in case of tcp services + mode http +frontend tcp-0_0_0_0-8443 + bind *:8443 + mode tcp + default_backend test-server.default:443 +backend test-server.default:443 + mode tcp + server pod-test-server-777ccbbc49-g7q6t 172.17.0.4:6443 +``` + +Now check the response: + +```bash +$ minikube service --url voyager-test-ingress +http://192.168.99.100:31692 + +$ curl -k https://192.168.99.100:31692 +{"type":"http","host":"192.168.99.100:31692","serverPort":":6443","path":"/","method":"GET","headers":{"Accept":["*/*"],"User-Agent":["curl/7.47.0"]}} +``` diff --git a/content/docs/v2024.3.18/guides/ingress/configuration/ssl-redirect.md b/content/docs/v2024.3.18/guides/ingress/configuration/ssl-redirect.md new file mode 100644 index 000000000..46c085644 --- /dev/null +++ b/content/docs/v2024.3.18/guides/ingress/configuration/ssl-redirect.md @@ -0,0 +1,175 @@ +--- +title: Configure Ingress Ssl Redirect +menu: + docs_v2024.3.18: + identifier: ssl-redirect-configuration + name: Ssl Redirect + parent: config-ingress + weight: 10 +product_name: voyager +menu_name: docs_v2024.3.18 +section_menu_id: guides +info: + cli: v0.0.15 + installer: v2024.3.18 + version: v2024.3.18 +--- + +> New to Voyager? Please start [here](/docs/v2024.3.18/concepts/overview). + +# SSL Redirect + +By default voyager redirects (301) to HTTPS if TLS is enabled for that ingress. If you want to disable that behavior globally, you can use `ingress.appscode.com/ssl-redirect: "false"` annotation. + +When using SSL offloading outside of cluster (e.g. AWS ELB) it may be useful to enforce a redirect to HTTPS even when there is not TLS cert available. This can be achieved by using the `ingress.appscode.com/force-ssl-redirect: "true"` annotation. It will redirect for all port 80 HTTP paths to HTTPS. + +## Ingress Example + +```yaml +apiVersion: voyager.appscode.com/v1 +kind: Ingress +metadata: + name: test-ingress + namespace: default + annotations: + ingress.appscode.com/ssl-redirect: "false" +spec: + tls: + - secretName: tls-secret + hosts: + - voyager.appscode.test + rules: + - host: voyager.appscode.test + http: + paths: + - path: /foo + backend: + service: + name: test-server + port: + number: 80 +``` + +Since TLS enabled for `voyager.appscode.test`, by default it will add `redirect scheme https` for that host in generated haproxy.cfg. But as we disabled ssl-redirect through annotation, no redirect rule generated. + +Generated haproxy.cfg: + +```ini +# HAProxy configuration generated by https://github.com/appscode/voyager +# DO NOT EDIT! +global + daemon + stats socket /tmp/haproxy + server-state-file global + server-state-base /var/state/haproxy/ + # log using a syslog socket + log /dev/log local0 info + log /dev/log local0 notice + tune.ssl.default-dh-param 2048 + ssl-default-bind-ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!3DES:!MD5:!PSK + hard-stop-after 30s +defaults + log global + # https://cbonte.github.io/haproxy-dconv/1.7/configuration.html#4.2-option%20abortonclose + # https://github.com/voyagermesh/voyager/pull/403 + option dontlognull + option http-server-close + # Timeout values + timeout client 50s + timeout client-fin 50s + timeout connect 5s + timeout server 50s + timeout tunnel 50s + # Configure error files + # default traffic mode is http + # mode is overwritten in case of tcp services + mode http +frontend http-0_0_0_0-443 + bind *:443 ssl no-sslv3 no-tlsv10 no-tls-tickets crt /etc/ssl/private/haproxy/tls/ alpn http/1.1 + # Mark all cookies as secure + rsprep ^Set-Cookie:\ (.*) Set-Cookie:\ \1;\ Secure + # Add the HSTS header with a 6 month default max-age + http-response set-header Strict-Transport-Security max-age=15768000 + mode http + option httplog + option forwardfor + acl is_proxy_https hdr(X-Forwarded-Proto) https + acl acl_voyager.appscode.test hdr(host) -i voyager.appscode.test + acl acl_voyager.appscode.test hdr(host) -i voyager.appscode.test:443 + acl acl_voyager.appscode.test:foo path_beg /foo + use_backend test-server.default:80 if acl_voyager.appscode.test acl_voyager.appscode.test:foo +backend test-server.default:80 + server pod-test-server-68ddc845cd-6rnwn 172.17.0.4:80 +``` + +### With force redirect + +```yaml +apiVersion: voyager.appscode.com/v1 +kind: Ingress +metadata: + name: test-ingress + namespace: default + annotations: + ingress.appscode.com/force-ssl-redirect: "true" +spec: + rules: + - host: voyager.appscode.test + http: + paths: + - path: /foo + backend: + service: + name: test-server + port: + number: 80 +``` + +Although no TLS specified, `redirect scheme https` added for all port 80 HTTP paths as we enabled force-redirect. + +Generated haproxy.cfg: + +```ini +# HAProxy configuration generated by https://github.com/appscode/voyager +# DO NOT EDIT! +global + daemon + stats socket /tmp/haproxy + server-state-file global + server-state-base /var/state/haproxy/ + # log using a syslog socket + log /dev/log local0 info + log /dev/log local0 notice + tune.ssl.default-dh-param 2048 + ssl-default-bind-ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!3DES:!MD5:!PSK + hard-stop-after 30s +defaults + log global + # https://cbonte.github.io/haproxy-dconv/1.7/configuration.html#4.2-option%20abortonclose + # https://github.com/voyagermesh/voyager/pull/403 + option dontlognull + option http-server-close + # Timeout values + timeout client 50s + timeout client-fin 50s + timeout connect 5s + timeout server 50s + timeout tunnel 50s + # Configure error files + # default traffic mode is http + # mode is overwritten in case of tcp services + mode http +frontend http-0_0_0_0-80 + bind *:80 + mode http + option httplog + option forwardfor + acl is_proxy_https hdr(X-Forwarded-Proto) https + acl acl_voyager.appscode.test hdr(host) -i voyager.appscode.test + acl acl_voyager.appscode.test hdr(host) -i voyager.appscode.test:80 + acl acl_voyager.appscode.test:foo path_beg /foo + redirect scheme https code 308 if ! is_proxy_https acl_voyager.appscode.test acl_voyager.appscode.test:foo + use_backend test-server.default:80 if acl_voyager.appscode.test acl_voyager.appscode.test:foo +backend test-server.default:80 + server pod-test-server-68ddc845cd-6rnwn 172.17.0.4:80 +``` \ No newline at end of file diff --git a/content/docs/v2024.3.18/guides/ingress/configuration/whitelist.md b/content/docs/v2024.3.18/guides/ingress/configuration/whitelist.md new file mode 100644 index 000000000..36337a3e8 --- /dev/null +++ b/content/docs/v2024.3.18/guides/ingress/configuration/whitelist.md @@ -0,0 +1,101 @@ +--- +title: Configure Ingress Whitelist +menu: + docs_v2024.3.18: + identifier: whitelist-configuration + name: Whitelist + parent: config-ingress + weight: 10 +product_name: voyager +menu_name: docs_v2024.3.18 +section_menu_id: guides +info: + cli: v0.0.15 + installer: v2024.3.18 + version: v2024.3.18 +--- + +> New to Voyager? Please start [here](/docs/v2024.3.18/concepts/overview). + +# Whitelist Source Range + +You can specify the allowed client IP source ranges through the `ingress.appscode.com/whitelist-source-range` annotation. The value is a space separated list of CIDRs, e.g. `192.168.20.0/24 192.168.10.3`. This rule will be applied globally for all frontends. To apply for a specific frontend, you need to manually add `src acl` using [frontend-rules](frontend-rule.md). + +## Ingress Example + +```yaml +apiVersion: voyager.appscode.com/v1 +kind: Ingress +metadata: + name: test-ingress + namespace: default + annotations: + ingress.appscode.com/whitelist-source-range: "192.168.20.0/24 192.168.10.3" +spec: + rules: + - host: voyager.appscode.test + http: + paths: + - path: /foo + backend: + service: + name: test-server + port: + number: 80 +``` + +It will add following `src acl` to all frontends in generated haproxy.cfg: + +```ini +acl network_allowed src 192.168.20.0/24 192.168.10.3 +block if restricted_page !network_allowed +``` + +Generated haproxy.cfg: + +```ini +# HAProxy configuration generated by https://github.com/appscode/voyager +# DO NOT EDIT! +global + daemon + stats socket /tmp/haproxy + server-state-file global + server-state-base /var/state/haproxy/ + # log using a syslog socket + log /dev/log local0 info + log /dev/log local0 notice + tune.ssl.default-dh-param 2048 + ssl-default-bind-ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!3DES:!MD5:!PSK + hard-stop-after 30s +defaults + log global + # https://cbonte.github.io/haproxy-dconv/1.7/configuration.html#4.2-option%20abortonclose + # https://github.com/voyagermesh/voyager/pull/403 + option dontlognull + option http-server-close + # Timeout values + timeout client 50s + timeout client-fin 50s + timeout connect 5s + timeout server 50s + timeout tunnel 50s + # Configure error files + # default traffic mode is http + # mode is overwritten in case of tcp services + mode http +frontend http-0_0_0_0-80 + bind *:80 + mode http + # Add whitelisted ips + acl network_allowed src 192.168.20.0/24 192.168.10.3 + block if restricted_page !network_allowed + option httplog + option forwardfor + acl is_proxy_https hdr(X-Forwarded-Proto) https + acl acl_voyager.appscode.test hdr(host) -i voyager.appscode.test + acl acl_voyager.appscode.test hdr(host) -i voyager.appscode.test:80 + acl acl_voyager.appscode.test:foo path_beg /foo + use_backend test-server.default:80 if acl_voyager.appscode.test acl_voyager.appscode.test:foo +backend test-server.default:80 + server pod-test-server-68ddc845cd-x7dtv 172.17.0.4:80 +``` \ No newline at end of file diff --git a/content/docs/v2024.3.18/guides/ingress/debugging.md b/content/docs/v2024.3.18/guides/ingress/debugging.md new file mode 100644 index 000000000..9a7f9145a --- /dev/null +++ b/content/docs/v2024.3.18/guides/ingress/debugging.md @@ -0,0 +1,2 @@ +> New to Voyager? Please start [here](/docs/v2024.3.18/concepts/overview). + diff --git a/content/docs/v2024.3.18/guides/ingress/dns/_index.md b/content/docs/v2024.3.18/guides/ingress/dns/_index.md new file mode 100755 index 000000000..ea7b6c9b7 --- /dev/null +++ b/content/docs/v2024.3.18/guides/ingress/dns/_index.md @@ -0,0 +1,15 @@ +--- +title: Configuring External DNS +menu: + docs_v2024.3.18: + identifier: dns-ingress + name: DNS + parent: ingress-guides + weight: 30 +menu_name: docs_v2024.3.18 +info: + cli: v0.0.15 + installer: v2024.3.18 + version: v2024.3.18 +--- + diff --git a/content/docs/v2024.3.18/guides/ingress/dns/external-dns.md b/content/docs/v2024.3.18/guides/ingress/dns/external-dns.md new file mode 100644 index 000000000..6cd29bee3 --- /dev/null +++ b/content/docs/v2024.3.18/guides/ingress/dns/external-dns.md @@ -0,0 +1,88 @@ +--- +title: Configure External DNS for Kubernetes Ingress +menu: + docs_v2024.3.18: + identifier: external-dns-dns + name: External DNS + parent: dns-ingress + weight: 10 +product_name: voyager +menu_name: docs_v2024.3.18 +section_menu_id: guides +info: + cli: v0.0.15 + installer: v2024.3.18 + version: v2024.3.18 +--- + +> New to Voyager? Please start [here](/docs/v2024.3.18/concepts/overview). + +# Configuring external DNS servers + +[external-dns](https://github.com/kubernetes-incubator/external-dns) project can be used to configure external DNS servers for Voyager managed ingresses. + +## LoadBalancer Ingress + +For a [LoadBalancer](/docs/v2024.3.18/concepts/ingress-types/loadbalancer) type Ingress, apply `"external-dns.alpha.kubernetes.io/hostname"` annotation on the **service** that exposes HAProxy pods. This service should have a name like `voyager-{ingress-name}` in the same namespace of the Ingress object. Since, Voyager uses its own CRD for Ingress, `external-dns` project must use the service to discover loadbalancer ip. + +```yaml +apiVersion: voyager.appscode.com/v1 +kind: Ingress +metadata: + name: test-ingress-voyager + namespace: vdimov-dev + annotations: + ingress.appscode.com/annotations-service: | + { + "external-dns.alpha.kubernetes.io/hostname" : "voyager.example.com,voyager-1.example.com,voyager-2.example.com" + } + ingress.appscode.com/replicas: '2' +spec: + rules: + - host: voyager.example.com + http: + paths: + - backend: + service: + name: web + port: + number: 80 +``` + +## NodePort Ingress + +Since [v0.5.3](https://github.com/kubernetes-incubator/external-dns/releases/tag/v0.5.3), `external-dns` supports [NodePort](/docs/v2024.3.18/concepts/ingress-types/nodeport) ingress. + + +## HostPort Ingress + +[HostPort](/docs/v2024.3.18/concepts/ingress-types/hostport) type Ingress is [supported by external-dns](https://github.com/kubernetes-incubator/external-dns/blob/v0.5.2/docs/tutorials/hostport). Here, apply `"external-dns.alpha.kubernetes.io/hostname"` annotation on the HAProxy **services**. + +```yaml +apiVersion: voyager.appscode.com/v1 +kind: Ingress +metadata: + name: test-ingress-voyager + namespace: vdimov-dev + annotations: + ingress.appscode.com/type: HostPort + ingress.appscode.com/annotations-service: | + { + "external-dns.alpha.kubernetes.io/hostname" : "voyager.example.com,voyager-1.example.com,voyager-2.example.com" + } + ingress.appscode.com/replicas: '2' +spec: + rules: + - host: voyager.example.com + http: + paths: + - backend: + service: + name: web + port: + number: 80 +``` + +## Internal Ingress + +[Internal](/docs/v2024.3.18/concepts/ingress-types/internal) ingress is not accessible from outside a cluster. Hence, there is nothing to configure in external DNS servers. diff --git a/content/docs/v2024.3.18/guides/ingress/graceful-reload.md b/content/docs/v2024.3.18/guides/ingress/graceful-reload.md new file mode 100644 index 000000000..3b6d6d54b --- /dev/null +++ b/content/docs/v2024.3.18/guides/ingress/graceful-reload.md @@ -0,0 +1,184 @@ +--- +title: Avoid 503 with Graceful Server Shutdown | Voyager +menu: + docs_v2024.3.18: + identifier: avoid-503-with-server-graceful-shutdown + name: Avoid 503 with Graceful Server Shutdown + parent: ingress-guides + weight: 50 +product_name: voyager +menu_name: docs_v2024.3.18 +section_menu_id: guides +info: + cli: v0.0.15 + installer: v2024.3.18 + version: v2024.3.18 +--- + +> New to Voyager? Please start [here](/docs/v2024.3.18/concepts/overview). + +# Avoid 503 with Graceful Server Shutdown + +Multiple Voyager users have been facing an issue regarding getting 503 response randomly after updating ingress. So, we looked into what was going wrong and here's the solution and the reason behind this problem. + +HAProxy supports both graceful and hard stop. For Voyager, we are using graceful stop. The graceful stop is triggered when the SIGUSR1 signal is sent to the haproxy process. It consists in only unbinding from listening ports, but continue to process existing connections until they close. Once the last connection is closed, the process leaves. + +So suppose you scaled down or deleted some of your backend application pods. These events will happen simultaneously: + +1. The pod will go into terminating status and drop all the existing connections and you will get 503 response. +2. It will be removed from service endpoint. +3. HAProxy configuration will be reloaded - the dead pods will be removed from the config (and new pods will be inserted if that's the case). + +If you do have a graceful shutdown for your backend pods, as soon as your backend pod dies, it will be removed from your service endpoint and HAProxy configuration - but the pod will (hopefully) finish serving the existing requests. + +Here are 2 ways for the pod to finish serving existing requests. + +### 1. Catch SIGTERM and Ignore + +So how are we going to implement the graceful shutdown of the backend server? + +From kubernetes doc: + +> When a user requests deletion of a Pod, the system records the intended grace period before the Pod is allowed to be forcefully killed, and a TERM signal is sent to the main process in each container. Once the grace period has expired, the KILL signal is sent to those processes, and the Pod is then deleted from the API server. + +One difference between SIGTERM and SIGKILL is - the process can register a handler for SIGTERM and choose to ignore it. But SIGKILL cannot be ignored. + +So when the containers in your pod receives SIGTERM, in default state when you don't catch it, the container is killed immediately. But as you want to finish serving existing connections, you need to catch this signal to wait for grace period to be finished (mentioned by `terminationGracePeriodSeconds` in pod's spec). After this period ends, SIGKILL is sent to the container and there's nothing else you can do to stop it from being dead! + +One thing worth mentioning here, as soon as a pod receive SIGTERM it goes into `terminating` state no matter whether you handle this signal or not (and new pods are created if your deployment needs). Also, simultaneously with this, this pod is removed from endpoints list for corresponding service. + +Now, what are you going to do after catching SIGTERM? Here are two samples: + +#### i. Add Sleep + +A simple example is shown here written Golang. Let's say you have one server running like this: + +```go +http.ListenAndServe(":8080", nil) +``` + +Put that in a goroutine and add these lines to your main process + +```go +go http.ListenAndServe(":8080", nil) + +ch := make(chan os.Signal, 1) +signal.Notify(ch, syscall.SIGTERM) + +<-ch +time.Sleep(30 * time.Second) +``` + +This `30` came from the default value of `terminationGracePeriodSeconds`. These lines are going to catch the SIGTERM signal and make sure that your server in the other process runs until the grace period ends. + +Full code: + +```go +package main + +import ( + "fmt" + "log" + "net/http" + "os" + "os/signal" + "syscall" + "time" +) + +func handler(w http.ResponseWriter, r *http.Request) { + log.Print("Hello world received a request.") + fmt.Fprintf(w, "Hello %s!\n", "world") +} + +func main() { + + log.Print("Hello world sample started.") + http.HandleFunc("/", handler) + go http.ListenAndServe(":8080", nil) + + ch := make(chan os.Signal, 1) + signal.Notify(ch, os.Interrupt, syscall.SIGTERM) + + <-ch + time.Sleep(30 * time.Second) + +} +``` + +#### ii. Add Server Shutdown + +You can also gracefully shutdown each server individually after catching SIGTERM. + +```go +package main + +import ( + "context" + "fmt" + "log" + "net/http" + "os" + "os/signal" + "syscall" + "time" +) + +type httpHandler struct { +} + +func (h httpHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) { + time.Sleep(5 * time.Second) + log.Print("Hello world received a request.") + fmt.Fprintf(w, "Hello %s!\n", "world") +} + +func main() { + + log.Print("Hello world sample started.") + server := &http.Server{Addr: ":8080", Handler: httpHandler{}} + go server.ListenAndServe() + + ch := make(chan os.Signal, 1) + signal.Notify(ch, os.Interrupt, syscall.SIGTERM) + + <-ch + + time.Sleep(5 * time.Second) // in case pod receives new request + + ctx, _ := context.WithTimeout(context.Background(), 20*time.Second) + if err := server.Shutdown(ctx); err != nil { + } + +} +``` + +When `server.Shutdown(ctx)` is called, it stops taking new requests and tries to finish serving all current requests, but doesn't wait more than 20 seconds. + +### 2. Add a preStop hook + +You can also add a prestop hook to container to make sure the container isn't killed until grace period ends. + +```go +spec: + containers: + - image: kfoozminus/graceful:v1 + imagePullPolicy: Always + lifecycle: + preStop: + exec: + command: + - sleep + - "30" + name: nginx + resources: {} + terminationMessagePath: /dev/termination-log + terminationMessagePolicy: File + dnsPolicy: ClusterFirst + restartPolicy: Always + schedulerName: default-scheduler + securityContext: {} + terminationGracePeriodSeconds: 30 +``` + +preStop is executed before SIGTERM is sent. So in this case, SIGTERM is sent 30s after shutdown is initiated. The preStop hook cannot block more than the grace period though. If "sleep 60" was executed as preStop hook, the pod will terminate after 30s, that is, the grace period. diff --git a/content/docs/v2024.3.18/guides/ingress/grpc.md b/content/docs/v2024.3.18/guides/ingress/grpc.md new file mode 100644 index 000000000..9a7f9145a --- /dev/null +++ b/content/docs/v2024.3.18/guides/ingress/grpc.md @@ -0,0 +1,2 @@ +> New to Voyager? Please start [here](/docs/v2024.3.18/concepts/overview). + diff --git a/content/docs/v2024.3.18/guides/ingress/http/_index.md b/content/docs/v2024.3.18/guides/ingress/http/_index.md new file mode 100644 index 000000000..edfe8e388 --- /dev/null +++ b/content/docs/v2024.3.18/guides/ingress/http/_index.md @@ -0,0 +1,15 @@ +--- +title: HTTP +menu: + docs_v2024.3.18: + identifier: http-ingress + name: HTTP + parent: ingress-guides + weight: 10 +menu_name: docs_v2024.3.18 +info: + cli: v0.0.15 + installer: v2024.3.18 + version: v2024.3.18 +--- + diff --git a/content/docs/v2024.3.18/guides/ingress/http/blue-green-deployment.md b/content/docs/v2024.3.18/guides/ingress/http/blue-green-deployment.md new file mode 100644 index 000000000..0bf145bcf --- /dev/null +++ b/content/docs/v2024.3.18/guides/ingress/http/blue-green-deployment.md @@ -0,0 +1,138 @@ +--- +title: Blue Green Deployments | Kubernetes Ingress +menu: + docs_v2024.3.18: + identifier: blue-green-http + name: Blue Green Deployment + parent: http-ingress + weight: 60 +product_name: voyager +menu_name: docs_v2024.3.18 +section_menu_id: guides +info: + cli: v0.0.15 + installer: v2024.3.18 + version: v2024.3.18 +--- + +> New to Voyager? Please start [here](/docs/v2024.3.18/concepts/overview). + +# Blue Green Deployments + +Voyager supports Blue Green deployments using weighted loadbalancing for backend pods. Following example illustrates a weighted loadbalancer scenario. + +```yaml +apiVersion: apps/v1 +kind: Deployment +metadata: + labels: + app: deployment + app-version: v1 +  name: deployment-1 + namespace: default +spec: + replicas: 1 + selector: + matchLabels: + app: deployment + app-version: v1 + template: + metadata: + labels: + app: deployment + app-version: v1 + annotations: + ingress.appscode.com/backend-weight: "90" + spec: + containers: + - env: + - name: POD_NAME + valueFrom: + fieldRef: + apiVersion: v1 + fieldPath: metadata.name + image: appscode/test-server:1.1 + imagePullPolicy: IfNotPresent + name: server + ports: + - containerPort: 8080 + name: http-1 + protocol: TCP +--- +apiVersion: apps/v1 +kind: Deployment +metadata: + labels: + app: deployment + app-version: v2 + name: deployment-2 + namespace: default +spec: + replicas: 1 + selector: + matchLabels: + app: deployment + app-version: v2 + template: + metadata: + labels: + app: deployment + app-version: v2 + annotations: + ingress.appscode.com/backend-weight: "10" + spec: + containers: + - env: + - name: POD_NAME + valueFrom: + fieldRef: + apiVersion: v1 + fieldPath: metadata.name + image: appscode/test-server:1.1 + imagePullPolicy: IfNotPresent + name: server + ports: + - containerPort: 8080 + name: http-1 + protocol: TCP +``` + +Two different workload with the annotation `ingress.appscode.com/backend-weight` and one single service pointing to them + +```yaml +apiVersion: v1 +kind: Service +metadata: + name: deployment-svc + namespace: default +spec: + ports: + - name: http-1 + port: 80 + protocol: TCP + targetPort: 8080 + selector: + app: deployment +``` + +The following ingress will forward 90% traffic to `deployment-1` and 10% to `deployment-2` + +```yml +apiVersion: voyager.appscode.com/v1 +kind: Ingress +metadata: + name: test-ing + namespace: default +spec: + rules: + - http: + paths: + - backend: + service: + name: deployment-svc + port: + number: 80 + path: /testpath +``` + +The default [weight](http://cbonte.github.io/haproxy-dconv/1.8/configuration.html#weight) is 1, and the maximal value is 256. A value of 0 means the server will not participate in load-balancing but will still accept persistent connections. \ No newline at end of file diff --git a/content/docs/v2024.3.18/guides/ingress/http/cors.md b/content/docs/v2024.3.18/guides/ingress/http/cors.md new file mode 100644 index 000000000..dfe1d41f8 --- /dev/null +++ b/content/docs/v2024.3.18/guides/ingress/http/cors.md @@ -0,0 +1,134 @@ +--- +title: CORS | Kubernetes Ingress +menu: + docs_v2024.3.18: + identifier: cors-http + name: CORS + parent: http-ingress + weight: 30 +product_name: voyager +menu_name: docs_v2024.3.18 +section_menu_id: guides +info: + cli: v0.0.15 + installer: v2024.3.18 + version: v2024.3.18 +--- + +> New to Voyager? Please start [here](/docs/v2024.3.18/concepts/overview). + +# CORS + +Voyager can enable and configure CORS for all HTTP frontends via following ingress annotations: + +- `ingress.appscode.com/enable-cors`: If set to `true` enables CORS for all HTTP Frontend. By default CORS is disabled. +- `ingress.appscode.com/cors-allow-headers`: Specifies allowed headers when CORS enabled. Default value is `DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Authorization`. +- `ingress.appscode.com/cors-allow-methods`: Specifies allowed methods when CORS enabled. Default value is `GET,PUT,POST,DELETE,PATCH,OPTIONS`. +- `ingress.appscode.com/cors-allow-origin`: Specifies allowed origins when CORS enabled. Default value is `*`. + +## Ingress Example + +First create a test-server and expose it via service: + +```bash +$ kubectl run test-server --image=gcr.io/google_containers/echoserver:1.8 +deployment "test-server" created + +$ kubectl expose deployment test-server --type=LoadBalancer --port=80 --target-port=8080 +service "test-server" exposed +``` + +Then create the ingress: + +```yaml +$ kubectl apply -f test-ingress.yaml + +apiVersion: voyager.appscode.com/v1 +kind: Ingress +metadata: + name: test-ingress + namespace: default + annotations: + ingress.appscode.com/enable-cors: "true" + ingress.appscode.com/cors-allow-headers: "Keep-Alive,User-Agent" + ingress.appscode.com/cors-allow-methods: "GET,PUT" + ingress.appscode.com/cors-allow-origin: "http://foo.example" +spec: + rules: + - host: voyager.appscode.test + http: + paths: + - path: /foo + backend: + service: + name: test-server + port: + number: 80 +``` + +```bash +$ kubectl get pods,svc +NAME READY STATUS RESTARTS AGE +po/test-server-68ddc845cd-x7dtv 1/1 Running 0 1d +po/voyager-test-ingress-5b758664f6-hjwjb 1/1 Running 0 20m + +NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE +svc/kubernetes ClusterIP 10.96.0.1 443/TCP 3d +svc/test-server LoadBalancer 10.105.13.31 80:30390/TCP 1d +svc/voyager-test-ingress LoadBalancer 10.106.53.141 80:32218/TCP 1h + +$ minikube service --url voyager-test-ingress +http://192.168.99.100:32218 +``` + +Applying the annotation in ingress will have the following effects, will add the CORS Header in the response. + +```bash +$ curl -v -H 'Host: voyager.appscode.test' 192.168.99.100:32218/foo +* Trying 192.168.99.100... +* Connected to 192.168.99.100 (192.168.99.100) port 32218 (#0) +> GET /foo HTTP/1.1 +> Host: voyager.appscode.test +> User-Agent: curl/7.47.0 +> Accept: */* +> +< HTTP/1.1 200 OK +< Date: Thu, 15 Feb 2018 05:06:49 GMT +< Content-Type: text/plain +< Transfer-Encoding: chunked +< Server: echoserver +< Access-Control-Allow-Origin: http://foo.example +< Access-Control-Allow-Methods: GET,PUT +< Access-Control-Allow-Credentials: true +< Access-Control-Allow-Headers: Keep-Alive,User-Agent +< + + +Hostname: test-server-68ddc845cd-x7dtv + +Pod Information: + -no pod information available- + +Server values: + server_version=nginx: 1.13.3 - lua: 10008 + +Request Information: + client_address=172.17.0.5 + method=GET + real path=/foo + query= + request_version=1.1 + request_uri=http://voyager.appscode.test:8080/foo + +Request Headers: + accept=*/* + connection=close + host=voyager.appscode.test + user-agent=curl/7.47.0 + x-forwarded-for=172.17.0.1 + +Request Body: + -no body in request- + +* Connection #0 to host 192.168.99.100 left intact +``` \ No newline at end of file diff --git a/content/docs/v2024.3.18/guides/ingress/http/custom-http-port.md b/content/docs/v2024.3.18/guides/ingress/http/custom-http-port.md new file mode 100644 index 000000000..4e6de3e84 --- /dev/null +++ b/content/docs/v2024.3.18/guides/ingress/http/custom-http-port.md @@ -0,0 +1,76 @@ +--- +title: Custom HTTP Port | Kubernetes Ingress +menu: + docs_v2024.3.18: + identifier: custom-port-http + name: Custom HTTP Port + parent: http-ingress + weight: 35 +product_name: voyager +menu_name: docs_v2024.3.18 +section_menu_id: guides +info: + cli: v0.0.15 + installer: v2024.3.18 + version: v2024.3.18 +--- + +> New to Voyager? Please start [here](/docs/v2024.3.18/concepts/overview). + +# Custom HTTP Port + +Voyager 3.2+ supports using any non-standard port (beyond 80 and 443) for L7 traffic. If no port is specified, port 80 or 443 will be used depending on whether TLS is used or not. + +```yaml +apiVersion: voyager.appscode.com/v1 +kind: Ingress +metadata: + name: test-ingress + namespace: default +spec: + rules: + - host: one.example.com + http: + port: '8989' + paths: + - path: /admin + backend: + service: + name: admin-service + port: + number: 80 + - path: / + backend: + service: + name: test-service + port: + number: 80 + - host: other.example.com + http: + port: '8989' + paths: + - backend: + service: + name: other-service + port: + number: 80 + - host: one.example.com + http: + port: '4343' + paths: + - backend: + service: + name: test-service + port: + number: 80 + +``` + +For this configuration, the loadbalancer will listen to `8989` and `4343` port for incoming HTTP connections, and will +pass any request coming to it to the desired backend. + +### Restrictions: +- For one Ingress resource you cannot have multiple `tcp` rules listening to same port, even if they do not have +same `host`. + +- Different hosts can use the same port for `http` rules diff --git a/content/docs/v2024.3.18/guides/ingress/http/external-svc.md b/content/docs/v2024.3.18/guides/ingress/http/external-svc.md new file mode 100644 index 000000000..bb506a902 --- /dev/null +++ b/content/docs/v2024.3.18/guides/ingress/http/external-svc.md @@ -0,0 +1,165 @@ +--- +title: Using External Service as Ingress Backend | Kubernetes Ingress +menu: + docs_v2024.3.18: + identifier: external-svc-backend-http + name: External SVC + parent: http-ingress + weight: 40 +product_name: voyager +menu_name: docs_v2024.3.18 +section_menu_id: guides +info: + cli: v0.0.15 + installer: v2024.3.18 + version: v2024.3.18 +--- + +> New to Voyager? Please start [here](/docs/v2024.3.18/concepts/overview). + +# Using External Service as Ingress Backend + +You can use an external service as a Backend for Kubernetes Ingress. There are 2 options depending on whether the external service has an external IP or DNS record. + +## Using External IP + +You can introduce any [external IP address as a Kubernetes service](https://github.com/kubernetes/kubernetes/issues/8631#issuecomment-104404768) by creating a matching Service and Endpoint object. Then you can use this service as a backend for your Ingress rules. + +```yaml +apiVersion: v1 +kind: Service +metadata: + name: external-ip + namespace: default +spec: + ports: + - name: app + port: 80 + protocol: TCP + targetPort: 9855 + clusterIP: None + type: ClusterIP +--- +apiVersion: v1 +kind: Endpoints +metadata: + name: external-ip + namespace: default +subsets: +- addresses: + # list all external ips for this service + - ip: 172.17.0.5 + ports: + - name: app + port: 9855 + protocol: TCP +``` + +Now, you can use this `external-ip` Service as a backend in your Ingress definition. For example: + +```yaml +apiVersion: voyager.appscode.com/v1 +kind: Ingress +metadata: + name: test-ings-rhvulnlb + namespace: default +spec: + defaultBackend: + service: + name: external-ip + port: + number: 80 +``` + + +## Using External Domain + +You can introduce an external service into a Kubernetes cluster by creating a [`ExternalName`](https://kubernetes.io/docs/concepts/services-networking/service/#publishing-services---service-types) type service. Voyager can forward traffic in both HTTP and TCP mode to the named domain in the `ExternalName` service by resolving dns. For static resolution of DNS record when HAProxy config is parsed, only use the `ingress.appscode.com/use-dns-resolver: "true"` annotation on the respective service. To periodically resolve dns, [DNS resolvers](https://cbonte.github.io/haproxy-dconv/1.7/configuration.html#5.3) must be configured using annotations on the service name. + +| Keys | Value | Default | Description | +|--------|-----------|----------|-------------| +| ingress.appscode.com/use-dns-resolver | bool | false for L7, always true for L4 | If set, DNS resolution will be used | +| ingress.appscode.com/dns-resolver-nameservers | array | | `Optional`. If set to an array of DNS nameservers, these will be used HAProxy to periodically resolve DNS. If not set, HAProxy parses the server line definition and matches a host name at start up. | +| ingress.appscode.com/dns-resolver-check-health | bool | | `Optional`. If nameservers are set, this defaults to `true`. Set to `false`, to disable periodic dns resolution. | +| ingress.appscode.com/dns-resolver-retries | integer | | `Optional`. If set, this defines the number of queries to send to resolve a server name before giving up. If not set, default value pre-configured by HAProxy is used. | +| ingress.appscode.com/dns-resolver-timeout | map | | `Optional`. If set, defines timeouts related to name resolution. Define value as '{ "event": "time" }'. For a list of valid events, please consult [HAProxy documentation](https://cbonte.github.io/haproxy-dconv/1.7/configuration.html#5.3.2-timeout). | +| ingress.appscode.com/dns-resolver-hold | map | | `Optional`. If set, Defines period during which the last name resolution should be kept based on last resolution status. Define value as '{ "status": "period" }'. For a list of valid status, please consult [HAProxy documentation](https://cbonte.github.io/haproxy-dconv/1.7/configuration.html#5.3.2-hold). | + +Following example illustrates the scenario. + +``` +apiVersion: v1 +kind: Service +metadata: + name: external-ns + namespace: default + annotations: + ingress.appscode.com/use-dns-resolver: "true" + ingress.appscode.com/dns-resolver-nameservers: '["8.8.8.8:53", "8.8.4.4:53"]' +spec: + externalName: google.com + type: ExternalName +``` + +If this service is used in ingress, the traffic will forward to google.com's address. + +```yaml +apiVersion: voyager.appscode.com/v1 +kind: Ingress +metadata: + name: test-ings-rhvulnlb + namespace: default +spec: + defaultBackend: + service: + name: external-ns + port: + number: 80 +``` + +### HTTP Redirect +If `ingress.appscode.com/use-dns-resolver` annotation is set to false or missing on a `ExternalName` type service, +Voyager resolves L7 ingress in the following ways. + +``` +apiVersion: v1 +kind: Service +metadata: + name: external-ns + namespace: default +spec: + externalName: google.com + type: ExternalName +``` + +#### Default redirect +If No BackendRules are configured for the endpoint, Voyager will configure HAProxy to redirect traffic to provided domain and port. +The redirect code will be 301 (permanent redirect). Scheme (http or https) used by endpoint is preserved on redirect. + +``` +backend: + service: + name: external-svc-non-dns + port: + number: 80 +``` + +The generated redirect line in HAProxy config: + +``` +http-request redirect location http[s]://{{e.ExternalName}}:{{ e.Port }} code 301 +``` + +#### Backend Rule + +If Backendrules are configured, Voyager will not auto generate any redirect rule. This allows users to use full spectrum of HTTP redirection options available in HAProxy. To learn about these option, consult [HAProxy documentation](https://www.haproxy.com/doc/aloha/7.0/haproxy/http_redirection.html#redirection-examples). + +``` +backend: + backendRules: + - http-request redirect location https://google.com code 302 + service: + name: external-svc-non-dns + port: + number: 80 +``` diff --git a/content/docs/v2024.3.18/guides/ingress/http/hsts.md b/content/docs/v2024.3.18/guides/ingress/http/hsts.md new file mode 100644 index 000000000..14f5cda56 --- /dev/null +++ b/content/docs/v2024.3.18/guides/ingress/http/hsts.md @@ -0,0 +1,229 @@ +--- +title: HSTS | Kubernetes Ingress +menu: + docs_v2024.3.18: + identifier: hsts-http + name: HSTS + parent: http-ingress + weight: 45 +product_name: voyager +menu_name: docs_v2024.3.18 +section_menu_id: guides +info: + cli: v0.0.15 + installer: v2024.3.18 + version: v2024.3.18 +--- + +> New to Voyager? Please start [here](/docs/v2024.3.18/concepts/overview). + +# HSTS + +HTTP Strict Transport Security (HSTS) is a web security policy mechanism which helps to protect websites against protocol downgrade attacks and cookie hijacking. It allows web servers to declare that web browsers (or other complying user agents) should only interact with it using secure +HTTPS connections, and never via the insecure HTTP protocol. HSTS is an IETF standards track protocol and is specified in RFC 6797. + +The HSTS Policy is communicated by the server to the user agent via an HTTPS response header field named "Strict-Transport-Security". +HSTS Policy specifies a period of time during which the user agent should only access the server in a secure fashion. + +Voyager can insert HSTS headers in http response if configured via following ingress annotations: + +- `ingress.appscode.com/hsts`: If `false` disables HSTS. By default HSTS is enabled. +- `ingress.appscode.com/hsts-preload`: If `true` enables HSTS preload. +- `ingress.appscode.com/hsts-include-subdomains`: If `true` HSTS rule applies to all of the site's sub domains. +- `ingress.appscode.com/hsts-max-age`: Specifies the time (in seconds) the browser should connect to the server using the HTTPS connection. You can also specify time with units such as "300ms", "-1.5h" or "2h45m". Valid time units are "ns", "us" (or "µs"), "ms", "s", "m", "h". Default value is `15768000` (6 months). + +## Ingress example + +First create a test-server and expose it via service: + +```bash +$ kubectl run test-server --image=gcr.io/google_containers/echoserver:1.8 +deployment "test-server" created + +$ kubectl expose deployment test-server --type=LoadBalancer --port=80 --target-port=8080 +service "test-server" exposed +``` + +Then create required tls-certificates: + +```bash +$ ./onessl-linux-amd64 create ca-cert +Wrote ca certificates in /home/appscode + +$ ./onessl-linux-amd64 create server-cert tls +Wrote server certificates in /home/appscode + +$ kubectl create secret tls tls-secret --key tls.key --cert tls.crt +secret "tls-secret" created +``` + +Now create the ingress with HSTS annotations: + +```yaml +$ kubectl apply -f test-ingress.yaml + +apiVersion: voyager.appscode.com/v1 +kind: Ingress +metadata: + name: test-ingress + namespace: default + annotations: + ingress.appscode.com/hsts: "true" + ingress.appscode.com/hsts-preload: "true" + ingress.appscode.com/hsts-include-subdomains: "true" + ingress.appscode.com/hsts-max-age: "100" +spec: + tls: + - secretName: tls-secret + hosts: + - voyager.appscode.test + rules: + - host: voyager.appscode.test + http: + paths: + - path: /foo + backend: + service: + name: test-server + port: + number: 80 +``` + +Generated haproxy.cfg: + +```ini +# HAProxy configuration generated by https://github.com/appscode/voyager +# DO NOT EDIT! +global + daemon + stats socket /tmp/haproxy + server-state-file global + server-state-base /var/state/haproxy/ + # log using a syslog socket + log /dev/log local0 info + log /dev/log local0 notice + tune.ssl.default-dh-param 2048 + ssl-default-bind-ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!3DES:!MD5:!PSK + hard-stop-after 30s +defaults + log global + # https://cbonte.github.io/haproxy-dconv/1.7/configuration.html#4.2-option%20abortonclose + # https://github.com/voyagermesh/voyager/pull/403 + option dontlognull + option http-server-close + # Timeout values + timeout client 50s + timeout client-fin 50s + timeout connect 5s + timeout server 50s + timeout tunnel 50s + # Configure error files + # default traffic mode is http + # mode is overwritten in case of tcp services + mode http +frontend http-0_0_0_0-80 + bind *:80 + mode http + option httplog + option forwardfor + acl is_proxy_https hdr(X-Forwarded-Proto) https + acl acl_voyager.appscode.test hdr(host) -i voyager.appscode.test + acl acl_voyager.appscode.test hdr(host) -i voyager.appscode.test:80 + acl acl_voyager.appscode.test:foo path_beg /foo + redirect scheme https code 308 if ! is_proxy_https acl_voyager.appscode.test acl_voyager.appscode.test:foo +frontend http-0_0_0_0-443 + bind *:443 ssl no-sslv3 no-tlsv10 no-tls-tickets crt /etc/ssl/private/haproxy/tls/ alpn http/1.1 + # Mark all cookies as secure + rsprep ^Set-Cookie:\ (.*) Set-Cookie:\ \1;\ Secure + # Add the HSTS header with a 6 month default max-age + http-response set-header Strict-Transport-Security max-age=100;\ preload;\ includeSubDomains + mode http + option httplog + option forwardfor + acl is_proxy_https hdr(X-Forwarded-Proto) https + acl acl_voyager.appscode.test hdr(host) -i voyager.appscode.test + acl acl_voyager.appscode.test hdr(host) -i voyager.appscode.test:443 + acl acl_voyager.appscode.test:foo path_beg /foo + use_backend test-server.default:80 if acl_voyager.appscode.test acl_voyager.appscode.test:foo +backend test-server.default:80 + server pod-test-server-68ddc845cd-tpq7d 172.17.0.4:8080 +``` + +Get url for offshoot voyager service: + +```bash +$ kubectl get service voyager-test-ingress +NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE +voyager-test-ingress LoadBalancer 10.106.67.91 443:32273/TCP,80:31129/TCP 21m + +$ minikube service --url voyager-test-ingress +http://192.168.99.100:32273 +http://192.168.99.100:31129 +``` + +Applying the annotation in ingress will have the following effects, will add the HSTS Header in the response. + +```bash +$ curl -v -k -H 'Host: voyager.appscode.test' https://192.168.99.100:32273/foo + +* Trying 192.168.99.100... +* Connected to 192.168.99.100 (192.168.99.100) port 32273 (#0) +* found 148 certificates in /etc/ssl/certs/ca-certificates.crt +* found 597 certificates in /etc/ssl/certs +* ALPN, offering http/1.1 +* SSL connection using TLS1.2 / ECDHE_RSA_AES_128_GCM_SHA256 +* server certificate verification SKIPPED +* server certificate status verification SKIPPED +* common name: tls (does not match '192.168.99.100') +* server certificate expiration date OK +* server certificate activation date OK +* certificate public key: RSA +* certificate version: #3 +* subject: CN=tls +* start date: Tue, 13 Feb 2018 09:14:08 GMT +* expire date: Wed, 13 Feb 2019 09:14:15 GMT +* issuer: CN=ca +* compression: NULL +* ALPN, server accepted to use http/1.1 +> GET /foo HTTP/1.1 +> Host: voyager.appscode.test +> User-Agent: curl/7.47.0 +> Accept: */* +> +< HTTP/1.1 200 OK +< Date: Tue, 13 Feb 2018 11:42:02 GMT +< Content-Type: text/plain +< Transfer-Encoding: chunked +< Server: echoserver +< Strict-Transport-Security: max-age=100; preload; includeSubDomains +< + + +Hostname: test-server-68ddc845cd-tpq7d + +Pod Information: + -no pod information available- + +Server values: + server_version=nginx: 1.13.3 - lua: 10008 + +Request Information: + client_address=172.17.0.5 + method=GET + real path=/foo + query= + request_version=1.1 + request_uri=http://voyager.appscode.test:8080/foo + +Request Headers: + accept=*/* + connection=close + host=voyager.appscode.test + user-agent=curl/7.47.0 + x-forwarded-for=172.17.0.1 + +Request Body: + -no body in request- + +* Connection #0 to host 192.168.99.100 left intact +``` \ No newline at end of file diff --git a/content/docs/v2024.3.18/guides/ingress/http/http2.md b/content/docs/v2024.3.18/guides/ingress/http/http2.md new file mode 100644 index 000000000..83492c2dd --- /dev/null +++ b/content/docs/v2024.3.18/guides/ingress/http/http2.md @@ -0,0 +1,62 @@ +--- +title: HTTP2 | Kubernetes Ingress +menu: + docs_v2024.3.18: + identifier: h2-http + name: HTTP2 + parent: http-ingress + weight: 26 +product_name: voyager +menu_name: docs_v2024.3.18 +section_menu_id: guides +info: + cli: v0.0.15 + installer: v2024.3.18 + version: v2024.3.18 +--- + +> New to Voyager? Please start [here](/docs/v2024.3.18/concepts/overview). + +# Enable HTTP/2 on ingress resource + +Voyager can enable HTTP/2 from version >=8.0.1 + +To enable http2, you must first setup a [certificate](/docs/v2024.3.18/guides/certificate) (Let's Encrypt), or use an existing one. Then create an ingress object like below: + +```yaml +apiVersion: voyager.appscode.com/v1 +kind: Ingress +metadata: + name: haproxy-ingress # name of the ingress + namespace: default # namespace (optional) + annotations: + ingress.appscode.com/replicas: '2' + # ... other annotations +spec: + tls: + - hosts: + - host.example.com + secretName: tls-host + rules: + - host: host.example.com + http: + paths: + - path: "/" + backend: + service: + name: host-service + port: + number: 8000 + alpn: + - h2 + - http/1.1 + - http/1.0 +``` + +The important bit here is `alpn`. In this example the ingress can negotiate from `HTTP/2` all the way down to `HTTP/1.0`. If `alpn` isn't specified at all, the negotiated protocol will be `HTTP/1.1` (default). + +The above settings are reflected in the generated haproxy `ConfigMap`: + +```frontend http-0_0_0_0-443 + bind *:443 ssl no-sslv3 no-tlsv10 no-tls-tickets crt /etc/ssl/private/haproxy/tls/ alpn h2,http/1.1,http/1.0 +``` diff --git a/content/docs/v2024.3.18/guides/ingress/http/rewrite-rules.md b/content/docs/v2024.3.18/guides/ingress/http/rewrite-rules.md new file mode 100644 index 000000000..c58d6edf2 --- /dev/null +++ b/content/docs/v2024.3.18/guides/ingress/http/rewrite-rules.md @@ -0,0 +1,52 @@ +--- +title: Header and URL Rewriting | Voyager +menu: + docs_v2024.3.18: + identifier: rewrite-http + name: Rewrite Support + parent: http-ingress + weight: 25 +product_name: voyager +menu_name: docs_v2024.3.18 +section_menu_id: guides +info: + cli: v0.0.15 + installer: v2024.3.18 + version: v2024.3.18 +--- + +> New to Voyager? Please start [here](/docs/v2024.3.18/concepts/overview). + +# Header and URL Rewriting + +AppsCode Ingress support header and URL modification at the loadbalancer level. To ensure simplicity, +the backend rules follow the HAProxy syntax as it is. To add some rewrite rules for a HTTP path, follow the example below: + +```yaml +apiVersion: voyager.appscode.com/v1 +kind: Ingress +metadata: + name: test-ingress + namespace: default +spec: + rules: + - host: appscode.example.com + http: + paths: + - backend: + service: + name: test-service + port: + number: 80 + backendRules: + - http-request replace-uri ^/(.*)$ /testings/\\1 + - http-request set-header X-Forwarded-Host %[base] +``` + +The first rule specified in `backendRules` is used to modify the request url including the host. Current example +will add an `/testings` prefix in every request URI before forwarding it to backend. + +The second rule specified in `backendRules` will be applicable before going to the backend. +These rule will add header in the request if the header is already not present in the request header. +In the example `X-Forwarded-Host` header is added to the request if it is not already there, `%[base]` indicates +the base URL the load balancer received the requests. diff --git a/content/docs/v2024.3.18/guides/ingress/http/single-service.md b/content/docs/v2024.3.18/guides/ingress/http/single-service.md new file mode 100644 index 000000000..bee53e2e2 --- /dev/null +++ b/content/docs/v2024.3.18/guides/ingress/http/single-service.md @@ -0,0 +1,85 @@ +--- +title: Exposing Service | Kubernetes Ingress +menu: + docs_v2024.3.18: + identifier: single-svc-http + name: Single Service + parent: http-ingress + weight: 10 +product_name: voyager +menu_name: docs_v2024.3.18 +section_menu_id: guides +info: + cli: v0.0.15 + installer: v2024.3.18 + version: v2024.3.18 +--- + +> New to Voyager? Please start [here](/docs/v2024.3.18/concepts/overview). + +# Exposing Service via Ingress + +There are existing Kubernetes concepts which allows you to expose a single service. However, you can do so +through an AppsCode Ingress as well, simply by specifying a default backend with no rules. + +```yaml +apiVersion: voyager.appscode.com/v1 +kind: Ingress +metadata: + name: test-ingress + namespace: default +spec: + defaultBackend: + service: + name: test-service + port: + number: 80 +``` + +This will create a load balancer forwarding all traffic to `test-service` service, unconditionally. The +loadbalancer ip can be found inside `Status` Field of the loadbalancer described response. **If there are other +rules defined in Ingress then the loadbalancer will forward traffic to the `test-service` when no other `rule` is +matched.** + +**As Example:** + +```yaml +apiVersion: voyager.appscode.com/v1 +kind: Ingress +metadata: + name: test-ingress + namespace: default +spec: + defaultBackend: + service: + name: default-service + port: + number: 80 + rules: + - host: appscode.example.com + http: + paths: + - backend: + service: + name: test-service + port: + number: 80 + - host: default.example.com + http: + paths: + - backend: + service: + name: default-service + port: + number: 80 +``` +**Default Backend**: An Ingress with no rules, like the one shown in the previous section, sends all +traffic to a single default backend. You can use the same technique to tell a loadbalancer +where to find your website’s 404 page, by specifying a set of rules and a default backend. +Traffic is routed to your default backend if none of the Hosts in your Ingress matches the Host in +request header, and/or none of the paths match url of request. + +This Ingress will forward traffic to `test-service` if request comes from the host `appscode.example.com` only. +Other requests will be forwarded to default backend, `default-service`. + +Default Backend also supports `headerRules` and `rewriteRules`. diff --git a/content/docs/v2024.3.18/guides/ingress/http/source-range.md b/content/docs/v2024.3.18/guides/ingress/http/source-range.md new file mode 100644 index 000000000..e883e8271 --- /dev/null +++ b/content/docs/v2024.3.18/guides/ingress/http/source-range.md @@ -0,0 +1,75 @@ +--- +title: Loadbalancer Source Range | Kubernetes Ingress +menu: + docs_v2024.3.18: + name: Source Range + parent: http-ingress + weight: 20 +product_name: voyager +menu_name: docs_v2024.3.18 +section_menu_id: guides +info: + cli: v0.0.15 + installer: v2024.3.18 + version: v2024.3.18 +--- + +> New to Voyager? Please start [here](/docs/v2024.3.18/concepts/overview). + +# Loadbalancer Source Range + +When using an Ingress with `ingress.appscode.com/type: LoadBalancer` annotation, you can specify the IP ranges +that are allowed to access the load balancer by using `spec.loadBalancerSourceRanges`. +This field takes a list of IP CIDR ranges, which will be forwarded to Kubernetes, that will use to +configure firewall exceptions. This feature is currently supported on Google Compute Engine, +Google Container Engine and AWS. This field will be ignored if the cloud provider does not support the feature. + +Assuming 10.0.0.0/8 is the internal subnet. In the following example, a load balancer will be created +that is only accessible to cluster internal ips. This will not allow clients from outside of your +Kubernetes cluster to access the load balancer. + +``` +apiVersion: voyager.appscode.com/v1 +kind: Ingress +metadata: + name: test-ingress + namespace: default +spec: + rules: + - host: appscode.example.com + http: + paths: + - backend: + service: + name: test-service + port: + number: 80 + loadBalancerSourceRanges: + - 10.0.0.0/8 +``` + +In the following example, a load balancer will be created that is only accessible to clients with +IP addresses from 130.211.204.1 and 130.211.204.2. + +```yaml +apiVersion: voyager.appscode.com/v1 +kind: Ingress +metadata: + name: test-ingress + namespace: default +spec: + rules: + - host: appscode.example.com + http: + paths: + - backend: + service: + name: test-service + port: + number: 80 + loadBalancerSourceRanges: + - 130.211.204.1/32 + - 130.211.204.2/32 +``` + +NB: Currently there is a [bug in Kubernetes](https://github.com/kubernetes/kubernetes/issues/34218) due to which changing `loadBalancerSourceRanges` does not change SecurityGroup in AWS. diff --git a/content/docs/v2024.3.18/guides/ingress/http/statefulset-pod.md b/content/docs/v2024.3.18/guides/ingress/http/statefulset-pod.md new file mode 100644 index 000000000..dc9d43f52 --- /dev/null +++ b/content/docs/v2024.3.18/guides/ingress/http/statefulset-pod.md @@ -0,0 +1,129 @@ +--- +title: Forward Traffic to StatefulSet Pods | Kubernetes Ingress +menu: + docs_v2024.3.18: + identifier: statefulset-http + name: Statefulset Pod + parent: http-ingress + weight: 50 +product_name: voyager +menu_name: docs_v2024.3.18 +section_menu_id: guides +info: + cli: v0.0.15 + installer: v2024.3.18 + version: v2024.3.18 +--- + +> New to Voyager? Please start [here](/docs/v2024.3.18/concepts/overview). + +# Forward Traffic to StatefulSet + +## Forward Traffic to all Pods of a StatefulSet + +There is the usual way of forwarding traffic to a Service matching a StatefulSet. Create a Service with the pods label selector as +selector, and use the service name as Backend ServiceName. + +```yaml +apiVersion: apps/v1 +kind: StatefulSet +metadata: + name: http + namespace: default +spec: + serviceName: "nginx-set" + replicas: 2 + template: + metadata: + labels: + app: nginx + spec: + containers: + - name: nginx + image: gcr.io/google_containers/nginx-slim:0.8 + ports: + - containerPort: 80 + name: http +---- +apiVersion: v1 +kind: Service +metadata: + name: nginx-set + namespace: default + labels: + app: nginx +spec: + ports: + - port: 80 + name: http + clusterIP: None + selector: + app: nginx +``` + +Create another service for StatefulSets pods with selector. + +```yaml +apiVersion: v1 +kind: Service +metadata: + name: nginx-service + namespace: default + labels: + app: nginx +spec: + ports: + - port: 80 + name: http + selector: + app: nginx + +``` + +And Use the service in the ingress Backend service name, as: + +```yaml +backend: + service: + name: nginx-service + port: + number: 80 +``` + +That will forward traffic to your StatefulSets Pods. + + +## Forward Traffic to specific Pods of a StatefulSet +There is a way to send traffic to all or specific pod of a StatefulSet using voyager. You can set `hostNames` field in `Backend`, traffic will only forwarded to those pods. + +For Example the above StatefulSet will create two pod. +``` +web-0 +web-1 +``` +Those are the host names. + +Now Create a ingress that will only forward traffic to web-0 +```yaml +apiVersion: voyager.appscode.com/v1 +kind: Ingress +metadata: + name: test-ingress + namespace: default +spec: + rules: + - host: appscode.example.com + http: + paths: + - path: '/testPath' + backend: + hostNames: + - web-0 + service: + name: nginx-set #! There is no extra service. This + port: + number: 80 # is the Statefulset's Headless Service +``` + +Viola. Now all `/testPath` traffic will be sent to pod web-0 only. There is no extra service also. +The StatefulSet's Headless Service is enough. By using all the hostNames You can forward traffic to all pods. diff --git a/content/docs/v2024.3.18/guides/ingress/http/sticky-session.md b/content/docs/v2024.3.18/guides/ingress/http/sticky-session.md new file mode 100644 index 000000000..3b377b1b6 --- /dev/null +++ b/content/docs/v2024.3.18/guides/ingress/http/sticky-session.md @@ -0,0 +1,141 @@ +--- +title: Sticky Session | Kubernetes Ingress +menu: + docs_v2024.3.18: + identifier: sticky-http + name: Sticky Session + parent: http-ingress + weight: 55 +product_name: voyager +menu_name: docs_v2024.3.18 +section_menu_id: guides +info: + cli: v0.0.15 + installer: v2024.3.18 + version: v2024.3.18 +--- + +> New to Voyager? Please start [here](/docs/v2024.3.18/concepts/overview). + +# Sticky Session + +Voyager 3.2.0+ can configure [sticky connections](https://www.haproxy.com/blog/load-balancing-affinity-persistence-sticky-sessions-what-you-need-to-know/) in 2 modes. By applying annotation to an Ingress resource, you can configure all backends in that ingress to use sticky session. Or you can apply annotation to a service and configure +backends using that service to use sticky session. + +`ingress.appscode.com/sticky-session` annotations is deprecated in voyager 4.0.0+ and removed in 8.0.1+. Use `ingress.appscode.com/affinity` instead. + +## Sticky Ingress + +Applying annotation `ingress.appscode.com/affinity` to Ingress will configure all backends to support sticky session. + +```yaml +apiVersion: voyager.appscode.com/v1 +kind: Ingress +metadata: + name: test-ingress + namespace: default + annotations: + ingress.appscode.com/affinity: 'cookie' +spec: + rules: + - host: foo.bar.com + http: + paths: + - backend: + service: + name: s1 + port: + number: 80 + - host: bar.foo.com + http: + paths: + - backend: + service: + name: s2 + port: + number: 80 + - host: tcp.bar.com + tcp: + port: 9898 + backend: + service: + name: tcp-service + port: + number: 50077 +``` + +For the above ingress, all three backend connections will be sticky. + +## Sticky Service + +Applying annotation `ingress.appscode.com/affinity` to a service configures any backend +that uses that service to use sticky connection. As an example, the following Ingress will only +configure sticky connections for backends that use `s1` Service. + +```yaml +kind: Service +apiVersion: v1 +metadata: + name: s1 + namespace: default + annotations: + ingress.appscode.com/affinity: 'cookie' +spec: + selector: + app: app + ports: + - name: http + protocol: TCP + port: 80 + targetPort: 9376 + - name: ops + protocol: TCP + port: 5050 + targetPort: 5089 +``` + +```yaml +apiVersion: voyager.appscode.com/v1 +kind: Ingress +metadata: + name: test-ingress + namespace: default +spec: + rules: + - host: foo.bar.com + http: + paths: + - path: /admin + backend: + service: + name: s1 # Sticky, since service s1 is annotated + port: + number: 5050 + - path: / + backend: + service: + name: s1 # Sticky, since service s1 is annotated + port: + number: 80 + - host: bar.foo.com + http: + paths: + - backend: + service: + name: s2 # Not sticky + port: + number: 80 + - host: tcp.bar.com + tcp: + port: 9898 + backend: + service: + name: tcp-service # Not sticky + port: + number: 50077 +``` + +## Other Annotations + +- `ingress.appscode.com/session-cookie-name`: When affinity is set to `cookie`, the name of the cookie to use. +- `ingress.appscode.com/session-cookie-hash`: When affinity is set to `cookie`, the hash algorithm used: md5, sha, index. diff --git a/content/docs/v2024.3.18/guides/ingress/http/virtual-hosting.md b/content/docs/v2024.3.18/guides/ingress/http/virtual-hosting.md new file mode 100644 index 000000000..a030c394d --- /dev/null +++ b/content/docs/v2024.3.18/guides/ingress/http/virtual-hosting.md @@ -0,0 +1,121 @@ +--- +title: Virtual Hosting | Kubernetes Ingress +menu: + docs_v2024.3.18: + identifier: virtual-hosting-http + name: Virtual Hosting + parent: http-ingress + weight: 15 +product_name: voyager +menu_name: docs_v2024.3.18 +section_menu_id: guides +info: + cli: v0.0.15 + installer: v2024.3.18 + version: v2024.3.18 +--- + +> New to Voyager? Please start [here](/docs/v2024.3.18/concepts/overview). + +# Virtual Hosting + +## Hostname based Routing + +Name-based virtual hosts use multiple host names for the same IP address. + +``` +foo.bar.com --| |-> foo.bar.com s1:80 + | load balancer | +bar.foo.com --| |-> bar.foo.com s2:80 +``` +The following Ingress tells the backing loadbalancer to route requests based on the [Host header](https://tools.ietf.org/html/rfc7230#section-5.4). + +```yaml +apiVersion: voyager.appscode.com/v1 +kind: Ingress +metadata: + name: test-ingress + namespace: default +spec: + rules: + - host: foo.bar.com + http: + paths: + - backend: + service: + name: s1 + port: + number: 80 + - host: bar.foo.com + http: + paths: + - backend: + service: + name: s2 + port: + number: 80 +``` + +> AppsCode Ingress also support **wildcard** Name based virtual hosting. +If the `host` field is set to `*.bar.com`, Ingress will forward traffic for any subdomain of `bar.com`. +so `foo.bar.com` or `test.bar.com` will forward traffic to the desired backends. + +## Cross Namespace traffic routing +If your ingress in namespace `foo` and your application is in namespace `bar` you can still forward traffic. + +```yaml +apiVersion: voyager.appscode.com/v1 +kind: Ingress +metadata: + name: test-ingress + namespace: foo +spec: + rules: + - host: foo.bar.com + http: + paths: + - backend: + service: + name: s1.bar # serviceName.Namespace + port: + number: 80 +``` + +## Path based Routing + +A setup can be like: + +``` +foo.bar.com -> load balancer -> / foo s1:80 + / bar s2:80 +``` + +would require an Ingress such as: + +```yaml +apiVersion: voyager.appscode.com/v1 +kind: Ingress +metadata: + name: test-ingress + namespace: default +spec: + rules: + - host: appscode.example.com + http: + paths: + - path: "/foo" + backend: + service: + name: s1 + port: + number: 80 + - path: "/bar" + backend: + service: + name: s2 + port: + number: 80 +``` + +The Ingress controller will provision an implementation specific loadbalancer that satisfies the Ingress, +as long as the services (s1, s2) exist. diff --git a/content/docs/v2024.3.18/guides/ingress/monitoring/_index.md b/content/docs/v2024.3.18/guides/ingress/monitoring/_index.md new file mode 100644 index 000000000..187f0d905 --- /dev/null +++ b/content/docs/v2024.3.18/guides/ingress/monitoring/_index.md @@ -0,0 +1,15 @@ +--- +title: Monitoring +menu: + docs_v2024.3.18: + identifier: monitoring-ingress + name: Monitoring + parent: ingress-guides + weight: 40 +menu_name: docs_v2024.3.18 +info: + cli: v0.0.15 + installer: v2024.3.18 + version: v2024.3.18 +--- + diff --git a/content/docs/v2024.3.18/guides/ingress/monitoring/haproxy-stats.md b/content/docs/v2024.3.18/guides/ingress/monitoring/haproxy-stats.md new file mode 100644 index 000000000..7a14e70a7 --- /dev/null +++ b/content/docs/v2024.3.18/guides/ingress/monitoring/haproxy-stats.md @@ -0,0 +1,161 @@ +--- +title: Exposing HAProxy Stats +menu: + docs_v2024.3.18: + identifier: haproxy-stats-monitoring + name: Exposing HAProxy Stats + parent: monitoring-ingress + weight: 10 +product_name: voyager +menu_name: docs_v2024.3.18 +section_menu_id: guides +info: + cli: v0.0.15 + installer: v2024.3.18 + version: v2024.3.18 +--- + +> New to Voyager? Please start [here](/docs/v2024.3.18/concepts/overview). + +# Exposing HAProxy Stats + +To expose HAProxy stats, please use the following annotations: + +| Keys | Value | Default | Description | +|-----------------------------------------|---------|-----------|---------------------------------------------------| +| ingress.appscode.com/stats | bool | `"false"` | `Required`. If set, HAProxy stats will be exposed | +| ingress.appscode.com/stats-port | integer | `"56789"` | `Optional`. Port used to expose HAProxy stats | +| ingress.appscode.com/stats-secret-name | string | x | `Optional`. Secret used to provide username & password to secure HAProxy stats endpoint. Secret must contain keys `username` and `password` | + +If `ingress.appscode.com/stats: "true"` annotation is set, a ClusterIP service `voyager--stats` will be +created by Voyager operator. ClusterIP type service used to expose HAproxy stats. This ensures stats endpoint +is not exposed to the internet. + +## Accessing HAProxy Stats + +To access the HAPRoxy stats webpage, you can use port forwarding feature in kubectl. This article shows you the relevant steps using a minikube cluster. + + +### Before You Begin + +At first, you need to have a Kubernetes cluster, and the kubectl command-line tool must be configured to communicate with your cluster. If you do not already have a cluster, you can create one by using [Minikube](https://github.com/kubernetes/minikube). + +Now, deploy Voyager operator following instructions [here](/docs/v2024.3.18/setup/install). + +Note that the yaml files that are used in this tutorial, stored in [docs/examples](https://github.com/voyagermesh/voyager/tree/master/docs/examples/monitoring) folder in GitHub repository [voyagermesh/voyager](https://github.com/voyagermesh/voyager). + +To keep things isolated, this tutorial uses a separate namespace called `demo` throughout this tutorial. Run the following command to prepare your cluster for this tutorial: + +```bash +$ kubectl create namespace demo +namespace "demo" created + +$ kubectl get ns +NAME STATUS AGE +default Active 45m +demo Active 10s +kube-public Active 45m +voyager Active 45m +``` + +### Create Ingress + +We are going to use a nginx server as the backend. To deploy nginx server, run the following commands: + +```bash +kubectl run nginx --image=nginx -n demo +kubectl expose deployment nginx --name=web --port=80 --target-port=80 -n demo +``` + +Now create Ingress `ing.yaml` + +```bash +$ kubectl apply -f https://raw.githubusercontent.com/voyagermesh/voyager/{{< param "info.version" >}}/docs/examples/monitoring/stats-ing.yaml +ingress "stats-ing" created +``` + +```yaml +apiVersion: voyager.appscode.com/v1 +kind: Ingress +metadata: + name: stats-ing + namespace: demo + annotations: + ingress.appscode.com/type: 'NodePort' + ingress.appscode.com/stats: 'true' +spec: + rules: + - host: voyager.appscode.test + http: + paths: + - path: / + backend: + service: + name: web + port: + number: 80 +``` + +```bash +$ kubectl get pods,svc -n demo +NAME READY STATUS RESTARTS AGE +po/nginx-8586cf59-6hbx8 1/1 Running 0 4m +po/voyager-stats-ing-6cb494cc6d-q2rnn 1/1 Running 0 39s + +NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE +svc/voyager-stats-ing NodePort 10.110.126.89 80:31019/TCP 39s +svc/voyager-stats-ing-stats ClusterIP 10.107.28.13 56789/TCP 39s +svc/web ClusterIP 10.106.250.209 80/TCP 4m + +$ minikube ip +192.168.99.100 + +$ curl http://192.168.99.100:31019 -H "Host:voyager.appscode.test" + + + +Welcome to nginx! + + + +

Welcome to nginx!

+

If you see this page, the nginx web server is successfully installed and +working. Further configuration is required.

+ +

For online documentation and support please refer to +nginx.org.
+Commercial support is available at +nginx.com.

+ +

Thank you for using nginx.

+ + + +$ kubectl port-forward voyager-stats-ing-6cb494cc6d-q2rnn -n demo 56789:56789 +Forwarding from 127.0.0.1:56789 -> 56789 +Handling connection for 56789 +``` + +![stats-page](/docs/v2024.3.18/images/monitoring/stats-view.png) + + +### Cleaning up + +To cleanup the Kubernetes resources created by this tutorial, run: + +```bash +$ kubectl delete ns demo +namespace "demo" deleted +``` + +## Next Steps + +- To monitor your HAProxy pods using builtin [Prometheus](https://prometheus.io/) scraper, visit [here](/docs/v2024.3.18/guides/ingress/monitoring/using-builtin-prometheus). +- To monitor your HAProxy pods using [CoreOS Prometheus Operator](/docs/v2024.3.18/guides/ingress/monitoring/using-coreos-prometheus-operator), visit [here](/docs/v2024.3.18/guides/ingress/monitoring/using-coreos-prometheus-operator). +- To monitor Voyager operator using Prometheus, visit [here](/docs/v2024.3.18/guides/ingress/monitoring/operator-stats). diff --git a/content/docs/v2024.3.18/guides/ingress/monitoring/operator-profiling.md b/content/docs/v2024.3.18/guides/ingress/monitoring/operator-profiling.md new file mode 100644 index 000000000..918754922 --- /dev/null +++ b/content/docs/v2024.3.18/guides/ingress/monitoring/operator-profiling.md @@ -0,0 +1,95 @@ +--- +title: Profiling Voyager operator +menu: + docs_v2024.3.18: + identifier: operator-stats-profiling + name: Profiling Voyager operator + parent: monitoring-ingress + weight: 30 +product_name: voyager +menu_name: docs_v2024.3.18 +section_menu_id: guides +info: + cli: v0.0.15 + installer: v2024.3.18 + version: v2024.3.18 +--- + +> New to Voyager? Please start [here](/docs/v2024.3.18/concepts/overview). + +# Profiling Voyager operator + +Voyager operator serves [runtime profiling data](https://golang.org/pkg/net/http/pprof/) in the format expected by the pprof visualization tool on port `:8443`. The handled paths all begin with /debug/pprof/. + +Follow the steps below to expose profiling data: + +1. Give `system:anonymous` user access to `/debug/pprof/` paths. **This is not safe to do on a production cluster.** + +```yaml +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRole +metadata: + name: appscode:system:profiler +rules: +- nonResourceURLs: ["/debug/pprof/", "/debug/pprof/*"] + verbs: ["get", "post"] +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRoleBinding +metadata: + name: appscode:system:profiler +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: ClusterRole + name: appscode:system:profiler +subjects: +- apiGroup: rbac.authorization.k8s.io + kind: User + name: system:anonymous +``` + +```bash +$ kubectl auth reconcile -f docs/examples/monitoring/profiler.yaml +clusterrole.rbac.authorization.k8s.io "appscode:system:profiler" reconciled +clusterrolebinding.rbac.authorization.k8s.io "appscode:system:profiler" reconciled +``` + +2. Now, forward the port `:8443` to your workstation. + +``` +$ kubectl get pods -n voyager | grep voyager +voyager-operator-f89dcccdb-plvmt 1/1 Running 0 27m + +$ kubectl port-forward -n voyager voyager-operator-f89dcccdb-plvmt 8443 +Forwarding from 127.0.0.1:8443 -> 8443 +Forwarding from [::1]:8443 -> 8443 +``` + +3. Now, visit the url: https://127.0.0.1:8443/debug/pprof/ + +![operator-profiler](/docs/v2024.3.18/images/monitoring/operator-profiler.png) + +To look at a 30-second CPU profile: + +```bash +$ go tool pprof https+insecure://localhost:8443/debug/pprof/profile +Entering interactive mode (type "help" for commands, "o" for options) +(pprof) top10 +(pprof) pdf +``` + +To look at the heap profile: + +```bash +$ go tool pprof https+insecure://localhost:8443/debug/pprof/heap +(pprof) top10 +(pprof) pdf +``` + +4. Once you are done, remove access to `system:anonymous` user. + +```bash +$ kubectl delete -f docs/examples/monitoring/profiler.yaml +clusterrole.rbac.authorization.k8s.io "appscode:system:profiler" deleted +clusterrolebinding.rbac.authorization.k8s.io "appscode:system:profiler" deleted +``` diff --git a/content/docs/v2024.3.18/guides/ingress/monitoring/operator-stats.md b/content/docs/v2024.3.18/guides/ingress/monitoring/operator-stats.md new file mode 100644 index 000000000..a33f84dd5 --- /dev/null +++ b/content/docs/v2024.3.18/guides/ingress/monitoring/operator-stats.md @@ -0,0 +1,80 @@ +--- +title: Monitoring Voyager operator +menu: + docs_v2024.3.18: + identifier: operator-stats-monitoring + name: Monitoring Voyager operator + parent: monitoring-ingress + weight: 25 +product_name: voyager +menu_name: docs_v2024.3.18 +section_menu_id: guides +info: + cli: v0.0.15 + installer: v2024.3.18 + version: v2024.3.18 +--- + +> New to Voyager? Please start [here](/docs/v2024.3.18/concepts/overview). + +# Monitoring Voyager operator + +Voyager operator exposes Prometheus ready metrics via the following endpoints on port `:8443`: + +- `/metrics`: Scrape this to monitor operator. + +Follow the steps below to view the metrics: + +1. Give `system:anonymous` user access to `/metrics` url. **This is not safe to do on a production cluster.** + +```yaml +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRole +metadata: + name: appscode:system:metrics-collector +rules: +- nonResourceURLs: ["/metrics"] + verbs: ["get"] +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRoleBinding +metadata: + name: appscode:system:metrics-collector +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: ClusterRole + name: appscode:system:metrics-collector +subjects: +- apiGroup: rbac.authorization.k8s.io + kind: User + name: system:anonymous +``` + +```bash +$ kubectl auth reconcile -f docs/examples/monitoring/metrics-collector.yaml +clusterrole.rbac.authorization.k8s.io "appscode:system:metrics-collector" reconciled +clusterrolebinding.rbac.authorization.k8s.io "appscode:system:metrics-collector" reconciled +``` + +2. Now, forward the port `:8443` to your workstation. + +``` +$ kubectl get pods -n voyager | grep voyager +voyager-operator-f89dcccdb-plvmt 1/1 Running 0 27m + +$ kubectl port-forward -n voyager voyager-operator-f89dcccdb-plvmt 8443 +Forwarding from 127.0.0.1:8443 -> 8443 +Forwarding from [::1]:8443 -> 8443 +``` + +3. Now, visit the url: https://127.0.0.1:8443/metrics + +![operator-metrics](/docs/v2024.3.18/images/monitoring/operator-metrics.png) + +4. Once you are done, remove access to `system:anonymous` user. + +```bash +$ kubectl delete -f docs/examples/monitoring/metrics-collector.yaml +clusterrole.rbac.authorization.k8s.io "appscode:system:metrics-collector" deleted +clusterrolebinding.rbac.authorization.k8s.io "appscode:system:metrics-collector" deleted +``` diff --git a/content/docs/v2024.3.18/guides/ingress/monitoring/using-builtin-prometheus.md b/content/docs/v2024.3.18/guides/ingress/monitoring/using-builtin-prometheus.md new file mode 100644 index 000000000..bdb2a4c07 --- /dev/null +++ b/content/docs/v2024.3.18/guides/ingress/monitoring/using-builtin-prometheus.md @@ -0,0 +1,299 @@ +--- +title: Monitor HAProxy using Prometheus +menu: + docs_v2024.3.18: + identifier: builtin-prom-monitoring + name: Monitor HAProxy using Prometheus + parent: monitoring-ingress + weight: 15 +product_name: voyager +menu_name: docs_v2024.3.18 +section_menu_id: guides +info: + cli: v0.0.15 + installer: v2024.3.18 + version: v2024.3.18 +--- + +> New to Voyager? Please start [here](/docs/v2024.3.18/concepts/overview). + +# Monitor HAProxy using Prometheus + +This tutorial will show you how to monitor Voyager managed HAProxy pods using builtin [Prometheus](https://prometheus.io/) scraper. + +## Before You Begin + +At first, you need to have a Kubernetes cluster, and the kubectl command-line tool must be configured to communicate with your cluster. If you do not already have a cluster, you can create one by using [Minikube](https://github.com/kubernetes/minikube). + +Now, deploy Voyager operator following instructions [here](/docs/v2024.3.18/setup/install). + +To keep things isolated, this tutorial uses a separate namespace called `demo` throughout this tutorial. Run the following command to prepare your cluster for this tutorial: + +```bash +$ kubectl create namespace demo +namespace "demo" created + +$ kubectl get ns +NAME STATUS AGE +default Active 45m +demo Active 10s +kube-public Active 45m +voyager Active 45m +``` + +Note that the yaml files that are used in this tutorial, stored in [docs/examples](https://github.com/voyagermesh/voyager/tree/master/docs/examples/monitoring) folder in GitHub repository [voyagermesh/voyager](https://github.com/voyagermesh/voyager). + +## Create Ingress + +We are going to use a nginx server as the backend. To deploy nginx server, run the following commands: + +```bash +kubectl run nginx --image=nginx -n demo +kubectl expose deployment nginx --name=web --port=80 --target-port=80 -n demo +``` + +Now create Ingress `ing.yaml` + +```bash +$ kubectl apply -f https://raw.githubusercontent.com/voyagermesh/voyager/{{< param "info.version" >}}/docs/examples/monitoring/builtin-prometheus/ing.yaml +ingress "stats-ing" created +``` + +```yaml +apiVersion: voyager.appscode.com/v1 +kind: Ingress +metadata: + name: stats-ing + namespace: demo + annotations: + ingress.appscode.com/type: 'NodePort' + ingress.appscode.com/stats: 'true' + ingress.appscode.com/monitoring-agent: 'prometheus.io/builtin' +spec: + rules: + - host: voyager.appscode.test + http: + paths: + - path: / + backend: + service: + name: web + port: + number: 80 +``` + +Voyager operator watches for `Ingress` objects using Kubernetes api. When a `Ingress` object is created, Voyager operator will create a new HAProxy deployment and a NodePort Service with name `voyager-{ingress-name}`. Since `ingress.appscode.com/stats` annotation was configured, a stats service object is configured accordingly. Here, + +| Keys | Value | Default | Description | +|-----------------------------------------|---------|-----------|---------------------------------------------------| +| ingress.appscode.com/stats | bool | `"false"` | `Required`. If set, HAProxy stats will be exposed | +| ingress.appscode.com/monitoring-agent | string | | `Required`. Indicates the monitoring agent used. Here built-in scraper in [Prometheus](https://github.com/prometheus/prometheus) is used to monitor the HAProxy pods. Voyager operator will configure the stats service in a way that the Prometheus server will automatically find out the service endpoint and scrape metrics from exporter. | + +You can verify it running the following commands: + +```bash +$ kubectl get pods,svc -n demo +NAME READY STATUS RESTARTS AGE +po/nginx-8586cf59-r2m59 1/1 Running 0 1m +po/voyager-stats-ing-5bf6b54949-5zs4x 2/2 Running 0 1m + +NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE +svc/voyager-stats-ing NodePort 10.111.51.103 80:31094/TCP 1m +svc/voyager-stats-ing-stats ClusterIP 10.97.119.249 56789/TCP,56790/TCP 1m +svc/web ClusterIP 10.98.249.140 80/TCP 1m +``` + +```yaml +$ kubectl get svc -n demo voyager-stats-ing-stats -o yaml + +apiVersion: v1 +kind: Service +metadata: + annotations: + ingress.appscode.com/origin-api-schema: voyager.appscode.com/v1 + ingress.appscode.com/origin-name: stats-ing + monitoring.appscode.com/agent: prometheus.io/builtin + prometheus.io/path: /voyager.appscode.com/v1/namespaces/demo/ingresses/stats-ing/metrics + prometheus.io/port: "56790" + prometheus.io/scrape: "true" + creationTimestamp: 2018-02-25T21:48:24Z + labels: + feature: stats + origin: voyager + origin-api-group: voyager.appscode.com + origin-name: stats-ing + name: voyager-stats-ing-stats + namespace: demo + resourceVersion: "317" + selfLink: /api/v1/namespaces/demo/services/voyager-stats-ing-stats + uid: 9ac02c7c-1a75-11e8-a133-080027640ad5 +spec: + clusterIP: 10.97.119.249 + ports: + - name: stats + port: 56789 + protocol: TCP + targetPort: stats + - name: http + port: 56790 + protocol: TCP + targetPort: http + selector: + origin: voyager + origin-api-group: voyager.appscode.com + origin-name: stats-ing + sessionAffinity: None + type: ClusterIP +status: + loadBalancer: {} +``` + +We can see that the service contains these specific annotations. The Prometheus server will discover the exporter using these specifications. + +```yaml +prometheus.io/path: ... +prometheus.io/port: ... +prometheus.io/scrape: ... +``` + +## Deploy and configure Prometheus Server + +The Prometheus server is needed to configure so that it can discover endpoints of services. If a Prometheus server is already running in cluster and if it is configured in a way that it can discover service endpoints, no extra configuration will be needed. If there is no existing Prometheus server running, rest of this tutorial will create a Prometheus server with appropriate configuration. + +The configuration file to `Prometheus-Server` will be provided by `ConfigMap`. The below config map will be created: + +```yaml +apiVersion: v1 +kind: ConfigMap +metadata: + name: prometheus-server-conf + labels: + name: prometheus-server-conf + namespace: demo +data: + prometheus.yml: |- + global: + scrape_interval: 5s + evaluation_interval: 5s + scrape_configs: + - job_name: 'kubernetes-service-endpoints' + + kubernetes_sd_configs: + - role: endpoints + + relabel_configs: + - source_labels: [__meta_kubernetes_service_annotation_prometheus_io_scrape] + action: keep + regex: true + - source_labels: [__meta_kubernetes_service_annotation_prometheus_io_scheme] + action: replace + target_label: __scheme__ + regex: (https?) + - source_labels: [__meta_kubernetes_service_annotation_prometheus_io_path] + action: replace + target_label: __metrics_path__ + regex: (.+) + - source_labels: [__address__, __meta_kubernetes_service_annotation_prometheus_io_port] + action: replace + target_label: __address__ + regex: ([^:]+)(?::\d+)?;(\d+) + replacement: $1:$2 + - action: labelmap + regex: __meta_kubernetes_service_label_(.+) + - source_labels: [__meta_kubernetes_namespace] + action: replace + target_label: kubernetes_namespace + - source_labels: [__meta_kubernetes_service_name] + action: replace + target_label: kubernetes_name +``` + +```bash +$ kubectl create -f https://raw.githubusercontent.com/voyagermesh/voyager/{{< param "info.version" >}}/docs/examples/monitoring/builtin-prometheus/demo-1.yaml +configmap "prometheus-server-conf" created +``` + +Now, the below yaml is used to deploy Prometheus in kubernetes : + +```yaml +apiVersion: apps/v1 +kind: Deployment +metadata: + name: prometheus-server + namespace: demo +spec: + replicas: 1 + selector: + matchLabels: + app: prometheus-server + template: + metadata: + labels: + app: prometheus-server + spec: + containers: + - name: prometheus + image: prom/prometheus:v2.1.0 + args: + - "--config.file=/etc/prometheus/prometheus.yml" + - "--storage.tsdb.path=/prometheus/" + ports: + - containerPort: 9090 + volumeMounts: + - name: prometheus-config-volume + mountPath: /etc/prometheus/ + - name: prometheus-storage-volume + mountPath: /prometheus/ + volumes: + - name: prometheus-config-volume + configMap: + defaultMode: 420 + name: prometheus-server-conf + - name: prometheus-storage-volume + emptyDir: {} +``` + +Now, run the following command to deploy prometheus in kubernetes: + +```bash +$ kubectl create -f https://raw.githubusercontent.com/voyagermesh/voyager/{{< param "info.version" >}}/docs/examples/monitoring/builtin-prometheus/demo-2.yaml +clusterrole "prometheus-server" created +serviceaccount "prometheus-server" created +clusterrolebinding "prometheus-server" created +deployment "prometheus-server" created +service "prometheus-service" created +``` + +### Prometheus Dashboard + +Now to open prometheus dashboard on Browser: + +```bash +$ kubectl get svc -n demo +NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE +voyager ClusterIP None 59m +mgo-mon-prometheus ClusterIP 10.104.88.103 27017/TCP,56790/TCP 59m +prometheus-service LoadBalancer 10.103.201.246 9090:30901/TCP 8s + + +$ minikube ip +192.168.99.100 + +$ minikube service prometheus-service -n demo --url +http://192.168.99.100:30901 +``` + +Now, open your browser and go to the following URL: _http://{minikube-ip}:{prometheus-svc-nodeport}_ to visit Prometheus Dashboard. According to the above example, this URL will be [http://192.168.99.100:30901](http://192.168.99.100:30901). + +Now, if you go the Prometheus Dashboard, you should see that the HAProxy pod as one of the targets. + +![prometheus-builtin](/docs/v2024.3.18/images/monitoring/builtin-prometheus.png) + +## Cleaning up + +To cleanup the Kubernetes resources created by this tutorial, run: + +```bash +$ kubectl delete ns demo +namespace "demo" deleted +``` diff --git a/content/docs/v2024.3.18/guides/ingress/monitoring/using-coreos-prometheus-operator.md b/content/docs/v2024.3.18/guides/ingress/monitoring/using-coreos-prometheus-operator.md new file mode 100644 index 000000000..3831a1b20 --- /dev/null +++ b/content/docs/v2024.3.18/guides/ingress/monitoring/using-coreos-prometheus-operator.md @@ -0,0 +1,217 @@ +--- +title: Monitor HAProxy using CoreOS Prometheus operator +menu: + docs_v2024.3.18: + identifier: coreos-operator-monitoring + name: Monitor with CoreOS Prometheus operator + parent: monitoring-ingress + weight: 20 +product_name: voyager +menu_name: docs_v2024.3.18 +section_menu_id: guides +info: + cli: v0.0.15 + installer: v2024.3.18 + version: v2024.3.18 +--- + +> New to Voyager? Please start [here](/docs/v2024.3.18/concepts/overview). + +# Monitor HAProxy using CoreOS Prometheus operator + +This tutorial will show you how to monitor Voyager managed HAProxy pods using Prometheus via [CoreOS Prometheus Operator](https://github.com/coreos/prometheus-operator). + +## Before You Begin + +At first, you need to have a Kubernetes cluster, and the kubectl command-line tool must be configured to communicate with your cluster. If you do not already have a cluster, you can create one by using [Minikube](https://github.com/kubernetes/minikube). + +Now, deploy Voyager operator following instructions [here](/docs/v2024.3.18/setup/install). + +To keep things isolated, this tutorial uses a separate namespace called `demo` throughout this tutorial. Run the following command to prepare your cluster for this tutorial: + +```bash +$ kubectl create namespace demo +namespace "demo" created + +$ kubectl get ns +NAME STATUS AGE +default Active 45m +demo Active 10s +kube-public Active 45m +voyager Active 45m +``` + +Note that the yaml files that are used in this tutorial, stored in [docs/examples](https://github.com/voyagermesh/voyager/tree/master/docs/examples/monitoring) folder in GitHub repository [voyagermesh/voyager](https://github.com/voyagermesh/voyager). + +## Deploy CoreOS-Prometheus Operator + +Now, run the following command to prepare your cluster for this tutorial: + +```bash +$ kubectl create -f https://raw.githubusercontent.com/voyagermesh/voyager/{{< param "info.version" >}}/docs/examples/monitoring/coreos-operator/demo-0.yaml +clusterrole "prometheus-operator" created +serviceaccount "prometheus-operator" created +clusterrolebinding "prometheus-operator" created +deployment "prometheus-operator" created + +$ kubectl get pods -n demo --watch +NAME READY STATUS RESTARTS AGE +prometheus-operator-79cb9dcd4b-2njgq 1/1 Running 0 2m + + +$ kubectl get crd +NAME AGE +alertmanagers.monitoring.coreos.com 11m +prometheuses.monitoring.coreos.com 11m +servicemonitors.monitoring.coreos.com 11m +``` + +Once the Prometheus operator CRDs are registered, run the following command to create a Prometheus. + +```bash +$ kubectl create -f https://raw.githubusercontent.com/voyagermesh/voyager/{{< param "info.version" >}}/docs/examples/monitoring/coreos-operator/demo-1.yaml +clusterrole "prometheus" created +serviceaccount "prometheus" created +clusterrolebinding "prometheus" created +prometheus "prometheus" created +service "prometheus" created +``` + +### Prometheus Dashboard + +Now to open prometheus dashboard on Browser: + +```bash +$ kubectl get svc -n demo +NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE +prometheus LoadBalancer 10.99.201.154 9090:30900/TCP 5m +prometheus-operated ClusterIP None 9090/TCP 5m + +$ minikube ip +192.168.99.100 + +$ minikube service prometheus -n demo --url +http://192.168.99.100:30900 +``` + +Now, open your browser and go to the following URL: _http://{minikube-ip}:{prometheus-svc-nodeport}_ to visit Prometheus Dashboard. According to the above example, this URL will be [http://192.168.99.100:30900](http://192.168.99.100:30900). + +## Create Ingress + +We are going to use a nginx server as the backend. To deploy nginx server, run the following commands: + +```bash +kubectl run nginx --image=nginx -n demo +kubectl expose deployment nginx --name=web --port=80 --target-port=80 -n demo +``` + +Now create Ingress `ing.yaml` + +```bash +$ kubectl apply -f https://raw.githubusercontent.com/voyagermesh/voyager/{{< param "info.version" >}}/docs/examples/monitoring/coreos-operator/ing.yaml +ingress "stats-ing" created +``` + +```yaml +apiVersion: voyager.appscode.com/v1 +kind: Ingress +metadata: + name: stats-ing + namespace: demo + annotations: + ingress.appscode.com/type: 'NodePort' + ingress.appscode.com/stats: 'true' + ingress.appscode.com/monitoring-agent: 'prometheus.io/coreos-operator' + ingress.appscode.com/service-monitor-labels: '{"app": "voyager"}' + ingress.appscode.com/service-monitor-namespace: 'demo' +spec: + rules: + - host: voyager.appscode.test + http: + paths: + - path: / + backend: + service: + name: web + port: + number: 80 +``` + +Voyager operator watches for `Ingress` objects using Kubernetes api. When a `Ingress` object is created, Voyager operator will create a new HAProxy deployment and a NodePort Service with name `voyager-{ingress-name}`. Since `ingress.appscode.com/stats` annotation was configured, a stats service object is configured accordingly. Here, + +| Keys | Value | Default | Description | +|---------------------------------------------------------------|---------|---------|---------------------------------------------| +| ingress.appscode.com/stats | bool | `false` | `Required`. If set, HAProxy stats will be exposed | +| ingress.appscode.com/monitoring-agent | string | | `Required`. Indicates the monitoring agent used. Here, we are using [CoreOS Prometheus Operator](https://coreos.com/operators/prometheus/docs/latest/). This agent was previously identified as `coreos-prometheus-operator` | +| ingress.appscode.com/service-monitor-labels | map | | `Required`. Indicates labels applied to service monitor. | +| ingress.appscode.com/service-monitor-namespace | string | | `Required`. Indicates namespace where service monitors are created. This must be the same namespace of the Prometheus instance. | +| ingress.appscode.com/service-monitor-endpoint-port | integer | 56790 | `Optional`. Indicates the port used by exporter side-car to expose Prometheus metrics endpoint. If the default port 56790 is used to expose traffic, change it to an unused port. | +| ingress.appscode.com/service-monitor-endpoint-scrape-interval | string | | `Optional`. Indicates the scrape interval for HAProxy exporter endpoint + +You can verify it running the following commands: + +```bash +$ kubectl get pods,svc -n demo +NAME READY STATUS RESTARTS AGE +po/nginx-8586cf59-rbc7x 1/1 Running 0 5m +po/prometheus-operator-6c5f58dc5b-67wgb 1/1 Running 0 7m +po/prometheus-prometheus-0 2/2 Running 0 7m +po/voyager-stats-ing-5bf6b54949-kmc9w 2/2 Running 0 3m + +NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE +svc/prometheus LoadBalancer 10.111.248.128 9090:30900/TCP 7m +svc/prometheus-operated ClusterIP None 9090/TCP 7m +svc/voyager-stats-ing NodePort 10.105.130.139 80:31916/TCP 3m +svc/voyager-stats-ing-stats ClusterIP 10.111.55.62 56789/TCP,56790/TCP 3m +svc/web ClusterIP 10.107.186.226 80/TCP 5m +``` + +```yaml +$ kubectl get servicemonitor -n demo +NAME AGE +voyager-demo-stats-ing 4m + +$ kubectl get servicemonitor -n demo voyager-demo-stats-ing -o yaml +apiVersion: monitoring.coreos.com/v1 +kind: ServiceMonitor +metadata: + clusterName: "" + creationTimestamp: 2018-02-25T22:20:48Z + labels: + app: voyager + monitoring.appscode.com/service: voyager-stats-ing-stats.demo + name: voyager-demo-stats-ing + namespace: demo + resourceVersion: "1820" + selfLink: /apis/monitoring.coreos.com/v1/namespaces/demo/servicemonitors/voyager-demo-stats-ing + uid: 217225cb-1a7a-11e8-a133-080027640ad5 +spec: + endpoints: + - path: /voyager.appscode.com/v1/namespaces/demo/ingresses/stats-ing/metrics + port: http + targetPort: 0 + namespaceSelector: + matchNames: + - demo + selector: + matchLabels: + feature: stats + origin: voyager + origin-api-group: voyager.appscode.com + origin-name: stats-ing +``` + +Now, if you go the Prometheus Dashboard, you should see that this database endpoint as one of the targets. + +![coreos-operator](/docs/v2024.3.18/images/monitoring/coreos-operator.png) + +__Known Limitations:__ If the database password is updated, exporter must be restarted to use the new credentials. This issue is tracked [here](https://github.com/kubedb/project/issues/53). + +## Cleaning up + +To cleanup the Kubernetes resources created by this tutorial, run: + +```bash +$ kubectl delete ns demo +namespace "demo" deleted +``` diff --git a/content/docs/v2024.3.18/guides/ingress/pod-placement.md b/content/docs/v2024.3.18/guides/ingress/pod-placement.md new file mode 100644 index 000000000..890b3426a --- /dev/null +++ b/content/docs/v2024.3.18/guides/ingress/pod-placement.md @@ -0,0 +1,292 @@ +--- +title: Placement of Ingress Pods | Voyager +menu: + docs_v2024.3.18: + identifier: pod-placement-ingress + name: Pod Placement + parent: ingress-guides + weight: 50 +product_name: voyager +menu_name: docs_v2024.3.18 +section_menu_id: guides +info: + cli: v0.0.15 + installer: v2024.3.18 + version: v2024.3.18 +--- + +> New to Voyager? Please start [here](/docs/v2024.3.18/concepts/overview). + +# Placement of Ingress Pods + +Voyager has rich support for how HAProxy pods are placed on cluster nodes. Please check [here](https://kubernetes.io/docs/concepts/configuration/assign-pod-node/) to understand Kubernetes' support for pod placement. + +## Before You Begin + +At first, you need to have a Kubernetes cluster, and the kubectl command-line tool must be configured to communicate with your cluster. If you do not already have a cluster, you can create one by using [Minikube](https://github.com/kubernetes/minikube). + +Now, install Voyager operator in your cluster following the steps [here](/docs/v2024.3.18/setup/install). + +To keep things isolated, this tutorial uses a separate namespace called `demo` throughout this tutorial. Run the following command to prepare your cluster for this tutorial: + +```bash +$ curl -fSsL https://raw.githubusercontent.com/voyagermesh/voyager/{{< param "info.version" >}}/docs/examples/ingress/pod-placement/deploy-servers.sh | bash ++ kubectl create namespace demo +namespace "demo" created ++ kubectl run nginx --image=nginx --namespace=demo +deployment "nginx" created ++ kubectl expose deployment nginx --name=web --namespace=demo --port=80 --target-port=80 +service "web" exposed ++ kubectl run echoserver --image=gcr.io/google_containers/echoserver:1.4 --namespace=demo +deployment "echoserver" created ++ kubectl expose deployment echoserver --name=rest --namespace=demo --port=80 --target-port=8080 +service "rest" exposed +``` + +### Choosing Workload Kind + +By default Voyager will run HAProxy pods using `Deployment`. Since 8.0.1 release, Voyager can run HAProxy pods using either Deployment or DaemonSet. Set the annotation `ingress.appscode.com/workload-kind` on an ingress object to either `Deployment` or `DaemonSet` to enable this feature. If this annotation is missing, HAProxy pods will be run using a `Deployment` as before. + +```yaml +apiVersion: voyager.appscode.com/v1 +kind: Ingress +metadata: + name: ingress-w-node-selector + namespace: demo + annotations: + ingress.appscode.com/workload-kind: DaemonSet +``` + +### Using Node Selector + +[Node selectors](https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#nodeselector) can be used assign HAProxy ingress pods to specific nodes. Below is an example where ingress pods are run on node with name`minikube`. + +```bash +kubectl apply -f https://raw.githubusercontent.com/voyagermesh/voyager/{{< param "info.version" >}}/docs/examples/ingress/pod-placement/ingress-w-node-selector.yaml +``` + +```yaml +apiVersion: voyager.appscode.com/v1 +kind: Ingress +metadata: + name: ingress-w-node-selector + namespace: demo + annotations: + ingress.appscode.com/type: NodePort + ingress.appscode.com/use-node-port: 'true' + ingress.appscode.com/replicas: '2' +spec: + nodeSelector: + kubernetes.io/hostname: minikube + rules: + - http: + paths: + - path: / + backend: + service: + name: rest + port: + number: 80 + - path: /web + backend: + service: + name: web + port: + number: 80 +``` + +If you are using official `networking.k8s.io/v1` ingress api group, use `ingress.appscode.com/node-selector` annotation to provide the selectors. For example: + +``` +apiVersion: networking.k8s.io/v1 +kind: Ingress +metadata: + name: ingress-w-node-selector + namespace: demo + annotations: + ingress.appscode.com/type: NodePort + ingress.appscode.com/use-node-port: 'true' + ingress.appscode.com/replicas: '2' + ingress.appscode.com/node-selector: '{"kubernetes.io/hostname": "minikube"}' +spec: + rules: + - http: + paths: + - path: / + pathType: Prefix + backend: + service: + name: rest + port: + number: 80 + - path: /web + pathType: Prefix + backend: + service: + name: web + port: + number: 80 +``` + +### Using Pod Anti-affinity + +[Affinity rules](https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#affinity-and-anti-affinity) can be used assign HAProxy ingress pods to specific nodes or ensure that 2 separate HAProxy ingress pods are not placed on same node. Affinity rules are set via `spec.affinity` field in Voyager Ingress CRD. Below is an example where ingress pods are spread over run on node with name`minikube`. + +```bash +kubectl apply -f https://raw.githubusercontent.com/voyagermesh/voyager/{{< param "info.version" >}}/docs/examples/ingress/pod-placement/ingress-w-pod-anti-affinity.yaml +``` + +```yaml +apiVersion: voyager.appscode.com/v1 +kind: Ingress +metadata: + name: ingress-w-pod-anti-affinity + namespace: demo + annotations: + ingress.appscode.com/type: NodePort + ingress.appscode.com/use-node-port: 'true' + ingress.appscode.com/replicas: '2' +spec: + rules: + - http: + paths: + - path: / + backend: + service: + name: rest + port: + number: 80 + - path: /web + backend: + service: + name: web + port: + number: 80 + affinity: + podAntiAffinity: + requiredDuringSchedulingIgnoredDuringExecution: + - labelSelector: + matchExpressions: + - key: origin + operator: In + values: + - voyager + - key: origin-name + operator: In + values: + - voyager-ingress-w-pod-anti-affinity + topologyKey: 'kubernetes.io/hostname' +``` + +### Using Taints and Toleration + +Using [taints and toleration](https://kubernetes.io/docs/concepts/configuration/taint-and-toleration/), you can run voyager pods on dedicated nodes. + +```bash +# taint nodes where only HAProxy ingress pods will run +kubectl taint nodes minikube IngressOnly=true:NoSchedule + +kubectl apply -f https://raw.githubusercontent.com/voyagermesh/voyager/{{< param "info.version" >}}/docs/examples/ingress/pod-placement/ingress-w-toleration.yaml +``` + +```yaml +apiVersion: voyager.appscode.com/v1 +kind: Ingress +metadata: + name: ingress-w-toleration + namespace: demo + annotations: + ingress.appscode.com/type: NodePort + ingress.appscode.com/use-node-port: 'true' + ingress.appscode.com/replicas: '2' +spec: + rules: + - http: + paths: + - path: / + backend: + service: + name: rest + port: + number: 80 + - path: /web + backend: + service: + name: web + port: + number: 80 + tolerations: + - key: IngressOnly + operator: Equal + value: 'true' + effect: NoSchedule +``` + +If you are using official `networking.k8s.io/v1` ingress api group, use `ingress.appscode.com/tolerations` annotation to provide the toleration information. For example: + +``` +apiVersion: networking.k8s.io/v1 +kind: Ingress +metadata: + name: ingress-w-toleration + namespace: demo + annotations: + ingress.appscode.com/type: NodePort + ingress.appscode.com/use-node-port: 'true' + ingress.appscode.com/replicas: '2' + ingress.appscode.com/tolerations: '[{"key": "IngressOnly", "operator": "Equal", "value": "true", "effect": "NoSchedule"}]' +spec: + rules: + - http: + paths: + - path: / + pathType: Prefix + backend: + service: + name: rest + port: + number: 80 + - path: /web + pathType: Prefix + backend: + service: + name: web + port: + number: 80 +``` + +You can use these various option in combination with each other to achieve desired result. Say, you want to run your HAProxy pods on master instances. This can be done using an Ingress like below: + +```yaml +apiVersion: voyager.appscode.com/v1 +kind: Ingress +metadata: + name: ingress-w-node-selector + namespace: demo + annotations: + ingress.appscode.com/type: NodePort + ingress.appscode.com/use-node-port: 'true' + ingress.appscode.com/replicas: '2' +spec: + nodeSelector: + node-role.kubernetes.io/master: "" + rules: + - http: + paths: + - path: / + backend: + service: + name: rest + port: + number: 80 + - path: /web + backend: + service: + name: web + port: + number: 80 + tolerations: + - effect: NoSchedule + key: node-role.kubernetes.io/master + operator: Exists +``` diff --git a/content/docs/v2024.3.18/guides/ingress/scaling.md b/content/docs/v2024.3.18/guides/ingress/scaling.md new file mode 100644 index 000000000..424f1b2d0 --- /dev/null +++ b/content/docs/v2024.3.18/guides/ingress/scaling.md @@ -0,0 +1,94 @@ +--- +title: Scaling Ingress | Voyager +menu: + docs_v2024.3.18: + identifier: scaling-ingress + name: Scaling Ingress + parent: ingress-guides + weight: 45 +product_name: voyager +menu_name: docs_v2024.3.18 +section_menu_id: guides +info: + cli: v0.0.15 + installer: v2024.3.18 + version: v2024.3.18 +--- + +> New to Voyager? Please start [here](/docs/v2024.3.18/concepts/overview). + +# Scaling Ingress + +## Replicas + +For each Ingress resource, Voyager deploys HAProxy in a Deployment prefixed by +`voyager-` and the name of the Ingress. + +This Deployment has `.spec.replicas = 1` by default. To start the ingress with the desired +number of replicas, use the `ingress.appscode.com/replicas` annotation. + +Note that, Voyager won't sync with this annotation if there is a HPA controlling the ingress deployment. +This regulation is followed so that HPA on ingress deployment does not experience any conflicts. + +```yaml +apiVersion: voyager.appscode.com/v1 +kind: Ingress +metadata: + name: my-app + namespace: default + annotations: + ingress.appscode.com/replicas: '2' +spec: + defaultBackend: + service: + name: my-app + port: + number: 80 +``` + +```bash +$ kubectl get deploy voyager-my-app +NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE +voyager-my-app 2 2 2 2 1d +``` + +## Horizontal Pod Autoscaling + +[Kubernetes has the HorizontalPodAutoscaler object for autoscaling pods](https://kubernetes.io/docs/tasks/run-application/horizontal-pod-autoscale/). + +> With Horizontal Pod Autoscaling, Kubernetes automatically scales the number +> of pods in a replication controller, deployment or replica set based on +> observed CPU utilization (or, with alpha support, on some other, application-provided metrics). + +To set up a HorizontalPodAutoscaler for a Voyager HAPRoxy deployment, you can +use the `kubectl autoscale` command or defining a HorizontalPodAutoscaler +resource. + +```bash +kubectl autoscale deployment voyager-my-app --cpu-percent=20 --min=2 --max=10 +``` + +```yaml +apiVersion: autoscaling/v1 +kind: HorizontalPodAutoscaler +metadata: + name: voyager-my-app + namespace: default +spec: + scaleTargetRef: + apiVersion: apps/v1 + kind: Deployment + name: voyager-my-app + minReplicas: 2 + maxReplicas: 10 + targetCPUUtilizationPercentage: 20 +``` + +``` +$ kubectl get hpa +NAME REFERENCE TARGETS MINPODS MAXPODS REPLICAS AGE +voyager-my-app Deployment/voyager-my-app 0% / 20% 2 10 2 1d +``` + +## Node Autoscaling +If you are using [autoscaler](https://github.com/kubernetes/autoscaler/tree/master/cluster-autoscaler) to dynamically add and remove nodes, you might be interested in using `ingress.appscode.com/node-selector` to control which hosts are selected to run HAProxy pods. This is a recommended annotation for HostPort type ingress. diff --git a/content/docs/v2024.3.18/guides/ingress/security/_index.md b/content/docs/v2024.3.18/guides/ingress/security/_index.md new file mode 100644 index 000000000..8e11de848 --- /dev/null +++ b/content/docs/v2024.3.18/guides/ingress/security/_index.md @@ -0,0 +1,15 @@ +--- +title: Security +menu: + docs_v2024.3.18: + identifier: security-ingress + name: Security + parent: ingress-guides + weight: 35 +menu_name: docs_v2024.3.18 +info: + cli: v0.0.15 + installer: v2024.3.18 + version: v2024.3.18 +--- + diff --git a/content/docs/v2024.3.18/guides/ingress/security/basic-auth.md b/content/docs/v2024.3.18/guides/ingress/security/basic-auth.md new file mode 100644 index 000000000..a5dba5729 --- /dev/null +++ b/content/docs/v2024.3.18/guides/ingress/security/basic-auth.md @@ -0,0 +1,295 @@ +--- +title: Basic Authentication | Kubernetes Ingress +menu: + docs_v2024.3.18: + identifier: basic-auth-security + name: Basic Auth + parent: security-ingress + weight: 10 +product_name: voyager +menu_name: docs_v2024.3.18 +section_menu_id: guides +aliases: +- /docs/v2024.3.18/guides/ingress/security/ +info: + cli: v0.0.15 + installer: v2024.3.18 + version: v2024.3.18 +--- + +> New to Voyager? Please start [here](/docs/v2024.3.18/concepts/overview). + +# Basic Authentication + +This example demonstrates how to configure +[Basic Authentication](https://tools.ietf.org/html/rfc2617) on +Voyager Ingress controller. + + +## Using Basic Authentication + +Voyager Ingress read user and password from files stored on secrets, one user +and password per line. Secret name, realm and type are configured with annotations +in the ingress resource: + +* `ingress.appscode.com/auth-type`: the only supported type is `basic` +* `ingress.appscode.com/auth-realm`: an optional string with authentication realm +* `ingress.appscode.com/auth-secret`: name of the secret + +Each line of the `auth` file should have: + +* user and insecure password separated with a pair of colons: `::`; or +* user and an encrypted password separated with colons: `:` + +If passwords are provided in plain text, Voyager operator will encrypt them before rendering HAProxy configuration. +HAProxy evaluates encrypted passwords with [crypt](http://man7.org/linux/man-pages/man3/crypt.3.html) function. Use `mkpasswd` or +`makepasswd` to create it. `mkpasswd` can be found on Alpine Linux container. + +### Configure + +Create a secret to our users: + +* `john` and password `admin` using insecure plain text password +* `jane` and password `guest` using encrypted password + +```bash +$ mkpasswd -m des ## a short, des encryption, syntax from Busybox on Alpine Linux +Password: (type 'guest' and press Enter) +E5BrlrQ5IXYK2 + +$ cat >auth <

401 Unauthorized

+You need a valid user and password to access this content. + +``` + +Send a valid user: + +```bash +$ curl -i -u 'john:admin' ip:port +HTTP/1.1 200 OK +Date: Fri, 08 Sep 2017 09:31:43 GMT +Content-Length: 0 +Content-Type: text/plain; charset=utf-8 + +``` + +Using `jane:guest` user/passwd should have the same output. + +## Using Basic Auth for backend service + +Voyager Ingress can be configured to use Basic Auth per Backend service by applying the annotations to +kubernetes service. + +```yaml +apiVersion: v1 +kind: Service +metadata: + name: test-svc + namespace: default + annotations: + ingress.appscode.com/auth-type: basic + ingress.appscode.com/auth-realm: My Server + ingress.appscode.com/auth-secret: mypasswd +spec: + ports: + - name: http-1 + port: 80 + protocol: TCP + targetPort: 8080 + selector: + app: deployment +``` + +Create an Ingress with Basic Auth only on path `/auth` + +```yaml +apiVersion: voyager.appscode.com/v1 +kind: Ingress +metadata: + name: hello-basic-auth + namespace: default +spec: + rules: + - http: + paths: + - path: /no-auth + backend: + service: + name: test-server + port: + number: 80 + - http: + paths: + - path: /auth + backend: + service: + name: test-svc + port: + number: 80 +``` + +Test without user and password: + +```bash +$ curl -i ip:port/auth +HTTP/1.0 401 Unauthorized +Cache-Control: no-cache +Connection: close +Content-Type: text/html +Authentication problem. Ignoring this. +WWW-Authenticate: Basic realm="My Server" + +

401 Unauthorized

+You need a valid user and password to access this content. + +``` + +Send a valid user: + +```bash +$ curl -i -u 'john:admin' ip:port/auth +HTTP/1.1 200 OK +Date: Fri, 08 Sep 2017 09:31:43 GMT +Content-Length: 0 +Content-Type: text/plain; charset=utf-8 + +``` + +No auth enabled Backend + +```bash +$ curl -i ip:port/no-auth +HTTP/1.1 200 OK +Date: Fri, 08 Sep 2017 09:31:43 GMT +Content-Length: 0 +Content-Type: text/plain; charset=utf-8 + +``` + +## Using Basic Auth In Frontend + +Basic Auth can also be configured per frontend in voyager ingress via FrontendRules. + +```yaml +apiVersion: voyager.appscode.com/v1 +kind: Ingress +metadata: + name: hello-basic-auth + namespace: default +spec: + frontendRules: + - port: 8080 + auth: + basic: + secretName: mypasswd + realm: My Server + rules: + - http: + port: 80 + paths: + - path: /no-auth + backend: + service: + name: test-server + port: + number: 80 + - http: + port: 8080 + paths: + - path: /auth + backend: + service: + name: test-svc + port: + number: 80 +``` + +Test without user and password: + +```bash +$ curl -i ip:8080/auth +HTTP/1.0 401 Unauthorized +Cache-Control: no-cache +Connection: close +Content-Type: text/html +Authentication problem. Ignoring this. +WWW-Authenticate: Basic realm="My Server" + +

401 Unauthorized

+You need a valid user and password to access this content. + +``` + +Send a valid user: + +```bash +$ curl -i -u 'john:admin' ip:8080/auth +HTTP/1.1 200 OK +Date: Fri, 08 Sep 2017 09:31:43 GMT +Content-Length: 0 +Content-Type: text/plain; charset=utf-8 + +``` + +No auth enabled Backend +```bash +$ curl -i ip:9090/no-auth +HTTP/1.1 200 OK +Date: Fri, 08 Sep 2017 09:31:43 GMT +Content-Length: 0 +Content-Type: text/plain; charset=utf-8 + +``` + +## Acknowledgement + - This document has been adapted from [kubernetes/ingress](https://github.com/kubernetes/ingress/tree/master/examples/auth/basic/haproxy) project. diff --git a/content/docs/v2024.3.18/guides/ingress/security/oauth-dashboard.md b/content/docs/v2024.3.18/guides/ingress/security/oauth-dashboard.md new file mode 100644 index 000000000..e5d6d13a4 --- /dev/null +++ b/content/docs/v2024.3.18/guides/ingress/security/oauth-dashboard.md @@ -0,0 +1,190 @@ +--- +title: Securing Kubernetes Dashboard | Kubernetes Ingress +menu: + docs_v2024.3.18: + identifier: oauth2-dashboard + name: Kubernetes Dashboard + parent: oauth2-security + weight: 20 +product_name: voyager +menu_name: docs_v2024.3.18 +section_menu_id: guides +info: + cli: v0.0.15 + installer: v2024.3.18 + version: v2024.3.18 +--- + +> New to Voyager? Please start [here](/docs/v2024.3.18/concepts/overview). + +# Securing Kubernetes Dashboard Using GitHub Oauth + +In this example we will deploy kubernetes dashboard and access it through ingress. Also secure the access with voyager external auth using github as auth provider. + +## Deploy Dashboard + +``` +$ kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v1.8.3/src/deploy/recommended/kubernetes-dashboard.yaml +``` + +By default the dashboard configures HTTPS with a self signed certificate. We need to apply `ingress.appscode.com/backend-tls: ssl verify none` annotation to `kubernetes-dashboard` service so that haproxy pod can establish HTTPS connection with dashboard pod. + +``` +$ kubectl annotate service kubernetes-dashboard -n voyager ingress.appscode.com/backend-tls='ssl verify none' +``` + +## Configure GitHub Oauth App + +Configure github auth provider by following instructions provided [here](https://github.com/bitly/oauth2_proxy#github-auth-provider) and generate client-id and client-secret. + +Set `Authorization callback URL` to `https:///oauth2/callback`. In this example it is set to `https://voyager.appscode.ninja`. + +## Configure and Deploy Oauth Proxy + +```yaml +$ kubectl apply -f oauth2-proxy.yaml + +apiVersion: apps/v1 +kind: Deployment +metadata: + labels: + k8s-app: oauth2-proxy + name: oauth2-proxy + namespace: voyager +spec: + replicas: 1 + selector: + matchLabels: + k8s-app: oauth2-proxy + template: + metadata: + labels: + k8s-app: oauth2-proxy + spec: + containers: + - args: + - --provider=github + - --email-domain=* + - --upstream=file:///dev/null + - --http-address=0.0.0.0:4180 + - --cookie-secure=true + env: + - name: OAUTH2_PROXY_CLIENT_ID + value: ... + - name: OAUTH2_PROXY_CLIENT_SECRET + value: ... + - name: OAUTH2_PROXY_COOKIE_SECRET + value: ... + image: quay.io/pusher/oauth2_proxy:v3.1.0 + imagePullPolicy: Always + name: oauth2-proxy + ports: + - containerPort: 4180 + protocol: TCP +--- +apiVersion: v1 +kind: Service +metadata: + labels: + k8s-app: oauth2-proxy + name: oauth2-proxy + namespace: voyager +spec: + ports: + - name: http + port: 4180 + protocol: TCP + targetPort: 4180 + selector: + k8s-app: oauth2-proxy +``` + +## Create TLS Secret + +```bash +$ openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /tmp/tls.key -out /tmp/tls.crt -subj "/CN=voyager.appscode.ninja" +$ kubectl create secret tls tls-secret --key /tmp/tls.key --cert /tmp/tls.crt -n voyager +``` + +## Deploy Ingress + +```yaml +$ kubectl apply -f auth-ingress.yaml + +apiVersion: voyager.appscode.com/v1 +kind: Ingress +metadata: + name: auth-ingress + namespace: voyager +spec: + tls: + - secretName: tls-secret + hosts: + - voyager.appscode.ninja + frontendRules: + - port: 443 + auth: + oauth: + - host: voyager.appscode.ninja + authBackend: auth-be + authPath: /oauth2/auth + signinPath: /oauth2/start + paths: + - / + rules: + - host: voyager.appscode.ninja + http: + paths: + - path: / + backend: + service: + name: kubernetes-dashboard + port: + number: 443 + - path: /oauth2 + backend: + name: auth-be + service: + name: oauth2-proxy + port: + number: 4180 +``` + +## Access DashBoard + +Now browse https://voyager.appscode.ninja, it will redirect you to GitHub login page. After successful login, it will redirect you to dashboard login page. + +We will use token of an existing service-account `replicaset-controller` to login dashboard. It should have permissions to see Replica Sets in the cluster. You can also create your own service-account with different roles. + +``` +$ kubectl describe serviceaccount -n voyager replicaset-controller + +Name: replicaset-controller +Namespace: voyager +Labels: +Annotations: +Image pull secrets: +Mountable secrets: replicaset-controller-token-b5mgw +Tokens: replicaset-controller-token-b5mgw +Events: +``` + +``` +$ kubectl describe secret replicaset-controller-token-b5mgw -n voyager + +Name: replicaset-controller-token-b5mgw +Namespace: voyager +Labels: +Annotations: kubernetes.io/service-account.name=replicaset-controller + kubernetes.io/service-account.uid=b53b12b6-693c-11e8-9cb8-8ee164da275a + +Type: kubernetes.io/service-account-token + +Data +==== +ca.crt: 1006 bytes +namespace: 11 bytes +token: ... +``` + +Now use the token to login dashboard. diff --git a/content/docs/v2024.3.18/guides/ingress/security/oauth-github.md b/content/docs/v2024.3.18/guides/ingress/security/oauth-github.md new file mode 100644 index 000000000..e96495f5a --- /dev/null +++ b/content/docs/v2024.3.18/guides/ingress/security/oauth-github.md @@ -0,0 +1,287 @@ +--- +title: OAuth2 Authentication Using GitHub | Kubernetes Ingress +menu: + docs_v2024.3.18: + identifier: oauth2-github + name: OAuth2 GitHub + parent: oauth2-security + weight: 20 +product_name: voyager +menu_name: docs_v2024.3.18 +section_menu_id: guides +info: + cli: v0.0.15 + installer: v2024.3.18 + version: v2024.3.18 +--- + +> New to Voyager? Please start [here](/docs/v2024.3.18/concepts/overview). + +# OAuth2 Authentication Using GitHub + +This example will demonstrate how to configure external authentication in both TLS and non-TLS mode using GitHub as auth provider. + +## Example using GitHub (no TLS) + +First configure github auth provider by following instructions provided [here](https://github.com/bitly/oauth2_proxy#github-auth-provider) and generate client-id and client-secret. + +Set `Authorization callback URL` to `http:///oauth2/callback`. +In this example it is set to `http://voyager.appscode.ninja`. + +Now deploy and expose a test server: + +```bash +$ kubectl run test-server --image=gcr.io/google_containers/echoserver:1.8 +$ kubectl expose deployment test-server --port=80 --target-port=8080 +``` + +Configure, deploy and expose oauth2-proxy: + +```yaml +$ kubectl apply -f oauth2-proxy.yaml + +apiVersion: apps/v1 +kind: Deployment +metadata: + labels: + k8s-app: oauth2-proxy + name: oauth2-proxy + namespace: default +spec: + replicas: 1 + selector: + matchLabels: + k8s-app: oauth2-proxy + template: + metadata: + labels: + k8s-app: oauth2-proxy + spec: + containers: + - args: + - --provider=github + - --email-domain=* + - --upstream=file:///dev/null + - --http-address=0.0.0.0:4180 + - --cookie-secure=false + - --set-xauthrequest=true + env: + - name: OAUTH2_PROXY_CLIENT_ID + value: ... + - name: OAUTH2_PROXY_CLIENT_SECRET + value: ... + - name: OAUTH2_PROXY_COOKIE_SECRET + value: ... + image: quay.io/pusher/oauth2_proxy:v3.1.0 + imagePullPolicy: Always + name: oauth2-proxy + ports: + - containerPort: 4180 + protocol: TCP +--- +apiVersion: v1 +kind: Service +metadata: + labels: + k8s-app: oauth2-proxy + name: oauth2-proxy + namespace: default +spec: + ports: + - name: http + port: 4180 + protocol: TCP + targetPort: 4180 + selector: + k8s-app: oauth2-proxy +``` + +Here, `--set-xauthrequest` flag sets `X-Auth-Request-User` and `X-Auth-Request-Email` headers, which will be forwarded to backend. + +Finally create the ingress: + +```yaml +$ kubectl apply -f auth-ingress.yaml + +apiVersion: voyager.appscode.com/v1 +kind: Ingress +metadata: + name: auth-ingress + namespace: default +spec: + frontendRules: + - port: 80 + auth: + oauth: + - host: voyager.appscode.ninja + authBackend: auth-be + authPath: /oauth2/auth + signinPath: /oauth2/start + paths: + - /app + rules: + - host: voyager.appscode.ninja + http: + paths: + - path: /health + backend: + service: + name: test-server + port: + number: 80 + - path: /app + backend: + service: + name: test-server + port: + number: 80 + - path: /oauth2 + backend: + name: auth-be + service: + name: oauth2-proxy + port: + number: 4180 +``` + +Now browse the followings: + +- http://voyager.appscode.ninja/app (external-auth required) +- http://voyager.appscode.ninja/health (external-auth not required) + +## Example using GitHub (with TLS) + +First configure github auth provider by following instructions provided [here](https://github.com/bitly/oauth2_proxy#github-auth-provider) and generate client-id and client-secret. + +Set `Authorization callback URL` to `https:///oauth2/callback`. +In this example it is set to `https://voyager.appscode.ninja`. + +Now deploy and expose a test server: + +```bash +$ kubectl run test-server --image=gcr.io/google_containers/echoserver:1.8 +$ kubectl expose deployment test-server --port=80 --target-port=8080 +``` + +Create TLS secret: + +```bash +$ openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /tmp/tls.key -out /tmp/tls.crt -subj "/CN=voyager.appscode.ninja" +$ kubectl create secret tls tls-secret --key /tmp/tls.key --cert /tmp/tls.crt +``` + +Configure, deploy and expose oauth2-proxy: + +```yaml +$ kubectl apply -f oauth2-proxy.yaml + +apiVersion: apps/v1 +kind: Deployment +metadata: + labels: + k8s-app: oauth2-proxy + name: oauth2-proxy + namespace: default +spec: + replicas: 1 + selector: + matchLabels: + k8s-app: oauth2-proxy + template: + metadata: + labels: + k8s-app: oauth2-proxy + spec: + containers: + - args: + - --provider=github + - --email-domain=* + - --upstream=file:///dev/null + - --http-address=0.0.0.0:4180 + - --cookie-secure=true + - --set-xauthrequest=true + env: + - name: OAUTH2_PROXY_CLIENT_ID + value: ... + - name: OAUTH2_PROXY_CLIENT_SECRET + value: ... + - name: OAUTH2_PROXY_COOKIE_SECRET + value: ... + image: quay.io/pusher/oauth2_proxy:v3.1.0 + imagePullPolicy: Always + name: oauth2-proxy + ports: + - containerPort: 4180 + protocol: TCP +--- +apiVersion: v1 +kind: Service +metadata: + labels: + k8s-app: oauth2-proxy + name: oauth2-proxy + namespace: default +spec: + ports: + - name: http + port: 4180 + protocol: TCP + targetPort: 4180 + selector: + k8s-app: oauth2-proxy +``` + +Finally create the ingress: + +```yaml +$ kubectl apply -f auth-ingress.yaml + +apiVersion: voyager.appscode.com/v1 +kind: Ingress +metadata: + name: auth-ingress + namespace: default +spec: + tls: + - secretName: tls-secret + hosts: + - voyager.appscode.ninja + frontendRules: + - port: 443 + auth: + oauth: + - host: voyager.appscode.ninja + authBackend: auth-be + authPath: /oauth2/auth + signinPath: /oauth2/start + paths: + - /app + rules: + - host: voyager.appscode.ninja + http: + paths: + - path: /health + backend: + service: + name: test-server + port: + number: 80 + - path: /app + backend: + service: + name: test-server + port: + number: 80 + - path: /oauth2 + backend: + name: auth-be + service: + name: oauth2-proxy + port: + number: 4180 +``` + +Now browse the followings: + +- https://voyager.appscode.ninja/app (external-auth required) +- https://voyager.appscode.ninja/health (external-auth not required) diff --git a/content/docs/v2024.3.18/guides/ingress/security/oauth-google.md b/content/docs/v2024.3.18/guides/ingress/security/oauth-google.md new file mode 100644 index 000000000..db7aad8a3 --- /dev/null +++ b/content/docs/v2024.3.18/guides/ingress/security/oauth-google.md @@ -0,0 +1,289 @@ +--- +title: OAuth2 Authentication | Kubernetes Ingress +menu: + docs_v2024.3.18: + identifier: oauth2-google + name: OAuth2 Google + parent: oauth2-security + weight: 20 +product_name: voyager +menu_name: docs_v2024.3.18 +section_menu_id: guides +info: + cli: v0.0.15 + installer: v2024.3.18 + version: v2024.3.18 +--- + +> New to Voyager? Please start [here](/docs/v2024.3.18/concepts/overview). + +# OAuth2 Authentication Using Google + +This example will demonstrate how to configure external authentication in both TLS and non-TLS mode using Google as auth provider. + +## Example using Google (no TLS) + +First configure google auth provider by following instructions provided [here](https://github.com/bitly/oauth2_proxy#google-auth-provider) and generate client-id and client-secret. + +In this example `Authorized JavaScript origins` is set to `http://voyager.appscode.ninja` +and `Authorized redirect URIs` is set to `http://voyager.appscode.ninja/oauth2/callback`. + +Now deploy and expose a test server: + +```bash +$ kubectl run test-server --image=gcr.io/google_containers/echoserver:1.8 +$ kubectl expose deployment test-server --port=80 --target-port=8080 +``` + +Configure, deploy and expose oauth2-proxy: + +```yaml +$ kubectl apply -f oauth2-proxy.yaml + +apiVersion: apps/v1 +kind: Deployment +metadata: + labels: + k8s-app: oauth2-proxy + name: oauth2-proxy + namespace: default +spec: + replicas: 1 + selector: + matchLabels: + k8s-app: oauth2-proxy + template: + metadata: + labels: + k8s-app: oauth2-proxy + spec: + containers: + - args: + - --provider=google + - --email-domain=* + - --upstream=file:///dev/null + - --http-address=0.0.0.0:4180 + - --cookie-secure=false + - --pass-authorization-header=true + - --set-authorization-header=true + - --set-xauthrequest=true + env: + - name: OAUTH2_PROXY_CLIENT_ID + value: ... + - name: OAUTH2_PROXY_CLIENT_SECRET + value: ... + - name: OAUTH2_PROXY_COOKIE_SECRET + value: ... + image: quay.io/pusher/oauth2_proxy:v3.1.0 + imagePullPolicy: Always + name: oauth2-proxy + ports: + - containerPort: 4180 + protocol: TCP +--- +apiVersion: v1 +kind: Service +metadata: + labels: + k8s-app: oauth2-proxy + name: oauth2-proxy + namespace: default +spec: + ports: + - name: http + port: 4180 + protocol: TCP + targetPort: 4180 + selector: + k8s-app: oauth2-proxy +``` + +Here, `--set-xauthrequest` flag sets `X-Auth-Request-User` and `X-Auth-Request-Email` headers, which will be forwarded to backend. `--pass-authorization-header` and `--set-authorization-header` set OIDC IDToken via `Authorization` Bearer header and `X-Auth-Request-Id-Token` header. + +Finally create the ingress: + +```yaml +$ kubectl apply -f auth-ingress.yaml + +apiVersion: voyager.appscode.com/v1 +kind: Ingress +metadata: + name: auth-ingress + namespace: default +spec: + frontendRules: + - port: 80 + auth: + oauth: + - host: voyager.appscode.ninja + authBackend: auth-be + authPath: /oauth2/auth + signinPath: /oauth2/start + paths: + - /app + rules: + - host: voyager.appscode.ninja + http: + paths: + - path: /health + backend: + service: + name: test-server + port: + number: 80 + - path: /app + backend: + service: + name: test-server + port: + number: 80 + - path: /oauth2 + backend: + name: auth-be + service: + name: oauth2-proxy + port: + number: 4180 +``` + +Now browse the followings: + +- http://voyager.appscode.ninja/app (external-auth required) +- http://voyager.appscode.ninja/health (external-auth not required) + +## Example using Google (with TLS) + +First configure google auth provider by following instructions provided [here](https://github.com/bitly/oauth2_proxy#google-auth-provider) and generate client-id and client-secret. + +In this example `Authorized JavaScript origins` is set to `https://voyager.appscode.ninja` +and `Authorized redirect URIs` is set to `https://voyager.appscode.ninja/oauth2/callback`. + +Now deploy and expose a test server: + +```bash +$ kubectl run test-server --image=gcr.io/google_containers/echoserver:1.8 +$ kubectl expose deployment test-server --port=80 --target-port=8080 +``` + +Create TLS secret: + +```bash +$ openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /tmp/tls.key -out /tmp/tls.crt -subj "/CN=voyager.appscode.ninja" +$ kubectl create secret tls tls-secret --key /tmp/tls.key --cert /tmp/tls.crt +``` + +Configure, deploy and expose oauth2-proxy: + +```yaml +$ kubectl apply -f oauth2-proxy.yaml + +apiVersion: apps/v1 +kind: Deployment +metadata: + labels: + k8s-app: oauth2-proxy + name: oauth2-proxy + namespace: default +spec: + replicas: 1 + selector: + matchLabels: + k8s-app: oauth2-proxy + template: + metadata: + labels: + k8s-app: oauth2-proxy + spec: + containers: + - args: + - --provider=google + - --email-domain=* + - --upstream=file:///dev/null + - --http-address=0.0.0.0:4180 + - --cookie-secure=true + - --set-xauthrequest=true + env: + - name: OAUTH2_PROXY_CLIENT_ID + value: ... + - name: OAUTH2_PROXY_CLIENT_SECRET + value: ... + - name: OAUTH2_PROXY_COOKIE_SECRET + value: ... + image: quay.io/pusher/oauth2_proxy:v3.1.0 + imagePullPolicy: Always + name: oauth2-proxy + ports: + - containerPort: 4180 + protocol: TCP +--- +apiVersion: v1 +kind: Service +metadata: + labels: + k8s-app: oauth2-proxy + name: oauth2-proxy + namespace: default +spec: + ports: + - name: http + port: 4180 + protocol: TCP + targetPort: 4180 + selector: + k8s-app: oauth2-proxy +``` + +Finally create the ingress: + +```yaml +$ kubectl apply -f auth-ingress.yaml + +apiVersion: voyager.appscode.com/v1 +kind: Ingress +metadata: + name: auth-ingress + namespace: default +spec: + tls: + - secretName: tls-secret + hosts: + - voyager.appscode.ninja + frontendRules: + - port: 443 + auth: + oauth: + - host: voyager.appscode.ninja + authBackend: auth-be + authPath: /oauth2/auth + signinPath: /oauth2/start + paths: + - /app + rules: + - host: voyager.appscode.ninja + http: + paths: + - path: /health + backend: + service: + name: test-server + port: + number: 80 + - path: /app + backend: + service: + name: test-server + port: + number: 80 + - path: /oauth2 + backend: + name: auth-be + service: + name: oauth2-proxy + port: + number: 4180 +``` + +Now browse the followings: + +- https://voyager.appscode.ninja/app (external-auth required) +- https://voyager.appscode.ninja/health (external-auth not required) \ No newline at end of file diff --git a/content/docs/v2024.3.18/guides/ingress/security/oauth.md b/content/docs/v2024.3.18/guides/ingress/security/oauth.md new file mode 100644 index 000000000..2bb5129ab --- /dev/null +++ b/content/docs/v2024.3.18/guides/ingress/security/oauth.md @@ -0,0 +1,146 @@ +--- +title: OAuth2 Authentication | Kubernetes Ingress +menu: + docs_v2024.3.18: + identifier: oauth2-security + name: OAuth2 + parent: security-ingress + weight: 20 +product_name: voyager +menu_name: docs_v2024.3.18 +section_menu_id: guides +info: + cli: v0.0.15 + installer: v2024.3.18 + version: v2024.3.18 +--- + +> New to Voyager? Please start [here](/docs/v2024.3.18/concepts/overview). + +# OAuth2 Authentication + +You can configure [external authentication / oauth](https://oauth.net/2/) on Voyager Ingress controller via `frontendrules`. For this you have to configure and expose [oauth2-proxy](https://github.com/bitly/oauth2_proxy) and specify it as a backend under same host. For example: + +```yaml +apiVersion: voyager.appscode.com/v1 +kind: Ingress +metadata: + name: auth-ingress + namespace: default +spec: + frontendRules: + - port: 80 + auth: + oauth: + - host: voyager.appscode.ninja + authBackend: auth-be + authPath: /oauth2/auth + signinPath: /oauth2/start + paths: + - /app + rules: + - host: voyager.appscode.ninja + http: + paths: + - path: /health + backend: + service: + name: test-server + port: + number: 80 + - path: /app + backend: + service: + name: test-server + port: + number: 80 + - path: /oauth2 + backend: + name: auth-be + service: + name: oauth2-proxy + port: + number: 4180 +``` + +Please note the followings: + +- Oauth will be enabled only for the specified paths. It is not necessary that this paths should match with the paths specified in the http-rules. + +- Auth backend and app backend should be under same host. + +- For secure/tls connections, you have to set `cookie-secure=true` (default) and for insecure/non-tls connections, you have to set `cookie-secure=false` while configuring `oauth2-proxy`. + +- You can use any random string as `OAUTH2_PROXY_COOKIE_SECRET` while configuring `oauth2-proxy`. You can generate one using following command: + +```bash +$ python -c 'import os,base64; print base64.b64encode(os.urandom(16))' +``` + +- If you use standard ports, you have to write frontend rules under port `80` for non-tls and under port `443` for tls. + +- You can not use different auth backends for different paths under same host and port. However, it is possible to configure different auth backends for different hosts under same port. For example: + +```yaml +apiVersion: voyager.appscode.com/v1 +kind: Ingress +metadata: + name: auth-ingress + namespace: default +spec: + frontendRules: + - port: 80 + auth: + oauth: + - host: team01.example.com + authBackend: google-auth + authPath: /google/auth + signinPath: /google/start + paths: + - /foo + - host: team02.example.com + authBackend: github-auth + authPath: /github/auth + signinPath: /github/start + paths: + - /bar + rules: + - host: team01.example.com + http: + paths: + - path: /foo + backend: + service: + name: test-server + port: + number: 80 + - path: /google + backend: + name: google-auth + service: + name: oauth2-proxy-google + port: + number: 4180 + - host: team02.example.com + http: + paths: + - path: /bar + backend: + service: + name: test-server + port: + number: 80 + - path: /github + backend: + name: github-auth + service: + name: oauth2-proxy-github + port: + number: 4180 +``` + +## Next Steps + +- Learn how to configure GitHub as auth provider [here](oauth-github.md). +- Learn how to configure Google as auth provider [here](oauth-google.md). +- Learn how to secure Kubernetes Dashboard using voyager external auth [here](oauth-dashboard.md). diff --git a/content/docs/v2024.3.18/guides/ingress/security/restrict-namespace.md b/content/docs/v2024.3.18/guides/ingress/security/restrict-namespace.md new file mode 100644 index 000000000..9a7f9145a --- /dev/null +++ b/content/docs/v2024.3.18/guides/ingress/security/restrict-namespace.md @@ -0,0 +1,2 @@ +> New to Voyager? Please start [here](/docs/v2024.3.18/concepts/overview). + diff --git a/content/docs/v2024.3.18/guides/ingress/security/tls-auth.md b/content/docs/v2024.3.18/guides/ingress/security/tls-auth.md new file mode 100644 index 000000000..8a4f186f6 --- /dev/null +++ b/content/docs/v2024.3.18/guides/ingress/security/tls-auth.md @@ -0,0 +1,232 @@ +--- +title: TLS Authentication | Kubernetes Ingress +menu: + docs_v2024.3.18: + identifier: tls-auth-security + name: TLS Auth + parent: security-ingress + weight: 15 +product_name: voyager +menu_name: docs_v2024.3.18 +section_menu_id: guides +info: + cli: v0.0.15 + installer: v2024.3.18 + version: v2024.3.18 +--- + +> New to Voyager? Please start [here](/docs/v2024.3.18/concepts/overview). + +# TLS Authentication + +This example demonstrates how to configure [TLS Authentication](https://tools.ietf.org/html/rfc2617) on Voyager Ingress controller. + +- [Using tls auth in Ingress](#using-tls-authentication) +- [Using tls auth in Frontend](#using-tls-auth-in-frontend) + +Before diving into the deep learn about TLS Auth with HAProxy. + +- [SSL Client certificate management at application level](https://www.haproxy.com/blog/ssl-client-certificate-management-at-application-level/) +- [Client side ssl certificates](https://raymii.org/s/tutorials/haproxy_client_side_ssl_certificates.html) + +## Using TLS Authentication + +Voyager Ingress read ca certificates from files stored on secrets with `ca.crt` key. + +- `ingress.appscode.com/auth-tls-secret`: Name of secret for TLS client certification validation. +- `ingress.appscode.com/auth-tls-error-page`: The page that user should be redirected in case of Auth error +- `ingress.appscode.com/auth-tls-verify-client`: Enables verification option of client certificates. + +### Configure + +Create tls secret for enable ssl termination: + +```bash +$ kubectl create secret tls server --cert=/path/to/cert/file --key=/path/to/key/file +``` + +Create ca cert secret: + +```bash +$ kubectl create secret generic ca --from-file=/path/to/ca.crt +``` + +Create an Ingress with TLS Auth annotations: + +```yaml +apiVersion: voyager.appscode.com/v1 +kind: Ingress +metadata: + annotations: + ingress.appscode.com/auth-tls-secret: ca + ingress.appscode.com/auth-tls-verify-client: required + ingress.appscode.com/auth-tls-error-page: "https://auth.example.com/errors.html" + name: hello-tls-auth + namespace: default +spec: + tls: + - secretName: server + hosts: + - auth.example.com + rules: + - host: auth.example.com + http: + paths: + - path: /testpath + backend: + service: + name: test-server + port: + number: 80 +``` + +Test without certificates: + +```bash +$ curl -i -vvv 'https://auth.example.com' +* Hostname was NOT found in DNS cache +* Trying 192.168.99.100... +* Connected to http.appscode.test (192.168.99.100) port 443 (#0) +* successfully set certificate verify locations: +* CAfile: none + CApath: /etc/ssl/certs +* SSLv3, TLS handshake, Client hello (1): +* SSLv3, TLS handshake, Server hello (2): +* SSLv3, TLS handshake, CERT (11): +* SSLv3, TLS handshake, Server key exchange (12): +* SSLv3, TLS handshake, Request CERT (13): +* SSLv3, TLS handshake, Server finished (14): +* SSLv3, TLS handshake, CERT (11): +* SSLv3, TLS handshake, Client key exchange (16): +* SSLv3, TLS change cipher, Client hello (1): +* SSLv3, TLS handshake, Finished (20): +* SSLv3, TLS alert, Server hello (2): +* error:14094410:SSL routines:SSL3_READ_BYTES:sslv3 alert handshake failure +* Closing connection 0 +curl: (35) error:14094410:SSL routines:SSL3_READ_BYTES:sslv3 alert handshake failure +``` + +Send a valid client certificate: + +```bash +$ curl -v -s --key client.key --cert client.crt https://auth.example.com +HTTP/1.1 200 OK +Date: Fri, 08 Sep 2017 09:31:43 GMT +Content-Length: 0 +Content-Type: text/plain; charset=utf-8 + +``` + +Send a invalid client certificate, that will redirect to error page if provided: + +```bash +$ curl -v -s --key invalidclient.key --cert invalidclient.crt https://auth.example.com +HTTP/1.1 302 +Location: https://auth.example.com/errors.html +``` + +## Using TLS Auth In Frontend + +Basic Auth can also be configured per frontend in voyager ingress via FrontendRules. + +```yaml +apiVersion: voyager.appscode.com/v1 +kind: Ingress +metadata: + name: hello-basic-auth + namespace: default +spec: + frontendRules: + - port: 8080 + auth: + tls: + secretName: server + verifyClient: required + errorPage: "https://auth.example.com/error.html" + headers: + X-SSL-Client-CN: "%{+Q}[ssl_c_s_dn(cn)]" # Add headers to Request based on SSL verification + X-SSL: "%[ssl_fc]", + tls: + - ref: + kind: Secret + name: server + hosts: + - auth.example.com + rules: + - host: auth.example.com + http: + paths: + - path: /no-auth + backend: + service: + name: test-server + port: + number: 80 + - host: auth.example.com + http: + port: 8080 + paths: + - path: /auth + backend: + service: + name: test-svc + port: + number: 80 +``` + +Request in non-tls port: + +```bash +$ curl -v -s https://auth.example.com +HTTP/1.1 200 OK +Date: Fri, 08 Sep 2017 09:31:43 GMT +Content-Length: 0 +Content-Type: text/plain; charset=utf-8 + +``` + +Test without certificates: + +```bash +$ curl -i -vvv 'https://auth.example.com:8080' +* Hostname was NOT found in DNS cache +* Trying 192.168.99.100... +* Connected to http.appscode.test (192.168.99.100) port 443 (#0) +* successfully set certificate verify locations: +* CAfile: none + CApath: /etc/ssl/certs +* SSLv3, TLS handshake, Client hello (1): +* SSLv3, TLS handshake, Server hello (2): +* SSLv3, TLS handshake, CERT (11): +* SSLv3, TLS handshake, Server key exchange (12): +* SSLv3, TLS handshake, Request CERT (13): +* SSLv3, TLS handshake, Server finished (14): +* SSLv3, TLS handshake, CERT (11): +* SSLv3, TLS handshake, Client key exchange (16): +* SSLv3, TLS change cipher, Client hello (1): +* SSLv3, TLS handshake, Finished (20): +* SSLv3, TLS alert, Server hello (2): +* error:14094410:SSL routines:SSL3_READ_BYTES:sslv3 alert handshake failure +* Closing connection 0 +curl: (35) error:14094410:SSL routines:SSL3_READ_BYTES:sslv3 alert handshake failure +``` + +Send a valid client certificate: + +```bash +$ curl -v -s --key client.key --cert client.crt https://auth.example.com:8080 +HTTP/1.1 200 OK +Date: Fri, 08 Sep 2017 09:31:43 GMT +Content-Length: 0 +Content-Type: text/plain; charset=utf-8 +``` + +Backend server will receive Headers `X-SSL` and `X-SSL-Client-CN`. + +Send a invalid client certificate, that will redirect to error page if provided: + +```bash +$ curl -v -s --key invalidclient.key --cert invalidclient.crt https://auth.example.com:8080 +HTTP/1.1 302 +Location: https://auth.example.com/errors.html +``` diff --git a/content/docs/v2024.3.18/guides/ingress/ssh.md b/content/docs/v2024.3.18/guides/ingress/ssh.md new file mode 100644 index 000000000..9a7f9145a --- /dev/null +++ b/content/docs/v2024.3.18/guides/ingress/ssh.md @@ -0,0 +1,2 @@ +> New to Voyager? Please start [here](/docs/v2024.3.18/concepts/overview). + diff --git a/content/docs/v2024.3.18/guides/ingress/tcp/_index.md b/content/docs/v2024.3.18/guides/ingress/tcp/_index.md new file mode 100644 index 000000000..ea560bb8a --- /dev/null +++ b/content/docs/v2024.3.18/guides/ingress/tcp/_index.md @@ -0,0 +1,15 @@ +--- +title: TCP +menu: + docs_v2024.3.18: + identifier: tcp-ingress + name: TCP + parent: ingress-guides + weight: 20 +menu_name: docs_v2024.3.18 +info: + cli: v0.0.15 + installer: v2024.3.18 + version: v2024.3.18 +--- + diff --git a/content/docs/v2024.3.18/guides/ingress/tcp/overview.md b/content/docs/v2024.3.18/guides/ingress/tcp/overview.md new file mode 100644 index 000000000..545188380 --- /dev/null +++ b/content/docs/v2024.3.18/guides/ingress/tcp/overview.md @@ -0,0 +1,70 @@ +--- +title: TCP LoadBalancing | Kubernetes Ingress +menu: + docs_v2024.3.18: + identifier: overview-tcp + name: Overview + parent: tcp-ingress + weight: 10 +product_name: voyager +menu_name: docs_v2024.3.18 +section_menu_id: guides +info: + cli: v0.0.15 + installer: v2024.3.18 + version: v2024.3.18 +--- + +> New to Voyager? Please start [here](/docs/v2024.3.18/concepts/overview). + +# TCP LoadBalancing + +TCP load balancing is one of the core features of Voyager Ingress. Voyager can handle TCP Load balancing with or without TLS. One Voyager Ingress can also be used to load balance both HTTP and TCP. + +One Simple TCP Rule Would be: + +```yaml +apiVersion: voyager.appscode.com/v1 +kind: Ingress +metadata: + name: test-ingress + namespace: default +spec: + tls: + - secretName: mycert + hosts: + - other.example.com + rules: + - host: one.example.com + tcp: + port: 9898 + backend: + service: + name: tcp-service + port: + number: 50077 + - host: other.example.com + tcp: + port: 7878 + backend: + service: + name: tcp-service + port: + number: 50077 + - host: other.example.com + tcp: + port: 7800 + noTLS: true + backend: + service: + name: tcp-service + port: + number: 50077 +``` + +For this Ingress, HAProxy will open up 3 separate ports: +- port 9898: Passes traffic to pods behind tcp-service:50077. Uses no TLS, since `spec.TLS` does not have a matching host. + +- port 7878: Passes traffic to pods behind tcp-service:50077. Uses TLS, since `spec.TLS` has a matching host. + +- port 7880: Passes traffic to pods behind tcp-service:50077. __Uses no TLS__, even though `spec.TLS` has a matching host. This is because `tcp.noTLS` is set to true for this rule. diff --git a/content/docs/v2024.3.18/guides/ingress/tcp/tcp-sni.md b/content/docs/v2024.3.18/guides/ingress/tcp/tcp-sni.md new file mode 100644 index 000000000..66cdb5d16 --- /dev/null +++ b/content/docs/v2024.3.18/guides/ingress/tcp/tcp-sni.md @@ -0,0 +1,194 @@ +--- +title: TCP SNI | Kubernetes Ingress +menu: + docs_v2024.3.18: + identifier: tcp-sni + name: TCP SNI + parent: tcp-ingress + weight: 20 +product_name: voyager +menu_name: docs_v2024.3.18 +section_menu_id: guides +info: + cli: v0.0.15 + installer: v2024.3.18 + version: v2024.3.18 +--- + +> New to Voyager? Please start [here](/docs/v2024.3.18/concepts/overview). + +# Using TCP SNI + +In TCP mode, HAProxy can choose backends using Server Name Indication (SNI). This allows clients to include the hostname during `SSL Hello`. SNI hostname is send in plain text. So, HAProxy can choose backend based on SNI hostname even in TCP mode. + +This example demonstrates how to configure Voyager to choose backends based on SNI in TCP mode. + +## Minikube walk-through + +### Deploy test server + +```bash +$ kubectl apply -f https://raw.githubusercontent.com/appscode/voyager/master/test/test-server/deploy/test-server.yaml +``` + +### Create ingress + +```yaml +$ kubectl apply -f tcp-sni.yaml + +apiVersion: voyager.appscode.com/v1 +kind: Ingress +metadata: + name: test-ingress + namespace: default + annotations: + ingress.appscode.com/type: NodePort + ingress.appscode.com/use-node-port: "true" +spec: + rules: + - host: voyager.appscode.test + tcp: + nodePort: 32666 + port: 8443 + backend: + service: + name: test-server + port: + number: 6443 + - host: voyager.appscode.com + tcp: + nodePort: 32666 + port: 8443 + backend: + service: + name: test-server + port: + number: 3443 +``` + +### Generated haproxy.cfg + +``` +# HAProxy configuration generated by https://github.com/appscode/voyager +# DO NOT EDIT! +global + daemon + stats socket /var/run/haproxy.sock level admin expose-fd listeners + server-state-file global + server-state-base /var/state/haproxy/ + # log using a syslog socket + log /dev/log local0 info + tune.ssl.default-dh-param 2048 + ssl-default-bind-ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!3DES:!MD5:!PSK + lua-load /etc/auth-request.lua + hard-stop-after 30s +defaults + log global + # https://cbonte.github.io/haproxy-dconv/1.7/configuration.html#4.2-option%20abortonclose + # https://github.com/voyagermesh/voyager/pull/403 + option dontlognull + option http-server-close + # Timeout values + timeout client 50s + timeout client-fin 50s + timeout connect 5s + timeout server 50s + timeout tunnel 50s + # Configure error files + # default traffic mode is http + # mode is overwritten in case of tcp services + mode http +frontend tcp-0_0_0_0-8443 + bind *:8443 + mode tcp + tcp-request inspect-delay 5s + tcp-request content accept if { req_ssl_hello_type 1 } + use_backend test-server.default:6443 if { req_ssl_sni -i voyager.appscode.test } + use_backend test-server.default:3443 if { req_ssl_sni -i voyager.appscode.com } +backend test-server.default:6443 + mode tcp + server pod-test-server-tct6l 172.17.0.4:6443 +backend test-server.default:3443 + mode tcp + server pod-test-server-tct6l 172.17.0.4:3443 +``` + +### Get service url + +```bash +$ minikube service --url voyager-test-ingress + +http://192.168.99.100:32666 +``` + +### Update /etc/hosts + +```bash +$ nano /etc/hosts + +192.168.99.100 voyager.appscode.test +192.168.99.100 voyager.appscode.com +192.168.99.100 voyager.appscode.org +``` + +### Send requests + +```bash +$ curl -k http://voyager.appscode.test:32666 +curl: (52) Empty reply from server + +$ curl -k https://voyager.appscode.test:32666 +{"type":"http","host":"voyager.appscode.test:8090","serverPort":":6443","path":"/","method":"GET","headers":{"Accept":["*/*"],"User-Agent":["curl/7.47.0"]}} + +$ curl -k https://voyager.appscode.com:32666 +{"type":"http","host":"voyager.appscode.com:8090","serverPort":":3443","path":"/","method":"GET","headers":{"Accept":["*/*"],"User-Agent":["curl/7.47.0"]}} + +$ curl -k https://voyager.appscode.org:32666 +curl: (35) gnutls_handshake() failed: The TLS connection was non-properly terminated. +``` + +- In 1st request is in `http`, so HAProxy could not resolve request SNI. +- In 2nd request, request is forwarded to `test-server:6443` based on host. +- In 3rd request, request is forwarded to `test-server:3443` based on host. +- In 4th request, host not matched with any rules, so no backend to serve the request. + +## Notes + +- For single host, traffic will be routed to backend without consulting SNI information. + +- You can specify TLS for multiple hosts, in that case HAProxy will terminate TLS and then choose backend based on SNI. + +- Conflicting TLS among different hosts under same port will cause validation error. That means you can't use TLS for one host, while other host under same port don't use TLS. Note that, if you specify `NoTLS=true` for any rule (both TCP and HTTP), voyager will ignore `Spec.TLS` for that rule. + +- All TCP rules under same port must have same set of ALPN options. Voyager will cause validation error if you specify ALPN for one rule but not for another rule or, different ALPN for different rules. + +- You can use wildcard hosts like `*.example.com`. + +- If host is not specified or, only `*` is used as host for any TCP rule, no other rule can be defined for that port. + +For example following will cause validation error: + +```yaml +spec: + rules: + - host: * + tcp: + port: 8443 + backend: + service: + name: test-server + port: + number: 6443 + - host: voyager.appscode.com + tcp: + port: 8443 + backend: + service: + name: test-server + port: + number: 3443 +``` + +## References + +- https://www.haproxy.com/blog/enhanced-ssl-load-balancing-with-server-name-indication-sni-tls-extension/ diff --git a/content/docs/v2024.3.18/guides/ingress/tls/_index.md b/content/docs/v2024.3.18/guides/ingress/tls/_index.md new file mode 100644 index 000000000..0c97ba44e --- /dev/null +++ b/content/docs/v2024.3.18/guides/ingress/tls/_index.md @@ -0,0 +1,15 @@ +--- +title: TLS +menu: + docs_v2024.3.18: + identifier: tls-ingress + name: TLS + parent: ingress-guides + weight: 15 +menu_name: docs_v2024.3.18 +info: + cli: v0.0.15 + installer: v2024.3.18 + version: v2024.3.18 +--- + diff --git a/content/docs/v2024.3.18/guides/ingress/tls/aws-cert-manager.md b/content/docs/v2024.3.18/guides/ingress/tls/aws-cert-manager.md new file mode 100644 index 000000000..aebe99e49 --- /dev/null +++ b/content/docs/v2024.3.18/guides/ingress/tls/aws-cert-manager.md @@ -0,0 +1,82 @@ +--- +title: Using AWS Certificate Manager | Kubernetes Ingress +menu: + docs_v2024.3.18: + identifier: aws-cm-tls + name: AWS Cert Manager + parent: tls-ingress + weight: 15 +product_name: voyager +menu_name: docs_v2024.3.18 +section_menu_id: guides +info: + cli: v0.0.15 + installer: v2024.3.18 + version: v2024.3.18 +--- + +> New to Voyager? Please start [here](/docs/v2024.3.18/concepts/overview). + +# Using AWS Certificate Manager + +Voyager can use AWS certificate manager to terminate SSL connections for `LoadBalancer` type ingress in `aws` provider. To use this feature, +add the following annotations to Ingress; + +```yaml + ingress.appscode.com/annotations-service: | + { + "service.beta.kubernetes.io/aws-load-balancer-ssl-cert": "arn:aws:acm:...", + "service.beta.kubernetes.io/aws-load-balancer-backend-protocol": "http", + "service.beta.kubernetes.io/aws-load-balancer-ssl-ports": "443" + } +``` + +Voyager operator will apply these annotation on `LoadBalancer` service used to expose HAProxy to internet. +This service will (logically) listen on port 443, terminate SSL and forward to port 80 on HAProxy pods. Also, +ELB will listen on port 80 and forward cleartext traffic to port 80. + +```yaml +apiVersion: v1 +kind: Service +metadata: + name: + annotations: + service.beta.kubernetes.io/aws-load-balancer-ssl-cert: 'arn:aws:acm:...' + service.beta.kubernetes.io/aws-load-balancer-backend-protocol: http +spec: + type: LoadBalancer + ports: + - port: 443 + targetPort: 80 + - port: 80 + targetPort: 80 + ... +``` +[Elastic Load Balancing](http://docs.aws.amazon.com/elasticloadbalancing/latest/classic/x-forwarded-headers.html#x-forwarded-proto) +stores the protocol used between the client and the load balancer in the `X-Forwarded-Proto` request +header and passes the header along to HAProxy. The `X-Forwarded-Proto` request header helps HAProxy +identify the protocol (HTTP or HTTPS) that a client used to connect to load balancer. If you would +like to redirect cleartext client traffic on port 80 to port 443, please add redirect backend rules +when `X-Forwarded-Proto` header value is `HTTPS`. Please see the following ingress example and +[example rules](https://www.exratione.com/2014/10/managing-haproxy-configuration-when-your-server-may-or-may-not-be-behind-an-ssl-terminating-proxy/). + +```yaml +apiVersion: voyager.appscode.com/v1 +kind: Ingress +metadata: + name: test-aws-ingress + namespace: default +spec: + rules: + - host: appscode.example.com + http: + paths: + - backend: + service: + name: test-service + port: + number: 80 + backendRules: + - 'acl is_proxy_https hdr(X-Forwarded-Proto) https' + - 'redirect scheme https code 301 if ! is_proxy_https' +``` diff --git a/content/docs/v2024.3.18/guides/ingress/tls/backend-tls.md b/content/docs/v2024.3.18/guides/ingress/tls/backend-tls.md new file mode 100644 index 000000000..1e899b458 --- /dev/null +++ b/content/docs/v2024.3.18/guides/ingress/tls/backend-tls.md @@ -0,0 +1,88 @@ +--- +title: Backend TLS Support | Kubernetes Ingress +menu: + docs_v2024.3.18: + identifier: backend-tls + name: Backend TLS + parent: tls-ingress + weight: 20 +product_name: voyager +menu_name: docs_v2024.3.18 +section_menu_id: guides +info: + cli: v0.0.15 + installer: v2024.3.18 + version: v2024.3.18 +--- + +> New to Voyager? Please start [here](/docs/v2024.3.18/concepts/overview). + +# Backend TLS Support + +Voyager can connect to a tls enabled backend server with or without ssl verification. + +Available options: + +- `ssl`: Creates a TLS/SSL socket when connecting to this server in order to cipher/decipher the traffic. If verify not set the following error may occurred: + +> Verify is enabled by default but no CA file specified. If you're running on a LAN where you're certain to trust the server's certificate, please set an explicit 'verify none' statement on the 'server' line, or use 'ssl-server-verify none' in the global section to disable server-side verifications by default. + +- `verify [none|required]`: Sets HAProxy‘s behavior regarding the certificated presented by the server: + - `none`: Doesn’t verify the certificate of the server + - `required (default value)`: TLS handshake is aborted if the validation of the certificate presented by the server returns an error. + +- `verifyhost `: Sets a to look for in the Subject and SubjectAlternateNames fields provided in the certificate sent by the server. If can’t be found, then the TLS handshake is aborted. This only applies when verify required is configured. + +- `ca-file `: Specify a CA file to verify the backend server. See [here](/docs/v2024.3.18/guides/ingress/configuration/config-volumes) for complete example. + +Example: `ingress.appscode.com/backend-tls: "ssl verify none"` + +If this annotation is not set HAProxy will connect to backend as http. This value should not be set if the backend do not support https resolution. + +Example: + +```yaml +kind: Service +apiVersion: v1 +metadata: + name: my-service + namespace: default + annotations: + ingress.appscode.com/backend-tls: ssl verify none +spec: + selector: + app: MyApp + ports: + - protocol: TCP + port: 80 + targetPort: 9376 +``` + +```yaml +apiVersion: voyager.appscode.com/v1 +kind: Ingress +metadata: + name: test-ingress + namespace: default +spec: + defaultBackend: + service: + name: test-service + port: + number: 80 + rules: + - host: appscode.example.com + http: + paths: + - backend: + service: + name: my-service + port: + number: 80 +``` + +Reference: + +- https://cbonte.github.io/haproxy-dconv/1.8/configuration.html#5.2-ssl +- https://cbonte.github.io/haproxy-dconv/1.8/configuration.html#5.2-verify +- https://cbonte.github.io/haproxy-dconv/1.8/configuration.html#5.2-verifyhost diff --git a/content/docs/v2024.3.18/guides/ingress/tls/multiple-tls.md b/content/docs/v2024.3.18/guides/ingress/tls/multiple-tls.md new file mode 100644 index 000000000..5e616e614 --- /dev/null +++ b/content/docs/v2024.3.18/guides/ingress/tls/multiple-tls.md @@ -0,0 +1,284 @@ +--- +title: Multiple TLS Certificates | Kubernetes Ingress +menu: + docs_v2024.3.18: + identifier: multiple-tls-certs + name: Multiple TLS Certificates + parent: tls-ingress + weight: 10 +product_name: voyager +menu_name: docs_v2024.3.18 +section_menu_id: guides +info: + cli: v0.0.15 + installer: v2024.3.18 + version: v2024.3.18 +--- + +> New to Voyager? Please start [here](/docs/v2024.3.18/concepts/overview). + +# Multiple TLS Certificates + +You can secure an Ingress by specifying TLS secrets or `certificates.voyager.appscode.com` resources inside `spec.tls` section of the Ingress. Voyager writes the TLS secrets in `/etc/ssl/private/haproxy/tls/{secret-name}.pem` files inside the HAProxy pod. So if you specify multiple TLS secrets, all of them will be mounted in `/etc/ssl/private/haproxy/tls` folder. HAProxy presents the certificate to clients which matches with the TLS Server Name Indication (SNI) field of the request. If no SNI is provided by the client or if the SNI does not match with any certificate, then the first loaded certificate will be presented. So you need send request with correct SNI. Note that, `Host` header does not indicates the SNI. + +This tutorial will show you how to configure multiple TLS secrets/certificates for different hosts within a single ingress. + +## Before You Begin + +At first, you need to have a Kubernetes cluster, and the kubectl command-line tool must be configured to communicate with your cluster. Then install Voyager operator in your cluster by following the steps [here](/docs/v2024.3.18/setup/install). + +To keep things isolated, we will use a separate namespace called `demo` throughout this tutorial. Run the following command to prepare your cluster for this tutorial: + +```bash +$ kubectl create namespace demo +namespace "demo" created +``` + +## Deploy Test Servers + +Deploy a test server that serves two different ports. + +```yaml +$ kubectl apply -f test-server.yaml + +apiVersion: apps/v1 +kind: Deployment +metadata: + name: test-server + namespace: demo +spec: + selector: + matchLabels: + app: test-server + template: + metadata: + labels: + app: test-server + spec: + containers: + - name: server + image: appscode/test-server:2.3 + imagePullPolicy: Always + env: + - name: POD_NAME + valueFrom: + fieldRef: + fieldPath: metadata.name + ports: + - name: http-1 + containerPort: 8080 + - name: http-2 + containerPort: 8989 +--- +apiVersion: v1 +kind: Service +metadata: + name: test-server + namespace: demo + labels: + app: test-server +spec: + selector: + app: test-server + ports: + - port: 8080 + name: http-1 + protocol: TCP + targetPort: 8080 + - port: 8989 + name: http-2 + protocol: TCP + targetPort: 8989 +``` + +## Create Ingress Without TLS + +Create a ingress that points to the different port of the test server for different hosts. + +```yaml +$ kubectl apply -f ingress.yaml + +apiVersion: voyager.appscode.com/v1 +kind: Ingress +metadata: + name: test-ingress + namespace: demo +spec: + rules: + - host: aa.appscode.ninja + http: + paths: + - backend: + service: + name: test-server + port: + number: 8080 + - host: bb.appscode.ninja + http: + paths: + - backend: + service: + name: test-server + port: + number: 8989 +``` + +## Configure DNS + +Get external IP for the ingress: + +```bash +$ kubectl get service -n demo + +NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE +test-server ClusterIP 10.55.242.68 8080/TCP,8989/TCP 6m +voyager-test-ingress LoadBalancer 10.55.249.12 104.154.239.169 80:31584/TCP 1m +``` + +Set the external IP of the ingress service to the DNS record for `aa.appscode.ninja` and `bb.appscode.ninja`. + +![google-dns](/docs/v2024.3.18/images/ingress/multiple-tls/google-dns.png) + +Now wait a little to confirm that these new domains are resolving: + +```bash +$ dig +short aa.appscode.ninja +104.154.239.169 + +$ dig +short bb.appscode.ninja +104.154.239.169 +``` + +## Check HTTP Response + +Visit `http://aa.appscode.ninja` and `http://bb.appscode.ninja` in your browser: + +![aa.appscode.ninja](/docs/v2024.3.18/images/ingress/multiple-tls/aa.appscode.ninja.png) +![bb.appscode.ninja](/docs/v2024.3.18/images/ingress/multiple-tls/bb.appscode.ninja.png) + +## Create Certificate + +In this tutorial we will issue free SSL certificates from Let’s Encrypt via DNS challenge for domains using Google Cloud DNS service. If you like to use HTTP challenge or other DNS service provider, please follow the docs [here](/docs/v2024.3.18/guides/certificate/). + +Create a secret with Google service account JSON key. Note that, this service account must have DNS Administrator permission. + +```bash +$ kubectl create secret generic voyager-gce -n demo \ + --from-literal=GCE_PROJECT= \ + --from-file=GOOGLE_SERVICE_ACCOUNT_JSON_KEY= +``` + +Create another secret to provide ACME user email. Change the email to a valid email address and run the following command: + +```bash +$ kubectl create secret generic acme-account --from-literal=ACME_EMAIL=me@example.com + -n demo +``` + +Create two Certificate CRDs to issue TLS certificates from Let’s Encrypt using DNS challenge: + +```yaml +$ kubectl apply -f certificate.yaml + +apiVersion: cert-manager.io/v1 +kind: Certificate +metadata: + name: aa-ninja + namespace: demo +spec: + dnsNames: + - aa.appscode.ninja + issuerRef: + name: letsencrypt-staging-dns + secretName: aa-ninja +--- +apiVersion: cert-manager.io/v1 +kind: Certificate +metadata: + name: bb-ninja + namespace: demo +spec: + dnsNames: + - bb.appscode.ninja + issuerRef: + name: letsencrypt-staging-dns + secretName: bb-ninja +``` + +After several minutes, you should see two new secrets named `tls-aa-ninja` and `tls-bb-ninja`. These secrets contains the `tls.crt` and `tls.key`. + +```bash +$ kubectl get secrets -n demo + +NAME TYPE DATA AGE +acme-account Opaque 3 2m +default-token-ml4xb kubernetes.io/service-account-token 3 1h +tls-aa-ninja kubernetes.io/tls 2 47s +tls-bb-ninja kubernetes.io/tls 2 17s +voyager-gce Opaque 2 2m +voyager-test-ingress-token-8jbgh kubernetes.io/service-account-token 3 54m +``` + +## Ingress With TLS + +Update the previously created ingress and specify the certificates in the TLS section. + + ```yaml +$ kubectl apply -f ingress-tls.yaml + +apiVersion: voyager.appscode.com/v1 +kind: Ingress +metadata: + name: test-ingress + namespace: demo +spec: + tls: + - hosts: + - aa.appscode.ninja + secretName: aa-ninja + - hosts: + - bb.appscode.ninja + secretName: bb-ninja + rules: + - host: aa.appscode.ninja + http: + paths: + - backend: + service: + name: test-server + port: + number: 8080 + - host: bb.appscode.ninja + http: + paths: + - backend: + service: + name: test-server + port: + number: 8989 +``` + +## Check HTTPS Response + +Visit `https://aa.appscode.ninja` and `https://bb.appscode.ninja` in your browser: + +![https.aa.appscode.ninja](/docs/v2024.3.18/images/ingress/multiple-tls/https.aa.appscode.ninja.png) +![https.bb.appscode.ninja](/docs/v2024.3.18/images/ingress/multiple-tls/https.bb.appscode.ninja.png) + +## Check Certificate Details + +You can see the certificate details from your browser: + +![connection-secure](/docs/v2024.3.18/images/ingress/multiple-tls/connection-secure.png) +![cert-details](/docs/v2024.3.18/images/ingress/multiple-tls/cert-details.png) + +## Cleaning up + +To cleanup the Kubernetes resources created by this tutorial, run: + +```bash +$ kubectl delete namespace demo +namespace "demo" deleted +``` + +If you would like to uninstall Voyager operator, please follow the steps [here](/docs/v2024.3.18/setup/uninstall). diff --git a/content/docs/v2024.3.18/guides/ingress/tls/overview.md b/content/docs/v2024.3.18/guides/ingress/tls/overview.md new file mode 100644 index 000000000..a1ab06c78 --- /dev/null +++ b/content/docs/v2024.3.18/guides/ingress/tls/overview.md @@ -0,0 +1,216 @@ +--- +title: TLS | Kubernetes Ingress +menu: + docs_v2024.3.18: + identifier: overview-tls + name: Overview + parent: tls-ingress + weight: 10 +product_name: voyager +menu_name: docs_v2024.3.18 +section_menu_id: guides +info: + cli: v0.0.15 + installer: v2024.3.18 + version: v2024.3.18 +--- + +> New to Voyager? Please start [here](/docs/v2024.3.18/concepts/overview). + +# TLS +You can secure an Ingress by specifying a secret containing TLS pem or by referring a `certificates.voyager.appscode.com` resource. +`certificates.voyager.appscode.com` can manage an certificate resource and use that certificate to encrypt communication. + +This tutorial will show you how to secure an Ingress using TLS/SSL certificates. + +## Before You Begin + +At first, you need to have a Kubernetes cluster, and the kubectl command-line tool must be configured to communicate with your cluster. If you do not already have a cluster, you can create one by using [Minikube](https://github.com/kubernetes/minikube). + +Now, install Voyager operator in your `minikube` cluster following the steps [here](/docs/v2024.3.18/setup/install). + +```bash +minikube start +./hack/deploy/minikube.sh +``` + +To keep things isolated, this tutorial uses a separate namespace called `demo` throughout this tutorial. Run the following command to prepare your cluster for this tutorial: + +```bash +$ kubectl create namespace demo +namespace "demo" created +``` + +## Sourcing TLS Certificate + +You can use an existing TLS certificate/key pair or use Voyager to issue free SSL certificates from Let's Encrypt. + +### Import Existing Certificate + +To import an existing TLS certificate/key pair into a Kubernetes cluster, run the following command. + +```bash +$ kubectl create secret tls tls-secret --namespace=demo --cert=path/to/tls.cert --key=path/to/tls.key +secret "tls-secret" created +``` + +This will create a Secret with the PEM formatted certificate under `tls.crt` key and the PEM formatted private key under `tls.key` key. + +```yaml +apiVersion: v1 +kind: Secret +metadata: + name: tls-secret + namespace: demo +data: + tls.crt: YmFzZTY0IGVuY29kZWQgY2VydA== + tls.key: YmFzZTY0IGVuY29kZWQga2V5 +``` + +### Issue Certificates from Let's Encrypt + +To issue a free TLS/SSL certificate from Let's Encrypt, create a `Certificate` object with the list of domains. To learn more, please visit the following links: + +- [Using HTTP-01 challenge](/docs/v2024.3.18/guides/certificate/http/overview) +- [Using DNS-01 challenge](/docs/v2024.3.18/guides/certificate/dns/providers) + +## Secure HTTP Service + +To terminate a HTTP service, + +Caveats: +- You can't terminate default backend + +For HTTP, If the `spec.TLS` section in an Ingress specifies different hosts, they will be multiplexed +on the same port according to hostname specified through SNI TLS extension (Voyager supports SNI). + +For handling wildcard domains use **"\*"** as hostname ( [Example](https://github.com/tamalsaha/voyager-wildcard/blob/master/mrasero/ing-https.yaml) ) + +Referencing this secret in an Ingress will tell the Voyager to secure the channel from client to the loadbalancer using TLS: + +```yaml +apiVersion: voyager.appscode.com/v1 +kind: Ingress +metadata: + name: test-ingress + namespace: demo +spec: + tls: + - secretName: tls-secret + hosts: + - one.example.com + rules: + - host: one.example.com + http: + paths: + - backend: + service: + name: test-service + port: + number: 80 +``` +This Ingress will open an `https` listener to secure the channel from the client to the loadbalancer, +terminate TLS at load balancer with the secret retried via SNI and forward unencrypted traffic to the +`test-service`. + +## Secure TCP Service + +Adding a TCP TLS termination at Voyager Ingress is slightly different than HTTP, as TCP mode does not have +SNI support. A TCP endpoint with TLS termination, will look like this in Voyager Ingress: + +```yaml +apiVersion: voyager.appscode.com/v1 +kind: Ingress +metadata: + name: test-ingress + namespace: demo +spec: + tls: + - secretName: testsecret + hosts: + - appscode.example.com + rules: + - host: appscode.example.com + tcp: + port: 9898 + backend: + service: + name: tcp-service + port: + number: 50077 +``` +You need to set the secretName field with the TCP rule to use a certificate. + +## FAQ + +**Q: How to serve both TLS and non-TLS under same host?** + +Voyager Ingress can support for TLS and non-TLS traffic for same host in both HTTP and TCP mode. To do that you need to specify `noTLS: true` for the corresponding rule. Here is an example: + +```yaml +apiVersion: voyager.appscode.com/v1 +kind: Ingress +metadata: + name: test-ingress + namespace: demo +spec: + tls: + - secretName: onecert + hosts: + - one.example.com + rules: + - host: one.example.com + http: + paths: + - backend: + service: + name: test-service + port: + number: 80 + - host: one.example.com + http: + noTLS: true + paths: + - backend: + service: + name: test-service + port: + number: 80 + - host: one.example.com + tcp: + port: 7878 + backend: + service: + name: tcp-service + port: + number: 50077 + - host: one.example.com + tcp: + port: 7800 + noTLS: true + backend: + service: + name: tcp-service + port: + number: 50077 +``` + +For this Ingress, HAProxy will open up 3 separate ports: + +- port 443: This is used by `spec.rules[0]`. Passes traffic to pods behind test-server:80. Uses TLS, since `spec.TLS` has a matching host. + +- port 80: This is used by `spec.rules[1]`. Passes traffic to pods behind test-server:80. __Uses no TLS__, even though `spec.TLS` has a matching host. This is because `http.noTLS` is set to true for this rule. + +- port 7878: This is used by `spec.rules[2]`. Passes traffic to pods behind tcp-service:50077. Uses TLS, since `spec.TLS` has a matching host. + +- port 7880: This is used by `spec.rules[3]`. Passes traffic to pods behind tcp-service:50077. __Uses no TLS__, even though `spec.TLS` has a matching host. This is because `tcp.noTLS` is set to true for this rule. + +## Cleaning up + +To cleanup the Kubernetes resources created by this tutorial, run: + +```bash +kubectl delete ns demo +``` + +If you would like to uninstall Voyager operator, please follow the steps [here](/docs/v2024.3.18/setup/uninstall). diff --git a/content/docs/v2024.3.18/guides/ingress/websocket.md b/content/docs/v2024.3.18/guides/ingress/websocket.md new file mode 100644 index 000000000..9a7f9145a --- /dev/null +++ b/content/docs/v2024.3.18/guides/ingress/websocket.md @@ -0,0 +1,2 @@ +> New to Voyager? Please start [here](/docs/v2024.3.18/concepts/overview). + diff --git a/content/docs/v2024.3.18/images/cert-manager/azure/a-record.png b/content/docs/v2024.3.18/images/cert-manager/azure/a-record.png new file mode 100644 index 000000000..ebb645942 Binary files /dev/null and b/content/docs/v2024.3.18/images/cert-manager/azure/a-record.png differ diff --git a/content/docs/v2024.3.18/images/cert-manager/azure/client-secret.png b/content/docs/v2024.3.18/images/cert-manager/azure/client-secret.png new file mode 100644 index 000000000..d59d76594 Binary files /dev/null and b/content/docs/v2024.3.18/images/cert-manager/azure/client-secret.png differ diff --git a/content/docs/v2024.3.18/images/cert-manager/azure/client-tenant.png b/content/docs/v2024.3.18/images/cert-manager/azure/client-tenant.png new file mode 100644 index 000000000..e6e05e436 Binary files /dev/null and b/content/docs/v2024.3.18/images/cert-manager/azure/client-tenant.png differ diff --git a/content/docs/v2024.3.18/images/cert-manager/azure/dns-zone-contributor.png b/content/docs/v2024.3.18/images/cert-manager/azure/dns-zone-contributor.png new file mode 100644 index 000000000..b21f06c2f Binary files /dev/null and b/content/docs/v2024.3.18/images/cert-manager/azure/dns-zone-contributor.png differ diff --git a/content/docs/v2024.3.18/images/cert-manager/azure/new-registration.png b/content/docs/v2024.3.18/images/cert-manager/azure/new-registration.png new file mode 100644 index 000000000..37cf3422c Binary files /dev/null and b/content/docs/v2024.3.18/images/cert-manager/azure/new-registration.png differ diff --git a/content/docs/v2024.3.18/images/cert-manager/azure/new-registration2.png b/content/docs/v2024.3.18/images/cert-manager/azure/new-registration2.png new file mode 100644 index 000000000..849dddbf2 Binary files /dev/null and b/content/docs/v2024.3.18/images/cert-manager/azure/new-registration2.png differ diff --git a/content/docs/v2024.3.18/images/cert-manager/azure/subscriptions.png b/content/docs/v2024.3.18/images/cert-manager/azure/subscriptions.png new file mode 100644 index 000000000..ed134401a Binary files /dev/null and b/content/docs/v2024.3.18/images/cert-manager/azure/subscriptions.png differ diff --git a/content/docs/v2024.3.18/images/cert-manager/azure/user-access.png b/content/docs/v2024.3.18/images/cert-manager/azure/user-access.png new file mode 100644 index 000000000..2dfe7124d Binary files /dev/null and b/content/docs/v2024.3.18/images/cert-manager/azure/user-access.png differ diff --git a/content/docs/v2024.3.18/images/cert-manager/google_dns/svcac1.png b/content/docs/v2024.3.18/images/cert-manager/google_dns/svcac1.png new file mode 100644 index 000000000..2b77a8097 Binary files /dev/null and b/content/docs/v2024.3.18/images/cert-manager/google_dns/svcac1.png differ diff --git a/content/docs/v2024.3.18/images/cert-manager/google_dns/svcac2.png b/content/docs/v2024.3.18/images/cert-manager/google_dns/svcac2.png new file mode 100644 index 000000000..a54a16a2f Binary files /dev/null and b/content/docs/v2024.3.18/images/cert-manager/google_dns/svcac2.png differ diff --git a/content/docs/v2024.3.18/images/cert-manager/google_dns/svcac3.png b/content/docs/v2024.3.18/images/cert-manager/google_dns/svcac3.png new file mode 100644 index 000000000..a58eecb19 Binary files /dev/null and b/content/docs/v2024.3.18/images/cert-manager/google_dns/svcac3.png differ diff --git a/content/docs/v2024.3.18/images/cert-manager/route53/a-record.png b/content/docs/v2024.3.18/images/cert-manager/route53/a-record.png new file mode 100644 index 000000000..840bc0464 Binary files /dev/null and b/content/docs/v2024.3.18/images/cert-manager/route53/a-record.png differ diff --git a/content/docs/v2024.3.18/images/cert-manager/route53/access-type.png b/content/docs/v2024.3.18/images/cert-manager/route53/access-type.png new file mode 100644 index 000000000..915d896a3 Binary files /dev/null and b/content/docs/v2024.3.18/images/cert-manager/route53/access-type.png differ diff --git a/content/docs/v2024.3.18/images/cert-manager/route53/add-user.png b/content/docs/v2024.3.18/images/cert-manager/route53/add-user.png new file mode 100644 index 000000000..37c06da2c Binary files /dev/null and b/content/docs/v2024.3.18/images/cert-manager/route53/add-user.png differ diff --git a/content/docs/v2024.3.18/images/cert-manager/route53/attach-policy.png b/content/docs/v2024.3.18/images/cert-manager/route53/attach-policy.png new file mode 100644 index 000000000..c3c840283 Binary files /dev/null and b/content/docs/v2024.3.18/images/cert-manager/route53/attach-policy.png differ diff --git a/content/docs/v2024.3.18/images/cert-manager/route53/create-policy.png b/content/docs/v2024.3.18/images/cert-manager/route53/create-policy.png new file mode 100644 index 000000000..84dc868e7 Binary files /dev/null and b/content/docs/v2024.3.18/images/cert-manager/route53/create-policy.png differ diff --git a/content/docs/v2024.3.18/images/cert-manager/route53/hosted-zone-id.png b/content/docs/v2024.3.18/images/cert-manager/route53/hosted-zone-id.png new file mode 100644 index 000000000..330bcf91f Binary files /dev/null and b/content/docs/v2024.3.18/images/cert-manager/route53/hosted-zone-id.png differ diff --git a/content/docs/v2024.3.18/images/cert-manager/route53/iam.png b/content/docs/v2024.3.18/images/cert-manager/route53/iam.png new file mode 100644 index 000000000..06e7491bd Binary files /dev/null and b/content/docs/v2024.3.18/images/cert-manager/route53/iam.png differ diff --git a/content/docs/v2024.3.18/images/cert-manager/route53/policy-json.png b/content/docs/v2024.3.18/images/cert-manager/route53/policy-json.png new file mode 100644 index 000000000..a2dc21661 Binary files /dev/null and b/content/docs/v2024.3.18/images/cert-manager/route53/policy-json.png differ diff --git a/content/docs/v2024.3.18/images/cert-manager/route53/review-policy.png b/content/docs/v2024.3.18/images/cert-manager/route53/review-policy.png new file mode 100644 index 000000000..cad7efeca Binary files /dev/null and b/content/docs/v2024.3.18/images/cert-manager/route53/review-policy.png differ diff --git a/content/docs/v2024.3.18/images/cert-manager/route53/review-user.png b/content/docs/v2024.3.18/images/cert-manager/route53/review-user.png new file mode 100644 index 000000000..0dff3da50 Binary files /dev/null and b/content/docs/v2024.3.18/images/cert-manager/route53/review-user.png differ diff --git a/content/docs/v2024.3.18/images/cert-manager/route53/route53.png b/content/docs/v2024.3.18/images/cert-manager/route53/route53.png new file mode 100644 index 000000000..de9effccb Binary files /dev/null and b/content/docs/v2024.3.18/images/cert-manager/route53/route53.png differ diff --git a/content/docs/v2024.3.18/images/cert-manager/route53/success-user.png b/content/docs/v2024.3.18/images/cert-manager/route53/success-user.png new file mode 100644 index 000000000..a3eb435cd Binary files /dev/null and b/content/docs/v2024.3.18/images/cert-manager/route53/success-user.png differ diff --git a/content/docs/v2024.3.18/images/ingress/configuration/custom-template/installer.png b/content/docs/v2024.3.18/images/ingress/configuration/custom-template/installer.png new file mode 100644 index 000000000..11b6bd761 Binary files /dev/null and b/content/docs/v2024.3.18/images/ingress/configuration/custom-template/installer.png differ diff --git a/content/docs/v2024.3.18/images/ingress/multiple-tls/aa.appscode.ninja.png b/content/docs/v2024.3.18/images/ingress/multiple-tls/aa.appscode.ninja.png new file mode 100644 index 000000000..3d926000c Binary files /dev/null and b/content/docs/v2024.3.18/images/ingress/multiple-tls/aa.appscode.ninja.png differ diff --git a/content/docs/v2024.3.18/images/ingress/multiple-tls/bb.appscode.ninja.png b/content/docs/v2024.3.18/images/ingress/multiple-tls/bb.appscode.ninja.png new file mode 100644 index 000000000..7b665a987 Binary files /dev/null and b/content/docs/v2024.3.18/images/ingress/multiple-tls/bb.appscode.ninja.png differ diff --git a/content/docs/v2024.3.18/images/ingress/multiple-tls/cert-details.png b/content/docs/v2024.3.18/images/ingress/multiple-tls/cert-details.png new file mode 100644 index 000000000..d705ac5c1 Binary files /dev/null and b/content/docs/v2024.3.18/images/ingress/multiple-tls/cert-details.png differ diff --git a/content/docs/v2024.3.18/images/ingress/multiple-tls/connection-secure.png b/content/docs/v2024.3.18/images/ingress/multiple-tls/connection-secure.png new file mode 100644 index 000000000..0e7e6f256 Binary files /dev/null and b/content/docs/v2024.3.18/images/ingress/multiple-tls/connection-secure.png differ diff --git a/content/docs/v2024.3.18/images/ingress/multiple-tls/google-dns.png b/content/docs/v2024.3.18/images/ingress/multiple-tls/google-dns.png new file mode 100644 index 000000000..efe2943b0 Binary files /dev/null and b/content/docs/v2024.3.18/images/ingress/multiple-tls/google-dns.png differ diff --git a/content/docs/v2024.3.18/images/ingress/multiple-tls/https.aa.appscode.ninja.png b/content/docs/v2024.3.18/images/ingress/multiple-tls/https.aa.appscode.ninja.png new file mode 100644 index 000000000..2de585ec9 Binary files /dev/null and b/content/docs/v2024.3.18/images/ingress/multiple-tls/https.aa.appscode.ninja.png differ diff --git a/content/docs/v2024.3.18/images/ingress/multiple-tls/https.bb.appscode.ninja.png b/content/docs/v2024.3.18/images/ingress/multiple-tls/https.bb.appscode.ninja.png new file mode 100644 index 000000000..9ea42455b Binary files /dev/null and b/content/docs/v2024.3.18/images/ingress/multiple-tls/https.bb.appscode.ninja.png differ diff --git a/content/docs/v2024.3.18/images/ingress/voyager-ingress.png b/content/docs/v2024.3.18/images/ingress/voyager-ingress.png new file mode 100644 index 000000000..4d2c5fe3d Binary files /dev/null and b/content/docs/v2024.3.18/images/ingress/voyager-ingress.png differ diff --git a/content/docs/v2024.3.18/images/monitoring/builtin-prometheus.png b/content/docs/v2024.3.18/images/monitoring/builtin-prometheus.png new file mode 100644 index 000000000..6d490094b Binary files /dev/null and b/content/docs/v2024.3.18/images/monitoring/builtin-prometheus.png differ diff --git a/content/docs/v2024.3.18/images/monitoring/coreos-operator.png b/content/docs/v2024.3.18/images/monitoring/coreos-operator.png new file mode 100644 index 000000000..7afd3fbcd Binary files /dev/null and b/content/docs/v2024.3.18/images/monitoring/coreos-operator.png differ diff --git a/content/docs/v2024.3.18/images/monitoring/operator-metrics.png b/content/docs/v2024.3.18/images/monitoring/operator-metrics.png new file mode 100644 index 000000000..1f6fc1e02 Binary files /dev/null and b/content/docs/v2024.3.18/images/monitoring/operator-metrics.png differ diff --git a/content/docs/v2024.3.18/images/monitoring/operator-profiler.png b/content/docs/v2024.3.18/images/monitoring/operator-profiler.png new file mode 100644 index 000000000..c047fd209 Binary files /dev/null and b/content/docs/v2024.3.18/images/monitoring/operator-profiler.png differ diff --git a/content/docs/v2024.3.18/images/monitoring/stats-view.png b/content/docs/v2024.3.18/images/monitoring/stats-view.png new file mode 100644 index 000000000..b5ca39e32 Binary files /dev/null and b/content/docs/v2024.3.18/images/monitoring/stats-view.png differ diff --git a/content/docs/v2024.3.18/images/setup/community_license_form.png b/content/docs/v2024.3.18/images/setup/community_license_form.png new file mode 100644 index 000000000..be76ed4be Binary files /dev/null and b/content/docs/v2024.3.18/images/setup/community_license_form.png differ diff --git a/content/docs/v2024.3.18/images/setup/enterprise_license_form.png b/content/docs/v2024.3.18/images/setup/enterprise_license_form.png new file mode 100644 index 000000000..5e1fb0fd1 Binary files /dev/null and b/content/docs/v2024.3.18/images/setup/enterprise_license_form.png differ diff --git a/content/docs/v2024.3.18/reference/_index.md b/content/docs/v2024.3.18/reference/_index.md new file mode 100644 index 000000000..e1ec71d47 --- /dev/null +++ b/content/docs/v2024.3.18/reference/_index.md @@ -0,0 +1,16 @@ +--- +title: Reference +description: KubeDB CLI Reference +menu: + docs_v2024.3.18: + identifier: reference + name: Reference + weight: 1000 + pre: dropdown +menu_name: docs_v2024.3.18 +info: + cli: v0.0.15 + installer: v2024.3.18 + version: v2024.3.18 +--- + diff --git a/content/docs/v2024.3.18/reference/cli/_index.md b/content/docs/v2024.3.18/reference/cli/_index.md new file mode 100644 index 000000000..cbe986995 --- /dev/null +++ b/content/docs/v2024.3.18/reference/cli/_index.md @@ -0,0 +1,16 @@ +--- +title: Reference | Voyager CLI +description: Voyager CLI Reference +menu: + docs_v2024.3.18: + identifier: reference-cli + name: Voyager CLI + weight: 30 + parent: reference +menu_name: docs_v2024.3.18 +info: + cli: v0.0.15 + installer: v2024.3.18 + version: v2024.3.18 +--- + diff --git a/content/docs/v2024.3.18/reference/cli/voyager.md b/content/docs/v2024.3.18/reference/cli/voyager.md new file mode 100644 index 000000000..a738ae440 --- /dev/null +++ b/content/docs/v2024.3.18/reference/cli/voyager.md @@ -0,0 +1,36 @@ +--- +title: Voyager +menu: + docs_v2024.3.18: + identifier: voyager + name: Voyager + parent: reference-cli + weight: 0 +menu_name: docs_v2024.3.18 +section_menu_id: reference +url: /docs/v2024.3.18/reference/cli/ +aliases: +- /docs/v2024.3.18/reference/cli/voyager/ +info: + cli: v0.0.15 + installer: v2024.3.18 + version: v2024.3.18 +--- + +## voyager + +Voyager cli by AppsCode + +### Options + +``` + -h, --help help for voyager +``` + +### SEE ALSO + +* [voyager check](/docs/v2024.3.18/reference/cli/voyager_check) - Check Ingress +* [voyager completion](/docs/v2024.3.18/reference/cli/voyager_completion) - Generate completion script +* [voyager convert](/docs/v2024.3.18/reference/cli/voyager_convert) - Convert v1beta1 to v1 api version +* [voyager version](/docs/v2024.3.18/reference/cli/voyager_version) - Prints binary version number. + diff --git a/content/docs/v2024.3.18/reference/cli/voyager_check.md b/content/docs/v2024.3.18/reference/cli/voyager_check.md new file mode 100644 index 000000000..0005d78f8 --- /dev/null +++ b/content/docs/v2024.3.18/reference/cli/voyager_check.md @@ -0,0 +1,35 @@ +--- +title: Voyager Check +menu: + docs_v2024.3.18: + identifier: voyager-check + name: Voyager Check + parent: reference-cli +menu_name: docs_v2024.3.18 +section_menu_id: reference +info: + cli: v0.0.15 + installer: v2024.3.18 + version: v2024.3.18 +--- + +## voyager check + +Check Ingress + +``` +voyager check [flags] +``` + +### Options + +``` + -c, --cloud-provider string Name of cloud provider + --from-file string YAML formatted file containing ingress + -h, --help help for check +``` + +### SEE ALSO + +* [voyager](/docs/v2024.3.18/reference/cli/voyager) - Voyager cli by AppsCode + diff --git a/content/docs/v2024.3.18/reference/cli/voyager_completion.md b/content/docs/v2024.3.18/reference/cli/voyager_completion.md new file mode 100644 index 000000000..292a69376 --- /dev/null +++ b/content/docs/v2024.3.18/reference/cli/voyager_completion.md @@ -0,0 +1,67 @@ +--- +title: Voyager Completion +menu: + docs_v2024.3.18: + identifier: voyager-completion + name: Voyager Completion + parent: reference-cli +menu_name: docs_v2024.3.18 +section_menu_id: reference +info: + cli: v0.0.15 + installer: v2024.3.18 + version: v2024.3.18 +--- + +## voyager completion + +Generate completion script + +### Synopsis + +To load completions: + +Bash: + +$ source <(kubectl-voyager completion bash) + +# To load completions for each session, execute once: +Linux: + $ kubectl-voyager completion bash > /etc/bash_completion.d/kubectl-voyager +MacOS: + $ kubectl-voyager completion bash > /usr/local/etc/bash_completion.d/kubectl-voyager + +Zsh: + +# If shell completion is not already enabled in your environment you will need +# to enable it. You can execute the following once: + +$ echo "autoload -U compinit; compinit" >> ~/.zshrc + +# To load completions for each session, execute once: +$ kubectl-voyager completion zsh > "${fpath[1]}/_kubectl-voyager" + +# You will need to start a new shell for this setup to take effect. + +Fish: + +$ kubectl-voyager completion fish | source + +# To load completions for each session, execute once: +$ kubectl-voyager completion fish > ~/.config/fish/completions/kubectl-voyager.fish + + +``` +voyager completion [bash|zsh|fish|powershell] +``` + +### Options + +``` + -h, --help help for completion +``` + +### SEE ALSO + +* [voyager](/docs/v2024.3.18/reference/cli/voyager) - Voyager cli by AppsCode + diff --git a/content/docs/v2024.3.18/reference/cli/voyager_convert.md b/content/docs/v2024.3.18/reference/cli/voyager_convert.md new file mode 100644 index 000000000..8213faaa8 --- /dev/null +++ b/content/docs/v2024.3.18/reference/cli/voyager_convert.md @@ -0,0 +1,34 @@ +--- +title: Voyager Convert +menu: + docs_v2024.3.18: + identifier: voyager-convert + name: Voyager Convert + parent: reference-cli +menu_name: docs_v2024.3.18 +section_menu_id: reference +info: + cli: v0.0.15 + installer: v2024.3.18 + version: v2024.3.18 +--- + +## voyager convert + +Convert v1beta1 to v1 api version + +``` +voyager convert [flags] +``` + +### Options + +``` + -f, --from-file string YAML formatted file containing ingress + -h, --help help for convert +``` + +### SEE ALSO + +* [voyager](/docs/v2024.3.18/reference/cli/voyager) - Voyager cli by AppsCode + diff --git a/content/docs/v2024.3.18/reference/cli/voyager_version.md b/content/docs/v2024.3.18/reference/cli/voyager_version.md new file mode 100644 index 000000000..d3a9e74ff --- /dev/null +++ b/content/docs/v2024.3.18/reference/cli/voyager_version.md @@ -0,0 +1,35 @@ +--- +title: Voyager Version +menu: + docs_v2024.3.18: + identifier: voyager-version + name: Voyager Version + parent: reference-cli +menu_name: docs_v2024.3.18 +section_menu_id: reference +info: + cli: v0.0.15 + installer: v2024.3.18 + version: v2024.3.18 +--- + +## voyager version + +Prints binary version number. + +``` +voyager version [flags] +``` + +### Options + +``` + --check string Check version constraint + -h, --help help for version + --short Print just the version number. +``` + +### SEE ALSO + +* [voyager](/docs/v2024.3.18/reference/cli/voyager) - Voyager cli by AppsCode + diff --git a/content/docs/v2024.3.18/reference/operator/_index.md b/content/docs/v2024.3.18/reference/operator/_index.md new file mode 100644 index 000000000..735d36ff5 --- /dev/null +++ b/content/docs/v2024.3.18/reference/operator/_index.md @@ -0,0 +1,16 @@ +--- +title: Reference | Voyager Operator +description: Voyager Operator Reference +menu: + docs_v2024.3.18: + identifier: reference-operator + name: Voyager Operator + weight: 10 + parent: reference +menu_name: docs_v2024.3.18 +info: + cli: v0.0.15 + installer: v2024.3.18 + version: v2024.3.18 +--- + diff --git a/content/docs/v2024.3.18/reference/operator/voyager.md b/content/docs/v2024.3.18/reference/operator/voyager.md new file mode 100644 index 000000000..a35c5f775 --- /dev/null +++ b/content/docs/v2024.3.18/reference/operator/voyager.md @@ -0,0 +1,41 @@ +--- +title: Voyager +menu: + docs_v2024.3.18: + identifier: voyager + name: Voyager + parent: reference-operator + weight: 0 +product_name: voyager +menu_name: docs_v2024.3.18 +section_menu_id: reference +url: /docs/v2024.3.18/reference/operator/ +aliases: +- /docs/v2024.3.18/reference/operator/voyager/ +info: + cli: v0.0.15 + installer: v2024.3.18 + version: v2024.3.18 +--- + +## voyager + +Voyager by AppsCode - Secure L7/L4 Ingress Controller for Kubernetes + +### Options + +``` + --bypass-validating-webhook-xray if true, bypasses validating webhook xray checks + --enable-analytics Send analytical events to Google Analytics (default true) + -h, --help help for voyager + --use-kubeapiserver-fqdn-for-aks if true, uses kube-apiserver FQDN for AKS cluster to workaround https://github.com/Azure/AKS/issues/522 (default true) +``` + +### SEE ALSO + +* [voyager coordinator](/docs/v2024.3.18/reference/operator/voyager_coordinator) - Synchronizes HAProxy config +* [voyager init](/docs/v2024.3.18/reference/operator/voyager_init) - Initialize HAProxy config +* [voyager operator](/docs/v2024.3.18/reference/operator/voyager_operator) - Launch Voyager Ingress Operator +* [voyager run](/docs/v2024.3.18/reference/operator/voyager_run) - Launch Voyager Ingress Webhook Server +* [voyager version](/docs/v2024.3.18/reference/operator/voyager_version) - Prints binary version number. + diff --git a/content/docs/v2024.3.18/reference/operator/voyager_coordinator.md b/content/docs/v2024.3.18/reference/operator/voyager_coordinator.md new file mode 100644 index 000000000..920f50b84 --- /dev/null +++ b/content/docs/v2024.3.18/reference/operator/voyager_coordinator.md @@ -0,0 +1,52 @@ +--- +title: Voyager Coordinator +menu: + docs_v2024.3.18: + identifier: voyager-coordinator + name: Voyager Coordinator + parent: reference-operator +product_name: voyager +menu_name: docs_v2024.3.18 +section_menu_id: reference +info: + cli: v0.0.15 + installer: v2024.3.18 + version: v2024.3.18 +--- + +## voyager coordinator + +Synchronizes HAProxy config + +``` +voyager coordinator [command] [flags] +``` + +### Options + +``` + --burst int The maximum burst for throttle (default 1000000) + --cert-dir string Path where tls certificates are stored for HAProxy (default "/etc/ssl/private/haproxy") + -c, --cloud-provider string Name of cloud provider + --config-dir string Path where HAProxy config is stored (default "/shared/etc/haproxy") + -h, --help help for coordinator + --ingress-api-version string API version of ingress resource + --ingress-name string Name of ingress resource + --kubeconfig string Path to kubeconfig file with authorization information (the master location is set by the master flag). + --master string The address of the Kubernetes API server (overrides any value in kubeconfig) + --qps float32 The maximum QPS to the master from this client (default 1e+06) + --resync-period duration If non-zero, will re-list this often. Otherwise, re-list will be delayed as long as possible (until the upstream source closes the watch or times out. (default 10m0s) +``` + +### Options inherited from parent commands + +``` + --bypass-validating-webhook-xray if true, bypasses validating webhook xray checks + --enable-analytics Send analytical events to Google Analytics (default true) + --use-kubeapiserver-fqdn-for-aks if true, uses kube-apiserver FQDN for AKS cluster to workaround https://github.com/Azure/AKS/issues/522 (default true) +``` + +### SEE ALSO + +* [voyager](/docs/v2024.3.18/reference/operator/voyager) - Voyager by AppsCode - Secure L7/L4 Ingress Controller for Kubernetes + diff --git a/content/docs/v2024.3.18/reference/operator/voyager_init.md b/content/docs/v2024.3.18/reference/operator/voyager_init.md new file mode 100644 index 000000000..580959a1e --- /dev/null +++ b/content/docs/v2024.3.18/reference/operator/voyager_init.md @@ -0,0 +1,52 @@ +--- +title: Voyager Init +menu: + docs_v2024.3.18: + identifier: voyager-init + name: Voyager Init + parent: reference-operator +product_name: voyager +menu_name: docs_v2024.3.18 +section_menu_id: reference +info: + cli: v0.0.15 + installer: v2024.3.18 + version: v2024.3.18 +--- + +## voyager init + +Initialize HAProxy config + +``` +voyager init [command] [flags] +``` + +### Options + +``` + --burst int The maximum burst for throttle (default 1000000) + --cert-dir string Path where tls certificates are stored for HAProxy (default "/etc/ssl/private/haproxy") + -c, --cloud-provider string Name of cloud provider + --config-dir string Path where HAProxy config is stored (default "/shared/etc/haproxy") + -h, --help help for init + --ingress-api-version string API version of ingress resource + --ingress-name string Name of ingress resource + --kubeconfig string Path to kubeconfig file with authorization information (the master location is set by the master flag). + --master string The address of the Kubernetes API server (overrides any value in kubeconfig) + --qps float32 The maximum QPS to the master from this client (default 1e+06) + --resync-period duration If non-zero, will re-list this often. Otherwise, re-list will be delayed as long as possible (until the upstream source closes the watch or times out. (default 10m0s) +``` + +### Options inherited from parent commands + +``` + --bypass-validating-webhook-xray if true, bypasses validating webhook xray checks + --enable-analytics Send analytical events to Google Analytics (default true) + --use-kubeapiserver-fqdn-for-aks if true, uses kube-apiserver FQDN for AKS cluster to workaround https://github.com/Azure/AKS/issues/522 (default true) +``` + +### SEE ALSO + +* [voyager](/docs/v2024.3.18/reference/operator/voyager) - Voyager by AppsCode - Secure L7/L4 Ingress Controller for Kubernetes + diff --git a/content/docs/v2024.3.18/reference/operator/voyager_operator.md b/content/docs/v2024.3.18/reference/operator/voyager_operator.md new file mode 100644 index 000000000..da1be7eb8 --- /dev/null +++ b/content/docs/v2024.3.18/reference/operator/voyager_operator.md @@ -0,0 +1,59 @@ +--- +title: Voyager Operator +menu: + docs_v2024.3.18: + identifier: voyager-operator + name: Voyager Operator + parent: reference-operator +product_name: voyager +menu_name: docs_v2024.3.18 +section_menu_id: reference +info: + cli: v0.0.15 + installer: v2024.3.18 + version: v2024.3.18 +--- + +## voyager operator + +Launch Voyager Ingress Operator + +### Synopsis + +Launch Voyager Ingress Operator + +``` +voyager operator [flags] +``` + +### Options + +``` + --burst int The maximum burst for throttle (default 1000000) + --cloud-config string The path to the cloud provider configuration file. Empty string for no configuration file. + --cloud-provider string Name of cloud provider + --coordinator-image string HAProxy sidecar Docker image + --custom-templates string Glob pattern of custom HAProxy template files used to override built-in templates + --haproxy-image string HAProxy Docker image (default "appscode/haproxy:2.4.4-alpine") + -h, --help help for operator + --ingress-class string Ingress class handled by voyager. Unset by default. Set to voyager to only handle ingress with annotation kubernetes.io/ingress.class=voyager. + --kubeconfig string Path to kubeconfig file with authorization information (the master location is set by the master flag). + --license-file string Path to license file + --master string The address of the Kubernetes API server (overrides any value in kubeconfig) + --qps float The maximum QPS to the master from this client (default 1e+06) + --resync-period duration If non-zero, will re-list this often. Otherwise, re-list will be delayed aslong as possible (until the upstream source closes the watch or times out. (default 10m0s) + --validate-haproxy-config If true, validates generated haproxy.cfg before sending to HAProxy pods. (default true) +``` + +### Options inherited from parent commands + +``` + --bypass-validating-webhook-xray if true, bypasses validating webhook xray checks + --enable-analytics Send analytical events to Google Analytics (default true) + --use-kubeapiserver-fqdn-for-aks if true, uses kube-apiserver FQDN for AKS cluster to workaround https://github.com/Azure/AKS/issues/522 (default true) +``` + +### SEE ALSO + +* [voyager](/docs/v2024.3.18/reference/operator/voyager) - Voyager by AppsCode - Secure L7/L4 Ingress Controller for Kubernetes + diff --git a/content/docs/v2024.3.18/reference/operator/voyager_run.md b/content/docs/v2024.3.18/reference/operator/voyager_run.md new file mode 100644 index 000000000..81948f5f7 --- /dev/null +++ b/content/docs/v2024.3.18/reference/operator/voyager_run.md @@ -0,0 +1,112 @@ +--- +title: Voyager Run +menu: + docs_v2024.3.18: + identifier: voyager-run + name: Voyager Run + parent: reference-operator +product_name: voyager +menu_name: docs_v2024.3.18 +section_menu_id: reference +info: + cli: v0.0.15 + installer: v2024.3.18 + version: v2024.3.18 +--- + +## voyager run + +Launch Voyager Ingress Webhook Server + +### Synopsis + +Launch Voyager Ingress Webhook Server + +``` +voyager run [flags] +``` + +### Options + +``` + --audit-log-batch-buffer-size int The size of the buffer to store events before batching and writing. Only used in batch mode. (default 10000) + --audit-log-batch-max-size int The maximum size of a batch. Only used in batch mode. (default 1) + --audit-log-batch-max-wait duration The amount of time to wait before force writing the batch that hadn't reached the max size. Only used in batch mode. + --audit-log-batch-throttle-burst int Maximum number of requests sent at the same moment if ThrottleQPS was not utilized before. Only used in batch mode. + --audit-log-batch-throttle-enable Whether batching throttling is enabled. Only used in batch mode. + --audit-log-batch-throttle-qps float32 Maximum average number of batches per second. Only used in batch mode. + --audit-log-compress If set, the rotated log files will be compressed using gzip. + --audit-log-format string Format of saved audits. "legacy" indicates 1-line text format for each event. "json" indicates structured json format. Known formats are legacy,json. (default "json") + --audit-log-maxage int The maximum number of days to retain old audit log files based on the timestamp encoded in their filename. + --audit-log-maxbackup int The maximum number of old audit log files to retain. + --audit-log-maxsize int The maximum size in megabytes of the audit log file before it gets rotated. + --audit-log-mode string Strategy for sending audit events. Blocking indicates sending events should block server responses. Batch causes the backend to buffer and write events asynchronously. Known modes are batch,blocking,blocking-strict. (default "blocking") + --audit-log-path string If set, all requests coming to the apiserver will be logged to this file. '-' means standard out. + --audit-log-truncate-enabled Whether event and batch truncating is enabled. + --audit-log-truncate-max-batch-size int Maximum size of the batch sent to the underlying backend. Actual serialized size can be several hundreds of bytes greater. If a batch exceeds this limit, it is split into several batches of smaller size. (default 10485760) + --audit-log-truncate-max-event-size int Maximum size of the audit event sent to the underlying backend. If the size of an event is greater than this number, first request and response are removed, and if this doesn't reduce the size enough, event is discarded. (default 102400) + --audit-log-version string API group and version used for serializing audit events written to log. (default "audit.k8s.io/v1") + --audit-policy-file string Path to the file that defines the audit policy configuration. + --audit-webhook-batch-buffer-size int The size of the buffer to store events before batching and writing. Only used in batch mode. (default 10000) + --audit-webhook-batch-max-size int The maximum size of a batch. Only used in batch mode. (default 400) + --audit-webhook-batch-max-wait duration The amount of time to wait before force writing the batch that hadn't reached the max size. Only used in batch mode. (default 30s) + --audit-webhook-batch-throttle-burst int Maximum number of requests sent at the same moment if ThrottleQPS was not utilized before. Only used in batch mode. (default 15) + --audit-webhook-batch-throttle-enable Whether batching throttling is enabled. Only used in batch mode. (default true) + --audit-webhook-batch-throttle-qps float32 Maximum average number of batches per second. Only used in batch mode. (default 10) + --audit-webhook-config-file string Path to a kubeconfig formatted file that defines the audit webhook configuration. + --audit-webhook-initial-backoff duration The amount of time to wait before retrying the first failed request. (default 10s) + --audit-webhook-mode string Strategy for sending audit events. Blocking indicates sending events should block server responses. Batch causes the backend to buffer and write events asynchronously. Known modes are batch,blocking,blocking-strict. (default "batch") + --audit-webhook-truncate-enabled Whether event and batch truncating is enabled. + --audit-webhook-truncate-max-batch-size int Maximum size of the batch sent to the underlying backend. Actual serialized size can be several hundreds of bytes greater. If a batch exceeds this limit, it is split into several batches of smaller size. (default 10485760) + --audit-webhook-truncate-max-event-size int Maximum size of the audit event sent to the underlying backend. If the size of an event is greater than this number, first request and response are removed, and if this doesn't reduce the size enough, event is discarded. (default 102400) + --audit-webhook-version string API group and version used for serializing audit events written to webhook. (default "audit.k8s.io/v1") + --authentication-kubeconfig string kubeconfig file pointing at the 'core' kubernetes server with enough rights to create tokenreviews.authentication.k8s.io. + --authentication-skip-lookup If false, the authentication-kubeconfig will be used to lookup missing authentication configuration from the cluster. + --authentication-token-webhook-cache-ttl duration The duration to cache responses from the webhook token authenticator. (default 10s) + --authentication-tolerate-lookup-failure If true, failures to look up missing authentication configuration from the cluster are not considered fatal. Note that this can result in authentication that treats all requests as anonymous. + --authorization-always-allow-paths strings A list of HTTP paths to skip during authorization, i.e. these are authorized without contacting the 'core' kubernetes server. (default [/healthz,/readyz,/livez]) + --authorization-kubeconfig string kubeconfig file pointing at the 'core' kubernetes server with enough rights to create subjectaccessreviews.authorization.k8s.io. + --authorization-webhook-cache-authorized-ttl duration The duration to cache 'authorized' responses from the webhook authorizer. (default 10s) + --authorization-webhook-cache-unauthorized-ttl duration The duration to cache 'unauthorized' responses from the webhook authorizer. (default 10s) + --bind-address ip The IP address on which to listen for the --secure-port port. The associated interface(s) must be reachable by the rest of the cluster, and by CLI/web clients. If blank or an unspecified address (0.0.0.0 or ::), all interfaces will be used. (default 0.0.0.0) + --burst int The maximum burst for throttle (default 1000000) + --cert-dir string The directory where the TLS certs are located. If --tls-cert-file and --tls-private-key-file are provided, this flag will be ignored. (default "apiserver.local.config/certificates") + --client-ca-file string If set, any request presenting a client certificate signed by one of the authorities in the client-ca-file is authenticated with an identity corresponding to the CommonName of the client certificate. + --cloud-provider string Name of cloud provider + --contention-profiling Enable lock contention profiling, if profiling is enabled + --egress-selector-config-file string File with apiserver egress selector configuration. + -h, --help help for run + --http2-max-streams-per-connection int The limit that the server gives to clients for the maximum number of streams in an HTTP/2 connection. Zero means to use golang's default. (default 1000) + --kubeconfig string kubeconfig file pointing at the 'core' kubernetes server. + --license-file string Path to license file + --permit-address-sharing If true, SO_REUSEADDR will be used when binding the port. This allows binding to wildcard IPs like 0.0.0.0 and specific IPs in parallel, and it avoids waiting for the kernel to release sockets in TIME_WAIT state. [default=false] + --permit-port-sharing If true, SO_REUSEPORT will be used when binding the port, which allows more than one instance to bind on the same address and port. [default=false] + --profiling Enable profiling via web interface host:port/debug/pprof/ (default true) + --qps float The maximum QPS to the master from this client (default 1e+06) + --requestheader-allowed-names strings List of client certificate common names to allow to provide usernames in headers specified by --requestheader-username-headers. If empty, any client certificate validated by the authorities in --requestheader-client-ca-file is allowed. + --requestheader-client-ca-file string Root certificate bundle to use to verify client certificates on incoming requests before trusting usernames in headers specified by --requestheader-username-headers. WARNING: generally do not depend on authorization being already done for incoming requests. + --requestheader-extra-headers-prefix strings List of request header prefixes to inspect. X-Remote-Extra- is suggested. (default [x-remote-extra-]) + --requestheader-group-headers strings List of request headers to inspect for groups. X-Remote-Group is suggested. (default [x-remote-group]) + --requestheader-username-headers strings List of request headers to inspect for usernames. X-Remote-User is common. (default [x-remote-user]) + --secure-port int The port on which to serve HTTPS with authentication and authorization. If 0, don't serve HTTPS at all. (default 443) + --tls-cert-file string File containing the default x509 Certificate for HTTPS. (CA cert, if any, concatenated after server cert). If HTTPS serving is enabled, and --tls-cert-file and --tls-private-key-file are not provided, a self-signed certificate and key are generated for the public address and saved to the directory specified by --cert-dir. + --tls-cipher-suites strings Comma-separated list of cipher suites for the server. If omitted, the default Go cipher suites will be used. + Preferred values: TLS_AES_128_GCM_SHA256, TLS_AES_256_GCM_SHA384, TLS_CHACHA20_POLY1305_SHA256, TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA, TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256, TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA, TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384, TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305, TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256, TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA, TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA, TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256, TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA, TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384, TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305, TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256, TLS_RSA_WITH_3DES_EDE_CBC_SHA, TLS_RSA_WITH_AES_128_CBC_SHA, TLS_RSA_WITH_AES_128_GCM_SHA256, TLS_RSA_WITH_AES_256_CBC_SHA, TLS_RSA_WITH_AES_256_GCM_SHA384. + Insecure values: TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256, TLS_ECDHE_ECDSA_WITH_RC4_128_SHA, TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256, TLS_ECDHE_RSA_WITH_RC4_128_SHA, TLS_RSA_WITH_AES_128_CBC_SHA256, TLS_RSA_WITH_RC4_128_SHA. + --tls-min-version string Minimum TLS version supported. Possible values: VersionTLS10, VersionTLS11, VersionTLS12, VersionTLS13 + --tls-private-key-file string File containing the default x509 private key matching --tls-cert-file. + --tls-sni-cert-key namedCertKey A pair of x509 certificate and private key file paths, optionally suffixed with a list of domain patterns which are fully qualified domain names, possibly with prefixed wildcard segments. The domain patterns also allow IP addresses, but IPs should only be used if the apiserver has visibility to the IP address requested by a client. If no domain patterns are provided, the names of the certificate are extracted. Non-wildcard matches trump over wildcard matches, explicit domain patterns trump over extracted names. For multiple key/certificate pairs, use the --tls-sni-cert-key multiple times. Examples: "example.crt,example.key" or "foo.crt,foo.key:*.foo.com,foo.com". (default []) +``` + +### Options inherited from parent commands + +``` + --bypass-validating-webhook-xray if true, bypasses validating webhook xray checks + --enable-analytics Send analytical events to Google Analytics (default true) + --use-kubeapiserver-fqdn-for-aks if true, uses kube-apiserver FQDN for AKS cluster to workaround https://github.com/Azure/AKS/issues/522 (default true) +``` + +### SEE ALSO + +* [voyager](/docs/v2024.3.18/reference/operator/voyager) - Voyager by AppsCode - Secure L7/L4 Ingress Controller for Kubernetes + diff --git a/content/docs/v2024.3.18/reference/operator/voyager_version.md b/content/docs/v2024.3.18/reference/operator/voyager_version.md new file mode 100644 index 000000000..47b04830a --- /dev/null +++ b/content/docs/v2024.3.18/reference/operator/voyager_version.md @@ -0,0 +1,44 @@ +--- +title: Voyager Version +menu: + docs_v2024.3.18: + identifier: voyager-version + name: Voyager Version + parent: reference-operator +product_name: voyager +menu_name: docs_v2024.3.18 +section_menu_id: reference +info: + cli: v0.0.15 + installer: v2024.3.18 + version: v2024.3.18 +--- + +## voyager version + +Prints binary version number. + +``` +voyager version [flags] +``` + +### Options + +``` + --check string Check version constraint + -h, --help help for version + --short Print just the version number. +``` + +### Options inherited from parent commands + +``` + --bypass-validating-webhook-xray if true, bypasses validating webhook xray checks + --enable-analytics Send analytical events to Google Analytics (default true) + --use-kubeapiserver-fqdn-for-aks if true, uses kube-apiserver FQDN for AKS cluster to workaround https://github.com/Azure/AKS/issues/522 (default true) +``` + +### SEE ALSO + +* [voyager](/docs/v2024.3.18/reference/operator/voyager) - Voyager by AppsCode - Secure L7/L4 Ingress Controller for Kubernetes + diff --git a/content/docs/v2024.3.18/setup/README.md b/content/docs/v2024.3.18/setup/README.md new file mode 100644 index 000000000..7f7c52f1c --- /dev/null +++ b/content/docs/v2024.3.18/setup/README.md @@ -0,0 +1,38 @@ +--- +title: Table of Contents | Setup +description: Table of Contents | Setup +menu: + docs_v2024.3.18: + identifier: setup-readme + name: Readme + parent: setup + weight: -1 +product_name: voyager +menu_name: docs_v2024.3.18 +section_menu_id: setup +url: /docs/v2024.3.18/setup/ +aliases: +- /docs/v2024.3.18/setup/README/ +info: + cli: v0.0.15 + installer: v2024.3.18 + version: v2024.3.18 +--- + +# Setup + + +
+ +The setup section contains instructions for installing the Voyager and its various components in Kubernetes. This section has been divided into the following sub-sections: + +- **Install Voyager:** Installation instructions for Voyager and its various components. + - [Voyager](/docs/v2024.3.18/setup/install/voyager): Installation instructions for Voyager. + - [Troubleshooting](/docs/v2024.3.18/setup/install/troubleshooting): Troubleshooting guide for various installation problems. + +- **Uninstall Voyager:** Uninstallation instructions for Voyager and its various components. + - [Voyager](/docs/v2024.3.18/setup/uninstall/voyager): Uninstallation instructions for Voyager. + +- [Upgrading Voyager](/docs/v2024.3.18/setup/upgrade/): Instruction for updating Voyager license and upgrading between various Voyager versions. diff --git a/content/docs/v2024.3.18/setup/_index.md b/content/docs/v2024.3.18/setup/_index.md new file mode 100644 index 000000000..f306993b0 --- /dev/null +++ b/content/docs/v2024.3.18/setup/_index.md @@ -0,0 +1,14 @@ +--- +title: Setup | Voyager +menu: + docs_v2024.3.18: + identifier: setup + name: Setup + weight: 30 +menu_name: docs_v2024.3.18 +info: + cli: v0.0.15 + installer: v2024.3.18 + version: v2024.3.18 +--- + diff --git a/content/docs/v2024.3.18/setup/install/_index.md b/content/docs/v2024.3.18/setup/install/_index.md new file mode 100644 index 000000000..947f15031 --- /dev/null +++ b/content/docs/v2024.3.18/setup/install/_index.md @@ -0,0 +1,16 @@ +--- +title: Installation Guide | Voyager +description: Voyager Installation Guide +menu: + docs_v2024.3.18: + identifier: installation-guide + name: Install + parent: setup + weight: 10 +menu_name: docs_v2024.3.18 +info: + cli: v0.0.15 + installer: v2024.3.18 + version: v2024.3.18 +--- + diff --git a/content/docs/v2024.3.18/setup/install/troubleshooting.md b/content/docs/v2024.3.18/setup/install/troubleshooting.md new file mode 100644 index 000000000..10313cc66 --- /dev/null +++ b/content/docs/v2024.3.18/setup/install/troubleshooting.md @@ -0,0 +1,72 @@ +--- +title: Troubleshooting Voyager Installation +description: Troubleshooting guide for Voyager installation +menu: + docs_v2024.3.18: + identifier: install-voyager-troubleshoot + name: Troubleshooting + parent: installation-guide + weight: 40 +product_name: voyager +menu_name: docs_v2024.3.18 +section_menu_id: setup +info: + cli: v0.0.15 + installer: v2024.3.18 + version: v2024.3.18 +--- + +## Installing in GKE Cluster + +If you are installing Voyager on a GKE cluster, you will need cluster admin permissions to install Voyager operator. Run the following command to grant admin permission to the cluster. + +```bash +$ kubectl create clusterrolebinding "cluster-admin-$(whoami)" \ + --clusterrole=cluster-admin \ + --user="$(gcloud config get-value core/account)" +``` + +In addition, if your GKE cluster is a [private cluster](https://cloud.google.com/kubernetes-engine/docs/how-to/private-clusters), you will need to either add an additional firewall rule that allows master nodes access port `8443/tcp` on worker nodes, or change the existing rule that allows access to ports `443/tcp` and `10250/tcp` to also allow access to port `8443/tcp`. The procedure to add or modify firewall rules is described in the official GKE documentation for private clusters mentioned before. See the links below for details: + +- https://github.com/kubernetes/kubernetes/issues/79739 +- https://cloud.google.com/kubernetes-engine/docs/how-to/private-clusters#add_firewall_rules + +### Installing in kind + +Voyager can be used in kind using `--provider=kind`. In kind, a `LoadBalancer` type ingress will only assigned a NodePort. + +### Installing in Baremetal Cluster + +Voyager works great in baremetal cluster. To install, set `--provider=baremetal`. In baremetal cluster, `LoadBalancer` type ingress in not supported. You can use [NodePort](/docs/v2024.3.18/concepts/ingress-types/nodeport), [HostPort](/docs/v2024.3.18/concepts/ingress-types/hostport) or [Internal](/docs/v2024.3.18/concepts/ingress-types/internal) ingress objects. + +### Installing in Baremetal Cluster with MetalLB + +Follow the instructions for installing on baremetal cluster but specify `metallb` as provider. Then install MetalLB following the instructions [here](https://metallb.universe.tf/installation/). Now, you can use `LoadBalancer` type ingress in baremetal clusters. + +### Installing in DigitalOcean Cluster + +To use `LoadBalancer` type ingress in [DigitalOcean](https://www.digitalocean.com/) cluster, install Kubernetes [cloud controller manager for DigitalOcean](https://github.com/digitalocean/digitalocean-cloud-controller-manager). Otherwise set cloud provider to `baremetal`. + +### Installing in Linode Cluster + +To use `LoadBalancer` type ingress in [Linode](https://www.linode.com/) cluster, install Kubernetes [cloud controller manager for Linode](https://github.com/pharmer/cloud-controller-manager). Otherwise set cloud provider to `baremetal`. + +## Detect Voyager version + +To detect Voyager version, exec into the operator pod and run `voyager version` command. + +```bash +$ POD_NAMESPACE=voyager +$ POD_NAME=$(kubectl get pods -n $POD_NAMESPACE -l app.kubernetes.io/name=voyager -o jsonpath={.items[0].metadata.name}) +$ kubectl exec $POD_NAME -c operator -n $POD_NAMESPACE -- /voyager version + +Version = v13.0.0 +VersionStrategy = tag +GitTag = v13.0.0 +GitBranch = HEAD +CommitHash = 2c9d9b810413c620c45ea028b84262704ebcea54 +CommitTimestamp = 2021-09-16T01:59:11 +GoVersion = go1.17.1 +Compiler = gcc +Platform = linux/amd64 +``` diff --git a/content/docs/v2024.3.18/setup/install/voyager.md b/content/docs/v2024.3.18/setup/install/voyager.md new file mode 100644 index 000000000..aa4c2e345 --- /dev/null +++ b/content/docs/v2024.3.18/setup/install/voyager.md @@ -0,0 +1,157 @@ +--- +title: Install Voyager +description: Installation guide for Voyager +menu: + docs_v2024.3.18: + identifier: install-voyager-enterprise + name: Voyager + parent: installation-guide + weight: 20 +product_name: voyager +menu_name: docs_v2024.3.18 +section_menu_id: setup +info: + cli: v0.0.15 + installer: v2024.3.18 + version: v2024.3.18 +--- + +# Install Voyager + +## Get a Free License + +Download a FREE license from [AppsCode License Server](https://appscode.com/issue-license?p=voyager). + +> Voyager licensing process has been designed to work with CI/CD workflow. You can automatically obtain a license from your CI/CD pipeline by following the guide from [here](https://github.com/appscode/offline-license-server#offline-license-server). + +## Install + + +
+
+ +## Using Helm 3 + +Voyager can be installed via [Helm](https://helm.sh/) using the [chart](https://github.com/voyagermesh/installer/tree/{{< param "info.version" >}}/charts/voyager) from [AppsCode Charts Repository](https://github.com/appscode/charts). To install, follow the steps below: + +```bash +# provider=acs +# provider=aks +# provider=aws +# provider=azure +# provider=baremetal +# provider=gce +# provider=gke +# provider=kind +# provider=openstack +# provider=metallb +# provider=digitalocean +# provider=linode + +$ helm install voyager oci://ghcr.io/appscode-charts/voyager \ + --version {{< param "info.version" >}} \ + --namespace voyager --create-namespace \ + --set cloudProvider=$provider \ + --set-file license=/path/to/the/license.txt \ + --wait --burst-limit=10000 --debug +``` + +To see the detailed configuration options, visit [here](https://github.com/voyagermesh/installer/tree/{{< param "info.version" >}}/charts/voyager). + +
+
+ +## Using YAML + +If you prefer to not use Helm, you can generate YAMLs from Voyager chart and deploy using `kubectl`. Here we are going to show the procedure using Helm 3. + +```bash +# provider=acs +# provider=aks +# provider=aws +# provider=azure +# provider=baremetal +# provider=gce +# provider=gke +# provider=kind +# provider=openstack +# provider=metallb +# provider=digitalocean +# provider=linode + +$ kubectl create ns voyager +$ helm template voyager oci://ghcr.io/appscode-charts/voyager \ + --version {{< param "info.version" >}} \ + --namespace voyager --create-namespace \ + --set cloudProvider=$provider \ + --set-file license=/path/to/the/license.txt \ + --set cleaner.skip=true | kubectl apply -f - +``` + +To see the detailed configuration options, visit [here](https://github.com/voyagermesh/installer/tree/{{< param "info.version" >}}/charts/voyager). + +
+
+ +## Verify installation + +To check if Voyager operator pods have started, run the following command: + +```bash +$ kubectl get pods --all-namespaces -l app.kubernetes.io/name=voyager --watch + +NAMESPACE NAME READY STATUS RESTARTS AGE +voyager voyager-operator-84d575d55-5lphm 1/1 Running 0 6m42s +``` + +Once the operator pods are running, you can cancel the above command by typing `Ctrl+C`. + +Now, to confirm CRD groups have been registered by the operator, run the following command: + +```bash +$ kubectl get crd -l app.kubernetes.io/name=voyager +``` + +Now, you are ready to create your first ingress using Voyager. + +## Configuring RBAC + +Voyager creates an `Ingress` CRD. Voyager installer will create 2 user facing cluster roles: + +| ClusterRole | Aggregates To | Description | +|-----------------------|---------------|---------------------------------------| +| appscode:voyager:edit | admin, edit | Allows edit access to Voyager CRDs, intended to be granted within a namespace using a RoleBinding. | +| appscode:voyager:view | view | Allows read-only access to Voyager CRDs, intended to be granted within a namespace using a RoleBinding. | + +These user facing roles supports [ClusterRole Aggregation](https://kubernetes.io/docs/admin/authorization/rbac/#aggregated-clusterroles) feature in Kubernetes 1.9 or later clusters. + +## Using kubectl + +Since Voyager uses its own TPR/CRD, you need to use full resource kind to find it with kubectl. + +```bash +# List all voyager ingress +$ kubectl get ingress.voyager.appscode.com --all-namespaces + +# List voyager ingress for a namespace +$ kubectl get ingress.voyager.appscode.com -n + +# Get Ingress YAML +$ kubectl get ingress.voyager.appscode.com -n -o yaml + +# Describe Ingress. Very useful to debug problems. +$ kubectl describe ingress.voyager.appscode.com -n +``` + +## Purchase Voyager License + +If you are interested in purchasing Voyager license, please contact us via sales@appscode.com for further discussion. You can also set up a meeting via our [calendly link](https://calendly.com/appscode/30min). + +If you are willing to purchase Voyager license but need more time to test in your dev cluster, feel free to contact sales@appscode.com. We will be happy to extend your trial period. diff --git a/content/docs/v2024.3.18/setup/uninstall/_index.md b/content/docs/v2024.3.18/setup/uninstall/_index.md new file mode 100644 index 000000000..a9159e503 --- /dev/null +++ b/content/docs/v2024.3.18/setup/uninstall/_index.md @@ -0,0 +1,16 @@ +--- +title: Uninstallation Guide | Voyager +description: Voyager Uninstallation Guide +menu: + docs_v2024.3.18: + identifier: uninstallation-guide + name: Uninstall + parent: setup + weight: 30 +menu_name: docs_v2024.3.18 +info: + cli: v0.0.15 + installer: v2024.3.18 + version: v2024.3.18 +--- + diff --git a/content/docs/v2024.3.18/setup/uninstall/voyager.md b/content/docs/v2024.3.18/setup/uninstall/voyager.md new file mode 100644 index 000000000..1071cfadd --- /dev/null +++ b/content/docs/v2024.3.18/setup/uninstall/voyager.md @@ -0,0 +1,55 @@ +--- +title: Uninstall Voyager +description: Uninstallation guide for Voyager +menu: + docs_v2024.3.18: + identifier: uninstall-voyager-enterprise + name: Voyager + parent: uninstallation-guide + weight: 20 +product_name: voyager +menu_name: docs_v2024.3.18 +section_menu_id: setup +info: + cli: v0.0.15 + installer: v2024.3.18 + version: v2024.3.18 +--- + +# Uninstall Voyager + +To uninstall Voyager, run the following command: + + +
+
+ +## Using Helm 3 + +In Helm 3, release names are [scoped to a namespace](https://v3.helm.sh/docs/faq/#release-names-are-now-scoped-to-the-namespace). So, provide the namespace you used to install the operator when installing. + +```bash +$ helm uninstall voyager --namespace voyager +``` + +
+
+ +## Using YAML (with helm 3) + +If you prefer to not use Helm, you can generate YAMLs from Voyager chart and uninstall using `kubectl`. + +```bash +$ helm template voyager oci://ghcr.io/appscode-charts/voyager \ + --namespace voyager | kubectl delete -f - +``` + +
+
diff --git a/content/docs/v2024.3.18/setup/upgrade/index.md b/content/docs/v2024.3.18/setup/upgrade/index.md new file mode 100644 index 000000000..81ec4f87c --- /dev/null +++ b/content/docs/v2024.3.18/setup/upgrade/index.md @@ -0,0 +1,101 @@ +--- +title: Upgrade | Voyager +description: Voyager Upgrade +menu: + docs_v2024.3.18: + identifier: upgrade-voyager + name: Upgrade + parent: setup + weight: 20 +product_name: voyager +menu_name: docs_v2024.3.18 +section_menu_id: setup +info: + cli: v0.0.15 + installer: v2024.3.18 + version: v2024.3.18 +--- + +# Upgrading Voyager + +This guide will show you how to upgrade various Voyager components. Here, we are going to show how to upgrade from an old Voyager version to the new version, and how to update the license, etc. + +## Upgrading Voyager from `v2021.x.x` to `{{< param "info.version" >}}` + +In order to upgrade from Voyager `v2021.x.x` to `{{< param "info.version" >}}`, please follow the following steps. + +{{< notice type="warning" message="Please note that since v2021.09.16, we recommend installing Voyager operator in the `voyager` namespace. The upgrade instructions on this page assumes so. If you have currently installed the operator in a different namespace like `kube-system`, either follow the instructions with appropriate updates, or first uninstall the existing operator and then reinstall in the `voyager` namespace." >}} + +#### 1. Update Voyager Catalog CRDs + +Helm [does not upgrade the CRDs](https://github.com/helm/helm/issues/6581) bundled in a Helm chart if the CRDs already exist. So, to upgrade the Voyager catalog CRD, please run the command below: + +```bash +kubectl apply -f https://github.com/voyagermesh/installer/raw/{{< param "info.version" >}}/crds/voyager-crds.yaml +``` + +#### 2. Upgrade Voyager Operator + +Now, upgrade the Voyager helm chart using the following command. You can find the latest installation guide [here](/docs/v2024.3.18/setup/README). + +```bash +helm upgrade voyager oci://ghcr.io/appscode-charts/voyager \ + --version {{< param "info.version" >}} \ + --namespace voyager --create-namespace \ + --set cloudProvider=$provider \ + --set-file license=/path/to/the/license.txt +``` + +## Updating License + +Voyager support updating license without requiring any re-installation. Voyager creates a Secret named `-license` with the license file. You just need to update the Secret. The changes will propagate automatically to the operator and it will use the updated license going forward. + +Follow the below instructions to update the license: + +- Get a new license and save it into a file. +- Then, run the following upgrade command based on your installation. + + +
+
+ +#### Using Helm 3 + +```bash +# detect current version +helm ls -A | grep voyager + +# update license key keeping the current version +helm upgrade voyager oci://ghcr.io/appscode-charts/voyager \ + --version= \ + --namespace voyager --create-namespace \ + --reuse-values \ + --set-file license=/path/to/new/license.txt +``` + +
+
+ +#### Using YAML (with helm 3) + +```bash +# detect current version +helm ls -A | grep voyager + +# update license key keeping the current version +helm template voyager oci://ghcr.io/appscode-charts/voyager \ + --version= \ + --namespace voyager --create-namespace \ + --set cleaner.skip=true \ + --set-file license=/path/to/new/license.txt | kubectl apply -f - +``` + +
+
diff --git a/content/docs/v2024.3.18/support.md b/content/docs/v2024.3.18/support.md new file mode 100644 index 000000000..403314720 --- /dev/null +++ b/content/docs/v2024.3.18/support.md @@ -0,0 +1,28 @@ +--- +title: Support | Voyager +description: Support +menu: + docs_v2024.3.18: + identifier: support-voyager + name: Support + parent: welcome + weight: 25 +product_name: voyager +menu_name: docs_v2024.3.18 +section_menu_id: welcome +url: /docs/v2024.3.18/welcome/support/ +aliases: +- /docs/v2024.3.18/support/ +info: + cli: v0.0.15 + installer: v2024.3.18 + version: v2024.3.18 +--- + +> New to Voyager? Please start [here](/docs/v2024.3.18/concepts/overview). + +# Support + +We use Slack for public discussions. To chit chat with us or the rest of the community, join us in the [AppsCode Slack team](https://appscode.slack.com/messages/C0XQFLGRM/details/) channel `#general`. To sign up, use our [Slack inviter](https://slack.appscode.com/). + +If you have found a bug with Voyager or want to request for new features, please [file an issue](https://github.com/voyagermesh/voyager/issues/new). diff --git a/data/authors/md-ishtiaq-islam.json b/data/authors/md-ishtiaq-islam.json new file mode 100644 index 000000000..0f05c49f0 --- /dev/null +++ b/data/authors/md-ishtiaq-islam.json @@ -0,0 +1,9 @@ +{ + "name": "Md Ishtiaq Islam", + "designation": "Software Engineer", + "biography": "Ishtiaq is a Software Engineer, working at AppsCode Inc. He has been involved with Kubernetes project since 2022 and very enthusiastic about Kubernetes and open source in general.", + "profile": "/assets/images/authors/profile-photos-84x84/md-ishtiaq-islam.jpg", + "email": "ishtiaq@appscode.com", + "github": "https://github.com/ishtiaqhimel", + "linkedin": "https://www.linkedin.com/in/md-ishtiaq-islam/" +} diff --git a/data/authors/obaydullah.json b/data/authors/obaydullah.json new file mode 100644 index 000000000..e4bcbfafe --- /dev/null +++ b/data/authors/obaydullah.json @@ -0,0 +1,9 @@ +{ + "name": "Obaydullah", + "designation": "Software Engineer", + "biography": "Obaydullah is a Software Engineer, working at AppsCode Inc.", + "profile": "/assets/images/authors/profile-photos-84x84/obaydullah.jpg", + "email": "obaydullah@appscode.com", + "github": "https://github.com/obaydullahmhs", + "linkedin": "https://www.linkedin.com/in/obaydullahmhs/" +} diff --git a/data/authors/saurov-chandra-biswas.json b/data/authors/saurov-chandra-biswas.json new file mode 100644 index 000000000..5d4d58d1d --- /dev/null +++ b/data/authors/saurov-chandra-biswas.json @@ -0,0 +1,9 @@ +{ + "name": "Saurov Chandra Biswas", + "designation": "Software Engineer", + "biography": "Saurov Chandra Biswas is a Software Engineer, working at AppsCode Inc.", + "profile": "/assets/images/authors/profile-photos-84x84/saurov-chandra-biswas.jpg", + "email": "saurov@appscode.com", + "github": "https://github.com/souravbiswassanto", + "linkedin": "https://www.linkedin.com/in/sourav-biswas-santo/" +} diff --git a/data/authors/tamal-saha.json b/data/authors/tamal-saha.json index 752912e24..587f3b953 100644 --- a/data/authors/tamal-saha.json +++ b/data/authors/tamal-saha.json @@ -4,6 +4,6 @@ "biography": "Tamal Saha is the founder of AppsCode. He has been involved with Kubernetes project since 2015. He has founded a number of popular open source projects like Voyager, KubeDB, Stash, Guard, KubeVault, etc.", "profile": "/assets/images/authors/tamal-saha.jpg", "email": "tamal@appscode.com", - "twitter": "https://twitter.com/tsaha", + "twitter": "https://x.com/tsaha", "linkedin": "https://www.linkedin.com/in/tamalsaha/" } \ No newline at end of file diff --git a/data/customers.json b/data/customers.json index 5ea4642fd..ef91834fc 100644 --- a/data/customers.json +++ b/data/customers.json @@ -1,4 +1,100 @@ { + "carro": { + "name": "Carro", + "website": "#", + "logo": "/assets/images/customers/2024/carro.png", + "show": true + }, + "nokia": { + "name": "nokia", + "website": "#", + "logo": "/assets/images/customers/2024/nokia.png", + "show": true + }, + "clewmed": { + "name": "Clewmed", + "website": "#", + "logo": "/assets/images/customers/2024/clewmed.png", + "show": true + }, + "dataloop": { + "name": "Dataloop", + "website": "#", + "logo": "/assets/images/customers/2024/dataloop.png", + "show": true + }, + "decisio": { + "name": "Decisio", + "website": "#", + "logo": "/assets/images/customers/2024/decisio.png", + "show": true + }, + "emerson": { + "name": "Emerson", + "website": "#", + "logo": "/assets/images/customers/2024/emerson.png", + "show": true + }, + "fastspeed": { + "name": "fastspeed", + "website": "#", + "logo": "/assets/images/customers/2024/fastspeed.png", + "show": true + }, + "ge-healthcare": { + "name": "ge-healthcare", + "website": "#", + "logo": "/assets/images/customers/2024/ge-healthcare.png", + "show": true + }, + "100-furtune": { + "name": "100-furtune", + "website": "#", + "logo": "/assets/images/customers/2024/100-furtune.png", + "show": true + }, + "greenhouse": { + "name": "greenhouse", + "website": "#", + "logo": "/assets/images/customers/2024/greenhouse.png", + "show": true + }, + "huma": { + "name": "huma", + "website": "#", + "logo": "/assets/images/customers/2024/huma.png", + "show": true + }, + "irembo": { + "name": "irembo", + "website": "#", + "logo": "/assets/images/customers/2024/irembo.png", + "show": true + }, + "oak-ridge": { + "name": "oak-ridge", + "website": "#", + "logo": "/assets/images/customers/2024/oak-ridge.png", + "show": true + }, + "orange": { + "name": "orange", + "website": "#", + "logo": "/assets/images/customers/2024/orange.png", + "show": true + }, + "vaimo": { + "name": "vaimo", + "website": "#", + "logo": "/assets/images/customers/2024/vaimo.png", + "show": true + }, + "wiliot": { + "name": "wiliot", + "website": "#", + "logo": "/assets/images/customers/2024/wiliot.png", + "show": true + }, "intersystems": { "name": "InterSystems", "website": "https://www.intersystems.com", @@ -53,4 +149,4 @@ "logo": "/assets/images/customers/astarte/astarte.png", "show": true } -} \ No newline at end of file +} diff --git a/data/products/appscode.json b/data/products/appscode.json index 562a9cfc9..d3df77f0c 100644 --- a/data/products/appscode.json +++ b/data/products/appscode.json @@ -46,7 +46,7 @@ "name": "KubeDB", "url": "https://kubedb.com", "logo": "/assets/images/products/kubedb/kubedb.svg", - "description": "KubeDB simplifies Provision, Upgrade, Scaling, Volume Expansion, Monitor, Backup, Restore for various Databases in Kubernetes on any Public & Private Cloud" + "description": "KubeDB simplifies Provisioning, Upgrading, Scaling, Volume Expansion, Monitor, Backup, Restore for various Databases in Kubernetes on any Public & Private Cloud" }, { "name": "Stash", @@ -58,18 +58,18 @@ "name": "kubeVault", "url": "https://kubevault.com", "logo": "/assets/images/products/kubevault/kubevault.png", - "description": "KubeVault provides various ways to configure your Vault deployment. You can pick your preferred Storage Backend, Unsealer Mode, TLS Mode, Secret Engines that you want to allow to attach with this VaultServer, Termination Policy to prevent accidental deletion or clean-up Vault deployment in a systematic way, Monitoring, etc." + "description": "KubeVault makes Vault deployment and operation a breeze with a Kubernetes operator. You can pick your preferred Storage Backend, Unsealer Mode, TLS Mode, Secret Engines that you want to allow to attach with this VaultServer, Termination Policy to prevent accidental deletion or clean-up Vault deployment in a systematic way, Monitoring, etc." }, { "name": "Voyager", "url": "https://voyagermesh.com/", "logo": "/assets/images/products/voyager/voyager.png", - "description": "Voyager is a HAProxy backed secure L7 and L4 ingress controller for Kubernetes. This can be used with any Kubernetes cloud providers including AWS, GCE, GKE, AZURE, ACS etc. This can also be used with baremetal Kubernetes clusters." + "description": "Voyager is a secure L7 and L4 ingress controller for Kubernetes with Gateway API support. This can be used with any Kubernetes cloud providers including AWS, GCE, GKE, AZURE, ACS etc. This can also be used with baremetal Kubernetes clusters." } ], "highlight_products": { "title": "The Global Leader in Kubernetes tools", - "summary": "AppsCode is a leading provider of Kubernetes solutions that allow organizations to maintain their business goals, higher growth, and reduce risks by making it simple, safe and affordable.", + "summary": "AppsCode is a global leader in Enterprise-grade Kubernetes-native Data Platform with Automated Day 2 Operations.", "url": "https://appscode.com/contact/", "products": [ { @@ -81,7 +81,7 @@ { "name": "Config Syncer", "logo": "/assets/images/products/configsyncer/configsyncer-512x512.svg", - "summary": "Config Syncer (fka Kubed) by AppsCode is a Kubernetes Cluster Operator Daemon. From here you can learn all about Config Syncer’s architecture and how to deploy and use Config Syncer.", + "summary": "Config Syncer (fka Kubed) by AppsCode syncs secrets and configmaps across Kubernetes clusters. From here you can learn all about Config Syncer’s architecture and how to deploy and use Config Syncer.", "url": "https://config-syncer.com/" } ] @@ -93,7 +93,7 @@ "use_case": "MANAGE DATABASE", "logo": "/assets/images/products/kubedb/kubedb.svg", "title": "Run Production-Grade Databases on Kubernetes", - "summary": "KubeDB simplifies Provision, Upgrade, Scaling, Volume Expansion, Monitor, Backup, Restore for various Databases in Kubernetes on any Public & Private Cloud", + "summary": "KubeDB simplifies Provisioning, Upgrading, Scaling, Volume Expansion, Monitor, Backup, Restore for various Databases in Kubernetes on any Public & Private Cloud", "url": "https://kubedb.com", "features": [ "Provisioning", @@ -103,7 +103,7 @@ "Monitoring", "Security" ], - "illustration": "/assets/images/products/kubedb/kubedb-illustration.png" + "illustration": "/assets/images/products/kubedb/kubedb-illustration-1.png" }, { "id": "disaster-recovery", @@ -131,7 +131,7 @@ "use_case": "NETWORKING", "logo": "/assets/images/products/voyager/voyager.png", "title": "Secure HAProxy Ingress Controller for Kubernetes", - "summary": "Voyager is a HAProxy backed secure L7 and L4 ingress controller for Kubernetes. This can be used with any Kubernetes cloud providers including AWS, GCE, GKE, AZURE, ACS etc. This can also be used with baremetal Kubernetes clusters.", + "summary": "Voyager is a secure L7 and L4 ingress controller for Kubernetes with Gateway API support. This can be used with any Kubernetes cloud providers including AWS, GCE, GKE, AZURE, ACS etc. This can also be used with baremetal Kubernetes clusters.", "url": "https://voyagermesh.com/", "features": [ "HTTP & TCP", @@ -148,7 +148,7 @@ "use_case": "SECURITY", "logo": "/assets/images/products/kubevault/kubevault.png", "title": "Tools for running HashiCorp Vault on Kubernetes", - "summary": "KubeVault provides various ways to configure your Vault deployment. You can pick your preferred Storage Backend, Unsealer Mode, TLS Mode, Secret Engines that you want to allow to attach with this VaultServer, Termination Policy to prevent accidental deletion or clean-up Vault deployment in a systematic way, Monitoring, etc.", + "summary": "KubeVault makes Vault deployment and operation a breeze with a Kubernetes operator. You can pick your preferred Storage Backend, Unsealer Mode, TLS Mode, Secret Engines that you want to allow to attach with this VaultServer, Termination Policy to prevent accidental deletion or clean-up Vault deployment in a systematic way, Monitoring, etc.", "url": "https://kubevault.com/", "features": [ "Automatic Initialization & Unsealing", @@ -199,7 +199,7 @@ }, { "text": "GET LATEST UPDATE", - "url": "https://twitter.com/AppsCodeHQ", + "url": "https://x.com/AppsCodeHQ", "icon": "/assets/images/icon/twitter-outlined.svg" } ], @@ -231,7 +231,7 @@ ], "cta_area": { "title": "Get Started with AppsCode", - "sub_title": "AppsCode community edition is FREE to use on any supported Kubernetes engines. There is no up-front investment required, and you need to pay only for the resources you use to your infrastructure provider. We offer a 30 days license FREE of cost to try KubeDB Enterprise edition.", + "sub_title": "AppsCode is FREE to use on any supported Kubernetes engines. There is no up-front investment required, and you need to pay only for the resources you use to your infrastructure provider. We offer a 30 days license FREE of cost to try KubeDB.", "url": "/contact" } } diff --git a/data/products/configsyncer.json b/data/products/configsyncer.json index 871b33689..20662c733 100644 --- a/data/products/configsyncer.json +++ b/data/products/configsyncer.json @@ -61,6 +61,16 @@ "hostDocs": false, "show": true }, + { + "version": "v0.14.7", + "hostDocs": true, + "show": true + }, + { + "version": "v0.14.6", + "hostDocs": true, + "show": true + }, { "version": "v0.14.5", "hostDocs": true, @@ -151,17 +161,17 @@ "hostDocs": true } ], - "latestVersion": "v0.14.5", + "latestVersion": "v0.14.7", "socialLinks": { "facebook": "https://facebook.com/appscode", "github": "https://github.com/config-syncer/config-syncer", "linkedin": "https://www.linkedin.com/company/appscode", - "twitter": "https://twitter.com/AppsCodeHQ", + "twitter": "https://x.com/AppsCodeHQ", "youtube": "https://www.youtube.com/c/appscodeinc" }, "description": { - "html": "

\"Go\n\"Build\n\"codecov\"\n\"Docker\n\"Slack\"\n\"Twitter\"

\n\n

Kubed

\n\n

Kubed (pronounced Cube-Dee) by AppsCode is a Kubernetes Cluster Operator Daemon. Kubed can do the following things for you:

\n\n\n\n

Supported Versions

\n\n

Please pick a version of Kubed that matches your Kubernetes installation.

\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
Kubed VersionDocsKubernetes Version
0.10.0User Guide1.8.x+
0.9.0User Guide1.8.x+
0.5.0User Guide1.7.x
0.2.0User Guide1.5.x - 1.6.x
\n\n

Installation

\n\n

To install Kubed, please follow the guide here.

\n\n

Using Kubed

\n\n

Want to learn how to use Kubed? Please start here.

\n\n

Kubed API Clients

\n\n

You can use Kubed api clients to programmatically access its apis. Here are the supported clients:

\n\n\n\n

Contribution guidelines

\n\n

Want to help improve Kubed? Please start here.

\n\n
\n\n

Kubed binaries collects anonymous usage statistics to help us learn how the software is being used and how we can improve it. To disable stats collection, run the operator with the flag --enable-analytics=false.

\n\n
\n\n

Support

\n\n

We use Slack for public discussions. To chit chat with us or the rest of the community, join us in the AppsCode Slack team channel #kubed. To sign up, use our Slack inviter.

\n\n

If you have found a bug with Kubed or want to request for new features, please file an issue.

\n", - "markdown": "[![Go Report Card](https://goreportcard.com/badge/github.com/appscode/kubed)](https://goreportcard.com/report/github.com/appscode/kubed)\n[![Build Status](https://travis-ci.org/appscode/kubed.svg?branch=master)](https://travis-ci.org/appscode/kubed)\n[![codecov](https://codecov.io/gh/appscode/kubed/branch/master/graph/badge.svg)](https://codecov.io/gh/appscode/kubed)\n[![Docker Pulls](https://img.shields.io/docker/pulls/appscode/kubed.svg)](https://hub.docker.com/r/appscode/kubed/)\n[![Slack](https://slack.appscode.com/badge.svg)](https://slack.appscode.com)\n[![Twitter](https://img.shields.io/twitter/follow/appscodehq.svg?style=social&logo=twitter&label=Follow)](https://twitter.com/intent/follow?screen_name=AppsCodeHQ)\n\n# Kubed\nKubed (pronounced Cube-Dee) by AppsCode is a Kubernetes Cluster Operator Daemon. Kubed can do the following things for you:\n\n - Kubed can protect your Kubernetes cluster from [various disasters scenarios](https://appscode.com/products/kubed/0.9.0/guides/disaster-recovery/).\n - Kubed can keep [ConfigMaps and Secrets synchronized across namespaces and/or clusters](https://appscode.com/products/kubed/0.9.0/guides/config-syncer/).\n - Kubed can [forward cluster events](https://appscode.com/products/kubed/0.9.0/guides/cluster-events/) to various destinations.\n - Kubed can setup [janitors](https://appscode.com/products/kubed/0.9.0/guides/janitors/) for Elasticsearch and InfluxDB.\n - Kubed can [send notifications](https://appscode.com/products/kubed/0.9.0/guides/cluster-events/notifiers/) via Email, SMS or Chat.\n - Kubed has a built-in [search engine](https://appscode.com/products/kubed/0.9.0/guides/apiserver/) for your cluster objects using [bleve](https://github.com/blevesearch/bleve).\n\n\n## Supported Versions\nPlease pick a version of Kubed that matches your Kubernetes installation.\n\n| Kubed Version | Docs | Kubernetes Version |\n|---------------------------------------------------------------|-----------------------------------------------------------------|--------------------|\n| [0.10.0](https://github.com/appscode/kubed/releases/tag/0.10.0) | [User Guide](https://appscode.com/products/kubed/0.10.0/) | 1.8.x+ |\n| [0.9.0](https://github.com/appscode/kubed/releases/tag/0.9.0) | [User Guide](https://appscode.com/products/kubed/0.9.0/) | 1.8.x+ |\n| [0.5.0](https://github.com/appscode/kubed/releases/tag/0.5.0) | [User Guide](https://appscode.com/products/kubed/0.5.0/) | 1.7.x |\n| [0.2.0](https://github.com/appscode/kubed/releases/tag/0.2.0) | [User Guide](https://github.com/appscode/kubed/tree/0.2.0/docs) | 1.5.x - 1.6.x |\n\n## Installation\nTo install Kubed, please follow the guide [here](https://appscode.com/products/kubed/0.9.0/setup/install/).\n\n## Using Kubed\nWant to learn how to use Kubed? Please start [here](https://appscode.com/products/kubed/0.9.0/).\n\n## Kubed API Clients\nYou can use Kubed api clients to programmatically access its apis. Here are the supported clients:\n\n- Go: [https://github.com/appscode/kubed](/client/clientset/versioned)\n- Java: https://github.com/kubed-client/java\n\n## Contribution guidelines\nWant to help improve Kubed? Please start [here](https://appscode.com/products/kubed/0.9.0/welcome/contributing/).\n\n---\n\n**Kubed binaries collects anonymous usage statistics to help us learn how the software is being used and how we can improve it. To disable stats collection, run the operator with the flag** `--enable-analytics=false`.\n\n---\n\n## Support\nWe use Slack for public discussions. To chit chat with us or the rest of the community, join us in the [AppsCode Slack team](https://appscode.slack.com/messages/C6HSHCKBL/details/) channel `#kubed`. To sign up, use our [Slack inviter](https://slack.appscode.com/).\n\nIf you have found a bug with Kubed or want to request for new features, please [file an issue](https://github.com/appscode/kubed/issues/new).\n" + "html": "

\"Go\n\"Build\n\"codecov\"\n\"Docker\n\"Slack\"\n\"Twitter\"

\n\n

Kubed

\n\n

Kubed (pronounced Cube-Dee) by AppsCode is a Kubernetes Cluster Operator Daemon. Kubed can do the following things for you:

\n\n\n\n

Supported Versions

\n\n

Please pick a version of Kubed that matches your Kubernetes installation.

\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
Kubed VersionDocsKubernetes Version
0.10.0User Guide1.8.x+
0.9.0User Guide1.8.x+
0.5.0User Guide1.7.x
0.2.0User Guide1.5.x - 1.6.x
\n\n

Installation

\n\n

To install Kubed, please follow the guide here.

\n\n

Using Kubed

\n\n

Want to learn how to use Kubed? Please start here.

\n\n

Kubed API Clients

\n\n

You can use Kubed api clients to programmatically access its apis. Here are the supported clients:

\n\n\n\n

Contribution guidelines

\n\n

Want to help improve Kubed? Please start here.

\n\n
\n\n

Kubed binaries collects anonymous usage statistics to help us learn how the software is being used and how we can improve it. To disable stats collection, run the operator with the flag --enable-analytics=false.

\n\n
\n\n

Support

\n\n

We use Slack for public discussions. To chit chat with us or the rest of the community, join us in the AppsCode Slack team channel #kubed. To sign up, use our Slack inviter.

\n\n

If you have found a bug with Kubed or want to request for new features, please file an issue.

\n", + "markdown": "[![Go Report Card](https://goreportcard.com/badge/github.com/appscode/kubed)](https://goreportcard.com/report/github.com/appscode/kubed)\n[![Build Status](https://travis-ci.org/appscode/kubed.svg?branch=master)](https://travis-ci.org/appscode/kubed)\n[![codecov](https://codecov.io/gh/appscode/kubed/branch/master/graph/badge.svg)](https://codecov.io/gh/appscode/kubed)\n[![Docker Pulls](https://img.shields.io/docker/pulls/appscode/kubed.svg)](https://hub.docker.com/r/appscode/kubed/)\n[![Slack](https://slack.appscode.com/badge.svg)](https://slack.appscode.com)\n[![Twitter](https://img.shields.io/twitter/follow/appscodehq.svg?style=social&logo=twitter&label=Follow)](https://x.com/intent/follow?screen_name=AppsCodeHQ)\n\n# Kubed\nKubed (pronounced Cube-Dee) by AppsCode is a Kubernetes Cluster Operator Daemon. Kubed can do the following things for you:\n\n - Kubed can protect your Kubernetes cluster from [various disasters scenarios](https://appscode.com/products/kubed/0.9.0/guides/disaster-recovery/).\n - Kubed can keep [ConfigMaps and Secrets synchronized across namespaces and/or clusters](https://appscode.com/products/kubed/0.9.0/guides/config-syncer/).\n - Kubed can [forward cluster events](https://appscode.com/products/kubed/0.9.0/guides/cluster-events/) to various destinations.\n - Kubed can setup [janitors](https://appscode.com/products/kubed/0.9.0/guides/janitors/) for Elasticsearch and InfluxDB.\n - Kubed can [send notifications](https://appscode.com/products/kubed/0.9.0/guides/cluster-events/notifiers/) via Email, SMS or Chat.\n - Kubed has a built-in [search engine](https://appscode.com/products/kubed/0.9.0/guides/apiserver/) for your cluster objects using [bleve](https://github.com/blevesearch/bleve).\n\n\n## Supported Versions\nPlease pick a version of Kubed that matches your Kubernetes installation.\n\n| Kubed Version | Docs | Kubernetes Version |\n|---------------------------------------------------------------|-----------------------------------------------------------------|--------------------|\n| [0.10.0](https://github.com/appscode/kubed/releases/tag/0.10.0) | [User Guide](https://appscode.com/products/kubed/0.10.0/) | 1.8.x+ |\n| [0.9.0](https://github.com/appscode/kubed/releases/tag/0.9.0) | [User Guide](https://appscode.com/products/kubed/0.9.0/) | 1.8.x+ |\n| [0.5.0](https://github.com/appscode/kubed/releases/tag/0.5.0) | [User Guide](https://appscode.com/products/kubed/0.5.0/) | 1.7.x |\n| [0.2.0](https://github.com/appscode/kubed/releases/tag/0.2.0) | [User Guide](https://github.com/appscode/kubed/tree/0.2.0/docs) | 1.5.x - 1.6.x |\n\n## Installation\nTo install Kubed, please follow the guide [here](https://appscode.com/products/kubed/0.9.0/setup/install/).\n\n## Using Kubed\nWant to learn how to use Kubed? Please start [here](https://appscode.com/products/kubed/0.9.0/).\n\n## Kubed API Clients\nYou can use Kubed api clients to programmatically access its apis. Here are the supported clients:\n\n- Go: [https://github.com/appscode/kubed](/client/clientset/versioned)\n- Java: https://github.com/kubed-client/java\n\n## Contribution guidelines\nWant to help improve Kubed? Please start [here](https://appscode.com/products/kubed/0.9.0/welcome/contributing/).\n\n---\n\n**Kubed binaries collects anonymous usage statistics to help us learn how the software is being used and how we can improve it. To disable stats collection, run the operator with the flag** `--enable-analytics=false`.\n\n---\n\n## Support\nWe use Slack for public discussions. To chit chat with us or the rest of the community, join us in the [AppsCode Slack team](https://appscode.slack.com/messages/C6HSHCKBL/details/) channel `#kubed`. To sign up, use our [Slack inviter](https://slack.appscode.com/).\n\nIf you have found a bug with Kubed or want to request for new features, please [file an issue](https://github.com/appscode/kubed/issues/new).\n" }, "supportLinks": { "Support URL": "https://appscode.freshdesk.com", diff --git a/data/products/gateway.json b/data/products/gateway.json index 8657d146f..e3e79795a 100644 --- a/data/products/gateway.json +++ b/data/products/gateway.json @@ -138,12 +138,12 @@ "github": "https://github.com/voyagermesh/gateway-docs", "linkedin": "https://www.linkedin.com/company/appscode", "slack": "https://appscode.slack.com/messages/C0XQFLGRM", - "twitter": "https://twitter.com/Voyagermesh", + "twitter": "https://x.com/Voyagermesh", "youtube": "https://www.youtube.com/c/appscodeinc" }, "description": { - "html": "

Voyager

\n\n

\"Go\n\"Build\n\"codecov\"\n\"Docker\n\"Slack\"\n\"Twitter\"

\n\n
\n

Secure HAProxy Ingress Controller for Kubernetes

\n
\n\n

Voyager is a HAProxy backed secure L7 and L4 ingress controller for Kubernetes developed by\nAppsCode. This can be used with any Kubernetes cloud providers including aws, gce, gke, azure, acs. This can also be used with bare metal Kubernetes clusters.

\n\n

We are exploring what’s next for Voyager. As an ingress controller, its is mostly feature complete at this point. The obvious direction will be to grow Voyager into a full scale L7 api gateway and service mesh. We want to hear your feedback on the roadmap for Voyager. Please take 5 minutes to answer this survey: https://appsco.de/voyager-survey-201902

\n\n

Ingress

\n\n

Voyager provides L7 and L4 loadbalancing using a custom Kubernetes Ingress resource. This is built on top of the HAProxy to support high availability, sticky sessions, name and path-based virtual hosting.\nThis also support configurable application ports with all the options available in a standard Kubernetes Ingress.

\n\n

Certificate

\n\n

Voyager can automatically provision and refresh SSL certificates (including wildcard certificates) issued from Let’s Encrypt using a custom Kubernetes Certificate resource.

\n\n

Supported Versions

\n\n

Please pick a version of Voyager that matches your Kubernetes installation.

\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
Voyager VersionDocsKubernetes VersionPrometheus operator Version
10.0.0 (uses CRD)User Guide1.9.x+0.16.0+
7.4.0 (uses CRD)User Guide1.8.x - 1.11.x0.16.0+
5.0.0 (uses CRD)User Guide1.7.x0.12.0+
3.2.2 (uses TPR)User Guide1.5.x - 1.7.x< 0.12.0
\n\n

Installation

\n\n

To install Voyager, please follow the guide here.

\n\n

Using Voyager

\n\n

Want to learn how to use Voyager? Please start here.

\n\n

Voyager API Clients

\n\n

You can use Voyager api clients to programmatically access its CRD objects. Here are the supported clients:

\n\n\n\n

Contribution guidelines

\n\n

Want to help improve Voyager? Please start here.

\n\n
\n\n

Voyager binaries collects anonymous usage statistics to help us learn how the software is being used and how we can improve it.\nTo disable stats collection, run the operator with the flag --enable-analytics=false.

\n\n
\n\n

Acknowledgement

\n\n\n\n

Support

\n\n

We use Slack for public discussions. To chit chat with us or the rest of the community, join us in the AppsCode Slack team channel #general. To sign up, use our Slack inviter.

\n\n

If you have found a bug with Voyager or want to request for new features, please file an issue.

\n", - "markdown": "# Voyager\n\n[![Go Report Card](https://goreportcard.com/badge/github.com/voyagermesh/voyager)](https://goreportcard.com/report/github.com/voyagermesh/voyager)\n[![Build Status](https://travis-ci.org/appscode/voyager.svg?branch=master)](https://travis-ci.org/appscode/voyager)\n[![codecov](https://codecov.io/gh/appscode/voyager/branch/master/graph/badge.svg)](https://codecov.io/gh/appscode/voyager)\n[![Docker Pulls](https://img.shields.io/docker/pulls/appscode/voyager.svg)](https://hub.docker.com/r/appscode/voyager/)\n[![Slack](https://slack.appscode.com/badge.svg)](https://slack.appscode.com)\n[![Twitter](https://img.shields.io/twitter/follow/appscodehq.svg?style=social&logo=twitter&label=Follow)](https://twitter.com/intent/follow?screen_name=AppsCodeHQ)\n\n> Secure HAProxy Ingress Controller for Kubernetes\n\nVoyager is a [HAProxy](http://www.haproxy.org/) backed [secure](#certificate) L7 and L4 [ingress](#ingress) controller for Kubernetes developed by\n[AppsCode](https://appscode.com). This can be used with any Kubernetes cloud providers including aws, gce, gke, azure, acs. This can also be used with bare metal Kubernetes clusters.\n\n***We are exploring what's next for Voyager. As an ingress controller, its is mostly feature complete at this point. The obvious direction will be to grow Voyager into a full scale L7 api gateway and service mesh. We want to hear your feedback on the roadmap for Voyager. Please take 5 minutes to answer this survey: https://appsco.de/voyager-survey-201902***\n\n## Ingress\nVoyager provides L7 and L4 loadbalancing using a custom Kubernetes [Ingress](https://appscode.com/products/voyager/10.0.0/guides/ingress/) resource. This is built on top of the [HAProxy](http://www.haproxy.org/) to support high availability, sticky sessions, name and path-based virtual hosting.\nThis also support configurable application ports with all the options available in a standard Kubernetes [Ingress](https://kubernetes.io/docs/concepts/services-networking/ingress/).\n\n## Certificate\nVoyager can automatically provision and refresh SSL certificates (including wildcard certificates) issued from Let's Encrypt using a custom Kubernetes [Certificate](https://appscode.com/products/voyager/10.0.0/guides/certificate/) resource.\n\n## Supported Versions\nPlease pick a version of Voyager that matches your Kubernetes installation.\n\n| Voyager Version | Docs | Kubernetes Version | Prometheus operator Version |\n|----------------------------------------------------------------------------------------|-------------------------------------------------------------------------|--------------------|-----------------------------|\n| [10.0.0](https://github.com/voyagermesh/voyager/releases/tag/10.0.0) (uses CRD) | [User Guide](https://appscode.com/products/voyager/10.0.0/) | 1.9.x+ | 0.16.0+ |\n| [7.4.0](https://github.com/voyagermesh/voyager/releases/tag/7.4.0) (uses CRD) | [User Guide](https://appscode.com/products/voyager/7.4.0/) | 1.8.x - 1.11.x | 0.16.0+ |\n| [5.0.0](https://github.com/voyagermesh/voyager/releases/tag/5.0.0) (uses CRD) | [User Guide](https://appscode.com/products/voyager/5.0.0/) | 1.7.x | 0.12.0+ |\n| [3.2.2](https://github.com/voyagermesh/voyager/releases/tag/3.2.2) (uses TPR) | [User Guide](https://github.com/voyagermesh/voyager/tree/3.2.2/docs) | 1.5.x - 1.7.x | < 0.12.0 |\n\n## Installation\nTo install Voyager, please follow the guide [here](https://appscode.com/products/voyager/10.0.0/setup/install/).\n\n## Using Voyager\nWant to learn how to use Voyager? Please start [here](https://appscode.com/products/voyager/10.0.0/welcome/).\n\n## Voyager API Clients\nYou can use Voyager api clients to programmatically access its CRD objects. Here are the supported clients:\n\n- Go: [https://github.com/voyagermesh/voyager](/client/clientset/versioned)\n- Java: https://github.com/voyager-client/java\n\n## Contribution guidelines\nWant to help improve Voyager? Please start [here](https://appscode.com/products/voyager/10.0.0/welcome/contributing/).\n\n---\n\n**Voyager binaries collects anonymous usage statistics to help us learn how the software is being used and how we can improve it.\nTo disable stats collection, run the operator with the flag** `--enable-analytics=false`.\n\n---\n\n## Acknowledgement\n - docker-library/haproxy https://github.com/docker-library/haproxy\n - kubernetes/contrib https://github.com/kubernetes/contrib/tree/master/service-loadbalancer\n - kubernetes/ingress https://github.com/kubernetes/ingress\n - xenolf/lego https://github.com/appscode/lego\n - kelseyhightower/kube-cert-manager https://github.com/kelseyhightower/kube-cert-manager\n - PalmStoneGames/kube-cert-manager https://github.com/PalmStoneGames/kube-cert-manager\n - [Kubernetes cloudprovider implementation](https://github.com/kubernetes/kubernetes/tree/master/pkg/cloudprovider)\n - openshift/generic-admission-server https://github.com/openshift/generic-admission-server\n - TimWolla/haproxy-auth-request https://github.com/TimWolla/haproxy-auth-request\n\n## Support\n\nWe use Slack for public discussions. To chit chat with us or the rest of the community, join us in the [AppsCode Slack team](https://appscode.slack.com/messages/C0XQFLGRM/details/) channel `#general`. To sign up, use our [Slack inviter](https://slack.appscode.com/).\n\nIf you have found a bug with Voyager or want to request for new features, please [file an issue](https://github.com/voyagermesh/voyager/issues/new).\n" + "html": "

Voyager

\n\n

\"Go\n\"Build\n\"codecov\"\n\"Docker\n\"Slack\"\n\"Twitter\"

\n\n
\n

Secure HAProxy Ingress Controller for Kubernetes

\n
\n\n

Voyager is a HAProxy backed secure L7 and L4 ingress controller for Kubernetes developed by\nAppsCode. This can be used with any Kubernetes cloud providers including aws, gce, gke, azure, acs. This can also be used with bare metal Kubernetes clusters.

\n\n

We are exploring what’s next for Voyager. As an ingress controller, its is mostly feature complete at this point. The obvious direction will be to grow Voyager into a full scale L7 api gateway and service mesh. We want to hear your feedback on the roadmap for Voyager. Please take 5 minutes to answer this survey: https://appsco.de/voyager-survey-201902

\n\n

Ingress

\n\n

Voyager provides L7 and L4 loadbalancing using a custom Kubernetes Ingress resource. This is built on top of the HAProxy to support high availability, sticky sessions, name and path-based virtual hosting.\nThis also support configurable application ports with all the options available in a standard Kubernetes Ingress.

\n\n

Certificate

\n\n

Voyager can automatically provision and refresh SSL certificates (including wildcard certificates) issued from Let’s Encrypt using a custom Kubernetes Certificate resource.

\n\n

Supported Versions

\n\n

Please pick a version of Voyager that matches your Kubernetes installation.

\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
Voyager VersionDocsKubernetes VersionPrometheus operator Version
10.0.0 (uses CRD)User Guide1.9.x+0.16.0+
7.4.0 (uses CRD)User Guide1.8.x - 1.11.x0.16.0+
5.0.0 (uses CRD)User Guide1.7.x0.12.0+
3.2.2 (uses TPR)User Guide1.5.x - 1.7.x< 0.12.0
\n\n

Installation

\n\n

To install Voyager, please follow the guide here.

\n\n

Using Voyager

\n\n

Want to learn how to use Voyager? Please start here.

\n\n

Voyager API Clients

\n\n

You can use Voyager api clients to programmatically access its CRD objects. Here are the supported clients:

\n\n\n\n

Contribution guidelines

\n\n

Want to help improve Voyager? Please start here.

\n\n
\n\n

Voyager binaries collects anonymous usage statistics to help us learn how the software is being used and how we can improve it.\nTo disable stats collection, run the operator with the flag --enable-analytics=false.

\n\n
\n\n

Acknowledgement

\n\n\n\n

Support

\n\n

We use Slack for public discussions. To chit chat with us or the rest of the community, join us in the AppsCode Slack team channel #general. To sign up, use our Slack inviter.

\n\n

If you have found a bug with Voyager or want to request for new features, please file an issue.

\n", + "markdown": "# Voyager\n\n[![Go Report Card](https://goreportcard.com/badge/github.com/voyagermesh/voyager)](https://goreportcard.com/report/github.com/voyagermesh/voyager)\n[![Build Status](https://travis-ci.org/appscode/voyager.svg?branch=master)](https://travis-ci.org/appscode/voyager)\n[![codecov](https://codecov.io/gh/appscode/voyager/branch/master/graph/badge.svg)](https://codecov.io/gh/appscode/voyager)\n[![Docker Pulls](https://img.shields.io/docker/pulls/appscode/voyager.svg)](https://hub.docker.com/r/appscode/voyager/)\n[![Slack](https://slack.appscode.com/badge.svg)](https://slack.appscode.com)\n[![Twitter](https://img.shields.io/twitter/follow/appscodehq.svg?style=social&logo=twitter&label=Follow)](https://x.com/intent/follow?screen_name=AppsCodeHQ)\n\n> Secure HAProxy Ingress Controller for Kubernetes\n\nVoyager is a [HAProxy](http://www.haproxy.org/) backed [secure](#certificate) L7 and L4 [ingress](#ingress) controller for Kubernetes developed by\n[AppsCode](https://appscode.com). This can be used with any Kubernetes cloud providers including aws, gce, gke, azure, acs. This can also be used with bare metal Kubernetes clusters.\n\n***We are exploring what's next for Voyager. As an ingress controller, its is mostly feature complete at this point. The obvious direction will be to grow Voyager into a full scale L7 api gateway and service mesh. We want to hear your feedback on the roadmap for Voyager. Please take 5 minutes to answer this survey: https://appsco.de/voyager-survey-201902***\n\n## Ingress\nVoyager provides L7 and L4 loadbalancing using a custom Kubernetes [Ingress](https://appscode.com/products/voyager/10.0.0/guides/ingress/) resource. This is built on top of the [HAProxy](http://www.haproxy.org/) to support high availability, sticky sessions, name and path-based virtual hosting.\nThis also support configurable application ports with all the options available in a standard Kubernetes [Ingress](https://kubernetes.io/docs/concepts/services-networking/ingress/).\n\n## Certificate\nVoyager can automatically provision and refresh SSL certificates (including wildcard certificates) issued from Let's Encrypt using a custom Kubernetes [Certificate](https://appscode.com/products/voyager/10.0.0/guides/certificate/) resource.\n\n## Supported Versions\nPlease pick a version of Voyager that matches your Kubernetes installation.\n\n| Voyager Version | Docs | Kubernetes Version | Prometheus operator Version |\n|----------------------------------------------------------------------------------------|-------------------------------------------------------------------------|--------------------|-----------------------------|\n| [10.0.0](https://github.com/voyagermesh/voyager/releases/tag/10.0.0) (uses CRD) | [User Guide](https://appscode.com/products/voyager/10.0.0/) | 1.9.x+ | 0.16.0+ |\n| [7.4.0](https://github.com/voyagermesh/voyager/releases/tag/7.4.0) (uses CRD) | [User Guide](https://appscode.com/products/voyager/7.4.0/) | 1.8.x - 1.11.x | 0.16.0+ |\n| [5.0.0](https://github.com/voyagermesh/voyager/releases/tag/5.0.0) (uses CRD) | [User Guide](https://appscode.com/products/voyager/5.0.0/) | 1.7.x | 0.12.0+ |\n| [3.2.2](https://github.com/voyagermesh/voyager/releases/tag/3.2.2) (uses TPR) | [User Guide](https://github.com/voyagermesh/voyager/tree/3.2.2/docs) | 1.5.x - 1.7.x | < 0.12.0 |\n\n## Installation\nTo install Voyager, please follow the guide [here](https://appscode.com/products/voyager/10.0.0/setup/install/).\n\n## Using Voyager\nWant to learn how to use Voyager? Please start [here](https://appscode.com/products/voyager/10.0.0/welcome/).\n\n## Voyager API Clients\nYou can use Voyager api clients to programmatically access its CRD objects. Here are the supported clients:\n\n- Go: [https://github.com/voyagermesh/voyager](/client/clientset/versioned)\n- Java: https://github.com/voyager-client/java\n\n## Contribution guidelines\nWant to help improve Voyager? Please start [here](https://appscode.com/products/voyager/10.0.0/welcome/contributing/).\n\n---\n\n**Voyager binaries collects anonymous usage statistics to help us learn how the software is being used and how we can improve it.\nTo disable stats collection, run the operator with the flag** `--enable-analytics=false`.\n\n---\n\n## Acknowledgement\n - docker-library/haproxy https://github.com/docker-library/haproxy\n - kubernetes/contrib https://github.com/kubernetes/contrib/tree/master/service-loadbalancer\n - kubernetes/ingress https://github.com/kubernetes/ingress\n - xenolf/lego https://github.com/appscode/lego\n - kelseyhightower/kube-cert-manager https://github.com/kelseyhightower/kube-cert-manager\n - PalmStoneGames/kube-cert-manager https://github.com/PalmStoneGames/kube-cert-manager\n - [Kubernetes cloudprovider implementation](https://github.com/kubernetes/kubernetes/tree/master/pkg/cloudprovider)\n - openshift/generic-admission-server https://github.com/openshift/generic-admission-server\n - TimWolla/haproxy-auth-request https://github.com/TimWolla/haproxy-auth-request\n\n## Support\n\nWe use Slack for public discussions. To chit chat with us or the rest of the community, join us in the [AppsCode Slack team](https://appscode.slack.com/messages/C0XQFLGRM/details/) channel `#general`. To sign up, use our [Slack inviter](https://slack.appscode.com/).\n\nIf you have found a bug with Voyager or want to request for new features, please [file an issue](https://github.com/voyagermesh/voyager/issues/new).\n" }, "supportLinks": { "Support URL": "https://appscode.freshdesk.com" diff --git a/data/products/guard.json b/data/products/guard.json index f233c8684..e9965dbda 100644 --- a/data/products/guard.json +++ b/data/products/guard.json @@ -241,12 +241,12 @@ "facebook": "https://facebook.com/appscode", "github": "https://github.com/kubeguard/guard", "linkedin": "https://www.linkedin.com/company/appscode", - "twitter": "https://twitter.com/AppsCodeHQ", + "twitter": "https://x.com/AppsCodeHQ", "youtube": "https://www.youtube.com/c/appscodeinc" }, "description": { - "html": "

\n\n

\"Go\n\"Build\n\"codecov\"\n\"Docker\n\"Slack\"\n\"Twitter\"

\n\n

Guard

\n\n

Guard by AppsCode is a Kubernetes Webhook Authentication server. Using guard, you can log into your Kubernetes cluster using various auth providers. Guard also configures groups of authenticated user appropriately. This allows cluster administrator to setup RBAC rules based on membership in groups. Guard supports following auth providers:

\n\n\n\n

Supported Versions

\n\n

Kubernetes 1.9+

\n\n

Installation

\n\n

To install Guard, please follow the guide here.

\n\n

Using Guard

\n\n

Want to learn how to use Guard? Please start here.

\n\n

Contribution guidelines

\n\n

Want to help improve Guard? Please start here.

\n\n
\n\n

Guard binaries collects anonymous usage statistics to help us learn how the software is being used and how we can improve it. To disable stats collection, run the operator with the flag --analytics=false.

\n\n
\n\n

Acknowledgement

\n\n\n\n

Support

\n\n

We use Slack for public discussions. To chit chat with us or the rest of the community, join us in the AppsCode Slack team channel #guard. To sign up, use our Slack inviter.

\n\n

If you have found a bug with Guard or want to request for new features, please file an issue.

\n\n

\n", - "markdown": "

\n\n[![Go Report Card](https://goreportcard.com/badge/github.com/kubeguard/guard)](https://goreportcard.com/report/github.com/kubeguard/guard)\n[![Build Status](https://travis-ci.org/appscode/guard.svg?branch=master)](https://travis-ci.org/appscode/guard)\n[![codecov](https://codecov.io/gh/appscode/guard/branch/master/graph/badge.svg)](https://codecov.io/gh/appscode/guard)\n[![Docker Pulls](https://img.shields.io/docker/pulls/appscode/guard.svg)](https://hub.docker.com/r/appscode/guard/)\n[![Slack](https://slack.appscode.com/badge.svg)](https://slack.appscode.com)\n[![Twitter](https://img.shields.io/twitter/follow/appscodehq.svg?style=social&logo=twitter&label=Follow)](https://twitter.com/intent/follow?screen_name=AppsCodeHQ)\n\n# Guard\nGuard by AppsCode is a [Kubernetes Webhook Authentication](https://kubernetes.io/docs/admin/authentication/#webhook-token-authentication) server. Using guard, you can log into your Kubernetes cluster using various auth providers. Guard also configures groups of authenticated user appropriately. This allows cluster administrator to setup RBAC rules based on membership in groups. Guard supports following auth providers:\n\n- [Static Token File](https://appscode.com/products/guard/0.4.0/guides/authenticator/static_token_file/)\n- [Github](https://appscode.com/products/guard/0.4.0/guides/authenticator/github/)\n- [Gitlab](https://appscode.com/products/guard/0.4.0/guides/authenticator/gitlab/)\n- [Google](https://appscode.com/products/guard/0.4.0/guides/authenticator/google/)\n- [Azure](https://appscode.com/products/guard/0.4.0/guides/authenticator/azure/)\n- [LDAP using Simple or Kerberos authentication](https://appscode.com/products/guard/0.4.0/guides/authenticator/ldap/)\n- [Azure Active Directory via LDAP](https://appscode.com/products/guard/0.4.0/guides/authenticator/ldap_azure/)\n\n## Supported Versions\nKubernetes 1.9+\n\n## Installation\nTo install Guard, please follow the guide [here](https://appscode.com/products/guard/0.4.0/setup/install/).\n\n## Using Guard\nWant to learn how to use Guard? Please start [here](https://appscode.com/products/guard/0.4.0/).\n\n## Contribution guidelines\nWant to help improve Guard? Please start [here](https://appscode.com/products/guard/0.4.0/welcome/contributing/).\n\n---\n\n**Guard binaries collects anonymous usage statistics to help us learn how the software is being used and how we can improve it. To disable stats collection, run the operator with the flag** `--analytics=false`.\n\n---\n\n## Acknowledgement\n\n- [apprenda-kismatic/kubernetes-ldap](https://github.com/apprenda-kismatic/kubernetes-ldap)\n- [Nike-Inc/harbormaster](https://github.com/Nike-Inc/harbormaster)\n\n## Support\nWe use Slack for public discussions. To chit chat with us or the rest of the community, join us in the [AppsCode Slack team](https://appscode.slack.com/messages/C8M8HANQ0/details/) channel `#guard`. To sign up, use our [Slack inviter](https://slack.appscode.com/).\n\nIf you have found a bug with Guard or want to request for new features, please [file an issue](https://github.com/kubeguard/guard/issues/new).\n\n

\n" + "html": "

\n\n

\"Go\n\"Build\n\"codecov\"\n\"Docker\n\"Slack\"\n\"Twitter\"

\n\n

Guard

\n\n

Guard by AppsCode is a Kubernetes Webhook Authentication server. Using guard, you can log into your Kubernetes cluster using various auth providers. Guard also configures groups of authenticated user appropriately. This allows cluster administrator to setup RBAC rules based on membership in groups. Guard supports following auth providers:

\n\n\n\n

Supported Versions

\n\n

Kubernetes 1.9+

\n\n

Installation

\n\n

To install Guard, please follow the guide here.

\n\n

Using Guard

\n\n

Want to learn how to use Guard? Please start here.

\n\n

Contribution guidelines

\n\n

Want to help improve Guard? Please start here.

\n\n
\n\n

Guard binaries collects anonymous usage statistics to help us learn how the software is being used and how we can improve it. To disable stats collection, run the operator with the flag --analytics=false.

\n\n
\n\n

Acknowledgement

\n\n\n\n

Support

\n\n

We use Slack for public discussions. To chit chat with us or the rest of the community, join us in the AppsCode Slack team channel #guard. To sign up, use our Slack inviter.

\n\n

If you have found a bug with Guard or want to request for new features, please file an issue.

\n\n

\n", + "markdown": "

\n\n[![Go Report Card](https://goreportcard.com/badge/github.com/kubeguard/guard)](https://goreportcard.com/report/github.com/kubeguard/guard)\n[![Build Status](https://travis-ci.org/appscode/guard.svg?branch=master)](https://travis-ci.org/appscode/guard)\n[![codecov](https://codecov.io/gh/appscode/guard/branch/master/graph/badge.svg)](https://codecov.io/gh/appscode/guard)\n[![Docker Pulls](https://img.shields.io/docker/pulls/appscode/guard.svg)](https://hub.docker.com/r/appscode/guard/)\n[![Slack](https://slack.appscode.com/badge.svg)](https://slack.appscode.com)\n[![Twitter](https://img.shields.io/twitter/follow/appscodehq.svg?style=social&logo=twitter&label=Follow)](https://x.com/intent/follow?screen_name=AppsCodeHQ)\n\n# Guard\nGuard by AppsCode is a [Kubernetes Webhook Authentication](https://kubernetes.io/docs/admin/authentication/#webhook-token-authentication) server. Using guard, you can log into your Kubernetes cluster using various auth providers. Guard also configures groups of authenticated user appropriately. This allows cluster administrator to setup RBAC rules based on membership in groups. Guard supports following auth providers:\n\n- [Static Token File](https://appscode.com/products/guard/0.4.0/guides/authenticator/static_token_file/)\n- [Github](https://appscode.com/products/guard/0.4.0/guides/authenticator/github/)\n- [Gitlab](https://appscode.com/products/guard/0.4.0/guides/authenticator/gitlab/)\n- [Google](https://appscode.com/products/guard/0.4.0/guides/authenticator/google/)\n- [Azure](https://appscode.com/products/guard/0.4.0/guides/authenticator/azure/)\n- [LDAP using Simple or Kerberos authentication](https://appscode.com/products/guard/0.4.0/guides/authenticator/ldap/)\n- [Azure Active Directory via LDAP](https://appscode.com/products/guard/0.4.0/guides/authenticator/ldap_azure/)\n\n## Supported Versions\nKubernetes 1.9+\n\n## Installation\nTo install Guard, please follow the guide [here](https://appscode.com/products/guard/0.4.0/setup/install/).\n\n## Using Guard\nWant to learn how to use Guard? Please start [here](https://appscode.com/products/guard/0.4.0/).\n\n## Contribution guidelines\nWant to help improve Guard? Please start [here](https://appscode.com/products/guard/0.4.0/welcome/contributing/).\n\n---\n\n**Guard binaries collects anonymous usage statistics to help us learn how the software is being used and how we can improve it. To disable stats collection, run the operator with the flag** `--analytics=false`.\n\n---\n\n## Acknowledgement\n\n- [apprenda-kismatic/kubernetes-ldap](https://github.com/apprenda-kismatic/kubernetes-ldap)\n- [Nike-Inc/harbormaster](https://github.com/Nike-Inc/harbormaster)\n\n## Support\nWe use Slack for public discussions. To chit chat with us or the rest of the community, join us in the [AppsCode Slack team](https://appscode.slack.com/messages/C8M8HANQ0/details/) channel `#guard`. To sign up, use our [Slack inviter](https://slack.appscode.com/).\n\nIf you have found a bug with Guard or want to request for new features, please [file an issue](https://github.com/kubeguard/guard/issues/new).\n\n

\n" }, "supportLinks": { "Support URL": "https://appscode.freshdesk.com", diff --git a/data/products/kubeci.json b/data/products/kubeci.json index 472b612e5..8ae299260 100644 --- a/data/products/kubeci.json +++ b/data/products/kubeci.json @@ -169,12 +169,12 @@ "facebook": "https://facebook.com/appscode", "github": "https://github.com/kube-ci/engine", "linkedin": "https://www.linkedin.com/company/appscode", - "twitter": "https://twitter.com/appscode", + "twitter": "https://x.com/appscode", "youtube": "https://www.youtube.com/c/appscodeinc" }, "description": { - "html": "

\"Go\n\"Build\n\"codecov\"\n\"Docker\n\"Slack\"\n\"Twitter\"

\n\n

KubeCI Engine

\n\n

KubeCI engine by AppsCode is a Kubernetes native workflow engine.

\n\n

Features

\n\n
    \n
  • Configure a set of containerized steps using workflow.
  • \n
  • Run steps in serial or, parallel order by resolving dependencies for each step.
  • \n
  • Trigger workflows through create/update/delete events of any kubernetes object.
  • \n
  • Trigger workflows manually with fake create events.
  • \n
  • Shared workspace and home directory among all steps of a workflow.
  • \n
  • Credential initializer for Docker and Git.
  • \n
  • APIs for collecting status and logs of each step.
  • \n
\n\n

Supported Versions

\n\n

Please pick a version of KubeCI engine that matches your Kubernetes installation.

\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
KubeCI engine VersionDocsKubernetes Version
0.1.0 (uses CRD)User Guide1.9.x+
\n\n

Installation

\n\n

To install KubeCI engine, please follow the guide here.

\n\n

Using KubeCI engine

\n\n

Want to learn how to use KubeCI engine? Please start here.

\n\n

KubeCI engine API Clients

\n\n

You can use KubeCI engine api clients to programmatically access its objects. Here are the supported clients:

\n\n\n\n

Contribution guidelines

\n\n

Want to help improve KubeCI engine? Please start here.

\n\n
\n\n

KubeCI binaries collects anonymous usage statistics to help us learn how the software is being used and how we can improve it. To disable stats collection, run the operator with the flag --enable-analytics=false.

\n\n
\n\n

Acknowledgement

\n\n\n\n

Support

\n\n

We use Slack for public discussions. To chit chat with us or the rest of the community, join us in the AppsCode Slack team channel #kubeci. To sign up, use our Slack inviter.

\n\n

If you have found a bug with KubeCI engine or want to request for new features, please file an issue.

\n", - "markdown": "[![Go Report Card](https://goreportcard.com/badge/github.com/kube-ci/engine)](https://goreportcard.com/report/github.com/kube-ci/engine)\n[![Build Status](https://travis-ci.org/kube-ci/engine.svg?branch=master)](https://travis-ci.org/kube-ci/engine)\n[![codecov](https://codecov.io/gh/kube-ci/engine/branch/master/graph/badge.svg)](https://codecov.io/gh/kube-ci/engine)\n[![Docker Pulls](https://img.shields.io/docker/pulls/kubeci/kubeci-engine.svg)](https://hub.docker.com/r/kubeci/kubeci-engine/)\n[![Slack](https://slack.appscode.com/badge.svg)](https://slack.appscode.com)\n[![Twitter](https://img.shields.io/twitter/follow/thekubeci.svg?style=social&logo=twitter&label=Follow)](https://twitter.com/intent/follow?screen_name=TheKubeCi)\n\n# KubeCI Engine\n\nKubeCI engine by AppsCode is a Kubernetes native workflow engine.\n\n## Features\n\n- Configure a set of containerized steps using workflow.\n- Run steps in serial or, parallel order by resolving dependencies for each step.\n- Trigger workflows through create/update/delete events of any kubernetes object.\n- Trigger workflows manually with fake create events.\n- Shared `workspace` and `home` directory among all steps of a workflow.\n- Credential initializer for Docker and Git.\n- APIs for collecting status and logs of each step.\n\n## Supported Versions\n\nPlease pick a version of KubeCI engine that matches your Kubernetes installation.\n\n| KubeCI engine Version | Docs | Kubernetes Version |\n|------------------------------------------------------------------------------------|-----------------------------------------------------------------|--------------------|\n| [0.1.0](https://github.com/kube-ci/engine/releases/tag/0.1.0) (uses CRD) | [User Guide](https://kube.ci/products/engine/0.1.0) | 1.9.x+ |\n\n## Installation\n\nTo install KubeCI engine, please follow the guide [here](https://kube.ci/products/engine/0.1.0/setup/install).\n\n## Using KubeCI engine\n\nWant to learn how to use KubeCI engine? Please start [here](https://kube.ci/products/engine/0.1.0).\n\n## KubeCI engine API Clients\n\nYou can use KubeCI engine api clients to programmatically access its objects. Here are the supported clients:\n\n- Go: [https://github.com/kube-ci/engine](/client/clientset/versioned)\n\n## Contribution guidelines\n\nWant to help improve KubeCI engine? Please start [here](https://kube.ci/products/engine/0.1.0/welcome/contributing).\n\n---\n\n**KubeCI binaries collects anonymous usage statistics to help us learn how the software is being used and how we can improve it. To disable stats collection, run the operator with the flag** `--enable-analytics=false`.\n\n---\n\n## Acknowledgement\n\n - Credential initializer part is adopted from [knative/build](https://github.com/knative/build).\n\n## Support\n\nWe use Slack for public discussions. To chit chat with us or the rest of the community, join us in the [AppsCode Slack team](https://appscode.slack.com/messages/C8NCX6N23/details/) channel `#kubeci`. To sign up, use our [Slack inviter](https://slack.appscode.com/).\n\nIf you have found a bug with KubeCI engine or want to request for new features, please [file an issue](https://github.com/kube-ci/project/issues/new).\n" + "html": "

\"Go\n\"Build\n\"codecov\"\n\"Docker\n\"Slack\"\n\"Twitter\"

\n\n

KubeCI Engine

\n\n

KubeCI engine by AppsCode is a Kubernetes native workflow engine.

\n\n

Features

\n\n
    \n
  • Configure a set of containerized steps using workflow.
  • \n
  • Run steps in serial or, parallel order by resolving dependencies for each step.
  • \n
  • Trigger workflows through create/update/delete events of any kubernetes object.
  • \n
  • Trigger workflows manually with fake create events.
  • \n
  • Shared workspace and home directory among all steps of a workflow.
  • \n
  • Credential initializer for Docker and Git.
  • \n
  • APIs for collecting status and logs of each step.
  • \n
\n\n

Supported Versions

\n\n

Please pick a version of KubeCI engine that matches your Kubernetes installation.

\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
KubeCI engine VersionDocsKubernetes Version
0.1.0 (uses CRD)User Guide1.9.x+
\n\n

Installation

\n\n

To install KubeCI engine, please follow the guide here.

\n\n

Using KubeCI engine

\n\n

Want to learn how to use KubeCI engine? Please start here.

\n\n

KubeCI engine API Clients

\n\n

You can use KubeCI engine api clients to programmatically access its objects. Here are the supported clients:

\n\n\n\n

Contribution guidelines

\n\n

Want to help improve KubeCI engine? Please start here.

\n\n
\n\n

KubeCI binaries collects anonymous usage statistics to help us learn how the software is being used and how we can improve it. To disable stats collection, run the operator with the flag --enable-analytics=false.

\n\n
\n\n

Acknowledgement

\n\n\n\n

Support

\n\n

We use Slack for public discussions. To chit chat with us or the rest of the community, join us in the AppsCode Slack team channel #kubeci. To sign up, use our Slack inviter.

\n\n

If you have found a bug with KubeCI engine or want to request for new features, please file an issue.

\n", + "markdown": "[![Go Report Card](https://goreportcard.com/badge/github.com/kube-ci/engine)](https://goreportcard.com/report/github.com/kube-ci/engine)\n[![Build Status](https://travis-ci.org/kube-ci/engine.svg?branch=master)](https://travis-ci.org/kube-ci/engine)\n[![codecov](https://codecov.io/gh/kube-ci/engine/branch/master/graph/badge.svg)](https://codecov.io/gh/kube-ci/engine)\n[![Docker Pulls](https://img.shields.io/docker/pulls/kubeci/kubeci-engine.svg)](https://hub.docker.com/r/kubeci/kubeci-engine/)\n[![Slack](https://slack.appscode.com/badge.svg)](https://slack.appscode.com)\n[![Twitter](https://img.shields.io/twitter/follow/thekubeci.svg?style=social&logo=twitter&label=Follow)](https://x.com/intent/follow?screen_name=TheKubeCi)\n\n# KubeCI Engine\n\nKubeCI engine by AppsCode is a Kubernetes native workflow engine.\n\n## Features\n\n- Configure a set of containerized steps using workflow.\n- Run steps in serial or, parallel order by resolving dependencies for each step.\n- Trigger workflows through create/update/delete events of any kubernetes object.\n- Trigger workflows manually with fake create events.\n- Shared `workspace` and `home` directory among all steps of a workflow.\n- Credential initializer for Docker and Git.\n- APIs for collecting status and logs of each step.\n\n## Supported Versions\n\nPlease pick a version of KubeCI engine that matches your Kubernetes installation.\n\n| KubeCI engine Version | Docs | Kubernetes Version |\n|------------------------------------------------------------------------------------|-----------------------------------------------------------------|--------------------|\n| [0.1.0](https://github.com/kube-ci/engine/releases/tag/0.1.0) (uses CRD) | [User Guide](https://kube.ci/products/engine/0.1.0) | 1.9.x+ |\n\n## Installation\n\nTo install KubeCI engine, please follow the guide [here](https://kube.ci/products/engine/0.1.0/setup/install).\n\n## Using KubeCI engine\n\nWant to learn how to use KubeCI engine? Please start [here](https://kube.ci/products/engine/0.1.0).\n\n## KubeCI engine API Clients\n\nYou can use KubeCI engine api clients to programmatically access its objects. Here are the supported clients:\n\n- Go: [https://github.com/kube-ci/engine](/client/clientset/versioned)\n\n## Contribution guidelines\n\nWant to help improve KubeCI engine? Please start [here](https://kube.ci/products/engine/0.1.0/welcome/contributing).\n\n---\n\n**KubeCI binaries collects anonymous usage statistics to help us learn how the software is being used and how we can improve it. To disable stats collection, run the operator with the flag** `--enable-analytics=false`.\n\n---\n\n## Acknowledgement\n\n - Credential initializer part is adopted from [knative/build](https://github.com/knative/build).\n\n## Support\n\nWe use Slack for public discussions. To chit chat with us or the rest of the community, join us in the [AppsCode Slack team](https://appscode.slack.com/messages/C8NCX6N23/details/) channel `#kubeci`. To sign up, use our [Slack inviter](https://slack.appscode.com/).\n\nIf you have found a bug with KubeCI engine or want to request for new features, please [file an issue](https://github.com/kube-ci/project/issues/new).\n" }, "supportLinks": { "Support URL": "https://appscode.freshdesk.com", diff --git a/data/products/kubedb.json b/data/products/kubedb.json index 4416c2adc..245d3b672 100644 --- a/data/products/kubedb.json +++ b/data/products/kubedb.json @@ -3,7 +3,7 @@ "name": "KubeDB", "fullname": "KubeDB by AppsCode", "tagline": "Run Production-Grade Databases on Kubernetes", - "summary": "KubeDB simplifies Provision, Upgrade, Scaling, Volume Expansion, Monitor, Backup, Restore for various Databases in Kubernetes on any Public & Private Cloud", + "summary": "KubeDB simplifies Provisioning, Upgrading, Scaling, Volume Expansion, Monitor, Backup, Restore for various Databases in Kubernetes on any Public & Private Cloud", "published": true, "author": "AppsCode Inc.", "website": { @@ -156,6 +156,129 @@ "hostDocs": false, "show": true }, + { + "version": "v2024.3.16", + "hostDocs": true, + "show": true, + "info": { + "autoscaler": "v0.29.0", + "cli": "v0.44.0", + "dashboard": "v0.20.0", + "installer": "v2024.3.16", + "ops-manager": "v0.31.0", + "provisioner": "v0.44.0", + "schema-manager": "v0.20.0", + "ui-server": "v0.20.0", + "webhook-server": "v0.20.0" + } + }, + { + "version": "v2024.3.9-rc.0", + "hostDocs": true, + "info": { + "autoscaler": "v0.28.0-rc.0", + "cli": "v0.43.0-rc.0", + "dashboard": "v0.19.0-rc.0", + "installer": "v2024.3.9-rc.0", + "ops-manager": "v0.30.0-rc.0", + "provisioner": "v0.43.0-rc.0", + "schema-manager": "v0.19.0-rc.0", + "ui-server": "v0.19.0-rc.0", + "webhook-server": "v0.19.0-rc.0" + } + }, + { + "version": "v2024.2.14", + "hostDocs": true, + "show": true, + "info": { + "autoscaler": "v0.27.0", + "cli": "v0.42.0", + "dashboard": "v0.18.0", + "installer": "v2024.2.14", + "ops-manager": "v0.29.0", + "provisioner": "v0.42.0", + "schema-manager": "v0.18.0", + "ui-server": "v0.18.0", + "webhook-server": "v0.18.0" + } + }, + { + "version": "v2024.1.31", + "hostDocs": true, + "show": true, + "info": { + "autoscaler": "v0.26.0", + "cli": "v0.41.0", + "dashboard": "v0.17.0", + "installer": "v2024.1.31", + "ops-manager": "v0.28.0", + "provisioner": "v0.41.0", + "schema-manager": "v0.17.0", + "ui-server": "v0.17.0", + "webhook-server": "v0.17.0" + } + }, + { + "version": "v2024.1.28-rc.1", + "hostDocs": true, + "info": { + "autoscaler": "v0.26.0-rc.1", + "cli": "v0.41.0-rc.1", + "dashboard": "v0.17.0-rc.1", + "installer": "v2024.1.28-rc.1", + "ops-manager": "v0.28.0-rc.1", + "provisioner": "v0.41.0-rc.1", + "schema-manager": "v0.17.0-rc.1", + "ui-server": "v0.17.0-rc.1", + "webhook-server": "v0.17.0-rc.1" + } + }, + { + "version": "v2024.1.26-rc.0", + "hostDocs": true, + "info": { + "autoscaler": "v0.26.0-rc.0", + "cli": "v0.41.0-rc.0", + "dashboard": "v0.17.0-rc.0", + "installer": "v2024.1.26-rc.0", + "ops-manager": "v0.28.0-rc.0", + "provisioner": "v0.41.0-rc.0", + "schema-manager": "v0.17.0-rc.0", + "ui-server": "v0.17.0-rc.0", + "webhook-server": "v0.17.0-rc.0" + } + }, + { + "version": "v2024.1.19-beta.1", + "hostDocs": true, + "info": { + "autoscaler": "v0.26.0-beta.1", + "cli": "v0.41.0-beta.1", + "dashboard": "v0.17.0-beta.1", + "installer": "v2024.1.19-beta.1", + "ops-manager": "v0.28.0-beta.1", + "provisioner": "v0.41.0-beta.1", + "schema-manager": "v0.17.0-beta.1", + "ui-server": "v0.17.0-beta.1", + "webhook-server": "v0.17.0-beta.1" + } + }, + { + "version": "v2024.1.7-beta.0", + "hostDocs": true, + "info": { + "autoscaler": "v0.26.0-beta.0", + "cli": "v0.41.0-beta.0", + "dashboard": "v0.17.0-beta.0", + "installer": "v2024.1.7-beta.0", + "ops-manager": "v0.28.0-beta.0", + "provisioner": "v0.41.0-beta.0", + "schema-manager": "v0.17.0-beta.0", + "ui-server": "v0.17.0-beta.0", + "webhook-server": "v0.17.0-beta.0" + } + }, { "version": "v2023.12.28", "hostDocs": true, @@ -175,7 +298,6 @@ { "version": "v2023.12.21", "hostDocs": true, - "show": true, "info": { "autoscaler": "v0.24.0", "cli": "v0.39.0", @@ -857,10 +979,6 @@ "version": "0.10.0", "hostDocs": true }, - { - "version": "0.9.0", - "hostDocs": true - }, { "version": "0.9.0-rc.2", "hostDocs": true @@ -874,7 +992,7 @@ "hostDocs": true }, { - "version": "0.8.0", + "version": "0.9.0", "hostDocs": true }, { @@ -889,6 +1007,10 @@ "version": "0.8.0-beta.0", "hostDocs": true }, + { + "version": "0.8.0", + "hostDocs": true + }, { "version": "0.7.1", "hostDocs": false @@ -898,18 +1020,18 @@ "hostDocs": false } ], - "latestVersion": "v2023.12.28", + "latestVersion": "v2024.3.16", "socialLinks": { "facebook": "https://facebook.com/appscode", "github": "https://github.com/kubedb", "linkedin": "https://www.linkedin.com/company/appscode", "slack": "https://kubernetes.slack.com/messages/C8149MREV", - "twitter": "https://twitter.com/KubeDB", + "twitter": "https://x.com/KubeDB", "youtube": "https://www.youtube.com/c/appscodeinc" }, "description": { - "html": "

KubeDB

\n\n

\"Go\n\"Build\n\"codecov\"\n\"Docker\n\"Slack\"\n\"mailing\n\"Twitter\"

\n\n
\n

Making running production-grade databases easy on Kubernetes

\n
\n\n

Running production quality database in Kubernetes can be tricky to say the least. In the early days of Kubernetes, replication controllers were used to run a single pod for a database. With the introduction of StatefulSet, it became easy to run a docker container for any database. But what about monitoring, taking periodic backups, restoring from backups or cloning from an existing database? KubeDB is a framework for writing operators for any database that support the following operational requirements:

\n\n
    \n
  • Create a database declaratively using CRD.
  • \n
  • Take one-off backups or periodic backups to various cloud stores, eg, S3, GCS, Azure etc.
  • \n
  • Restore from backup or clone any database.
  • \n
  • Native integration with Prometheus for monitoring via CoreOS Prometheus Operator.
  • \n
  • Apply deletion lock to avoid accidental deletion of database.
  • \n
  • Keep track of deleted databases, cleanup prior snapshots with a single command.
  • \n
  • Use cli to manage databases like kubectl for Kubernetes.
  • \n
\n\n

KubeDB is developed at AppsCode to run their SAAS platform on Kubernetes. Currently KubeDB includes support for following datastores:\n - Postgres\n - Elasticsearch\n - Etcd\n - MySQL / MariaDB / Percona Server for MySQL\n - MongoDB\n - Redis\n - Memcached

\n\n

Supported Versions

\n\n

Please pick a version of KubeDB that matches your Kubernetes installation.

\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
KubeDB VersionDocsKubernetes Version
0.12.0 (uses CRD)User Guide1.9.x +
0.11.0 (uses CRD)User Guide1.9.x +
0.10.0 (uses CRD)User Guide1.9.x +
0.9.0 (uses CRD)User Guide1.9.x +
0.8.0 (uses CRD)User Guide1.9.x +
0.6.0 (uses TPR)User Guide1.5.x - 1.7.x
\n\n

Installation

\n\n

To install KubeDB, please follow the guide here.

\n\n

Using KubeDB

\n\n

Want to learn how to use KubeDB? Please start here.

\n\n

KubeDB API Clients

\n\n

You can use KubeDB api clients to programmatically access its CRD objects. Here are the supported clients:

\n\n\n\n

Contribution guidelines

\n\n

Want to help improve KubeDB? Please start here.

\n\n
\n\n

KubeDB binaries collects anonymous usage statistics to help us learn how the software is being used and how we can improve it. To disable stats collection, run the operator with the flag --enable-analytics=false.

\n\n
\n\n

Support

\n\n

We use Slack for public discussions. To chit chat with us or the rest of the community, join us in the Kubernetes Slack team channel #kubedb. To sign up, use our Slack inviter.

\n\n

To receive product announcements, please join our mailing list or follow us on Twitter. Our mailing list is also used to share design docs shared via Google docs.

\n\n

If you have found a bug with KubeDB or want to request for new features, please file an issue.

\n", - "markdown": "# KubeDB\n\n[![Go Report Card](https://goreportcard.com/badge/kubedb.dev/cli)](https://goreportcard.com/report/kubedb.dev/cli)\n[![Build Status](https://travis-ci.org/kubedb/cli.svg?branch=master)](https://travis-ci.org/kubedb/cli)\n[![codecov](https://codecov.io/gh/kubedb/cli/branch/master/graph/badge.svg)](https://codecov.io/gh/kubedb/cli)\n[![Docker Pulls](https://img.shields.io/docker/pulls/kubedb/operator.svg)](https://hub.docker.com/r/kubedb/operator/)\n[![Slack](http://slack.kubernetes.io/badge.svg)](http://slack.kubernetes.io/#kubedb)\n[![mailing list](https://img.shields.io/badge/mailing_list-join-blue.svg)](https://groups.google.com/forum/#!forum/kubedb)\n[![Twitter](https://img.shields.io/twitter/follow/kubedb.svg?style=social&logo=twitter&label=Follow)](https://twitter.com/intent/follow?screen_name=kubedb)\n\n> Making running production-grade databases easy on Kubernetes\n\nRunning production quality database in Kubernetes can be tricky to say the least. In the early days of Kubernetes, replication controllers were used to run a single pod for a database. With the introduction of StatefulSet, it became easy to run a docker container for any database. But what about monitoring, taking periodic backups, restoring from backups or cloning from an existing database? KubeDB is a framework for writing operators for any database that support the following operational requirements:\n\n - Create a database declaratively using CRD.\n - Take one-off backups or periodic backups to various cloud stores, eg, S3, GCS, Azure etc.\n - Restore from backup or clone any database.\n - Native integration with Prometheus for monitoring via [CoreOS Prometheus Operator](https://github.com/coreos/prometheus-operator).\n - Apply deletion lock to avoid accidental deletion of database.\n - Keep track of deleted databases, cleanup prior snapshots with a single command.\n - Use cli to manage databases like kubectl for Kubernetes.\n\nKubeDB is developed at [AppsCode](https://twitter.com/AppsCodeHQ) to run their SAAS platform on Kubernetes. Currently KubeDB includes support for following datastores:\n - Postgres\n - Elasticsearch\n - Etcd\n - MySQL / MariaDB / Percona Server for MySQL\n - MongoDB\n - Redis\n - Memcached\n\n## Supported Versions\nPlease pick a version of KubeDB that matches your Kubernetes installation.\n\n| KubeDB Version | Docs | Kubernetes Version |\n|------------------------------------------------------------------------------------|---------------------------------------------------------------------|--------------------|\n| [0.12.0](https://github.com/kubedb/cli/releases/tag/0.12.0) (uses CRD) | [User Guide](https://kubedb.com/docs/0.12.0/) | 1.9.x + |\n| [0.11.0](https://github.com/kubedb/cli/releases/tag/0.11.0) (uses CRD) | [User Guide](https://kubedb.com/docs/0.11.0/) | 1.9.x + |\n| [0.10.0](https://github.com/kubedb/cli/releases/tag/0.10.0) (uses CRD) | [User Guide](https://kubedb.com/docs/0.10.0/) | 1.9.x + |\n| [0.9.0](https://github.com/kubedb/cli/releases/tag/0.9.0) (uses CRD) | [User Guide](https://kubedb.com/docs/0.9.0/) | 1.9.x + |\n| [0.8.0](https://github.com/kubedb/cli/releases/tag/0.8.0) (uses CRD) | [User Guide](https://kubedb.com/docs/0.8.0/) | 1.9.x + |\n| [0.6.0](https://github.com/kubedb/cli/releases/tag/0.6.0) (uses TPR) | [User Guide](https://github.com/kubedb/cli/tree/0.6.0/docs) | 1.5.x - 1.7.x |\n\n## Installation\nTo install KubeDB, please follow the guide [here](https://kubedb.com/docs/latest/setup/install/).\n\n## Using KubeDB\nWant to learn how to use KubeDB? Please start [here](https://kubedb.com/docs/latest/guides/).\n\n## KubeDB API Clients\nYou can use KubeDB api clients to programmatically access its CRD objects. Here are the supported clients:\n\n- Go: [https://github.com/kubedb/apimachinery](https://github.com/kubedb/apimachinery/tree/master/client/clientset/versioned)\n- Java: https://github.com/kubedb-client/java\n\n## Contribution guidelines\nWant to help improve KubeDB? Please start [here](https://kubedb.com/docs/latest/welcome/contributing/).\n\n---\n\n**KubeDB binaries collects anonymous usage statistics to help us learn how the software is being used and how we can improve it. To disable stats collection, run the operator with the flag** `--enable-analytics=false`.\n\n---\n\n## Support\nWe use Slack for public discussions. To chit chat with us or the rest of the community, join us in the [Kubernetes Slack team](https://kubernetes.slack.com/messages/C8149MREV/) channel `#kubedb`. To sign up, use our [Slack inviter](http://slack.kubernetes.io/).\n\nTo receive product announcements, please join our [mailing list](https://groups.google.com/forum/#!forum/kubedb) or follow us on [Twitter](https://twitter.com/KubeDB). Our mailing list is also used to share design docs shared via Google docs.\n\nIf you have found a bug with KubeDB or want to request for new features, please [file an issue](https://github.com/kubedb/project/issues/new).\n" + "html": "

KubeDB

\n\n

\"Go\n\"Build\n\"codecov\"\n\"Docker\n\"Slack\"\n\"mailing\n\"Twitter\"

\n\n
\n

Making running production-grade databases easy on Kubernetes

\n
\n\n

Running production quality database in Kubernetes can be tricky to say the least. In the early days of Kubernetes, replication controllers were used to run a single pod for a database. With the introduction of StatefulSet, it became easy to run a docker container for any database. But what about monitoring, taking periodic backups, restoring from backups or cloning from an existing database? KubeDB is a framework for writing operators for any database that support the following operational requirements:

\n\n
    \n
  • Create a database declaratively using CRD.
  • \n
  • Take one-off backups or periodic backups to various cloud stores, eg, S3, GCS, Azure etc.
  • \n
  • Restore from backup or clone any database.
  • \n
  • Native integration with Prometheus for monitoring via CoreOS Prometheus Operator.
  • \n
  • Apply deletion lock to avoid accidental deletion of database.
  • \n
  • Keep track of deleted databases, cleanup prior snapshots with a single command.
  • \n
  • Use cli to manage databases like kubectl for Kubernetes.
  • \n
\n\n

KubeDB is developed at AppsCode to run their SAAS platform on Kubernetes. Currently KubeDB includes support for following datastores:\n - Postgres\n - Elasticsearch\n - Etcd\n - MySQL / MariaDB / Percona Server for MySQL\n - MongoDB\n - Redis\n - Memcached

\n\n

Supported Versions

\n\n

Please pick a version of KubeDB that matches your Kubernetes installation.

\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
KubeDB VersionDocsKubernetes Version
0.12.0 (uses CRD)User Guide1.9.x +
0.11.0 (uses CRD)User Guide1.9.x +
0.10.0 (uses CRD)User Guide1.9.x +
0.9.0 (uses CRD)User Guide1.9.x +
0.8.0 (uses CRD)User Guide1.9.x +
0.6.0 (uses TPR)User Guide1.5.x - 1.7.x
\n\n

Installation

\n\n

To install KubeDB, please follow the guide here.

\n\n

Using KubeDB

\n\n

Want to learn how to use KubeDB? Please start here.

\n\n

KubeDB API Clients

\n\n

You can use KubeDB api clients to programmatically access its CRD objects. Here are the supported clients:

\n\n\n\n

Contribution guidelines

\n\n

Want to help improve KubeDB? Please start here.

\n\n
\n\n

KubeDB binaries collects anonymous usage statistics to help us learn how the software is being used and how we can improve it. To disable stats collection, run the operator with the flag --enable-analytics=false.

\n\n
\n\n

Support

\n\n

We use Slack for public discussions. To chit chat with us or the rest of the community, join us in the Kubernetes Slack team channel #kubedb. To sign up, use our Slack inviter.

\n\n

To receive product announcements, please join our mailing list or follow us on Twitter. Our mailing list is also used to share design docs shared via Google docs.

\n\n

If you have found a bug with KubeDB or want to request for new features, please file an issue.

\n", + "markdown": "# KubeDB\n\n[![Go Report Card](https://goreportcard.com/badge/kubedb.dev/cli)](https://goreportcard.com/report/kubedb.dev/cli)\n[![Build Status](https://travis-ci.org/kubedb/cli.svg?branch=master)](https://travis-ci.org/kubedb/cli)\n[![codecov](https://codecov.io/gh/kubedb/cli/branch/master/graph/badge.svg)](https://codecov.io/gh/kubedb/cli)\n[![Docker Pulls](https://img.shields.io/docker/pulls/kubedb/operator.svg)](https://hub.docker.com/r/kubedb/operator/)\n[![Slack](http://slack.kubernetes.io/badge.svg)](http://slack.kubernetes.io/#kubedb)\n[![mailing list](https://img.shields.io/badge/mailing_list-join-blue.svg)](https://groups.google.com/forum/#!forum/kubedb)\n[![Twitter](https://img.shields.io/twitter/follow/kubedb.svg?style=social&logo=twitter&label=Follow)](https://x.com/intent/follow?screen_name=kubedb)\n\n> Making running production-grade databases easy on Kubernetes\n\nRunning production quality database in Kubernetes can be tricky to say the least. In the early days of Kubernetes, replication controllers were used to run a single pod for a database. With the introduction of StatefulSet, it became easy to run a docker container for any database. But what about monitoring, taking periodic backups, restoring from backups or cloning from an existing database? KubeDB is a framework for writing operators for any database that support the following operational requirements:\n\n - Create a database declaratively using CRD.\n - Take one-off backups or periodic backups to various cloud stores, eg, S3, GCS, Azure etc.\n - Restore from backup or clone any database.\n - Native integration with Prometheus for monitoring via [CoreOS Prometheus Operator](https://github.com/coreos/prometheus-operator).\n - Apply deletion lock to avoid accidental deletion of database.\n - Keep track of deleted databases, cleanup prior snapshots with a single command.\n - Use cli to manage databases like kubectl for Kubernetes.\n\nKubeDB is developed at [AppsCode](https://x.com/AppsCodeHQ) to run their SAAS platform on Kubernetes. Currently KubeDB includes support for following datastores:\n - Postgres\n - Elasticsearch\n - Etcd\n - MySQL / MariaDB / Percona Server for MySQL\n - MongoDB\n - Redis\n - Memcached\n\n## Supported Versions\nPlease pick a version of KubeDB that matches your Kubernetes installation.\n\n| KubeDB Version | Docs | Kubernetes Version |\n|------------------------------------------------------------------------------------|---------------------------------------------------------------------|--------------------|\n| [0.12.0](https://github.com/kubedb/cli/releases/tag/0.12.0) (uses CRD) | [User Guide](https://kubedb.com/docs/0.12.0/) | 1.9.x + |\n| [0.11.0](https://github.com/kubedb/cli/releases/tag/0.11.0) (uses CRD) | [User Guide](https://kubedb.com/docs/0.11.0/) | 1.9.x + |\n| [0.10.0](https://github.com/kubedb/cli/releases/tag/0.10.0) (uses CRD) | [User Guide](https://kubedb.com/docs/0.10.0/) | 1.9.x + |\n| [0.9.0](https://github.com/kubedb/cli/releases/tag/0.9.0) (uses CRD) | [User Guide](https://kubedb.com/docs/0.9.0/) | 1.9.x + |\n| [0.8.0](https://github.com/kubedb/cli/releases/tag/0.8.0) (uses CRD) | [User Guide](https://kubedb.com/docs/0.8.0/) | 1.9.x + |\n| [0.6.0](https://github.com/kubedb/cli/releases/tag/0.6.0) (uses TPR) | [User Guide](https://github.com/kubedb/cli/tree/0.6.0/docs) | 1.5.x - 1.7.x |\n\n## Installation\nTo install KubeDB, please follow the guide [here](https://kubedb.com/docs/latest/setup/install/).\n\n## Using KubeDB\nWant to learn how to use KubeDB? Please start [here](https://kubedb.com/docs/latest/guides/).\n\n## KubeDB API Clients\nYou can use KubeDB api clients to programmatically access its CRD objects. Here are the supported clients:\n\n- Go: [https://github.com/kubedb/apimachinery](https://github.com/kubedb/apimachinery/tree/master/client/clientset/versioned)\n- Java: https://github.com/kubedb-client/java\n\n## Contribution guidelines\nWant to help improve KubeDB? Please start [here](https://kubedb.com/docs/latest/welcome/contributing/).\n\n---\n\n**KubeDB binaries collects anonymous usage statistics to help us learn how the software is being used and how we can improve it. To disable stats collection, run the operator with the flag** `--enable-analytics=false`.\n\n---\n\n## Support\nWe use Slack for public discussions. To chit chat with us or the rest of the community, join us in the [Kubernetes Slack team](https://kubernetes.slack.com/messages/C8149MREV/) channel `#kubedb`. To sign up, use our [Slack inviter](http://slack.kubernetes.io/).\n\nTo receive product announcements, please join our [mailing list](https://groups.google.com/forum/#!forum/kubedb) or follow us on [Twitter](https://x.com/KubeDB). Our mailing list is also used to share design docs shared via Google docs.\n\nIf you have found a bug with KubeDB or want to request for new features, please [file an issue](https://github.com/kubedb/project/issues/new).\n" }, "supportLinks": { "Support URL": "https://appscode.freshdesk.com", diff --git a/data/products/kubedb/databases/redis.json b/data/products/kubedb/databases/redis.json index 3833d286f..da22f82e8 100644 --- a/data/products/kubedb/databases/redis.json +++ b/data/products/kubedb/databases/redis.json @@ -60,6 +60,7 @@ "namespace": "demo" }, "spec": { + "replicas": 1, "version": "7.2.3", "storageType": "Durable", "storage": { diff --git a/data/products/kubedb/single-features-data/cost-effectiveness.json b/data/products/kubedb/single-features-data/cost-effectiveness.json index 2ab4de73e..bc97d5d41 100644 --- a/data/products/kubedb/single-features-data/cost-effectiveness.json +++ b/data/products/kubedb/single-features-data/cost-effectiveness.json @@ -1,12 +1,12 @@ { "id": "cost-effectiveness", "title": "Deploy & Manage Databases on Kubernetes FREE", - "meta": "KubeDB community edition is FREE to use on any supported Kubernetes engines. You can deploy and manage your database on Kubernetes FREE", + "meta": "KubeDB is FREE to use on any supported Kubernetes engines. You can deploy and manage your database on Kubernetes FREE", "innerContent": [ { "id": 1, "title": "Cost-effectiveness", - "description": "KubeDB community edition is FREE to use on any supported Kubernetes engines. You can deploy and manage your databases on Kubernetes using KubeDB. There is no up-front investment required. We offer a 30 days license FREE of cost to try KubeDB Enterprise edition.", + "description": "KubeDB is FREE to use on any supported Kubernetes engines. You can deploy and manage your databases on Kubernetes using KubeDB. There is no up-front investment required. We offer a 30 days license FREE of cost to try KubeDB.", "img": "/assets/images/features/illustrations/cost-effectoveness.jpg" }, { diff --git a/data/products/kubeform.json b/data/products/kubeform.json index 697763d05..d7b58ddcd 100644 --- a/data/products/kubeform.json +++ b/data/products/kubeform.json @@ -233,12 +233,12 @@ "github": "https://github.com/kubeform/kubeform", "linkedin": "https://www.linkedin.com/company/appscode", "slack": "https://appscode.slack.com/messages/CQ93JLRPA", - "twitter": "https://twitter.com/Kubeform", + "twitter": "https://x.com/Kubeform", "youtube": "https://www.youtube.com/c/appscodeinc" }, "description": { - "html": "

Kubeform

\n\n

\"Go\n\"Build\n\"codecov\"\n\"Docker\n\"Slack\"\n\"mailing\n\"Twitter\"

\n\n
\n

Making running production-grade databases easy on Kubernetes

\n
\n\n

Running production quality database in Kubernetes can be tricky to say the least. In the early days of Kubernetes, replication controllers were used to run a single pod for a database. With the introduction of StatefulSet, it became easy to run a docker container for any database. But what about monitoring, taking periodic backups, restoring from backups or cloning from an existing database? Kubeform is a framework for writing operators for any database that support the following operational requirements:

\n\n
    \n
  • Create a database declaratively using CRD.
  • \n
  • Take one-off backups or periodic backups to various cloud stores, eg, S3, GCS, Azure etc.
  • \n
  • Restore from backup or clone any database.
  • \n
  • Native integration with Prometheus for monitoring via CoreOS Prometheus Operator.
  • \n
  • Apply deletion lock to avoid accidental deletion of database.
  • \n
  • Keep track of deleted databases, cleanup prior snapshots with a single command.
  • \n
  • Use cli to manage databases like kubectl for Kubernetes.
  • \n
\n\n

Kubeform is developed at AppsCode to run their SAAS platform on Kubernetes. Currently Kubeform includes support for following datastores:\n - Postgres\n - Elasticsearch\n - Etcd\n - MySQL / MariaDB / Percona Server for MySQL\n - MongoDB\n - Redis\n - Memcached

\n\n

Supported Versions

\n\n

Please pick a version of Kubeform that matches your Kubernetes installation.

\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
Kubeform VersionDocsKubernetes Version
0.12.0 (uses CRD)User Guide1.9.x +
0.11.0 (uses CRD)User Guide1.9.x +
0.10.0 (uses CRD)User Guide1.9.x +
0.9.0 (uses CRD)User Guide1.9.x +
0.8.0 (uses CRD)User Guide1.9.x +
0.6.0 (uses TPR)User Guide1.5.x - 1.7.x
\n\n

Installation

\n\n

To install Kubeform, please follow the guide here.

\n\n

Using Kubeform

\n\n

Want to learn how to use Kubeform? Please start here.

\n\n

Kubeform API Clients

\n\n

You can use Kubeform api clients to programmatically access its CRD objects. Here are the supported clients:

\n\n\n\n

Contribution guidelines

\n\n

Want to help improve Kubeform? Please start here.

\n\n
\n\n

Kubeform binaries collects anonymous usage statistics to help us learn how the software is being used and how we can improve it. To disable stats collection, run the operator with the flag --enable-analytics=false.

\n\n
\n\n

Support

\n\n

We use Slack for public discussions. To chit chat with us or the rest of the community, join us in the Kubernetes Slack team channel #kubeform. To sign up, use our Slack inviter.

\n\n

To receive product announcements, please join our mailing list or follow us on Twitter. Our mailing list is also used to share design docs shared via Google docs.

\n\n

If you have found a bug with Kubeform or want to request for new features, please file an issue.

\n", - "markdown": "# Kubeform\n\n[![Go Report Card](https://goreportcard.com/badge/kubeform.dev/cli)](https://goreportcard.com/report/kubeform.dev/cli)\n[![Build Status](https://travis-ci.org/kubeform/cli.svg?branch=master)](https://travis-ci.org/kubeform/cli)\n[![codecov](https://codecov.io/gh/kubeform/cli/branch/master/graph/badge.svg)](https://codecov.io/gh/kubeform/cli)\n[![Docker Pulls](https://img.shields.io/docker/pulls/kubeform/operator.svg)](https://hub.docker.com/r/kubeform/operator/)\n[![Slack](http://slack.kubernetes.io/badge.svg)](http://slack.kubernetes.io/#kubeform)\n[![mailing list](https://img.shields.io/badge/mailing_list-join-blue.svg)](https://groups.google.com/forum/#!forum/kubeform)\n[![Twitter](https://img.shields.io/twitter/follow/kubeform.svg?style=social&logo=twitter&label=Follow)](https://twitter.com/intent/follow?screen_name=kubeform)\n\n> Making running production-grade databases easy on Kubernetes\n\nRunning production quality database in Kubernetes can be tricky to say the least. In the early days of Kubernetes, replication controllers were used to run a single pod for a database. With the introduction of StatefulSet, it became easy to run a docker container for any database. But what about monitoring, taking periodic backups, restoring from backups or cloning from an existing database? Kubeform is a framework for writing operators for any database that support the following operational requirements:\n\n - Create a database declaratively using CRD.\n - Take one-off backups or periodic backups to various cloud stores, eg, S3, GCS, Azure etc.\n - Restore from backup or clone any database.\n - Native integration with Prometheus for monitoring via [CoreOS Prometheus Operator](https://github.com/coreos/prometheus-operator).\n - Apply deletion lock to avoid accidental deletion of database.\n - Keep track of deleted databases, cleanup prior snapshots with a single command.\n - Use cli to manage databases like kubectl for Kubernetes.\n\nKubeform is developed at [AppsCode](https://twitter.com/AppsCodeHQ) to run their SAAS platform on Kubernetes. Currently Kubeform includes support for following datastores:\n - Postgres\n - Elasticsearch\n - Etcd\n - MySQL / MariaDB / Percona Server for MySQL\n - MongoDB\n - Redis\n - Memcached\n\n## Supported Versions\nPlease pick a version of Kubeform that matches your Kubernetes installation.\n\n| Kubeform Version | Docs | Kubernetes Version |\n|------------------------------------------------------------------------------------|---------------------------------------------------------------------|--------------------|\n| [0.12.0](https://github.com/kubeform/cli/releases/tag/0.12.0) (uses CRD) | [User Guide](https://kubeform.com/docs/0.12.0/) | 1.9.x + |\n| [0.11.0](https://github.com/kubeform/cli/releases/tag/0.11.0) (uses CRD) | [User Guide](https://kubeform.com/docs/0.11.0/) | 1.9.x + |\n| [0.10.0](https://github.com/kubeform/cli/releases/tag/0.10.0) (uses CRD) | [User Guide](https://kubeform.com/docs/0.10.0/) | 1.9.x + |\n| [0.9.0](https://github.com/kubeform/cli/releases/tag/0.9.0) (uses CRD) | [User Guide](https://kubeform.com/docs/0.9.0/) | 1.9.x + |\n| [0.8.0](https://github.com/kubeform/cli/releases/tag/0.8.0) (uses CRD) | [User Guide](https://kubeform.com/docs/0.8.0/) | 1.9.x + |\n| [0.6.0](https://github.com/kubeform/cli/releases/tag/0.6.0) (uses TPR) | [User Guide](https://github.com/kubeform/cli/tree/0.6.0/docs) | 1.5.x - 1.7.x |\n\n## Installation\nTo install Kubeform, please follow the guide [here](https://kubeform.com/docs/latest/setup/install/).\n\n## Using Kubeform\nWant to learn how to use Kubeform? Please start [here](https://kubeform.com/docs/latest/guides/).\n\n## Kubeform API Clients\nYou can use Kubeform api clients to programmatically access its CRD objects. Here are the supported clients:\n\n- Go: [https://github.com/kubeform/apimachinery](https://github.com/kubeform/apimachinery/tree/master/client/clientset/versioned)\n- Java: https://github.com/kubeform-client/java\n\n## Contribution guidelines\nWant to help improve Kubeform? Please start [here](https://kubeform.com/docs/latest/welcome/contributing/).\n\n---\n\n**Kubeform binaries collects anonymous usage statistics to help us learn how the software is being used and how we can improve it. To disable stats collection, run the operator with the flag** `--enable-analytics=false`.\n\n---\n\n## Support\nWe use Slack for public discussions. To chit chat with us or the rest of the community, join us in the [Kubernetes Slack team](https://kubernetes.slack.com/messages/C8149MREV/) channel `#kubeform`. To sign up, use our [Slack inviter](http://slack.kubernetes.io/).\n\nTo receive product announcements, please join our [mailing list](https://groups.google.com/forum/#!forum/kubeform) or follow us on [Twitter](https://twitter.com/Kubeform). Our mailing list is also used to share design docs shared via Google docs.\n\nIf you have found a bug with Kubeform or want to request for new features, please [file an issue](https://github.com/kubeform/project/issues/new).\n" + "html": "

Kubeform

\n\n

\"Go\n\"Build\n\"codecov\"\n\"Docker\n\"Slack\"\n\"mailing\n\"Twitter\"

\n\n
\n

Making running production-grade databases easy on Kubernetes

\n
\n\n

Running production quality database in Kubernetes can be tricky to say the least. In the early days of Kubernetes, replication controllers were used to run a single pod for a database. With the introduction of StatefulSet, it became easy to run a docker container for any database. But what about monitoring, taking periodic backups, restoring from backups or cloning from an existing database? Kubeform is a framework for writing operators for any database that support the following operational requirements:

\n\n
    \n
  • Create a database declaratively using CRD.
  • \n
  • Take one-off backups or periodic backups to various cloud stores, eg, S3, GCS, Azure etc.
  • \n
  • Restore from backup or clone any database.
  • \n
  • Native integration with Prometheus for monitoring via CoreOS Prometheus Operator.
  • \n
  • Apply deletion lock to avoid accidental deletion of database.
  • \n
  • Keep track of deleted databases, cleanup prior snapshots with a single command.
  • \n
  • Use cli to manage databases like kubectl for Kubernetes.
  • \n
\n\n

Kubeform is developed at AppsCode to run their SAAS platform on Kubernetes. Currently Kubeform includes support for following datastores:\n - Postgres\n - Elasticsearch\n - Etcd\n - MySQL / MariaDB / Percona Server for MySQL\n - MongoDB\n - Redis\n - Memcached

\n\n

Supported Versions

\n\n

Please pick a version of Kubeform that matches your Kubernetes installation.

\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
Kubeform VersionDocsKubernetes Version
0.12.0 (uses CRD)User Guide1.9.x +
0.11.0 (uses CRD)User Guide1.9.x +
0.10.0 (uses CRD)User Guide1.9.x +
0.9.0 (uses CRD)User Guide1.9.x +
0.8.0 (uses CRD)User Guide1.9.x +
0.6.0 (uses TPR)User Guide1.5.x - 1.7.x
\n\n

Installation

\n\n

To install Kubeform, please follow the guide here.

\n\n

Using Kubeform

\n\n

Want to learn how to use Kubeform? Please start here.

\n\n

Kubeform API Clients

\n\n

You can use Kubeform api clients to programmatically access its CRD objects. Here are the supported clients:

\n\n\n\n

Contribution guidelines

\n\n

Want to help improve Kubeform? Please start here.

\n\n
\n\n

Kubeform binaries collects anonymous usage statistics to help us learn how the software is being used and how we can improve it. To disable stats collection, run the operator with the flag --enable-analytics=false.

\n\n
\n\n

Support

\n\n

We use Slack for public discussions. To chit chat with us or the rest of the community, join us in the Kubernetes Slack team channel #kubeform. To sign up, use our Slack inviter.

\n\n

To receive product announcements, please join our mailing list or follow us on Twitter. Our mailing list is also used to share design docs shared via Google docs.

\n\n

If you have found a bug with Kubeform or want to request for new features, please file an issue.

\n", + "markdown": "# Kubeform\n\n[![Go Report Card](https://goreportcard.com/badge/kubeform.dev/cli)](https://goreportcard.com/report/kubeform.dev/cli)\n[![Build Status](https://travis-ci.org/kubeform/cli.svg?branch=master)](https://travis-ci.org/kubeform/cli)\n[![codecov](https://codecov.io/gh/kubeform/cli/branch/master/graph/badge.svg)](https://codecov.io/gh/kubeform/cli)\n[![Docker Pulls](https://img.shields.io/docker/pulls/kubeform/operator.svg)](https://hub.docker.com/r/kubeform/operator/)\n[![Slack](http://slack.kubernetes.io/badge.svg)](http://slack.kubernetes.io/#kubeform)\n[![mailing list](https://img.shields.io/badge/mailing_list-join-blue.svg)](https://groups.google.com/forum/#!forum/kubeform)\n[![Twitter](https://img.shields.io/twitter/follow/kubeform.svg?style=social&logo=twitter&label=Follow)](https://x.com/intent/follow?screen_name=kubeform)\n\n> Making running production-grade databases easy on Kubernetes\n\nRunning production quality database in Kubernetes can be tricky to say the least. In the early days of Kubernetes, replication controllers were used to run a single pod for a database. With the introduction of StatefulSet, it became easy to run a docker container for any database. But what about monitoring, taking periodic backups, restoring from backups or cloning from an existing database? Kubeform is a framework for writing operators for any database that support the following operational requirements:\n\n - Create a database declaratively using CRD.\n - Take one-off backups or periodic backups to various cloud stores, eg, S3, GCS, Azure etc.\n - Restore from backup or clone any database.\n - Native integration with Prometheus for monitoring via [CoreOS Prometheus Operator](https://github.com/coreos/prometheus-operator).\n - Apply deletion lock to avoid accidental deletion of database.\n - Keep track of deleted databases, cleanup prior snapshots with a single command.\n - Use cli to manage databases like kubectl for Kubernetes.\n\nKubeform is developed at [AppsCode](https://x.com/AppsCodeHQ) to run their SAAS platform on Kubernetes. Currently Kubeform includes support for following datastores:\n - Postgres\n - Elasticsearch\n - Etcd\n - MySQL / MariaDB / Percona Server for MySQL\n - MongoDB\n - Redis\n - Memcached\n\n## Supported Versions\nPlease pick a version of Kubeform that matches your Kubernetes installation.\n\n| Kubeform Version | Docs | Kubernetes Version |\n|------------------------------------------------------------------------------------|---------------------------------------------------------------------|--------------------|\n| [0.12.0](https://github.com/kubeform/cli/releases/tag/0.12.0) (uses CRD) | [User Guide](https://kubeform.com/docs/0.12.0/) | 1.9.x + |\n| [0.11.0](https://github.com/kubeform/cli/releases/tag/0.11.0) (uses CRD) | [User Guide](https://kubeform.com/docs/0.11.0/) | 1.9.x + |\n| [0.10.0](https://github.com/kubeform/cli/releases/tag/0.10.0) (uses CRD) | [User Guide](https://kubeform.com/docs/0.10.0/) | 1.9.x + |\n| [0.9.0](https://github.com/kubeform/cli/releases/tag/0.9.0) (uses CRD) | [User Guide](https://kubeform.com/docs/0.9.0/) | 1.9.x + |\n| [0.8.0](https://github.com/kubeform/cli/releases/tag/0.8.0) (uses CRD) | [User Guide](https://kubeform.com/docs/0.8.0/) | 1.9.x + |\n| [0.6.0](https://github.com/kubeform/cli/releases/tag/0.6.0) (uses TPR) | [User Guide](https://github.com/kubeform/cli/tree/0.6.0/docs) | 1.5.x - 1.7.x |\n\n## Installation\nTo install Kubeform, please follow the guide [here](https://kubeform.com/docs/latest/setup/install/).\n\n## Using Kubeform\nWant to learn how to use Kubeform? Please start [here](https://kubeform.com/docs/latest/guides/).\n\n## Kubeform API Clients\nYou can use Kubeform api clients to programmatically access its CRD objects. Here are the supported clients:\n\n- Go: [https://github.com/kubeform/apimachinery](https://github.com/kubeform/apimachinery/tree/master/client/clientset/versioned)\n- Java: https://github.com/kubeform-client/java\n\n## Contribution guidelines\nWant to help improve Kubeform? Please start [here](https://kubeform.com/docs/latest/welcome/contributing/).\n\n---\n\n**Kubeform binaries collects anonymous usage statistics to help us learn how the software is being used and how we can improve it. To disable stats collection, run the operator with the flag** `--enable-analytics=false`.\n\n---\n\n## Support\nWe use Slack for public discussions. To chit chat with us or the rest of the community, join us in the [Kubernetes Slack team](https://kubernetes.slack.com/messages/C8149MREV/) channel `#kubeform`. To sign up, use our [Slack inviter](http://slack.kubernetes.io/).\n\nTo receive product announcements, please join our [mailing list](https://groups.google.com/forum/#!forum/kubeform) or follow us on [Twitter](https://x.com/Kubeform). Our mailing list is also used to share design docs shared via Google docs.\n\nIf you have found a bug with Kubeform or want to request for new features, please [file an issue](https://github.com/kubeform/project/issues/new).\n" }, "supportLinks": { "Support URL": "https://appscode.freshdesk.com", diff --git a/data/products/kubeshield.json b/data/products/kubeshield.json index 36aa718af..ba00ae73a 100644 --- a/data/products/kubeshield.json +++ b/data/products/kubeshield.json @@ -143,12 +143,12 @@ "facebook": "https://facebook.com/appscode", "github": "https://github.com/kubeshield/scanner", "linkedin": "https://www.linkedin.com/company/appscode", - "twitter": "https://twitter.com/kubeshield", + "twitter": "https://x.com/kubeshield", "youtube": "https://www.youtube.com/c/appscodeinc" }, "description": { - "html": "

\"Go\n\"Build\n\"codecov\"\n\"Docker\n\"Slack\"\n\"Twitter\"

\n\n

Scanner

\n\n

Scanner by AppsCode is a Docker image scanner. It uses Clair for the static analysis of vulnerabilities in Docker containers. Using Scanner, you can backup Kubernetes volumes mounted in following types of workloads:

\n\n
    \n
  • Deployment
  • \n
  • DaemonSet
  • \n
  • ReplicaSet
  • \n
  • ReplicationController
  • \n
  • StatefulSet
  • \n
  • Pod
  • \n
  • Job
  • \n
  • CronJob
  • \n
  • Openshift DeploymentConfig
  • \n
\n\n

Supported Versions

\n\n

Please pick a version of Scanner that matches your Kubernetes installation.

\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
Scanner VersionDocsKubernetes Version
0.1.0 (uses CRD)User Guide1.9.x +
\n\n

Installation

\n\n

To install Scanner, please follow the guide here.

\n\n

Using Scanner

\n\n

Want to learn how to use Scanner? Please start here.

\n\n

Contribution guidelines

\n\n

Want to help improve Scanner? Please start here.

\n\n
\n\n

Scanner binaries collects anonymous usage statistics to help us learn how the software is being used and how we can improve it. To disable stats collection, run the scanner with the flag --enable-analytics=false.

\n\n
\n\n

Acknowledgement

\n\n
    \n
  • Many thanks to CoreOS for Clair project.
  • \n
\n\n

Support

\n\n

We use Slack for public discussions. To chit chat with us or the rest of the community, join us in the AppsCode Slack team channel #scanner. To sign up, use our Slack inviter.

\n\n

If you have found a bug with Scanner or want to request for new features, please file an issue.

\n", - "markdown": "[![Go Report Card](https://goreportcard.com/badge/github.com/kubeshield/scanner)](https://goreportcard.com/report/github.com/kubeshield/scanner)\n[![Build Status](https://travis-ci.org/kubeshield/scanner.svg?branch=master)](https://travis-ci.org/kubeshield/scanner)\n[![codecov](https://codecov.io/gh/kubeshield/scanner/branch/master/graph/badge.svg)](https://codecov.io/gh/kubeshield/scanner)\n[![Docker Pulls](https://img.shields.io/docker/pulls/kubeshield/scanner.svg)](https://hub.docker.com/r/kubeshield/scanner/)\n[![Slack](https://slack.appscode.com/badge.svg)](https://slack.appscode.com)\n[![Twitter](https://img.shields.io/twitter/follow/kubeshield.svg?style=social&logo=twitter&label=Follow)](https://twitter.com/intent/follow?screen_name=kubeshield)\n\n# Scanner\nScanner by AppsCode is a Docker image scanner. It uses [Clair](https://github.com/coreos/clair) for the static analysis of vulnerabilities in Docker containers. Using Scanner, you can backup Kubernetes volumes mounted in following types of workloads:\n\n- Deployment\n- DaemonSet\n- ReplicaSet\n- ReplicationController\n- StatefulSet\n- Pod\n- Job\n- CronJob\n- Openshift DeploymentConfig\n\n## Supported Versions\nPlease pick a version of Scanner that matches your Kubernetes installation.\n\n| Scanner Version | Docs | Kubernetes Version |\n|----------------------------------------------------------------------------|-------------------------------------------------------------|--------------------|\n| [0.1.0](https://github.com/kubeshield/scanner/releases/tag/0.1.0) (uses CRD) | [User Guide](https://appscode.com/products/scanner/0.1.0) | 1.9.x + |\n\n## Installation\n\nTo install Scanner, please follow the guide [here](https://appscode.com/products/scanner/0.1.0/setup/install).\n\n## Using Scanner\nWant to learn how to use Scanner? Please start [here](https://appscode.com/products/scanner/0.1.0).\n\n## Contribution guidelines\nWant to help improve Scanner? Please start [here](https://appscode.com/products/scanner/0.1.0/welcome/contributing).\n\n---\n\n**Scanner binaries collects anonymous usage statistics to help us learn how the software is being used and how we can improve it. To disable stats collection, run the scanner with the flag** `--enable-analytics=false`.\n\n---\n\n## Acknowledgement\n - Many thanks to CoreOS for [Clair](https://github.com/coreos/clair) project.\n\n## Support\nWe use Slack for public discussions. To chit chat with us or the rest of the community, join us in the [AppsCode Slack team](https://appscode.slack.com/messages/CAER85GPK/details/) channel `#scanner`. To sign up, use our [Slack inviter](https://slack.appscode.com/).\n\nIf you have found a bug with Scanner or want to request for new features, please [file an issue](https://github.com/kubeshield/scanner/issues/new).\n" + "html": "

\"Go\n\"Build\n\"codecov\"\n\"Docker\n\"Slack\"\n\"Twitter\"

\n\n

Scanner

\n\n

Scanner by AppsCode is a Docker image scanner. It uses Clair for the static analysis of vulnerabilities in Docker containers. Using Scanner, you can backup Kubernetes volumes mounted in following types of workloads:

\n\n
    \n
  • Deployment
  • \n
  • DaemonSet
  • \n
  • ReplicaSet
  • \n
  • ReplicationController
  • \n
  • StatefulSet
  • \n
  • Pod
  • \n
  • Job
  • \n
  • CronJob
  • \n
  • Openshift DeploymentConfig
  • \n
\n\n

Supported Versions

\n\n

Please pick a version of Scanner that matches your Kubernetes installation.

\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
Scanner VersionDocsKubernetes Version
0.1.0 (uses CRD)User Guide1.9.x +
\n\n

Installation

\n\n

To install Scanner, please follow the guide here.

\n\n

Using Scanner

\n\n

Want to learn how to use Scanner? Please start here.

\n\n

Contribution guidelines

\n\n

Want to help improve Scanner? Please start here.

\n\n
\n\n

Scanner binaries collects anonymous usage statistics to help us learn how the software is being used and how we can improve it. To disable stats collection, run the scanner with the flag --enable-analytics=false.

\n\n
\n\n

Acknowledgement

\n\n
    \n
  • Many thanks to CoreOS for Clair project.
  • \n
\n\n

Support

\n\n

We use Slack for public discussions. To chit chat with us or the rest of the community, join us in the AppsCode Slack team channel #scanner. To sign up, use our Slack inviter.

\n\n

If you have found a bug with Scanner or want to request for new features, please file an issue.

\n", + "markdown": "[![Go Report Card](https://goreportcard.com/badge/github.com/kubeshield/scanner)](https://goreportcard.com/report/github.com/kubeshield/scanner)\n[![Build Status](https://travis-ci.org/kubeshield/scanner.svg?branch=master)](https://travis-ci.org/kubeshield/scanner)\n[![codecov](https://codecov.io/gh/kubeshield/scanner/branch/master/graph/badge.svg)](https://codecov.io/gh/kubeshield/scanner)\n[![Docker Pulls](https://img.shields.io/docker/pulls/kubeshield/scanner.svg)](https://hub.docker.com/r/kubeshield/scanner/)\n[![Slack](https://slack.appscode.com/badge.svg)](https://slack.appscode.com)\n[![Twitter](https://img.shields.io/twitter/follow/kubeshield.svg?style=social&logo=twitter&label=Follow)](https://x.com/intent/follow?screen_name=kubeshield)\n\n# Scanner\nScanner by AppsCode is a Docker image scanner. It uses [Clair](https://github.com/coreos/clair) for the static analysis of vulnerabilities in Docker containers. Using Scanner, you can backup Kubernetes volumes mounted in following types of workloads:\n\n- Deployment\n- DaemonSet\n- ReplicaSet\n- ReplicationController\n- StatefulSet\n- Pod\n- Job\n- CronJob\n- Openshift DeploymentConfig\n\n## Supported Versions\nPlease pick a version of Scanner that matches your Kubernetes installation.\n\n| Scanner Version | Docs | Kubernetes Version |\n|----------------------------------------------------------------------------|-------------------------------------------------------------|--------------------|\n| [0.1.0](https://github.com/kubeshield/scanner/releases/tag/0.1.0) (uses CRD) | [User Guide](https://appscode.com/products/scanner/0.1.0) | 1.9.x + |\n\n## Installation\n\nTo install Scanner, please follow the guide [here](https://appscode.com/products/scanner/0.1.0/setup/install).\n\n## Using Scanner\nWant to learn how to use Scanner? Please start [here](https://appscode.com/products/scanner/0.1.0).\n\n## Contribution guidelines\nWant to help improve Scanner? Please start [here](https://appscode.com/products/scanner/0.1.0/welcome/contributing).\n\n---\n\n**Scanner binaries collects anonymous usage statistics to help us learn how the software is being used and how we can improve it. To disable stats collection, run the scanner with the flag** `--enable-analytics=false`.\n\n---\n\n## Acknowledgement\n - Many thanks to CoreOS for [Clair](https://github.com/coreos/clair) project.\n\n## Support\nWe use Slack for public discussions. To chit chat with us or the rest of the community, join us in the [AppsCode Slack team](https://appscode.slack.com/messages/CAER85GPK/details/) channel `#scanner`. To sign up, use our [Slack inviter](https://slack.appscode.com/).\n\nIf you have found a bug with Scanner or want to request for new features, please [file an issue](https://github.com/kubeshield/scanner/issues/new).\n" }, "supportLinks": { "Support URL": "https://appscode.freshdesk.com", diff --git a/data/products/kubestash.json b/data/products/kubestash.json index e33404682..b1c0807c2 100644 --- a/data/products/kubestash.json +++ b/data/products/kubestash.json @@ -263,12 +263,12 @@ "github": "https://github.com/kubestash", "linkedin": "https://www.linkedin.com/company/appscode", "slack": "https://appscode.slack.com/messages/C8NCX6N23", - "twitter": "https://twitter.com/KubeStash", + "twitter": "https://x.com/KubeStash", "youtube": "https://www.youtube.com/c/appscodeinc" }, "description": { - "html": "

\"Go\n\"Build\n\"codecov\"\n\"Docker\n\"Slack\"\n\"Twitter\"

\n\n

Stash

\n\n

Stash by AppsCode is a Kubernetes operator for restic. If you are running production workloads in Kubernetes, you might want to take backup of your disks. Traditional tools are too complex to setup and maintain in a dynamic compute environment like Kubernetes. restic is a backup program that is fast, efficient and secure with few moving parts. Stash is a CRD controller for Kubernetes built around restic to address these issues. Using Stash, you can backup Kubernetes volumes mounted in following types of workloads:\n- Deployment\n- DaemonSet\n- ReplicaSet\n- ReplicationController\n- StatefulSet

\n\n

Features

\n\n
    \n
  • Fast, secure, efficient backup of Kubernetes volumes (even in ReadWriteOnce mode).
  • \n
  • Automates configuration of restic for periodic backup.
  • \n
  • Store backed up files in various cloud storage provider, including S3, GCS, Azure, OpenStack Swift, DigitalOcean Spaces etc.
  • \n
  • Restore backup easily.
  • \n
  • Periodically check integrity of backed up data.
  • \n
  • Take backup in offline mode.
  • \n
  • Support workload initializer for faster backup.
  • \n
  • Prometheus ready metrics for backup process.
  • \n
\n\n

Supported Versions

\n\n

Please pick a version of Stash that matches your Kubernetes installation.

\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
Stash VersionDocsKubernetes Version
v0.9.0-rc.0 (uses CRD)User Guide1.11.x+
0.8.3 (uses CRD)User Guide1.9.x+
0.7.0 (uses CRD)User Guide1.8.x
0.6.4 (uses CRD)User Guide1.7.x
0.4.2 (uses TPR)User Guide1.5.x - 1.6.x
\n\n

Installation

\n\n

To install Stash, please follow the guide here.

\n\n

Using Stash

\n\n

Want to learn how to use Stash? Please start here.

\n\n

Stash API Clients

\n\n

You can use Stash api clients to programmatically access its objects. Here are the supported clients:

\n\n\n\n

Contribution guidelines

\n\n

Want to help improve Stash? Please start here.

\n\n
\n\n

Stash binaries collects anonymous usage statistics to help us learn how the software is being used and how we can improve it. To disable stats collection, run the operator with the flag --enable-analytics=false.

\n\n
\n\n

Acknowledgement

\n\n\n\n

Support

\n\n

We use Slack for public discussions. To chit chat with us or the rest of the community, join us in the AppsCode Slack team channel #stash. To sign up, use our Slack inviter.

\n\n

If you have found a bug with Stash or want to request for new features, please file an issue.

\n", - "markdown": "[![Go Report Card](https://goreportcard.com/badge/stash.appscode.dev/stash)](https://goreportcard.com/report/stash.appscode.dev/stash)\n[![Build Status](https://travis-ci.org/stashed/stash.svg?branch=master)](https://travis-ci.org/stashed/stash)\n[![codecov](https://codecov.io/gh/stashed/stash/branch/master/graph/badge.svg)](https://codecov.io/gh/stashed/stash)\n[![Docker Pulls](https://img.shields.io/docker/pulls/appscode/stash.svg)](https://hub.docker.com/r/appscode/stash/)\n[![Slack](https://slack.appscode.com/badge.svg)](https://slack.appscode.com)\n[![Twitter](https://img.shields.io/twitter/follow/appscodehq.svg?style=social&logo=twitter&label=Follow)](https://twitter.com/intent/follow?screen_name=AppsCodeHQ)\n\n# Stash\n Stash by AppsCode is a Kubernetes operator for [restic](https://restic.net). If you are running production workloads in Kubernetes, you might want to take backup of your disks. Traditional tools are too complex to setup and maintain in a dynamic compute environment like Kubernetes. `restic` is a backup program that is fast, efficient and secure with few moving parts. Stash is a CRD controller for Kubernetes built around `restic` to address these issues. Using Stash, you can backup Kubernetes volumes mounted in following types of workloads:\n- Deployment\n- DaemonSet\n- ReplicaSet\n- ReplicationController\n- StatefulSet\n\n## Features\n - Fast, secure, efficient backup of Kubernetes [volumes](https://kubernetes.io/docs/concepts/storage/volumes/) (even in `ReadWriteOnce` mode).\n - Automates configuration of `restic` for periodic backup.\n - Store backed up files in various cloud storage provider, including S3, GCS, Azure, OpenStack Swift, DigitalOcean Spaces etc.\n - Restore backup easily.\n - Periodically check integrity of backed up data.\n - Take backup in offline mode.\n - Support workload initializer for faster backup.\n - Prometheus ready metrics for backup process.\n\n## Supported Versions\nPlease pick a version of Stash that matches your Kubernetes installation.\n\n| Stash Version | Docs | Kubernetes Version |\n|-------------------------------------------------------------------------------------|-----------------------------------------------------------------|--------------------|\n| [v0.9.0-rc.0](https://github.com/stashed/stash/releases/tag/v0.9.0-rc.0) (uses CRD) | [User Guide](https://appscode.com/products/stash/v0.9.0-rc.0) | 1.11.x+ |\n| [0.8.3](https://github.com/stashed/stash/releases/tag/0.8.3) (uses CRD) | [User Guide](https://appscode.com/products/stash/0.8.3) | 1.9.x+ |\n| [0.7.0](https://github.com/stashed/stash/releases/tag/0.7.0) (uses CRD) | [User Guide](https://appscode.com/products/stash/0.7.0) | 1.8.x |\n| [0.6.4](https://github.com/stashed/stash/releases/tag/0.6.4) (uses CRD) | [User Guide](https://appscode.com/products/stash/0.6.4) | 1.7.x |\n| [0.4.2](https://github.com/stashed/stash/releases/tag/0.4.2) (uses TPR) | [User Guide](https://github.com/stashed/docs/tree/0.4.2/docs) | 1.5.x - 1.6.x |\n\n## Installation\n\nTo install Stash, please follow the guide [here](https://appscode.com/products/stash/v0.9.0-rc.0/setup/install).\n\n## Using Stash\nWant to learn how to use Stash? Please start [here](https://appscode.com/products/stash/v0.9.0-rc.0).\n\n## Stash API Clients\nYou can use Stash api clients to programmatically access its objects. Here are the supported clients:\n\n- Go: [https://github.com/stashed/stash](/client/clientset/versioned)\n- Java: https://github.com/stashed/java\n\n## Contribution guidelines\nWant to help improve Stash? Please start [here](https://appscode.com/products/stash/v0.9.0-rc.0/welcome/contributing).\n\n---\n\n**Stash binaries collects anonymous usage statistics to help us learn how the software is being used and how we can improve it. To disable stats collection, run the operator with the flag** `--enable-analytics=false`.\n\n---\n\n## Acknowledgement\n - Many thanks to [Alexander Neumann](https://github.com/fd0) for [Restic](https://restic.net) project.\n\n## Support\nWe use Slack for public discussions. To chit chat with us or the rest of the community, join us in the [AppsCode Slack team](https://appscode.slack.com/messages/C8NCX6N23/details/) channel `#stash`. To sign up, use our [Slack inviter](https://slack.appscode.com/).\n\nIf you have found a bug with Stash or want to request for new features, please [file an issue](https://github.com/stashed/stash/issues/new).\n" + "html": "

\"Go\n\"Build\n\"codecov\"\n\"Docker\n\"Slack\"\n\"Twitter\"

\n\n

Stash

\n\n

Stash by AppsCode is a Kubernetes operator for restic. If you are running production workloads in Kubernetes, you might want to take backup of your disks. Traditional tools are too complex to setup and maintain in a dynamic compute environment like Kubernetes. restic is a backup program that is fast, efficient and secure with few moving parts. Stash is a CRD controller for Kubernetes built around restic to address these issues. Using Stash, you can backup Kubernetes volumes mounted in following types of workloads:\n- Deployment\n- DaemonSet\n- ReplicaSet\n- ReplicationController\n- StatefulSet

\n\n

Features

\n\n
    \n
  • Fast, secure, efficient backup of Kubernetes volumes (even in ReadWriteOnce mode).
  • \n
  • Automates configuration of restic for periodic backup.
  • \n
  • Store backed up files in various cloud storage provider, including S3, GCS, Azure, OpenStack Swift, DigitalOcean Spaces etc.
  • \n
  • Restore backup easily.
  • \n
  • Periodically check integrity of backed up data.
  • \n
  • Take backup in offline mode.
  • \n
  • Support workload initializer for faster backup.
  • \n
  • Prometheus ready metrics for backup process.
  • \n
\n\n

Supported Versions

\n\n

Please pick a version of Stash that matches your Kubernetes installation.

\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
Stash VersionDocsKubernetes Version
v0.9.0-rc.0 (uses CRD)User Guide1.11.x+
0.8.3 (uses CRD)User Guide1.9.x+
0.7.0 (uses CRD)User Guide1.8.x
0.6.4 (uses CRD)User Guide1.7.x
0.4.2 (uses TPR)User Guide1.5.x - 1.6.x
\n\n

Installation

\n\n

To install Stash, please follow the guide here.

\n\n

Using Stash

\n\n

Want to learn how to use Stash? Please start here.

\n\n

Stash API Clients

\n\n

You can use Stash api clients to programmatically access its objects. Here are the supported clients:

\n\n\n\n

Contribution guidelines

\n\n

Want to help improve Stash? Please start here.

\n\n
\n\n

Stash binaries collects anonymous usage statistics to help us learn how the software is being used and how we can improve it. To disable stats collection, run the operator with the flag --enable-analytics=false.

\n\n
\n\n

Acknowledgement

\n\n\n\n

Support

\n\n

We use Slack for public discussions. To chit chat with us or the rest of the community, join us in the AppsCode Slack team channel #stash. To sign up, use our Slack inviter.

\n\n

If you have found a bug with Stash or want to request for new features, please file an issue.

\n", + "markdown": "[![Go Report Card](https://goreportcard.com/badge/stash.appscode.dev/stash)](https://goreportcard.com/report/stash.appscode.dev/stash)\n[![Build Status](https://travis-ci.org/stashed/stash.svg?branch=master)](https://travis-ci.org/stashed/stash)\n[![codecov](https://codecov.io/gh/stashed/stash/branch/master/graph/badge.svg)](https://codecov.io/gh/stashed/stash)\n[![Docker Pulls](https://img.shields.io/docker/pulls/appscode/stash.svg)](https://hub.docker.com/r/appscode/stash/)\n[![Slack](https://slack.appscode.com/badge.svg)](https://slack.appscode.com)\n[![Twitter](https://img.shields.io/twitter/follow/appscodehq.svg?style=social&logo=twitter&label=Follow)](https://x.com/intent/follow?screen_name=AppsCodeHQ)\n\n# Stash\n Stash by AppsCode is a Kubernetes operator for [restic](https://restic.net). If you are running production workloads in Kubernetes, you might want to take backup of your disks. Traditional tools are too complex to setup and maintain in a dynamic compute environment like Kubernetes. `restic` is a backup program that is fast, efficient and secure with few moving parts. Stash is a CRD controller for Kubernetes built around `restic` to address these issues. Using Stash, you can backup Kubernetes volumes mounted in following types of workloads:\n- Deployment\n- DaemonSet\n- ReplicaSet\n- ReplicationController\n- StatefulSet\n\n## Features\n - Fast, secure, efficient backup of Kubernetes [volumes](https://kubernetes.io/docs/concepts/storage/volumes/) (even in `ReadWriteOnce` mode).\n - Automates configuration of `restic` for periodic backup.\n - Store backed up files in various cloud storage provider, including S3, GCS, Azure, OpenStack Swift, DigitalOcean Spaces etc.\n - Restore backup easily.\n - Periodically check integrity of backed up data.\n - Take backup in offline mode.\n - Support workload initializer for faster backup.\n - Prometheus ready metrics for backup process.\n\n## Supported Versions\nPlease pick a version of Stash that matches your Kubernetes installation.\n\n| Stash Version | Docs | Kubernetes Version |\n|-------------------------------------------------------------------------------------|-----------------------------------------------------------------|--------------------|\n| [v0.9.0-rc.0](https://github.com/stashed/stash/releases/tag/v0.9.0-rc.0) (uses CRD) | [User Guide](https://appscode.com/products/stash/v0.9.0-rc.0) | 1.11.x+ |\n| [0.8.3](https://github.com/stashed/stash/releases/tag/0.8.3) (uses CRD) | [User Guide](https://appscode.com/products/stash/0.8.3) | 1.9.x+ |\n| [0.7.0](https://github.com/stashed/stash/releases/tag/0.7.0) (uses CRD) | [User Guide](https://appscode.com/products/stash/0.7.0) | 1.8.x |\n| [0.6.4](https://github.com/stashed/stash/releases/tag/0.6.4) (uses CRD) | [User Guide](https://appscode.com/products/stash/0.6.4) | 1.7.x |\n| [0.4.2](https://github.com/stashed/stash/releases/tag/0.4.2) (uses TPR) | [User Guide](https://github.com/stashed/docs/tree/0.4.2/docs) | 1.5.x - 1.6.x |\n\n## Installation\n\nTo install Stash, please follow the guide [here](https://appscode.com/products/stash/v0.9.0-rc.0/setup/install).\n\n## Using Stash\nWant to learn how to use Stash? Please start [here](https://appscode.com/products/stash/v0.9.0-rc.0).\n\n## Stash API Clients\nYou can use Stash api clients to programmatically access its objects. Here are the supported clients:\n\n- Go: [https://github.com/stashed/stash](/client/clientset/versioned)\n- Java: https://github.com/stashed/java\n\n## Contribution guidelines\nWant to help improve Stash? Please start [here](https://appscode.com/products/stash/v0.9.0-rc.0/welcome/contributing).\n\n---\n\n**Stash binaries collects anonymous usage statistics to help us learn how the software is being used and how we can improve it. To disable stats collection, run the operator with the flag** `--enable-analytics=false`.\n\n---\n\n## Acknowledgement\n - Many thanks to [Alexander Neumann](https://github.com/fd0) for [Restic](https://restic.net) project.\n\n## Support\nWe use Slack for public discussions. To chit chat with us or the rest of the community, join us in the [AppsCode Slack team](https://appscode.slack.com/messages/C8NCX6N23/details/) channel `#stash`. To sign up, use our [Slack inviter](https://slack.appscode.com/).\n\nIf you have found a bug with Stash or want to request for new features, please [file an issue](https://github.com/stashed/stash/issues/new).\n" }, "supportLinks": { "Support URL": "https://appscode.freshdesk.com", diff --git a/data/products/kubevault.json b/data/products/kubevault.json index 2339d63a5..f2a9d97d4 100644 --- a/data/products/kubevault.json +++ b/data/products/kubevault.json @@ -222,6 +222,48 @@ "hostDocs": false, "show": true }, + { + "version": "v2024.3.12", + "hostDocs": true, + "show": true, + "info": { + "cli": "v0.18.0", + "installer": "v2024.3.12", + "operator": "v0.18.0", + "unsealer": "v0.18.0" + } + }, + { + "version": "v2024.1.31", + "hostDocs": true, + "show": true, + "info": { + "cli": "v0.17.0", + "installer": "v2024.1.31", + "operator": "v0.17.0", + "unsealer": "v0.17.0" + } + }, + { + "version": "v2024.1.28-rc.1", + "hostDocs": true, + "info": { + "cli": "v0.17.0-rc.1", + "installer": "v2024.1.28-rc.1", + "operator": "v0.17.0-rc.1", + "unsealer": "v0.17.0-rc.1" + } + }, + { + "version": "v2024.1.26-rc.0", + "hostDocs": true, + "info": { + "cli": "v0.17.0-rc.0", + "installer": "v2024.1.26-rc.0", + "operator": "v0.17.0-rc.0", + "unsealer": "v0.17.0-rc.0" + } + }, { "version": "v2023.9.7", "hostDocs": true, @@ -388,13 +430,13 @@ } } ], - "latestVersion": "v2023.9.7", + "latestVersion": "v2024.3.12", "socialLinks": { "facebook": "https://facebook.com/appscode", "github": "https://github.com/kubevault", "linkedin": "https://www.linkedin.com/company/appscode", "slack": "https://appscode.slack.com/messages/CAG4P4A0G", - "twitter": "https://twitter.com/kubevault", + "twitter": "https://x.com/kubevault", "youtube": "https://www.youtube.com/c/appscodeinc" }, "description": { diff --git a/data/products/pharmer.json b/data/products/pharmer.json index 58795e600..3f81e2d7b 100644 --- a/data/products/pharmer.json +++ b/data/products/pharmer.json @@ -109,12 +109,12 @@ "facebook": "https://facebook.com/appscode", "github": "https://github.com/pharmer", "linkedin": "https://www.linkedin.com/company/appscode", - "twitter": "https://twitter.com/AppsCodeHQ", + "twitter": "https://x.com/AppsCodeHQ", "youtube": "https://www.youtube.com/c/appscodeinc" }, "description": { - "html": "

\"Go\n\"Build\n\"codecov\"\n\"Slack\"\n\"Twitter\"

\n\n

pharmer

\n\n

Kubernetes Cluster Manager for Kubeadm. Think kops using kubeadm!

\n\n

This project is spread over 3 repositories:

\n\n\n\n

User Guide

\n\n\n\n

Supported Versions Matrix

\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
pharmer versionk8s 1.9.xk8s 1.10.xk8s 1.11.xk8s 1.12.xk8s 1.13.xk8s 1.14.x
0.3.1
0.3.0
0.2.0
0.1.1
0.1.0-rc.5
0.1.0-rc.4
\n\n

Contribution guidelines

\n\n

Want to help improve Pharmer? Please start here.

\n\n
\n\n

Pharmer binaries collects anonymous usage statistics to help us learn how the software is being used and how we can improve it. To disable stats collection, run the operator with the flag --analytics=false.

\n\n
\n\n

Support

\n\n

We use Slack for public discussions. To chit chat with us or the rest of the community, join us in the Kubernetes Slack team channel #pharmer. To sign up, use our Slack inviter.

\n\n

To receive product announcements, please join our mailing list or follow us on Twitter. Our mailing list is also used to share design docs shared via Google docs.

\n\n

If you have found a bug with Pharmer or want to request for new features, please file an issue.

\n", - "markdown": "[![Go Report Card](https://goreportcard.com/badge/pharmer.dev/pharmer)](https://goreportcard.com/report/pharmer.dev/pharmer)\n[![Build Status](https://travis-ci.org/pharmer/pharmer.svg?branch=master)](https://travis-ci.org/pharmer/pharmer)\n[![codecov](https://codecov.io/gh/pharmer/pharmer/branch/master/graph/badge.svg)](https://codecov.io/gh/pharmer/pharmer)\n[![Slack](http://slack.kubernetes.io/badge.svg)](http://slack.kubernetes.io/#pharmer)\n[![Twitter](https://img.shields.io/twitter/follow/appscodehq.svg?style=social&logo=twitter&label=Follow)](https://twitter.com/intent/follow?screen_name=AppsCodeHQ)\n\n# pharmer\nKubernetes Cluster Manager for [Kubeadm](https://github.com/kubernetes/kubeadm). Think `kops using kubeadm`!\n\nThis project is spread over 3 repositories:\n\n- [pharmer/pharmer](https://pharmer.dev/pharmer): A [Kops](https://github.com/kubernetes/kops) [like](https://pharmer.dev/pharmer/blob/master/docs/reference/pharmer.md) cluster manager using `Kubeadm`. Supported cloud providers:\n - [Amazon Web Services](https://aws.amazon.com/)\n - [Amazon EKS](https://docs.aws.amazon.com/eks/latest/userguide/getting-started.html)\n - [DigitalOcean](https://www.digitalocean.com/)\n - [Google Cloud](https://cloud.google.com/compute/)\n - [Google Kubernetes Engine GKE](https://cloud.google.com/kubernetes-engine/)\n - [Linode](https://www.linode.com/)\n - [Microsoft Azure](https://azure.microsoft.com/en-us/)\n - [Azure Kubernetes Servic AKS](https://docs.microsoft.com/en-us/azure/aks/)\n - [Packet](https://www.packet.net/)\n \n\n- [pharmer/pre-k](https://github.com/pharmer/pre-k): Contains [a set of handy commands](https://github.com/pharmer/pre-k/blob/master/docs/reference/pre-k.md) that you run before `kubeadm init`.\n\n- [pharmer/cloud-controller-manager](https://pharmer.dev/cloud-controller-manager): Implements Cloud Controller manager for following cloud providers:\n - [Linode](https://www.linode.com/)\n - [Packet](https://www.packet.net/)\n - [Digitalocean](https://digitalocean.com)\n \n \n \n\n## User Guide\n - [Create & manage a Kubernetes cluster in AWS EC2](https://github.com/pharmer/docs/tree/master/docs/guides/aws/README.md)\n - [Create & manage a Kubernetes cluster in Amazon EKS](https://github.com/pharmer/docs/tree/master/docs/guides/eks/README.md)\n - [Create & manage a Kubernetes cluster in Google Cloud](https://github.com/pharmer/docs/tree/master/docs/guides/gce/README.md)\n - [Create & manage a Kubernetes cluster in Google Kubernetes Engine](https://github.com/pharmer/docs/tree/master/docs/guides/gke/README.md)\n - [Create & manage a Kubernetes cluster in Microsoft Azure](https://github.com/pharmer/docs/tree/master/docs/guides/azure/README.md)\n - [Create & manage a Kubernetes cluster in Azure Kubernetes Servic](https://github.com/pharmer/docs/tree/master/docs/guides/aks/README.md)\n - [Create & manage a Kubernetes cluster in DigitalOcean](https://github.com/pharmer/docs/tree/master/docs/guides/digitalocean/README.md)\n - [Create & manage a Kubernetes cluster in Linode](https://github.com/pharmer/docs/tree/master/docs/guides/linode/README.md)\n - [Create & manage a Kubernetes cluster in Packet](https://github.com/pharmer/docs/tree/master/docs/guides/packet/README.md)\n \n\n## Supported Versions Matrix\n\n| pharmer version | k8s 1.9.x | k8s 1.10.x | k8s 1.11.x | k8s 1.12.x | k8s 1.13.x | k8s 1.14.x\n|-----------------|-----------|------------|------------|------------|---------|---------------\n| 0.3.1 | ✗ | ✗ | ✗ |✗ | ✓| ✓\n| 0.3.0 | ✗ | ✗ | ✗ |✗ | ✓| ✓\n| 0.2.0 | ✗ | ✗ | ✗ | ✓ | ✓| ✗\n| 0.1.1 | ✗ | ✗ | ✓ | ✓ | ✗| ✗\n| 0.1.0-rc.5 | ✗ | ✓ | ✓ | ✗ | ✗| ✗\n| 0.1.0-rc.4 | ✓ | ✓ | ✗ | ✗ | ✗| ✗\n\n## Contribution guidelines\nWant to help improve Pharmer? Please start [here](/CONTRIBUTING.md).\n\n---\n\n**Pharmer binaries collects anonymous usage statistics to help us learn how the software is being used and how we can improve it. To disable stats collection, run the operator with the flag** `--analytics=false`.\n\n---\n\n## Support\nWe use Slack for public discussions. To chit chat with us or the rest of the community, join us in the [Kubernetes Slack team](https://kubernetes.slack.com/messages/C81LSKMPE/details/) channel `#pharmer`. To sign up, use our [Slack inviter](http://slack.kubernetes.io/).\n\nTo receive product announcements, please join our [mailing list](https://groups.google.com/forum/#!forum/pharmer) or follow us on [Twitter](https://twitter.com/AppsCodeHQ). Our mailing list is also used to share design docs shared via Google docs.\n\nIf you have found a bug with Pharmer or want to request for new features, please [file an issue](https://github.com/pharmer/project/issues/new).\n" + "html": "

\"Go\n\"Build\n\"codecov\"\n\"Slack\"\n\"Twitter\"

\n\n

pharmer

\n\n

Kubernetes Cluster Manager for Kubeadm. Think kops using kubeadm!

\n\n

This project is spread over 3 repositories:

\n\n\n\n

User Guide

\n\n\n\n

Supported Versions Matrix

\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
pharmer versionk8s 1.9.xk8s 1.10.xk8s 1.11.xk8s 1.12.xk8s 1.13.xk8s 1.14.x
0.3.1
0.3.0
0.2.0
0.1.1
0.1.0-rc.5
0.1.0-rc.4
\n\n

Contribution guidelines

\n\n

Want to help improve Pharmer? Please start here.

\n\n
\n\n

Pharmer binaries collects anonymous usage statistics to help us learn how the software is being used and how we can improve it. To disable stats collection, run the operator with the flag --analytics=false.

\n\n
\n\n

Support

\n\n

We use Slack for public discussions. To chit chat with us or the rest of the community, join us in the Kubernetes Slack team channel #pharmer. To sign up, use our Slack inviter.

\n\n

To receive product announcements, please join our mailing list or follow us on Twitter. Our mailing list is also used to share design docs shared via Google docs.

\n\n

If you have found a bug with Pharmer or want to request for new features, please file an issue.

\n", + "markdown": "[![Go Report Card](https://goreportcard.com/badge/pharmer.dev/pharmer)](https://goreportcard.com/report/pharmer.dev/pharmer)\n[![Build Status](https://travis-ci.org/pharmer/pharmer.svg?branch=master)](https://travis-ci.org/pharmer/pharmer)\n[![codecov](https://codecov.io/gh/pharmer/pharmer/branch/master/graph/badge.svg)](https://codecov.io/gh/pharmer/pharmer)\n[![Slack](http://slack.kubernetes.io/badge.svg)](http://slack.kubernetes.io/#pharmer)\n[![Twitter](https://img.shields.io/twitter/follow/appscodehq.svg?style=social&logo=twitter&label=Follow)](https://x.com/intent/follow?screen_name=AppsCodeHQ)\n\n# pharmer\nKubernetes Cluster Manager for [Kubeadm](https://github.com/kubernetes/kubeadm). Think `kops using kubeadm`!\n\nThis project is spread over 3 repositories:\n\n- [pharmer/pharmer](https://pharmer.dev/pharmer): A [Kops](https://github.com/kubernetes/kops) [like](https://pharmer.dev/pharmer/blob/master/docs/reference/pharmer.md) cluster manager using `Kubeadm`. Supported cloud providers:\n - [Amazon Web Services](https://aws.amazon.com/)\n - [Amazon EKS](https://docs.aws.amazon.com/eks/latest/userguide/getting-started.html)\n - [DigitalOcean](https://www.digitalocean.com/)\n - [Google Cloud](https://cloud.google.com/compute/)\n - [Google Kubernetes Engine GKE](https://cloud.google.com/kubernetes-engine/)\n - [Linode](https://www.linode.com/)\n - [Microsoft Azure](https://azure.microsoft.com/en-us/)\n - [Azure Kubernetes Servic AKS](https://docs.microsoft.com/en-us/azure/aks/)\n - [Packet](https://www.packet.net/)\n \n\n- [pharmer/pre-k](https://github.com/pharmer/pre-k): Contains [a set of handy commands](https://github.com/pharmer/pre-k/blob/master/docs/reference/pre-k.md) that you run before `kubeadm init`.\n\n- [pharmer/cloud-controller-manager](https://pharmer.dev/cloud-controller-manager): Implements Cloud Controller manager for following cloud providers:\n - [Linode](https://www.linode.com/)\n - [Packet](https://www.packet.net/)\n - [Digitalocean](https://digitalocean.com)\n \n \n \n\n## User Guide\n - [Create & manage a Kubernetes cluster in AWS EC2](https://github.com/pharmer/docs/tree/master/docs/guides/aws/README.md)\n - [Create & manage a Kubernetes cluster in Amazon EKS](https://github.com/pharmer/docs/tree/master/docs/guides/eks/README.md)\n - [Create & manage a Kubernetes cluster in Google Cloud](https://github.com/pharmer/docs/tree/master/docs/guides/gce/README.md)\n - [Create & manage a Kubernetes cluster in Google Kubernetes Engine](https://github.com/pharmer/docs/tree/master/docs/guides/gke/README.md)\n - [Create & manage a Kubernetes cluster in Microsoft Azure](https://github.com/pharmer/docs/tree/master/docs/guides/azure/README.md)\n - [Create & manage a Kubernetes cluster in Azure Kubernetes Servic](https://github.com/pharmer/docs/tree/master/docs/guides/aks/README.md)\n - [Create & manage a Kubernetes cluster in DigitalOcean](https://github.com/pharmer/docs/tree/master/docs/guides/digitalocean/README.md)\n - [Create & manage a Kubernetes cluster in Linode](https://github.com/pharmer/docs/tree/master/docs/guides/linode/README.md)\n - [Create & manage a Kubernetes cluster in Packet](https://github.com/pharmer/docs/tree/master/docs/guides/packet/README.md)\n \n\n## Supported Versions Matrix\n\n| pharmer version | k8s 1.9.x | k8s 1.10.x | k8s 1.11.x | k8s 1.12.x | k8s 1.13.x | k8s 1.14.x\n|-----------------|-----------|------------|------------|------------|---------|---------------\n| 0.3.1 | ✗ | ✗ | ✗ |✗ | ✓| ✓\n| 0.3.0 | ✗ | ✗ | ✗ |✗ | ✓| ✓\n| 0.2.0 | ✗ | ✗ | ✗ | ✓ | ✓| ✗\n| 0.1.1 | ✗ | ✗ | ✓ | ✓ | ✗| ✗\n| 0.1.0-rc.5 | ✗ | ✓ | ✓ | ✗ | ✗| ✗\n| 0.1.0-rc.4 | ✓ | ✓ | ✗ | ✗ | ✗| ✗\n\n## Contribution guidelines\nWant to help improve Pharmer? Please start [here](/CONTRIBUTING.md).\n\n---\n\n**Pharmer binaries collects anonymous usage statistics to help us learn how the software is being used and how we can improve it. To disable stats collection, run the operator with the flag** `--analytics=false`.\n\n---\n\n## Support\nWe use Slack for public discussions. To chit chat with us or the rest of the community, join us in the [Kubernetes Slack team](https://kubernetes.slack.com/messages/C81LSKMPE/details/) channel `#pharmer`. To sign up, use our [Slack inviter](http://slack.kubernetes.io/).\n\nTo receive product announcements, please join our [mailing list](https://groups.google.com/forum/#!forum/pharmer) or follow us on [Twitter](https://x.com/AppsCodeHQ). Our mailing list is also used to share design docs shared via Google docs.\n\nIf you have found a bug with Pharmer or want to request for new features, please [file an issue](https://github.com/pharmer/project/issues/new).\n" }, "supportLinks": { "Support URL": "https://appscode.freshdesk.com", diff --git a/data/products/searchlight.json b/data/products/searchlight.json index 306808442..2b2bda556 100644 --- a/data/products/searchlight.json +++ b/data/products/searchlight.json @@ -139,12 +139,12 @@ "facebook": "https://facebook.com/appscode", "github": "https://github.com/searchlight/searchlight", "linkedin": "https://www.linkedin.com/company/appscode", - "twitter": "https://twitter.com/AppsCodeHQ", + "twitter": "https://x.com/AppsCodeHQ", "youtube": "https://www.youtube.com/c/appscodeinc" }, "description": { - "html": "

\"Go\n\"Build\n\"codecov\"\n\"Docker\n\"Slack\"\n\"Twitter\"

\n\n

Searchlight

\n\n

\n\n

Searchlight by AppsCode is a Kubernetes operator for Icinga. If you are running production workloads in Kubernetes, you probably want to be alerted when things go wrong. Icinga periodically runs various checks on a Kubernetes cluster and sends notifications if detects an issue. It also nicely supplements whitebox monitoring tools like, Prometheus with blackbox monitoring can catch problems that are otherwise invisible, and also serves as a fallback in case internal systems completely fail. Searchlight is a CRD controller for Kubernetes built around Icinga to address these issues. Searchlight can do the following things for you:

\n\n
    \n
  • Periodically run various checks on a Kubernetes cluster and its nodes or pods.
  • \n
  • Includes a suite of check commands written specifically for Kubernetes.
  • \n
  • Searchlight can send notifications via Email, SMS or Chat.
  • \n
  • Supplements the whitebox monitoring tools like Prometheus.
  • \n
\n\n

Supported Versions

\n\n

Please pick a version of Searchlight that matches your Kubernetes installation.

\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
Searchlight VersionDocsKubernetes Version
8.0.0 (uses CRD)User Guide1.9.x+ (test/qa clusters)
7.0.0 (uses CRD)User Guide1.8.x
5.1.1 (uses CRD)User Guide1.7.x+
3.0.1 (uses TPR)User Guide1.5.x - 1.7.x
\n\n

Installation

\n\n

To install Searchlight, please follow the guide here.

\n\n

Using Searchlight

\n\n

Want to learn how to use Searchlight? Please start here.

\n\n

Searchlight API Clients

\n\n

You can use Searchlight api clients to programmatically access its CRD objects. Here are the supported clients:

\n\n\n\n

Contribution guidelines

\n\n

Want to help improve Searchlight? Please start here.

\n\n
\n\n

Searchlight binaries collects anonymous usage statistics to help us learn how the software is being used and\nhow we can improve it. To disable stats collection, run the operator with the flag --enable-analytics=false.

\n\n
\n\n

Acknowledgement

\n\n
    \n
  • Many thanks to Icinga project.
  • \n
\n\n

Support

\n\n

We use Slack for public discussions. To chit chat with us or the rest of the community, join us in the AppsCode Slack team channel #searchlight_. To sign up, use our Slack inviter.

\n\n

If you have found a bug with Searchlight or want to request for new features, please file an issue.

\n", - "markdown": "[![Go Report Card](https://goreportcard.com/badge/github.com/appscode/searchlight)](https://goreportcard.com/report/github.com/appscode/searchlight)\n[![Build Status](https://travis-ci.org/searchlight/searchlight.svg?branch=master)](https://travis-ci.org/searchlight/searchlight)\n[![codecov](https://codecov.io/gh/searchlight/searchlight/branch/master/graph/badge.svg)](https://codecov.io/gh/searchlight/searchlight)\n[![Docker Pulls](https://img.shields.io/docker/pulls/appscode/searchlight.svg)](https://hub.docker.com/r/appscode/searchlight/)\n[![Slack](https://slack.appscode.com/badge.svg)](https://slack.appscode.com)\n[![Twitter](https://img.shields.io/twitter/follow/appscodehq.svg?style=social&logo=twitter&label=Follow)](https://twitter.com/intent/follow?screen_name=AppsCodeHQ)\n\n# Searchlight\n\n\n\n\nSearchlight by AppsCode is a Kubernetes operator for [Icinga](https://www.icinga.com/). If you are running production workloads in Kubernetes, you probably want to be alerted when things go wrong. Icinga periodically runs various checks on a Kubernetes cluster and sends notifications if detects an issue. It also nicely supplements whitebox monitoring tools like, [Prometheus](https://prometheus.io/) with blackbox monitoring can catch problems that are otherwise invisible, and also serves as a fallback in case internal systems completely fail. Searchlight is a CRD controller for Kubernetes built around Icinga to address these issues. Searchlight can do the following things for you:\n\n - Periodically run various checks on a Kubernetes cluster and its nodes or pods.\n - Includes a [suite of check commands](/docs/reference/hyperalert/hyperalert.md) written specifically for Kubernetes.\n - Searchlight can send notifications via Email, SMS or Chat.\n - [Supplements](https://prometheus.io/docs/practices/alerting/#metamonitoring) the whitebox monitoring tools like [Prometheus](https://prometheus.io).\n\n## Supported Versions\nPlease pick a version of Searchlight that matches your Kubernetes installation.\n\n| Searchlight Version | Docs | Kubernetes Version |\n|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------|--------------------|\n| [8.0.0](https://github.com/appscode/searchlight/releases/tag/8.0.0) (uses CRD) | [User Guide](https://appscode.com/products/searchlight/8.0.0/welcome/)| 1.9.x+ (test/qa clusters) |\n| [7.0.0](https://github.com/appscode/searchlight/releases/tag/7.0.0) (uses CRD) | [User Guide](https://appscode.com/products/searchlight/7.0.0/welcome/) | 1.8.x |\n| [5.1.1](https://github.com/appscode/searchlight/releases/tag/5.1.1) (uses CRD) | [User Guide](https://appscode.com/products/searchlight/5.1.1/welcome/) | 1.7.x+ |\n| [3.0.1](https://github.com/appscode/searchlight/releases/tag/3.0.1) (uses TPR) | [User Guide](https://github.com/appscode/searchlight/tree/3.0.1/docs) | 1.5.x - 1.7.x |\n\n## Installation\nTo install Searchlight, please follow the guide [here](https://appscode.com/products/searchlight/8.0.0/setup/install).\n\n## Using Searchlight\nWant to learn how to use Searchlight? Please start [here](https://appscode.com/products/searchlight/8.0.0).\n\n## Searchlight API Clients\nYou can use Searchlight api clients to programmatically access its CRD objects. Here are the supported clients:\n\n- Go: [https://github.com/appscode/searchlight](/client/clientset/versioned)\n- Java: https://github.com/searchlight-client/java\n\n## Contribution guidelines\nWant to help improve Searchlight? Please start [here](https://appscode.com/products/searchlight/8.0.0/welcome/contributing).\n\n---\n\n**Searchlight binaries collects anonymous usage statistics to help us learn how the software is being used and\nhow we can improve it. To disable stats collection, run the operator with the flag** `--enable-analytics=false`.\n\n---\n\n## Acknowledgement\n - Many thanks to [Icinga](https://www.icinga.com/) project.\n\n## Support\nWe use Slack for public discussions. To chit chat with us or the rest of the community, join us in the [AppsCode Slack team](https://appscode.slack.com/messages/C8M7LT2QK/details/) channel `#searchlight_`. To sign up, use our [Slack inviter](https://slack.appscode.com/).\n\nIf you have found a bug with Searchlight or want to request for new features, please [file an issue](https://github.com/appscode/searchlight/issues/new).\n\n" + "html": "

\"Go\n\"Build\n\"codecov\"\n\"Docker\n\"Slack\"\n\"Twitter\"

\n\n

Searchlight

\n\n

\n\n

Searchlight by AppsCode is a Kubernetes operator for Icinga. If you are running production workloads in Kubernetes, you probably want to be alerted when things go wrong. Icinga periodically runs various checks on a Kubernetes cluster and sends notifications if detects an issue. It also nicely supplements whitebox monitoring tools like, Prometheus with blackbox monitoring can catch problems that are otherwise invisible, and also serves as a fallback in case internal systems completely fail. Searchlight is a CRD controller for Kubernetes built around Icinga to address these issues. Searchlight can do the following things for you:

\n\n
    \n
  • Periodically run various checks on a Kubernetes cluster and its nodes or pods.
  • \n
  • Includes a suite of check commands written specifically for Kubernetes.
  • \n
  • Searchlight can send notifications via Email, SMS or Chat.
  • \n
  • Supplements the whitebox monitoring tools like Prometheus.
  • \n
\n\n

Supported Versions

\n\n

Please pick a version of Searchlight that matches your Kubernetes installation.

\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
Searchlight VersionDocsKubernetes Version
8.0.0 (uses CRD)User Guide1.9.x+ (test/qa clusters)
7.0.0 (uses CRD)User Guide1.8.x
5.1.1 (uses CRD)User Guide1.7.x+
3.0.1 (uses TPR)User Guide1.5.x - 1.7.x
\n\n

Installation

\n\n

To install Searchlight, please follow the guide here.

\n\n

Using Searchlight

\n\n

Want to learn how to use Searchlight? Please start here.

\n\n

Searchlight API Clients

\n\n

You can use Searchlight api clients to programmatically access its CRD objects. Here are the supported clients:

\n\n\n\n

Contribution guidelines

\n\n

Want to help improve Searchlight? Please start here.

\n\n
\n\n

Searchlight binaries collects anonymous usage statistics to help us learn how the software is being used and\nhow we can improve it. To disable stats collection, run the operator with the flag --enable-analytics=false.

\n\n
\n\n

Acknowledgement

\n\n
    \n
  • Many thanks to Icinga project.
  • \n
\n\n

Support

\n\n

We use Slack for public discussions. To chit chat with us or the rest of the community, join us in the AppsCode Slack team channel #searchlight_. To sign up, use our Slack inviter.

\n\n

If you have found a bug with Searchlight or want to request for new features, please file an issue.

\n", + "markdown": "[![Go Report Card](https://goreportcard.com/badge/github.com/appscode/searchlight)](https://goreportcard.com/report/github.com/appscode/searchlight)\n[![Build Status](https://travis-ci.org/searchlight/searchlight.svg?branch=master)](https://travis-ci.org/searchlight/searchlight)\n[![codecov](https://codecov.io/gh/searchlight/searchlight/branch/master/graph/badge.svg)](https://codecov.io/gh/searchlight/searchlight)\n[![Docker Pulls](https://img.shields.io/docker/pulls/appscode/searchlight.svg)](https://hub.docker.com/r/appscode/searchlight/)\n[![Slack](https://slack.appscode.com/badge.svg)](https://slack.appscode.com)\n[![Twitter](https://img.shields.io/twitter/follow/appscodehq.svg?style=social&logo=twitter&label=Follow)](https://x.com/intent/follow?screen_name=AppsCodeHQ)\n\n# Searchlight\n\n\n\n\nSearchlight by AppsCode is a Kubernetes operator for [Icinga](https://www.icinga.com/). If you are running production workloads in Kubernetes, you probably want to be alerted when things go wrong. Icinga periodically runs various checks on a Kubernetes cluster and sends notifications if detects an issue. It also nicely supplements whitebox monitoring tools like, [Prometheus](https://prometheus.io/) with blackbox monitoring can catch problems that are otherwise invisible, and also serves as a fallback in case internal systems completely fail. Searchlight is a CRD controller for Kubernetes built around Icinga to address these issues. Searchlight can do the following things for you:\n\n - Periodically run various checks on a Kubernetes cluster and its nodes or pods.\n - Includes a [suite of check commands](/docs/reference/hyperalert/hyperalert.md) written specifically for Kubernetes.\n - Searchlight can send notifications via Email, SMS or Chat.\n - [Supplements](https://prometheus.io/docs/practices/alerting/#metamonitoring) the whitebox monitoring tools like [Prometheus](https://prometheus.io).\n\n## Supported Versions\nPlease pick a version of Searchlight that matches your Kubernetes installation.\n\n| Searchlight Version | Docs | Kubernetes Version |\n|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------|--------------------|\n| [8.0.0](https://github.com/appscode/searchlight/releases/tag/8.0.0) (uses CRD) | [User Guide](https://appscode.com/products/searchlight/8.0.0/welcome/)| 1.9.x+ (test/qa clusters) |\n| [7.0.0](https://github.com/appscode/searchlight/releases/tag/7.0.0) (uses CRD) | [User Guide](https://appscode.com/products/searchlight/7.0.0/welcome/) | 1.8.x |\n| [5.1.1](https://github.com/appscode/searchlight/releases/tag/5.1.1) (uses CRD) | [User Guide](https://appscode.com/products/searchlight/5.1.1/welcome/) | 1.7.x+ |\n| [3.0.1](https://github.com/appscode/searchlight/releases/tag/3.0.1) (uses TPR) | [User Guide](https://github.com/appscode/searchlight/tree/3.0.1/docs) | 1.5.x - 1.7.x |\n\n## Installation\nTo install Searchlight, please follow the guide [here](https://appscode.com/products/searchlight/8.0.0/setup/install).\n\n## Using Searchlight\nWant to learn how to use Searchlight? Please start [here](https://appscode.com/products/searchlight/8.0.0).\n\n## Searchlight API Clients\nYou can use Searchlight api clients to programmatically access its CRD objects. Here are the supported clients:\n\n- Go: [https://github.com/appscode/searchlight](/client/clientset/versioned)\n- Java: https://github.com/searchlight-client/java\n\n## Contribution guidelines\nWant to help improve Searchlight? Please start [here](https://appscode.com/products/searchlight/8.0.0/welcome/contributing).\n\n---\n\n**Searchlight binaries collects anonymous usage statistics to help us learn how the software is being used and\nhow we can improve it. To disable stats collection, run the operator with the flag** `--enable-analytics=false`.\n\n---\n\n## Acknowledgement\n - Many thanks to [Icinga](https://www.icinga.com/) project.\n\n## Support\nWe use Slack for public discussions. To chit chat with us or the rest of the community, join us in the [AppsCode Slack team](https://appscode.slack.com/messages/C8M7LT2QK/details/) channel `#searchlight_`. To sign up, use our [Slack inviter](https://slack.appscode.com/).\n\nIf you have found a bug with Searchlight or want to request for new features, please [file an issue](https://github.com/appscode/searchlight/issues/new).\n\n" }, "supportLinks": { "Support URL": "https://appscode.freshdesk.com", diff --git a/data/products/service-broker.json b/data/products/service-broker.json index 9e93a898e..c2bddb3d2 100644 --- a/data/products/service-broker.json +++ b/data/products/service-broker.json @@ -118,12 +118,12 @@ "facebook": "https://facebook.com/appscode", "github": "https://github.com/appscode/service-broker", "linkedin": "https://www.linkedin.com/company/appscode", - "twitter": "https://twitter.com/AppsCodeHQ", + "twitter": "https://x.com/AppsCodeHQ", "youtube": "https://www.youtube.com/c/appscodeinc" }, "description": { - "html": "

\"Go\n\"Build\n\"codecov\"\n\"Docker\n\"Slack\"\n\"Twitter\"

\n\n

AppsCode Service Broker

\n\n

Open Service Broker for installing AppsCode cloud services in Kubernetes cluster.

\n\n

Supported Versions

\n\n

Please pick a version of AppsCode Service Broker that matches your Kubernetes installation.

\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
AppsCode Service Broker VersionDocsKubernetes Version
0.3.1User Guide1.9.x+
\n\n

Installation

\n\n

To install AppsCode Serice Broker, please follow the guide here.

\n\n

Using Service Broker

\n\n

Want to learn how to use AppsCode Service Broker? Please start here.

\n\n

Contribution guidelines

\n\n

Want to help improve AppsCode Service Broker? Please start here.

\n\n
\n\n

AppsCode Service Broker binary collects anonymous usage statistics to help us learn how the software is being used and how we can improve it. To disable stats collection, run the operator with the flag --enable-analytics=false.

\n\n
\n\n

Support

\n\n

We use Slack for public discussions. To chit chat with us or the rest of the community, join us in the AppsCode Slack team channel #service-broker. To sign up, use our Slack inviter.

\n\n

If you have found a bug with Service Broker or want to request for new features, please file an issue.

\n", - "markdown": "[![Go Report Card](https://goreportcard.com/badge/github.com/appscode/service-broker)](https://goreportcard.com/report/github.com/appscode/service-broker)\n[![Build Status](https://travis-ci.org/appscode/service-broker.svg?branch=master)](https://travis-ci.org/appscode/service-broker)\n[![codecov](https://codecov.io/gh/appscode/service-broker/branch/master/graph/badge.svg)](https://codecov.io/gh/appscode/service-broker)\n[![Docker Pulls](https://img.shields.io/docker/pulls/appscode/service-broker.svg)](https://hub.docker.com/r/appscode/service-broker/)\n[![Slack](https://slack.appscode.com/badge.svg)](https://slack.appscode.com)\n[![Twitter](https://img.shields.io/twitter/follow/appscodehq.svg?style=social&logo=twitter&label=Follow)](https://twitter.com/intent/follow?screen_name=AppsCodeHQ)\n\n# AppsCode Service Broker\nOpen Service Broker for installing AppsCode cloud services in Kubernetes cluster.\n\n## Supported Versions\nPlease pick a version of AppsCode Service Broker that matches your Kubernetes installation.\n\n| AppsCode Service Broker Version | Docs | Kubernetes Version |\n|------------------------------------------------------------------------|------------------------------------------------------------------|--------------------|\n| [0.3.1](https://github.com/appscode/service-broker/releases/tag/0.3.1) | [User Guide](https://appscode.com/products/service-broker/0.3.1) | 1.9.x+ |\n\n## Installation\nTo install AppsCode Serice Broker, please follow the guide [here](https://appscode.com/products/service-broker/0.3.1/setup/install).\n\n## Using Service Broker\nWant to learn how to use AppsCode Service Broker? Please start [here](https://appscode.com/products/service-broker/0.3.1).\n\n## Contribution guidelines\nWant to help improve AppsCode Service Broker? Please start [here](https://appscode.com/products/service-broker/0.3.1/welcome/contributing/).\n\n---\n\n**AppsCode Service Broker binary collects anonymous usage statistics to help us learn how the software is being used and how we can improve it. To disable stats collection, run the operator with the flag** `--enable-analytics=false`.\n\n---\n\n## Support\nWe use Slack for public discussions. To chit chat with us or the rest of the community, join us in the [AppsCode Slack team](https://appscode.slack.com/messages/service-broker/) channel `#service-broker`. To sign up, use our [Slack inviter](https://slack.appscode.com/).\n\nIf you have found a bug with Service Broker or want to request for new features, please [file an issue](https://github.com/appscode/service-broker/issues/new).\n" + "html": "

\"Go\n\"Build\n\"codecov\"\n\"Docker\n\"Slack\"\n\"Twitter\"

\n\n

AppsCode Service Broker

\n\n

Open Service Broker for installing AppsCode cloud services in Kubernetes cluster.

\n\n

Supported Versions

\n\n

Please pick a version of AppsCode Service Broker that matches your Kubernetes installation.

\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
AppsCode Service Broker VersionDocsKubernetes Version
0.3.1User Guide1.9.x+
\n\n

Installation

\n\n

To install AppsCode Serice Broker, please follow the guide here.

\n\n

Using Service Broker

\n\n

Want to learn how to use AppsCode Service Broker? Please start here.

\n\n

Contribution guidelines

\n\n

Want to help improve AppsCode Service Broker? Please start here.

\n\n
\n\n

AppsCode Service Broker binary collects anonymous usage statistics to help us learn how the software is being used and how we can improve it. To disable stats collection, run the operator with the flag --enable-analytics=false.

\n\n
\n\n

Support

\n\n

We use Slack for public discussions. To chit chat with us or the rest of the community, join us in the AppsCode Slack team channel #service-broker. To sign up, use our Slack inviter.

\n\n

If you have found a bug with Service Broker or want to request for new features, please file an issue.

\n", + "markdown": "[![Go Report Card](https://goreportcard.com/badge/github.com/appscode/service-broker)](https://goreportcard.com/report/github.com/appscode/service-broker)\n[![Build Status](https://travis-ci.org/appscode/service-broker.svg?branch=master)](https://travis-ci.org/appscode/service-broker)\n[![codecov](https://codecov.io/gh/appscode/service-broker/branch/master/graph/badge.svg)](https://codecov.io/gh/appscode/service-broker)\n[![Docker Pulls](https://img.shields.io/docker/pulls/appscode/service-broker.svg)](https://hub.docker.com/r/appscode/service-broker/)\n[![Slack](https://slack.appscode.com/badge.svg)](https://slack.appscode.com)\n[![Twitter](https://img.shields.io/twitter/follow/appscodehq.svg?style=social&logo=twitter&label=Follow)](https://x.com/intent/follow?screen_name=AppsCodeHQ)\n\n# AppsCode Service Broker\nOpen Service Broker for installing AppsCode cloud services in Kubernetes cluster.\n\n## Supported Versions\nPlease pick a version of AppsCode Service Broker that matches your Kubernetes installation.\n\n| AppsCode Service Broker Version | Docs | Kubernetes Version |\n|------------------------------------------------------------------------|------------------------------------------------------------------|--------------------|\n| [0.3.1](https://github.com/appscode/service-broker/releases/tag/0.3.1) | [User Guide](https://appscode.com/products/service-broker/0.3.1) | 1.9.x+ |\n\n## Installation\nTo install AppsCode Serice Broker, please follow the guide [here](https://appscode.com/products/service-broker/0.3.1/setup/install).\n\n## Using Service Broker\nWant to learn how to use AppsCode Service Broker? Please start [here](https://appscode.com/products/service-broker/0.3.1).\n\n## Contribution guidelines\nWant to help improve AppsCode Service Broker? Please start [here](https://appscode.com/products/service-broker/0.3.1/welcome/contributing/).\n\n---\n\n**AppsCode Service Broker binary collects anonymous usage statistics to help us learn how the software is being used and how we can improve it. To disable stats collection, run the operator with the flag** `--enable-analytics=false`.\n\n---\n\n## Support\nWe use Slack for public discussions. To chit chat with us or the rest of the community, join us in the [AppsCode Slack team](https://appscode.slack.com/messages/service-broker/) channel `#service-broker`. To sign up, use our [Slack inviter](https://slack.appscode.com/).\n\nIf you have found a bug with Service Broker or want to request for new features, please [file an issue](https://github.com/appscode/service-broker/issues/new).\n" }, "supportLinks": { "Support URL": "https://appscode.freshdesk.com", diff --git a/data/products/stash-cli.json b/data/products/stash-cli.json index ae595d52c..ea68ff366 100644 --- a/data/products/stash-cli.json +++ b/data/products/stash-cli.json @@ -22,6 +22,166 @@ "hostDocs": false, "show": true }, + { + "version": "v0.33.0-rc.0", + "hostDocs": true, + "show": true, + "info": { + "stash": "v2024.2.9-rc.0", + "stash-community": "v0.33.0-rc.0", + "stash-elasticsearch": [ + "5.6.4-v29", + "6.2.4-v29", + "6.3.0-v29", + "6.4.0-v29", + "6.5.3-v29", + "6.8.0-v29", + "7.14.0-v15", + "7.2.0-v29", + "7.3.2-v29", + "8.2.0-v12" + ], + "stash-enterprise": "v0.33.0-rc.0", + "stash-etcd": [ + "3.5.0-v16" + ], + "stash-installer": "v2024.2.9-rc.0", + "stash-kubedump": [ + "0.1.0-v12" + ], + "stash-mariadb": [ + "10.5.8-v23" + ], + "stash-mongodb": [ + "3.4.17-v29", + "3.4.22-v29", + "3.6.13-v29", + "3.6.8-v29", + "4.0.11-v29", + "4.0.3-v29", + "4.0.5-v29", + "4.1.13-v29", + "4.1.4-v29", + "4.1.7-v29", + "4.2.3-v29", + "4.4.6-v20", + "5.0.15-v2", + "5.0.3-v17", + "6.0.5-v5" + ], + "stash-mysql": [ + "5.7.25-v29", + "8.0.14-v29", + "8.0.21-v23", + "8.0.3-v29" + ], + "stash-nats": [ + "2.6.1-v17", + "2.8.2-v12" + ], + "stash-percona-xtradb": [ + "5.7-v24" + ], + "stash-postgres": [ + "10.14-v28", + "11.9-v28", + "12.4-v28", + "13.1-v25", + "14.0-v17", + "15.1-v9", + "9.6.19-v28" + ], + "stash-redis": [ + "5.0.13-v17", + "6.2.5-v17", + "7.0.5-v10" + ], + "stash-ui-server": "v0.14.0-rc.0", + "stash-vault": [ + "1.10.3-v9" + ] + } + }, + { + "version": "v0.33.0", + "hostDocs": true, + "show": true, + "info": { + "stash": "v2024.2.13", + "stash-community": "v0.33.0", + "stash-elasticsearch": [ + "5.6.4-v30", + "6.2.4-v30", + "6.3.0-v30", + "6.4.0-v30", + "6.5.3-v30", + "6.8.0-v30", + "7.14.0-v16", + "7.2.0-v30", + "7.3.2-v30", + "8.2.0-v13" + ], + "stash-enterprise": "v0.33.0", + "stash-etcd": [ + "3.5.0-v17" + ], + "stash-installer": "v2024.2.13", + "stash-kubedump": [ + "0.1.0-v13" + ], + "stash-mariadb": [ + "10.5.8-v24" + ], + "stash-mongodb": [ + "3.4.17-v30", + "3.4.22-v30", + "3.6.13-v30", + "3.6.8-v30", + "4.0.11-v30", + "4.0.3-v30", + "4.0.5-v30", + "4.1.13-v30", + "4.1.4-v30", + "4.1.7-v30", + "4.2.3-v30", + "4.4.6-v21", + "5.0.15-v3", + "5.0.3-v18", + "6.0.5-v6" + ], + "stash-mysql": [ + "5.7.25-v30", + "8.0.14-v30", + "8.0.21-v24", + "8.0.3-v30" + ], + "stash-nats": [ + "2.6.1-v18", + "2.8.2-v13" + ], + "stash-percona-xtradb": [ + "5.7-v25" + ], + "stash-postgres": [ + "10.14-v29", + "11.9-v29", + "12.4-v29", + "13.1-v26", + "14.0-v18", + "15.1-v10", + "9.6.19-v29" + ], + "stash-redis": [ + "5.0.13-v18", + "6.2.5-v18", + "7.0.5-v11" + ], + "stash-ui-server": "v0.14.0", + "stash-vault": [ + "1.10.3-v10" + ] + } + }, { "version": "v0.32.0", "hostDocs": true, @@ -2134,11 +2294,6 @@ "hostDocs": true, "show": true }, - { - "version": "v0.10.0", - "hostDocs": true, - "show": true - }, { "version": "v0.10.0-rc.2", "hostDocs": true, @@ -2162,6 +2317,11 @@ "version": "v0.10.0-beta.0", "hostDocs": true }, + { + "version": "v0.10.0", + "hostDocs": true, + "show": true + }, { "version": "v0.3.1", "hostDocs": true, @@ -2183,5 +2343,5 @@ "show": true } ], - "latestVersion": "v0.32.0" + "latestVersion": "v0.33.0-rc.0" } diff --git a/data/products/stash-elasticsearch.json b/data/products/stash-elasticsearch.json index a5b85d760..0a499c9c8 100644 --- a/data/products/stash-elasticsearch.json +++ b/data/products/stash-elasticsearch.json @@ -27,6 +27,16 @@ "hostDocs": false, "show": true }, + { + "version": "8.2.0-v13", + "hostDocs": true, + "show": true + }, + { + "version": "8.2.0-v12", + "hostDocs": true, + "show": true + }, { "version": "8.2.0-v11", "hostDocs": true, @@ -82,6 +92,16 @@ "hostDocs": true, "show": true }, + { + "version": "7.14.0-v16", + "hostDocs": true, + "show": true + }, + { + "version": "7.14.0-v15", + "hostDocs": true, + "show": true + }, { "version": "7.14.0-v14", "hostDocs": true, @@ -152,6 +172,16 @@ "hostDocs": true, "show": true }, + { + "version": "7.3.2-v30", + "hostDocs": true, + "show": true + }, + { + "version": "7.3.2-v29", + "hostDocs": true, + "show": true + }, { "version": "7.3.2-v28", "hostDocs": true, @@ -287,11 +317,6 @@ "hostDocs": true, "show": true }, - { - "version": "7.3.2", - "hostDocs": true, - "show": true - }, { "version": "7.3.2-rc.20200827", "hostDocs": true, @@ -314,6 +339,21 @@ "version": "7.3.2-beta.20200708", "hostDocs": true }, + { + "version": "7.3.2", + "hostDocs": true, + "show": true + }, + { + "version": "7.2.0-v30", + "hostDocs": true, + "show": true + }, + { + "version": "7.2.0-v29", + "hostDocs": true, + "show": true + }, { "version": "7.2.0-v28", "hostDocs": true, @@ -449,11 +489,6 @@ "hostDocs": true, "show": true }, - { - "version": "7.2.0", - "hostDocs": true, - "show": true - }, { "version": "7.2.0-rc.20200827", "hostDocs": true, @@ -476,6 +511,21 @@ "version": "7.2.0-beta.20200708", "hostDocs": true }, + { + "version": "7.2.0", + "hostDocs": true, + "show": true + }, + { + "version": "6.8.0-v30", + "hostDocs": true, + "show": true + }, + { + "version": "6.8.0-v29", + "hostDocs": true, + "show": true + }, { "version": "6.8.0-v28", "hostDocs": true, @@ -611,11 +661,6 @@ "hostDocs": true, "show": true }, - { - "version": "6.8.0", - "hostDocs": true, - "show": true - }, { "version": "6.8.0-rc.20200827", "hostDocs": true, @@ -638,6 +683,21 @@ "version": "6.8.0-beta.20200708", "hostDocs": true }, + { + "version": "6.8.0", + "hostDocs": true, + "show": true + }, + { + "version": "6.5.3-v30", + "hostDocs": true, + "show": true + }, + { + "version": "6.5.3-v29", + "hostDocs": true, + "show": true + }, { "version": "6.5.3-v28", "hostDocs": true, @@ -773,11 +833,6 @@ "hostDocs": true, "show": true }, - { - "version": "6.5.3", - "hostDocs": true, - "show": true - }, { "version": "6.5.3-rc.20200827", "hostDocs": true, @@ -800,6 +855,21 @@ "version": "6.5.3-beta.20200708", "hostDocs": true }, + { + "version": "6.5.3", + "hostDocs": true, + "show": true + }, + { + "version": "6.4.0-v30", + "hostDocs": true, + "show": true + }, + { + "version": "6.4.0-v29", + "hostDocs": true, + "show": true + }, { "version": "6.4.0-v28", "hostDocs": true, @@ -935,11 +1005,6 @@ "hostDocs": true, "show": true }, - { - "version": "6.4.0", - "hostDocs": true, - "show": true - }, { "version": "6.4.0-rc.20200827", "hostDocs": true, @@ -962,6 +1027,21 @@ "version": "6.4.0-beta.20200708", "hostDocs": true }, + { + "version": "6.4.0", + "hostDocs": true, + "show": true + }, + { + "version": "6.3.0-v30", + "hostDocs": true, + "show": true + }, + { + "version": "6.3.0-v29", + "hostDocs": true, + "show": true + }, { "version": "6.3.0-v28", "hostDocs": true, @@ -1097,11 +1177,6 @@ "hostDocs": true, "show": true }, - { - "version": "6.3.0", - "hostDocs": true, - "show": true - }, { "version": "6.3.0-rc.20200827", "hostDocs": true, @@ -1124,6 +1199,21 @@ "version": "6.3.0-beta.20200708", "hostDocs": true }, + { + "version": "6.3.0", + "hostDocs": true, + "show": true + }, + { + "version": "6.2.4-v30", + "hostDocs": true, + "show": true + }, + { + "version": "6.2.4-v29", + "hostDocs": true, + "show": true + }, { "version": "6.2.4-v28", "hostDocs": true, @@ -1259,11 +1349,6 @@ "hostDocs": true, "show": true }, - { - "version": "6.2.4", - "hostDocs": true, - "show": true - }, { "version": "6.2.4-rc.20200827", "hostDocs": true, @@ -1286,6 +1371,21 @@ "version": "6.2.4-beta.20200708", "hostDocs": true }, + { + "version": "6.2.4", + "hostDocs": true, + "show": true + }, + { + "version": "5.6.4-v30", + "hostDocs": true, + "show": true + }, + { + "version": "5.6.4-v29", + "hostDocs": true, + "show": true + }, { "version": "5.6.4-v28", "hostDocs": true, @@ -1421,11 +1521,6 @@ "hostDocs": true, "show": true }, - { - "version": "5.6.4", - "hostDocs": true, - "show": true - }, { "version": "5.6.4-rc.20200827", "hostDocs": true, @@ -1447,7 +1542,12 @@ { "version": "5.6.4-beta.20200708", "hostDocs": true + }, + { + "version": "5.6.4", + "hostDocs": true, + "show": true } ], - "latestVersion": "8.2.0-v11" + "latestVersion": "8.2.0-v13" } diff --git a/data/products/stash-etcd.json b/data/products/stash-etcd.json index 6ae35576e..5f25ce8d5 100644 --- a/data/products/stash-etcd.json +++ b/data/products/stash-etcd.json @@ -27,6 +27,16 @@ "hostDocs": false, "show": true }, + { + "version": "3.5.0-v17", + "hostDocs": true, + "show": true + }, + { + "version": "3.5.0-v16", + "hostDocs": true, + "show": true + }, { "version": "3.5.0-v15", "hostDocs": true, @@ -103,5 +113,5 @@ "show": true } ], - "latestVersion": "3.5.0-v15" + "latestVersion": "3.5.0-v17" } diff --git a/data/products/stash-kubedump.json b/data/products/stash-kubedump.json index e4a36919d..1629756c4 100644 --- a/data/products/stash-kubedump.json +++ b/data/products/stash-kubedump.json @@ -27,6 +27,16 @@ "hostDocs": false, "show": true }, + { + "version": "0.1.0-v13", + "hostDocs": true, + "show": true + }, + { + "version": "0.1.0-v12", + "hostDocs": true, + "show": true + }, { "version": "0.1.0-v11", "hostDocs": true, @@ -83,5 +93,5 @@ "show": true } ], - "latestVersion": "0.1.0-v11" + "latestVersion": "0.1.0-v13" } diff --git a/data/products/stash-mariadb.json b/data/products/stash-mariadb.json index 28fb4aab1..e8a742b87 100644 --- a/data/products/stash-mariadb.json +++ b/data/products/stash-mariadb.json @@ -27,6 +27,16 @@ "hostDocs": false, "show": true }, + { + "version": "10.5.8-v24", + "hostDocs": true, + "show": true + }, + { + "version": "10.5.8-v23", + "hostDocs": true, + "show": true + }, { "version": "10.5.8-v21", "hostDocs": true, @@ -133,5 +143,5 @@ "show": true } ], - "latestVersion": "10.5.8-v21" + "latestVersion": "10.5.8-v24" } diff --git a/data/products/stash-mongodb.json b/data/products/stash-mongodb.json index 4cbf9e083..138237fb2 100644 --- a/data/products/stash-mongodb.json +++ b/data/products/stash-mongodb.json @@ -27,6 +27,16 @@ "hostDocs": false, "show": true }, + { + "version": "6.0.5-v6", + "hostDocs": true, + "show": true + }, + { + "version": "6.0.5-v5", + "hostDocs": true, + "show": true + }, { "version": "6.0.5-v4", "hostDocs": true, @@ -44,6 +54,16 @@ "version": "6.0.5-v1", "hostDocs": true }, + { + "version": "5.0.15-v3", + "hostDocs": true, + "show": true + }, + { + "version": "5.0.15-v2", + "hostDocs": true, + "show": true + }, { "version": "5.0.15-v1", "hostDocs": true, @@ -53,6 +73,16 @@ "version": "5.0.15", "hostDocs": true }, + { + "version": "5.0.3-v18", + "hostDocs": true, + "show": true + }, + { + "version": "5.0.3-v17", + "hostDocs": true, + "show": true + }, { "version": "5.0.3-v16", "hostDocs": true, @@ -133,6 +163,16 @@ "hostDocs": true, "show": true }, + { + "version": "4.4.6-v21", + "hostDocs": true, + "show": true + }, + { + "version": "4.4.6-v20", + "hostDocs": true, + "show": true + }, { "version": "4.4.6-v19", "hostDocs": true, @@ -228,6 +268,16 @@ "hostDocs": true, "show": true }, + { + "version": "4.2.3-v30", + "hostDocs": true, + "show": true + }, + { + "version": "4.2.3-v29", + "hostDocs": true, + "show": true + }, { "version": "4.2.3-v28", "hostDocs": true, @@ -363,11 +413,6 @@ "hostDocs": true, "show": true }, - { - "version": "4.2.3", - "hostDocs": true, - "show": true - }, { "version": "4.2.3-rc.20200827", "hostDocs": true, @@ -390,6 +435,21 @@ "version": "4.2.3-beta.20200708", "hostDocs": true }, + { + "version": "4.2.3", + "hostDocs": true, + "show": true + }, + { + "version": "4.1.13-v30", + "hostDocs": true, + "show": true + }, + { + "version": "4.1.13-v29", + "hostDocs": true, + "show": true + }, { "version": "4.1.13-v28", "hostDocs": true, @@ -530,6 +590,16 @@ "hostDocs": true, "show": true }, + { + "version": "4.1.7-v30", + "hostDocs": true, + "show": true + }, + { + "version": "4.1.7-v29", + "hostDocs": true, + "show": true + }, { "version": "4.1.7-v28", "hostDocs": true, @@ -665,11 +735,6 @@ "hostDocs": true, "show": true }, - { - "version": "4.1.7", - "hostDocs": true, - "show": true - }, { "version": "4.1.7-rc.20200827", "hostDocs": true, @@ -692,6 +757,21 @@ "version": "4.1.7-beta.20200708", "hostDocs": true }, + { + "version": "4.1.7", + "hostDocs": true, + "show": true + }, + { + "version": "4.1.4-v30", + "hostDocs": true, + "show": true + }, + { + "version": "4.1.4-v29", + "hostDocs": true, + "show": true + }, { "version": "4.1.4-v28", "hostDocs": true, @@ -827,11 +907,6 @@ "hostDocs": true, "show": true }, - { - "version": "4.1.4", - "hostDocs": true, - "show": true - }, { "version": "4.1.4-rc.20200827", "hostDocs": true, @@ -854,6 +929,11 @@ "version": "4.1.4-beta.20200708", "hostDocs": true }, + { + "version": "4.1.4", + "hostDocs": true, + "show": true + }, { "version": "4.1.1-rc.20200827", "hostDocs": true, @@ -876,6 +956,16 @@ "version": "4.1.1-beta.20200708", "hostDocs": true }, + { + "version": "4.0.11-v30", + "hostDocs": true, + "show": true + }, + { + "version": "4.0.11-v29", + "hostDocs": true, + "show": true + }, { "version": "4.0.11-v28", "hostDocs": true, @@ -1011,18 +1101,28 @@ "hostDocs": true, "show": true }, + { + "version": "4.0.11-rc.20200827", + "hostDocs": true, + "show": true + }, + { + "version": "4.0.11-rc.20200826", + "hostDocs": true, + "show": true + }, { "version": "4.0.11", "hostDocs": true, "show": true }, { - "version": "4.0.11-rc.20200827", + "version": "4.0.5-v30", "hostDocs": true, "show": true }, { - "version": "4.0.11-rc.20200826", + "version": "4.0.5-v29", "hostDocs": true, "show": true }, @@ -1161,11 +1261,6 @@ "hostDocs": true, "show": true }, - { - "version": "4.0.5", - "hostDocs": true, - "show": true - }, { "version": "4.0.5-rc.20200827", "hostDocs": true, @@ -1188,6 +1283,21 @@ "version": "4.0.5-beta.20200708", "hostDocs": true }, + { + "version": "4.0.5", + "hostDocs": true, + "show": true + }, + { + "version": "4.0.3-v30", + "hostDocs": true, + "show": true + }, + { + "version": "4.0.3-v29", + "hostDocs": true, + "show": true + }, { "version": "4.0.3-v28", "hostDocs": true, @@ -1323,11 +1433,6 @@ "hostDocs": true, "show": true }, - { - "version": "4.0.3", - "hostDocs": true, - "show": true - }, { "version": "4.0.3-rc.20200827", "hostDocs": true, @@ -1350,6 +1455,11 @@ "version": "4.0.3-beta.20200708", "hostDocs": true }, + { + "version": "4.0.3", + "hostDocs": true, + "show": true + }, { "version": "4.0.1-beta.20200826", "hostDocs": true @@ -1362,6 +1472,16 @@ "version": "4.0.1-beta.20200708", "hostDocs": true }, + { + "version": "3.6.13-v30", + "hostDocs": true, + "show": true + }, + { + "version": "3.6.13-v29", + "hostDocs": true, + "show": true + }, { "version": "3.6.13-v28", "hostDocs": true, @@ -1502,6 +1622,16 @@ "hostDocs": true, "show": true }, + { + "version": "3.6.8-v30", + "hostDocs": true, + "show": true + }, + { + "version": "3.6.8-v29", + "hostDocs": true, + "show": true + }, { "version": "3.6.8-v28", "hostDocs": true, @@ -1637,11 +1767,6 @@ "hostDocs": true, "show": true }, - { - "version": "3.6.8", - "hostDocs": true, - "show": true - }, { "version": "3.6.8-rc.20200827", "hostDocs": true, @@ -1664,6 +1789,11 @@ "version": "3.6.8-beta.20200708", "hostDocs": true }, + { + "version": "3.6.8", + "hostDocs": true, + "show": true + }, { "version": "3.6.1-rc.20200827", "hostDocs": true, @@ -1686,6 +1816,16 @@ "version": "3.6.1-beta.20200708", "hostDocs": true }, + { + "version": "3.4.22-v30", + "hostDocs": true, + "show": true + }, + { + "version": "3.4.22-v29", + "hostDocs": true, + "show": true + }, { "version": "3.4.22-v28", "hostDocs": true, @@ -1826,6 +1966,16 @@ "hostDocs": true, "show": true }, + { + "version": "3.4.17-v30", + "hostDocs": true, + "show": true + }, + { + "version": "3.4.17-v29", + "hostDocs": true, + "show": true + }, { "version": "3.4.17-v28", "hostDocs": true, @@ -2011,5 +2161,5 @@ "hostDocs": true } ], - "latestVersion": "6.0.5-v4" + "latestVersion": "6.0.5-v6" } diff --git a/data/products/stash-mysql.json b/data/products/stash-mysql.json index 29a1ff175..0d80bf9f6 100644 --- a/data/products/stash-mysql.json +++ b/data/products/stash-mysql.json @@ -27,6 +27,16 @@ "hostDocs": false, "show": true }, + { + "version": "8.0.21-v24", + "hostDocs": true, + "show": true + }, + { + "version": "8.0.21-v23", + "hostDocs": true, + "show": true + }, { "version": "8.0.21-v22", "hostDocs": true, @@ -137,6 +147,16 @@ "hostDocs": true, "show": true }, + { + "version": "8.0.14-v30", + "hostDocs": true, + "show": true + }, + { + "version": "8.0.14-v29", + "hostDocs": true, + "show": true + }, { "version": "8.0.14-v28", "hostDocs": true, @@ -272,11 +292,6 @@ "hostDocs": true, "show": true }, - { - "version": "8.0.14", - "hostDocs": true, - "show": true - }, { "version": "8.0.14-rc.20200827", "hostDocs": true, @@ -299,6 +314,21 @@ "version": "8.0.14-beta.20200708", "hostDocs": true }, + { + "version": "8.0.14", + "hostDocs": true, + "show": true + }, + { + "version": "8.0.3-v30", + "hostDocs": true, + "show": true + }, + { + "version": "8.0.3-v29", + "hostDocs": true, + "show": true + }, { "version": "8.0.3-v28", "hostDocs": true, @@ -434,11 +464,6 @@ "hostDocs": true, "show": true }, - { - "version": "8.0.3", - "hostDocs": true, - "show": true - }, { "version": "8.0.3-rc.20200827", "hostDocs": true, @@ -461,6 +486,21 @@ "version": "8.0.3-beta.20200708", "hostDocs": true }, + { + "version": "8.0.3", + "hostDocs": true, + "show": true + }, + { + "version": "5.7.25-v30", + "hostDocs": true, + "show": true + }, + { + "version": "5.7.25-v29", + "hostDocs": true, + "show": true + }, { "version": "5.7.25-v28", "hostDocs": true, @@ -596,11 +636,6 @@ "hostDocs": true, "show": true }, - { - "version": "5.7.25", - "hostDocs": true, - "show": true - }, { "version": "5.7.25-rc.20200827", "hostDocs": true, @@ -622,7 +657,12 @@ { "version": "5.7.25-beta.20200708", "hostDocs": true + }, + { + "version": "5.7.25", + "hostDocs": true, + "show": true } ], - "latestVersion": "8.0.21-v22" + "latestVersion": "8.0.21-v24" } diff --git a/data/products/stash-nats.json b/data/products/stash-nats.json index aa7356c5d..97d326d15 100644 --- a/data/products/stash-nats.json +++ b/data/products/stash-nats.json @@ -27,6 +27,16 @@ "hostDocs": false, "show": true }, + { + "version": "2.8.2-v13", + "hostDocs": true, + "show": true + }, + { + "version": "2.8.2-v12", + "hostDocs": true, + "show": true + }, { "version": "2.8.2-v11", "hostDocs": true, @@ -82,6 +92,16 @@ "hostDocs": true, "show": true }, + { + "version": "2.6.1-v18", + "hostDocs": true, + "show": true + }, + { + "version": "2.6.1-v17", + "hostDocs": true, + "show": true + }, { "version": "2.6.1-v16", "hostDocs": true, @@ -163,5 +183,5 @@ "show": true } ], - "latestVersion": "2.8.2-v11" + "latestVersion": "2.8.2-v13" } diff --git a/data/products/stash-percona-xtradb.json b/data/products/stash-percona-xtradb.json index a2c59b894..cd617c564 100644 --- a/data/products/stash-percona-xtradb.json +++ b/data/products/stash-percona-xtradb.json @@ -27,6 +27,16 @@ "hostDocs": false, "show": true }, + { + "version": "5.7-v25", + "hostDocs": true, + "show": true + }, + { + "version": "5.7-v24", + "hostDocs": true, + "show": true + }, { "version": "5.7-v23", "hostDocs": true, @@ -127,18 +137,13 @@ "hostDocs": true, "show": true }, - { - "version": "5.7-v2", - "hostDocs": true, - "show": true - }, { "version": "5.7.0-v2", "hostDocs": true, "show": true }, { - "version": "5.7-v1", + "version": "5.7-v2", "hostDocs": true, "show": true }, @@ -148,12 +153,7 @@ "show": true }, { - "version": "5.7.0", - "hostDocs": true, - "show": true - }, - { - "version": "5.7", + "version": "5.7-v1", "hostDocs": true, "show": true }, @@ -178,7 +178,17 @@ { "version": "5.7-beta.20200708", "hostDocs": true + }, + { + "version": "5.7.0", + "hostDocs": true, + "show": true + }, + { + "version": "5.7", + "hostDocs": true, + "show": true } ], - "latestVersion": "5.7-v23" + "latestVersion": "5.7-v25" } diff --git a/data/products/stash-postgres.json b/data/products/stash-postgres.json index 4af1c139f..17e5c839b 100644 --- a/data/products/stash-postgres.json +++ b/data/products/stash-postgres.json @@ -27,6 +27,16 @@ "hostDocs": false, "show": true }, + { + "version": "15.1-v10", + "hostDocs": true, + "show": true + }, + { + "version": "15.1-v9", + "hostDocs": true, + "show": true + }, { "version": "15.1-v8", "hostDocs": true, @@ -67,6 +77,16 @@ "hostDocs": true, "show": true }, + { + "version": "14.0-v18", + "hostDocs": true, + "show": true + }, + { + "version": "14.0-v17", + "hostDocs": true, + "show": true + }, { "version": "14.0-v16", "hostDocs": true, @@ -147,6 +167,16 @@ "hostDocs": true, "show": true }, + { + "version": "13.1-v26", + "hostDocs": true, + "show": true + }, + { + "version": "13.1-v25", + "hostDocs": true, + "show": true + }, { "version": "13.1-v24", "hostDocs": true, @@ -272,6 +302,16 @@ "hostDocs": true, "show": true }, + { + "version": "12.4-v29", + "hostDocs": true, + "show": true + }, + { + "version": "12.4-v28", + "hostDocs": true, + "show": true + }, { "version": "12.4-v27", "hostDocs": true, @@ -412,6 +452,16 @@ "hostDocs": true, "show": true }, + { + "version": "11.9-v29", + "hostDocs": true, + "show": true + }, + { + "version": "11.9-v28", + "hostDocs": true, + "show": true + }, { "version": "11.9-v27", "hostDocs": true, @@ -557,11 +607,6 @@ "hostDocs": true, "show": true }, - { - "version": "11.2", - "hostDocs": true, - "show": true - }, { "version": "11.2-rc.20200827", "hostDocs": true, @@ -585,12 +630,12 @@ "hostDocs": true }, { - "version": "11.1-v1", + "version": "11.2", "hostDocs": true, "show": true }, { - "version": "11.1", + "version": "11.1-v1", "hostDocs": true, "show": true }, @@ -616,6 +661,21 @@ "version": "11.1-beta.20200708", "hostDocs": true }, + { + "version": "11.1", + "hostDocs": true, + "show": true + }, + { + "version": "10.14-v29", + "hostDocs": true, + "show": true + }, + { + "version": "10.14-v28", + "hostDocs": true, + "show": true + }, { "version": "10.14-v27", "hostDocs": true, @@ -761,11 +821,6 @@ "hostDocs": true, "show": true }, - { - "version": "10.6", - "hostDocs": true, - "show": true - }, { "version": "10.6-rc.20200827", "hostDocs": true, @@ -789,12 +844,12 @@ "hostDocs": true }, { - "version": "10.2-v1", + "version": "10.6", "hostDocs": true, "show": true }, { - "version": "10.2", + "version": "10.2-v1", "hostDocs": true, "show": true }, @@ -820,6 +875,21 @@ "version": "10.2-beta.20200708", "hostDocs": true }, + { + "version": "10.2", + "hostDocs": true, + "show": true + }, + { + "version": "9.6.19-v29", + "hostDocs": true, + "show": true + }, + { + "version": "9.6.19-v28", + "hostDocs": true, + "show": true + }, { "version": "9.6.19-v27", "hostDocs": true, @@ -960,11 +1030,6 @@ "hostDocs": true, "show": true }, - { - "version": "9.6", - "hostDocs": true, - "show": true - }, { "version": "9.6-rc.20200827", "hostDocs": true, @@ -986,7 +1051,12 @@ { "version": "9.6-beta.20200708", "hostDocs": true + }, + { + "version": "9.6", + "hostDocs": true, + "show": true } ], - "latestVersion": "15.1-v8" + "latestVersion": "15.1-v10" } diff --git a/data/products/stash.json b/data/products/stash.json index bca7f536b..6ce5de8cc 100644 --- a/data/products/stash.json +++ b/data/products/stash.json @@ -181,6 +181,166 @@ "hostDocs": false, "show": true }, + { + "version": "v2024.2.13", + "hostDocs": true, + "show": true, + "info": { + "cli": "v0.33.0", + "community": "v0.33.0", + "elasticsearch": [ + "5.6.4-v30", + "6.2.4-v30", + "6.3.0-v30", + "6.4.0-v30", + "6.5.3-v30", + "6.8.0-v30", + "7.14.0-v16", + "7.2.0-v30", + "7.3.2-v30", + "8.2.0-v13" + ], + "enterprise": "v0.33.0", + "etcd": [ + "3.5.0-v17" + ], + "installer": "v2024.2.13", + "kubedump": [ + "0.1.0-v13" + ], + "mariadb": [ + "10.5.8-v24" + ], + "mongodb": [ + "3.4.17-v30", + "3.4.22-v30", + "3.6.13-v30", + "3.6.8-v30", + "4.0.11-v30", + "4.0.3-v30", + "4.0.5-v30", + "4.1.13-v30", + "4.1.4-v30", + "4.1.7-v30", + "4.2.3-v30", + "4.4.6-v21", + "5.0.15-v3", + "5.0.3-v18", + "6.0.5-v6" + ], + "mysql": [ + "5.7.25-v30", + "8.0.14-v30", + "8.0.21-v24", + "8.0.3-v30" + ], + "nats": [ + "2.6.1-v18", + "2.8.2-v13" + ], + "percona-xtradb": [ + "5.7-v25" + ], + "postgres": [ + "10.14-v29", + "11.9-v29", + "12.4-v29", + "13.1-v26", + "14.0-v18", + "15.1-v10", + "9.6.19-v29" + ], + "redis": [ + "5.0.13-v18", + "6.2.5-v18", + "7.0.5-v11" + ], + "ui-server": "v0.14.0", + "vault": [ + "1.10.3-v10" + ] + } + }, + { + "version": "v2024.2.9-rc.0", + "hostDocs": true, + "show": false, + "info": { + "cli": "v0.33.0-rc.0", + "community": "v0.33.0-rc.0", + "elasticsearch": [ + "5.6.4-v29", + "6.2.4-v29", + "6.3.0-v29", + "6.4.0-v29", + "6.5.3-v29", + "6.8.0-v29", + "7.14.0-v15", + "7.2.0-v29", + "7.3.2-v29", + "8.2.0-v12" + ], + "enterprise": "v0.33.0-rc.0", + "etcd": [ + "3.5.0-v16" + ], + "installer": "v2024.2.9-rc.0", + "kubedump": [ + "0.1.0-v12" + ], + "mariadb": [ + "10.5.8-v23" + ], + "mongodb": [ + "3.4.17-v29", + "3.4.22-v29", + "3.6.13-v29", + "3.6.8-v29", + "4.0.11-v29", + "4.0.3-v29", + "4.0.5-v29", + "4.1.13-v29", + "4.1.4-v29", + "4.1.7-v29", + "4.2.3-v29", + "4.4.6-v20", + "5.0.15-v2", + "5.0.3-v17", + "6.0.5-v5" + ], + "mysql": [ + "5.7.25-v29", + "8.0.14-v29", + "8.0.21-v23", + "8.0.3-v29" + ], + "nats": [ + "2.6.1-v17", + "2.8.2-v12" + ], + "percona-xtradb": [ + "5.7-v24" + ], + "postgres": [ + "10.14-v28", + "11.9-v28", + "12.4-v28", + "13.1-v25", + "14.0-v17", + "15.1-v9", + "9.6.19-v28" + ], + "redis": [ + "5.0.13-v17", + "6.2.5-v17", + "7.0.5-v10" + ], + "ui-server": "v0.14.0-rc.0", + "vault": [ + "1.10.3-v9" + ] + } + }, { "version": "v2023.10.9", "hostDocs": true, @@ -2526,6 +2686,16 @@ ] } }, + { + "version": "v2020.08.27-rc.0", + "hostDocs": true, + "info": { + "catalog": "v2020.08.27-rc.0", + "cli": "v0.10.0-rc.2", + "community": "v0.10.0-rc.2", + "enterprise": "v0.10.0-rc.2" + } + }, { "version": "v2020.08.27", "hostDocs": true, @@ -2537,16 +2707,6 @@ "enterprise": "v0.10.0" } }, - { - "version": "v2020.08.27-rc.0", - "hostDocs": true, - "info": { - "catalog": "v2020.08.27-rc.0", - "cli": "v0.10.0-rc.2", - "community": "v0.10.0-rc.2", - "enterprise": "v0.10.0-rc.2" - } - }, { "version": "v2020.08.26-rc.1", "hostDocs": true, @@ -2632,10 +2792,6 @@ "version": "0.8.0", "hostDocs": true }, - { - "version": "0.7.0", - "hostDocs": true - }, { "version": "0.7.0-rc.5", "hostDocs": true @@ -2660,6 +2816,10 @@ "version": "0.7.0-rc.0", "hostDocs": true }, + { + "version": "0.7.0", + "hostDocs": true + }, { "version": "0.6.4", "hostDocs": true @@ -2689,18 +2849,18 @@ "hostDocs": false } ], - "latestVersion": "v2023.10.9", + "latestVersion": "v2024.2.13", "socialLinks": { "facebook": "https://facebook.com/appscode", "github": "https://github.com/stashed", "linkedin": "https://www.linkedin.com/company/appscode", "slack": "https://appscode.slack.com/messages/C8NCX6N23", - "twitter": "https://twitter.com/KubeStash", + "twitter": "https://x.com/KubeStash", "youtube": "https://www.youtube.com/c/appscodeinc" }, "description": { - "html": "

\"Go\n\"Build\n\"codecov\"\n\"Docker\n\"Slack\"\n\"Twitter\"

\n\n

Stash

\n\n

Stash by AppsCode is a Kubernetes operator for restic. If you are running production workloads in Kubernetes, you might want to take backup of your disks. Traditional tools are too complex to setup and maintain in a dynamic compute environment like Kubernetes. restic is a backup program that is fast, efficient and secure with few moving parts. Stash is a CRD controller for Kubernetes built around restic to address these issues. Using Stash, you can backup Kubernetes volumes mounted in following types of workloads:\n- Deployment\n- DaemonSet\n- ReplicaSet\n- ReplicationController\n- StatefulSet

\n\n

Features

\n\n
    \n
  • Fast, secure, efficient backup of Kubernetes volumes (even in ReadWriteOnce mode).
  • \n
  • Automates configuration of restic for periodic backup.
  • \n
  • Store backed up files in various cloud storage provider, including S3, GCS, Azure, OpenStack Swift, DigitalOcean Spaces etc.
  • \n
  • Restore backup easily.
  • \n
  • Periodically check integrity of backed up data.
  • \n
  • Take backup in offline mode.
  • \n
  • Support workload initializer for faster backup.
  • \n
  • Prometheus ready metrics for backup process.
  • \n
\n\n

Supported Versions

\n\n

Please pick a version of Stash that matches your Kubernetes installation.

\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
Stash VersionDocsKubernetes Version
v0.9.0-rc.0 (uses CRD)User Guide1.11.x+
0.8.3 (uses CRD)User Guide1.9.x+
0.7.0 (uses CRD)User Guide1.8.x
0.6.4 (uses CRD)User Guide1.7.x
0.4.2 (uses TPR)User Guide1.5.x - 1.6.x
\n\n

Installation

\n\n

To install Stash, please follow the guide here.

\n\n

Using Stash

\n\n

Want to learn how to use Stash? Please start here.

\n\n

Stash API Clients

\n\n

You can use Stash api clients to programmatically access its objects. Here are the supported clients:

\n\n\n\n

Contribution guidelines

\n\n

Want to help improve Stash? Please start here.

\n\n
\n\n

Stash binaries collects anonymous usage statistics to help us learn how the software is being used and how we can improve it. To disable stats collection, run the operator with the flag --enable-analytics=false.

\n\n
\n\n

Acknowledgement

\n\n\n\n

Support

\n\n

We use Slack for public discussions. To chit chat with us or the rest of the community, join us in the AppsCode Slack team channel #stash. To sign up, use our Slack inviter.

\n\n

If you have found a bug with Stash or want to request for new features, please file an issue.

\n", - "markdown": "[![Go Report Card](https://goreportcard.com/badge/stash.appscode.dev/stash)](https://goreportcard.com/report/stash.appscode.dev/stash)\n[![Build Status](https://travis-ci.org/stashed/stash.svg?branch=master)](https://travis-ci.org/stashed/stash)\n[![codecov](https://codecov.io/gh/stashed/stash/branch/master/graph/badge.svg)](https://codecov.io/gh/stashed/stash)\n[![Docker Pulls](https://img.shields.io/docker/pulls/appscode/stash.svg)](https://hub.docker.com/r/appscode/stash/)\n[![Slack](https://slack.appscode.com/badge.svg)](https://slack.appscode.com)\n[![Twitter](https://img.shields.io/twitter/follow/appscodehq.svg?style=social&logo=twitter&label=Follow)](https://twitter.com/intent/follow?screen_name=AppsCodeHQ)\n\n# Stash\n Stash by AppsCode is a Kubernetes operator for [restic](https://restic.net). If you are running production workloads in Kubernetes, you might want to take backup of your disks. Traditional tools are too complex to setup and maintain in a dynamic compute environment like Kubernetes. `restic` is a backup program that is fast, efficient and secure with few moving parts. Stash is a CRD controller for Kubernetes built around `restic` to address these issues. Using Stash, you can backup Kubernetes volumes mounted in following types of workloads:\n- Deployment\n- DaemonSet\n- ReplicaSet\n- ReplicationController\n- StatefulSet\n\n## Features\n - Fast, secure, efficient backup of Kubernetes [volumes](https://kubernetes.io/docs/concepts/storage/volumes/) (even in `ReadWriteOnce` mode).\n - Automates configuration of `restic` for periodic backup.\n - Store backed up files in various cloud storage provider, including S3, GCS, Azure, OpenStack Swift, DigitalOcean Spaces etc.\n - Restore backup easily.\n - Periodically check integrity of backed up data.\n - Take backup in offline mode.\n - Support workload initializer for faster backup.\n - Prometheus ready metrics for backup process.\n\n## Supported Versions\nPlease pick a version of Stash that matches your Kubernetes installation.\n\n| Stash Version | Docs | Kubernetes Version |\n|-------------------------------------------------------------------------------------|-----------------------------------------------------------------|--------------------|\n| [v0.9.0-rc.0](https://github.com/stashed/stash/releases/tag/v0.9.0-rc.0) (uses CRD) | [User Guide](https://appscode.com/products/stash/v0.9.0-rc.0) | 1.11.x+ |\n| [0.8.3](https://github.com/stashed/stash/releases/tag/0.8.3) (uses CRD) | [User Guide](https://appscode.com/products/stash/0.8.3) | 1.9.x+ |\n| [0.7.0](https://github.com/stashed/stash/releases/tag/0.7.0) (uses CRD) | [User Guide](https://appscode.com/products/stash/0.7.0) | 1.8.x |\n| [0.6.4](https://github.com/stashed/stash/releases/tag/0.6.4) (uses CRD) | [User Guide](https://appscode.com/products/stash/0.6.4) | 1.7.x |\n| [0.4.2](https://github.com/stashed/stash/releases/tag/0.4.2) (uses TPR) | [User Guide](https://github.com/stashed/docs/tree/0.4.2/docs) | 1.5.x - 1.6.x |\n\n## Installation\n\nTo install Stash, please follow the guide [here](https://appscode.com/products/stash/v0.9.0-rc.0/setup/install).\n\n## Using Stash\nWant to learn how to use Stash? Please start [here](https://appscode.com/products/stash/v0.9.0-rc.0).\n\n## Stash API Clients\nYou can use Stash api clients to programmatically access its objects. Here are the supported clients:\n\n- Go: [https://github.com/stashed/stash](/client/clientset/versioned)\n- Java: https://github.com/stashed/java\n\n## Contribution guidelines\nWant to help improve Stash? Please start [here](https://appscode.com/products/stash/v0.9.0-rc.0/welcome/contributing).\n\n---\n\n**Stash binaries collects anonymous usage statistics to help us learn how the software is being used and how we can improve it. To disable stats collection, run the operator with the flag** `--enable-analytics=false`.\n\n---\n\n## Acknowledgement\n - Many thanks to [Alexander Neumann](https://github.com/fd0) for [Restic](https://restic.net) project.\n\n## Support\nWe use Slack for public discussions. To chit chat with us or the rest of the community, join us in the [AppsCode Slack team](https://appscode.slack.com/messages/C8NCX6N23/details/) channel `#stash`. To sign up, use our [Slack inviter](https://slack.appscode.com/).\n\nIf you have found a bug with Stash or want to request for new features, please [file an issue](https://github.com/stashed/stash/issues/new).\n" + "html": "

\"Go\n\"Build\n\"codecov\"\n\"Docker\n\"Slack\"\n\"Twitter\"

\n\n

Stash

\n\n

Stash by AppsCode is a Kubernetes operator for restic. If you are running production workloads in Kubernetes, you might want to take backup of your disks. Traditional tools are too complex to setup and maintain in a dynamic compute environment like Kubernetes. restic is a backup program that is fast, efficient and secure with few moving parts. Stash is a CRD controller for Kubernetes built around restic to address these issues. Using Stash, you can backup Kubernetes volumes mounted in following types of workloads:\n- Deployment\n- DaemonSet\n- ReplicaSet\n- ReplicationController\n- StatefulSet

\n\n

Features

\n\n
    \n
  • Fast, secure, efficient backup of Kubernetes volumes (even in ReadWriteOnce mode).
  • \n
  • Automates configuration of restic for periodic backup.
  • \n
  • Store backed up files in various cloud storage provider, including S3, GCS, Azure, OpenStack Swift, DigitalOcean Spaces etc.
  • \n
  • Restore backup easily.
  • \n
  • Periodically check integrity of backed up data.
  • \n
  • Take backup in offline mode.
  • \n
  • Support workload initializer for faster backup.
  • \n
  • Prometheus ready metrics for backup process.
  • \n
\n\n

Supported Versions

\n\n

Please pick a version of Stash that matches your Kubernetes installation.

\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
Stash VersionDocsKubernetes Version
v0.9.0-rc.0 (uses CRD)User Guide1.11.x+
0.8.3 (uses CRD)User Guide1.9.x+
0.7.0 (uses CRD)User Guide1.8.x
0.6.4 (uses CRD)User Guide1.7.x
0.4.2 (uses TPR)User Guide1.5.x - 1.6.x
\n\n

Installation

\n\n

To install Stash, please follow the guide here.

\n\n

Using Stash

\n\n

Want to learn how to use Stash? Please start here.

\n\n

Stash API Clients

\n\n

You can use Stash api clients to programmatically access its objects. Here are the supported clients:

\n\n\n\n

Contribution guidelines

\n\n

Want to help improve Stash? Please start here.

\n\n
\n\n

Stash binaries collects anonymous usage statistics to help us learn how the software is being used and how we can improve it. To disable stats collection, run the operator with the flag --enable-analytics=false.

\n\n
\n\n

Acknowledgement

\n\n\n\n

Support

\n\n

We use Slack for public discussions. To chit chat with us or the rest of the community, join us in the AppsCode Slack team channel #stash. To sign up, use our Slack inviter.

\n\n

If you have found a bug with Stash or want to request for new features, please file an issue.

\n", + "markdown": "[![Go Report Card](https://goreportcard.com/badge/stash.appscode.dev/stash)](https://goreportcard.com/report/stash.appscode.dev/stash)\n[![Build Status](https://travis-ci.org/stashed/stash.svg?branch=master)](https://travis-ci.org/stashed/stash)\n[![codecov](https://codecov.io/gh/stashed/stash/branch/master/graph/badge.svg)](https://codecov.io/gh/stashed/stash)\n[![Docker Pulls](https://img.shields.io/docker/pulls/appscode/stash.svg)](https://hub.docker.com/r/appscode/stash/)\n[![Slack](https://slack.appscode.com/badge.svg)](https://slack.appscode.com)\n[![Twitter](https://img.shields.io/twitter/follow/appscodehq.svg?style=social&logo=twitter&label=Follow)](https://x.com/intent/follow?screen_name=AppsCodeHQ)\n\n# Stash\n Stash by AppsCode is a Kubernetes operator for [restic](https://restic.net). If you are running production workloads in Kubernetes, you might want to take backup of your disks. Traditional tools are too complex to setup and maintain in a dynamic compute environment like Kubernetes. `restic` is a backup program that is fast, efficient and secure with few moving parts. Stash is a CRD controller for Kubernetes built around `restic` to address these issues. Using Stash, you can backup Kubernetes volumes mounted in following types of workloads:\n- Deployment\n- DaemonSet\n- ReplicaSet\n- ReplicationController\n- StatefulSet\n\n## Features\n - Fast, secure, efficient backup of Kubernetes [volumes](https://kubernetes.io/docs/concepts/storage/volumes/) (even in `ReadWriteOnce` mode).\n - Automates configuration of `restic` for periodic backup.\n - Store backed up files in various cloud storage provider, including S3, GCS, Azure, OpenStack Swift, DigitalOcean Spaces etc.\n - Restore backup easily.\n - Periodically check integrity of backed up data.\n - Take backup in offline mode.\n - Support workload initializer for faster backup.\n - Prometheus ready metrics for backup process.\n\n## Supported Versions\nPlease pick a version of Stash that matches your Kubernetes installation.\n\n| Stash Version | Docs | Kubernetes Version |\n|-------------------------------------------------------------------------------------|-----------------------------------------------------------------|--------------------|\n| [v0.9.0-rc.0](https://github.com/stashed/stash/releases/tag/v0.9.0-rc.0) (uses CRD) | [User Guide](https://appscode.com/products/stash/v0.9.0-rc.0) | 1.11.x+ |\n| [0.8.3](https://github.com/stashed/stash/releases/tag/0.8.3) (uses CRD) | [User Guide](https://appscode.com/products/stash/0.8.3) | 1.9.x+ |\n| [0.7.0](https://github.com/stashed/stash/releases/tag/0.7.0) (uses CRD) | [User Guide](https://appscode.com/products/stash/0.7.0) | 1.8.x |\n| [0.6.4](https://github.com/stashed/stash/releases/tag/0.6.4) (uses CRD) | [User Guide](https://appscode.com/products/stash/0.6.4) | 1.7.x |\n| [0.4.2](https://github.com/stashed/stash/releases/tag/0.4.2) (uses TPR) | [User Guide](https://github.com/stashed/docs/tree/0.4.2/docs) | 1.5.x - 1.6.x |\n\n## Installation\n\nTo install Stash, please follow the guide [here](https://appscode.com/products/stash/v0.9.0-rc.0/setup/install).\n\n## Using Stash\nWant to learn how to use Stash? Please start [here](https://appscode.com/products/stash/v0.9.0-rc.0).\n\n## Stash API Clients\nYou can use Stash api clients to programmatically access its objects. Here are the supported clients:\n\n- Go: [https://github.com/stashed/stash](/client/clientset/versioned)\n- Java: https://github.com/stashed/java\n\n## Contribution guidelines\nWant to help improve Stash? Please start [here](https://appscode.com/products/stash/v0.9.0-rc.0/welcome/contributing).\n\n---\n\n**Stash binaries collects anonymous usage statistics to help us learn how the software is being used and how we can improve it. To disable stats collection, run the operator with the flag** `--enable-analytics=false`.\n\n---\n\n## Acknowledgement\n - Many thanks to [Alexander Neumann](https://github.com/fd0) for [Restic](https://restic.net) project.\n\n## Support\nWe use Slack for public discussions. To chit chat with us or the rest of the community, join us in the [AppsCode Slack team](https://appscode.slack.com/messages/C8NCX6N23/details/) channel `#stash`. To sign up, use our [Slack inviter](https://slack.appscode.com/).\n\nIf you have found a bug with Stash or want to request for new features, please [file an issue](https://github.com/stashed/stash/issues/new).\n" }, "supportLinks": { "Support URL": "https://appscode.freshdesk.com", diff --git a/data/products/swift.json b/data/products/swift.json index e79bde47e..46c274223 100644 --- a/data/products/swift.json +++ b/data/products/swift.json @@ -185,12 +185,12 @@ "facebook": "https://facebook.com/appscode", "github": "https://kubepack.dev/swift", "linkedin": "https://www.linkedin.com/company/appscode", - "twitter": "https://twitter.com/AppsCodeHQ", + "twitter": "https://x.com/AppsCodeHQ", "youtube": "https://www.youtube.com/c/appscodeinc" }, "description": { - "html": "

\"Go\n\"Build\n\"codecov\"\n\"Docker\n\"Slack\"\n\"Twitter\"

\n\n

Swift

\n\n

Swift is an Ajax friendly Helm Tiller proxy using grpc-gateway.

\n\n

Supported Versions

\n\n

Kubernetes 1.5+ . Helm Tiller server checks for version compatibility. Please pick a version of Swift that matches your Tiller server.

\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
Swift VersionDocsHelm/Tiller Version
0.11.1User Guide2.13.0
0.10.0User Guide2.12.0
0.9.0User Guide2.11.0
0.8.1User Guide2.9.0
0.7.3User Guide2.8.0
0.5.2User Guide2.7.0
0.3.2User Guide2.5.x, 2.6.x
0.2.0User Guide2.5.x, 2.6.x
0.1.0User Guide2.5.x, 2.6.x
\n\n

Installation

\n\n

To install Swift, please follow the guide here.

\n\n

Using Swift

\n\n

Want to learn how to use Swift? Please start here.

\n\n

Contribution guidelines

\n\n

Want to help improve Swift? Please start here.

\n\n
\n\n

Swift server collects anonymous usage statistics to help us learn how the software is being used and how we can improve it. To disable stats collection, run the operator with the flag --enable-analytics=false.

\n\n
\n\n

Support

\n\n

We use Slack for public discussions. To chit chat with us or the rest of the community, join us in the AppsCode Slack team channel #general. To sign up, use our Slack inviter.

\n\n

If you have found a bug with Searchlight or want to request for new features, please file an issue.

\n", - "markdown": "[![Go Report Card](https://goreportcard.com/badge/kubepack.dev/swift)](https://goreportcard.com/report/kubepack.dev/swift)\n[![Build Status](https://travis-ci.org/kubepack/swift.svg?branch=master)](https://travis-ci.org/kubepack/swift)\n[![codecov](https://codecov.io/gh/appscode/swift/branch/master/graph/badge.svg)](https://codecov.io/gh/appscode/swift)\n[![Docker Pulls](https://img.shields.io/docker/pulls/appscode/swift.svg)](https://hub.docker.com/r/appscode/swift/)\n[![Slack](https://slack.appscode.com/badge.svg)](https://slack.appscode.com)\n[![Twitter](https://img.shields.io/twitter/follow/appscodehq.svg?style=social&logo=twitter&label=Follow)](https://twitter.com/intent/follow?screen_name=AppsCodeHQ)\n\n# Swift\nSwift is an Ajax friendly [Helm](https://github.com/kubernetes/helm) Tiller proxy using [grpc-gateway](https://github.com/grpc-ecosystem/grpc-gateway).\n\n\n## Supported Versions\nKubernetes 1.5+ . Helm Tiller server [checks for version compatibility](https://github.com/kubernetes/helm/blob/master/pkg/version/compatible.go#L27). Please pick a version of Swift that matches your Tiller server.\n\n| Swift Version | Docs | Helm/Tiller Version |\n|-----------------------------------------------------------------|-----------------------------------------------------------------|---------------------|\n| [0.11.1](https://github.com/kubepack/swift/releases/tag/0.11.1) | [User Guide](https://appscode.com/products/swift/0.11.1/) | 2.13.0 |\n| [0.10.0](https://github.com/kubepack/swift/releases/tag/0.10.0) | [User Guide](https://appscode.com/products/swift/0.10.0/) | 2.12.0 |\n| [0.9.0](https://github.com/kubepack/swift/releases/tag/0.9.0) | [User Guide](https://appscode.com/products/swift/0.9.0/) | 2.11.0 |\n| [0.8.1](https://github.com/kubepack/swift/releases/tag/0.8.1) | [User Guide](https://appscode.com/products/swift/0.8.1/) | 2.9.0 |\n| [0.7.3](https://github.com/kubepack/swift/releases/tag/0.7.3) | [User Guide](https://appscode.com/products/swift/0.7.3/) | 2.8.0 |\n| [0.5.2](https://github.com/kubepack/swift/releases/tag/0.5.2) | [User Guide](https://appscode.com/products/swift/0.5.2/) | 2.7.0 |\n| [0.3.2](https://github.com/kubepack/swift/releases/tag/0.3.2) | [User Guide](https://github.com/kubepack/swift/tree/0.3.2/docs) | 2.5.x, 2.6.x |\n| [0.2.0](https://github.com/kubepack/swift/releases/tag/0.2.0) | [User Guide](https://github.com/kubepack/swift/tree/0.2.0/docs) | 2.5.x, 2.6.x |\n| [0.1.0](https://github.com/kubepack/swift/releases/tag/0.1.0) | [User Guide](https://github.com/kubepack/swift/tree/0.1.0/docs) | 2.5.x, 2.6.x |\n\n\n## Installation\nTo install Swift, please follow the guide [here](https://appscode.com/products/swift/0.11.1/setup/install/).\n\n## Using Swift\nWant to learn how to use Swift? Please start [here](https://appscode.com/products/swift/0.11.1/).\n\n## Contribution guidelines\nWant to help improve Swift? Please start [here](https://appscode.com/products/swift/0.11.1/welcome/contributing/).\n\n---\n\n**Swift server collects anonymous usage statistics to help us learn how the software is being used and how we can improve it. To disable stats collection, run the operator with the flag** `--enable-analytics=false`.\n\n---\n\n## Support\nWe use Slack for public discussions. To chit chat with us or the rest of the community, join us in the [AppsCode Slack team](https://appscode.slack.com/messages/C0XQFLGRM/details/) channel `#general`. To sign up, use our [Slack inviter](https://slack.appscode.com/).\n\nIf you have found a bug with Searchlight or want to request for new features, please [file an issue](https://github.com/kubepack/swift/issues/new).\n" + "html": "

\"Go\n\"Build\n\"codecov\"\n\"Docker\n\"Slack\"\n\"Twitter\"

\n\n

Swift

\n\n

Swift is an Ajax friendly Helm Tiller proxy using grpc-gateway.

\n\n

Supported Versions

\n\n

Kubernetes 1.5+ . Helm Tiller server checks for version compatibility. Please pick a version of Swift that matches your Tiller server.

\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
Swift VersionDocsHelm/Tiller Version
0.11.1User Guide2.13.0
0.10.0User Guide2.12.0
0.9.0User Guide2.11.0
0.8.1User Guide2.9.0
0.7.3User Guide2.8.0
0.5.2User Guide2.7.0
0.3.2User Guide2.5.x, 2.6.x
0.2.0User Guide2.5.x, 2.6.x
0.1.0User Guide2.5.x, 2.6.x
\n\n

Installation

\n\n

To install Swift, please follow the guide here.

\n\n

Using Swift

\n\n

Want to learn how to use Swift? Please start here.

\n\n

Contribution guidelines

\n\n

Want to help improve Swift? Please start here.

\n\n
\n\n

Swift server collects anonymous usage statistics to help us learn how the software is being used and how we can improve it. To disable stats collection, run the operator with the flag --enable-analytics=false.

\n\n
\n\n

Support

\n\n

We use Slack for public discussions. To chit chat with us or the rest of the community, join us in the AppsCode Slack team channel #general. To sign up, use our Slack inviter.

\n\n

If you have found a bug with Searchlight or want to request for new features, please file an issue.

\n", + "markdown": "[![Go Report Card](https://goreportcard.com/badge/kubepack.dev/swift)](https://goreportcard.com/report/kubepack.dev/swift)\n[![Build Status](https://travis-ci.org/kubepack/swift.svg?branch=master)](https://travis-ci.org/kubepack/swift)\n[![codecov](https://codecov.io/gh/appscode/swift/branch/master/graph/badge.svg)](https://codecov.io/gh/appscode/swift)\n[![Docker Pulls](https://img.shields.io/docker/pulls/appscode/swift.svg)](https://hub.docker.com/r/appscode/swift/)\n[![Slack](https://slack.appscode.com/badge.svg)](https://slack.appscode.com)\n[![Twitter](https://img.shields.io/twitter/follow/appscodehq.svg?style=social&logo=twitter&label=Follow)](https://x.com/intent/follow?screen_name=AppsCodeHQ)\n\n# Swift\nSwift is an Ajax friendly [Helm](https://github.com/kubernetes/helm) Tiller proxy using [grpc-gateway](https://github.com/grpc-ecosystem/grpc-gateway).\n\n\n## Supported Versions\nKubernetes 1.5+ . Helm Tiller server [checks for version compatibility](https://github.com/kubernetes/helm/blob/master/pkg/version/compatible.go#L27). Please pick a version of Swift that matches your Tiller server.\n\n| Swift Version | Docs | Helm/Tiller Version |\n|-----------------------------------------------------------------|-----------------------------------------------------------------|---------------------|\n| [0.11.1](https://github.com/kubepack/swift/releases/tag/0.11.1) | [User Guide](https://appscode.com/products/swift/0.11.1/) | 2.13.0 |\n| [0.10.0](https://github.com/kubepack/swift/releases/tag/0.10.0) | [User Guide](https://appscode.com/products/swift/0.10.0/) | 2.12.0 |\n| [0.9.0](https://github.com/kubepack/swift/releases/tag/0.9.0) | [User Guide](https://appscode.com/products/swift/0.9.0/) | 2.11.0 |\n| [0.8.1](https://github.com/kubepack/swift/releases/tag/0.8.1) | [User Guide](https://appscode.com/products/swift/0.8.1/) | 2.9.0 |\n| [0.7.3](https://github.com/kubepack/swift/releases/tag/0.7.3) | [User Guide](https://appscode.com/products/swift/0.7.3/) | 2.8.0 |\n| [0.5.2](https://github.com/kubepack/swift/releases/tag/0.5.2) | [User Guide](https://appscode.com/products/swift/0.5.2/) | 2.7.0 |\n| [0.3.2](https://github.com/kubepack/swift/releases/tag/0.3.2) | [User Guide](https://github.com/kubepack/swift/tree/0.3.2/docs) | 2.5.x, 2.6.x |\n| [0.2.0](https://github.com/kubepack/swift/releases/tag/0.2.0) | [User Guide](https://github.com/kubepack/swift/tree/0.2.0/docs) | 2.5.x, 2.6.x |\n| [0.1.0](https://github.com/kubepack/swift/releases/tag/0.1.0) | [User Guide](https://github.com/kubepack/swift/tree/0.1.0/docs) | 2.5.x, 2.6.x |\n\n\n## Installation\nTo install Swift, please follow the guide [here](https://appscode.com/products/swift/0.11.1/setup/install/).\n\n## Using Swift\nWant to learn how to use Swift? Please start [here](https://appscode.com/products/swift/0.11.1/).\n\n## Contribution guidelines\nWant to help improve Swift? Please start [here](https://appscode.com/products/swift/0.11.1/welcome/contributing/).\n\n---\n\n**Swift server collects anonymous usage statistics to help us learn how the software is being used and how we can improve it. To disable stats collection, run the operator with the flag** `--enable-analytics=false`.\n\n---\n\n## Support\nWe use Slack for public discussions. To chit chat with us or the rest of the community, join us in the [AppsCode Slack team](https://appscode.slack.com/messages/C0XQFLGRM/details/) channel `#general`. To sign up, use our [Slack inviter](https://slack.appscode.com/).\n\nIf you have found a bug with Searchlight or want to request for new features, please [file an issue](https://github.com/kubepack/swift/issues/new).\n" }, "supportLinks": { "Support URL": "https://appscode.freshdesk.com", diff --git a/data/products/voyager.json b/data/products/voyager.json index 1c547ff79..2370c5f6d 100644 --- a/data/products/voyager.json +++ b/data/products/voyager.json @@ -2,8 +2,8 @@ "key": "voyager", "name": "Voyager", "fullname": "Voyager by AppsCode", - "tagline": "Secure HAProxy Ingress Controller for Kubernetes", - "summary": "Secure HAProxy Ingress Controller for Kubernetes", + "tagline": "Secure Ingress Controller for Kubernetes", + "summary": "Secure Ingress Controller for Kubernetes", "published": true, "author": "AppsCode Inc.", "website": { @@ -131,6 +131,15 @@ "hostDocs": false, "show": true }, + { + "version": "v2024.3.18", + "hostDocs": true, + "show": true, + "info": { + "cli": "v0.0.15", + "installer": "v2024.3.18" + } + }, { "version": "v2023.9.18", "hostDocs": true, @@ -292,11 +301,6 @@ "version": "v13.0.0-beta.0", "hostDocs": true }, - { - "version": "v12.0.0", - "hostDocs": true, - "show": true - }, { "version": "v12.0.0-rc.2", "hostDocs": false @@ -309,6 +313,11 @@ "version": "v12.0.0-rc.0", "hostDocs": true }, + { + "version": "v12.0.0", + "hostDocs": true, + "show": true + }, { "version": "v11.0.1", "hostDocs": true @@ -353,10 +362,6 @@ "version": "7.1.0", "hostDocs": true }, - { - "version": "7.0.0", - "hostDocs": true - }, { "version": "7.0.0-rc.3", "hostDocs": true @@ -374,7 +379,7 @@ "hostDocs": true }, { - "version": "6.0.0", + "version": "7.0.0", "hostDocs": true }, { @@ -390,13 +395,17 @@ "hostDocs": true }, { - "version": "5.0.0", + "version": "6.0.0", "hostDocs": true }, { "version": "5.0.0-rc.11", "hostDocs": true }, + { + "version": "5.0.0", + "hostDocs": true + }, { "version": "3.2.2", "hostDocs": false @@ -434,18 +443,18 @@ "hostDocs": false } ], - "latestVersion": "v2023.9.18", + "latestVersion": "v2024.3.18", "socialLinks": { "facebook": "https://facebook.com/appscode", "github": "https://github.com/voyagermesh/voyager", "linkedin": "https://www.linkedin.com/company/appscode", "slack": "https://appscode.slack.com/messages/C0XQFLGRM", - "twitter": "https://twitter.com/Voyagermesh", + "twitter": "https://x.com/Voyagermesh", "youtube": "https://www.youtube.com/c/appscodeinc" }, "description": { - "html": "

Voyager

\n\n

\"Go\n\"Build\n\"codecov\"\n\"Docker\n\"Slack\"\n\"Twitter\"

\n\n
\n

Secure HAProxy Ingress Controller for Kubernetes

\n
\n\n

Voyager is a HAProxy backed secure L7 and L4 ingress controller for Kubernetes developed by\nAppsCode. This can be used with any Kubernetes cloud providers including aws, gce, gke, azure, acs. This can also be used with bare metal Kubernetes clusters.

\n\n

We are exploring what’s next for Voyager. As an ingress controller, its is mostly feature complete at this point. The obvious direction will be to grow Voyager into a full scale L7 api gateway and service mesh. We want to hear your feedback on the roadmap for Voyager. Please take 5 minutes to answer this survey: https://appsco.de/voyager-survey-201902

\n\n

Ingress

\n\n

Voyager provides L7 and L4 loadbalancing using a custom Kubernetes Ingress resource. This is built on top of the HAProxy to support high availability, sticky sessions, name and path-based virtual hosting.\nThis also support configurable application ports with all the options available in a standard Kubernetes Ingress.

\n\n

Certificate

\n\n

Voyager can automatically provision and refresh SSL certificates (including wildcard certificates) issued from Let’s Encrypt using a custom Kubernetes Certificate resource.

\n\n

Supported Versions

\n\n

Please pick a version of Voyager that matches your Kubernetes installation.

\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
Voyager VersionDocsKubernetes VersionPrometheus operator Version
10.0.0 (uses CRD)User Guide1.9.x+0.16.0+
7.4.0 (uses CRD)User Guide1.8.x - 1.11.x0.16.0+
5.0.0 (uses CRD)User Guide1.7.x0.12.0+
3.2.2 (uses TPR)User Guide1.5.x - 1.7.x< 0.12.0
\n\n

Installation

\n\n

To install Voyager, please follow the guide here.

\n\n

Using Voyager

\n\n

Want to learn how to use Voyager? Please start here.

\n\n

Voyager API Clients

\n\n

You can use Voyager api clients to programmatically access its CRD objects. Here are the supported clients:

\n\n\n\n

Contribution guidelines

\n\n

Want to help improve Voyager? Please start here.

\n\n
\n\n

Voyager binaries collects anonymous usage statistics to help us learn how the software is being used and how we can improve it.\nTo disable stats collection, run the operator with the flag --enable-analytics=false.

\n\n
\n\n

Acknowledgement

\n\n\n\n

Support

\n\n

We use Slack for public discussions. To chit chat with us or the rest of the community, join us in the AppsCode Slack team channel #general. To sign up, use our Slack inviter.

\n\n

If you have found a bug with Voyager or want to request for new features, please file an issue.

\n", - "markdown": "# Voyager\n\n[![Go Report Card](https://goreportcard.com/badge/github.com/voyagermesh/voyager)](https://goreportcard.com/report/github.com/voyagermesh/voyager)\n[![Build Status](https://travis-ci.org/appscode/voyager.svg?branch=master)](https://travis-ci.org/appscode/voyager)\n[![codecov](https://codecov.io/gh/appscode/voyager/branch/master/graph/badge.svg)](https://codecov.io/gh/appscode/voyager)\n[![Docker Pulls](https://img.shields.io/docker/pulls/appscode/voyager.svg)](https://hub.docker.com/r/appscode/voyager/)\n[![Slack](https://slack.appscode.com/badge.svg)](https://slack.appscode.com)\n[![Twitter](https://img.shields.io/twitter/follow/appscodehq.svg?style=social&logo=twitter&label=Follow)](https://twitter.com/intent/follow?screen_name=AppsCodeHQ)\n\n> Secure HAProxy Ingress Controller for Kubernetes\n\nVoyager is a [HAProxy](http://www.haproxy.org/) backed [secure](#certificate) L7 and L4 [ingress](#ingress) controller for Kubernetes developed by\n[AppsCode](https://appscode.com). This can be used with any Kubernetes cloud providers including aws, gce, gke, azure, acs. This can also be used with bare metal Kubernetes clusters.\n\n***We are exploring what's next for Voyager. As an ingress controller, its is mostly feature complete at this point. The obvious direction will be to grow Voyager into a full scale L7 api gateway and service mesh. We want to hear your feedback on the roadmap for Voyager. Please take 5 minutes to answer this survey: https://appsco.de/voyager-survey-201902***\n\n## Ingress\nVoyager provides L7 and L4 loadbalancing using a custom Kubernetes [Ingress](https://appscode.com/products/voyager/10.0.0/guides/ingress/) resource. This is built on top of the [HAProxy](http://www.haproxy.org/) to support high availability, sticky sessions, name and path-based virtual hosting.\nThis also support configurable application ports with all the options available in a standard Kubernetes [Ingress](https://kubernetes.io/docs/concepts/services-networking/ingress/).\n\n## Certificate\nVoyager can automatically provision and refresh SSL certificates (including wildcard certificates) issued from Let's Encrypt using a custom Kubernetes [Certificate](https://appscode.com/products/voyager/10.0.0/guides/certificate/) resource.\n\n## Supported Versions\nPlease pick a version of Voyager that matches your Kubernetes installation.\n\n| Voyager Version | Docs | Kubernetes Version | Prometheus operator Version |\n|----------------------------------------------------------------------------------------|-------------------------------------------------------------------------|--------------------|-----------------------------|\n| [10.0.0](https://github.com/voyagermesh/voyager/releases/tag/10.0.0) (uses CRD) | [User Guide](https://appscode.com/products/voyager/10.0.0/) | 1.9.x+ | 0.16.0+ |\n| [7.4.0](https://github.com/voyagermesh/voyager/releases/tag/7.4.0) (uses CRD) | [User Guide](https://appscode.com/products/voyager/7.4.0/) | 1.8.x - 1.11.x | 0.16.0+ |\n| [5.0.0](https://github.com/voyagermesh/voyager/releases/tag/5.0.0) (uses CRD) | [User Guide](https://appscode.com/products/voyager/5.0.0/) | 1.7.x | 0.12.0+ |\n| [3.2.2](https://github.com/voyagermesh/voyager/releases/tag/3.2.2) (uses TPR) | [User Guide](https://github.com/voyagermesh/voyager/tree/3.2.2/docs) | 1.5.x - 1.7.x | < 0.12.0 |\n\n## Installation\nTo install Voyager, please follow the guide [here](https://appscode.com/products/voyager/10.0.0/setup/install/).\n\n## Using Voyager\nWant to learn how to use Voyager? Please start [here](https://appscode.com/products/voyager/10.0.0/welcome/).\n\n## Voyager API Clients\nYou can use Voyager api clients to programmatically access its CRD objects. Here are the supported clients:\n\n- Go: [https://github.com/voyagermesh/voyager](/client/clientset/versioned)\n- Java: https://github.com/voyager-client/java\n\n## Contribution guidelines\nWant to help improve Voyager? Please start [here](https://appscode.com/products/voyager/10.0.0/welcome/contributing/).\n\n---\n\n**Voyager binaries collects anonymous usage statistics to help us learn how the software is being used and how we can improve it.\nTo disable stats collection, run the operator with the flag** `--enable-analytics=false`.\n\n---\n\n## Acknowledgement\n - docker-library/haproxy https://github.com/docker-library/haproxy\n - kubernetes/contrib https://github.com/kubernetes/contrib/tree/master/service-loadbalancer\n - kubernetes/ingress https://github.com/kubernetes/ingress\n - xenolf/lego https://github.com/appscode/lego\n - kelseyhightower/kube-cert-manager https://github.com/kelseyhightower/kube-cert-manager\n - PalmStoneGames/kube-cert-manager https://github.com/PalmStoneGames/kube-cert-manager\n - [Kubernetes cloudprovider implementation](https://github.com/kubernetes/kubernetes/tree/master/pkg/cloudprovider)\n - openshift/generic-admission-server https://github.com/openshift/generic-admission-server\n - TimWolla/haproxy-auth-request https://github.com/TimWolla/haproxy-auth-request\n\n## Support\n\nWe use Slack for public discussions. To chit chat with us or the rest of the community, join us in the [AppsCode Slack team](https://appscode.slack.com/messages/C0XQFLGRM/details/) channel `#general`. To sign up, use our [Slack inviter](https://slack.appscode.com/).\n\nIf you have found a bug with Voyager or want to request for new features, please [file an issue](https://github.com/voyagermesh/voyager/issues/new).\n" + "html": "

Voyager

\n\n

\"Go\n\"Build\n\"codecov\"\n\"Docker\n\"Slack\"\n\"Twitter\"

\n\n
\n

Secure HAProxy Ingress Controller for Kubernetes

\n
\n\n

Voyager is a HAProxy backed secure L7 and L4 ingress controller for Kubernetes developed by\nAppsCode. This can be used with any Kubernetes cloud providers including aws, gce, gke, azure, acs. This can also be used with bare metal Kubernetes clusters.

\n\n

We are exploring what’s next for Voyager. As an ingress controller, its is mostly feature complete at this point. The obvious direction will be to grow Voyager into a full scale L7 api gateway and service mesh. We want to hear your feedback on the roadmap for Voyager. Please take 5 minutes to answer this survey: https://appsco.de/voyager-survey-201902

\n\n

Ingress

\n\n

Voyager provides L7 and L4 loadbalancing using a custom Kubernetes Ingress resource. This is built on top of the HAProxy to support high availability, sticky sessions, name and path-based virtual hosting.\nThis also support configurable application ports with all the options available in a standard Kubernetes Ingress.

\n\n

Certificate

\n\n

Voyager can automatically provision and refresh SSL certificates (including wildcard certificates) issued from Let’s Encrypt using a custom Kubernetes Certificate resource.

\n\n

Supported Versions

\n\n

Please pick a version of Voyager that matches your Kubernetes installation.

\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
Voyager VersionDocsKubernetes VersionPrometheus operator Version
10.0.0 (uses CRD)User Guide1.9.x+0.16.0+
7.4.0 (uses CRD)User Guide1.8.x - 1.11.x0.16.0+
5.0.0 (uses CRD)User Guide1.7.x0.12.0+
3.2.2 (uses TPR)User Guide1.5.x - 1.7.x< 0.12.0
\n\n

Installation

\n\n

To install Voyager, please follow the guide here.

\n\n

Using Voyager

\n\n

Want to learn how to use Voyager? Please start here.

\n\n

Voyager API Clients

\n\n

You can use Voyager api clients to programmatically access its CRD objects. Here are the supported clients:

\n\n\n\n

Contribution guidelines

\n\n

Want to help improve Voyager? Please start here.

\n\n
\n\n

Voyager binaries collects anonymous usage statistics to help us learn how the software is being used and how we can improve it.\nTo disable stats collection, run the operator with the flag --enable-analytics=false.

\n\n
\n\n

Acknowledgement

\n\n\n\n

Support

\n\n

We use Slack for public discussions. To chit chat with us or the rest of the community, join us in the AppsCode Slack team channel #general. To sign up, use our Slack inviter.

\n\n

If you have found a bug with Voyager or want to request for new features, please file an issue.

\n", + "markdown": "# Voyager\n\n[![Go Report Card](https://goreportcard.com/badge/github.com/voyagermesh/voyager)](https://goreportcard.com/report/github.com/voyagermesh/voyager)\n[![Build Status](https://travis-ci.org/appscode/voyager.svg?branch=master)](https://travis-ci.org/appscode/voyager)\n[![codecov](https://codecov.io/gh/appscode/voyager/branch/master/graph/badge.svg)](https://codecov.io/gh/appscode/voyager)\n[![Docker Pulls](https://img.shields.io/docker/pulls/appscode/voyager.svg)](https://hub.docker.com/r/appscode/voyager/)\n[![Slack](https://slack.appscode.com/badge.svg)](https://slack.appscode.com)\n[![Twitter](https://img.shields.io/twitter/follow/appscodehq.svg?style=social&logo=twitter&label=Follow)](https://x.com/intent/follow?screen_name=AppsCodeHQ)\n\n> Secure HAProxy Ingress Controller for Kubernetes\n\nVoyager is a [HAProxy](http://www.haproxy.org/) backed [secure](#certificate) L7 and L4 [ingress](#ingress) controller for Kubernetes developed by\n[AppsCode](https://appscode.com). This can be used with any Kubernetes cloud providers including aws, gce, gke, azure, acs. This can also be used with bare metal Kubernetes clusters.\n\n***We are exploring what's next for Voyager. As an ingress controller, its is mostly feature complete at this point. The obvious direction will be to grow Voyager into a full scale L7 api gateway and service mesh. We want to hear your feedback on the roadmap for Voyager. Please take 5 minutes to answer this survey: https://appsco.de/voyager-survey-201902***\n\n## Ingress\nVoyager provides L7 and L4 loadbalancing using a custom Kubernetes [Ingress](https://appscode.com/products/voyager/10.0.0/guides/ingress/) resource. This is built on top of the [HAProxy](http://www.haproxy.org/) to support high availability, sticky sessions, name and path-based virtual hosting.\nThis also support configurable application ports with all the options available in a standard Kubernetes [Ingress](https://kubernetes.io/docs/concepts/services-networking/ingress/).\n\n## Certificate\nVoyager can automatically provision and refresh SSL certificates (including wildcard certificates) issued from Let's Encrypt using a custom Kubernetes [Certificate](https://appscode.com/products/voyager/10.0.0/guides/certificate/) resource.\n\n## Supported Versions\nPlease pick a version of Voyager that matches your Kubernetes installation.\n\n| Voyager Version | Docs | Kubernetes Version | Prometheus operator Version |\n|----------------------------------------------------------------------------------------|-------------------------------------------------------------------------|--------------------|-----------------------------|\n| [10.0.0](https://github.com/voyagermesh/voyager/releases/tag/10.0.0) (uses CRD) | [User Guide](https://appscode.com/products/voyager/10.0.0/) | 1.9.x+ | 0.16.0+ |\n| [7.4.0](https://github.com/voyagermesh/voyager/releases/tag/7.4.0) (uses CRD) | [User Guide](https://appscode.com/products/voyager/7.4.0/) | 1.8.x - 1.11.x | 0.16.0+ |\n| [5.0.0](https://github.com/voyagermesh/voyager/releases/tag/5.0.0) (uses CRD) | [User Guide](https://appscode.com/products/voyager/5.0.0/) | 1.7.x | 0.12.0+ |\n| [3.2.2](https://github.com/voyagermesh/voyager/releases/tag/3.2.2) (uses TPR) | [User Guide](https://github.com/voyagermesh/voyager/tree/3.2.2/docs) | 1.5.x - 1.7.x | < 0.12.0 |\n\n## Installation\nTo install Voyager, please follow the guide [here](https://appscode.com/products/voyager/10.0.0/setup/install/).\n\n## Using Voyager\nWant to learn how to use Voyager? Please start [here](https://appscode.com/products/voyager/10.0.0/welcome/).\n\n## Voyager API Clients\nYou can use Voyager api clients to programmatically access its CRD objects. Here are the supported clients:\n\n- Go: [https://github.com/voyagermesh/voyager](/client/clientset/versioned)\n- Java: https://github.com/voyager-client/java\n\n## Contribution guidelines\nWant to help improve Voyager? Please start [here](https://appscode.com/products/voyager/10.0.0/welcome/contributing/).\n\n---\n\n**Voyager binaries collects anonymous usage statistics to help us learn how the software is being used and how we can improve it.\nTo disable stats collection, run the operator with the flag** `--enable-analytics=false`.\n\n---\n\n## Acknowledgement\n - docker-library/haproxy https://github.com/docker-library/haproxy\n - kubernetes/contrib https://github.com/kubernetes/contrib/tree/master/service-loadbalancer\n - kubernetes/ingress https://github.com/kubernetes/ingress\n - xenolf/lego https://github.com/appscode/lego\n - kelseyhightower/kube-cert-manager https://github.com/kelseyhightower/kube-cert-manager\n - PalmStoneGames/kube-cert-manager https://github.com/PalmStoneGames/kube-cert-manager\n - [Kubernetes cloudprovider implementation](https://github.com/kubernetes/kubernetes/tree/master/pkg/cloudprovider)\n - openshift/generic-admission-server https://github.com/openshift/generic-admission-server\n - TimWolla/haproxy-auth-request https://github.com/TimWolla/haproxy-auth-request\n\n## Support\n\nWe use Slack for public discussions. To chit chat with us or the rest of the community, join us in the [AppsCode Slack team](https://appscode.slack.com/messages/C0XQFLGRM/details/) channel `#general`. To sign up, use our [Slack inviter](https://slack.appscode.com/).\n\nIf you have found a bug with Voyager or want to request for new features, please [file an issue](https://github.com/voyagermesh/voyager/issues/new).\n" }, "supportLinks": { "Support URL": "https://appscode.freshdesk.com", diff --git a/firebase.bk.json b/firebase.bk.json index 7238385c6..8e698eb9d 100644 --- a/firebase.bk.json +++ b/firebase.bk.json @@ -44,17 +44,17 @@ "redirects": [ { "source": "/docs/latest/", - "destination": "/docs/v2023.05.16/", + "destination": "/docs/v2023.9.18/", "type": 302 }, { "source": "/docs/latest/:rest*", - "destination": "/docs/v2023.05.16/:rest", + "destination": "/docs/v2023.9.18/:rest", "type": 302 }, { "source": "/docs", - "destination": "/docs/v2023.05.16/", + "destination": "/docs/v2023.9.18/", "type": 302 } ] diff --git a/firebase.json b/firebase.json index 8e698eb9d..ed81fe9ae 100644 --- a/firebase.json +++ b/firebase.json @@ -44,17 +44,17 @@ "redirects": [ { "source": "/docs/latest/", - "destination": "/docs/v2023.9.18/", + "destination": "/docs/v2024.3.18/", "type": 302 }, { "source": "/docs/latest/:rest*", - "destination": "/docs/v2023.9.18/:rest", + "destination": "/docs/v2024.3.18/:rest", "type": 302 }, { "source": "/docs", - "destination": "/docs/v2023.9.18/", + "destination": "/docs/v2024.3.18/", "type": 302 } ] diff --git a/static/assets/images/authors/md-ishtiaq-islam.jpg b/static/assets/images/authors/md-ishtiaq-islam.jpg new file mode 100644 index 000000000..beea522fc Binary files /dev/null and b/static/assets/images/authors/md-ishtiaq-islam.jpg differ diff --git a/static/assets/images/authors/obaydullah.jpg b/static/assets/images/authors/obaydullah.jpg new file mode 100644 index 000000000..73a612b98 Binary files /dev/null and b/static/assets/images/authors/obaydullah.jpg differ diff --git a/static/assets/images/authors/profile-photos-28x28/md-ishtiaq-islam.jpg b/static/assets/images/authors/profile-photos-28x28/md-ishtiaq-islam.jpg new file mode 100644 index 000000000..0bbc1d1e6 Binary files /dev/null and b/static/assets/images/authors/profile-photos-28x28/md-ishtiaq-islam.jpg differ diff --git a/static/assets/images/authors/profile-photos-28x28/obaydullah.jpg b/static/assets/images/authors/profile-photos-28x28/obaydullah.jpg new file mode 100644 index 000000000..73a612b98 Binary files /dev/null and b/static/assets/images/authors/profile-photos-28x28/obaydullah.jpg differ diff --git a/static/assets/images/authors/profile-photos-84x84/md-ishtiaq-islam.jpg b/static/assets/images/authors/profile-photos-84x84/md-ishtiaq-islam.jpg new file mode 100644 index 000000000..1510085e9 Binary files /dev/null and b/static/assets/images/authors/profile-photos-84x84/md-ishtiaq-islam.jpg differ diff --git a/static/assets/images/authors/profile-photos-84x84/obaydullah.jpg b/static/assets/images/authors/profile-photos-84x84/obaydullah.jpg new file mode 100644 index 000000000..73a612b98 Binary files /dev/null and b/static/assets/images/authors/profile-photos-84x84/obaydullah.jpg differ diff --git a/static/assets/images/authors/profile-photos-84x84/saurov-chandra-biswas.jpg b/static/assets/images/authors/profile-photos-84x84/saurov-chandra-biswas.jpg new file mode 100644 index 000000000..819517b48 Binary files /dev/null and b/static/assets/images/authors/profile-photos-84x84/saurov-chandra-biswas.jpg differ diff --git a/static/assets/images/customers/2024/100-furtune.png b/static/assets/images/customers/2024/100-furtune.png new file mode 100644 index 000000000..6aeafd46a Binary files /dev/null and b/static/assets/images/customers/2024/100-furtune.png differ diff --git a/static/assets/images/customers/2024/carro.png b/static/assets/images/customers/2024/carro.png new file mode 100644 index 000000000..4bc8aa55c Binary files /dev/null and b/static/assets/images/customers/2024/carro.png differ diff --git a/static/assets/images/customers/2024/clewmed.png b/static/assets/images/customers/2024/clewmed.png new file mode 100644 index 000000000..c81fc119e Binary files /dev/null and b/static/assets/images/customers/2024/clewmed.png differ diff --git a/static/assets/images/customers/2024/dataloop.png b/static/assets/images/customers/2024/dataloop.png new file mode 100644 index 000000000..9d4c16f3b Binary files /dev/null and b/static/assets/images/customers/2024/dataloop.png differ diff --git a/static/assets/images/customers/2024/decisio.png b/static/assets/images/customers/2024/decisio.png new file mode 100644 index 000000000..f09e080b7 Binary files /dev/null and b/static/assets/images/customers/2024/decisio.png differ diff --git a/static/assets/images/customers/2024/emerson.png b/static/assets/images/customers/2024/emerson.png new file mode 100644 index 000000000..b106e58b0 Binary files /dev/null and b/static/assets/images/customers/2024/emerson.png differ diff --git a/static/assets/images/customers/2024/fastspeed.png b/static/assets/images/customers/2024/fastspeed.png new file mode 100644 index 000000000..54f7805a1 Binary files /dev/null and b/static/assets/images/customers/2024/fastspeed.png differ diff --git a/static/assets/images/customers/2024/ge-healthcare.png b/static/assets/images/customers/2024/ge-healthcare.png new file mode 100644 index 000000000..cb3473fae Binary files /dev/null and b/static/assets/images/customers/2024/ge-healthcare.png differ diff --git a/static/assets/images/customers/2024/greenhouse.png b/static/assets/images/customers/2024/greenhouse.png new file mode 100644 index 000000000..b27ab99d1 Binary files /dev/null and b/static/assets/images/customers/2024/greenhouse.png differ diff --git a/static/assets/images/customers/2024/huma.png b/static/assets/images/customers/2024/huma.png new file mode 100644 index 000000000..61a0a533b Binary files /dev/null and b/static/assets/images/customers/2024/huma.png differ diff --git a/static/assets/images/customers/2024/irembo.png b/static/assets/images/customers/2024/irembo.png new file mode 100644 index 000000000..bcbb316b3 Binary files /dev/null and b/static/assets/images/customers/2024/irembo.png differ diff --git a/static/assets/images/customers/2024/nokia.png b/static/assets/images/customers/2024/nokia.png new file mode 100644 index 000000000..950d811b5 Binary files /dev/null and b/static/assets/images/customers/2024/nokia.png differ diff --git a/static/assets/images/customers/2024/oak-ridge.png b/static/assets/images/customers/2024/oak-ridge.png new file mode 100644 index 000000000..9852acd95 Binary files /dev/null and b/static/assets/images/customers/2024/oak-ridge.png differ diff --git a/static/assets/images/customers/2024/orange.png b/static/assets/images/customers/2024/orange.png new file mode 100644 index 000000000..4d478fbe4 Binary files /dev/null and b/static/assets/images/customers/2024/orange.png differ diff --git a/static/assets/images/customers/2024/vaimo.png b/static/assets/images/customers/2024/vaimo.png new file mode 100644 index 000000000..250b0f335 Binary files /dev/null and b/static/assets/images/customers/2024/vaimo.png differ diff --git a/static/assets/images/customers/2024/wiliot.png b/static/assets/images/customers/2024/wiliot.png new file mode 100644 index 000000000..024b5e1f6 Binary files /dev/null and b/static/assets/images/customers/2024/wiliot.png differ diff --git a/static/assets/images/employees/md-ishtiaq-islam.jpg b/static/assets/images/employees/md-ishtiaq-islam.jpg new file mode 100644 index 000000000..beea522fc Binary files /dev/null and b/static/assets/images/employees/md-ishtiaq-islam.jpg differ diff --git a/static/assets/images/press/1.png b/static/assets/images/press/1.png index 94d83ca6e..3ca42818f 100644 Binary files a/static/assets/images/press/1.png and b/static/assets/images/press/1.png differ diff --git a/static/assets/images/press/2.png b/static/assets/images/press/2.png index 7d155f670..56e590c95 100644 Binary files a/static/assets/images/press/2.png and b/static/assets/images/press/2.png differ diff --git a/static/assets/images/press/3.png b/static/assets/images/press/3.png index 78b64161a..fa552f230 100644 Binary files a/static/assets/images/press/3.png and b/static/assets/images/press/3.png differ diff --git a/static/assets/images/press/4.png b/static/assets/images/press/4.png index 43a25333f..e12c43e6e 100644 Binary files a/static/assets/images/press/4.png and b/static/assets/images/press/4.png differ diff --git a/static/assets/images/products/appscode/appscode-hero.png b/static/assets/images/products/appscode/appscode-hero.png index b0e89031e..0c37852c9 100644 Binary files a/static/assets/images/products/appscode/appscode-hero.png and b/static/assets/images/products/appscode/appscode-hero.png differ diff --git a/static/assets/images/products/appscode/features/backup-recovery.jpg b/static/assets/images/products/appscode/features/backup-recovery.jpg new file mode 100644 index 000000000..bd79f0530 Binary files /dev/null and b/static/assets/images/products/appscode/features/backup-recovery.jpg differ diff --git a/static/assets/images/products/appscode/features/insight.jpg b/static/assets/images/products/appscode/features/insight.jpg new file mode 100644 index 000000000..c80de2abd Binary files /dev/null and b/static/assets/images/products/appscode/features/insight.jpg differ diff --git a/static/assets/images/products/appscode/features/monitoring.jpg b/static/assets/images/products/appscode/features/monitoring.jpg new file mode 100644 index 000000000..e8badd1a0 Binary files /dev/null and b/static/assets/images/products/appscode/features/monitoring.jpg differ diff --git a/static/assets/images/products/appscode/features/ui-features.png b/static/assets/images/products/appscode/features/ui-features.png new file mode 100644 index 000000000..4b004654b Binary files /dev/null and b/static/assets/images/products/appscode/features/ui-features.png differ diff --git a/static/assets/images/products/appscode/icons/global/check-box.png b/static/assets/images/products/appscode/icons/global/check-box.png new file mode 100644 index 000000000..a9cbaf8ba Binary files /dev/null and b/static/assets/images/products/appscode/icons/global/check-box.png differ diff --git a/static/assets/images/products/appscode/icons/global/check-box.svg b/static/assets/images/products/appscode/icons/global/check-box.svg new file mode 100644 index 000000000..3b0e973c1 --- /dev/null +++ b/static/assets/images/products/appscode/icons/global/check-box.svg @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + diff --git a/static/assets/images/products/appscode/icons/global/play-icon.png b/static/assets/images/products/appscode/icons/global/play-icon.png new file mode 100644 index 000000000..9a1b956b3 Binary files /dev/null and b/static/assets/images/products/appscode/icons/global/play-icon.png differ diff --git a/static/assets/images/products/kubedb/kubedb-illustration-1.png b/static/assets/images/products/kubedb/kubedb-illustration-1.png new file mode 100644 index 000000000..490d9dc18 Binary files /dev/null and b/static/assets/images/products/kubedb/kubedb-illustration-1.png differ