Giter Club home page Giter Club logo

gitops's Introduction

#! - Core Infrastructure

http://github.com/hashbang/hashbang

About

This repository contains the design documents and documentation for Hashbang's overall infrastructure.

Likewise, its associated issue tracker is used for keeping track of infra-wide issues, bugs, improvements, ...

Services

Currently we provide the following services:

Documentation

Notes

Use at your own risk. You may be eaten by a grue.

Questions/Comments?

Talk to us via:

Email | IRC | Github

gitops's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

gitops's Issues

Action Required: Fix Renovate Configuration

There is an error with this repository's Renovate configuration that needs to be fixed. As a precaution, Renovate will stop PRs until it is resolved.

Location: renovate.json
Error type: Invalid JSON (parsing failed)
Message: Syntax error near ],

Bring userdb into k8s

There's an official DigitalOcean operator that can create and manage DO's hosted databases as normal k8s resources.

I think it would be useful to pivot to a userdb instance managed this way, and replace the manually-managed credentials and secrets with automatically provisioned ones.

Dependency Dashboard

This issue lists Renovate updates and detected dependencies. Read the Dependency Dashboard docs to learn more.

Open

These updates have all been created already. Click a checkbox below to force a retry/rebase of any.

Detected dependencies

kustomize
argocd/kustomization.yaml
  • quay.io/argoproj/argocd v2.10.7@sha256:83c86003b781d43d5a02a4fe80cec7f7a249e90ec07b72a9af6f9a6538e468ff
  • ghcr.io/dexidp/dex v2.37.0-distroless@sha256:ea447c975c9fb79fc7930e80197810b425148557c5bd43fb74ca638e35e4b5f8
  • redis 7.2.0-alpine@sha256:fd5de2340bc46cbc2241975ab027797c350dec6fd86349e3ac384e3a41be6fee
  • viaductoss/ksops v4.3.1@sha256:332ef56b52e3abc323eab2bcb64a2f8f28263710319c758ed30e2772e0da160c
book/kustomization.yaml
  • hashbang/book latest@sha256:95eea06a0186245aa329da9185c963bf66e9ed447ae2c54fc6973aa2a2dab68e
cert-manager/kustomization.yaml
  • cert-manager v1.14.4
external-dns/kustomization.yaml
  • registry.k8s.io/external-dns/external-dns v0.14.1@sha256:7bb4c52748dec4fa2df1a8df7b94355c9677c70378cfe555ee4eb9a476409f0c
ingress-nginx/controller/kustomization.yaml
  • registry.k8s.io/ingress-nginx/controller v1.10.0@sha256:42b3f0e5d0846876b1791cd3afeb5f1cbbe4259d6f35651dcc1b5c980925379c
ircd/kustomization.yaml
  • ghcr.io/ergochat/ergo v2.13.0@sha256:cf7b977bd5377d4561014e2bdfc1afaa8881f7abdcd4e03a899bea4637d93fad
keycloak/kustomization.yaml
  • quay.io/keycloak/keycloak 24.0.2@sha256:b8a3f00fc433f2999bc304b73df331e2005037e8f5673f644f9c0eacd5fbe048
matterbridge/kustomization.yaml
  • 42wim/matterbridge 1.26.0@sha256:ba9ae3b54776d4e4a1317cd7929d62326f7d3dd75e37eb038e01e33e18e41164
mtls/kustomization.yaml
  • drGrove/mtls-server 124865fadd23dca58f74064c681fd3830aac5b59
  • drgrove/mtls-server v0.20.0@sha256:78a5fd3f56ca9034a4a326d598c7a3a43414b57b7f0b4f8d4a579d0df4b2b0ea
site/kustomization.yaml
  • hashbang/hashbang.sh latest@sha256:2d4e1d56586732715a2dd07cc5c4349fec6de13148ded0535e6d8ffeb884a14d
userdb-api/kustomization.yaml
  • postgrest/postgrest v12.0.2@sha256:58a897e8349f3b6a13810ae87751295841f7da1ce68e5f12a18948538fa49837
webirc/kustomization.yaml
  • hashbang/webirc latest@sha256:5b5d8a7b0e84fa4c5e03643c2feff0ef45a209b5e3613fd98a65a80b30007470
wkd/kustomization.yaml
  • drGrove/docker-wkd c47ec975fa0a46f5e7671750254380dfa39c6fc2
  • drgrove/wkd v2.2.2@sha256:b00e9e42486efa6e8601f4aff3d61c9417dcaba993411905a4b63cd2dee72f42
  • kiwigrid/k8s-sidecar 1.26.0@sha256:5b85530b0f28d1f407855b653eb4ab2f4ca1c83716257d7ad8dd746edb2dab1d
regex
argocd/kustomization.yaml
  • argoproj/argo-cd v2.10.7@b060053b099b4c81c1e635839a309c9c8c1863e9
mtls/kustomization.yaml
  • drGrove/mtls-server v0.20.0@124865fadd23dca58f74064c681fd3830aac5b59

  • Check this box to trigger a request for Renovate to run again on this repository

Add Infro PR Checks?

I noticed that this repo uses Argo CD, and I thought I’d let you know that I recently released a Github app called Infro that several companies use internally that allows Argo CD users to preview Kubernetes changes in Github pull requests before they merge. I’m providing it for free to open source projects (here’s an example in the wild). Here’s a setup guide with links to documentation. It’s in early stages, so I’m sure there will be warts. All feedback is welcome!

Hash lock all images

Many of our resources only select a particular image tag; rather than an exact hash.

  • Use kustomization image field to hashlock
  • Check any operators for additional images they may bring in

kubectl get pods --all-namespaces -o json | jq '.items[].spec.containers[].image' | grep -v sha256 | sort -u 
  • digitalocean/do-csi-plugin:v4.2.0
  • docker.io/cilium/cilium:v1.10.4
  • docker.io/cilium/operator:v1.10.4
  • docker.io/coredns/coredns:1.8.4
  • docker.io/digitalocean/arp-flusher:v0.0.2
  • docker.io/digitalocean/do-agent:3.11.0
  • docker.io/digitalocean/do-csi-plugin:v4.4.1
  • hashbang/hashbangctl
  • k8s.gcr.io/sig-storage/csi-attacher:v3.5.0
  • k8s.gcr.io/sig-storage/csi-provisioner:v3.2.1
  • k8s.gcr.io/sig-storage/csi-resizer:v1.5.0
  • k8s.gcr.io/sig-storage/csi-snapshotter:v6.0.1
  • nginx:1.21.0
  • quay.io/jetstack/cert-manager-cainjector:v1.11.2
  • quay.io/jetstack/cert-manager-controller:v1.11.2
  • quay.io/jetstack/cert-manager-webhook:v1.11.2
  • registry.k8s.io/kube-proxy:v1.24.12
  • registry.k8s.io/sig-storage/csi-node-driver-registrar:v2.6.0
  • 42wim/matterbridge:1.26.0
  • drgrove/mtls-server:v0.20.0
  • drgrove/wkd:v2.2.2
  • eu.gcr.io/k8s-artifacts-prod/external-dns/external-dns:v0.13.4
  • ghcr.io/dexidp/dex:v2.36.0-distroless
  • ghcr.io/ergochat/ergo:v2.11.1
  • hashbang/book:latest
  • hashbang/hashbang.sh:latest
  • hashbang/webirc:latest
  • k8s.gcr.io/sig-storage/csi-node-driver-registrar
  • k8s.gcr.io/sig-storage/snapshot-controller
  • k8s.gcr.io/sig-storage/snapshot-validation-webhook
  • kiwigrid/k8s-sidecar:1.24.0
  • postgrest/postgrest:v11.0.1
  • quay.io/argoproj/argocd:v2.7.2
  • redis:7.0.11-alpine
  • redis:7.0.5-alpine
  • registry.k8s.io/ingress-nginx/controller:v1.7.1
  • thatonecalculator/calckey:v13.1.4.1

Set up Dendrite-based IRC bridge

Thoughts for consideration:

  • Should we use hashbang.sh for this or irc.hashbang.sh?
    • If we use irc.hashbang.sh for this, how can we set up hashbang.sh in a way where IRC won't lose out on messages created on a potential hashbang.sh matrix server
    • If we don't use irc.hashbang.sh, we need a good way to set up either SRV records or well-known, with the former being defined in admin-tools and the latter probably being done via an Ingress. I believe we can have separate Ingress on the same domain name defined across namespaces, so this should be a valid option
  • Should this be tested to see if we can use a temporary database?
  • Should we use Dendrite in monolith or polylith mode? Polylith mode probably won't give us any advantage, and given this only needs to scale to the size of the IRC server, I think the IRC server will fall over first.

Set up Loki to use DigitalOcean Spaces Block Storage for log storage

Or an S3 compatible API, if|when we move out of DigitalOcean.

This is useful for us due to free ingress into the system. $5/250GB per month. This is actually cheaper than the current solution using a PVC as those are dynamically generated and are $10/100GB. This also means that we can store more logs over time, and - if we want - we can apply lifecycle rules with DigitalOcean Spaces Block Storage.

ircd: want SIGHUP on TLS change but not db change

Currently we use inotifyd to watch for changes in /ircd/
We do want to fire on e.g. /ircd/ircd.yaml and /ircd/tls/tls.crt
We dont want to fire on e.g. /ircd/db/foo changes

At the moment I think its either not crossing device boundaries or not descending into sub directories.

We may need to move around our mount points to resolve this correctly.

Update Ingress resources

v1beta1 is now dropped. I updated the ingress-nginx Kustomization. It looks like a maintenance script updated the live cluster already, but this needs to be done at some point to avoid overwriting the fixes.

Logging solution

I have a bit of a pet hate for kibana and to a less degree, elastic-search. Lets set up loki (to be used from grafana).

TODO list:

  • collect logs (fluent-bit vs promtail?)
  • rotate logs (? is this automatic?)
  • make logs searchable
  • collect node logs (e.g. dmesg)
  • look into @fatalbanana 's ideas below (boltdb?)
  • set up ingress for local logcli usage

add IRC auth to userdb

I just merged ergochat/ergo#1111, which adds support for authentication plugins via subprocess invocation. The goal in this issue is to start managing IRC authentication credentials in userdb, then get everyone using SASL. Here's a tentative plan:

  1. hashbangctl should generate a strong, secret password on new account creation (@benharri was uncomfortable with this? I definitely want to hear any objections out)
  2. Write a script to check this password against userdb
  3. Turn off account registration in oragono, and instead configure this script (in the new accounts.auth-script config block), with autocreate enabled
  4. New account creation should automatically initialize ~/.weechat/irc.conf to use SASL PLAIN with the autogenerated password. We could write a script like enable-irc-sasl that does this for existing users.

Set up CI

Will be able to at least validate yaml.
Not sure if we'll be able to do a client side dry-run without exposing secrets to the CI server?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.