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
99 changes: 91 additions & 8 deletions docs/docs/platform/deployment/examples/aws-kubernetes-eks.md
Original file line number Diff line number Diff line change
Expand Up @@ -73,14 +73,36 @@ terraform init
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:

```bash
terraform output service_urls
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 All @@ -97,7 +119,7 @@ terraform destroy
```


## Optionally use the K8s cluster as normal with the CLI
## Optional - Use the kubectl CLI to interact with the cluster
After setting up the cluster, it is possible to interact directly with it using the kubectl CLI

The requirement is to get the KUBECONFIG file created by the terraform apply.
Expand All @@ -116,11 +138,72 @@ Note - alternatively you could use the AWS CLI to set your kubeconfig using `aws
You can then interact with kubernetes via the CLI

```bash
kubectl get pods

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



## Optional - Public Access

You can setup public access over the internet to your deployed services.

One way to do this is to use an AWS ALB, along with defining the ingress routes of the helm chart.

See this terraform code for an example

```hcl
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
}

locals {
medcat_ingress_address = module.cogstack_helm_services.service_urls.medcat_service.ip_address
}
output "service_urls" {
value = {
medcat_service = {
example_curl = "curl http://${local.medcat_ingress_address}/${local.services.medcat_service.path_prefix}/api/info"
example_ui = "http://${local.medcat_ingress_address}/${local.services.medcat_service.path_prefix}/docs"
}
}
description = "Public URls to call services on"
}

# Create the ingress
kubectl apply -f resources/ingress-medcat-service.yaml
# Find public url
kubectl get ingress
```
Original file line number Diff line number Diff line change
Expand Up @@ -122,7 +122,7 @@ terraform destroy
```


## Optionally use the K8s cluster as normal with the CLI
## Optional - Use the kubectl CLI to interact with the cluster
After setting up the cluster, it is possible to interact directly with it using the kubectl CLI

The requirement is to get the KUBECONFIG file created by the terraform apply.
Expand All @@ -147,11 +147,8 @@ az aks get-credentials --resource-group $MY_RESOURCE_GROUP_NAME --name $MY_AKS_C
You can then interact with kubernetes via the CLI for example:

```bash
kubectl get pods

# 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
```
Loading