20 Commits

Author SHA1 Message Date
cuddle-please
ba384617c9 chore(release): 0.3.0
All checks were successful
continuous-integration/drone/push Build is passing
continuous-integration/drone/pr Build is passing
2025-01-22 01:31:13 +00:00
e06d55a593 fix(deps): update rust crate uuid to v1.12.1
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2025-01-21 05:29:17 +00:00
483143d2cc chore(deps): update rust crate clap to v4.5.27
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2025-01-21 01:27:23 +00:00
ff16753ac9 chore(deps): update rust crate similar-asserts to v1.6.1
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2025-01-20 01:27:56 +00:00
117fb0bed8 fix(deps): update rust crate uuid to v1.12.0
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2025-01-15 01:32:31 +00:00
187423d5f4 feat: add port as string
All checks were successful
continuous-integration/drone/push Build is passing
Signed-off-by: kjuulh <contact@kjuulh.io>
2025-01-12 23:07:33 +01:00
34020d2939 chore: replace - with _ for postgres
All checks were successful
continuous-integration/drone/push Build is passing
Signed-off-by: kjuulh <contact@kjuulh.io>
2025-01-12 22:55:27 +01:00
5b3432d6d8 fix(deps): update rust crate uuid to v1.11.1
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2025-01-10 05:24:05 +00:00
52d931ce42 chore(deps): update rust crate clap to v4.5.26
Some checks failed
continuous-integration/drone/pr Build is failing
continuous-integration/drone/push Build is failing
2025-01-10 01:23:56 +00:00
b92e352096 fix(deps): update all dependencies
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2025-01-09 01:25:46 +00:00
02cbcf336c chore(deps): update rust crate clap to v4.5.24
All checks were successful
continuous-integration/drone/push Build is passing
continuous-integration/drone/pr Build is passing
2025-01-08 01:23:07 +00:00
8716e64c4c fix(deps): update rust crate serde to v1.0.217
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2024-12-28 01:27:43 +00:00
f911a5a27e chore(deps): update rust crate anyhow to v1.0.95
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2024-12-23 01:28:09 +00:00
a1841c28e8 fix(deps): update rust crate serde to v1.0.216
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2024-12-11 05:23:45 +00:00
e86ed49b65 fix(deps): update rust crate tokio-stream to v0.1.17
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2024-12-07 01:29:52 +00:00
fe80539ddd chore(deps): update rust crate clap to v4.5.23
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2024-12-06 01:31:06 +00:00
b70f3f4f72 chore(deps): update all dependencies
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2024-12-04 01:29:26 +00:00
29a98b5ef5 chore(deps): update rust crate tracing-subscriber to v0.3.19
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2024-11-30 01:41:27 +00:00
a9c81a8f1b chore(release): v0.2.0 (#4)
All checks were successful
continuous-integration/drone/push Build is passing
continuous-integration/drone/tag Build is passing
chore(release): 0.2.0

Co-authored-by: cuddle-please <bot@cuddle.sh>
Reviewed-on: https://git.front.kjuulh.io/kjuulh/cuddle-clusters/pulls/4
2024-11-29 09:10:38 +01:00
3956366d28 feat/add-postgres-database (#20)
All checks were successful
continuous-integration/drone/push Build is passing
feat: add postgres database

Signed-off-by: kjuulh <contact@kjuulh.io>

feat: add postgres and more templates

Signed-off-by: kjuulh <contact@kjuulh.io>

Reviewed-on: https://git.front.kjuulh.io/kjuulh/cuddle-clusters/pulls/20
Co-authored-by: kjuulh <contact@kjuulh.io>
Co-committed-by: kjuulh <contact@kjuulh.io>
2024-11-29 09:05:50 +01:00
27 changed files with 454 additions and 52 deletions

View File

@@ -6,6 +6,112 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
## [Unreleased] ## [Unreleased]
## [0.3.0] - 2025-01-22
### Added
- add port as string
### Fixed
- *(deps)* update rust crate uuid to v1.12.1
- *(deps)* update rust crate uuid to v1.12.0
- *(deps)* update rust crate uuid to v1.11.1
- *(deps)* update all dependencies
- *(deps)* update rust crate serde to v1.0.217
- *(deps)* update rust crate serde to v1.0.216
- *(deps)* update rust crate tokio-stream to v0.1.17
### Other
- *(deps)* update rust crate clap to v4.5.27
- *(deps)* update rust crate similar-asserts to v1.6.1
- replace - with _ for postgres
- *(deps)* update rust crate clap to v4.5.26
- *(deps)* update rust crate clap to v4.5.24
- *(deps)* update rust crate anyhow to v1.0.95
- *(deps)* update rust crate clap to v4.5.23
- *(deps)* update all dependencies
- *(deps)* update rust crate tracing-subscriber to v0.3.19
## [0.2.0] - 2024-11-29
### Added
- feat/add-postgres-database (#20)
feat: add postgres database
Signed-off-by: kjuulh <contact@kjuulh.io>
feat: add postgres and more templates
Signed-off-by: kjuulh <contact@kjuulh.io>
Reviewed-on: https://git.front.kjuulh.io/kjuulh/cuddle-clusters/pulls/20
Co-authored-by: kjuulh <contact@kjuulh.io>
Co-committed-by: kjuulh <contact@kjuulh.io>
- add support for raw reading of variables
- add replicas
- set interval down to a minute
- with native roots
- with explicit install
- with install
- with ring
- enable stuff
- update packages
- update packages
- add actual grpc service
- fix typo
- revert to actual label
- fix scheme
- trying with h2c service
- add grpc ports as well
- fix name
- rename
- remove suffix
- add ingress
- add ingress wip
- use lower case
- use actual service name
- cannot use lowe case
- update filename
- add namespace
- update env
- add crdb
- add webroots
- with tls
- use new tokio stream
- update client
- more debugging
- update
- update flux releaser
- actually set registry
- add option for releaser
- add slot for upload strategy
- add user variables to input
- without remove all
- plan -> base
- add sync
- add send
- use arc instead
### Fixed
- *(deps)* update rust crate serde to v1.0.215
- *(deps)* update rust crate futures to v0.3.31
- *(deps)* update rust crate minijinja to v2.3.1
- *(deps)* update rust crate minijinja to v2.3.0
- *(deps)* update rust crate serde to v1.0.203
- only create vault secret template if actual secret found
### Other
- *(deps)* update rust crate tracing to v0.1.41
- *(deps)* update all dependencies
- *(deps)* update rust crate clap to v4.5.20
- *(deps)* update rust crate clap to v4.5.19
- *(deps)* update rust crate clap to v4.5.18
- *(deps)* update rust crate anyhow to v1.0.89
- *(deps)* update rust crate anyhow to v1.0.88
- *(deps)* update all dependencies
- move crdb to own file
## [0.1.1] - 2024-05-25 ## [0.1.1] - 2024-05-25
### Other ### Other

62
Cargo.lock generated
View File

@@ -1,6 +1,6 @@
# This file is automatically @generated by Cargo. # This file is automatically @generated by Cargo.
# It is not intended for manual editing. # It is not intended for manual editing.
version = 3 version = 4
[[package]] [[package]]
name = "addr2line" name = "addr2line"
@@ -111,9 +111,9 @@ dependencies = [
[[package]] [[package]]
name = "anyhow" name = "anyhow"
version = "1.0.93" version = "1.0.95"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4c95c10ba0b00a02636238b814946408b1322d5ac4760326e6fb8ec956d85775" checksum = "34ac096ce696dc2fcabef30516bb13c0a68a11d30131d3df6f04711467681b04"
[[package]] [[package]]
name = "async-channel" name = "async-channel"
@@ -854,9 +854,9 @@ dependencies = [
[[package]] [[package]]
name = "clap" name = "clap"
version = "4.5.21" version = "4.5.27"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "fb3b4b9e5a7c7514dfa52869339ee98b3156b0bfb4e8a77c4ff4babb64b1604f" checksum = "769b0145982b4b48713e01ec42d61614425f27b7058bda7180a3a41f30104796"
dependencies = [ dependencies = [
"clap_builder", "clap_builder",
"clap_derive", "clap_derive",
@@ -864,9 +864,9 @@ dependencies = [
[[package]] [[package]]
name = "clap_builder" name = "clap_builder"
version = "4.5.21" version = "4.5.27"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b17a95aa67cc7b5ebd32aa5370189aa0d79069ef1c64ce893bd30fb24bff20ec" checksum = "1b26884eb4b57140e4d2d93652abfa49498b938b3c9179f9fc487b0acc3edad7"
dependencies = [ dependencies = [
"anstream", "anstream",
"anstyle", "anstyle",
@@ -876,9 +876,9 @@ dependencies = [
[[package]] [[package]]
name = "clap_derive" name = "clap_derive"
version = "4.5.18" version = "4.5.24"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4ac6a0c7b1a9e9a5186361f67dfa1b88213572f427fb9ab038efb2bd8c582dab" checksum = "54b755194d6389280185988721fffba69495eed5ee9feeee9a599b53db80318c"
dependencies = [ dependencies = [
"heck 0.5.0", "heck 0.5.0",
"proc-macro2", "proc-macro2",
@@ -888,9 +888,9 @@ dependencies = [
[[package]] [[package]]
name = "clap_lex" name = "clap_lex"
version = "0.7.2" version = "0.7.4"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1462739cb27611015575c0c11df5df7601141071f07518d56fcc1be504cbec97" checksum = "f46ad14479a25103f283c0f10005961cf086d8dc42205bb44c46ac563475dca6"
[[package]] [[package]]
name = "cmake" name = "cmake"
@@ -1980,9 +1980,9 @@ checksum = "830d08ce1d1d941e6b30645f1a0eb5643013d835ce3779a5fc208261dbe10f55"
[[package]] [[package]]
name = "libc" name = "libc"
version = "0.2.158" version = "0.2.169"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d8adc4bb1803a324070e64a98ae98f38934d91957a99cfb3a43dcbc01bc56439" checksum = "b5aba8db14291edd000dfcc4d620c7ebfb122c613afb886ca8803fa4e128a20a"
[[package]] [[package]]
name = "libgit2-sys" name = "libgit2-sys"
@@ -2132,9 +2132,9 @@ checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a"
[[package]] [[package]]
name = "minijinja" name = "minijinja"
version = "2.5.0" version = "2.6.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2c37e1b517d1dcd0e51dc36c4567b9d5a29262b3ec8da6cb5d35e27a8fb529b5" checksum = "212b4cab3aad057bc6e611814472905546c533295723b9e26a31c7feb19a8e65"
dependencies = [ dependencies = [
"aho-corasick", "aho-corasick",
"serde", "serde",
@@ -2991,18 +2991,18 @@ checksum = "61697e0a1c7e512e84a621326239844a24d8207b4669b41bc18b32ea5cbf988b"
[[package]] [[package]]
name = "serde" name = "serde"
version = "1.0.215" version = "1.0.217"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6513c1ad0b11a9376da888e3e0baa0077f1aed55c17f50e7b2397136129fb88f" checksum = "02fc4265df13d6fa1d00ecff087228cc0a2b5f3c0e87e258d8b94a156e984c70"
dependencies = [ dependencies = [
"serde_derive", "serde_derive",
] ]
[[package]] [[package]]
name = "serde_derive" name = "serde_derive"
version = "1.0.215" version = "1.0.217"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ad1e866f866923f252f05c889987993144fb74e722403468a4ebd70c3cd756c0" checksum = "5a9bf7cf98d04a2b28aead066b7496853d4779c9cc183c440dbac457641e19a0"
dependencies = [ dependencies = [
"proc-macro2", "proc-macro2",
"quote", "quote",
@@ -3166,9 +3166,9 @@ dependencies = [
[[package]] [[package]]
name = "similar-asserts" name = "similar-asserts"
version = "1.6.0" version = "1.6.1"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "cfe85670573cd6f0fa97940f26e7e6601213c3b0555246c24234131f88c5709e" checksum = "9f08357795f0d604ea7d7130f22c74b03838c959bdb14adde3142aab4d18a293"
dependencies = [ dependencies = [
"console", "console",
"similar", "similar",
@@ -3605,9 +3605,9 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20"
[[package]] [[package]]
name = "tokio" name = "tokio"
version = "1.41.1" version = "1.43.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "22cfb5bee7a6a52939ca9224d6ac897bb669134078daa8735560897f69de4d33" checksum = "3d61fa4ffa3de412bfea335c6ecff681de2b609ba3c77ef3e00e521813a9ed9e"
dependencies = [ dependencies = [
"backtrace", "backtrace",
"bytes", "bytes",
@@ -3623,9 +3623,9 @@ dependencies = [
[[package]] [[package]]
name = "tokio-macros" name = "tokio-macros"
version = "2.4.0" version = "2.5.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "693d596312e88961bc67d7f1f97af8a70227d9f90c31bba5806eec004978d752" checksum = "6e06d43f1345a3bcd39f6a56dbb7dcab2ba47e68e8ac134855e7e2bdbaf8cab8"
dependencies = [ dependencies = [
"proc-macro2", "proc-macro2",
"quote", "quote",
@@ -3655,9 +3655,9 @@ dependencies = [
[[package]] [[package]]
name = "tokio-stream" name = "tokio-stream"
version = "0.1.16" version = "0.1.17"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4f4e6ce100d0eb49a2734f8c0812bcd324cf357d21810932c5df6b96ef2b86f1" checksum = "eca58d7bba4a75707817a2c44174253f9236b2d5fbd055602e9d5c07c139a047"
dependencies = [ dependencies = [
"futures-core", "futures-core",
"pin-project-lite", "pin-project-lite",
@@ -3802,9 +3802,9 @@ dependencies = [
[[package]] [[package]]
name = "tracing-subscriber" name = "tracing-subscriber"
version = "0.3.18" version = "0.3.19"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ad0f048c97dbd9faa9b7df56362b8ebcaa52adb06b498c050d2f4e32f90a7a8b" checksum = "e8189decb5ac0fa7bc8b96b7cb9b2701d60d48805aca84a238004d665fcc4008"
dependencies = [ dependencies = [
"matchers", "matchers",
"nu-ansi-term", "nu-ansi-term",
@@ -3933,9 +3933,9 @@ checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821"
[[package]] [[package]]
name = "uuid" name = "uuid"
version = "1.11.0" version = "1.12.1"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f8c5f0a0af699448548ad1a2fbf920fb4bee257eae39953ba95cb84891a0446a" checksum = "b3758f5e68192bb96cc8f9b7e2c2cfdabb435499a28499a42f8f984092adad4b"
dependencies = [ dependencies = [
"getrandom", "getrandom",
] ]

View File

@@ -14,4 +14,4 @@ dotenv = { version = "0.15" }
flux-releaser = { git = "https://git.front.kjuulh.io/kjuulh/flux-releaser", branch = "main" } flux-releaser = { git = "https://git.front.kjuulh.io/kjuulh/flux-releaser", branch = "main" }
[workspace.package] [workspace.package]
version = "0.1.1" version = "0.3.0"

View File

@@ -2,4 +2,5 @@ pub mod cluster_vars;
pub mod crdb_database; pub mod crdb_database;
pub mod cuddle_vars; pub mod cuddle_vars;
pub mod ingress; pub mod ingress;
pub mod postgres_database;
pub mod vault_secret; pub mod vault_secret;

View File

@@ -81,10 +81,6 @@ impl Component for ClusterVars {
} }
} }
} }
// vars.raw = match value.clone().try_into() {
// Ok(o) => o,
// Err(e) => panic!("{}", e),
// };
vars.raw = value.into(); vars.raw = value.into();
vars.name = environment.into(); vars.name = environment.into();

View File

@@ -0,0 +1,146 @@
use std::path::Path;
use minijinja::{value::Object, Value};
use crate::Component;
use super::cuddle_vars::{load_cuddle_file, CuddleVariable, CuddleVariables};
pub struct PostgresDatabase {
variables: CuddleVariables,
}
impl PostgresDatabase {
pub async fn new(path: &Path) -> anyhow::Result<Self> {
let variables = load_cuddle_file(path).await?;
Ok(Self { variables })
}
}
impl Component for PostgresDatabase {
fn name(&self) -> String {
"cuddle/postgres".into()
}
fn render_value(
&self,
environment: &str,
_value: &serde_yaml::Value,
) -> Option<anyhow::Result<minijinja::Value>> {
if let Some(true) = self
.variables
.0
.get("database")
.and_then(|v| match v {
CuddleVariable::Object(o) => Some(o),
_ => None,
})
.and_then(|o| o.0.get("postgres"))
.and_then(|o| match o {
CuddleVariable::String(o) => {
if o == "true" {
Some(true)
} else {
None
}
}
_ => None,
})
{
return Some(Ok(minijinja::Value::from_object(PostgresDatabaseValues {
name: self.name(),
enabled: true,
})));
}
Some(Ok(minijinja::Value::from_object(PostgresDatabaseValues {
name: self.name(),
enabled: false,
})))
}
fn render(
&self,
environment: &str,
_value: &serde_yaml::Value,
) -> Option<anyhow::Result<(String, String)>> {
if let Some(true) = self
.variables
.0
.get("database")
.and_then(|v| match v {
CuddleVariable::Object(o) => Some(o),
_ => None,
})
.and_then(|o| o.0.get("postgres"))
.and_then(|o| match o {
CuddleVariable::String(o) => {
if o == "true" {
Some(true)
} else {
None
}
}
_ => None,
})
{
return Some(Ok((
format!("{}.yaml", self.name().replace("/", "-")),
r#"
{%- if environment == "dev" %}
{%- set port = 5433 %}
{%- else %}
{%- set port = 5432 %}
{%- endif %}
apiVersion: v1
kind: ConfigMap
metadata:
name: {{ vars.cuddle_postgres.file_name(vars.cuddle_vars.service) }}
namespace: {{ vars.cluster_vars.namespace }}
data:
DATABASE_TYPE: postgresql
DATABASE_HOST: {{ environment }}.postgresql.kjuulh.app
DATABASE_PORT: "{{ port }}"
DATABASE_USER: {{ vars.cuddle_vars.service | replace("-", "_") }}
DATABASE_DB: {{ vars.cuddle_vars.service | replace("-", "_") }}
"#
.into(),
)));
}
None
}
}
#[derive(Debug)]
struct PostgresDatabaseValues {
name: String,
enabled: bool,
}
impl Object for PostgresDatabaseValues {
fn get_value(self: &std::sync::Arc<Self>, key: &minijinja::Value) -> Option<minijinja::Value> {
let name = self.name.clone();
match key.as_str()? {
"has_values" => {
if self.enabled {
Some(minijinja::Value::from_serialize(true))
} else {
Some(minijinja::Value::from_serialize(false))
}
}
"file_name" => Some(Value::from_function(move |file_name: String| {
format!("{}-{}", file_name, name.replace("/", "-"))
})),
"env" => Some(Value::from_serialize(vec![
"DATABASE_HOST",
"DATABASE_PORT",
"DATABASE_USER",
"DATABASE_DB",
])),
_ => None,
}
}
}

View File

@@ -354,6 +354,12 @@ async fn process_render_template(
vars => variables vars => variables
})?; })?;
let rendered = if rendered.is_empty() || rendered.ends_with("\n") {
rendered
} else {
format!("{rendered}\n")
};
dest_file.write_all(rendered.as_bytes()).await?; dest_file.write_all(rendered.as_bytes()).await?;
Ok(()) Ok(())

View File

@@ -3,4 +3,4 @@
some = { some = {
thing = "some" thing = "some"
} }
} }

View File

@@ -1 +1 @@
env: dev env: dev

View File

@@ -1 +1 @@
env: prod env: prod

View File

@@ -1 +1 @@
some_file: 4 some_file: 4

View File

@@ -1 +1 @@
service service

View File

@@ -1 +1 @@
service service

View File

@@ -6,7 +6,7 @@ mod cuddle_vars;
use cuddle_clusters::{ use cuddle_clusters::{
catalog::{ catalog::{
cluster_vars::ClusterVars, crdb_database::CockroachDB, cuddle_vars::CuddleVars, cluster_vars::ClusterVars, crdb_database::CockroachDB, cuddle_vars::CuddleVars,
ingress::Ingress, vault_secret::VaultSecret, ingress::Ingress, postgres_database::PostgresDatabase, vault_secret::VaultSecret,
}, },
IntoComponent, IntoComponent,
}; };
@@ -125,3 +125,21 @@ async fn with_ingress() -> anyhow::Result<()> {
Ok(()) Ok(())
} }
#[tokio::test]
async fn with_postgres_databse() -> anyhow::Result<()> {
let current_dir = std::env::current_dir()?.join("tests/with_postgres_database");
run_test_with_components(
"with_postgres_database",
vec![
CuddleVars::new(&current_dir).await?.into_component(),
ClusterVars::default().into_component(),
VaultSecret::default().into_component(),
PostgresDatabase::new(&current_dir).await?.into_component(),
],
)
.await?;
Ok(())
}

View File

@@ -6,4 +6,4 @@ metadata:
namespace: dev namespace: dev
data: data:
DATABASE_URL: postgresql://root@dev-cluster:26257/service DATABASE_URL: postgresql://root@dev-cluster:26257/service

View File

@@ -36,4 +36,4 @@ spec:
- containerPort: 3001 - containerPort: 3001
name: internal-http name: internal-http
- containerPort: 3002 - containerPort: 3002
name: internal-grpc name: internal-grpc

View File

@@ -118,4 +118,4 @@ spec:
tls: tls:
- hosts: - hosts:
- grpc.service.dev.internal.kjuulh.app - grpc.service.dev.internal.kjuulh.app
secretName: tls-service-kjuulh-app-internal-grpc-ingress-dns secretName: tls-service-kjuulh-app-internal-grpc-ingress-dns

View File

@@ -27,4 +27,4 @@ spec:
- containerPort: 3001 - containerPort: 3001
name: internal-http name: internal-http
- containerPort: 3002 - containerPort: 3002
name: internal-grpc name: internal-grpc

View File

@@ -118,4 +118,4 @@ spec:
tls: tls:
- hosts: - hosts:
- grpc.service.prod.internal.kjuulh.app - grpc.service.prod.internal.kjuulh.app
secretName: tls-service-kjuulh-app-internal-grpc-ingress-dns secretName: tls-service-kjuulh-app-internal-grpc-ingress-dns

View File

@@ -27,4 +27,4 @@ spec:
- containerPort: 3001 - containerPort: 3001
name: internal-http name: internal-http
- containerPort: 3002 - containerPort: 3002
name: internal-grpc name: internal-grpc

View File

@@ -0,0 +1,7 @@
vars:
service: service
database:
postgres: "true"
cuddle/clusters:
dev:

View File

@@ -0,0 +1,12 @@
apiVersion: v1
kind: ConfigMap
metadata:
name: service-cuddle-postgres
namespace: dev
data:
DATABASE_TYPE: postgresql
DATABASE_HOST: dev.postgresql.kjuulh.app
DATABASE_PORT: "5433"
DATABASE_USER: service
DATABASE_DB: service

View File

@@ -0,0 +1,54 @@
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
app: service
name: service
spec:
replicas: 3
selector:
matchLabels:
app: service
template:
metadata:
labels:
app: service
spec:
containers:
- args:
- serve
command:
- service
image: kasperhermansen/service:main-1715336504
name: service
envFrom:
- configMapRef:
name: service-config
env:
- name: DATABASE_HOST
valueFrom:
secretKeyRef:
name: service-cuddle-postgres
key: DATABASE_HOST
- name: DATABASE_PORT
valueFrom:
secretKeyRef:
name: service-cuddle-postgres
key: DATABASE_PORT
- name: DATABASE_USER
valueFrom:
secretKeyRef:
name: service-cuddle-postgres
key: DATABASE_USER
- name: DATABASE_DB
valueFrom:
secretKeyRef:
name: service-cuddle-postgres
key: DATABASE_DB
ports:
- containerPort: 3000
name: external-http
- containerPort: 3001
name: internal-http
- containerPort: 3002
name: internal-grpc

View File

@@ -0,0 +1,56 @@
{%- set service_name = vars.cuddle_vars.service -%}
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
app: {{ service_name }}
name: {{ service_name }}
spec:
replicas: 3
selector:
matchLabels:
app: {{ service_name }}
template:
metadata:
labels:
app: {{ service_name }}
spec:
containers:
- args:
- serve
command:
- {{ service_name }}
image: kasperhermansen/{{ service_name }}:main-1715336504
name: {{ service_name }}
envFrom:
- configMapRef:
name: {{service_name}}-config
{%- if vars.vault_secret.has_values or vars.cuddle_postgres.has_values %}
env:
{%- if vars.vault_secret.has_values %}
{%- for secret in vars.vault_secret.secrets %}
- name: {{secret | upper | replace(".", "_") | replace("-", "_") }}
valueFrom:
secretKeyRef:
name: {{ vars.vault_secret.file_name(service_name) }}
key: {{ secret }}
{%- endfor %}
{%- endif %}
{%- if vars.cuddle_postgres.has_values %}
{%- for env in vars.cuddle_postgres.env %}
- name: {{ env }}
valueFrom:
secretKeyRef:
name: {{ vars.cuddle_postgres.file_name(service_name) }}
key: {{ env }}
{%- endfor %}
{%- endif %}
{%- endif %}
ports:
- containerPort: 3000
name: external-http
- containerPort: 3001
name: internal-http
- containerPort: 3002
name: internal-grpc

View File

@@ -36,4 +36,4 @@ spec:
- containerPort: 3001 - containerPort: 3001
name: internal-http name: internal-http
- containerPort: 3002 - containerPort: 3002
name: internal-grpc name: internal-grpc

View File

@@ -10,4 +10,4 @@ spec:
mount: kvv2 mount: kvv2
path: service/dev path: service/dev
refreshAfter: 30s refreshAfter: 30s
type: kv-v2 type: kv-v2