Firebird/GettingStarted: Difference between revisions

From stonehomewiki
Jump to navigationJump to search
Line 1: Line 1:
= Getting Started =
<p> [[Firebird]] </p>
* [[Firebird/GettingStarted/docker|Using Docker]]
 
* [[Firebird/GettingStarted/k8|Using Kubernetes]]
= Setup Firebird Cluster Using Kubernete =
<div class="toccolours mw-collapsible mw-collapsed expandable">
<div class="mw-collapsible-preview">prerequisite</div>
<div class="mw-collapsible-content">
* Assuming you have a kubernete cluster already created. In this example, we are using Kubernete provided by Oracle Cloud Infrastructure (aka OKE).
* Assuming you have a machine with kubectl installed, from which you can control the kubernete cluster
</div>
</div>
<p></p>
 
<div class="toccolours mw-collapsible mw-collapsed expandable">
<div class="mw-collapsible-preview">Create namespace: firebird</div>
<div class="mw-collapsible-content">
* We are going to deploy in this namespace
<pre><nowiki>
kubectl apply -f namespace.yaml
# Then check it, you should see firebird as namespace
kubectl get namespaces
 
# Then you can set firebird as your currrent namespace
kubectl config set-context --current --namespace=firebird
</nowiki></pre>
</div>
</div>
<p></p>
 
<div class="toccolours mw-collapsible mw-collapsed expandable">
<div class="mw-collapsible-preview">Setup rabbitmq and zookeeper</div>
<div class="mw-collapsible-content">
<pre><nowiki>
cd infra
kubectl apply -f rabbitmq.yaml
kubectl apply -f zookeeper.yaml
</nowiki></pre>
</div>
</div>
<p></p>
 
<div class="toccolours mw-collapsible mw-collapsed expandable">
<div class="mw-collapsible-preview">web console: create database</div>
<div class="mw-collapsible-content">
<pre><nowiki>
# assuming you have a MySQL 8.x installed
 
# create database user stonezhong
CREATE USER 'stonezhong'@'%' IDENTIFIED WITH mysql_native_password BY 'dbpassword';
 
# connect to mysql instance (e.g. using MySQL workbench)
CREATE SCHEMA `firebird` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_bin;
 
# give stonezhong full access to this db
GRANT ALL ON `firebird`.* TO 'stonezhong'@'%';
</nowiki></pre>
</div>
</div>
<p></p>
 
<div class="toccolours mw-collapsible mw-collapsed expandable">
<div class="mw-collapsible-preview">web console: build docker image</div>
<div class="mw-collapsible-content">
<pre><nowiki>
cd console
docker build -t firebird-console .
# now push this image to your private repo
docker tag firebird-console iad.ocir.io/idrnu3akjpv5/firebird-console
docker push iad.ocir.io/idrnu3akjpv5/firebird-console
</nowiki></pre>
</div>
</div>
<p></p>
 
<div class="toccolours mw-collapsible mw-collapsed expandable">
<div class="mw-collapsible-preview">web console: iniialize database</div>
<div class="mw-collapsible-content">
<pre><nowiki>
kubectl run myshell --rm -it --image iad.ocir.io/idrnu3akjpv5/firebird-console:latest -- sh
fbconsole migrate
</nowiki></pre>
</div>
</div>
<p></p>
 
<div class="toccolours mw-collapsible mw-collapsed expandable">
<div class="mw-collapsible-preview">web console: deploy to kubernete</div>
<div class="mw-collapsible-content">
<pre><nowiki>
cd console
kubectl apply -f console.yaml
# once deployment is done, you can try to access it
curl http://<service-external-ip>/
# and make sure you see the page, you can latter create a ssh tunnel to access the Firebird Web Console.
</nowiki></pre>
</div>
</div>
<p></p>
 
= Deployment Sample Streaming Application =
<div class="toccolours mw-collapsible mw-collapsed expandable">
<div class="mw-collapsible-preview">Streaming app: build image</div>
<div class="mw-collapsible-content">
<pre><nowiki>
cd app
docker build -t firebird-app1 .
# now push this image to your private repo
docker tag firebird-app1 iad.ocir.io/idrnu3akjpv5/firebird-app1
docker push iad.ocir.io/idrnu3akjpv5/firebird-app1
</nowiki></pre>
</div>
</div>
<p></p>
 
<div class="toccolours mw-collapsible mw-collapsed expandable">
<div class="mw-collapsible-preview">Streaming app: register your pipeline</div>
<div class="mw-collapsible-content">
<pre><nowiki>
# Before we can use any pipeline, we need to register the pipeline with the system
# A pipeline module is a python module which implements function get_pipeline(..) which returns a pipeline
# see app/src/pipe.py, since we use pipe.py, so the pipeline module name is "pipe"
 
kubectl run myshell --rm -it --image iad.ocir.io/idrnu3akjpv5/firebird-app1 -- sh
pipeline register \
    --pipeline-module-name pipe \
    --pipeline-namespace-name firebird \
    --pipeline-image-name iad.ocir.io/idrnu3akjpv5/firebird-app1
 
# now you can list pipeline to make sure it is registered
pipeline list
test:
    module: pipe
    executors: None
</nowiki></pre>
</div>
</div>
<p></p>
 
<div class="toccolours mw-collapsible mw-collapsed expandable">
<div class="mw-collapsible-preview">Streaming app: start pipeline</div>
<div class="mw-collapsible-content">
<pre><nowiki>
kubectl run myshell --rm -it --image iad.ocir.io/idrnu3akjpv5/firebird-console -- sh
# or
# kubectl exec -it <console_pod_name> -- sh
pipeline start -pid test
</nowiki></pre>
</div>
</div>
<p></p>
 
<div class="toccolours mw-collapsible mw-collapsed expandable">
<div class="mw-collapsible-preview">Streaming app: stop pipeline</div>
<div class="mw-collapsible-content">
<pre><nowiki>
kubectl run myshell --rm -it --image iad.ocir.io/idrnu3akjpv5/firebird-console -- sh
# or
# kubectl exec -it <console_pod_name> -- sh
pipeline stop -pid test
</nowiki></pre>
</div>
</div>
<p></p>

Revision as of 20:26, 15 July 2023

Firebird

Setup Firebird Cluster Using Kubernete

Deployment Sample Streaming Application