From 968716ec7686149bc96f58d789d6e442d84575b9 Mon Sep 17 00:00:00 2001 From: Laurent Drogou Date: Wed, 6 Apr 2022 15:33:57 +0200 Subject: [PATCH] :tada: initial commit --- add-all-service-helm.sh | 9 ++ add-all-service.sh | 10 ++ bdd/service-mongodb.yaml | 92 ++++++++++++ bdd/service-postgres.yaml | 102 +++++++++++++ create-k3d-outils.sh | 1 + dev-localhost-cert.yaml | 12 ++ enabled-kube-authent.sh | 15 ++ enabled-pki.sh | 18 +++ graviteeio/helm-graviteeio-server.yaml | 15 ++ graviteeio/ingress-graviteeio-gateway.yaml | 14 ++ graviteeio/ingress-graviteeio-management.yaml | 14 ++ graviteeio/ingress-graviteeio-webui.yaml | 14 ++ graviteeio/service-gravitee-gateway.yaml | 44 ++++++ graviteeio/service-gravitee-management.yaml | 44 ++++++ graviteeio/service-gravitee-webui.yaml | 44 ++++++ init-issuer.sh | 26 ++++ init-keys.json | 0 k3d-default.yaml | 7 + namespaces-create.yaml | 34 +++++ outils-config-v3.yaml | 60 ++++++++ rabbitmq/service-rabbitmq.yaml | 49 +++++++ sourcegraph/ingress-sourcegraph.yaml | 14 ++ sourcegraph/service-sourcegraph.yaml | 137 ++++++++++++++++++ vault/helm-vault-server.yaml | 15 ++ vault/ingress-vault.yaml | 14 ++ vault/init-vault.sh | 2 + vault/issuer-vault.yaml | 16 ++ vault/unseal-vault.sh | 8 + vault/vault-issuer.yaml | 16 ++ 29 files changed, 846 insertions(+) create mode 100755 add-all-service-helm.sh create mode 100755 add-all-service.sh create mode 100644 bdd/service-mongodb.yaml create mode 100644 bdd/service-postgres.yaml create mode 100755 create-k3d-outils.sh create mode 100644 dev-localhost-cert.yaml create mode 100644 enabled-kube-authent.sh create mode 100644 enabled-pki.sh create mode 100644 graviteeio/helm-graviteeio-server.yaml create mode 100644 graviteeio/ingress-graviteeio-gateway.yaml create mode 100644 graviteeio/ingress-graviteeio-management.yaml create mode 100644 graviteeio/ingress-graviteeio-webui.yaml create mode 100644 graviteeio/service-gravitee-gateway.yaml create mode 100644 graviteeio/service-gravitee-management.yaml create mode 100644 graviteeio/service-gravitee-webui.yaml create mode 100644 init-issuer.sh create mode 100644 init-keys.json create mode 100644 k3d-default.yaml create mode 100644 namespaces-create.yaml create mode 100644 outils-config-v3.yaml create mode 100644 rabbitmq/service-rabbitmq.yaml create mode 100644 sourcegraph/ingress-sourcegraph.yaml create mode 100644 sourcegraph/service-sourcegraph.yaml create mode 100644 vault/helm-vault-server.yaml create mode 100644 vault/ingress-vault.yaml create mode 100755 vault/init-vault.sh create mode 100644 vault/issuer-vault.yaml create mode 100755 vault/unseal-vault.sh create mode 100644 vault/vault-issuer.yaml diff --git a/add-all-service-helm.sh b/add-all-service-helm.sh new file mode 100755 index 0000000..07ab46a --- /dev/null +++ b/add-all-service-helm.sh @@ -0,0 +1,9 @@ +kubectl apply -f namespaces-create.yaml +kubectl apply -f https://github.com/jetstack/cert-manager/releases/download/v1.6.0/cert-manager.yaml +kubectl apply -f service-postgres.yaml +kubectl apply -f service-mongodb.yaml +kubectl apply -f service-sourcegraph.yaml +kubectl apply -f ingress-sourcegraph.yaml +kubectl apply -f helm-vault-server.yaml +kubectl apply -f ingress-vault.yaml +kubectl apply -f helm-graviteeio-server.yaml diff --git a/add-all-service.sh b/add-all-service.sh new file mode 100755 index 0000000..8166011 --- /dev/null +++ b/add-all-service.sh @@ -0,0 +1,10 @@ +kubectl apply -f namespaces-create.yaml +kubectl apply -f https://github.com/jetstack/cert-manager/releases/download/v1.6.0/cert-manager.yaml +kubectl apply -f ./bdd/service-postgres.yaml +kubectl apply -f ./bdd/service-mongodb.yaml +kubectl apply -f ./rabbitmq/service-rabbitmq.yaml +#kubectl apply -f ./sourcegrpah/service-sourcegraph.yaml +#kubectl apply -f ./sourcegraph/ingress-sourcegraph.yaml +kubectl apply -f ./vault/helm-vault-server.yaml +kubectl apply -f ./vault/ingress-vault.yaml + diff --git a/bdd/service-mongodb.yaml b/bdd/service-mongodb.yaml new file mode 100644 index 0000000..35cd8e5 --- /dev/null +++ b/bdd/service-mongodb.yaml @@ -0,0 +1,92 @@ +apiVersion: storage.k8s.io/v1 +kind: StorageClass +metadata: + name: mongo +provisioner: rancher.io/local-path +volumeBindingMode: WaitForFirstConsumer +--- +apiVersion: v1 +kind: PersistentVolume +metadata: + name: mongo-pv-volume + namespace: database + labels: + type: local +spec: + storageClassName: mongo + capacity: + storage: 50Gi + accessModes: + - ReadWriteOnce + hostPath: + path: "/rca/mongodb/data" +--- +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + labels: + deploy: mongo + app.kubernetes.io/component: mongodb + name: mongo + namespace: database +spec: + accessModes: + - ReadWriteOnce + resources: + requests: + storage: 50Gi + storageClassName: mongo +--- +apiVersion: apps/v1 +kind: StatefulSet +metadata: + name: mongo-statefulset + namespace: database + labels: + app: mongo +spec: + serviceName: "mongo" + replicas: 1 + selector: + matchLabels: + app: mongo + template: + metadata: + labels: + app: mongo + spec: + containers: + - name: mongodb + image: mongo:3.4 + #env: + # - name: MONGO_INITDB_ROOT_USERNAME + # value: admin + # - name: MONGO_INITDB_ROOT_PASSWORD + # value: password + ports: + - containerPort: 27017 + name: mongodb + volumeMounts: + - mountPath: /data/db + name: mongo-pv-data + volumes: + - name: mongo-pv-data + persistentVolumeClaim: + claimName: mongo +--- +apiVersion: v1 +kind: Service +metadata: + name: mongo-service + namespace: database + labels: + app: mongo +spec: + ports: + - port: 27017 + nodePort: 30010 + name: mongo + type: NodePort + selector: + app: mongo + diff --git a/bdd/service-postgres.yaml b/bdd/service-postgres.yaml new file mode 100644 index 0000000..2150d02 --- /dev/null +++ b/bdd/service-postgres.yaml @@ -0,0 +1,102 @@ +apiVersion: storage.k8s.io/v1 +kind: StorageClass +metadata: + name: postgres +provisioner: rancher.io/local-path +volumeBindingMode: WaitForFirstConsumer +--- +apiVersion: v1 +kind: PersistentVolume +metadata: + name: task-pv-volume + namespace: database + labels: + type: local +spec: + storageClassName: postgres + capacity: + storage: 50Gi + accessModes: + - ReadWriteOnce + hostPath: + path: "/rca/postgres/data" +--- +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + labels: + deploy: postgres + app.kubernetes.io/component: postgres + name: postgres + namespace: database +spec: + accessModes: + - ReadWriteOnce + resources: + requests: + storage: 50Gi + storageClassName: postgres +--- +apiVersion: v1 +kind: ConfigMap +metadata: + name: postgres-configuration + namespace: database + labels: + app: postgres +data: + POSTGRES_DB: postgres + POSTGRES_USER: rootrca + POSTGRES_PASSWORD: rca12345 +--- +apiVersion: apps/v1 +kind: StatefulSet +metadata: + name: postgres-statefulset + namespace: database + labels: + app: postgres +spec: + serviceName: "postgres" + replicas: 1 + selector: + matchLabels: + app: postgres + template: + metadata: + labels: + app: postgres + spec: + containers: + - name: postgres + image: postgres:12 + envFrom: + - configMapRef: + name: postgres-configuration + ports: + - containerPort: 5432 + name: postgresdb + volumeMounts: + - mountPath: /var/lib/postgresql/data + name: pv-data + volumes: + - name: pv-data + persistentVolumeClaim: + claimName: postgres +--- +apiVersion: v1 +kind: Service +metadata: + name: postgres-service + namespace: database + labels: + app: postgres +spec: + ports: + - port: 5432 + nodePort: 30080 + name: postgres + type: NodePort + selector: + app: postgres + diff --git a/create-k3d-outils.sh b/create-k3d-outils.sh new file mode 100755 index 0000000..3b1aae3 --- /dev/null +++ b/create-k3d-outils.sh @@ -0,0 +1 @@ +k3d cluster create outils --config outils-config-v3.yaml diff --git a/dev-localhost-cert.yaml b/dev-localhost-cert.yaml new file mode 100644 index 0000000..e414941 --- /dev/null +++ b/dev-localhost-cert.yaml @@ -0,0 +1,12 @@ +apiVersion: cert-manager.io/v1 +kind: Certificate +metadata: + name: dev-localhost + namespace: default +spec: + secretName: dev-localhost-tls + issuerRef: + name: vault-issuer + commonName: dev.localhost + dnsNames: + - dev.localhost diff --git a/enabled-kube-authent.sh b/enabled-kube-authent.sh new file mode 100644 index 0000000..e513f93 --- /dev/null +++ b/enabled-kube-authent.sh @@ -0,0 +1,15 @@ +#kubectl exec --stdin=true --tty=true vault-0 -- /bin/sh +vault auth enable kubernetes + +vault write auth/kubernetes/config \ + kubernetes_host="https://$KUBERNETES_PORT_443_TCP_ADDR:443" \ + token_reviewer_jwt="$(cat /var/run/secrets/kubernetes.io/serviceaccount/token)" \ + kubernetes_ca_cert=@/var/run/secrets/kubernetes.io/serviceaccount/ca.crt \ + issuer="https://kubernetes.default.svc.cluster.local" + +vault write auth/kubernetes/role/issuer \ + bound_service_account_names=issuer \ + bound_service_account_namespaces=default \ + policies=pki \ + ttl=20m + diff --git a/enabled-pki.sh b/enabled-pki.sh new file mode 100644 index 0000000..dd3d78c --- /dev/null +++ b/enabled-pki.sh @@ -0,0 +1,18 @@ +#kubectl exec --stdin=true --tty=true vault-0 -- /bin/sh +vault secrets enable pki + +vault secrets tune -max-lease-ttl=8760h pki + +vault write pki/root/generate/internal common_name=dev.localhost ttl=8760h + +vault write pki/config/urls issuing_certificates="http://vault.default:8200/v1/pki/ca" crl_distribution_points="http://vault.default:8200/v1/pki/crl" + +vault write pki/roles/dev-dot-localhost allowed_domains=dev.localhost allow_subdomains=true max_ttl=72h + +vault policy write pki - < vault-issuer.yaml < init-keys.json +./unseal-vault.sh diff --git a/vault/issuer-vault.yaml b/vault/issuer-vault.yaml new file mode 100644 index 0000000..3e6bdf0 --- /dev/null +++ b/vault/issuer-vault.yaml @@ -0,0 +1,16 @@ +apiVersion: cert-manager.io/v1 +kind: Issuer +metadata: + name: vault-issuer + namespace: default +spec: + vault: + server: http://vault.default:8200 + path: pki/sign/dev-dot-localhost + auth: + kubernetes: + mountPath: /v1/auth/kubernetes + role: issuer + secretRef: + name: issuer-token-sh68l + key: token diff --git a/vault/unseal-vault.sh b/vault/unseal-vault.sh new file mode 100755 index 0000000..17b0959 --- /dev/null +++ b/vault/unseal-vault.sh @@ -0,0 +1,8 @@ +cat init-keys.json | jq -r ".unseal_keys_b64[]" +VAULT_UNSEAL_KEY=$(cat init-keys.json | jq -r ".unseal_keys_b64[]") +kubectl exec vault-0 -- vault operator unseal $VAULT_UNSEAL_KEY +kubectl get pods +cat init-keys.json | jq -r ".root_token" +VAULT_ROOT_TOKEN=$(cat init-keys.json | jq -r ".root_token") +kubectl exec vault-0 -- vault login $VAULT_ROOT_TOKEN + diff --git a/vault/vault-issuer.yaml b/vault/vault-issuer.yaml new file mode 100644 index 0000000..00e095e --- /dev/null +++ b/vault/vault-issuer.yaml @@ -0,0 +1,16 @@ +apiVersion: cert-manager.io/v1 +kind: Issuer +metadata: + name: vault-issuer + namespace: default +spec: + vault: + server: http://vault.default:8200 + path: pki/role/dev-dot-localhost + auth: + kubernetes: + mountPath: /v1/auth/kubernetes + role: issuer + secretRef: + name: issuer-token-xhgk8 + key: token