feat: add base things
Signed-off-by: kjuulh <contact@kjuulh.io>
This commit is contained in:
commit
02b2c986ed
192
.drone.yml
Normal file
192
.drone.yml
Normal file
@ -0,0 +1,192 @@
|
|||||||
|
kind: pipeline
|
||||||
|
name: default
|
||||||
|
type: docker
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: build ci
|
||||||
|
image: rustlang/rust:nightly
|
||||||
|
volumes:
|
||||||
|
- name: ci
|
||||||
|
path: /mnt/ci
|
||||||
|
environment:
|
||||||
|
PKG_CONFIG_SYSROOT_DIR: "/"
|
||||||
|
CI_PREFIX: "/mnt/ci"
|
||||||
|
commands:
|
||||||
|
- set -e
|
||||||
|
- apt update
|
||||||
|
- apt install musl-tools pkg-config libssl-dev openssl build-essential musl-dev -y
|
||||||
|
- rustup target add x86_64-unknown-linux-musl
|
||||||
|
- cargo build --target=x86_64-unknown-linux-musl -p ci --bin ci
|
||||||
|
- mv target/x86_64-unknown-linux-musl/debug/ci "$CI_PREFIX/ci"
|
||||||
|
|
||||||
|
- name: load_secret
|
||||||
|
image: debian:buster-slim
|
||||||
|
volumes:
|
||||||
|
- name: ssh
|
||||||
|
path: /root/.ssh/
|
||||||
|
environment:
|
||||||
|
SSH_KEY:
|
||||||
|
from_secret: gitea_id_ed25519
|
||||||
|
commands:
|
||||||
|
- mkdir -p $HOME/.ssh/
|
||||||
|
- echo "$SSH_KEY" | base64 -d > $HOME/.ssh/id_ed25519
|
||||||
|
- chmod -R 600 ~/.ssh
|
||||||
|
- |
|
||||||
|
cat >$HOME/.ssh/config <<EOL
|
||||||
|
Host git.front.kjuulh.io
|
||||||
|
IdentityFile $HOME/.ssh/id_ed25519
|
||||||
|
IdentitiesOnly yes
|
||||||
|
UserKnownHostsFile=/dev/null
|
||||||
|
StrictHostKeyChecking no
|
||||||
|
EOL
|
||||||
|
- chmod 700 ~/.ssh/config
|
||||||
|
|
||||||
|
- name: build pr
|
||||||
|
image: kasperhermansen/cuddle:latest
|
||||||
|
pull: always
|
||||||
|
volumes:
|
||||||
|
- name: ssh
|
||||||
|
path: /root/.ssh/
|
||||||
|
- name: dockersock
|
||||||
|
path: /var/run
|
||||||
|
- name: ci
|
||||||
|
path: /mnt/ci
|
||||||
|
commands:
|
||||||
|
- eval `ssh-agent`
|
||||||
|
- ssh-add
|
||||||
|
- echo "$DOCKER_PASSWORD" | docker login --password-stdin --username="$DOCKER_USERNAME" docker.io
|
||||||
|
- apk add git
|
||||||
|
- $CI_PREFIX pr
|
||||||
|
environment:
|
||||||
|
DOCKER_BUILDKIT: 1
|
||||||
|
DOCKER_PASSWORD:
|
||||||
|
from_secret: docker_password
|
||||||
|
DOCKER_USERNAME:
|
||||||
|
from_secret: docker_username
|
||||||
|
CUDDLE_SECRETS_PROVIDER: 1password
|
||||||
|
CUDDLE_ONE_PASSWORD_DOT_ENV: ".env.ci"
|
||||||
|
CUDDLE_SSH_AGENT: "true"
|
||||||
|
CI_PREFIX: "/mnt/ci/ci"
|
||||||
|
CUDDLE_PLEASE_TOKEN:
|
||||||
|
from_secret: cuddle_please_token
|
||||||
|
OP_SERVICE_ACCOUNT_TOKEN:
|
||||||
|
from_secret: op_service_account_token
|
||||||
|
when:
|
||||||
|
event:
|
||||||
|
- pull_request
|
||||||
|
exclude:
|
||||||
|
- main
|
||||||
|
- master
|
||||||
|
depends_on:
|
||||||
|
- "load_secret"
|
||||||
|
- "build ci"
|
||||||
|
|
||||||
|
- name: build main
|
||||||
|
image: kasperhermansen/cuddle:latest
|
||||||
|
pull: always
|
||||||
|
volumes:
|
||||||
|
- name: ssh
|
||||||
|
path: /root/.ssh/
|
||||||
|
# - name: dockersock
|
||||||
|
# path: /var/run
|
||||||
|
- name: ci
|
||||||
|
path: /mnt/ci
|
||||||
|
commands:
|
||||||
|
- eval `ssh-agent`
|
||||||
|
- ssh-add
|
||||||
|
- echo "$DOCKER_PASSWORD" | docker login --password-stdin --username="$DOCKER_USERNAME" docker.io
|
||||||
|
- apk add git
|
||||||
|
- $CI_PREFIX main
|
||||||
|
environment:
|
||||||
|
REGISTRY_CACHE_USERNAME:
|
||||||
|
from_secret: registry_cache_username
|
||||||
|
REGISTRY_CACHE_PASSWORD:
|
||||||
|
from_secret: registry_cache_password
|
||||||
|
REGISTRY_CACHE_TOKEN:
|
||||||
|
from_secret: registry_cache_token
|
||||||
|
REGISTRY_CACHE_url:
|
||||||
|
from_secret: registry_cache_url
|
||||||
|
DOCKER_BUILDKIT: 1
|
||||||
|
DOCKER_PASSWORD:
|
||||||
|
from_secret: docker_password
|
||||||
|
DOCKER_USERNAME:
|
||||||
|
from_secret: docker_username
|
||||||
|
CUDDLE_SECRETS_PROVIDER: 1password
|
||||||
|
CUDDLE_ONE_PASSWORD_DOT_ENV: ".env.ci"
|
||||||
|
CUDDLE_SSH_AGENT: "true"
|
||||||
|
GIT_PASSWORD:
|
||||||
|
from_secret: git_password
|
||||||
|
CI_PREFIX: "/mnt/ci/ci"
|
||||||
|
DOCKER_HOST: "tcp://192.168.1.233:2376"
|
||||||
|
CUDDLE_PLEASE_TOKEN:
|
||||||
|
from_secret: cuddle_please_token
|
||||||
|
OP_SERVICE_ACCOUNT_TOKEN:
|
||||||
|
from_secret: op_service_account_token
|
||||||
|
when:
|
||||||
|
event:
|
||||||
|
- push
|
||||||
|
branch:
|
||||||
|
- main
|
||||||
|
- master
|
||||||
|
exclude:
|
||||||
|
- pull_request
|
||||||
|
depends_on:
|
||||||
|
- "load_secret"
|
||||||
|
- "build ci"
|
||||||
|
|
||||||
|
- name: deploy release
|
||||||
|
image: kasperhermansen/cuddle:latest
|
||||||
|
pull: always
|
||||||
|
volumes:
|
||||||
|
- name: ssh
|
||||||
|
path: /root/.ssh/
|
||||||
|
- name: dockersock
|
||||||
|
path: /var/run
|
||||||
|
- name: ci
|
||||||
|
path: /mnt/ci
|
||||||
|
commands:
|
||||||
|
- eval `ssh-agent`
|
||||||
|
- ssh-add
|
||||||
|
- echo "$DOCKER_PASSWORD" | docker login --password-stdin --username="$DOCKER_USERNAME" docker.io
|
||||||
|
- apk add git
|
||||||
|
|
||||||
|
- $CI_PREFIX release
|
||||||
|
environment:
|
||||||
|
DOCKER_BUILDKIT: 1
|
||||||
|
DOCKER_PASSWORD:
|
||||||
|
from_secret: docker_password
|
||||||
|
DOCKER_USERNAME:
|
||||||
|
from_secret: docker_username
|
||||||
|
CUDDLE_SECRETS_PROVIDER: 1password
|
||||||
|
CUDDLE_ONE_PASSWORD_DOT_ENV: ".env.ci"
|
||||||
|
CUDDLE_SSH_AGENT: "true"
|
||||||
|
CI_PREFIX: "/mnt/ci/ci"
|
||||||
|
CUDDLE_PLEASE_TOKEN:
|
||||||
|
from_secret: cuddle_please_token
|
||||||
|
OP_SERVICE_ACCOUNT_TOKEN:
|
||||||
|
from_secret: op_service_account_token
|
||||||
|
when:
|
||||||
|
event:
|
||||||
|
- tag
|
||||||
|
ref:
|
||||||
|
include:
|
||||||
|
- refs/tags/v*
|
||||||
|
depends_on:
|
||||||
|
- "load_secret"
|
||||||
|
- "build ci"
|
||||||
|
|
||||||
|
services:
|
||||||
|
- name: docker
|
||||||
|
image: docker:dind
|
||||||
|
privileged: true
|
||||||
|
volumes:
|
||||||
|
- name: dockersock
|
||||||
|
path: /var/run
|
||||||
|
|
||||||
|
volumes:
|
||||||
|
- name: ssh
|
||||||
|
temp: {}
|
||||||
|
- name: dockersock
|
||||||
|
temp: {}
|
||||||
|
- name: ci
|
||||||
|
temp: {}
|
2
.gitignore
vendored
Normal file
2
.gitignore
vendored
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
target/
|
||||||
|
.cuddle/
|
2044
Cargo.lock
generated
Normal file
2044
Cargo.lock
generated
Normal file
File diff suppressed because it is too large
Load Diff
12
Cargo.toml
Normal file
12
Cargo.toml
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
[workspace]
|
||||||
|
members = ["crates/*", "ci"]
|
||||||
|
resolver = "2"
|
||||||
|
|
||||||
|
[workspace.dependencies]
|
||||||
|
|
||||||
|
anyhow = { version = "1.0.81" }
|
||||||
|
tokio = { version = "1", features = ["full"] }
|
||||||
|
tracing = { version = "0.1", features = ["log"] }
|
||||||
|
tracing-subscriber = { version = "0.3.18" }
|
||||||
|
clap = { version = "4.5.4", features = ["derive", "env"] }
|
||||||
|
dotenv = { version = "0.15.0" }
|
16
ci/Cargo.toml
Normal file
16
ci/Cargo.toml
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
[package]
|
||||||
|
name = "ci"
|
||||||
|
version = "0.1.0"
|
||||||
|
edition = "2021"
|
||||||
|
|
||||||
|
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
|
||||||
|
|
||||||
|
[dependencies]
|
||||||
|
tokio.workspace = true
|
||||||
|
|
||||||
|
dagger-sdk = {git = "https://github.com/kjuulh/dagger.git", branch = "feat/with-send-sync"}
|
||||||
|
eyre = { version = "0.6.12" }
|
||||||
|
|
||||||
|
dagger-components = { git = "https://git.front.kjuulh.io/kjuulh/dagger-components", branch = "main" }
|
||||||
|
dagger-rust = { git = "https://git.front.kjuulh.io/kjuulh/dagger-components", branch = "main" }
|
||||||
|
cuddle-ci = { git = "https://git.front.kjuulh.io/kjuulh/dagger-components", branch = "main" }
|
43
ci/src/main.rs
Normal file
43
ci/src/main.rs
Normal file
@ -0,0 +1,43 @@
|
|||||||
|
use std::sync::Arc;
|
||||||
|
|
||||||
|
use cuddle_ci::rust_service::architecture::{Architecture, Os};
|
||||||
|
use cuddle_ci::rust_service::{extensions::*, RustService};
|
||||||
|
use cuddle_ci::CuddleCI;
|
||||||
|
use tokio::sync::Mutex;
|
||||||
|
|
||||||
|
#[tokio::main]
|
||||||
|
async fn main() -> eyre::Result<()> {
|
||||||
|
let client = dagger_sdk::connect().await?;
|
||||||
|
|
||||||
|
let service = RustService::from(client)
|
||||||
|
.with_arch(Architecture::Amd64)
|
||||||
|
.with_os(Os::Linux)
|
||||||
|
.with_apt(&[
|
||||||
|
"clang",
|
||||||
|
"libssl-dev",
|
||||||
|
"libz-dev",
|
||||||
|
"libgit2-dev",
|
||||||
|
"git",
|
||||||
|
"openssh-client",
|
||||||
|
])
|
||||||
|
.with_apt_release(&["git", "openssh-client"])
|
||||||
|
.with_docker_cli()
|
||||||
|
.with_cuddle_cli()
|
||||||
|
.with_kubectl()
|
||||||
|
.with_apt_ca_certificates()
|
||||||
|
.with_crates(["ci", "crates/*"])
|
||||||
|
.with_mold("2.3.3")
|
||||||
|
.with_bin_name("cuddle-rust-cli-plan")
|
||||||
|
.with_deployment(false)
|
||||||
|
.to_owned();
|
||||||
|
|
||||||
|
let service = Arc::new(Mutex::new(service));
|
||||||
|
|
||||||
|
CuddleCI::default()
|
||||||
|
.with_pull_request(service.clone())
|
||||||
|
.with_main(service.clone())
|
||||||
|
.execute(std::env::args())
|
||||||
|
.await?;
|
||||||
|
|
||||||
|
Ok(())
|
||||||
|
}
|
1
crates/cuddle-rust-cli-plan/.gitignore
vendored
Normal file
1
crates/cuddle-rust-cli-plan/.gitignore
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
/target
|
15
crates/cuddle-rust-cli-plan/Cargo.toml
Normal file
15
crates/cuddle-rust-cli-plan/Cargo.toml
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
[package]
|
||||||
|
name = "cuddle-rust-cli-plan"
|
||||||
|
version = "0.1.0"
|
||||||
|
edition = "2021"
|
||||||
|
|
||||||
|
[dependencies]
|
||||||
|
tokio.workspace = true
|
||||||
|
|
||||||
|
dagger-sdk = {git = "https://github.com/kjuulh/dagger.git", branch = "feat/with-send-sync"}
|
||||||
|
eyre = { version = "0.6.12" }
|
||||||
|
|
||||||
|
dagger-components = { git = "https://git.front.kjuulh.io/kjuulh/dagger-components", branch = "main" }
|
||||||
|
dagger-rust = { git = "https://git.front.kjuulh.io/kjuulh/dagger-components", branch = "main" }
|
||||||
|
cuddle-ci = { git = "https://git.front.kjuulh.io/kjuulh/dagger-components", branch = "main" }
|
||||||
|
async-trait = "0.1.79"
|
86
crates/cuddle-rust-cli-plan/src/main.rs
Normal file
86
crates/cuddle-rust-cli-plan/src/main.rs
Normal file
@ -0,0 +1,86 @@
|
|||||||
|
use std::sync::Arc;
|
||||||
|
|
||||||
|
use async_trait::async_trait;
|
||||||
|
use cuddle_ci::cuddle_file::CuddleFile;
|
||||||
|
use cuddle_ci::cuddle_releaser::CuddleReleaser;
|
||||||
|
use cuddle_ci::rust_service::architecture::{Architecture, Os};
|
||||||
|
use cuddle_ci::rust_service::RustService;
|
||||||
|
use cuddle_ci::rust_service::{extensions::*, RustServiceContext};
|
||||||
|
use cuddle_ci::{Context, CuddleCI, MainAction, PullRequestAction};
|
||||||
|
use tokio::sync::Mutex;
|
||||||
|
|
||||||
|
#[tokio::main]
|
||||||
|
async fn main() -> eyre::Result<()> {
|
||||||
|
let client = dagger_sdk::connect().await?;
|
||||||
|
let cuddle_file = CuddleFile::from_cuddle_file().await?;
|
||||||
|
|
||||||
|
let service = RustService::from(client.clone())
|
||||||
|
.with_arch(Architecture::Amd64)
|
||||||
|
.with_os(Os::Linux)
|
||||||
|
.with_apt(&["libssl-dev", "libz-dev", "libpq-dev", "protobuf-compiler"])
|
||||||
|
.with_apt_release(&["libssl-dev", "libz-dev", "libpq-dev"])
|
||||||
|
.with_apt_ca_certificates()
|
||||||
|
.with_crates(["crates/*"])
|
||||||
|
.with_mold("2.3.3")
|
||||||
|
.with_bin_name(cuddle_file.vars.service)
|
||||||
|
.with_deployment(false)
|
||||||
|
.to_owned();
|
||||||
|
|
||||||
|
let service = Arc::new(Mutex::new(service));
|
||||||
|
|
||||||
|
let render = Arc::new(Mutex::new(RustServiceRender::default()));
|
||||||
|
|
||||||
|
let deployment = Arc::new(Mutex::new(CuddleReleaser::new(client).await?));
|
||||||
|
CuddleCI::default()
|
||||||
|
.with_pull_request(service.clone())
|
||||||
|
//.with_pull_request(render.clone())
|
||||||
|
//.with_pull_request(deployment.clone())
|
||||||
|
.with_main(service.clone())
|
||||||
|
.with_main(render.clone())
|
||||||
|
.with_main(deployment.clone())
|
||||||
|
.execute(std::env::args())
|
||||||
|
.await?;
|
||||||
|
|
||||||
|
Ok(())
|
||||||
|
}
|
||||||
|
|
||||||
|
#[derive(Default)]
|
||||||
|
struct RustServiceRender {}
|
||||||
|
|
||||||
|
#[async_trait]
|
||||||
|
impl MainAction for RustServiceRender {
|
||||||
|
async fn execute_main(&self, ctx: &mut Context) -> eyre::Result<()> {
|
||||||
|
let image_tag = ctx
|
||||||
|
.get_image_tag()?
|
||||||
|
.ok_or(eyre::anyhow!("failed to find image_tag"))?;
|
||||||
|
|
||||||
|
cuddle_ci::cuddle_x::well_known::render(vec![
|
||||||
|
"--cluster",
|
||||||
|
"clank-prod",
|
||||||
|
"--image_tag",
|
||||||
|
&image_tag,
|
||||||
|
])
|
||||||
|
.await?;
|
||||||
|
|
||||||
|
Ok(())
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#[async_trait]
|
||||||
|
impl PullRequestAction for RustServiceRender {
|
||||||
|
async fn execute_pull_request(&self, ctx: &mut Context) -> eyre::Result<()> {
|
||||||
|
let image_tag = ctx
|
||||||
|
.get_image_tag()?
|
||||||
|
.ok_or(eyre::anyhow!("failed to find image_tag"))?;
|
||||||
|
|
||||||
|
cuddle_ci::cuddle_x::well_known::render(vec![
|
||||||
|
"--cluster",
|
||||||
|
"clank-dev",
|
||||||
|
"--image_tag",
|
||||||
|
&image_tag,
|
||||||
|
])
|
||||||
|
.await?;
|
||||||
|
|
||||||
|
Ok(())
|
||||||
|
}
|
||||||
|
}
|
24
cuddle.yaml
Normal file
24
cuddle.yaml
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
# yaml-language-server: $schema=https://git.front.kjuulh.io/kjuulh/cuddle/raw/branch/main/schemas/base.json
|
||||||
|
|
||||||
|
base: "git@git.front.kjuulh.io:kjuulh/cuddle-base.git"
|
||||||
|
|
||||||
|
vars:
|
||||||
|
service: "cuddle-rust-cli-plan"
|
||||||
|
registry: kasperhermansen
|
||||||
|
|
||||||
|
clusters:
|
||||||
|
clank-prod:
|
||||||
|
replicas: "3"
|
||||||
|
namespace: prod
|
||||||
|
|
||||||
|
scripts:
|
||||||
|
render:
|
||||||
|
type: shell
|
||||||
|
args:
|
||||||
|
cluster:
|
||||||
|
name: cluster
|
||||||
|
type: flag
|
||||||
|
image_tag:
|
||||||
|
name: image_tag
|
||||||
|
type: flag
|
||||||
|
|
3
renovate.json
Normal file
3
renovate.json
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
{
|
||||||
|
"$schema": "https://docs.renovatebot.com/renovate-schema.json"
|
||||||
|
}
|
19
scripts/render.sh
Executable file
19
scripts/render.sh
Executable file
@ -0,0 +1,19 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
set -eou pipefail
|
||||||
|
|
||||||
|
echo "rendering folder"
|
||||||
|
|
||||||
|
cuddle render folder \
|
||||||
|
--source $TMP/kustomize \
|
||||||
|
--destination $TMP/rendered/kustomize \
|
||||||
|
--extra-var cluster=$CLUSTER \
|
||||||
|
--extra-var image_tag=$IMAGE_TAG
|
||||||
|
|
||||||
|
echo "rendering kustomize"
|
||||||
|
|
||||||
|
cuddle render kustomize \
|
||||||
|
--kustomize-folder $TMP/rendered/kustomize/base \
|
||||||
|
--destination $TMP/k8s
|
||||||
|
|
||||||
|
echo "done"
|
20
templates/deployment.yaml
Normal file
20
templates/deployment.yaml
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
apiVersion: apps/v1
|
||||||
|
kind: Deployment
|
||||||
|
metadata:
|
||||||
|
name: "{{ service }}"
|
||||||
|
spec:
|
||||||
|
selector:
|
||||||
|
matchLabels:
|
||||||
|
app: "{{ service }}"
|
||||||
|
template:
|
||||||
|
spec:
|
||||||
|
containers:
|
||||||
|
- name: "{{ service }}"
|
||||||
|
image: "deployment:latest"
|
||||||
|
ports:
|
||||||
|
- containerPort: 3000
|
||||||
|
name: external_http
|
||||||
|
- containerPort: 3001
|
||||||
|
name: internal_http
|
||||||
|
- containerPort: 3002
|
||||||
|
name: internal_grpc
|
22
templates/kustomize/base/deployment.yaml
Normal file
22
templates/kustomize/base/deployment.yaml
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
apiVersion: apps/v1
|
||||||
|
kind: Deployment
|
||||||
|
metadata:
|
||||||
|
name: "{{ service }}"
|
||||||
|
spec:
|
||||||
|
selector:
|
||||||
|
matchLabels:
|
||||||
|
app: "{{ service }}"
|
||||||
|
template:
|
||||||
|
spec:
|
||||||
|
containers:
|
||||||
|
- name: "{{ service }}"
|
||||||
|
command: [{{ service }}]
|
||||||
|
args: ["serve"]
|
||||||
|
image: "deployment:latest"
|
||||||
|
ports:
|
||||||
|
- containerPort: 3000
|
||||||
|
name: external-http
|
||||||
|
- containerPort: 3001
|
||||||
|
name: internal-http
|
||||||
|
- containerPort: 3002
|
||||||
|
name: internal-grpc
|
24
templates/kustomize/base/kustomization.yaml
Normal file
24
templates/kustomize/base/kustomization.yaml
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
|
||||||
|
{% set_global cluster_vars = filter_by_prefix(prefix=["clusters", cluster]) %}
|
||||||
|
|
||||||
|
apiVersion: kustomize.config.k8s.io/v1beta1
|
||||||
|
kind: Kustomization
|
||||||
|
|
||||||
|
resources:
|
||||||
|
- deployment.yaml
|
||||||
|
- service.yaml
|
||||||
|
|
||||||
|
commonLabels:
|
||||||
|
app: "{{ service }}"
|
||||||
|
cluster: "{{ cluster }}"
|
||||||
|
|
||||||
|
namespace: "{{ cluster_vars.namespace }}"
|
||||||
|
|
||||||
|
replicas:
|
||||||
|
- name: "{{ service }}"
|
||||||
|
count: {{ cluster_vars.replicas }}
|
||||||
|
|
||||||
|
images:
|
||||||
|
- name: "deployment"
|
||||||
|
newName: "{{ registry }}/{{ service }}"
|
||||||
|
newTag: "{{ image_tag }}"
|
17
templates/kustomize/base/service.yaml
Normal file
17
templates/kustomize/base/service.yaml
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
apiVersion: v1
|
||||||
|
kind: Service
|
||||||
|
metadata:
|
||||||
|
name: "{{ service }}"
|
||||||
|
spec:
|
||||||
|
type: LoadBalancer
|
||||||
|
ports:
|
||||||
|
- name: external-http
|
||||||
|
port: 3000
|
||||||
|
targetPort: 3000
|
||||||
|
- name: internal-http
|
||||||
|
port: 3001
|
||||||
|
targetPort: 3001
|
||||||
|
- name: internal-grpc
|
||||||
|
port: 3002
|
||||||
|
targetPort: 3002
|
||||||
|
|
Loading…
Reference in New Issue
Block a user