diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index d3f4f3e3f6c8134ff438357d2795b255cad56137..714157b8b851b1552ede9993f4efda7953bb9874 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -5,16 +5,6 @@ stages: - build - deploy -.build-with-dind: - # https://dsi-docs.pasteur.cloud/docs/gitlab/cicd/docker-build/ - stage: build - image: docker:24 - before_script: - - docker login -u "$CI_REGISTRY_USER" -p "$CI_REGISTRY_PASSWORD" "$CI_REGISTRY" - script: - - docker build -t "$FQ_IMAGE_NAME" -f "$CONTAINERFILE" "$BUILD_CONTEXT" - - docker push "$FQ_IMAGE_NAME" - .build-with-buildah: # see https://dsi-docs.pasteur.cloud/docs/gitlab/cicd/buildah/ stage: build @@ -23,6 +13,9 @@ stages: STORAGE_DRIVER: vfs BUILDAH_FORMAT: docker BUILDAH_ISOLATION: chroot + FQ_IMAGE_NAME: "$CI_REGISTRY_IMAGE/front:$CI_COMMIT_SHORT_SHA" + BUILD_CONTEXT: "." + CONTAINERFILE: "front/Containerfile" before_script: - export REGISTRY_AUTH_FILE="$HOME/auth.json" - echo "$CI_REGISTRY_PASSWORD" | buildah login -u "$CI_REGISTRY_USER" --password-stdin "$CI_REGISTRY" @@ -32,17 +25,25 @@ stages: build on gitlab.pasteur.fr: extends: .build-with-buildah + variables: + PUBLIC_URL: "nyx.pasteur.cloud" rules: - - if: $CI_PROJECT_ID == $GITLAB_PASTEUR_PROJECT_ID # gitlab.pasteur.fr only + - if: ($CI_COMMIT_BRANCH == "main" && + $CI_PROJECT_ID == $GITLAB_PASTEUR_PROJECT_ID) # gitlab.pasteur.fr only + +build dev on gitlab.pasteur.fr: + extends: .build-with-buildah variables: - FQ_IMAGE_NAME: "$CI_REGISTRY_IMAGE/front:$CI_COMMIT_SHORT_SHA" - BUILD_CONTEXT: "." - CONTAINERFILE: "front/Containerfile" + PUBLIC_URL: "nyx.dev.pasteur.cloud" + rules: + - if: ($CI_COMMIT_BRANCH == "dev" && + $CI_PROJECT_ID == $GITLAB_PASTEUR_PROJECT_ID) # gitlab.pasteur.fr only -.deploy-with-enix-toolbox: +.deploy-with-manifests: stage: deploy image: docker.io/enix/ci-toolbox:1.21 variables: + APP_NAME: nyxui FQ_IMAGE_NAME: "$CI_REGISTRY_IMAGE/front:$CI_COMMIT_SHORT_SHA" script: - kubectl create secret @@ -52,17 +53,39 @@ build on gitlab.pasteur.fr: --docker-password="$DOCKER_TOKEN" --docker-email=kubernetes@pasteur.fr -n "$NAMESPACE" - --dry-run -o yaml | kubectl apply -f - - - envsubst < k8s/nyx-deployment.yaml | kubectl apply -n "$NAMESPACE" -f - - - envsubst < k8s/nyx-service.yaml | kubectl apply -n "$NAMESPACE" -f - - - envsubst < k8s/nyx-ingress.yaml | kubectl apply -n "$NAMESPACE" -f - + --dry-run=client -o yaml | kubectl apply -f - + - envsubst < k8s/front-deployment.yaml | kubectl apply -n "$NAMESPACE" -f - + - envsubst < k8s/front-service.yaml | kubectl apply -n "$NAMESPACE" -f - + - envsubst < k8s/ingress.yaml | kubectl apply -n "$NAMESPACE" -f - + rules: + - if: $CI_PROJECT_ID == $GITLAB_PASTEUR_PROJECT_ID # gitlab.pasteur.fr only + +.deploy-with-helm: + stage: deploy + image: docker.io/enix/ci-toolbox:1.21 + script: + - kubectl create secret + docker-registry registry-gitlab + --docker-server=registry-gitlab.pasteur.fr + --docker-username="$DOCKER_USER" + --docker-password="$DOCKER_TOKEN" + --docker-email=kubernetes@pasteur.fr + --dry-run=client + -n "$NAMESPACE" -o yaml | kubectl apply -f - + - cd $CI_PROJECT_DIR/nyxui + - helm upgrade --install --debug nyxui . --namespace="$NAMESPACE" + --set front.image.tag=$CI_COMMIT_SHORT_SHA + --set ingress.hosts[0].host="$PUBLIC_URL" + --set ingress.hosts[0].paths[0].path="/" + --set ingress.hosts[0].paths[0].pathType="Prefix" rules: - if: $CI_PROJECT_ID == $GITLAB_PASTEUR_PROJECT_ID # gitlab.pasteur.fr only deploy to pasteur.cloud: - extends: .deploy-with-enix-toolbox + extends: .deploy-with-manifests variables: NAMESPACE: "nyx-prod" + PUBLIC_URL: "nyx.pasteur.cloud" environment: name: k8sprod-02/nyx-prod url: https://nyx.pasteur.cloud @@ -71,13 +94,13 @@ deploy to pasteur.cloud: when: manual deploy to dev.pasteur.cloud: - extends: .deploy-with-enix-toolbox + extends: .deploy-with-manifests variables: NAMESPACE: "nyx-dev" + PUBLIC_URL: "nyx.dev.pasteur.cloud" environment: name: k8sdev-01/nyx-dev url: https://nyx.dev.pasteur.cloud rules: - if: $CI_COMMIT_BRANCH == "dev" - when: manual diff --git a/front/Containerfile b/front/Containerfile index 488b269c65d062485e664895a78d4eaf3e0dbf7b..662262b35b6df9b4739083ca259bd3ebf8b50171 100644 --- a/front/Containerfile +++ b/front/Containerfile @@ -13,7 +13,7 @@ ENV JULIA_PROJECT /app ENV JULIA_DEPOT_PATH /app/julia ENV JULIAUP_DEPOT_PATH /app/juliaup -ARG JULIA_VERSION=1.10.5 +ARG JULIA_VERSION=1.10.7 # UID/GID should match with same arguments defined in: # https://github.com/nginxinc/docker-nginx-unprivileged/blob/main/mainline/debian/Dockerfile @@ -38,12 +38,15 @@ ARG PUBLIC_URL ARG NGINX_CONFIG=/etc/nginx/conf.d/default.conf +ARG NGINX_WORKERS=2 + COPY front/proxy.conf "$NGINX_CONFIG" RUN if [ -n "$PUBLIC_URL" ]; then \ sed -i "s/localhost/$PUBLIC_URL/" "$NGINX_CONFIG"; \ fi \ - && sed -i "s/80;/8080;/" "$NGINX_CONFIG" + && sed -i "s/80;/8080;/" "$NGINX_CONFIG" \ + && sed -i -E "s/worker_processes .*;/worker_processes $NGINX_WORKERS;/" /etc/nginx/nginx.conf ENTRYPOINT ["/app/front/entrypoint.sh"] CMD [] diff --git a/front/Containerfile.local b/front/Containerfile.local index ab09c3c7ce9dff6fdd15b032c7ea646aebfa41fb..fe9d00be6787f412c9d4d895313223a840769cb6 100644 --- a/front/Containerfile.local +++ b/front/Containerfile.local @@ -6,7 +6,7 @@ COPY ./NyxUI.jl/front/proxy.conf /etc/nginx/conf.d/default.conf ENV JULIAUP_DEPOT_PATH /juliaup ENV JULIA_DEPOT_PATH /julia -ARG JULIA_VERSION=1.10.5 +ARG JULIA_VERSION=1.10.7 RUN curl -fsSL https://install.julialang.org \ | sh -s -- --yes --default-channel $JULIA_VERSION @@ -20,9 +20,10 @@ COPY ./NyxUI.jl /app/NyxUI.jl ENV JULIA_PROJECT /app/NyxUI.jl RUN cd /app/NyxUI.jl \ - && julia -e 'using Pkg; Pkg.add(path="../NyxWidgets.jl"); Pkg.add(path="../NyxPlots.jl"); Pkg.instantiate();' \ + && julia -e 'using Pkg; Pkg.add([PackageSpec(path="../NyxWidgets.jl"), PackageSpec(path="../NyxPlots.jl")]); Pkg.instantiate();' \ && mkdir -p public \ - && chmod a+x front/entrypoint.sh + && chmod a+x front/entrypoint.sh \ + && sed -i -E 's/worker_processes .*;/worker_processes 2;/' /etc/nginx/nginx.conf ENTRYPOINT ["/app/NyxUI.jl/front/entrypoint.sh"] CMD [] diff --git a/front/Manifest.toml b/front/Manifest.toml index bb7f14771020bcaa002752f4435a92a481dd129a..b3905b653b271c55d45778b1a7bea5c5af5c39eb 100644 --- a/front/Manifest.toml +++ b/front/Manifest.toml @@ -1,6 +1,6 @@ # This file is machine-generated - editing it directly is not advised -julia_version = "1.10.5" +julia_version = "1.10.7" manifest_format = "2.0" project_hash = "7b4a57cbc9fc956109742c120d30a1b52ed917fd" @@ -27,9 +27,9 @@ version = "0.1.9" [[deps.Bonito]] deps = ["Base64", "CodecZlib", "Colors", "Dates", "Deno_jll", "HTTP", "Hyperscript", "LinearAlgebra", "Markdown", "MsgPack", "Observables", "RelocatableFolders", "SHA", "Sockets", "Tables", "ThreadPools", "URIs", "UUIDs", "WidgetsBase"] -git-tree-sha1 = "ace84e10effc316fe2195f1b133db776eeb69cc0" +git-tree-sha1 = "262f58917d5d9644d16ec6f53480e11a6e128db2" uuid = "824d6782-a2ef-11e9-3a09-e5662e0c26f8" -version = "3.1.2" +version = "4.0.0" [[deps.CSTParser]] deps = ["Tokenize"] @@ -45,27 +45,33 @@ version = "1.3.6" [[deps.CodecZlib]] deps = ["TranscodingStreams", "Zlib_jll"] -git-tree-sha1 = "b8fe8546d52ca154ac556809e10c75e6e7430ac8" +git-tree-sha1 = "bce6804e5e6044c6daab27bb533d1295e4a2e759" uuid = "944b1d66-785c-5afd-91f1-9de20f533193" -version = "0.7.5" +version = "0.7.6" [[deps.ColorSchemes]] deps = ["ColorTypes", "ColorVectorSpace", "Colors", "FixedPointNumbers", "PrecompileTools", "Random"] -git-tree-sha1 = "b5278586822443594ff615963b0c09755771b3e0" +git-tree-sha1 = "c785dfb1b3bfddd1da557e861b919819b82bbe5b" uuid = "35d6a980-a343-548e-a6ea-1d62b119f2f4" -version = "3.26.0" +version = "3.27.1" [[deps.ColorTypes]] deps = ["FixedPointNumbers", "Random"] -git-tree-sha1 = "b10d0b65641d57b8b4d5e234446582de5047050d" +git-tree-sha1 = "c7acce7a7e1078a20a285211dd73cd3941a871d6" uuid = "3da002f7-5984-5a60-b8a6-cbb66c0b333f" -version = "0.11.5" +version = "0.12.0" + + [deps.ColorTypes.extensions] + StyledStringsExt = "StyledStrings" + + [deps.ColorTypes.weakdeps] + StyledStrings = "f489334b-da3d-4c2e-b8f0-e476e12c162b" [[deps.ColorVectorSpace]] deps = ["ColorTypes", "FixedPointNumbers", "LinearAlgebra", "Requires", "Statistics", "TensorCore"] -git-tree-sha1 = "a1f44953f2382ebb937d60dafbe2deea4bd23249" +git-tree-sha1 = "8b3b6f87ce8f65a2b4f857528fd8d70086cd72b1" uuid = "c3611d14-8923-5661-9e6a-0046d554d3a4" -version = "0.10.0" +version = "0.11.0" [deps.ColorVectorSpace.extensions] SpecialFunctionsExt = "SpecialFunctions" @@ -75,15 +81,15 @@ version = "0.10.0" [[deps.Colors]] deps = ["ColorTypes", "FixedPointNumbers", "Reexport"] -git-tree-sha1 = "362a287c3aa50601b0bc359053d5c2468f0e7ce0" +git-tree-sha1 = "64e15186f0aa277e174aa81798f7eb8598e0157e" uuid = "5ae59095-9a9b-59fe-a467-6f913c188581" -version = "0.12.11" +version = "0.13.0" [[deps.CommonMark]] -deps = ["Crayons", "JSON", "PrecompileTools", "URIs"] -git-tree-sha1 = "532c4185d3c9037c0237546d817858b23cf9e071" +deps = ["Crayons", "PrecompileTools"] +git-tree-sha1 = "3faae67b8899797592335832fccf4b3c80bb04fa" uuid = "a80b9123-70ca-4bc0-993e-6e3bcb318db6" -version = "0.8.12" +version = "0.8.15" [[deps.Compat]] deps = ["TOML", "UUIDs"] @@ -166,9 +172,9 @@ version = "1.6.0" [[deps.ExceptionUnwrapping]] deps = ["Test"] -git-tree-sha1 = "dcb08a0d93ec0b1cdc4af184b26b591e9695423a" +git-tree-sha1 = "d36f682e590a83d63d1c7dbd287573764682d12a" uuid = "460bff9d-24e4-43bc-9d9f-a8973cb893f4" -version = "0.1.10" +version = "0.1.11" [[deps.EzXML]] deps = ["Printf", "XML2_jll"] @@ -177,10 +183,15 @@ uuid = "8f5d6c58-4d21-5cfd-889c-e3ad7ee6a615" version = "1.2.0" [[deps.FilePathsBase]] -deps = ["Compat", "Dates", "Mmap", "Printf", "Test", "UUIDs"] -git-tree-sha1 = "9f00e42f8d99fdde64d40c8ea5d14269a2e2c1aa" +deps = ["Compat", "Dates"] +git-tree-sha1 = "7878ff7172a8e6beedd1dea14bd27c3c6340d361" uuid = "48062228-2e41-5def-b9a4-89aafe57970f" -version = "0.9.21" +version = "0.9.22" +weakdeps = ["Mmap", "Test"] + + [deps.FilePathsBase.extensions] + FilePathsBaseMmapExt = "Mmap" + FilePathsBaseTestExt = "Test" [[deps.FileWatching]] uuid = "7b1f6079-737a-58dc-b8bc-7a2ca5c1b5ee" @@ -203,9 +214,9 @@ version = "6.2.1+6" [[deps.Genie]] deps = ["ArgParse", "Base64", "Dates", "Distributed", "DotEnv", "EzXML", "FilePathsBase", "HTTP", "HttpCommon", "Inflector", "JSON3", "JuliaFormatter", "Logging", "LoggingExtras", "LoweredCodeUtils", "MIMEs", "Markdown", "Millboard", "Nettle", "OrderedCollections", "Pkg", "REPL", "Random", "Reexport", "Revise", "SHA", "Serialization", "Sockets", "UUIDs", "Unicode", "XML2_jll", "YAML"] -git-tree-sha1 = "da0dbb3ff3be5a554d1756270be7fd343ea708e0" +git-tree-sha1 = "6b1283b541f467ae6830d6066535bd6f73a3e808" uuid = "c43c736e-a2d1-11e8-161f-af95117fbd1e" -version = "5.30.4" +version = "5.31.1" [[deps.GenieSession]] deps = ["Dates", "Genie", "HTTP", "Logging", "Random", "SHA"] @@ -225,10 +236,10 @@ uuid = "c27321d9-0574-5035-807b-f59d2c89b15c" version = "1.3.1" [[deps.HTTP]] -deps = ["Base64", "CodecZlib", "ConcurrentUtilities", "Dates", "ExceptionUnwrapping", "Logging", "LoggingExtras", "MbedTLS", "NetworkOptions", "OpenSSL", "Random", "SimpleBufferStream", "Sockets", "URIs", "UUIDs"] -git-tree-sha1 = "d1d712be3164d61d1fb98e7ce9bcbc6cc06b45ed" +deps = ["Base64", "CodecZlib", "ConcurrentUtilities", "Dates", "ExceptionUnwrapping", "Logging", "LoggingExtras", "MbedTLS", "NetworkOptions", "OpenSSL", "PrecompileTools", "Random", "SimpleBufferStream", "Sockets", "URIs", "UUIDs"] +git-tree-sha1 = "ae350b8225575cc3ea385d4131c81594f86dfe4f" uuid = "cd3eb016-35fb-5094-929b-558a96fad6f3" -version = "1.10.8" +version = "1.10.12" [[deps.HttpCommon]] deps = ["Dates", "Nullables", "Test", "URIParser"] @@ -259,9 +270,9 @@ version = "1.0.0" [[deps.JLLWrappers]] deps = ["Artifacts", "Preferences"] -git-tree-sha1 = "7e5d6779a1e09a36db2a7b6cff50942a0a7d0fca" +git-tree-sha1 = "be3dc50a92e5a386872a493a10050136d4703f9b" uuid = "692b3bcd-3c85-4b1f-b108-f13ce0eb3210" -version = "1.5.0" +version = "1.6.1" [[deps.JSON]] deps = ["Dates", "Mmap", "Parsers", "Unicode"] @@ -271,9 +282,9 @@ version = "0.21.4" [[deps.JSON3]] deps = ["Dates", "Mmap", "Parsers", "PrecompileTools", "StructTypes", "UUIDs"] -git-tree-sha1 = "eb3edce0ed4fa32f75a0a11217433c31d56bd48b" +git-tree-sha1 = "1d322381ef7b087548321d3f878cb4c9bd8f8f9b" uuid = "0f8b85d8-7281-11e9-16c2-39a750bddbf1" -version = "1.14.0" +version = "1.14.1" [deps.JSON3.extensions] JSON3ArrowExt = ["ArrowTypes"] @@ -282,21 +293,21 @@ version = "1.14.0" ArrowTypes = "31f734f8-188a-4ce0-8406-c8a06bd891cd" [[deps.JuliaFormatter]] -deps = ["CSTParser", "CommonMark", "DataStructures", "Glob", "Pkg", "PrecompileTools", "Tokenize"] -git-tree-sha1 = "4b0b04fe63e02eed776181e14ebc1f48d787ceec" +deps = ["CSTParser", "CommonMark", "DataStructures", "Glob", "PrecompileTools", "TOML", "Tokenize"] +git-tree-sha1 = "59cf7ad64f1b0708a4fa4369879d33bad3239b56" uuid = "98e50ef6-434e-11e9-1051-2b60c6c9e899" -version = "1.0.59" +version = "1.0.62" [[deps.JuliaInterpreter]] deps = ["CodeTracking", "InteractiveUtils", "Random", "UUIDs"] -git-tree-sha1 = "7ae67d8567853d367e3463719356b8989e236069" +git-tree-sha1 = "10da5154188682e5c0726823c2b5125957ec3778" uuid = "aa1ae85d-cabe-5617-a682-6adf51b2e16a" -version = "0.9.34" +version = "0.9.38" [[deps.LaTeXStrings]] -git-tree-sha1 = "50901ebc375ed41dbf8058da26f9de442febbbec" +git-tree-sha1 = "dda21b8cbd6a6c40d9d02a73230f9d70fed6918c" uuid = "b964fa9f-0449-5b57-a5c2-d3ea65f4040f" -version = "1.3.1" +version = "1.4.0" [[deps.LazyArtifacts]] deps = ["Artifacts", "Pkg"] @@ -331,9 +342,9 @@ uuid = "8f399da3-3557-5675-b5ff-fb832c97cbdb" [[deps.Libiconv_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "f9557a255370125b405568f9767d6d195822a175" +git-tree-sha1 = "61dfdba58e585066d8bce214c5a51eaa0539f269" uuid = "94ce4f54-9a6c-5748-9c1c-f9c7231a4531" -version = "1.17.0+0" +version = "1.17.0+1" [[deps.LinearAlgebra]] deps = ["Libdl", "OpenBLAS_jll", "libblastrampoline_jll"] @@ -344,15 +355,15 @@ uuid = "56ddb016-857b-54e1-b83d-db4d58db5568" [[deps.LoggingExtras]] deps = ["Dates", "Logging"] -git-tree-sha1 = "c1dd6d7978c12545b4179fb6153b9250c96b0075" +git-tree-sha1 = "f02b56007b064fbfddb4c9cd60161b6dd0f40df3" uuid = "e6f89c97-d47a-5376-807f-9c37f3926c36" -version = "1.0.3" +version = "1.1.0" [[deps.LoweredCodeUtils]] deps = ["JuliaInterpreter"] -git-tree-sha1 = "eeaedcf337f33c039f9f3a209a8db992deefd7e9" +git-tree-sha1 = "688d6d9e098109051ae33d126fcfc88c4ce4a021" uuid = "6f1432cf-f94c-5a45-995e-cdbf5db27b0b" -version = "2.4.8" +version = "3.1.0" [[deps.MIMEs]] git-tree-sha1 = "65f28ad4b594aebe22157d6fac869786a255b7eb" @@ -412,9 +423,9 @@ version = "1.0.0" [[deps.Nettle_jll]] deps = ["Artifacts", "GMP_jll", "JLLWrappers", "Libdl"] -git-tree-sha1 = "d67b4fddbd1b07888ed2680646a44740f492f1ca" +git-tree-sha1 = "19961ade0a39b98575505bed6f842e8a0ec35af9" uuid = "4c82536e-c426-54e4-b420-14f461c4ed8b" -version = "3.9.1+0" +version = "3.10.0+0" [[deps.NetworkOptions]] uuid = "ca575930-c2e3-43a9-ace4-1e988b2c1908" @@ -435,11 +446,11 @@ version = "0.1.0" [[deps.NyxWidgets]] deps = ["Bonito", "Colors", "Format", "LazyArtifacts", "Observables"] -git-tree-sha1 = "da1ed93c75e1cca717bbfd9ef24ef14bea595d97" +git-tree-sha1 = "936f80aa61413c47da00f96abbc0186078698bca" repo-rev = "main" repo-url = "https://gitlab.com/dbc-nyx/NyxWidgets.jl" uuid = "c288fd06-43d3-4b04-8307-797133353e2e" -version = "0.1.0" +version = "0.1.1" [[deps.Observables]] git-tree-sha1 = "7438a59546cf62428fc9d1bc94729146d37a7225" @@ -459,14 +470,14 @@ version = "1.4.3" [[deps.OpenSSL_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "a12e56c72edee3ce6b96667745e6cbbe5498f200" +git-tree-sha1 = "7493f61f55a6cce7325f197443aa80d32554ba10" uuid = "458c3c95-2e84-50aa-8efc-19380b2a3a95" -version = "1.1.23+0" +version = "3.0.15+1" [[deps.OrderedCollections]] -git-tree-sha1 = "dfdf5519f235516220579f949664f1bf44e741c5" +git-tree-sha1 = "12f1439c4f986bb868acda6ea33ebc78e19b95ad" uuid = "bac558e1-5e72-5ebc-8fee-abe8a469f55d" -version = "1.6.3" +version = "1.7.0" [[deps.Parameters]] deps = ["OrderedCollections", "UnPack"] @@ -539,10 +550,10 @@ uuid = "ae029012-a4dd-5104-9daa-d747884805df" version = "1.3.0" [[deps.Revise]] -deps = ["CodeTracking", "Distributed", "FileWatching", "JuliaInterpreter", "LibGit2", "LoweredCodeUtils", "OrderedCollections", "Pkg", "REPL", "Requires", "UUIDs", "Unicode"] -git-tree-sha1 = "85ddd93ea15dcd8493400600e09104a9e94bb18d" +deps = ["CodeTracking", "Distributed", "FileWatching", "JuliaInterpreter", "LibGit2", "LoweredCodeUtils", "OrderedCollections", "REPL", "Requires", "UUIDs", "Unicode"] +git-tree-sha1 = "470f48c9c4ea2170fd4d0f8eb5118327aada22f5" uuid = "295af30f-e4ad-537b-8983-00126c2a3abe" -version = "3.5.15" +version = "3.6.4" [[deps.SHA]] uuid = "ea8e919c-243c-51af-8825-aaa63cd721ce" @@ -558,9 +569,9 @@ version = "1.2.1" uuid = "9e88b42a-f829-5b0c-bbe9-9e923198166b" [[deps.SimpleBufferStream]] -git-tree-sha1 = "874e8867b33a00e784c8a7e4b60afe9e037b74e1" +git-tree-sha1 = "f305871d2f381d21527c770d4788c06c097c9bc1" uuid = "777ac1f9-54b0-4bf8-805c-2214025038e7" -version = "1.1.0" +version = "1.2.0" [[deps.Sockets]] uuid = "6462fe0b-24de-5631-8697-dd941f90decc" @@ -577,9 +588,9 @@ version = "1.10.0" [[deps.Stipple]] deps = ["Dates", "FilePathsBase", "Genie", "GenieSession", "GenieSessionFileSession", "JSON3", "Logging", "MacroTools", "Mixers", "Observables", "OrderedCollections", "Parameters", "Pkg", "PrecompileTools", "Random", "Reexport", "Requires", "StructTypes", "Tables"] -git-tree-sha1 = "da8a53e2600a09431539687c35ab6947af0c31de" +git-tree-sha1 = "e9cd1008e2b93dca71e90554c013233dd688e08e" uuid = "4acbeb90-81a0-11ea-1966-bdaff8155998" -version = "0.30.7" +version = "0.30.13" [deps.Stipple.extensions] StippleDataFramesExt = "DataFrames" @@ -593,9 +604,9 @@ version = "0.30.7" [[deps.StippleUI]] deps = ["Colors", "Dates", "Genie", "OrderedCollections", "PrecompileTools", "Stipple", "Tables"] -git-tree-sha1 = "83e336d4f20316f965ee47250df802e8e844d34d" +git-tree-sha1 = "09e711f1d0b85092973ad4bc0d70ea40d0a59b38" uuid = "a3c5d34a-b254-4859-a8fa-b86abb7e84a3" -version = "0.24.2" +version = "0.24.4" [deps.StippleUI.extensions] StippleUIDataFramesExt = "DataFrames" @@ -669,13 +680,9 @@ uuid = "0796e94c-ce3b-5d07-9a54-7f471281c624" version = "0.5.29" [[deps.TranscodingStreams]] -git-tree-sha1 = "96612ac5365777520c3c5396314c8cf7408f436a" +git-tree-sha1 = "0c45878dcfdcfa8480052b6ab162cdd138781742" uuid = "3bb67fe8-82b1-5028-8e26-92a6c54297fa" -version = "0.11.1" -weakdeps = ["Random", "Test"] - - [deps.TranscodingStreams.extensions] - TestExt = ["Test", "Random"] +version = "0.11.3" [[deps.URIParser]] deps = ["Unicode"] diff --git a/front/entrypoint.sh b/front/entrypoint.sh index 33fda00e28064a0d96dca7de3402029f69719ea6..44cf7549089f588a81a3ee33ef6c780b9627e5e0 100644 --- a/front/entrypoint.sh +++ b/front/entrypoint.sh @@ -1,11 +1,20 @@ #!/usr/bin/env bash +set -m + + +/docker-entrypoint.sh nginx -g "daemon off;" & +NGINX_PID=$! + + echo "JULIA_PROJECT=$JULIA_PROJECT" #export GENIE_ENV=prod #export GENIE_BASE_PATH=/g export BONITO_BASE_PATH=/bonito -(cd "$JULIA_PROJECT" && julia --project=. routes.jl &) +cd "$JULIA_PROJECT" +julia --project=. routes.jl -/docker-entrypoint.sh nginx -g "daemon off;" +kill $NGINX_PID +wait $NGINX_PID diff --git a/front/proxy.conf b/front/proxy.conf index 67e46538906b245ba741e69e126b485cb139dd3e..368ce185f7b65ce6a111cb772d9331c7bd4b58bb 100644 --- a/front/proxy.conf +++ b/front/proxy.conf @@ -1,7 +1,7 @@ server { listen 80; - listen [::]:80; server_name localhost; + proxy_buffers 16 4k; root /app/NyxUI.jl/public; diff --git a/k8s/front-deployment.yaml b/k8s/front-deployment.yaml new file mode 100644 index 0000000000000000000000000000000000000000..732a71f8c25d341ca2980bd0a6d0b75b7209433a --- /dev/null +++ b/k8s/front-deployment.yaml @@ -0,0 +1,29 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: ${APP_NAME}-front + labels: + app: $APP_NAME +spec: + replicas: 1 + selector: + matchLabels: + app: $APP_NAME + template: + metadata: + labels: + app: $APP_NAME + nyxui/component: front + spec: + containers: + - name: $APP_NAME + image: $FQ_IMAGE_NAME + ports: + - name: http + containerPort: 8080 + protocol: TCP + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: + - ALL diff --git a/k8s/front-service.yaml b/k8s/front-service.yaml new file mode 100644 index 0000000000000000000000000000000000000000..64f770f72932c56f81bed168bf45da31af8a6c3d --- /dev/null +++ b/k8s/front-service.yaml @@ -0,0 +1,13 @@ +apiVersion: v1 +kind: Service +metadata: + name: ${APP_NAME}-front +spec: + selector: + app: $APP_NAME + nyxui/component: front + ports: + - protocol: TCP + port: 80 + targetPort: http + name: http diff --git a/k8s/ingress.yaml b/k8s/ingress.yaml new file mode 100644 index 0000000000000000000000000000000000000000..cbaeb77f35b7d87eb9c0558c74e54e514c918842 --- /dev/null +++ b/k8s/ingress.yaml @@ -0,0 +1,19 @@ +apiVersion: networking.k8s.io/v1 +kind: Ingress +metadata: + name: $APP_NAME + labels: + app: $APP_NAME +spec: + ingressClassName: internal + rules: + - host: $PUBLIC_URL + http: + paths: + - path: / + pathType: Prefix + backend: + service: + name: ${APP_NAME}-front + port: + number: 80 diff --git a/k8s/nyx-deployment.yaml b/k8s/nyx-deployment.yaml deleted file mode 100644 index 6d016a0509c20c1d81c011d82b03047529075e04..0000000000000000000000000000000000000000 --- a/k8s/nyx-deployment.yaml +++ /dev/null @@ -1,21 +0,0 @@ -apiVersion: apps/v1 -kind: Deployment -metadata: - name: ${NAMESPACE}-depl - labels: - app: nyxui -spec: - replicas: 1 - selector: - matchLabels: - app: nyxui - template: - metadata: - labels: - app: nyxui - spec: - containers: - - name: nyxui - image: $FQ_IMAGE_NAME - ports: - - containerPort: 8080 diff --git a/k8s/nyx-ingress.yaml b/k8s/nyx-ingress.yaml deleted file mode 100644 index d959e16936ef3d6df88b65613467418b61d1bd55..0000000000000000000000000000000000000000 --- a/k8s/nyx-ingress.yaml +++ /dev/null @@ -1,14 +0,0 @@ -apiVersion: v1 -kind: Ingress -metadata: - name: ${NAMESPACE}-ingress -spec: - ingressClassName: external - rules: - - host: $PUBLIC_URL - http: - paths: - - backend: - serviceName: ${NAMESPACE}-service - servicePort: 80 - path: / diff --git a/k8s/nyx-service.yaml b/k8s/nyx-service.yaml deleted file mode 100644 index cded451fd059955ce7e234aa3298de996cf67b2e..0000000000000000000000000000000000000000 --- a/k8s/nyx-service.yaml +++ /dev/null @@ -1,11 +0,0 @@ -apiVersion: v1 -kind: Service -metadata: - name: ${NAMESPACE}-service -spec: - selector: - app: nyxui - ports: - - protocol: TCP - port: 80 - targetPort: 8080 diff --git a/nyxui/.helmignore b/nyxui/.helmignore new file mode 100644 index 0000000000000000000000000000000000000000..0e8a0eb36f4ca2c939201c0d54b5d82a1ea34778 --- /dev/null +++ b/nyxui/.helmignore @@ -0,0 +1,23 @@ +# Patterns to ignore when building packages. +# This supports shell glob matching, relative path matching, and +# negation (prefixed with !). Only one pattern per line. +.DS_Store +# Common VCS dirs +.git/ +.gitignore +.bzr/ +.bzrignore +.hg/ +.hgignore +.svn/ +# Common backup files +*.swp +*.bak +*.tmp +*.orig +*~ +# Various IDEs +.project +.idea/ +*.tmproj +.vscode/ diff --git a/nyxui/Chart.yaml b/nyxui/Chart.yaml new file mode 100644 index 0000000000000000000000000000000000000000..94afc3b14e04b5366844eab130c7c49b0e5bffc5 --- /dev/null +++ b/nyxui/Chart.yaml @@ -0,0 +1,24 @@ +apiVersion: v2 +name: nyxui +description: A Helm chart for Kubernetes + +# A chart can be either an 'application' or a 'library' chart. +# +# Application charts are a collection of templates that can be packaged into versioned archives +# to be deployed. +# +# Library charts provide useful utilities or functions for the chart developer. They're included as +# a dependency of application charts to inject those utilities and functions into the rendering +# pipeline. Library charts do not define any templates and therefore cannot be deployed. +type: application + +# This is the chart version. This version number should be incremented each time you make changes +# to the chart and its templates, including the app version. +# Versions are expected to follow Semantic Versioning (https://semver.org/) +version: 0.1.0 + +# This is the version number of the application being deployed. This version number should be +# incremented each time you make changes to the application. Versions are not expected to +# follow Semantic Versioning. They should reflect the version the application is using. +# It is recommended to use it with quotes. +appVersion: "0.1" diff --git a/nyxui/templates/NOTES.txt b/nyxui/templates/NOTES.txt new file mode 100644 index 0000000000000000000000000000000000000000..7e8806e4d3f8dd910660f5351f79d13341ac9c90 --- /dev/null +++ b/nyxui/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 "nyxui.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 its status by running 'kubectl get --namespace {{ .Release.Namespace }} svc -w {{ include "nyxui.fullname" . }}' + export SERVICE_IP=$(kubectl get svc --namespace {{ .Release.Namespace }} {{ include "nyxui.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 "nyxui.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/nyxui/templates/_helpers.tpl b/nyxui/templates/_helpers.tpl new file mode 100644 index 0000000000000000000000000000000000000000..125531c06952395d6ab6f6de924551ec54a8e226 --- /dev/null +++ b/nyxui/templates/_helpers.tpl @@ -0,0 +1,62 @@ +{{/* +Expand the name of the chart. +*/}} +{{- define "nyxui.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 "nyxui.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 "nyxui.chart" -}} +{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" }} +{{- end }} + +{{/* +Common labels +*/}} +{{- define "nyxui.labels" -}} +helm.sh/chart: {{ include "nyxui.chart" . }} +{{ include "nyxui.selectorLabels" . }} +{{- if .Chart.AppVersion }} +app.kubernetes.io/version: {{ .Chart.AppVersion | quote }} +{{- end }} +app.kubernetes.io/managed-by: {{ .Release.Service }} +{{- end }} + +{{/* +Selector labels +*/}} +{{- define "nyxui.selectorLabels" -}} +app.kubernetes.io/name: {{ include "nyxui.name" . }} +app.kubernetes.io/instance: {{ .Release.Name }} +{{- end }} + +{{/* +Create the name of the service account to use +*/}} +{{- define "nyxui.serviceAccountName" -}} +{{- if .Values.serviceAccount.create }} +{{- default (include "nyxui.fullname" .) .Values.serviceAccount.name }} +{{- else }} +{{- default "default" .Values.serviceAccount.name }} +{{- end }} +{{- end }} diff --git a/nyxui/templates/deployment-front.yaml b/nyxui/templates/deployment-front.yaml new file mode 100644 index 0000000000000000000000000000000000000000..7c126b79d441b5df3844bf0446912f85500e0bf0 --- /dev/null +++ b/nyxui/templates/deployment-front.yaml @@ -0,0 +1,68 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: {{ include "nyxui.fullname" . }} + labels: + {{- include "nyxui.labels" . | nindent 4 }} +spec: + {{- if not .Values.autoscaling.enabled }} + replicas: {{ .Values.replicaCount }} + {{- end }} + selector: + matchLabels: + {{- include "nyxui.selectorLabels" . | nindent 6 }} + template: + metadata: + {{- with .Values.podAnnotations }} + annotations: + {{- toYaml . | nindent 8 }} + {{- end }} + labels: + {{- include "nyxui.labels" . | nindent 8 }} + {{- with .Values.podLabels }} + {{- toYaml . | nindent 8 }} + {{- end }} + spec: + {{- with .Values.imagePullSecrets }} + imagePullSecrets: + {{- toYaml . | nindent 8 }} + {{- end }} + serviceAccountName: {{ include "nyxui.serviceAccountName" . }} + securityContext: + {{- toYaml .Values.podSecurityContext | nindent 8 }} + containers: + - name: {{ .Chart.Name }} + securityContext: + {{- toYaml .Values.securityContext | nindent 12 }} + image: "{{ .Values.front.image.repository }}:{{ .Values.front.image.tag | default .Chart.AppVersion }}" + imagePullPolicy: {{ .Values.front.image.pullPolicy }} + ports: + - name: http + containerPort: {{ .Values.front.service.targetPort }} + protocol: TCP + livenessProbe: + {{- toYaml .Values.livenessProbe | nindent 12 }} + readinessProbe: + {{- toYaml .Values.readinessProbe | nindent 12 }} + resources: + {{- toYaml .Values.resources | nindent 12 }} + {{- 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/nyxui/templates/hpa.yaml b/nyxui/templates/hpa.yaml new file mode 100644 index 0000000000000000000000000000000000000000..0b7c7d49f87fe8fd7016978b77e9c127014479f6 --- /dev/null +++ b/nyxui/templates/hpa.yaml @@ -0,0 +1,32 @@ +{{- if .Values.autoscaling.enabled }} +apiVersion: autoscaling/v2 +kind: HorizontalPodAutoscaler +metadata: + name: {{ include "nyxui.fullname" . }} + labels: + {{- include "nyxui.labels" . | nindent 4 }} +spec: + scaleTargetRef: + apiVersion: apps/v1 + kind: Deployment + name: {{ include "nyxui.fullname" . }} + minReplicas: {{ .Values.autoscaling.minReplicas }} + maxReplicas: {{ .Values.autoscaling.maxReplicas }} + metrics: + {{- if .Values.autoscaling.targetCPUUtilizationPercentage }} + - type: Resource + resource: + name: cpu + target: + type: Utilization + averageUtilization: {{ .Values.autoscaling.targetCPUUtilizationPercentage }} + {{- end }} + {{- if .Values.autoscaling.targetMemoryUtilizationPercentage }} + - type: Resource + resource: + name: memory + target: + type: Utilization + averageUtilization: {{ .Values.autoscaling.targetMemoryUtilizationPercentage }} + {{- end }} +{{- end }} diff --git a/nyxui/templates/ingress.yaml b/nyxui/templates/ingress.yaml new file mode 100644 index 0000000000000000000000000000000000000000..1e8b4d4a3bc20a71199d72e290a8e9f860e5891a --- /dev/null +++ b/nyxui/templates/ingress.yaml @@ -0,0 +1,61 @@ +{{- if .Values.ingress.enabled -}} +{{- $fullName := include "nyxui.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 "nyxui.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/nyxui/templates/service.yaml b/nyxui/templates/service.yaml new file mode 100644 index 0000000000000000000000000000000000000000..f27ec2454928759ba141fe06387524388aa2d759 --- /dev/null +++ b/nyxui/templates/service.yaml @@ -0,0 +1,15 @@ +apiVersion: v1 +kind: Service +metadata: + name: {{ include "nyxui.fullname" . }} + labels: + {{- include "nyxui.labels" . | nindent 4 }} +spec: + type: {{ .Values.service.type }} + ports: + - port: {{ .Values.service.port }} + targetPort: http + protocol: TCP + name: http + selector: + {{- include "nyxui.selectorLabels" . | nindent 4 }} diff --git a/nyxui/templates/serviceaccount.yaml b/nyxui/templates/serviceaccount.yaml new file mode 100644 index 0000000000000000000000000000000000000000..2631fa0284870b52e33201a9794afc26b770837b --- /dev/null +++ b/nyxui/templates/serviceaccount.yaml @@ -0,0 +1,13 @@ +{{- if .Values.serviceAccount.create -}} +apiVersion: v1 +kind: ServiceAccount +metadata: + name: {{ include "nyxui.serviceAccountName" . }} + labels: + {{- include "nyxui.labels" . | nindent 4 }} + {{- with .Values.serviceAccount.annotations }} + annotations: + {{- toYaml . | nindent 4 }} + {{- end }} +automountServiceAccountToken: {{ .Values.serviceAccount.automount }} +{{- end }} diff --git a/nyxui/templates/tests/test-connection.yaml b/nyxui/templates/tests/test-connection.yaml new file mode 100644 index 0000000000000000000000000000000000000000..94ce042f9f0e6e3dcdd04a233f37ad3c3bc89e07 --- /dev/null +++ b/nyxui/templates/tests/test-connection.yaml @@ -0,0 +1,15 @@ +apiVersion: v1 +kind: Pod +metadata: + name: "{{ include "nyxui.fullname" . }}-test-connection" + labels: + {{- include "nyxui.labels" . | nindent 4 }} + annotations: + "helm.sh/hook": test +spec: + containers: + - name: wget + image: busybox + command: ['wget'] + args: ['{{ include "nyxui.fullname" . }}:{{ .Values.service.port }}'] + restartPolicy: Never diff --git a/nyxui/values.yaml b/nyxui/values.yaml new file mode 100644 index 0000000000000000000000000000000000000000..0a56e70df5fd29d2617cff6b1e0a7316cef3fbaf --- /dev/null +++ b/nyxui/values.yaml @@ -0,0 +1,102 @@ +# Default values for nyxui. +# This is a YAML-formatted file. +# Declare variables to be passed into your templates. + +replicaCount: 1 + +front: + image: + repository: registry-gitlab.pasteur.fr/nyx/nyxui.jl/front + pullPolicy: IfNotPresent + # Overrides the image tag whose default is the chart appVersion. + tag: "" + service: + targetPort: 8080 + +imagePullSecrets: + - name: registry-gitlab +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: internal + # kubernetes.io/tls-acme: "true" + hosts: + - host: nyx.pasteur.cloud + paths: + - path: / + pathType: Prefix + 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 + +autoscaling: + enabled: false + minReplicas: 1 + maxReplicas: 1 + 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: {}