-
Notifications
You must be signed in to change notification settings - Fork 162
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Signed-off-by: denis-tingaikin <[email protected]>
- Loading branch information
1 parent
73c315e
commit 57af746
Showing
7 changed files
with
195 additions
and
3 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,89 @@ | ||
name: ci | ||
|
||
concurrency: | ||
group: ${{ github.workflow }}-${{ github.ref }} | ||
cancel-in-progress: true | ||
|
||
on: | ||
pull_request: | ||
|
||
jobs: | ||
kind-selfhost: | ||
runs-on: ubuntu-latest | ||
timeout-minutes: 20 | ||
steps: | ||
- name: "Checkout repository" | ||
uses: actions/checkout@v4 | ||
with: | ||
path: ${{ github.workspace }}/src/github.com/${{ github.repository }} | ||
|
||
- name: "Install kind" | ||
run: | | ||
[ $(uname -m) = x86_64 ] && curl -Lo ./kind https://kind.sigs.k8s.io/dl/v0.26.0/kind-linux-amd64 | ||
# For ARM64 | ||
[ $(uname -m) = aarch64 ] && curl -Lo ./kind https://kind.sigs.k8s.io/dl/v0.26.0/kind-linux-arm64 | ||
chmod +x ./kind | ||
sudo mv ./kind /usr/local/bin/kind | ||
- name: "Setup k8s cluster" | ||
run: | | ||
cat <<EOF | kind create cluster --wait=3m --config=- | ||
kind: Cluster | ||
apiVersion: kind.x-k8s.io/v1alpha4 | ||
nodes: | ||
- role: control-plane | ||
extraPortMappings: | ||
- containerPort: 80 | ||
hostPort: 80 | ||
protocol: TCP | ||
- containerPort: 443 | ||
hostPort: 443 | ||
protocol: TCP | ||
EOF | ||
- name: "Print cluster details" | ||
run: | | ||
kubectl cluster-info | ||
kubectl version | ||
kubectl get pods -n kube-system | ||
echo "current-context:" $(kubectl config current-context) | ||
echo "environment-kubeconfig:" ${KUBECONFIG} | ||
- name: "Install nginx ingress controller" | ||
run: | | ||
kubectl apply -f https://kind.sigs.k8s.io/examples/ingress/deploy-ingress-nginx.yaml | ||
kubectl wait --namespace ingress-nginx \ | ||
--for=condition=ready pod \ | ||
--selector=app.kubernetes.io/component=controller \ | ||
--timeout=90s | ||
- name: "Huly deploy" | ||
working-directory: ${{ github.workspace }}/src/github.com/${{ github.repository }}/kube | ||
run: | | ||
echo 127.0.0.1 huly.example | sudo tee -a /etc/hosts | ||
echo 127.0.0.1 account.huly.example | sudo tee -a /etc/hosts | ||
kubectl apply -R -f . | ||
kubectl wait --for=condition=Ready deployment/front --timeout 15m | ||
kubectl wait --for=condition=Ready deployment/account --timeout 15m | ||
kubectl wait --for=condition=Ready deployment/mongodb --timeout 15m | ||
- name: "Check login" | ||
run: | | ||
token=$(curl -s -H 'Content-Type: application/json' \ | ||
-d '{"method":"createAccount","params":["user3","1234","user","1"]}' \ | ||
-X POST \ | ||
http://account.huly.example/ | jq -r '.result.token') | ||
curl http://account.huly.example/ \ | ||
-X POST \ | ||
-d '{"method":"getUserWorkspaces","params":[]}' \ | ||
-H 'Content-Type: application/json' \ | ||
-H 'Accept: */*' \ | ||
-H "Authorization: Bearer $token" | ||
- name: Cleanup resources | ||
if: ${{ success() || failure() || cancelled() }} | ||
run: | | ||
kubectl describe pods | ||
kind delete cluster |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,87 @@ | ||
# Kind | ||
|
||
## Install | ||
|
||
macOS: | ||
```bash | ||
# For Intel Macs | ||
[ $(uname -m) = x86_64 ] && curl -Lo ./kind https://kind.sigs.k8s.io/dl/v0.26.0/kind-darwin-amd64 | ||
# For M1 / ARM Macs | ||
[ $(uname -m) = arm64 ] && curl -Lo ./kind https://kind.sigs.k8s.io/dl/v0.26.0/kind-darwin-arm64 | ||
chmod +x ./kind | ||
mv ./kind /some-dir-in-your-PATH/kind | ||
``` | ||
|
||
Linux: | ||
```bash | ||
# For AMD64 / x86_64 | ||
[ $(uname -m) = x86_64 ] && curl -Lo ./kind https://kind.sigs.k8s.io/dl/v0.26.0/kind-linux-amd64 | ||
# For ARM64 | ||
[ $(uname -m) = aarch64 ] && curl -Lo ./kind https://kind.sigs.k8s.io/dl/v0.26.0/kind-linux-arm64 | ||
chmod +x ./kind | ||
sudo mv ./kind /usr/local/bin/kind | ||
``` | ||
|
||
## Setup cluster with port forwarding | ||
|
||
> [!NOTE] | ||
> On the host computer, `localhost:80` should be accessible. | ||
```bash | ||
cat <<EOF | kind create cluster --config=- | ||
kind: Cluster | ||
apiVersion: kind.x-k8s.io/v1alpha4 | ||
nodes: | ||
- role: control-plane | ||
extraPortMappings: | ||
- containerPort: 80 | ||
hostPort: 80 | ||
protocol: TCP | ||
- containerPort: 443 | ||
hostPort: 443 | ||
protocol: TCP | ||
EOF | ||
``` | ||
|
||
Deploy ingress nginx controller: | ||
```bash | ||
kubectl apply -f https://kind.sigs.k8s.io/examples/ingress/deploy-ingress-nginx.yaml | ||
``` | ||
|
||
Wait nginx controller to be ready: | ||
```bash | ||
kubectl wait --namespace ingress-nginx \ | ||
--for=condition=ready pod \ | ||
--selector=app.kubernetes.io/component=controller \ | ||
--timeout=90s | ||
``` | ||
|
||
Mount hosts: | ||
```bash | ||
sudo mount --bind ./hosts /etc/hosts | ||
``` | ||
|
||
|
||
Deploy Huly with `kubectl`. | ||
|
||
```bash | ||
kubectl apply -R -f . | ||
``` | ||
|
||
Wait until the front app is coming up | ||
```bash | ||
kubectl wait --for=condition=Ready deployment/front --timeout 120s | ||
kubectl wait --for=condition=Ready deployment/account --timeout 120s | ||
kubectl wait --for=condition=Ready deployment/mongodb --timeout 120s | ||
``` | ||
|
||
Now, launch your web and and (enjoy Huly)[http://huly.example]! | ||
|
||
|
||
## Cleanup | ||
|
||
```bash | ||
sudo umount -f /etc/hosts # restore original hosts file | ||
kubectl delete -R -f . # cleanup huly resoures on the cluster | ||
kind delete cluster # delete kind cluster | ||
``` |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,6 @@ | ||
127.0.0.1 huly.example | ||
127.0.0.1 account.huly.example | ||
127.0.0.1 collaborator.huly.example | ||
127.0.0.1 rekoni.huly.example | ||
127.0.0.1 stats.huly.example | ||
127.0.0.1 transactor.huly.example |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters