commit 968716ec7686149bc96f58d789d6e442d84575b9 Author: Laurent Drogou Date: Wed Apr 6 15:33:57 2022 +0200 :tada: initial commit 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