Skip to content

Commit 04d98ee

Browse files
committed
feat: add local environment
1 parent 2391063 commit 04d98ee

File tree

15 files changed

+329
-0
lines changed

15 files changed

+329
-0
lines changed

.gitignore

+1
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,3 @@
11
.terraform
22
terraform.tfvars
3+
.vscode/
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
apiVersion: k3d.io/v1alpha4
2+
kind: Simple
3+
metadata:
4+
name: kube-polycode-local
5+
network: host
6+
options:
7+
k3s:
8+
extraArgs:
9+
- arg: --disable=traefik
10+
nodeFilters:
11+
- servers:*

charts/argo-cd/chart/templates/argocd-server/deployment.yaml

+3
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,9 @@ spec:
4242
imagePullPolicy: {{ default .Values.global.image.imagePullPolicy .Values.server.image.imagePullPolicy }}
4343
command:
4444
- argocd-server
45+
{{ if .Values.server.insecure }}
46+
- --insecure
47+
{{ end }}
4548
{{ if .Values.server.staticAssets.enabled }}
4649
- --staticassets
4750
- /shared/app

charts/argo-cd/local.values.yml

+99
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,99 @@
1+
server:
2+
ingress:
3+
enabled: true
4+
annotations:
5+
kubernetes.io/ingress.class: nginx
6+
hosts:
7+
- argo.polycode.127.0.0.1.sslip.io
8+
insecure: true # disable force tls from argo
9+
additionalApplications:
10+
- name: local-frontend
11+
namespace: argo-cd
12+
project: local
13+
source:
14+
repoURL: [email protected]:do-polycode/frontend.git
15+
targetRevision: HEAD
16+
path: helm/chart
17+
helm:
18+
releaseName: frontend
19+
valueFiles:
20+
- ../local.values.yaml
21+
destination:
22+
server: https://kubernetes.default.svc
23+
namespace: polycode
24+
- name: local-api
25+
namespace: argo-cd
26+
project: local
27+
source:
28+
repoURL: [email protected]:do-polycode/backend.git
29+
targetRevision: HEAD
30+
path: helm/api/chart
31+
helm:
32+
releaseName: backend
33+
valueFiles:
34+
- ../local.values.yaml
35+
destination:
36+
server: https://kubernetes.default.svc
37+
namespace: polycode
38+
- name: local-runner
39+
namespace: argo-cd
40+
project: local
41+
source:
42+
repoURL: [email protected]:do-polycode/backend.git
43+
targetRevision: HEAD
44+
path: helm/runner/chart
45+
helm:
46+
releaseName: runner
47+
valueFiles:
48+
- ../local.values.yaml
49+
destination:
50+
server: https://kubernetes.default.svc
51+
namespace: polycode
52+
- name: postgresql
53+
namespace: argo-cd
54+
project: default
55+
source:
56+
repoURL: 'https://github.com/bitnami/charts.git'
57+
path: bitnami/postgresql-ha
58+
targetRevision: HEAD
59+
destination:
60+
server: 'https://kubernetes.default.svc'
61+
namespace: polycode
62+
helm:
63+
releaseName: postgresql
64+
- name: mongodb
65+
namespace: argo-cd
66+
project: default
67+
source:
68+
repoURL: 'https://github.com/bitnami/charts.git'
69+
path: bitnami/mongodb
70+
targetRevision: HEAD
71+
destination:
72+
server: 'https://kubernetes.default.svc'
73+
namespace: polycode
74+
helm:
75+
releaseName: mongodb
76+
77+
additionalProjects:
78+
- name: local
79+
namespace: argo-cd
80+
description: Polycode Local Project
81+
sourceRepos:
82+
- [email protected]:do-polycode/frontend.git
83+
- [email protected]:do-polycode/backend.git
84+
destinations:
85+
- namespace: polycode
86+
server: https://kubernetes.default.svc
87+
configs:
88+
repositories:
89+
frontend:
90+
url: [email protected]:do-polycode/frontend.git
91+
name: frontend
92+
backend:
93+
url: [email protected]:do-polycode/backend.git
94+
name: backend
95+
knownHosts:
96+
data:
97+
ssh_known_hosts: |
98+
gitlab.polytech.umontpellier.fr ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIBwrfX+ORYpnJXbL147VngSjRh581nL2pC5acEC9p9Zz
99+
gitlab.polytech.umontpellier.fr ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBLdTyDhj8idM5LvRVraa3Hcy877xd8T8q0xDzIYI+GdEbKOc+eN4Gqf9QlrKqfSHNo4ydzM8Wwoah+xehGUrYrM=

charts/ingress-nginx/local.values.yml

Whitespace-only changes.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
grafana:
2+
adminPassword: polycode-grafana
3+
ingress:
4+
enabled: true
5+
annotations:
6+
kubernetes.io/ingress.class: nginx
7+
hosts:
8+
- grafana.polycode.127.0.0.1.sslip.io

terraform/local/k8s-cluster/.terraform.lock.hcl

+44
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
+29
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
resource "helm_release" "argo_cd_release" {
2+
name = "argo-cd"
3+
namespace = kubernetes_namespace.argo_cd_namespace.metadata[0].name
4+
5+
chart = "../../../charts/argo-cd/chart"
6+
values = ["${file("../../../charts/argo-cd/local.values.yml")}"]
7+
8+
set_sensitive {
9+
name = "configs.secret.argocdServerAdminPassword"
10+
# This value need to be bcrypt hashed
11+
# To hash it you can run : htpasswd -nbBC 10 "" $ARGO_PWD | tr -d ':\n' | sed 's/$2y/$2a/'
12+
value = var.argo_cd_admin_password
13+
}
14+
15+
set_sensitive {
16+
name = "configs.repositories.frontend.sshPrivateKey"
17+
value = var.gitlab_deploy_key
18+
}
19+
20+
set_sensitive {
21+
name = "configs.repositories.backend.sshPrivateKey"
22+
value = var.gitlab_deploy_key
23+
}
24+
25+
depends_on = [
26+
kubernetes_namespace.argo_cd_namespace,
27+
helm_release.ingress_nginx_release
28+
]
29+
}
+11
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
resource "helm_release" "ingress_nginx_release" {
2+
name = "ingress-nginx"
3+
namespace = kubernetes_namespace.ingress_nginx_namespace.metadata[0].name
4+
5+
chart = "../../../charts/ingress-nginx/chart"
6+
values = ["${file("../../../charts/ingress-nginx/local.values.yml")}"]
7+
8+
depends_on = [
9+
kubernetes_namespace.ingress_nginx_namespace
10+
]
11+
}
+17
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
resource "helm_release" "kube_prometheus_stack_release" {
2+
name = "kube-prometheus-stack"
3+
namespace = kubernetes_namespace.kube_prometheus_stack_namespace.metadata[0].name
4+
5+
chart = "../../../charts/kube-prometheus-stack/chart"
6+
values = ["${file("../../../charts/kube-prometheus-stack/local.values.yml")}"]
7+
8+
set_sensitive {
9+
name = "grafana.adminPassword"
10+
value = var.grafana_admin_password
11+
}
12+
13+
depends_on = [
14+
kubernetes_namespace.kube_prometheus_stack_namespace,
15+
helm_release.ingress_nginx_release
16+
]
17+
}
+23
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
resource "kubernetes_namespace" "polycode_namespace" {
2+
metadata {
3+
name = "polycode"
4+
}
5+
}
6+
7+
resource "kubernetes_namespace" "ingress_nginx_namespace" {
8+
metadata {
9+
name = "ingress-nginx"
10+
}
11+
}
12+
13+
resource "kubernetes_namespace" "kube_prometheus_stack_namespace" {
14+
metadata {
15+
name = "kube-prometheus-stack"
16+
}
17+
}
18+
19+
resource "kubernetes_namespace" "argo_cd_namespace" {
20+
metadata {
21+
name = "argo-cd"
22+
}
23+
}
+11
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
provider "kubernetes" {
2+
config_path = var.kubeconfig_path
3+
config_context = var.kubeconfig_context_name
4+
}
5+
6+
provider "helm" {
7+
kubernetes {
8+
config_path = var.kubeconfig_path
9+
config_context = var.kubeconfig_context_name
10+
}
11+
}
+24
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
resource "kubernetes_secret" "gitlab_registry_pull_secret" {
2+
metadata {
3+
name = "registry-credentials"
4+
namespace = kubernetes_namespace.polycode_namespace.metadata[0].name
5+
}
6+
7+
type = "kubernetes.io/dockerconfigjson"
8+
9+
data = {
10+
".dockerconfigjson" = <<EOF
11+
{
12+
"auths" : {
13+
"https://docker.repo.nexus.polycode.do-2021.fr" : {
14+
"username" : "local-docker-pull",
15+
"password" : "${var.container_registry_password}",
16+
"email" : "[email protected]",
17+
"auth" : "${base64encode("local-docker-pull:${var.container_registry_password}")}"
18+
}
19+
}
20+
}
21+
EOF
22+
}
23+
}
24+
+35
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
variable "kubeconfig_context_name" {
2+
type = string
3+
default = "k3d-kube-polycode-local"
4+
}
5+
6+
variable "kubeconfig_path" {
7+
type = string
8+
default = "~/.kube/config"
9+
}
10+
11+
variable "grafana_admin_password" {
12+
type = string
13+
description = "Grafana admin password"
14+
default = "admin"
15+
sensitive = true
16+
}
17+
18+
variable "argo_cd_admin_password" {
19+
type = string
20+
description = "Argo CD bcrypt hashed admin password"
21+
default = "$2y$10$adCiprUiugTubOEkA49aierhMbxym5Q3T5M3FAXLZ3qKpq3q1gWyS"
22+
sensitive = true
23+
}
24+
25+
variable "gitlab_deploy_key" {
26+
type = string
27+
description = "The path to the private key used to connect to the Gitlab repositories"
28+
sensitive = true
29+
}
30+
31+
variable "container_registry_password" {
32+
type = string
33+
description = "The password generated by the deploy token used to access the container registry"
34+
sensitive = true
35+
}
+13
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
terraform {
2+
required_providers {
3+
kubernetes = {
4+
source = "hashicorp/kubernetes"
5+
version = "2.11.0"
6+
}
7+
8+
helm = {
9+
source = "hashicorp/helm"
10+
version = "2.5.1"
11+
}
12+
}
13+
}

0 commit comments

Comments
 (0)