Create namespace (easier to cleanup resources in a custom namespace)
kubectl create namespace currents
kubectl ns currentsIngress
Install nginx ingress
helm upgrade --install ingress-nginx ingress-nginx \
--repo https://kubernetes.github.io/ingress-nginx \
--set controller.scope.enabled=true \
--set controller.allowSnippetAnnotations=true \
--set controller.config.annotations-risk-level=Critical \
--set controller.ingressClass=currents-nginx \
--set controller.ingressClassResource.name=currents-nginxMongoDB
helm install community-operator community-operator --repo https://mongodb.github.io/helm-chartsEdit the password in samples/mongodb-community-replicaset.yml
kubectl apply -f samples/mongodb-community-replicaset.ymlClickhouse
Create a secrets for user passwords
kubectl create secret generic clickhouse-default-pass --from-literal=password=$(head -c 512 /dev/urandom | LC_ALL=C tr -cd 'a-zA-Z0-9' | head -c 32)
kubectl create secret generic clickhouse-currents-pass --from-literal=password=$(head -c 512 /dev/urandom | LC_ALL=C tr -cd 'a-zA-Z0-9' | head -c 32)helm install clickhouse clickhouse --repo https://helm.altinity.com \
--set=clickhouse.defaultUser.password_secret_name=clickhouse-default-pass \
--set-json='clickhouse.users=[{"name":"currents","password_secret_name":"clickhouse-currents-pass"}]'Object Storage
Create a secret for RustFS credentials
kubectl create secret generic currents-rustfs-user \
--from-literal=RUSTFS_ACCESS_KEY=$(head -c 512 /dev/urandom | LC_ALL=C tr -cd 'a-zA-Z0-9' | head -c 32) \
--from-literal=RUSTFS_SECRET_KEY=$(head -c 512 /dev/urandom | LC_ALL=C tr -cd 'a-zA-Z0-9' | head -c 32)Install RustFS
helm install rustfs rustfs --repo https://charts.rustfs.com -f samples/rustfs-helm-config.yamlCreate the currents bucket
kubectl apply -f samples/rustfs-create-bucket-job.yaml
kubectl wait --for=condition=complete job/rustfs-create-bucket --timeout=60sCreate an ingress for RustFS
kubectl apply -f samples/local/rustfs-ingress.yamlNote that you will need to add rustfs.localhost to your /etc/hosts file on the loopback
Add/update pull secret
kubectl create secret docker-registry currents-pull-secret \
--save-config \
--dry-run=client \
--docker-server=513558712013.dkr.ecr.us-east-1.amazonaws.com \
--docker-username=AWS \
--docker-password=$(aws ecr get-login-password) \
-o yaml | \
kubectl apply -f -Create required secrets for authentication and internal API
kubectl create secret generic currents-better-auth --from-literal=secret=$(head -c 512 /dev/urandom | LC_ALL=C tr -cd 'a-zA-Z0-9' | head -c 64)
kubectl create secret generic currents-api-internal-token --from-literal=token=$(head -c 512 /dev/urandom | LC_ALL=C tr -cd 'a-zA-Z0-9' | head -c 64)Create root user password secret (used for initial admin account)
kubectl create secret generic currents-root-user --from-literal=password=$(head -c 512 /dev/urandom | LC_ALL=C tr -cd 'a-zA-Z0-9' | head -c 32)
# To retrieve the generated password:
kubectl get secret currents-root-user -o jsonpath='{.data.password}' | base64 -dCreate a GitLab private encoding key
openssl genrsa -out gitlab-key.pem 2048
kubectl create secret generic currents-gitlab-key --from-file=gitlab-key.pemInstall the chart
(cd charts/currents && helm dep up)
helm upgrade --install -f samples/local/chart-config.yaml test-currents ./charts/currentsExpose the ingress controller to access all the apis Needs to use sudo to get port 80
sudo kubectl port-forward service/ingress-nginx-controller 80:80