Install for local development
These docs are for chart 0.8.x. For the current chart, see the current docs. To upgrade to 1.0, follow Upgrading to Chart 1.0.
Setup Namespace
Create namespace (easier to cleanup resources in a custom namespace)
kubectl create namespace currents
kubectl ns currents
Setup prerequisites
Ingress
Install nginx ingress
```sh
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-nginx
```
MongoDB
```sh
helm install community-operator community-operator --repo https://mongodb.github.io/helm-charts
```
Edit the password in `samples/mongodb-community-replicaset.yml`
```sh
kubectl apply -f samples/mongodb-community-replicaset.yml
```
Clickhouse
Create a secrets for user passwords
```sh
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)
```
```sh
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
```sh
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
```sh
helm install rustfs rustfs --repo https://charts.rustfs.com --version 1.0.1 -f samples/rustfs-helm-config.yaml
```
Create the `currents` bucket
```sh
kubectl apply -f samples/rustfs-create-bucket-job.yaml
kubectl wait --for=condition=complete job/rustfs-create-bucket --timeout=120s
```
Create an ingress for RustFS
```sh
kubectl apply -f samples/local/rustfs-ingress.yaml
```
Note that you will need to add `rustfs.localhost` to your `/etc/hosts` file on the loopback
Install the Currents Helm chart
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 -d
Create a GitLab private encoding key
openssl genrsa -out gitlab-key.pem 2048
kubectl create secret generic currents-gitlab-key --from-file=gitlab-key.pem
Install the chart
(cd charts/currents && helm dep up)
helm upgrade --install -f samples/local/chart-config.yaml test-currents ./charts/currents
Expose 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