Before you start you need to get a Kubernetes cluster. If you just want to give this a try locally, you can use Docker for Desktop, Minikube or k3d. Either way make sure the VM has at least 2 CPUs and 6GB of RAM. Alternatively you can run this in the cloud - we use Google Kubernetes Engine. Make sure that whatever you use has a Kubernetes version of no higher than 1.15 at this point - we'll support higher versions in the next release.
-
Fork this repository - this means you can make your own customisations, but still pull in updates.
-
git clone
it to your local machine open a terminal in the directory -
Install kubernetes-replicator to your cluster (as per instructions here) if you haven't done so.
-
Look at values.yaml and make sure to customise the uncommented lines. Everything else can be left as default for now.
-
Run the create secrets script in a command line and follow the prompts
./create-secrets/index-linux
# OR
./create-secrets/index-macos
# OR
create-secrets\index.win.exe
You need to unset your NODE_OPTIONS
env variable if you run into Pkg: FLAGS_MISMATCH
while running the secrets script.
Output should look something like so:
magda-create-secrets tool
? Are you creating k8s secrets for google cloud or local testing cluster? Local Testing Kubernetes Cluster
? Which local k8s cluster environment you are going to connect to? docker
? Do you need to access SMTP service for sending data request email? YES
? Please provide SMTP service username: abc
? Please provide SMTP service password: def
? Do you want to create google-client-secret for oAuth SSO? NO
? Do you want to create facebook-client-secret for oAuth SSO? NO
? Do you want to manually input the password used for databases? Generated password: up3Saeshusoequoo
? Specify a namespace or leave blank and override by env variable later? YES (Specify a namespace)
? What's the namespace you want to create secrets into (input `default` if you want to use the `default` namespace)? default
? Do you want to allow environment variables (see --help for full list) to override current settings at runtime? YES (Any environment variable can ove
ride my settings)
? Do you want to connect to kubernetes cluster to create secrets now? YES (Create Secrets in Cluster now)
Successfully created secret `smtp-secret` in namespace `default`.
Successfully created secret `db-passwords` in namespace `default`.
Successfully created secret `auth-secrets` in namespace `default`.
All required secrets have been successfully created!
Optional: If you're going to be triggering connector jobs from the admin-api (used by the admin UI), create the role binding this needs:
kubectl apply -f role-binding.yaml
- Add the magda chart repo to helm
helm repo add magda-io https://charts.magda.io
- Build the local chart
helm dep up ./chart
- Install magda
helm upgrade --install --timeout 9999s --debug --wait magda ./chart
This will take a while for it to get everything set up.
- Connect to your instance:
- On the cloud or docker for desktop Once helm is finished, run
kubectl get services -w
and wait forgateway
to receive an external IP. It'll look something like this on kubectl or docker for desktop. - On minikube, you'll just have to run
minikube ip
and keep refreshing it with the node port below until it comes up.
gateway LoadBalancer 10.102.57.74 123.456.789.123 80:31519/TCP 1m
At this point you should be able to go to http://<external ip>
in your browser and see the Magda UI. If you're not able to make this work, you should be able to run kubectl port-forward <gateway pod id> 30100:80
to make the service available on port 30100.
Note that the search won't work until it's finished indexing regions - to see the progress of this, run kubectl logs -f -lservice=indexer
. Unless you've got a lot of processing power this will take quite a while - sorry! We're working on making it better.
By default, data.gov.au will be crawled on startup so you'll start with some data.
- Merge the latest from this repository into yours.
- Run:
helm repo update
- Run:
helm upgrade --install --timeout 9999s --debug --wait magda ./chart