From 2b663c4d5942fe7f42db640068067762610c22a6 Mon Sep 17 00:00:00 2001 From: CEE Date: Wed, 17 Apr 2024 12:17:57 +0900 Subject: [PATCH] --skip-ci changes --- README.md | 3 +- charts/nextcloud-lc/Chart.yaml | 25 - charts/nextcloud-lc/LICENSE.md | 661 ------------------ charts/nextcloud-lc/files/apcu.config.php | 4 - charts/nextcloud-lc/files/auto.config.php | 29 - charts/nextcloud-lc/files/dir-apps.config.php | 20 - charts/nextcloud-lc/files/dir-data.config.php | 8 - charts/nextcloud-lc/files/redis.config.php | 17 - .../files/reverse-proxy.config.php | 30 - charts/nextcloud-lc/files/s3.config.php | 41 -- charts/nextcloud-lc/files/smtp.config.php | 22 - charts/nextcloud-lc/files/swift.config.php | 31 - .../files/upgrade-disable-web.config.php | 4 - charts/nextcloud-lc/icon.png | Bin 29464 -> 0 bytes charts/nextcloud-lc/templates/_helpers.tpl | 285 -------- .../templates/metrics-deployment.yaml | 75 -- .../templates/metrics-service.yaml | 32 - .../templates/metrics-servicemonitor.yaml | 39 -- .../templates/nextcloud-config-files.yaml | 32 - .../templates/nextcloud-config-main.yaml | 35 - .../templates/nextcloud-deployment.yaml | 290 -------- .../templates/nextcloud-ingress.yaml | 45 -- .../templates/nextcloud-pvc-customApps.yaml | 31 - .../templates/nextcloud-pvc-data.yaml | 31 - .../templates/nextcloud-secret-db.yaml | 15 - .../templates/nextcloud-secret-main.yaml | 29 - .../templates/nextcloud-secret-redis.yaml | 14 - .../templates/nextcloud-service.yaml | 34 - .../nextcloud-lc/templates/nginx-config.yaml | 155 ---- charts/nextcloud-lc/templates/php-config.yaml | 16 - charts/nextcloud-lc/values.yaml | 406 ----------- charts/nextcloud/Chart.yaml | 7 +- .../files/config.php | 0 charts/nextcloud/templates/_helpers.tpl | 37 +- .../templates/nextcloud-config-files.yaml | 2 + .../templates/nextcloud-config-main.yaml | 4 +- charts/nextcloud/values.yaml | 14 +- .../{nextcloud-lc => wordpress}/.helmignore | 3 - charts/wordpress/Chart.yaml | 22 + charts/wordpress/templates/NOTES.txt | 22 + charts/wordpress/templates/_helpers.tpl | 62 ++ .../wordpress/templates/serviceaccount.yaml | 13 + .../templates/tests/test-connection.yaml | 15 + charts/wordpress/templates/web-config.yaml | 28 + .../wordpress/templates/web-deployment.yaml | 87 +++ charts/wordpress/templates/web-ingress.yaml | 61 ++ charts/wordpress/templates/web-secret.yaml | 13 + charts/wordpress/templates/web-service.yaml | 15 + charts/wordpress/values.yaml | 142 ++++ 49 files changed, 519 insertions(+), 2487 deletions(-) delete mode 100644 charts/nextcloud-lc/Chart.yaml delete mode 100644 charts/nextcloud-lc/LICENSE.md delete mode 100644 charts/nextcloud-lc/files/apcu.config.php delete mode 100644 charts/nextcloud-lc/files/auto.config.php delete mode 100644 charts/nextcloud-lc/files/dir-apps.config.php delete mode 100644 charts/nextcloud-lc/files/dir-data.config.php delete mode 100644 charts/nextcloud-lc/files/redis.config.php delete mode 100644 charts/nextcloud-lc/files/reverse-proxy.config.php delete mode 100644 charts/nextcloud-lc/files/s3.config.php delete mode 100644 charts/nextcloud-lc/files/smtp.config.php delete mode 100644 charts/nextcloud-lc/files/swift.config.php delete mode 100644 charts/nextcloud-lc/files/upgrade-disable-web.config.php delete mode 100644 charts/nextcloud-lc/icon.png delete mode 100644 charts/nextcloud-lc/templates/_helpers.tpl delete mode 100644 charts/nextcloud-lc/templates/metrics-deployment.yaml delete mode 100644 charts/nextcloud-lc/templates/metrics-service.yaml delete mode 100644 charts/nextcloud-lc/templates/metrics-servicemonitor.yaml delete mode 100644 charts/nextcloud-lc/templates/nextcloud-config-files.yaml delete mode 100644 charts/nextcloud-lc/templates/nextcloud-config-main.yaml delete mode 100644 charts/nextcloud-lc/templates/nextcloud-deployment.yaml delete mode 100644 charts/nextcloud-lc/templates/nextcloud-ingress.yaml delete mode 100644 charts/nextcloud-lc/templates/nextcloud-pvc-customApps.yaml delete mode 100644 charts/nextcloud-lc/templates/nextcloud-pvc-data.yaml delete mode 100644 charts/nextcloud-lc/templates/nextcloud-secret-db.yaml delete mode 100644 charts/nextcloud-lc/templates/nextcloud-secret-main.yaml delete mode 100644 charts/nextcloud-lc/templates/nextcloud-secret-redis.yaml delete mode 100644 charts/nextcloud-lc/templates/nextcloud-service.yaml delete mode 100644 charts/nextcloud-lc/templates/nginx-config.yaml delete mode 100644 charts/nextcloud-lc/templates/php-config.yaml delete mode 100644 charts/nextcloud-lc/values.yaml rename charts/{nextcloud-lc => nextcloud}/files/config.php (100%) rename charts/{nextcloud-lc => wordpress}/.helmignore (96%) create mode 100644 charts/wordpress/Chart.yaml create mode 100644 charts/wordpress/templates/NOTES.txt create mode 100644 charts/wordpress/templates/_helpers.tpl create mode 100644 charts/wordpress/templates/serviceaccount.yaml create mode 100644 charts/wordpress/templates/tests/test-connection.yaml create mode 100644 charts/wordpress/templates/web-config.yaml create mode 100644 charts/wordpress/templates/web-deployment.yaml create mode 100644 charts/wordpress/templates/web-ingress.yaml create mode 100644 charts/wordpress/templates/web-secret.yaml create mode 100644 charts/wordpress/templates/web-service.yaml create mode 100644 charts/wordpress/values.yaml diff --git a/README.md b/README.md index d3680d6..6358ebe 100644 --- a/README.md +++ b/README.md @@ -5,4 +5,5 @@ helm 차트 의외로 쓸만한게 없어서 따로 만들어서(커스텀 해 기존 helm 차트에서 기능 삭제해서 가볍게 수정. ## Charts -- Nextcloud: +- nextcloud: linux container +- wordpress diff --git a/charts/nextcloud-lc/Chart.yaml b/charts/nextcloud-lc/Chart.yaml deleted file mode 100644 index af00605..0000000 --- a/charts/nextcloud-lc/Chart.yaml +++ /dev/null @@ -1,25 +0,0 @@ -apiVersion: v2 -name: nextcloud-lc -version: 4.5.41 -appVersion: 28.0.3 -description: A file sharing server that puts the control and security of your own data back into your hands. -keywords: - - nextcloud - - storage - - http - - web - - php -home: https://nextcloud.com/ -icon: https://raw.githubusercontent.com/ScriptonBasestar-docker/sb-helm-charts/master/helms/nextcloud/icon.png -sources: - - https://github.com/nextcloud/helm - - https://github.com/nextcloud/docker - - https://scriptonbasestar-docker.github.io/sb-helm-charts/ - - https://github.com/linuxserver/docker-nextcloud - - https://hub.docker.com/r/linuxserver/nextcloud -maintainers: - - name: archmagece - email: archmagece@gmail.com - - - diff --git a/charts/nextcloud-lc/LICENSE.md b/charts/nextcloud-lc/LICENSE.md deleted file mode 100644 index dbbe355..0000000 --- a/charts/nextcloud-lc/LICENSE.md +++ /dev/null @@ -1,661 +0,0 @@ - GNU AFFERO GENERAL PUBLIC LICENSE - Version 3, 19 November 2007 - - Copyright (C) 2007 Free Software Foundation, Inc. - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - - Preamble - - The GNU Affero General Public License is a free, copyleft license for -software and other kinds of works, specifically designed to ensure -cooperation with the community in the case of network server software. - - The licenses for most software and other practical works are designed -to take away your freedom to share and change the works. By contrast, -our General Public Licenses are intended to guarantee your freedom to -share and change all versions of a program--to make sure it remains free -software for all its users. - - When we speak of free software, we are referring to freedom, not -price. Our General Public Licenses are designed to make sure that you -have the freedom to distribute copies of free software (and charge for -them if you wish), that you receive source code or can get it if you -want it, that you can change the software or use pieces of it in new -free programs, and that you know you can do these things. - - Developers that use our General Public Licenses protect your rights -with two steps: (1) assert copyright on the software, and (2) offer -you this License which gives you legal permission to copy, distribute -and/or modify the software. - - A secondary benefit of defending all users' freedom is that -improvements made in alternate versions of the program, if they -receive widespread use, become available for other developers to -incorporate. Many developers of free software are heartened and -encouraged by the resulting cooperation. However, in the case of -software used on network servers, this result may fail to come about. -The GNU General Public License permits making a modified version and -letting the public access it on a server without ever releasing its -source code to the public. - - The GNU Affero General Public License is designed specifically to -ensure that, in such cases, the modified source code becomes available -to the community. It requires the operator of a network server to -provide the source code of the modified version running there to the -users of that server. Therefore, public use of a modified version, on -a publicly accessible server, gives the public access to the source -code of the modified version. - - An older license, called the Affero General Public License and -published by Affero, was designed to accomplish similar goals. This is -a different license, not a version of the Affero GPL, but Affero has -released a new version of the Affero GPL which permits relicensing under -this license. - - The precise terms and conditions for copying, distribution and -modification follow. - - TERMS AND CONDITIONS - - 0. Definitions. - - "This License" refers to version 3 of the GNU Affero General Public License. - - "Copyright" also means copyright-like laws that apply to other kinds of -works, such as semiconductor masks. - - "The Program" refers to any copyrightable work licensed under this -License. Each licensee is addressed as "you". "Licensees" and -"recipients" may be individuals or organizations. - - To "modify" a work means to copy from or adapt all or part of the work -in a fashion requiring copyright permission, other than the making of an -exact copy. The resulting work is called a "modified version" of the -earlier work or a work "based on" the earlier work. - - A "covered work" means either the unmodified Program or a work based -on the Program. - - To "propagate" a work means to do anything with it that, without -permission, would make you directly or secondarily liable for -infringement under applicable copyright law, except executing it on a -computer or modifying a private copy. Propagation includes copying, -distribution (with or without modification), making available to the -public, and in some countries other activities as well. - - To "convey" a work means any kind of propagation that enables other -parties to make or receive copies. Mere interaction with a user through -a computer network, with no transfer of a copy, is not conveying. - - An interactive user interface displays "Appropriate Legal Notices" -to the extent that it includes a convenient and prominently visible -feature that (1) displays an appropriate copyright notice, and (2) -tells the user that there is no warranty for the work (except to the -extent that warranties are provided), that licensees may convey the -work under this License, and how to view a copy of this License. If -the interface presents a list of user commands or options, such as a -menu, a prominent item in the list meets this criterion. - - 1. Source Code. - - The "source code" for a work means the preferred form of the work -for making modifications to it. "Object code" means any non-source -form of a work. - - A "Standard Interface" means an interface that either is an official -standard defined by a recognized standards body, or, in the case of -interfaces specified for a particular programming language, one that -is widely used among developers working in that language. - - The "System Libraries" of an executable work include anything, other -than the work as a whole, that (a) is included in the normal form of -packaging a Major Component, but which is not part of that Major -Component, and (b) serves only to enable use of the work with that -Major Component, or to implement a Standard Interface for which an -implementation is available to the public in source code form. A -"Major Component", in this context, means a major essential component -(kernel, window system, and so on) of the specific operating system -(if any) on which the executable work runs, or a compiler used to -produce the work, or an object code interpreter used to run it. - - The "Corresponding Source" for a work in object code form means all -the source code needed to generate, install, and (for an executable -work) run the object code and to modify the work, including scripts to -control those activities. However, it does not include the work's -System Libraries, or general-purpose tools or generally available free -programs which are used unmodified in performing those activities but -which are not part of the work. For example, Corresponding Source -includes interface definition files associated with source files for -the work, and the source code for shared libraries and dynamically -linked subprograms that the work is specifically designed to require, -such as by intimate data communication or control flow between those -subprograms and other parts of the work. - - The Corresponding Source need not include anything that users -can regenerate automatically from other parts of the Corresponding -Source. - - The Corresponding Source for a work in source code form is that -same work. - - 2. Basic Permissions. - - All rights granted under this License are granted for the term of -copyright on the Program, and are irrevocable provided the stated -conditions are met. This License explicitly affirms your unlimited -permission to run the unmodified Program. The output from running a -covered work is covered by this License only if the output, given its -content, constitutes a covered work. This License acknowledges your -rights of fair use or other equivalent, as provided by copyright law. - - You may make, run and propagate covered works that you do not -convey, without conditions so long as your license otherwise remains -in force. You may convey covered works to others for the sole purpose -of having them make modifications exclusively for you, or provide you -with facilities for running those works, provided that you comply with -the terms of this License in conveying all material for which you do -not control copyright. Those thus making or running the covered works -for you must do so exclusively on your behalf, under your direction -and control, on terms that prohibit them from making any copies of -your copyrighted material outside their relationship with you. - - Conveying under any other circumstances is permitted solely under -the conditions stated below. Sublicensing is not allowed; section 10 -makes it unnecessary. - - 3. Protecting Users' Legal Rights From Anti-Circumvention Law. - - No covered work shall be deemed part of an effective technological -measure under any applicable law fulfilling obligations under article -11 of the WIPO copyright treaty adopted on 20 December 1996, or -similar laws prohibiting or restricting circumvention of such -measures. - - When you convey a covered work, you waive any legal power to forbid -circumvention of technological measures to the extent such circumvention -is effected by exercising rights under this License with respect to -the covered work, and you disclaim any intention to limit operation or -modification of the work as a means of enforcing, against the work's -users, your or third parties' legal rights to forbid circumvention of -technological measures. - - 4. Conveying Verbatim Copies. - - You may convey verbatim copies of the Program's source code as you -receive it, in any medium, provided that you conspicuously and -appropriately publish on each copy an appropriate copyright notice; -keep intact all notices stating that this License and any -non-permissive terms added in accord with section 7 apply to the code; -keep intact all notices of the absence of any warranty; and give all -recipients a copy of this License along with the Program. - - You may charge any price or no price for each copy that you convey, -and you may offer support or warranty protection for a fee. - - 5. Conveying Modified Source Versions. - - You may convey a work based on the Program, or the modifications to -produce it from the Program, in the form of source code under the -terms of section 4, provided that you also meet all of these conditions: - - a) The work must carry prominent notices stating that you modified - it, and giving a relevant date. - - b) The work must carry prominent notices stating that it is - released under this License and any conditions added under section - 7. This requirement modifies the requirement in section 4 to - "keep intact all notices". - - c) You must license the entire work, as a whole, under this - License to anyone who comes into possession of a copy. This - License will therefore apply, along with any applicable section 7 - additional terms, to the whole of the work, and all its parts, - regardless of how they are packaged. This License gives no - permission to license the work in any other way, but it does not - invalidate such permission if you have separately received it. - - d) If the work has interactive user interfaces, each must display - Appropriate Legal Notices; however, if the Program has interactive - interfaces that do not display Appropriate Legal Notices, your - work need not make them do so. - - A compilation of a covered work with other separate and independent -works, which are not by their nature extensions of the covered work, -and which are not combined with it such as to form a larger program, -in or on a volume of a storage or distribution medium, is called an -"aggregate" if the compilation and its resulting copyright are not -used to limit the access or legal rights of the compilation's users -beyond what the individual works permit. Inclusion of a covered work -in an aggregate does not cause this License to apply to the other -parts of the aggregate. - - 6. Conveying Non-Source Forms. - - You may convey a covered work in object code form under the terms -of sections 4 and 5, provided that you also convey the -machine-readable Corresponding Source under the terms of this License, -in one of these ways: - - a) Convey the object code in, or embodied in, a physical product - (including a physical distribution medium), accompanied by the - Corresponding Source fixed on a durable physical medium - customarily used for software interchange. - - b) Convey the object code in, or embodied in, a physical product - (including a physical distribution medium), accompanied by a - written offer, valid for at least three years and valid for as - long as you offer spare parts or customer support for that product - model, to give anyone who possesses the object code either (1) a - copy of the Corresponding Source for all the software in the - product that is covered by this License, on a durable physical - medium customarily used for software interchange, for a price no - more than your reasonable cost of physically performing this - conveying of source, or (2) access to copy the - Corresponding Source from a network server at no charge. - - c) Convey individual copies of the object code with a copy of the - written offer to provide the Corresponding Source. This - alternative is allowed only occasionally and noncommercially, and - only if you received the object code with such an offer, in accord - with subsection 6b. - - d) Convey the object code by offering access from a designated - place (gratis or for a charge), and offer equivalent access to the - Corresponding Source in the same way through the same place at no - further charge. You need not require recipients to copy the - Corresponding Source along with the object code. If the place to - copy the object code is a network server, the Corresponding Source - may be on a different server (operated by you or a third party) - that supports equivalent copying facilities, provided you maintain - clear directions next to the object code saying where to find the - Corresponding Source. Regardless of what server hosts the - Corresponding Source, you remain obligated to ensure that it is - available for as long as needed to satisfy these requirements. - - e) Convey the object code using peer-to-peer transmission, provided - you inform other peers where the object code and Corresponding - Source of the work are being offered to the general public at no - charge under subsection 6d. - - A separable portion of the object code, whose source code is excluded -from the Corresponding Source as a System Library, need not be -included in conveying the object code work. - - A "User Product" is either (1) a "consumer product", which means any -tangible personal property which is normally used for personal, family, -or household purposes, or (2) anything designed or sold for incorporation -into a dwelling. In determining whether a product is a consumer product, -doubtful cases shall be resolved in favor of coverage. For a particular -product received by a particular user, "normally used" refers to a -typical or common use of that class of product, regardless of the status -of the particular user or of the way in which the particular user -actually uses, or expects or is expected to use, the product. A product -is a consumer product regardless of whether the product has substantial -commercial, industrial or non-consumer uses, unless such uses represent -the only significant mode of use of the product. - - "Installation Information" for a User Product means any methods, -procedures, authorization keys, or other information required to install -and execute modified versions of a covered work in that User Product from -a modified version of its Corresponding Source. The information must -suffice to ensure that the continued functioning of the modified object -code is in no case prevented or interfered with solely because -modification has been made. - - If you convey an object code work under this section in, or with, or -specifically for use in, a User Product, and the conveying occurs as -part of a transaction in which the right of possession and use of the -User Product is transferred to the recipient in perpetuity or for a -fixed term (regardless of how the transaction is characterized), the -Corresponding Source conveyed under this section must be accompanied -by the Installation Information. But this requirement does not apply -if neither you nor any third party retains the ability to install -modified object code on the User Product (for example, the work has -been installed in ROM). - - The requirement to provide Installation Information does not include a -requirement to continue to provide support service, warranty, or updates -for a work that has been modified or installed by the recipient, or for -the User Product in which it has been modified or installed. Access to a -network may be denied when the modification itself materially and -adversely affects the operation of the network or violates the rules and -protocols for communication across the network. - - Corresponding Source conveyed, and Installation Information provided, -in accord with this section must be in a format that is publicly -documented (and with an implementation available to the public in -source code form), and must require no special password or key for -unpacking, reading or copying. - - 7. Additional Terms. - - "Additional permissions" are terms that supplement the terms of this -License by making exceptions from one or more of its conditions. -Additional permissions that are applicable to the entire Program shall -be treated as though they were included in this License, to the extent -that they are valid under applicable law. If additional permissions -apply only to part of the Program, that part may be used separately -under those permissions, but the entire Program remains governed by -this License without regard to the additional permissions. - - When you convey a copy of a covered work, you may at your option -remove any additional permissions from that copy, or from any part of -it. (Additional permissions may be written to require their own -removal in certain cases when you modify the work.) You may place -additional permissions on material, added by you to a covered work, -for which you have or can give appropriate copyright permission. - - Notwithstanding any other provision of this License, for material you -add to a covered work, you may (if authorized by the copyright holders of -that material) supplement the terms of this License with terms: - - a) Disclaiming warranty or limiting liability differently from the - terms of sections 15 and 16 of this License; or - - b) Requiring preservation of specified reasonable legal notices or - author attributions in that material or in the Appropriate Legal - Notices displayed by works containing it; or - - c) Prohibiting misrepresentation of the origin of that material, or - requiring that modified versions of such material be marked in - reasonable ways as different from the original version; or - - d) Limiting the use for publicity purposes of names of licensors or - authors of the material; or - - e) Declining to grant rights under trademark law for use of some - trade names, trademarks, or service marks; or - - f) Requiring indemnification of licensors and authors of that - material by anyone who conveys the material (or modified versions of - it) with contractual assumptions of liability to the recipient, for - any liability that these contractual assumptions directly impose on - those licensors and authors. - - All other non-permissive additional terms are considered "further -restrictions" within the meaning of section 10. If the Program as you -received it, or any part of it, contains a notice stating that it is -governed by this License along with a term that is a further -restriction, you may remove that term. If a license document contains -a further restriction but permits relicensing or conveying under this -License, you may add to a covered work material governed by the terms -of that license document, provided that the further restriction does -not survive such relicensing or conveying. - - If you add terms to a covered work in accord with this section, you -must place, in the relevant source files, a statement of the -additional terms that apply to those files, or a notice indicating -where to find the applicable terms. - - Additional terms, permissive or non-permissive, may be stated in the -form of a separately written license, or stated as exceptions; -the above requirements apply either way. - - 8. Termination. - - You may not propagate or modify a covered work except as expressly -provided under this License. Any attempt otherwise to propagate or -modify it is void, and will automatically terminate your rights under -this License (including any patent licenses granted under the third -paragraph of section 11). - - However, if you cease all violation of this License, then your -license from a particular copyright holder is reinstated (a) -provisionally, unless and until the copyright holder explicitly and -finally terminates your license, and (b) permanently, if the copyright -holder fails to notify you of the violation by some reasonable means -prior to 60 days after the cessation. - - Moreover, your license from a particular copyright holder is -reinstated permanently if the copyright holder notifies you of the -violation by some reasonable means, this is the first time you have -received notice of violation of this License (for any work) from that -copyright holder, and you cure the violation prior to 30 days after -your receipt of the notice. - - Termination of your rights under this section does not terminate the -licenses of parties who have received copies or rights from you under -this License. If your rights have been terminated and not permanently -reinstated, you do not qualify to receive new licenses for the same -material under section 10. - - 9. Acceptance Not Required for Having Copies. - - You are not required to accept this License in order to receive or -run a copy of the Program. Ancillary propagation of a covered work -occurring solely as a consequence of using peer-to-peer transmission -to receive a copy likewise does not require acceptance. However, -nothing other than this License grants you permission to propagate or -modify any covered work. These actions infringe copyright if you do -not accept this License. Therefore, by modifying or propagating a -covered work, you indicate your acceptance of this License to do so. - - 10. Automatic Licensing of Downstream Recipients. - - Each time you convey a covered work, the recipient automatically -receives a license from the original licensors, to run, modify and -propagate that work, subject to this License. You are not responsible -for enforcing compliance by third parties with this License. - - An "entity transaction" is a transaction transferring control of an -organization, or substantially all assets of one, or subdividing an -organization, or merging organizations. If propagation of a covered -work results from an entity transaction, each party to that -transaction who receives a copy of the work also receives whatever -licenses to the work the party's predecessor in interest had or could -give under the previous paragraph, plus a right to possession of the -Corresponding Source of the work from the predecessor in interest, if -the predecessor has it or can get it with reasonable efforts. - - You may not impose any further restrictions on the exercise of the -rights granted or affirmed under this License. For example, you may -not impose a license fee, royalty, or other charge for exercise of -rights granted under this License, and you may not initiate litigation -(including a cross-claim or counterclaim in a lawsuit) alleging that -any patent claim is infringed by making, using, selling, offering for -sale, or importing the Program or any portion of it. - - 11. Patents. - - A "contributor" is a copyright holder who authorizes use under this -License of the Program or a work on which the Program is based. The -work thus licensed is called the contributor's "contributor version". - - A contributor's "essential patent claims" are all patent claims -owned or controlled by the contributor, whether already acquired or -hereafter acquired, that would be infringed by some manner, permitted -by this License, of making, using, or selling its contributor version, -but do not include claims that would be infringed only as a -consequence of further modification of the contributor version. For -purposes of this definition, "control" includes the right to grant -patent sublicenses in a manner consistent with the requirements of -this License. - - Each contributor grants you a non-exclusive, worldwide, royalty-free -patent license under the contributor's essential patent claims, to -make, use, sell, offer for sale, import and otherwise run, modify and -propagate the contents of its contributor version. - - In the following three paragraphs, a "patent license" is any express -agreement or commitment, however denominated, not to enforce a patent -(such as an express permission to practice a patent or covenant not to -sue for patent infringement). To "grant" such a patent license to a -party means to make such an agreement or commitment not to enforce a -patent against the party. - - If you convey a covered work, knowingly relying on a patent license, -and the Corresponding Source of the work is not available for anyone -to copy, free of charge and under the terms of this License, through a -publicly available network server or other readily accessible means, -then you must either (1) cause the Corresponding Source to be so -available, or (2) arrange to deprive yourself of the benefit of the -patent license for this particular work, or (3) arrange, in a manner -consistent with the requirements of this License, to extend the patent -license to downstream recipients. "Knowingly relying" means you have -actual knowledge that, but for the patent license, your conveying the -covered work in a country, or your recipient's use of the covered work -in a country, would infringe one or more identifiable patents in that -country that you have reason to believe are valid. - - If, pursuant to or in connection with a single transaction or -arrangement, you convey, or propagate by procuring conveyance of, a -covered work, and grant a patent license to some of the parties -receiving the covered work authorizing them to use, propagate, modify -or convey a specific copy of the covered work, then the patent license -you grant is automatically extended to all recipients of the covered -work and works based on it. - - A patent license is "discriminatory" if it does not include within -the scope of its coverage, prohibits the exercise of, or is -conditioned on the non-exercise of one or more of the rights that are -specifically granted under this License. You may not convey a covered -work if you are a party to an arrangement with a third party that is -in the business of distributing software, under which you make payment -to the third party based on the extent of your activity of conveying -the work, and under which the third party grants, to any of the -parties who would receive the covered work from you, a discriminatory -patent license (a) in connection with copies of the covered work -conveyed by you (or copies made from those copies), or (b) primarily -for and in connection with specific products or compilations that -contain the covered work, unless you entered into that arrangement, -or that patent license was granted, prior to 28 March 2007. - - Nothing in this License shall be construed as excluding or limiting -any implied license or other defenses to infringement that may -otherwise be available to you under applicable patent law. - - 12. No Surrender of Others' Freedom. - - If conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot convey a -covered work so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you may -not convey it at all. For example, if you agree to terms that obligate you -to collect a royalty for further conveying from those to whom you convey -the Program, the only way you could satisfy both those terms and this -License would be to refrain entirely from conveying the Program. - - 13. Remote Network Interaction; Use with the GNU General Public License. - - Notwithstanding any other provision of this License, if you modify the -Program, your modified version must prominently offer all users -interacting with it remotely through a computer network (if your version -supports such interaction) an opportunity to receive the Corresponding -Source of your version by providing access to the Corresponding Source -from a network server at no charge, through some standard or customary -means of facilitating copying of software. This Corresponding Source -shall include the Corresponding Source for any work covered by version 3 -of the GNU General Public License that is incorporated pursuant to the -following paragraph. - - Notwithstanding any other provision of this License, you have -permission to link or combine any covered work with a work licensed -under version 3 of the GNU General Public License into a single -combined work, and to convey the resulting work. The terms of this -License will continue to apply to the part which is the covered work, -but the work with which it is combined will remain governed by version -3 of the GNU General Public License. - - 14. Revised Versions of this License. - - The Free Software Foundation may publish revised and/or new versions of -the GNU Affero General Public License from time to time. Such new versions -will be similar in spirit to the present version, but may differ in detail to -address new problems or concerns. - - Each version is given a distinguishing version number. If the -Program specifies that a certain numbered version of the GNU Affero General -Public License "or any later version" applies to it, you have the -option of following the terms and conditions either of that numbered -version or of any later version published by the Free Software -Foundation. If the Program does not specify a version number of the -GNU Affero General Public License, you may choose any version ever published -by the Free Software Foundation. - - If the Program specifies that a proxy can decide which future -versions of the GNU Affero General Public License can be used, that proxy's -public statement of acceptance of a version permanently authorizes you -to choose that version for the Program. - - Later license versions may give you additional or different -permissions. However, no additional obligations are imposed on any -author or copyright holder as a result of your choosing to follow a -later version. - - 15. Disclaimer of Warranty. - - THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY -APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT -HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY -OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, -THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM -IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF -ALL NECESSARY SERVICING, REPAIR OR CORRECTION. - - 16. Limitation of Liability. - - IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS -THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY -GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE -USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF -DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD -PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), -EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF -SUCH DAMAGES. - - 17. Interpretation of Sections 15 and 16. - - If the disclaimer of warranty and limitation of liability provided -above cannot be given local legal effect according to their terms, -reviewing courts shall apply local law that most closely approximates -an absolute waiver of all civil liability in connection with the -Program, unless a warranty or assumption of liability accompanies a -copy of the Program in return for a fee. - - END OF TERMS AND CONDITIONS - - How to Apply These Terms to Your New Programs - - If you develop a new program, and you want it to be of the greatest -possible use to the public, the best way to achieve this is to make it -free software which everyone can redistribute and change under these terms. - - To do so, attach the following notices to the program. It is safest -to attach them to the start of each source file to most effectively -state the exclusion of warranty; and each file should have at least -the "copyright" line and a pointer to where the full notice is found. - - - Copyright (C) - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU Affero General Public License as published - by the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU Affero General Public License for more details. - - You should have received a copy of the GNU Affero General Public License - along with this program. If not, see . - -Also add information on how to contact you by electronic and paper mail. - - If your software can interact with users remotely through a computer -network, you should also make sure that it provides a way for users to -get its source. For example, if your program is a web application, its -interface could display a "Source" link that leads users to an archive -of the code. There are many ways you could offer source, and different -solutions will be better for different programs; see section 13 for the -specific requirements. - - You should also get your employer (if you work as a programmer) or school, -if any, to sign a "copyright disclaimer" for the program, if necessary. -For more information on this, and how to apply and follow the GNU AGPL, see -. diff --git a/charts/nextcloud-lc/files/apcu.config.php b/charts/nextcloud-lc/files/apcu.config.php deleted file mode 100644 index 69fed87..0000000 --- a/charts/nextcloud-lc/files/apcu.config.php +++ /dev/null @@ -1,4 +0,0 @@ - '\OC\Memcache\APCu', -); diff --git a/charts/nextcloud-lc/files/auto.config.php b/charts/nextcloud-lc/files/auto.config.php deleted file mode 100644 index 5c8725a..0000000 --- a/charts/nextcloud-lc/files/auto.config.php +++ /dev/null @@ -1,29 +0,0 @@ - array ( - 0 => array ( - 'path' => OC::$SERVERROOT.'/apps', - 'url' => '/apps', - 'writable' => false, - ), - 1 => array ( - 'path' => $directory_custom_apps, - 'url' => '/custom_apps', - 'writable' => true, - ), - ), -); diff --git a/charts/nextcloud-lc/files/dir-data.config.php b/charts/nextcloud-lc/files/dir-data.config.php deleted file mode 100644 index 8eb736a..0000000 --- a/charts/nextcloud-lc/files/dir-data.config.php +++ /dev/null @@ -1,8 +0,0 @@ - $directory_data, -); diff --git a/charts/nextcloud-lc/files/redis.config.php b/charts/nextcloud-lc/files/redis.config.php deleted file mode 100644 index a5fde3c..0000000 --- a/charts/nextcloud-lc/files/redis.config.php +++ /dev/null @@ -1,17 +0,0 @@ - '\OC\Memcache\Redis', - 'memcache.locking' => '\OC\Memcache\Redis', - 'redis' => array( - 'host' => getenv('REDIS_HOST'), - 'password' => (string) getenv('REDIS_HOST_PASSWORD'), - ), - ); - - if (getenv('REDIS_HOST_PORT') !== false) { - $CONFIG['redis']['port'] = (int) getenv('REDIS_HOST_PORT'); - } elseif (getenv('REDIS_HOST')[0] != '/') { - $CONFIG['redis']['port'] = 6379; - } -} diff --git a/charts/nextcloud-lc/files/reverse-proxy.config.php b/charts/nextcloud-lc/files/reverse-proxy.config.php deleted file mode 100644 index 7df0415..0000000 --- a/charts/nextcloud-lc/files/reverse-proxy.config.php +++ /dev/null @@ -1,30 +0,0 @@ - array( - 'class' => '\OC\Files\ObjectStore\S3', - 'arguments' => array( - 'bucket' => getenv('OBJECTSTORE_S3_BUCKET'), - 'region' => getenv('OBJECTSTORE_S3_REGION') ?: '', - 'hostname' => getenv('OBJECTSTORE_S3_HOST') ?: '', - 'port' => getenv('OBJECTSTORE_S3_PORT') ?: '', - 'objectPrefix' => getenv("OBJECTSTORE_S3_OBJECT_PREFIX") ? getenv("OBJECTSTORE_S3_OBJECT_PREFIX") : "urn:oid:", - 'autocreate' => (strtolower($autocreate) === 'false' || $autocreate == false) ? false : true, - 'use_ssl' => (strtolower($use_ssl) === 'false' || $use_ssl == false) ? false : true, - // required for some non Amazon S3 implementations - 'use_path_style' => $use_path == true && strtolower($use_path) !== 'false', - // required for older protocol versions - 'legacy_auth' => $use_legacyauth == true && strtolower($use_legacyauth) !== 'false' - ) - ) - ); - - if (getenv('OBJECTSTORE_S3_KEY_FILE') && file_exists(getenv('OBJECTSTORE_S3_KEY_FILE'))) { - $CONFIG['objectstore']['arguments']['key'] = trim(file_get_contents(getenv('OBJECTSTORE_S3_KEY_FILE'))); - } elseif (getenv('OBJECTSTORE_S3_KEY')) { - $CONFIG['objectstore']['arguments']['key'] = getenv('OBJECTSTORE_S3_KEY'); - } else { - $CONFIG['objectstore']['arguments']['key'] = ''; - } - - if (getenv('OBJECTSTORE_S3_SECRET_FILE') && file_exists(getenv('OBJECTSTORE_S3_SECRET_FILE'))) { - $CONFIG['objectstore']['arguments']['secret'] = trim(file_get_contents(getenv('OBJECTSTORE_S3_SECRET_FILE'))); - } elseif (getenv('OBJECTSTORE_S3_SECRET')) { - $CONFIG['objectstore']['arguments']['secret'] = getenv('OBJECTSTORE_S3_SECRET'); - } else { - $CONFIG['objectstore']['arguments']['secret'] = ''; - } -} diff --git a/charts/nextcloud-lc/files/smtp.config.php b/charts/nextcloud-lc/files/smtp.config.php deleted file mode 100644 index 5006fe4..0000000 --- a/charts/nextcloud-lc/files/smtp.config.php +++ /dev/null @@ -1,22 +0,0 @@ - 'smtp', - 'mail_smtphost' => getenv('SMTP_HOST'), - 'mail_smtpport' => getenv('SMTP_PORT') ?: (getenv('SMTP_SECURE') ? 465 : 25), - 'mail_smtpsecure' => getenv('SMTP_SECURE') ?: '', - 'mail_smtpauth' => getenv('SMTP_NAME') && (getenv('SMTP_PASSWORD') || (getenv('SMTP_PASSWORD_FILE') && file_exists(getenv('SMTP_PASSWORD_FILE')))), - 'mail_smtpauthtype' => getenv('SMTP_AUTHTYPE') ?: 'LOGIN', - 'mail_smtpname' => getenv('SMTP_NAME') ?: '', - 'mail_from_address' => getenv('MAIL_FROM_ADDRESS'), - 'mail_domain' => getenv('MAIL_DOMAIN'), - ); - - if (getenv('SMTP_PASSWORD_FILE') && file_exists(getenv('SMTP_PASSWORD_FILE'))) { - $CONFIG['mail_smtppassword'] = trim(file_get_contents(getenv('SMTP_PASSWORD_FILE'))); - } elseif (getenv('SMTP_PASSWORD')) { - $CONFIG['mail_smtppassword'] = getenv('SMTP_PASSWORD'); - } else { - $CONFIG['mail_smtppassword'] = ''; - } -} diff --git a/charts/nextcloud-lc/files/swift.config.php b/charts/nextcloud-lc/files/swift.config.php deleted file mode 100644 index 47ada56..0000000 --- a/charts/nextcloud-lc/files/swift.config.php +++ /dev/null @@ -1,31 +0,0 @@ - [ - 'class' => 'OC\\Files\\ObjectStore\\Swift', - 'arguments' => [ - 'autocreate' => $autocreate == true && strtolower($autocreate) !== 'false', - 'user' => [ - 'name' => getenv('OBJECTSTORE_SWIFT_USER_NAME'), - 'password' => getenv('OBJECTSTORE_SWIFT_USER_PASSWORD'), - 'domain' => [ - 'name' => (getenv('OBJECTSTORE_SWIFT_USER_DOMAIN')) ?: 'Default', - ], - ], - 'scope' => [ - 'project' => [ - 'name' => getenv('OBJECTSTORE_SWIFT_PROJECT_NAME'), - 'domain' => [ - 'name' => (getenv('OBJECTSTORE_SWIFT_PROJECT_DOMAIN')) ?: 'Default', - ], - ], - ], - 'serviceName' => (getenv('OBJECTSTORE_SWIFT_SERVICE_NAME')) ?: 'swift', - 'region' => getenv('OBJECTSTORE_SWIFT_REGION'), - 'url' => getenv('OBJECTSTORE_SWIFT_URL'), - 'bucket' => getenv('OBJECTSTORE_SWIFT_CONTAINER_NAME'), - ] - ] - ); -} diff --git a/charts/nextcloud-lc/files/upgrade-disable-web.config.php b/charts/nextcloud-lc/files/upgrade-disable-web.config.php deleted file mode 100644 index cb00b43..0000000 --- a/charts/nextcloud-lc/files/upgrade-disable-web.config.php +++ /dev/null @@ -1,4 +0,0 @@ - true, -); diff --git a/charts/nextcloud-lc/icon.png b/charts/nextcloud-lc/icon.png deleted file mode 100644 index ab53cfb18cd85efadea263a851b130b435ed27be..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 29464 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 diff --git a/charts/nextcloud-lc/templates/_helpers.tpl b/charts/nextcloud-lc/templates/_helpers.tpl deleted file mode 100644 index 77ebb54..0000000 --- a/charts/nextcloud-lc/templates/_helpers.tpl +++ /dev/null @@ -1,285 +0,0 @@ -{{/* -Expand the name of the chart. -*/}} -{{- define "nextcloud.name" -}} -{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" -}} -{{- end -}} - -{{/* -Create a default fully qualified app name. -We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec). -If release name contains chart name it will be used as a full name. -*/}} -{{- define "nextcloud.fullname" -}} -{{- if .Values.fullnameOverride -}} -{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" -}} -{{- else -}} -{{- $name := default .Chart.Name .Values.nameOverride -}} -{{- if contains $name .Release.Name -}} -{{- .Release.Name | trunc 63 | trimSuffix "-" -}} -{{- else -}} -{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" -}} -{{- end -}} -{{- end -}} -{{- end -}} - -{{/* -Create a default fully qualified redis app name. -We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec). -*/}} -{{- define "nextcloud.redis.fullname" -}} -# {{- printf "%s-redis" .Release.Name | trunc 63 | trimSuffix "-" -}} -{{- printf .Values.externalRedis.host .Release.Name | trunc 63 | trimSuffix "-" -}} -# {{- printf "external-redis" | trunc 63 | trimSuffix "-" -}} -{{- end -}} - -{{/* -Create chart name and version as used by the chart label. -*/}} -{{- define "nextcloud.chart" -}} -{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" -}} -{{- end -}} - -{{/* -Create image name that is used in the deployment -*/}} -{{- define "nextcloud.image" -}} -{{- printf "%s/%s:%s" .Values.image.nextcloud.registry .Values.image.nextcloud.repository .Values.image.nextcloud.tag -}} -{{- end -}} - -{{- define "nextcloud.ingress.apiVersion" -}} -{{- if semverCompare "<1.14-0" .Capabilities.KubeVersion.GitVersion -}} -{{- print "extensions/v1beta1" -}} -{{- else if semverCompare "<1.19-0" .Capabilities.KubeVersion.GitVersion -}} -{{- print "networking.k8s.io/v1beta1" -}} -{{- else -}} -{{- print "networking.k8s.io/v1" -}} -{{- end }} -{{- end -}} - -{{/* -Create environment variables used to configure the nextcloud container as well as the cron sidecar container. -*/}} -{{- define "nextcloud.env" -}} - {{- if eq .Values.externalDatabase.type "postgresql" }} -- name: POSTGRES_HOST - value: {{ .Values.externalDatabase.host | quote }} -- name: POSTGRES_DB - value: {{ .Values.externalDatabase.database | quote }} -- name: POSTGRES_USER - valueFrom: - secretKeyRef: - name: {{ .Values.externalDatabase.existingSecret.secretName | default (printf "%s-db" .Release.Name) }} - key: {{ .Values.externalDatabase.existingSecret.usernameKey }} -- name: POSTGRES_PASSWORD - valueFrom: - secretKeyRef: - name: {{ .Values.externalDatabase.existingSecret.secretName | default (printf "%s-db" .Release.Name) }} - key: {{ .Values.externalDatabase.existingSecret.passwordKey }} - {{- else if eq .Values.externalDatabase.type "mysql" }} -- name: MYSQL_HOST - value: {{ .Values.externalDatabase.host | quote }} -- name: MYSQL_DATABASE - value: {{ .Values.externalDatabase.database | quote }} -- name: MYSQL_USER - valueFrom: - secretKeyRef: - name: {{ .Values.externalDatabase.existingSecret.secretName | default (printf "%s-db" .Release.Name) }} - key: {{ .Values.externalDatabase.existingSecret.usernameKey }} -- name: MYSQL_PASSWORD - valueFrom: - secretKeyRef: - name: {{ .Values.externalDatabase.existingSecret.secretName | default (printf "%s-db" .Release.Name) }} - key: {{ .Values.externalDatabase.existingSecret.passwordKey }} - {{- end }} -- name: NEXTCLOUD_ADMIN_USER - valueFrom: - secretKeyRef: - name: {{ .Values.nextcloud.existingSecret.secretName | default (include "nextcloud.fullname" .) }} - key: {{ .Values.nextcloud.existingSecret.usernameKey }} -- name: NEXTCLOUD_ADMIN_PASSWORD - valueFrom: - secretKeyRef: - name: {{ .Values.nextcloud.existingSecret.secretName | default (include "nextcloud.fullname" .) }} - key: {{ .Values.nextcloud.existingSecret.passwordKey }} -- name: NEXTCLOUD_TRUSTED_DOMAINS - value: {{ .Values.nextcloud.host }} -{{- if ne (int .Values.nextcloud.update) 0 }} -- name: NEXTCLOUD_UPDATE - value: {{ .Values.nextcloud.update | quote }} -{{- end }} -- name: NEXTCLOUD_DATA_DIR - value: {{ .Values.persistence.nextcloudData.mountPath | quote }} -{{- if .Values.nextcloud.mail.enabled }} -- name: SMTP_HOST - value: {{ .Values.nextcloud.mail.smtp.host | quote }} - valueFrom: - secretKeyRef: - name: {{ .Values.nextcloud.existingSecret.secretName | default (include "nextcloud.fullname" .) }} - key: {{ .Values.nextcloud.existingSecret.smtpHostKey }} -- name: SMTP_NAME - valueFrom: - secretKeyRef: - name: {{ .Values.nextcloud.existingSecret.secretName | default (include "nextcloud.fullname" .) }} - key: {{ .Values.nextcloud.existingSecret.smtpUsernameKey }} -- name: SMTP_PASSWORD - valueFrom: - secretKeyRef: - name: {{ .Values.nextcloud.existingSecret.secretName | default (include "nextcloud.fullname" .) }} - key: {{ .Values.nextcloud.existingSecret.smtpPasswordKey }} -{{- end }} -- name: REDIS_HOST - value: {{ .Values.externalRedis.host | quote }} -- name: REDIS_HOST_PORT - value: {{ .Values.externalRedis.port | quote }} -{{- if .Values.externalRedis.auth.enabled }} -- name: REDIS_HOST_PASSWORD - valueFrom: - secretKeyRef: - name: {{ .Values.externalRedis.auth.existingSecret.secretName | default (printf "%s-redis" .Release.Name) }} - key: {{ .Values.externalRedis.auth.existingSecret.existingSecretPasswordKey }} -{{- end }} -- name: NEXTCLOUD_PATH_CUSTOM_APPS - value: {{ .Values.persistence.nextcloudCustomApps.mountPath | quote }} -- name: NEXTCLOUD_PATH_DATA - value: {{ .Values.persistence.nextcloudData.mountPath | quote }} -{{- if .Values.nextcloud.extraEnv }} -{{ toYaml .Values.nextcloud.extraEnv }} -{{- end }} -{{- end -}} - -{{/* -Create volume mounts for the nextcloud container as well as the cron sidecar container. -*/}} -{{- define "nextcloud.volumeMounts" -}} -- name: nextcloud-config - # mountPath: /var/www/html/config/ - mountPath: /config/www/nextcloud/config/ -{{- if .Values.nginx.enabled }} -- name: nextcloud-nginx-config - mountPath: /etc/nginx/conf.d/ -{{- end }} -{{/* -files >>> -*/}} -- name: vol-config-files -# - name: vol-config-files-apcu - # mountPath: /var/www/html/config/apcu.config.php - mountPath: /config/www/nextcloud/config/apcu.config.php - subPath: apcu.config.php -- name: vol-config-files -# - name: vol-config-files-autoconfig - # mountPath: /var/www/html/config/auto.config.php - mountPath: /config/www/nextcloud/config/auto.config.php - subPath: auto.config.php -- name: vol-config-files -# - name: vol-config-files-dir-apps - # mountPath: /var/www/html/config/dir-apps.config.php - mountPath: /config/www/nextcloud/config/dir-apps.config.php - subPath: dir-apps.config.php -- name: vol-config-files -# - name: vol-config-files-dir-data - # mountPath: /var/www/html/config/dir-data.config.php - mountPath: /config/www/nextcloud/config/dir-data.config.php - subPath: dir-data.config.php -- name: vol-config-files -# - name: vol-config-files-redis - # mountPath: /var/www/html/config/redis.config.php - mountPath: /config/www/nextcloud/config/redis.config.php - subPath: redis.config.php -- name: vol-config-files -# - name: vol-config-files-reverse-proxy - # mountPath: /var/www/html/config/reverse-proxy.config.php - mountPath: /config/www/nextcloud/config/reverse-proxy.config.php - subPath: reverse-proxy.config.php -- name: vol-config-files -# - name: vol-config-files-s3 - # mountPath: /var/www/html/config/s3.config.php - mountPath: /config/www/nextcloud/config/s3.config.php - subPath: s3.config.php -- name: vol-config-files -# - name: vol-config-files-smtp - # mountPath: /var/www/html/config/smtp.config.php - mountPath: /config/www/nextcloud/config/smtp.config.php - subPath: smtp.config.php -- name: vol-config-files -# - name: vol-config-files-swift - # mountPath: /var/www/html/config/swift.config.php - mountPath: /config/www/nextcloud/config/swift.config.php - subPath: swift.config.php -- name: vol-config-files -# - name: vol-config-files-upgrade-disable-web - # mountPath: /var/www/html/config/upgrade-disable-web.config.php - mountPath: /config/www/nextcloud/config/upgrade-disable-web.config.php - subPath: upgrade-disable-web.config.php -{{/* -files <<< -*/}} -- name: nextcloud-custom-apps - mountPath: {{ .Values.persistence.nextcloudCustomApps.mountPath | default "/config/custom_apps" }} - {{/* - subPath: {{ ternary "custom_apps" (printf "%s/custom_apps" .Values.nextcloud.persistence.subPath) (empty .Values.nextcloud.persistence.subPath) }} - */}} -- name: nextcloud-data - mountPath: {{ .Values.persistence.nextcloudData.mountPath | default "/data" }} - {{/* - subPath: {{ ternary "data" (printf "%s/data" .Values.persistence.nextcloudData.subPath) (empty .Values.persistence.nextcloudData.subPath) }} - */}} -{{- if .Values.nextcloud.extraVolumeMounts }} -{{ toYaml .Values.nextcloud.extraVolumeMounts }} -{{- end }} -{{- end -}} - -{{/* -Create volume mounts for the nextcloud container as well as the cron sidecar container. -*/}} -{{- define "nextcloud.probes" -}} -{{- with .Values.livenessProbe }} -{{- if .enabled }} -livenessProbe: - httpGet: - path: /status.php - port: {{ $.Values.nextcloud.containerPort }} - httpHeaders: - - name: Host - value: {{ $.Values.nextcloud.host | quote }} - initialDelaySeconds: {{ .initialDelaySeconds }} - periodSeconds: {{ .periodSeconds }} - timeoutSeconds: {{ .timeoutSeconds }} - successThreshold: {{ .successThreshold }} - failureThreshold: {{ .failureThreshold }} -{{- end }} -{{- end }} -{{- with .Values.readinessProbe }} -{{- if .enabled }} -readinessProbe: - httpGet: - path: /status.php - port: {{ $.Values.nextcloud.containerPort }} - httpHeaders: - - name: Host - value: {{ $.Values.nextcloud.host | quote }} - initialDelaySeconds: {{ .initialDelaySeconds }} - periodSeconds: {{ .periodSeconds }} - timeoutSeconds: {{ .timeoutSeconds }} - successThreshold: {{ .successThreshold }} - failureThreshold: {{ .failureThreshold }} -{{- end }} -{{- end }} -{{- with .Values.startupProbe }} -{{- if .enabled }} -startupProbe: - httpGet: - path: /status.php - port: {{ $.Values.nextcloud.containerPort }} - httpHeaders: - - name: Host - value: {{ $.Values.nextcloud.host | quote }} - initialDelaySeconds: {{ .initialDelaySeconds }} - periodSeconds: {{ .periodSeconds }} - timeoutSeconds: {{ .timeoutSeconds }} - successThreshold: {{ .successThreshold }} - failureThreshold: {{ .failureThreshold }} - {{- end }} - {{- end }} -{{- end -}} diff --git a/charts/nextcloud-lc/templates/metrics-deployment.yaml b/charts/nextcloud-lc/templates/metrics-deployment.yaml deleted file mode 100644 index ea30e91..0000000 --- a/charts/nextcloud-lc/templates/metrics-deployment.yaml +++ /dev/null @@ -1,75 +0,0 @@ -{{- if .Values.metrics.enabled }} -apiVersion: apps/v1 -kind: Deployment -metadata: - name: {{ template "nextcloud.fullname" . }}-metrics - labels: - app.kubernetes.io/name: {{ include "nextcloud.name" . }} - helm.sh/chart: {{ include "nextcloud.chart" . }} - app.kubernetes.io/instance: {{ .Release.Name }} - app.kubernetes.io/managed-by: {{ .Release.Service }} - app.kubernetes.io/component: metrics -spec: - replicas: {{ .Values.metrics.replicaCount }} - selector: - matchLabels: - app.kubernetes.io/name: {{ include "nextcloud.name" . }} - app.kubernetes.io/instance: {{ .Release.Name }} - app.kubernetes.io/component: metrics - template: - metadata: - annotations: {{- toYaml .Values.metrics.podAnnotations | nindent 8 }} - labels: - app.kubernetes.io/name: {{ include "nextcloud.name" . }} - app.kubernetes.io/instance: {{ .Release.Name }} - app.kubernetes.io/component: metrics - {{- if .Values.metrics.podLabels }} -{{ toYaml .Values.metrics.podLabels | indent 8 }} - {{- end }} - spec: - {{- if .Values.metrics.image.pullSecrets }} - imagePullSecrets: - {{- range .Values.metrics.image.pullSecrets }} - - name: {{ . }} - {{- end}} - {{- end }} - containers: - - name: metrics-exporter - image: "{{ .Values.metrics.image.repository }}:{{ .Values.metrics.image.tag }}" - imagePullPolicy: {{ .Values.metrics.image.pullPolicy }} - env: - {{- if .Values.metrics.token }} - - name: NEXTCLOUD_AUTH_TOKEN - valueFrom: - secretKeyRef: - name: {{ .Values.nextcloud.existingSecret.secretName | default (include "nextcloud.fullname" .) }} - key: {{ .Values.nextcloud.existingSecret.tokenKey }} - {{- else }} - - name: NEXTCLOUD_USERNAME - valueFrom: - secretKeyRef: - name: {{ .Values.nextcloud.existingSecret.secretName | default (include "nextcloud.fullname" .) }} - key: {{ .Values.nextcloud.existingSecret.usernameKey }} - - name: NEXTCLOUD_PASSWORD - valueFrom: - secretKeyRef: - name: {{ .Values.nextcloud.existingSecret.secretName | default (include "nextcloud.fullname" .) }} - key: {{ .Values.nextcloud.existingSecret.passwordKey }} - {{- end }} - # NEXTCLOUD_SERVER is used by metrics-exporter to reach the Nextcloud (K8s-)Service to grab the serverinfo api endpoint - - name: NEXTCLOUD_SERVER - value: http{{ if .Values.metrics.https }}s{{ end }}://{{ template "nextcloud.fullname" . }}:{{ .Values.service.port }} - - name: NEXTCLOUD_TIMEOUT - value: {{ .Values.metrics.timeout }} - - name: NEXTCLOUD_TLS_SKIP_VERIFY - value: {{ .Values.metrics.tlsSkipVerify | quote }} - ports: - - name: metrics - containerPort: 9205 - {{- if .Values.metrics.resources }} - resources: {{- toYaml .Values.metrics.resources | nindent 10 }} - {{- end }} - securityContext: - runAsUser: 1000 - runAsNonRoot: true -{{- end }} diff --git a/charts/nextcloud-lc/templates/metrics-service.yaml b/charts/nextcloud-lc/templates/metrics-service.yaml deleted file mode 100644 index 1d28745..0000000 --- a/charts/nextcloud-lc/templates/metrics-service.yaml +++ /dev/null @@ -1,32 +0,0 @@ -{{- if .Values.metrics.enabled }} -apiVersion: v1 -kind: Service -metadata: - name: {{ template "nextcloud.fullname" . }}-metrics - labels: - app.kubernetes.io/name: {{ include "nextcloud.name" . }} - helm.sh/chart: {{ include "nextcloud.chart" . }} - app.kubernetes.io/instance: {{ .Release.Name }} - app.kubernetes.io/managed-by: {{ .Release.Service }} - app.kubernetes.io/component: metrics - {{- if .Values.metrics.service.labels -}} - {{ toYaml .Values.metrics.service.labels | nindent 4 }} - {{- end -}} - {{- if .Values.metrics.service.annotations }} - annotations: {{ toYaml .Values.metrics.service.annotations | nindent 4 }} - {{- end }} -spec: - type: {{ .Values.metrics.service.type }} - {{ if eq .Values.metrics.service.type "LoadBalancer" -}} {{ if .Values.metrics.service.loadBalancerIP }} - loadBalancerIP: {{ .Values.metrics.service.loadBalancerIP }} - {{ end -}} - {{- end -}} - ports: - - name: metrics - port: 9205 - targetPort: metrics - selector: - app.kubernetes.io/name: {{ include "nextcloud.name" . }} - app.kubernetes.io/instance: {{ .Release.Name }} - app.kubernetes.io/component: metrics -{{- end }} diff --git a/charts/nextcloud-lc/templates/metrics-servicemonitor.yaml b/charts/nextcloud-lc/templates/metrics-servicemonitor.yaml deleted file mode 100644 index e007784..0000000 --- a/charts/nextcloud-lc/templates/metrics-servicemonitor.yaml +++ /dev/null @@ -1,39 +0,0 @@ -{{- if and .Values.metrics.enabled .Values.metrics.serviceMonitor.enabled }} -apiVersion: monitoring.coreos.com/v1 -kind: ServiceMonitor -metadata: - name: {{ template "nextcloud.fullname" . }} - {{- if .Values.metrics.serviceMonitor.namespace }} - namespace: {{ .Values.metrics.serviceMonitor.namespace | quote }} - {{- else }} - namespace: {{ .Release.Namespace | quote }} - {{- end }} - labels: - app.kubernetes.io/name: {{ include "nextcloud.name" . }} - helm.sh/chart: {{ include "nextcloud.chart" . }} - app.kubernetes.io/instance: {{ .Release.Name }} - app.kubernetes.io/managed-by: {{ .Release.Service }} - app.kubernetes.io/component: metrics - {{- if .Values.metrics.serviceMonitor.labels -}} - {{ toYaml .Values.metrics.serviceMonitor.labels | nindent 4 }} - {{- end }} -spec: - jobLabel: {{ .Values.metrics.serviceMonitor.jobLabel | quote }} - selector: - matchLabels: - app.kubernetes.io/name: {{ include "nextcloud.name" . }} - app.kubernetes.io/instance: {{ .Release.Name }} - app.kubernetes.io/component: metrics - namespaceSelector: - matchNames: - - {{ .Release.Namespace | quote }} - endpoints: - - port: metrics - path: "/" - {{- if .Values.metrics.serviceMonitor.interval }} - interval: {{ .Values.metrics.serviceMonitor.interval }} - {{- end }} - {{- if .Values.metrics.serviceMonitor.scrapeTimeout }} - scrapeTimeout: {{ .Values.metrics.serviceMonitor.scrapeTimeout }} - {{- end }} -{{- end }} diff --git a/charts/nextcloud-lc/templates/nextcloud-config-files.yaml b/charts/nextcloud-lc/templates/nextcloud-config-files.yaml deleted file mode 100644 index b2a74c0..0000000 --- a/charts/nextcloud-lc/templates/nextcloud-config-files.yaml +++ /dev/null @@ -1,32 +0,0 @@ -apiVersion: v1 -kind: ConfigMap -metadata: - name: {{ template "nextcloud.fullname" . }}-config-files - labels: - app.kubernetes.io/name: {{ include "nextcloud.name" . }} - helm.sh/chart: {{ include "nextcloud.chart" . }} - app.kubernetes.io/instance: {{ .Release.Name }} - app.kubernetes.io/managed-by: {{ .Release.Service }} -data: - # config.php: |- - # {{- .Files.Get "files/config.php" | nindent 4 }} - apcu.config.php: |- - {{- .Files.Get "files/apcu.config.php" | nindent 4 }} - auto.config.php: |- - {{- .Files.Get "files/auto.config.php" | nindent 4 }} - dir-apps.config.php: |- - {{- .Files.Get "files/dir-apps.config.php" | nindent 4 }} - dir-data.config.php: |- - {{- .Files.Get "files/dir-data.config.php" | nindent 4 }} - redis.config.php: |- - {{- .Files.Get "files/redis.config.php" | nindent 4 }} - reverse-proxy.config.php: |- - {{- .Files.Get "files/reverse-proxy.config.php" | nindent 4 }} - s3.config.php: |- - {{- .Files.Get "files/s3.config.php" | nindent 4 }} - smtp.config.php: |- - {{- .Files.Get "files/smtp.config.php" | nindent 4 }} - swift.config.php: |- - {{- .Files.Get "files/swift.config.php" | nindent 4 }} - upgrade-disable-web.config.php: |- - {{- .Files.Get "files/upgrade-disable-web.config.php" | nindent 4 }} diff --git a/charts/nextcloud-lc/templates/nextcloud-config-main.yaml b/charts/nextcloud-lc/templates/nextcloud-config-main.yaml deleted file mode 100644 index 27fd739..0000000 --- a/charts/nextcloud-lc/templates/nextcloud-config-main.yaml +++ /dev/null @@ -1,35 +0,0 @@ -apiVersion: v1 -kind: ConfigMap -metadata: - name: {{ template "nextcloud.fullname" . }}-config - labels: - app.kubernetes.io/name: {{ include "nextcloud.name" . }} - helm.sh/chart: {{ include "nextcloud.chart" . }} - app.kubernetes.io/instance: {{ .Release.Name }} - app.kubernetes.io/managed-by: {{ .Release.Service }} -data: - {{- if and .Values.externalDatabase.enabled (eq .Values.externalDatabase.type "postgres") }} - POSTGRES_HOST: {{ .Values.externalDatabase.host | quote }} - POSTGRES_DB: {{ .Values.externalDatabase.database | quote }} - POSTGRES_USER: {{ .Values.externalDatabase.user | quote }} - POSTGRES_PASSWORD: {{ .Values.externalDatabase.password | quote }} - {{- else if and .Values.externalDatabase.enabled (eq .Values.externalDatabase.type "mysqlj") }} - MYSQL_HOST: {{ .Values.externalDatabase.host | quote }} - MYSQL_DATABASE: {{ .Values.externalDatabase.database | quote }} - MYSQL_USER: {{ .Values.externalDatabase.user | quote }} - MYSQL_PASSWORD: {{ .Values.externalDatabase.password | quote }} - {{- end }} - - {{- if .Values.nextcloud.mail.enabled }} - MAIL_FROM_ADDRESS: {{ .Values.config.mail.froAddress | quote }} - MAIL_DOMAIN: {{ .Values.config.mail.domain | quote }} - SMTP_SECURE: {{ .Values.config.mail.smtp.secure | quote }} - SMTP_PORT: {{ .Values.config.mail.smtp.port | quote }} - SMTP_AUTHTYPE: {{ .Values.config.mail.smtp.authtype | quote }} - {{- end }} - - {{- if .Values.externalRedis.enabled }} - REDIS_HOST: {{ .Values.externalRedis.host | quote }} - REDIS_PORT: {{ .Values.externalRedis.port | quote }} - REDIS_PASSWORD: {{ .Values.externalRedis.password | quote }} - {{- end }} diff --git a/charts/nextcloud-lc/templates/nextcloud-deployment.yaml b/charts/nextcloud-lc/templates/nextcloud-deployment.yaml deleted file mode 100644 index e60a515..0000000 --- a/charts/nextcloud-lc/templates/nextcloud-deployment.yaml +++ /dev/null @@ -1,290 +0,0 @@ ---- -apiVersion: apps/v1 -kind: Deployment -metadata: - name: {{ template "nextcloud.fullname" . }} - labels: - app.kubernetes.io/name: {{ include "nextcloud.name" . }} - helm.sh/chart: {{ include "nextcloud.chart" . }} - app.kubernetes.io/instance: {{ .Release.Name }} - app.kubernetes.io/managed-by: {{ .Release.Service }} - app.kubernetes.io/component: app - {{- with .Values.deploymentLabels }} - {{- toYaml . | nindent 4 }} - {{- end }} - {{- with .Values.deploymentAnnotations }} - annotations: - {{- toYaml . | nindent 4 }} - {{- end }} -spec: - replicas: {{ .Values.replicaCount }} - strategy: - {{- toYaml .Values.nextcloud.strategy | nindent 4 }} - selector: - matchLabels: - app.kubernetes.io/name: {{ include "nextcloud.name" . }} - app.kubernetes.io/instance: {{ .Release.Name }} - app.kubernetes.io/component: app - template: - metadata: - labels: - app.kubernetes.io/name: {{ include "nextcloud.name" . }} - app.kubernetes.io/instance: {{ .Release.Name }} - app.kubernetes.io/component: app - {{- if .Values.externalRedis.enabled }} - {{ template "nextcloud.redis.fullname" . }}-client: "true" - {{- end }} - {{- with .Values.podLabels }} - {{- toYaml . | nindent 8 }} - {{- end }} - annotations: - # nextcloud-config-hash: {{ print (toJson .Values.nextcloud.defaultConfigs) "-" (toJson .Values.nextcloud.configs) | sha256sum }} - php-config-hash: {{ toJson .Values.nextcloud.phpConfigs | sha256sum }} - {{- if .Values.nginx.enabled }} - nginx-config-hash: {{ print .Values.nginx.config.default "-" .Values.nginx.config.custom | sha256sum }} - {{- end }} - {{- with .Values.podAnnotations }} - {{- toYaml . | nindent 8 }} - {{- end }} - spec: - {{- with .Values.image.nextcloud.pullSecrets }} - imagePullSecrets: - {{- range . }} - - name: {{ . }} - {{- end}} - {{- end }} - containers: - - name: {{ .Chart.Name }} - image: {{ include "nextcloud.image" . }} - imagePullPolicy: {{ default "IfNotPresent" .Values.image.nextcloud.pullPolicy }} - {{- with .Values.lifecycle }} - lifecycle: - {{- with .postStartCommand }} - postStart: - exec: - command: - {{- toYaml . | nindent 18 -}} - {{- end }} - {{- with .preStopCommand }} - preStop: - exec: - command: - {{- toYaml . | nindent 18 -}} - {{- end }} - {{- end }} - env: - {{- include "nextcloud.env" . | nindent 12 }} - {{- if not .Values.nginx.enabled }} - ports: - - name: http - containerPort: {{ .Values.nextcloud.containerPort }} - protocol: TCP - {{- include "nextcloud.probes" . | trim | nindent 10 }} - {{- end }}{{/* end-if not nginx.enabled */}} - resources: - {{- toYaml .Values.resources | nindent 12 }} - {{- with .Values.nextcloud.securityContext }} - securityContext: - {{- toYaml . | nindent 12 }} - {{- end }} - volumeMounts: - {{- include "nextcloud.volumeMounts" . | trim | nindent 12 }} - {{- if .Values.nginx.enabled }} - - name: {{ .Chart.Name }}-nginx - image: "{{ .Values.nginx.image.repository }}:{{ .Values.nginx.image.tag }}" - imagePullPolicy: {{ .Values.nginx.image.pullPolicy }} - ports: - - name: http - protocol: TCP - containerPort: {{ .Values.nextcloud.containerPort }} - {{- include "nextcloud.probes" . | trim | nindent 10 }} - resources: - {{- toYaml .Values.nginx.resources | nindent 12 }} - {{- with .Values.nginx.securityContext }} - securityContext: - {{- toYaml . | nindent 12 }} - {{- end }} - volumeMounts: - {{- include "nextcloud.volumeMounts" . | trim | nindent 12 }} - {{- with .Values.nextcloud.extraVolumeMounts }} - {{- toYaml . | nindent 12 }} - {{- end }} - {{- end }}{{/* end-if nginx.enabled */}} - {{- if .Values.cronjob.enabled }} - - name: {{ .Chart.Name }}-cron - image: {{ include "nextcloud.image" . }} - imagePullPolicy: {{ .Values.image.nextcloud.pullPolicy }} - command: - - /cron.sh - {{- with .Values.cronjob.lifecycle }} - lifecycle: - {{- with .postStartCommand }} - postStart: - exec: - command: - {{- toYaml . | nindent 18 -}} - {{- end }} - {{- with .preStopCommand }} - preStop: - exec: - command: - {{- toYaml . | nindent 18 -}} - {{- end }} - {{- end }} - env: - {{- include "nextcloud.env" . | nindent 12 }} - resources: - {{- toYaml .Values.cronjob.resources | nindent 12 }} - {{- with .Values.cronjob.securityContext }} - securityContext: - {{- toYaml . | nindent 12 }} - {{- end }} - volumeMounts: - {{- include "nextcloud.volumeMounts" . | trim | nindent 12 }} - {{- end }}{{/* end-if cronjob.enabled */}} - {{- with .Values.nextcloud.extraSidecarContainers }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.nodeSelector }} - nodeSelector: - {{- toYaml . | nindent 8 }} - {{- end }} - initContainers: - {{- with .Values.nextcloud.extraInitContainers }} - {{- toYaml . | nindent 8 }} - {{- end }} - - name: fpm-volume-permission - image: busybox - imagePullPolicy: IfNotPresent - # 33, 82 - {{ $chown_no := ternary "88:88" "33:33" .Values.nginx.enabled -}} - command: [ 'chown','-R', '33:33', {{ .Values.persistence.nextcloudData.mountPath | squote }}, {{ .Values.persistence.nextcloudCustomApps.mountPath | squote }} ] - securityContext: - runAsUser: 0 - privileged: true - volumeMounts: - - name: nextcloud-custom-apps - mountPath: {{ .Values.persistence.nextcloudCustomApps.mountPath }} - - name: nextcloud-data - mountPath: {{ .Values.persistence.nextcloudData.mountPath }} - {{- if eq .Values.externalDatabase.type "mysql" }} - - name: mariadb-isalive - image: {{ .Values.externalDatabase.mariadb.image.registry | default "docker.io" }}/{{ .Values.externalDatabase.mariadb.image.repository }}:{{ .Values.externalDatabase.mariadb.image.tag }} - env: - - name: MYSQL_USER - valueFrom: - secretKeyRef: - name: {{ .Values.externalDatabase.existingSecret.secretName | default (printf "%s-db" .Release.Name) }} - key: {{ .Values.externalDatabase.existingSecret.usernameKey }} - - name: MYSQL_PASSWORD - valueFrom: - secretKeyRef: - name: {{ .Values.externalDatabase.existingSecret.secretName | default (printf "%s-db" .Release.Name) }} - key: {{ .Values.externalDatabase.existingSecret.passwordKey }} - - name: MYSQL_HOST - value: {{ .Values.externalDatabase.host | quote }} - command: - - "sh" - - "-c" - - {{ printf "until mysql --host=${MYSQL_HOST} --user=${MYSQL_USER} --password=${MYSQL_PASSWORD} --execute=\"SELECT 1;\"; do echo waiting for mysql; sleep 2; done;" .Release.Name }} - {{- else if eq .Values.externalDatabase.type "postgresql" }} - - name: postgresql-isready - image: {{ .Values.externalDatabase.postgresql.image.registry | default "docker.io" }}/{{ .Values.externalDatabase.postgresql.image.repository }}:{{ .Values.externalDatabase.postgresql.image.tag }} - env: - - name: POSTGRES_USER - valueFrom: - secretKeyRef: - name: {{ .Values.externalDatabase.existingSecret.secretName | default (printf "%s-db" .Release.Name) }} - key: {{ .Values.externalDatabase.existingSecret.usernameKey }} - - name: POSTGRES_HOST - value: {{ .Values.externalDatabase.host | quote }} - command: - - "sh" - - "-c" - - "until pg_isready -h ${POSTGRES_HOST} -U ${POSTGRES_USER} ; do sleep 2 ; done" - {{- end }}{{/* end-if any database-initContainer */}} - {{- with .Values.affinity }} - affinity: - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.tolerations }} - tolerations: - {{- toYaml . | nindent 8 }} - {{- end }} - volumes: - - name: vol-config-files - configMap: - name: {{ template "nextcloud.fullname" . }}-config-files - - name: nextcloud-config - emptyDir: {} - {{/* - custom_apps >>> - */}} - {{- if .Values.persistence.nextcloudCustomApps.hostPath.enabled }} - - name: nextcloud-custom-apps - hostPath: - path: {{ .Values.persistence.nextcloudCustomApps.hostPath.path | quote }} - type: Directory - {{- else }} - - name: nextcloud-custom-apps - {{- if .Values.persistence.nextcloudCustomApps.enabled }} - persistentVolumeClaim: - claimName: {{ if .Values.persistence.nextcloudCustomApps.existingClaim }}{{ .Values.persistence.nextcloudCustomApps.existingClaim }}{{- else }}{{ template "nextcloud.fullname" . }}-nextcloud-custom-apps{{- end }} - {{- else }} - emptyDir: {} - {{- end }} - {{- end }} - {{/* - custom_apps <<< - */}} - {{/* - data >>> - */}} - {{- if .Values.persistence.nextcloudData.hostPath.enabled }} - - name: nextcloud-data - hostPath: - path: {{ .Values.persistence.nextcloudData.hostPath.path | quote }} - type: Directory - {{- else }} - - name: nextcloud-data - {{- if .Values.persistence.nextcloudData.enabled }} - persistentVolumeClaim: - claimName: {{ if .Values.persistence.nextcloudData.existingClaim }}{{ .Values.persistence.nextcloudData.existingClaim }}{{- else }}{{ template "nextcloud.fullname" . }}-nextcloud-data{{- end }} - {{- else }} - emptyDir: {} - {{- end }} - {{- end }} - {{/* - data <<< - */}} - {{- if .Values.nextcloud.phpConfigs }} - - name: nextcloud-phpconfig - configMap: - name: {{ template "nextcloud.fullname" . }}-phpconfig - {{- end }} - {{- if .Values.nginx.enabled }} - - name: nextcloud-nginx-config - configMap: - name: {{ template "nextcloud.fullname" . }}-nginxconfig - {{- end }} - {{- with .Values.nextcloud.extraVolumes }} - {{- toYaml . | nindent 8 }} - {{- end }} - securityContext: - {{- with .Values.securityContext }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.nextcloud.podSecurityContext }} - {{- toYaml . | nindent 8 }} - {{- else }} - {{- end }}{{/* end-with podSecurityContext */}} - {{- if .Values.nginx.enabled }} - # Will mount configuration files as www-data (id: 82) for nextcloud - fsGroup: 82 - {{- else }} - # Will mount configuration files as www-data (id: 33) for nextcloud - fsGroup: 33 - {{- end }} - {{- if .Values.rbac.enabled }} - serviceAccountName: {{ .Values.rbac.serviceaccount.name }} - {{- end }} diff --git a/charts/nextcloud-lc/templates/nextcloud-ingress.yaml b/charts/nextcloud-lc/templates/nextcloud-ingress.yaml deleted file mode 100644 index 9f93c2e..0000000 --- a/charts/nextcloud-lc/templates/nextcloud-ingress.yaml +++ /dev/null @@ -1,45 +0,0 @@ -{{- if .Values.ingress.enabled }} -apiVersion: {{ include "nextcloud.ingress.apiVersion" . }} -kind: Ingress -metadata: - name: {{ template "nextcloud.fullname" . }} - labels: - app.kubernetes.io/name: {{ include "nextcloud.name" . }} - helm.sh/chart: {{ include "nextcloud.chart" . }} - app.kubernetes.io/instance: {{ .Release.Name }} - app.kubernetes.io/managed-by: {{ .Release.Service }} - app.kubernetes.io/component: app -{{- if .Values.ingress.labels }} -{{ toYaml .Values.ingress.labels | indent 4 }} -{{- end }} -{{- if .Values.ingress.annotations }} - annotations: -{{ toYaml .Values.ingress.annotations | indent 4 }} -{{- end }} -spec: - {{- if .Values.ingress.className }} - ingressClassName: {{ .Values.ingress.className }} - {{- end }} - rules: - - host: {{ .Values.nextcloud.host }} - http: - paths: - - path: {{ .Values.ingress.path }} - {{- if eq (include "nextcloud.ingress.apiVersion" $) "networking.k8s.io/v1" }} - pathType: {{ .Values.ingress.pathType }} - {{- end }} - backend: - {{- if eq (include "nextcloud.ingress.apiVersion" $) "networking.k8s.io/v1" }} - service: - name: {{ template "nextcloud.fullname" . }} - port: - number: {{ .Values.service.port }} - {{- else }} - serviceName: {{ template "nextcloud.fullname" . }} - servicePort: {{ .Values.service.port }} - {{- end }} -{{- if .Values.ingress.tls }} - tls: -{{ toYaml .Values.ingress.tls | indent 4 }} -{{- end -}} -{{- end }} diff --git a/charts/nextcloud-lc/templates/nextcloud-pvc-customApps.yaml b/charts/nextcloud-lc/templates/nextcloud-pvc-customApps.yaml deleted file mode 100644 index 4e22558..0000000 --- a/charts/nextcloud-lc/templates/nextcloud-pvc-customApps.yaml +++ /dev/null @@ -1,31 +0,0 @@ -{{- if not .Values.persistence.nextcloudCustomApps.hostPath.enabled -}} -{{- if not .Values.persistence.nextcloudCustomApps.existingClaim -}} -kind: PersistentVolumeClaim -apiVersion: v1 -metadata: - name: {{ template "nextcloud.fullname" . }}-custom-apps - labels: - app.kubernetes.io/name: {{ include "nextcloud.name" . }} - helm.sh/chart: {{ include "nextcloud.chart" . }} - app.kubernetes.io/instance: {{ .Release.Name }} - app.kubernetes.io/managed-by: {{ .Release.Service }} - app.kubernetes.io/component: app -{{- if .Values.persistence.annotations }} - annotations: -{{ toYaml .Values.persistence.annotations | indent 4 }} -{{- end }} -spec: - accessModes: - - {{ .Values.persistence.accessMode | quote }} - resources: - requests: - storage: {{ .Values.persistence.size | quote }} -{{- if .Values.persistence.storageClass }} -{{- if (eq "-" .Values.persistence.storageClass) }} - storageClassName: "" -{{- else }} - storageClassName: "{{ .Values.persistence.storageClass }}" -{{- end }} -{{- end }} -{{- end -}} -{{- end -}} diff --git a/charts/nextcloud-lc/templates/nextcloud-pvc-data.yaml b/charts/nextcloud-lc/templates/nextcloud-pvc-data.yaml deleted file mode 100644 index c48f823..0000000 --- a/charts/nextcloud-lc/templates/nextcloud-pvc-data.yaml +++ /dev/null @@ -1,31 +0,0 @@ -{{- if not .Values.persistence.nextcloudData.hostPath.enabled -}} -{{- if not .Values.persistence.nextcloudData.existingClaim -}} -kind: PersistentVolumeClaim -apiVersion: v1 -metadata: - name: {{ template "nextcloud.fullname" . }}-data - labels: - app.kubernetes.io/name: {{ include "nextcloud.name" . }} - helm.sh/chart: {{ include "nextcloud.chart" . }} - app.kubernetes.io/instance: {{ .Release.Name }} - app.kubernetes.io/managed-by: {{ .Release.Service }} - app.kubernetes.io/component: app -{{- if .Values.persistence.annotations }} - annotations: -{{ toYaml .Values.persistence.annotations | indent 4 }} -{{- end }} -spec: - accessModes: - - {{ .Values.persistence.accessMode | quote }} - resources: - requests: - storage: {{ .Values.persistence.size | quote }} -{{- if .Values.persistence.storageClass }} -{{- if (eq "-" .Values.persistence.storageClass) }} - storageClassName: "" -{{- else }} - storageClassName: "{{ .Values.persistence.storageClass }}" -{{- end }} -{{- end }} -{{- end -}} -{{- end -}} diff --git a/charts/nextcloud-lc/templates/nextcloud-secret-db.yaml b/charts/nextcloud-lc/templates/nextcloud-secret-db.yaml deleted file mode 100644 index b075527..0000000 --- a/charts/nextcloud-lc/templates/nextcloud-secret-db.yaml +++ /dev/null @@ -1,15 +0,0 @@ -{{- if not .Values.externalDatabase.existingSecret.enabled }} -apiVersion: v1 -kind: Secret -metadata: - name: {{ .Release.Name }}-db - labels: - app.kubernetes.io/name: {{ include "nextcloud.name" . }} - helm.sh/chart: {{ include "nextcloud.chart" . }} - app.kubernetes.io/instance: {{ .Release.Name }} - app.kubernetes.io/managed-by: {{ .Release.Service }} -type: Opaque -data: - db-username: {{ .Values.externalDatabase.user | b64enc | quote }} - db-password: {{ .Values.externalDatabase.password | b64enc | quote }} -{{- end }} diff --git a/charts/nextcloud-lc/templates/nextcloud-secret-main.yaml b/charts/nextcloud-lc/templates/nextcloud-secret-main.yaml deleted file mode 100644 index c81a92b..0000000 --- a/charts/nextcloud-lc/templates/nextcloud-secret-main.yaml +++ /dev/null @@ -1,29 +0,0 @@ -{{- if not .Values.nextcloud.existingSecret.enabled }} -apiVersion: v1 -kind: Secret -metadata: - name: {{ template "nextcloud.fullname" . }} - labels: - app.kubernetes.io/name: {{ include "nextcloud.name" . }} - helm.sh/chart: {{ include "nextcloud.chart" . }} - app.kubernetes.io/instance: {{ .Release.Name }} - app.kubernetes.io/managed-by: {{ .Release.Service }} -type: Opaque -data: - nextcloud-username: {{ .Values.nextcloud.username | b64enc | quote }} - {{- if .Values.nextcloud.password }} - nextcloud-password: {{ .Values.nextcloud.password | b64enc | quote }} - {{- else }} - nextcloud-password: {{ randAlphaNum 10 | b64enc | quote }} - {{- end }} - {{- if .Values.metrics.token }} - nextcloud-token: {{ .Values.metrics.token | b64enc | quote }} - {{- else }} - nextcloud-token: {{ randAlphaNum 10 | b64enc | quote }} - {{- end }} - {{- if .Values.nextcloud.mail.enabled }} - smtp-host: {{ default "" .Values.nextcloud.mail.smtp.host | b64enc | quote }} - smtp-username: {{ default "" .Values.nextcloud.mail.smtp.username | b64enc | quote }} - smtp-password: {{ default "" .Values.nextcloud.mail.smtp.password | b64enc | quote }} - {{- end }} -{{- end }} diff --git a/charts/nextcloud-lc/templates/nextcloud-secret-redis.yaml b/charts/nextcloud-lc/templates/nextcloud-secret-redis.yaml deleted file mode 100644 index 7a3878c..0000000 --- a/charts/nextcloud-lc/templates/nextcloud-secret-redis.yaml +++ /dev/null @@ -1,14 +0,0 @@ -{{- if not .Values.externalRedis.auth.existingSecret.enabled }} -apiVersion: v1 -kind: Secret -metadata: - name: {{ .Release.Name }}-redis - labels: - app.kubernetes.io/name: {{ include "nextcloud.name" . }} - helm.sh/chart: {{ include "nextcloud.chart" . }} - app.kubernetes.io/instance: {{ .Release.Name }} - app.kubernetes.io/managed-by: {{ .Release.Service }} -type: Opaque -data: - redis-password: {{ .Values.externalRedis.auth.password | b64enc | quote }} -{{- end }} diff --git a/charts/nextcloud-lc/templates/nextcloud-service.yaml b/charts/nextcloud-lc/templates/nextcloud-service.yaml deleted file mode 100644 index eb9fcd3..0000000 --- a/charts/nextcloud-lc/templates/nextcloud-service.yaml +++ /dev/null @@ -1,34 +0,0 @@ -apiVersion: v1 -kind: Service -metadata: - name: {{ template "nextcloud.fullname" . }} - labels: - app.kubernetes.io/name: {{ include "nextcloud.name" . }} - helm.sh/chart: {{ include "nextcloud.chart" . }} - app.kubernetes.io/instance: {{ .Release.Name }} - app.kubernetes.io/managed-by: {{ .Release.Service }} - app.kubernetes.io/component: app -spec: - type: {{ .Values.service.type }} - {{- if and (eq .Values.service.type "LoadBalancer") .Values.service.loadBalancerIP }} - loadBalancerIP: {{ default "" .Values.service.loadBalancerIP }} - {{- end }} - {{- if .Values.service.ipFamilies }} - ipFamilies: - {{- toYaml .Values.service.ipFamilies | nindent 4 }} - {{- end }} - {{- if .Values.service.ipFamilyPolicy }} - ipFamilyPolicy: {{ .Values.service.ipFamilyPolicy }} - {{- end }} - ports: - - port: {{ .Values.service.port }} - targetPort: {{ .Values.nextcloud.containerPort }} - protocol: TCP - name: http - {{- if eq .Values.service.type "NodePort" }} - nodePort: {{ default "" .Values.service.nodePort}} - {{- end }} - selector: - app.kubernetes.io/name: {{ include "nextcloud.name" . }} - app.kubernetes.io/instance: {{ .Release.Name }} - app.kubernetes.io/component: app diff --git a/charts/nextcloud-lc/templates/nginx-config.yaml b/charts/nextcloud-lc/templates/nginx-config.yaml deleted file mode 100644 index df5b64c..0000000 --- a/charts/nextcloud-lc/templates/nginx-config.yaml +++ /dev/null @@ -1,155 +0,0 @@ -{{- define "default.conf" }} - upstream php-handler { - server 127.0.0.1:9000; - } - - server { - listen {{ .Values.nginx.containerPort | default "80" }}; - - # HSTS settings - # WARNING: Only add the preload option once you read about - # the consequences in https://hstspreload.org/. This option - # will add the domain to a hardcoded list that is shipped - # in all major browsers and getting removed from this list - # could take several months. - #add_header Strict-Transport-Security "max-age=15768000; includeSubDomains; preload;" always; - - # set max upload size - client_max_body_size 10G; - fastcgi_buffers 64 4K; - - # Enable gzip but do not remove ETag headers - gzip on; - gzip_vary on; - gzip_comp_level 4; - gzip_min_length 256; - gzip_proxied expired no-cache no-store private no_last_modified no_etag auth; - gzip_types application/atom+xml application/javascript application/json application/ld+json application/manifest+json application/rss+xml application/vnd.geo+json application/vnd.ms-fontobject application/x-font-ttf application/x-web-app-manifest+json application/xhtml+xml application/xml font/opentype image/bmp image/svg+xml image/x-icon text/cache-manifest text/css text/plain text/vcard text/vnd.rim.location.xloc text/vtt text/x-component text/x-cross-domain-policy; - - # Pagespeed is not supported by Nextcloud, so if your server is built - # with the `ngx_pagespeed` module, uncomment this line to disable it. - #pagespeed off; - - # HTTP response headers borrowed from Nextcloud `.htaccess` - add_header Referrer-Policy "no-referrer" always; - add_header X-Content-Type-Options "nosniff" always; - add_header X-Download-Options "noopen" always; - add_header X-Frame-Options "SAMEORIGIN" always; - add_header X-Permitted-Cross-Domain-Policies "none" always; - add_header X-Robots-Tag "noindex, nofollow" always; - add_header X-XSS-Protection "1; mode=block" always; - - # Remove X-Powered-By, which is an information leak - fastcgi_hide_header X-Powered-By; - - # Path to the root of your installation - root /var/www/html; - - # Specify how to handle directories -- specifying `/index.php$request_uri` - # here as the fallback means that Nginx always exhibits the desired behaviour - # when a client requests a path that corresponds to a directory that exists - # on the server. In particular, if that directory contains an index.php file, - # that file is correctly served; if it doesn't, then the request is passed to - # the front-end controller. This consistent behaviour means that we don't need - # to specify custom rules for certain paths (e.g. images and other assets, - # `/updater`, `/ocm-provider`, `/ocs-provider`), and thus - # `try_files $uri $uri/ /index.php$request_uri` - # always provides the desired behaviour. - index index.php index.html /index.php$request_uri; - - # Rule borrowed from `.htaccess` to handle Microsoft DAV clients - location = / { - if ( $http_user_agent ~ ^DavClnt ) { - return 302 /remote.php/webdav/$is_args$args; - } - } - - location = /robots.txt { - allow all; - log_not_found off; - access_log off; - } - - # Make a regex exception for `/.well-known` so that clients can still - # access it despite the existence of the regex rule - # `location ~ /(\.|autotest|...)` which would otherwise handle requests - # for `/.well-known`. - location ^~ /.well-known { - # The following 6 rules are borrowed from `.htaccess` - - location = /.well-known/carddav { return 301 /remote.php/dav/; } - location = /.well-known/caldav { return 301 /remote.php/dav/; } - # Anything else is dynamically handled by Nextcloud - location ^~ /.well-known { return 301 /index.php$uri; } - - try_files $uri $uri/ =404; - } - - # Rules borrowed from `.htaccess` to hide certain paths from clients - location ~ ^/(?:build|tests|config|lib|3rdparty|templates|data)(?:$|/) { return 404; } - location ~ ^/(?:\.|autotest|occ|issue|indie|db_|console) { return 404; } - - # Ensure this block, which passes PHP files to the PHP process, is above the blocks - # which handle static assets (as seen below). If this block is not declared first, - # then Nginx will encounter an infinite rewriting loop when it prepends `/index.php` - # to the URI, resulting in a HTTP 500 error response. - location ~ \.php(?:$|/) { - # Required for legacy support - rewrite ^/(?!index|remote|public|cron|core\/ajax\/update|status|ocs\/v[12]|updater\/.+|oc[ms]-provider\/.+|.+\/richdocumentscode\/proxy) /index.php$request_uri; - - fastcgi_split_path_info ^(.+?\.php)(/.*)$; - set $path_info $fastcgi_path_info; - - try_files $fastcgi_script_name =404; - - include fastcgi_params; - fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; - fastcgi_param PATH_INFO $path_info; - #fastcgi_param HTTPS on; - - fastcgi_param modHeadersAvailable true; # Avoid sending the security headers twice - fastcgi_param front_controller_active true; # Enable pretty urls - fastcgi_pass php-handler; - - fastcgi_intercept_errors on; - fastcgi_request_buffering off; - } - - location ~ \.(?:css|js|svg|gif)$ { - try_files $uri /index.php$request_uri; - expires 6M; # Cache-Control policy borrowed from `.htaccess` - access_log off; # Optional: Don't log access to assets - } - - location ~ \.woff2?$ { - try_files $uri /index.php$request_uri; - expires 7d; # Cache-Control policy borrowed from `.htaccess` - access_log off; # Optional: Don't log access to assets - } - - location / { - try_files $uri $uri/ /index.php$request_uri; - } - } -{{- end }} - -{{- if .Values.nginx.enabled -}} -apiVersion: v1 -kind: ConfigMap -metadata: - name: {{ template "nextcloud.fullname" . }}-nginxconfig - labels: - app.kubernetes.io/name: {{ include "nextcloud.name" . }} - helm.sh/chart: {{ include "nextcloud.chart" . }} - app.kubernetes.io/instance: {{ .Release.Name }} - app.kubernetes.io/managed-by: {{ .Release.Service }} -data: -{{- if .Values.nginx.config.default }} - default.conf: |- - {{- template "default.conf" $ }} -{{- end }} -{{- if .Values.nginx.config.custom }} - zz-custom.conf: |- -{{ .Values.nginx.config.custom | indent 4 }} -{{- end }} -{{- end }} diff --git a/charts/nextcloud-lc/templates/php-config.yaml b/charts/nextcloud-lc/templates/php-config.yaml deleted file mode 100644 index 3ff9e95..0000000 --- a/charts/nextcloud-lc/templates/php-config.yaml +++ /dev/null @@ -1,16 +0,0 @@ -{{- if .Values.nextcloud.phpConfigs -}} -apiVersion: v1 -kind: ConfigMap -metadata: - name: {{ template "nextcloud.fullname" . }}-phpconfig - labels: - app.kubernetes.io/name: {{ include "nextcloud.name" . }} - helm.sh/chart: {{ include "nextcloud.chart" . }} - app.kubernetes.io/instance: {{ .Release.Name }} - app.kubernetes.io/managed-by: {{ .Release.Service }} -data: -{{- range $key, $value := .Values.nextcloud.phpConfigs }} - {{ $key }}: |- -{{ $value | indent 4 }} -{{- end }} -{{- end }} diff --git a/charts/nextcloud-lc/values.yaml b/charts/nextcloud-lc/values.yaml deleted file mode 100644 index f531c67..0000000 --- a/charts/nextcloud-lc/values.yaml +++ /dev/null @@ -1,406 +0,0 @@ -# nginx: -# # fpm -# enabled: false - -image: - nextcloud: - registry: lscr.io - repository: linuxserver/nextcloud - tag: 28.0.3 - # pullPolicy: IfNotPresent - # pullSecrets: "regcred" - -nameOverride: "" -fullnameOverride: "" -podAnnotations: {} -deploymentAnnotations: {} -deploymentLabels: {} -podLabels: {} - -# Number of replicas to be deployed -replicaCount: 1 - -## Allowing use of ingress controllers -## ref: https://kubernetes.io/docs/concepts/services-networking/ingress/ -## -ingress: - enabled: true - # className: nginx - annotations: {} - # nginx.ingress.kubernetes.io/proxy-body-size: 4G - # kubernetes.io/tls-acme: "true" - # cert-manager.io/cluster-issuer: letsencrypt-prod - # # Keep this in sync with the README.md: - # nginx.ingress.kubernetes.io/server-snippet: |- - # server_tokens off; - # proxy_hide_header X-Powered-By; - # rewrite ^/.well-known/webfinger /index.php/.well-known/webfinger last; - # rewrite ^/.well-known/nodeinfo /index.php/.well-known/nodeinfo last; - # rewrite ^/.well-known/host-meta /public.php?service=host-meta last; - # rewrite ^/.well-known/host-meta.json /public.php?service=host-meta-json; - # location = /.well-known/carddav { - # return 301 $scheme://$host/remote.php/dav; - # } - # location = /.well-known/caldav { - # return 301 $scheme://$host/remote.php/dav; - # } - # location = /robots.txt { - # allow all; - # log_not_found off; - # access_log off; - # } - # location ~ ^/(?:build|tests|config|lib|3rdparty|templates|data)/ { - # deny all; - # } - # location ~ ^/(?:autotest|occ|issue|indie|db_|console) { - # deny all; - # } - # tls: - # - secretName: nextcloud-tls - # hosts: - # - nextcloud.kube.home - labels: {} - path: / - pathType: Prefix - -# Allow configuration of lifecycle hooks -# ref: https://kubernetes.io/docs/tasks/configure-pod-container/attach-handler-lifecycle-event/ -lifecycle: {} - # postStartCommand: [] - # preStopCommand: [] - -service: - type: ClusterIP - port: 8080 - loadBalancerIP: "" - nodePort: nil - # portMain: - # port: 80 - # targetPort: 80 - # protocol: TCP - # name: http - # nodePort: 30080 - # additionalLabels: {} - # additionalAnnotations: {} - -nextcloud: - host: nextcloud.kube.home - username: admin - password: changeme - mail: - enabled: false - fromAddress: nextcloud - domain: domain.com - smtp: - host: domain.com - secure: ssl - port: 465 - username: user - password: pass - authtype: LOGIN - ## Use an existing secret - existingSecret: - enabled: false - # secretName: nameofsecret - usernameKey: nextcloud-username - passwordKey: nextcloud-password - tokenKey: nextcloud-token - smtpHostKey: smtp-host - smtpUsernameKey: smtp-username - smtpPasswordKey: smtp-password - # PHP Configuration files - # Will be injected in /usr/local/etc/php/conf.d for apache image and in /usr/local/etc/php-fpm.d when nginx.enabled: true - phpConfigs: {} - update: 0 - # If web server is not binding default port, you can define it - containerPort: 80 - - etc: - trustedProxies: [] - overwriteProtocol: https - overwriteHost: nextcloud.scriptonbasestar.net - overwriteCliUrl: https://nextcloud.scriptonbasestar.net - - ## Strategy used to replace old pods - ## IMPORTANT: use with care, it is suggested to leave as that for upgrade purposes - ## ref: https://kubernetes.io/docs/concepts/workloads/controllers/deployment/#strategy - strategy: - type: Recreate - # type: RollingUpdate - # rollingUpdate: - # maxSurge: 1 - # maxUnavailable: 0 - - ## - ## Extra environment variables - extraEnv: - # - name: SOME_SECRET_ENV - # valueFrom: - # secretKeyRef: - # name: nextcloud - # key: secret_key - - # Extra init containers that runs before pods start. - extraInitContainers: [] - # - name: do-something - # image: busybox - # command: ['do', 'something'] - - # Extra sidecar containers. - extraSidecarContainers: [] - # - name: nextcloud-logger - # image: busybox - # command: [/bin/sh, -c, 'while ! test -f "/run/nextcloud/data/nextcloud.log"; do sleep 1; done; tail -n+1 -f /run/nextcloud/data/nextcloud.log'] - # volumeMounts: - # - name: nextcloud-data - # mountPath: /run/nextcloud/data - - # Extra mounts for the pods. Example shown is for connecting a legacy NFS volume - # to NextCloud pods in Kubernetes. This can then be configured in External Storage - extraVolumes: - # - name: nfs - # nfs: - # server: "10.0.0.1" - # path: "/nextcloud_data" - # readOnly: false - extraVolumeMounts: - # - name: nfs - # mountPath: "/legacy_data" - - # Set securityContext parameters for the nextcloud CONTAINER only (will not affect nginx container). - # For example, you may need to define runAsNonRoot directive - securityContext: {} - # runAsUser: 33 - # runAsGroup: 33 - # runAsNonRoot: true - # readOnlyRootFilesystem: false - - # Set securityContext parameters for the entire pod. For example, you may need to define runAsNonRoot directive - # root 안면 안돌가 - podSecurityContext: {} - # runAsUser: 33 - # runAsUser: 33 - # runAsGroup: 33 - # runAsNonRoot: true - # readOnlyRootFilesystem: false - -externalDatabase: - enabled: false - type: mysql - mariadb: - image: - # registry: docker.io - repository: bitnami/mariadb - # tag: 10.11-debian-11 - tag: 11.2-debian-11 - postgresql: - image: - # registry: docker.io - repository: bitnami/postgresql - # tag: 15-debian-11 - tag: 14-debian-11 - # tag: 12-debian-11 - host: - user: nextcloud_user - password: "" - database: nextcloud_db - - ## Use a existing secret - existingSecret: - enabled: false - # secretName: nameofsecret - usernameKey: db-username - passwordKey: db-password - # hostKey: db-hostname-or-ip - # databaseKey: db-name - -## Enable persistence using Persistent Volume Claims -## ref: http://kubernetes.io/docs/user-guide/persistent-volumes/ -## -persistence: - # accessMode: ReadWriteOnce - accessMode: ReadWriteMany - size: 8Gi - storageClass: "-" - # subPath: - annotations: {} - additionalLabels: {} - additionalAnnotations: {} - nextcloudData: - # existingClaim: - # mountPath: /var/www/html/data - mountPath: /data - hostPath: - enabled: false - path: /work/nextcloud/data - nextcloudCustomApps: - # existingClaim: - # mountPath: /var/www/html/custom_apps - mountPath: /config/custom_apps - hostPath: - enabled: false - path: /work/nextcloud/custom_apps - -## Liveness and readiness probe values -## Ref: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#container-probes -## -livenessProbe: - enabled: true - initialDelaySeconds: 10 - periodSeconds: 10 - timeoutSeconds: 5 - failureThreshold: 3 - successThreshold: 1 -readinessProbe: - enabled: true - initialDelaySeconds: 10 - periodSeconds: 10 - timeoutSeconds: 5 - failureThreshold: 3 - successThreshold: 1 -startupProbe: - enabled: false - initialDelaySeconds: 30 - periodSeconds: 10 - timeoutSeconds: 5 - failureThreshold: 30 - successThreshold: 1 - -## -## External redis configuration -## -externalRedis: - enabled: false - host: - port: 6379 - auth: - enabled: true - password: 'changeme' - # name of an existing secret with Redis® credentials (instead of auth.password), must be created ahead of time - existingSecret: - enabled: false - # secretName: redis-secret - # Password key to be retrieved from existing secret - existingSecretPasswordKey: "redis-password" - -## Cronjob to execute Nextcloud background tasks -## ref: https://docs.nextcloud.com/server/latest/admin_manual/configuration_server/background_jobs_configuration.html#cron -## -cronjob: - enabled: false - - ## Cronjob sidecar resource requests and limits - ## ref: http://kubernetes.io/docs/user-guide/compute-resources/ - ## - resources: {} - - # Allow configuration of lifecycle hooks - # ref: https://kubernetes.io/docs/tasks/configure-pod-container/attach-handler-lifecycle-event/ - lifecycle: {} - # postStartCommand: [] - # preStopCommand: [] - # Set securityContext parameters. For example, you may need to define runAsNonRoot directive - securityContext: {} - # runAsUser: 33 - # runAsGroup: 33 - # runAsNonRoot: true - # readOnlyRootFilesystem: true - -## Prometheus Exporter / Metrics -## -metrics: - enabled: false - - replicaCount: 1 - # The metrics exporter needs to know how you serve Nextcloud either http or https - https: false - # Use API token if set, otherwise fall back to password authentication - # https://github.com/xperimental/nextcloud-exporter#token-authentication - # Currently you still need to set the token manually in your nextcloud install - token: "" - timeout: 5s - # if set to true, exporter skips certificate verification of Nextcloud server. - tlsSkipVerify: false - - image: - repository: xperimental/nextcloud-exporter - tag: 0.6.2 - pullPolicy: IfNotPresent - # pullSecrets: - # - myRegistrKeySecretName - - ## Metrics exporter resource requests and limits - ## ref: http://kubernetes.io/docs/user-guide/compute-resources/ - ## - # resources: {} - - ## Metrics exporter pod Annotation and Labels - # podAnnotations: {} - - - service: - type: ClusterIP - ## Use serviceLoadBalancerIP to request a specific static IP, - ## otherwise leave blank - # loadBalancerIP: - annotations: - prometheus.io/scrape: "true" - prometheus.io/port: "9205" - labels: {} - - ## Prometheus Operator ServiceMonitor configuration - ## - serviceMonitor: - ## @param metrics.serviceMonitor.enabled Create ServiceMonitor Resource for scraping metrics using PrometheusOperator - ## - enabled: false - - ## @param metrics.serviceMonitor.namespace Namespace in which Prometheus is running - ## - namespace: "" - - ## @param metrics.serviceMonitor.jobLabel The name of the label on the target service to use as the job name in prometheus. - ## - jobLabel: "" - - ## @param metrics.serviceMonitor.interval Interval at which metrics should be scraped - ## ref: https://github.com/coreos/prometheus-operator/blob/master/Documentation/api.md#endpoint - ## - interval: 30s - - ## @param metrics.serviceMonitor.scrapeTimeout Specify the timeout after which the scrape is ended - ## ref: https://github.com/coreos/prometheus-operator/blob/master/Documentation/api.md#endpoint - ## - scrapeTimeout: "" - - ## @param metrics.serviceMonitor.labels Extra labels for the ServiceMonitor - ## - labels: {} - -rbac: - enabled: false - serviceaccount: - create: true - name: nextcloud-serviceaccount - annotations: {} - - -## @param securityContext for nextcloud pod @deprecated Use `nextcloud.podSecurityContext` instead -securityContext: {} - - -nginx: - ## You need to set an fpm version of the image for nextcloud if you want to use nginx! - enabled: false - image: - repository: nginx - tag: alpine - pullPolicy: IfNotPresent - - config: - # This generates the default nginx config as per the nextcloud documentation - default: true - # custom: |- - # worker_processes 1;.. - - resources: {} diff --git a/charts/nextcloud/Chart.yaml b/charts/nextcloud/Chart.yaml index 45c63b3..a7ccdfd 100644 --- a/charts/nextcloud/Chart.yaml +++ b/charts/nextcloud/Chart.yaml @@ -1,7 +1,8 @@ apiVersion: v2 name: nextcloud -version: 4.5.41 -appVersion: 28.0.1 +version: 0.1.0 +appVersion: 28.0.3 +type: application description: A file sharing server that puts the control and security of your own data back into your hands. keywords: - nextcloud @@ -19,4 +20,4 @@ sources: - https://hub.docker.com/r/linuxserver/nextcloud maintainers: - name: archmagece - email: archmagece@gmail.com + email: archmagece@users.noreply.github.com diff --git a/charts/nextcloud-lc/files/config.php b/charts/nextcloud/files/config.php similarity index 100% rename from charts/nextcloud-lc/files/config.php rename to charts/nextcloud/files/config.php diff --git a/charts/nextcloud/templates/_helpers.tpl b/charts/nextcloud/templates/_helpers.tpl index 69aaf05..77ebb54 100644 --- a/charts/nextcloud/templates/_helpers.tpl +++ b/charts/nextcloud/templates/_helpers.tpl @@ -153,7 +153,8 @@ Create volume mounts for the nextcloud container as well as the cron sidecar con */}} {{- define "nextcloud.volumeMounts" -}} - name: nextcloud-config - mountPath: /var/www/html/config/ + # mountPath: /var/www/html/config/ + mountPath: /config/www/nextcloud/config/ {{- if .Values.nginx.enabled }} - name: nextcloud-nginx-config mountPath: /etc/nginx/conf.d/ @@ -163,54 +164,64 @@ files >>> */}} - name: vol-config-files # - name: vol-config-files-apcu - mountPath: /var/www/html/config/apcu.config.php + # mountPath: /var/www/html/config/apcu.config.php + mountPath: /config/www/nextcloud/config/apcu.config.php subPath: apcu.config.php - name: vol-config-files # - name: vol-config-files-autoconfig - mountPath: /var/www/html/config/auto.config.php + # mountPath: /var/www/html/config/auto.config.php + mountPath: /config/www/nextcloud/config/auto.config.php subPath: auto.config.php - name: vol-config-files # - name: vol-config-files-dir-apps - mountPath: /var/www/html/config/dir-apps.config.php + # mountPath: /var/www/html/config/dir-apps.config.php + mountPath: /config/www/nextcloud/config/dir-apps.config.php subPath: dir-apps.config.php - name: vol-config-files # - name: vol-config-files-dir-data - mountPath: /var/www/html/config/dir-data.config.php + # mountPath: /var/www/html/config/dir-data.config.php + mountPath: /config/www/nextcloud/config/dir-data.config.php subPath: dir-data.config.php - name: vol-config-files # - name: vol-config-files-redis - mountPath: /var/www/html/config/redis.config.php + # mountPath: /var/www/html/config/redis.config.php + mountPath: /config/www/nextcloud/config/redis.config.php subPath: redis.config.php - name: vol-config-files # - name: vol-config-files-reverse-proxy - mountPath: /var/www/html/config/reverse-proxy.config.php + # mountPath: /var/www/html/config/reverse-proxy.config.php + mountPath: /config/www/nextcloud/config/reverse-proxy.config.php subPath: reverse-proxy.config.php - name: vol-config-files # - name: vol-config-files-s3 - mountPath: /var/www/html/config/s3.config.php + # mountPath: /var/www/html/config/s3.config.php + mountPath: /config/www/nextcloud/config/s3.config.php subPath: s3.config.php - name: vol-config-files # - name: vol-config-files-smtp - mountPath: /var/www/html/config/smtp.config.php + # mountPath: /var/www/html/config/smtp.config.php + mountPath: /config/www/nextcloud/config/smtp.config.php subPath: smtp.config.php - name: vol-config-files # - name: vol-config-files-swift - mountPath: /var/www/html/config/swift.config.php + # mountPath: /var/www/html/config/swift.config.php + mountPath: /config/www/nextcloud/config/swift.config.php subPath: swift.config.php - name: vol-config-files # - name: vol-config-files-upgrade-disable-web - mountPath: /var/www/html/config/upgrade-disable-web.config.php + # mountPath: /var/www/html/config/upgrade-disable-web.config.php + mountPath: /config/www/nextcloud/config/upgrade-disable-web.config.php subPath: upgrade-disable-web.config.php {{/* files <<< */}} - name: nextcloud-custom-apps - mountPath: {{ .Values.persistence.nextcloudCustomApps.mountPath | default "/nextcloud/custom_apps" }} + mountPath: {{ .Values.persistence.nextcloudCustomApps.mountPath | default "/config/custom_apps" }} {{/* subPath: {{ ternary "custom_apps" (printf "%s/custom_apps" .Values.nextcloud.persistence.subPath) (empty .Values.nextcloud.persistence.subPath) }} */}} - name: nextcloud-data - mountPath: {{ .Values.persistence.nextcloudData.mountPath | default "/nextcloud/data" }} + mountPath: {{ .Values.persistence.nextcloudData.mountPath | default "/data" }} {{/* subPath: {{ ternary "data" (printf "%s/data" .Values.persistence.nextcloudData.subPath) (empty .Values.persistence.nextcloudData.subPath) }} */}} diff --git a/charts/nextcloud/templates/nextcloud-config-files.yaml b/charts/nextcloud/templates/nextcloud-config-files.yaml index 42c537e..b2a74c0 100644 --- a/charts/nextcloud/templates/nextcloud-config-files.yaml +++ b/charts/nextcloud/templates/nextcloud-config-files.yaml @@ -8,6 +8,8 @@ metadata: app.kubernetes.io/instance: {{ .Release.Name }} app.kubernetes.io/managed-by: {{ .Release.Service }} data: + # config.php: |- + # {{- .Files.Get "files/config.php" | nindent 4 }} apcu.config.php: |- {{- .Files.Get "files/apcu.config.php" | nindent 4 }} auto.config.php: |- diff --git a/charts/nextcloud/templates/nextcloud-config-main.yaml b/charts/nextcloud/templates/nextcloud-config-main.yaml index 24b00eb..27fd739 100644 --- a/charts/nextcloud/templates/nextcloud-config-main.yaml +++ b/charts/nextcloud/templates/nextcloud-config-main.yaml @@ -8,12 +8,12 @@ metadata: app.kubernetes.io/instance: {{ .Release.Name }} app.kubernetes.io/managed-by: {{ .Release.Service }} data: - {{- if .Values.externalDatabase.enabled }} + {{- if and .Values.externalDatabase.enabled (eq .Values.externalDatabase.type "postgres") }} POSTGRES_HOST: {{ .Values.externalDatabase.host | quote }} POSTGRES_DB: {{ .Values.externalDatabase.database | quote }} POSTGRES_USER: {{ .Values.externalDatabase.user | quote }} POSTGRES_PASSWORD: {{ .Values.externalDatabase.password | quote }} - {{- else if .Values.externalDatabase.enabled -}} + {{- else if and .Values.externalDatabase.enabled (eq .Values.externalDatabase.type "mysqlj") }} MYSQL_HOST: {{ .Values.externalDatabase.host | quote }} MYSQL_DATABASE: {{ .Values.externalDatabase.database | quote }} MYSQL_USER: {{ .Values.externalDatabase.user | quote }} diff --git a/charts/nextcloud/values.yaml b/charts/nextcloud/values.yaml index 5f861fa..f531c67 100644 --- a/charts/nextcloud/values.yaml +++ b/charts/nextcloud/values.yaml @@ -4,16 +4,12 @@ image: nextcloud: - # registry: lscr.io - # repository: linuxserver/nextcloud - registry: docker.io - repository: nextcloud - # tag: stable - tag: stable-fpm + registry: lscr.io + repository: linuxserver/nextcloud + tag: 28.0.3 # pullPolicy: IfNotPresent # pullSecrets: "regcred" - nameOverride: "" fullnameOverride: "" podAnnotations: {} @@ -233,14 +229,14 @@ persistence: nextcloudData: # existingClaim: # mountPath: /var/www/html/data - mountPath: /nextcloud/data + mountPath: /data hostPath: enabled: false path: /work/nextcloud/data nextcloudCustomApps: # existingClaim: # mountPath: /var/www/html/custom_apps - mountPath: /nextcloud/custom_apps + mountPath: /config/custom_apps hostPath: enabled: false path: /work/nextcloud/custom_apps diff --git a/charts/nextcloud-lc/.helmignore b/charts/wordpress/.helmignore similarity index 96% rename from charts/nextcloud-lc/.helmignore rename to charts/wordpress/.helmignore index c422c46..0e8a0eb 100644 --- a/charts/nextcloud-lc/.helmignore +++ b/charts/wordpress/.helmignore @@ -21,6 +21,3 @@ .idea/ *.tmproj .vscode/ - -# pre -pre/ diff --git a/charts/wordpress/Chart.yaml b/charts/wordpress/Chart.yaml new file mode 100644 index 0000000..03adfbc --- /dev/null +++ b/charts/wordpress/Chart.yaml @@ -0,0 +1,22 @@ +apiVersion: v2 +name: wordpress +version: 0.1.0 +appVersion: 6.4.3 +type: application +description: A Helm chart for Kubernetes +keywords: + - wordpress + - blog + - cms + - php +home: https://wordpress.org/ +icon: https://raw.githubusercontent.com/ScriptonBasestar-docker/sb-helm-charts/master/helms/wordpress/icon.png +sources: + - https://github.com/nextcloud/helm + - https://github.com/nextcloud/docker + - https://scriptonbasestar-docker.github.io/sb-helm-charts/ + - https://github.com/linuxserver/docker-nextcloud + - https://hub.docker.com/r/linuxserver/wordpress +maintainers: + - name: archmagece + email: archmagece@users.noreply.github.com diff --git a/charts/wordpress/templates/NOTES.txt b/charts/wordpress/templates/NOTES.txt new file mode 100644 index 0000000..805433e --- /dev/null +++ b/charts/wordpress/templates/NOTES.txt @@ -0,0 +1,22 @@ +1. Get the application URL by running these commands: +{{- if .Values.ingress.enabled }} +{{- range $host := .Values.ingress.hosts }} + {{- range .paths }} + http{{ if $.Values.ingress.tls }}s{{ end }}://{{ $host.host }}{{ .path }} + {{- end }} +{{- end }} +{{- else if contains "NodePort" .Values.service.type }} + export NODE_PORT=$(kubectl get --namespace {{ .Release.Namespace }} -o jsonpath="{.spec.ports[0].nodePort}" services {{ include "wordpress.fullname" . }}) + export NODE_IP=$(kubectl get nodes --namespace {{ .Release.Namespace }} -o jsonpath="{.items[0].status.addresses[0].address}") + echo http://$NODE_IP:$NODE_PORT +{{- else if contains "LoadBalancer" .Values.service.type }} + NOTE: It may take a few minutes for the LoadBalancer IP to be available. + You can watch the status of by running 'kubectl get --namespace {{ .Release.Namespace }} svc -w {{ include "wordpress.fullname" . }}' + export SERVICE_IP=$(kubectl get svc --namespace {{ .Release.Namespace }} {{ include "wordpress.fullname" . }} --template "{{"{{ range (index .status.loadBalancer.ingress 0) }}{{.}}{{ end }}"}}") + echo http://$SERVICE_IP:{{ .Values.service.port }} +{{- else if contains "ClusterIP" .Values.service.type }} + export POD_NAME=$(kubectl get pods --namespace {{ .Release.Namespace }} -l "app.kubernetes.io/name={{ include "wordpress.name" . }},app.kubernetes.io/instance={{ .Release.Name }}" -o jsonpath="{.items[0].metadata.name}") + export CONTAINER_PORT=$(kubectl get pod --namespace {{ .Release.Namespace }} $POD_NAME -o jsonpath="{.spec.containers[0].ports[0].containerPort}") + echo "Visit http://127.0.0.1:8080 to use your application" + kubectl --namespace {{ .Release.Namespace }} port-forward $POD_NAME 8080:$CONTAINER_PORT +{{- end }} diff --git a/charts/wordpress/templates/_helpers.tpl b/charts/wordpress/templates/_helpers.tpl new file mode 100644 index 0000000..361e069 --- /dev/null +++ b/charts/wordpress/templates/_helpers.tpl @@ -0,0 +1,62 @@ +{{/* +Expand the name of the chart. +*/}} +{{- define "wordpress.name" -}} +{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" }} +{{- end }} + +{{/* +Create a default fully qualified app name. +We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec). +If release name contains chart name it will be used as a full name. +*/}} +{{- define "wordpress.fullname" -}} +{{- if .Values.fullnameOverride }} +{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" }} +{{- else }} +{{- $name := default .Chart.Name .Values.nameOverride }} +{{- if contains $name .Release.Name }} +{{- .Release.Name | trunc 63 | trimSuffix "-" }} +{{- else }} +{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" }} +{{- end }} +{{- end }} +{{- end }} + +{{/* +Create chart name and version as used by the chart label. +*/}} +{{- define "wordpress.chart" -}} +{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" }} +{{- end }} + +{{/* +Common labels +*/}} +{{- define "wordpress.labels" -}} +helm.sh/chart: {{ include "wordpress.chart" . }} +{{ include "wordpress.selectorLabels" . }} +{{- if .Chart.AppVersion }} +app.kubernetes.io/version: {{ .Chart.AppVersion | quote }} +{{- end }} +app.kubernetes.io/managed-by: {{ .Release.Service }} +{{- end }} + +{{/* +Selector labels +*/}} +{{- define "wordpress.selectorLabels" -}} +app.kubernetes.io/name: {{ include "wordpress.name" . }} +app.kubernetes.io/instance: {{ .Release.Name }} +{{- end }} + +{{/* +Create the name of the service account to use +*/}} +{{- define "wordpress.serviceAccountName" -}} +{{- if .Values.serviceAccount.create }} +{{- default (include "wordpress.fullname" .) .Values.serviceAccount.name }} +{{- else }} +{{- default "default" .Values.serviceAccount.name }} +{{- end }} +{{- end }} diff --git a/charts/wordpress/templates/serviceaccount.yaml b/charts/wordpress/templates/serviceaccount.yaml new file mode 100644 index 0000000..8a85b37 --- /dev/null +++ b/charts/wordpress/templates/serviceaccount.yaml @@ -0,0 +1,13 @@ +{{- if .Values.serviceAccount.create -}} +apiVersion: v1 +kind: ServiceAccount +metadata: + name: {{ include "wordpress.serviceAccountName" . }} + labels: + {{- include "wordpress.labels" . | nindent 4 }} + {{- with .Values.serviceAccount.annotations }} + annotations: + {{- toYaml . | nindent 4 }} + {{- end }} +automountServiceAccountToken: {{ .Values.serviceAccount.automount }} +{{- end }} diff --git a/charts/wordpress/templates/tests/test-connection.yaml b/charts/wordpress/templates/tests/test-connection.yaml new file mode 100644 index 0000000..e374103 --- /dev/null +++ b/charts/wordpress/templates/tests/test-connection.yaml @@ -0,0 +1,15 @@ +apiVersion: v1 +kind: Pod +metadata: + name: "{{ include "wordpress.fullname" . }}-test-connection" + labels: + {{- include "wordpress.labels" . | nindent 4 }} + annotations: + "helm.sh/hook": test +spec: + containers: + - name: wget + image: busybox + command: ['wget'] + args: ['{{ include "wordpress.fullname" . }}:{{ .Values.service.port }}'] + restartPolicy: Never diff --git a/charts/wordpress/templates/web-config.yaml b/charts/wordpress/templates/web-config.yaml new file mode 100644 index 0000000..fa1912e --- /dev/null +++ b/charts/wordpress/templates/web-config.yaml @@ -0,0 +1,28 @@ +apiVersion: v1 +kind: ConfigMap +metadata: + name: {{ include "wordpress.fullname" . }}-config + labels: + {{- include "wordpress.labels" . | nindent 4 }} +data: + WORDPRESS_AUTH_KEY: {{ .Values.config.authKey }} + WORDPRESS_SECURE_AUTH_KEY: {{ .Values.config.secureAuthKey }} + WORDPRESS_LOGGED_IN_KEY: {{ .Values.config.loggedInKey }} + WORDPRESS_NONCE_KEY: {{ .Values.config.nonceKey }} + WORDPRESS_AUTH_SALT: {{ .Values.config.authSalt }} + WORDPRESS_SECURE_AUTH_SALT: {{ .Values.config.secureAuthSalt }} + WORDPRESS_LOGGED_IN_SALT: {{ .Values.config.loggedInSalt }} + WORDPRESS_NONCE_SALT: {{ .Values.config.nonceSalt }} + WORDPRESS_DEBUG: {{ .Values.config.debug }} + WORDPRESS_CONFIG_EXTRA: {{ .Values.config.extraConfig | quote }} + + # WORDPRESS_ALLOW_MULTISITE: {{ .Values.wordpress.multisite.enabled }} + # WORDPRESS_SUBDOMAIN_INSTALL: {{ .Values.wordpress.multisite.subdomainInstall }} + # WORDPRESS_PATH_CURRENT_SITE: {{ .Values.wordpress.multisite.pathCurrentSite }} + # WORDPRESS_DOMAIN_CURRENT_SITE: {{ .Values.wordpress.multisite.domainCurrentSite }} + # WORDPRESS_SITE_ID_CURRENT_SITE: {{ .Values.wordpress.multisite.siteIdCurrentSite }} + # WORDPRESS_BLOG_ID_CURRENT_SITE: {{ .Values.wordpress.multisite.blogIdCurrentSite }} + # WORDPRESS_ALLOW_UNFILTERED_UPLOADS: {{ .Values.wordpress.allowUnfilteredUploads }} + # WORDPRESS_FORCE_SSL_ADMIN: {{ .Values.wordpress.forceSslAdmin }} + # WORDPRESS_FORCE_SSL_LOGIN: {{ .Values.wordpress.forceSslLogin }} + diff --git a/charts/wordpress/templates/web-deployment.yaml b/charts/wordpress/templates/web-deployment.yaml new file mode 100644 index 0000000..6ce6312 --- /dev/null +++ b/charts/wordpress/templates/web-deployment.yaml @@ -0,0 +1,87 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: {{ include "wordpress.fullname" . }} + labels: + {{- include "wordpress.labels" . | nindent 4 }} +spec: + {{- if not .Values.autoscaling.enabled }} + replicas: 1 + {{- end }} + selector: + matchLabels: + {{- include "wordpress.selectorLabels" . | nindent 6 }} + template: + metadata: + {{- with .Values.podAnnotations }} + annotations: + {{- toYaml . | nindent 8 }} + {{- end }} + labels: + {{- include "wordpress.labels" . | nindent 8 }} + {{- with .Values.podLabels }} + {{- toYaml . | nindent 8 }} + {{- end }} + spec: + serviceAccountName: {{ include "wordpress.serviceAccountName" . }} + securityContext: + {{- toYaml .Values.podSecurityContext | nindent 8 }} + initContainers: + - name: init-wordpress + image: "{{ .Values.image.cli.repository }}:{{ .Values.image.cli.tag | default .Chart.AppVersion }}" + imagePullPolicy: {{ .Values.image.pullPolicy }} + command: + - /bin/sh + - -c + - | + {{- .Values.initContainer.command | nindent 14 }} + env: + {{- toYaml .Values.initContainer.env | nindent 12 }} + resources: + {{- toYaml .Values.initContainer.resources | nindent 12 }} + securityContext: + {{- toYaml .Values.initContainer.securityContext | nindent 12 }} + volumeMounts: + {{- toYaml .Values.initContainer.volumeMounts | nindent 12 }} + # {{- toYaml .Values.initContainers | nindent 8 }} + containers: + - name: {{ .Chart.Name }} + securityContext: + {{- toYaml .Values.securityContext | nindent 12 }} + image: "{{ .Values.image.repository }}:{{ .Values.image.tag | default .Chart.AppVersion }}" + imagePullPolicy: {{ .Values.image.pullPolicy }} + ports: + - name: http + containerPort: {{ .Values.service.port }} + protocol: TCP + livenessProbe: + {{- toYaml .Values.livenessProbe | nindent 12 }} + readinessProbe: + {{- toYaml .Values.readinessProbe | nindent 12 }} + resources: + {{- toYaml .Values.resources | nindent 12 }} + envFrom: + - secretRef: + name: {{ include "wordpress.fullname" . }}-secret + - secretRef: + name: {{ include "wordpress.fullname" . }}-config + {{- with .Values.volumeMounts }} + volumeMounts: + {{- toYaml . | nindent 12 }} + {{- end }} + {{- with .Values.volumes }} + volumes: + {{- toYaml . | nindent 8 }} + {{- end }} + {{- with .Values.nodeSelector }} + nodeSelector: + {{- toYaml . | nindent 8 }} + {{- end }} + {{- with .Values.affinity }} + affinity: + {{- toYaml . | nindent 8 }} + {{- end }} + {{- with .Values.tolerations }} + tolerations: + {{- toYaml . | nindent 8 }} + {{- end }} diff --git a/charts/wordpress/templates/web-ingress.yaml b/charts/wordpress/templates/web-ingress.yaml new file mode 100644 index 0000000..4472519 --- /dev/null +++ b/charts/wordpress/templates/web-ingress.yaml @@ -0,0 +1,61 @@ +{{- if .Values.ingress.enabled -}} +{{- $fullName := include "wordpress.fullname" . -}} +{{- $svcPort := .Values.service.port -}} +{{- if and .Values.ingress.className (not (semverCompare ">=1.18-0" .Capabilities.KubeVersion.GitVersion)) }} + {{- if not (hasKey .Values.ingress.annotations "kubernetes.io/ingress.class") }} + {{- $_ := set .Values.ingress.annotations "kubernetes.io/ingress.class" .Values.ingress.className}} + {{- end }} +{{- end }} +{{- if semverCompare ">=1.19-0" .Capabilities.KubeVersion.GitVersion -}} +apiVersion: networking.k8s.io/v1 +{{- else if semverCompare ">=1.14-0" .Capabilities.KubeVersion.GitVersion -}} +apiVersion: networking.k8s.io/v1beta1 +{{- else -}} +apiVersion: extensions/v1beta1 +{{- end }} +kind: Ingress +metadata: + name: {{ $fullName }} + labels: + {{- include "wordpress.labels" . | nindent 4 }} + {{- with .Values.ingress.annotations }} + annotations: + {{- toYaml . | nindent 4 }} + {{- end }} +spec: + {{- if and .Values.ingress.className (semverCompare ">=1.18-0" .Capabilities.KubeVersion.GitVersion) }} + ingressClassName: {{ .Values.ingress.className }} + {{- end }} + {{- if .Values.ingress.tls }} + tls: + {{- range .Values.ingress.tls }} + - hosts: + {{- range .hosts }} + - {{ . | quote }} + {{- end }} + secretName: {{ .secretName }} + {{- end }} + {{- end }} + rules: + {{- range .Values.ingress.hosts }} + - host: {{ .host | quote }} + http: + paths: + {{- range .paths }} + - path: {{ .path }} + {{- if and .pathType (semverCompare ">=1.18-0" $.Capabilities.KubeVersion.GitVersion) }} + pathType: {{ .pathType }} + {{- end }} + backend: + {{- if semverCompare ">=1.19-0" $.Capabilities.KubeVersion.GitVersion }} + service: + name: {{ $fullName }} + port: + number: {{ $svcPort }} + {{- else }} + serviceName: {{ $fullName }} + servicePort: {{ $svcPort }} + {{- end }} + {{- end }} + {{- end }} +{{- end }} diff --git a/charts/wordpress/templates/web-secret.yaml b/charts/wordpress/templates/web-secret.yaml new file mode 100644 index 0000000..aec9a79 --- /dev/null +++ b/charts/wordpress/templates/web-secret.yaml @@ -0,0 +1,13 @@ +apiVersion: v1 +kind: Secret +metadata: + name: {{ include "wordpress.fullname" . }}-secret + labels: + {{- include "wordpress.labels" . | nindent 4 }} +type: Opaque +data: + WORDPRESS_DB_HOST: {{ .Values.config.database.host }} + WORDPRESS_DB_USER: {{ .Values.config.database.user }} + WORDPRESS_DB_PASSWORD: {{ .Values.config.database.password }} + WORDPRESS_DB_NAME: {{ .Values.config.database.name }} + WORDPRESS_TABLE_PREFIX: {{ .Values.config.database.tablePrefix }} diff --git a/charts/wordpress/templates/web-service.yaml b/charts/wordpress/templates/web-service.yaml new file mode 100644 index 0000000..2da55e9 --- /dev/null +++ b/charts/wordpress/templates/web-service.yaml @@ -0,0 +1,15 @@ +apiVersion: v1 +kind: Service +metadata: + name: {{ include "wordpress.fullname" . }} + labels: + {{- include "wordpress.labels" . | nindent 4 }} +spec: + type: {{ .Values.service.type }} + ports: + - port: {{ .Values.service.port }} + targetPort: http + protocol: TCP + name: http + selector: + {{- include "wordpress.selectorLabels" . | nindent 4 }} diff --git a/charts/wordpress/values.yaml b/charts/wordpress/values.yaml new file mode 100644 index 0000000..17b09e2 --- /dev/null +++ b/charts/wordpress/values.yaml @@ -0,0 +1,142 @@ +image: + web: + repository: wordpress + tag: 6.4.3-php8.3-fpm-alpine + nginx: + repository: nginx + tag: stable-alpine + cli: + repository: wordpress + tag: cli-php8.3 + pullPolicy: IfNotPresent + +nameOverride: "" +fullnameOverride: "" + +serviceAccount: + # Specifies whether a service account should be created + create: true + # Automatically mount a ServiceAccount's API credentials? + automount: true + # Annotations to add to the service account + annotations: {} + # The name of the service account to use. + # If not set and create is true, a name is generated using the fullname template + name: "" + +podAnnotations: {} +podLabels: {} + +podSecurityContext: {} + # fsGroup: 2000 + +securityContext: {} + # capabilities: + # drop: + # - ALL + # readOnlyRootFilesystem: true + # runAsNonRoot: true + # runAsUser: 1000 + +service: + type: ClusterIP + port: 80 + +ingress: + enabled: true + className: "" + annotations: {} + # kubernetes.io/ingress.class: nginx + # kubernetes.io/tls-acme: "true" + hosts: + - host: chart-example.local + paths: + - path: / + pathType: ImplementationSpecific + tls: [] + # - secretName: chart-example-tls + # hosts: + # - chart-example.local + +resources: {} + # We usually recommend not to specify default resources and to leave this as a conscious + # choice for the user. This also increases chances charts run on environments with little + # resources, such as Minikube. If you do want to specify resources, uncomment the following + # lines, adjust them as necessary, and remove the curly braces after 'resources:'. + # limits: + # cpu: 100m + # memory: 128Mi + # requests: + # cpu: 100m + # memory: 128Mi + +livenessProbe: + httpGet: + path: / + port: http +readinessProbe: + httpGet: + path: / + port: http + +autoscaling: + enabled: false + minReplicas: 1 + maxReplicas: 100 + targetCPUUtilizationPercentage: 80 + # targetMemoryUtilizationPercentage: 80 + +# Additional volumes on the output Deployment definition. +volumes: [] +# - name: foo +# secret: +# secretName: mysecret +# optional: false + +# Additional volumeMounts on the output Deployment definition. +volumeMounts: [] +# - name: foo +# mountPath: "/etc/foo" +# readOnly: true + +nodeSelector: {} + +tolerations: [] + +affinity: {} + +config: + admin: + username: admin1 + password: admin1 + email: admin1@no-reply.com + user: + username: user1 + password: user1 + email: user1@no-reply.com + plugins: + enabled: + - woocommerce + - akismet + disabled: + - hello-dolly + + theme: + default: twentytwenty + install: + - twentytwenty + uninstall: + - twentynineteen + + database: + type: mysql + name: wordpress + host: mysql + user: wordpress + password: wordpress + port: 3306 + tablePrefix: "wp_" + +# upgrade, backup +# initContainer: +