Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
46 changes: 34 additions & 12 deletions deployment-examples/azure-kubernetes/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ This is an example deployment of CogStack in Azure.

The recommended deployment of CogStack in Azure is based on using Kubernetes through Azure Kubernetes Service.

This example will create a AKS cluster, setup any necessary config, deploy CogStack to the cluster, and test that it is available. It will create publically accessible services, so is not suitable for production deployment.
This example will create a AKS cluster, setup any necessary config, deploy CogStack Community to the cluster, and test that it is available. We will deploy the CogStack Community Edition in this tutorial, see here for everything you will get https://docs.cogstack.org/en/latest/cogstack-ce/_index/

We create a cluster following the Official Azure Verified Modules patterns in https://azure.github.io/Azure-Verified-Modules/indexes/terraform/tf-pattern-modules/ to create AKS clusters with their recommended defaults.

Expand Down Expand Up @@ -55,15 +55,42 @@ terraform apply --auto-approve

### 3. Accessing the CogStack Platform

Once the deployment is complete and all services are running, you can access the CogStack platform and its components using the following URLs:
Once the deployment is complete and all services are running, you can access the CogStack platform and its components.

TODO: Create a public ingress url
We will use kubernetes port-forwarding to make the services accessible locally.

Run this command:

```bash
terraform output -raw cogstack_notes | bash
```

The console will now print all the URLs you can visit to access your CogStack deployment.

<!-- termynal -->
```bash
# terraform output service_urls
kubectl port-forward deployment/medcat-service-terraform-medcat-service-helm 5000:5000
http://localhost:5000/demo
$ terraform output -raw cogstack_notes | bash
Forwarding from 127.0.0.1:5001 -> 5000
Forwarding from [::1]:5001 -> 5000
Forwarding from 127.0.0.1:5000 -> 5000
Forwarding from [::1]:5000 -> 5000
Visit http://127.0.0.1:5000 to use MedCAT Service
Visit http://127.0.0.1:5001 to use AnonCAT
Visit http://127.0.0.1:8080 to use MedCAT Trainer
Visit https://127.0.0.1:9200 to use OpenSearch
Visit http://127.0.0.1:5601 to use OpenSearch Dashboards
Visit http://127.0.0.1:8000 to use jupyterhub
Visit http://127.0.0.1:8000/user/admin/notebooks/medcat-service-tutorial.ipynb to get started with a tutorial
```

### 4. Continue with the CogStack Tutorials

You've now got a fully working deployment of CogStack Community Edition!

Now you can look at the product tour and interactively follow along with this: https://docs.cogstack.org/en/latest/cogstack-ce/product-tour/ .

You've already port-forwarded the services, so you should be able to just open all the URLs and try out the applications.


### Optional - Destroy

Expand Down Expand Up @@ -106,10 +133,5 @@ You can then interact with kubernetes via the CLI for example:

```bash
# Run Medcat service
helm install my-medcat oci://registry-1.docker.io/cogstacksystems/medcat-service-helm --wait --timeout 10m0s

# Create the ingress
kubectl apply -f resources/ingress-medcat-service.yaml
# Find public url
kubectl get ingress
helm install medcat-service oci://registry-1.docker.io/cogstacksystems/medcat-service-helm --wait --timeout 10m0s
```
56 changes: 19 additions & 37 deletions deployment-examples/azure-kubernetes/kubernetes-deployment/main.tf
Original file line number Diff line number Diff line change
@@ -1,4 +1,18 @@

resource "helm_release" "cogstack-ce" {
name = "cogstack"
chart = "oci://registry-1.docker.io/cogstacksystems/cogstack-ce-helm"
version = "0.6.0"
timeout = 600
atomic = true
render_subchart_notes = false
values = [ <<EOT
opensearch:
replicas: 1
EOT
]
}

provider "helm" {
kubernetes = {
config_path = var.kubeconfig_file
Expand All @@ -9,42 +23,10 @@ provider "kubernetes" {
config_path = var.kubeconfig_file
}

# resource "kubernetes_ingress_class" "application_load_balancer" {
# # An Application Load Balancer is required in order to create public URLs.
# # The load balancer controller creates instances of the ALB when it sees ingress objects with the right annotations.
# metadata {
# name = "alb"
# labels = {
# "app.kubernetes.io/name" = "LoadBalancerController"
# }
# }
# spec {
# controller = "eks.amazonaws.com/alb"
# }
# }


locals {
services = {
medcat_service = {
path_prefix = "medcat-service"
}
}
}
module "cogstack_helm_services" {
# depends_on = [kubernetes_ingress_class.application_load_balancer]
source = "github.com/CogStack/cogstack-platform-toolkit//deployment/terraform/modules/cogstack-helm-services?ref=terraform-modules-v0.1.0"
# medcat_service_values = <<EOT
# ingress:
# annotations:
# alb.ingress.kubernetes.io/scheme: internet-facing
# alb.ingress.kubernetes.io/target-type: ip
# alb.ingress.kubernetes.io/healthcheck-path: /api/health/live
# className: alb
# http:
# - paths:
# - path: /${local.services.medcat_service.path_prefix}
# pathType: Prefix
# EOT
variable "kubeconfig_file" {
description = "Path to the generated KUBECONFIG file used to connect to kubernetes"
}

output "cogstack_notes" {
value = helm_release.cogstack-ce.metadata.notes
}

This file was deleted.

This file was deleted.

30 changes: 24 additions & 6 deletions docs/docs/platform/deployment/examples/azure-kubernetes-aks.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ This is an example deployment of CogStack in Azure.

The recommended deployment of CogStack in Azure is based on using Kubernetes through Azure Kubernetes Service.

This example will create a AKS cluster, setup any necessary config, deploy CogStack to the cluster, and test that it is available. It will create publically accessible services, so is not suitable for production deployment.
This example will create a AKS cluster, setup any necessary config, deploy CogStack to the cluster, and test that it is available.

We create a cluster following the Official Azure Verified Modules patterns in https://azure.github.io/Azure-Verified-Modules/indexes/terraform/tf-pattern-modules/ to create AKS clusters with their recommended defaults.

Expand Down Expand Up @@ -81,15 +81,33 @@ terraform apply --auto-approve

### 4. Accessing the CogStack Platform

Once the deployment is complete and all services are running, you can access the CogStack platform and its components using the following URLs:
Once the deployment is complete and all services are running, you can access the CogStack platform and its components.

We will use kubernetes port-forwarding to make the services accessible locally.

Run this command:

TODO: Create a public ingress url
```bash
# terraform output service_urls
kubectl port-forward deployment/medcat-service-terraform-medcat-service-helm 5000:5000
http://localhost:5000/demo
terraform output -raw cogstack_notes | bash
```

The console will now print all the URLs you can visit to access your CogStack deployment.

<!-- termynal -->
```bash
$ terraform output -raw cogstack_notes | bash
Forwarding from 127.0.0.1:5001 -> 5000
Forwarding from [::1]:5001 -> 5000
Forwarding from 127.0.0.1:5000 -> 5000
Forwarding from [::1]:5000 -> 5000
Visit http://127.0.0.1:5000 to use MedCAT Service
Visit http://127.0.0.1:5001 to use AnonCAT
Visit http://127.0.0.1:8080 to use MedCAT Trainer
Visit https://127.0.0.1:9200 to use OpenSearch
Visit http://127.0.0.1:5601 to use OpenSearch Dashboards
Visit http://127.0.0.1:8000 to use jupyterhub
Visit http://127.0.0.1:8000/user/admin/notebooks/medcat-service-tutorial.ipynb to get started with a tutorial
```

### Optional - Destroy

Expand Down
Loading