Skip to content

Latest commit

 

History

56 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Ozone

ozone is the cloud native platform for hosting workshops at google developer groups.

Demo

ozone.mp4

Features

  • Continous Integration with ArgoCD
  • Fully self hosted Kubernetes on Microsoft Azure
  • Built in Kubernetes client-go support for provisioning dynamic resources

Architecture

Ozone utilizes openvscode-server as its primary way of serving instances to users. Upon a request to start a new instance, the dynamic kubernetes controller built into ozone will provision a new deployment and nodeport service. The current infrastructure depends on infra which utilizes haproxy as a load-balancer to forward any nodeport to the worker plane nodes on the cluster.

K8s Deployment

  1. Install cert-manager
  2. Install cass-operator
helm repo add k8ssandra https://helm.k8ssandra.io/stable
helm repo update

helm install cass-operator k8ssandra/cass-operator -n cass-operator --create-namespace

# deploy the Cassandra Datacenter

kubectl apply -f k8s/cassandra/manifest.yaml

# create the "main" keyspace

# connect to the cluster via cqlsh
kubectl run -n ozone -it --rm --restart=Never cqlsh --image=cassandra -- cqlsh -u $CASSANDRA_USERNAME -p $CASSANDRA_PASSWORD development-dc1-all-pods-service.cass-operator.svc.cluster.local

# exec into the cqlsh pod and pull the schema
kubectl exec -it -n ozone -c cqlsh cqlsh -- /bin/bash

wget https://raw.githubusercontent.com/GlennTatum/ozone/refs/heads/main/server/data/init.cql

# in cqlsh
development-superuser@cqlsh> SOURCE 'init.cql'
  1. Deploy redis
helm install my-release oci://registry-1.docker.io/bitnamicharts/redis --values k8s/redis/values.yaml

Repository Layout

├── frontend
│   └── ui
│       ├── angular.json
│       ├── dev.sh
│       ├── dist
│       ├── Dockerfile.bootstrap
│       ├── Dockerfile.dev
│       ├── node_modules
│       ├── package.json
│       ├── package-lock.json
│       ├── public
│       ├── README.md
│       ├── src
│       ├── start.sh
│       ├── tsconfig.app.json
│       ├── tsconfig.json
│       └── tsconfig.spec.json
└── server
    ├── api
    │   ├── api.go
    │   ├── kubernetes.go
    │   ├── manifests
    │   ├── middleware.go
    │   └── service.go
    ├── argocd.yml
    ├── data
    │   └── init.cql
    ├── docker-compose.yml
    ├── Dockerfile
    ├── go.mod
    ├── go.sum
    ├── helm
    │   ├── charts
    │   ├── Chart.yaml
    │   ├── envs
    │   └── templates
    ├── main.go
    ├── models
    │   ├── account.go
    │   └── models.go
    ├── setup-secrets.sh
    └── util
        ├── kubernetes.go
        ├── kubernetes_test.go
        ├── kustomization-ingress-patch.yml
        ├── kustomization.yaml
        ├── kustomize.go
        ├── template.go
        └── template_test.go

About

Cloud Native Workshops done easy

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages