For the more technical user, nothing matches the efficiency of the Command line (CLI). There are lots of tips, tricks, and ideas around for hacking your command-line productivity to make you more efficient. This blog post shows how to install SAP Data Intelligence on Amazon Elastic Kubernetes Service (Amazon EKS) using just a few CLI tools. Let’s dive in!
Prerequisites
Before starting following these steps, you need to install and configure these CLI tools.
- eksctl: A command-line tool for working with EKS clusters that automates many individual tasks. For more information, see The eksctl command line utility.
- kubectl: A command-line tool for working with Kubernetes clusters. For more information, see Installing kubectl.
- awscli: A command-line tool for working with AWS services. With just one tool to download and configure, you can control multiple AWS services from the command line and automate them through scripts. For more information, see awscli documentation.
- slcb: SLC bridge is a command-line tool from SAP to enable the container bridge and execute installation using the stack.xml provided by the SAP Maintenance Planner. For more information, see the slc bridge blog post by Roland Kramer.
Step 1: Create your Amazon EKS cluster and nodes
The first step is to create an EKS cluster. The hard way is to create the VPC, IAM role with ECR access and security group directly in the AWS console and it is a rather time consuming process. The faster ways is to the eksctl command-line to do all this in one single step. The command below is for Windows command prompt, but you can simply replace the ^ with \ if you are using a Linux terminal.
eksctl create cluster ^
--name SDI-on-AWS ^
--version 1.18 ^
--full-ecr-access ^
--with-oidc ^
--region us-east-1 ^
--nodegroup-name workers ^
--node-type m5.2xlarge ^
--nodes 1 ^
--nodes-min 1 ^
--nodes-max 4 ^
--ssh-access ^
--ssh-public-key "Replace with your EC2 key pair" ^
--managed ^
--vpc-private-subnets= "Replace with Subnet 1", "Replace with Subnet 2" ^
--node-private-networking
This usually takes about 15 minutes, and you should get a response as below.
[✔] EKS cluster "SDI-on-AWS" in "us-east-1" region is ready
Step 2: Create an Amazon ECR repository
The SAP Data Intelligence software needs to be stored in a repository. The AWS CLI command below creates an Amazon ECR repository.
aws ecr create-repository --repository-name sdi-on-aws-repo
The output is a JSON string, and the key thing to note here is the
repositoryUri, which is needed for the next step.
{
"repository": {
"repositoryArn": "arn:aws:ecr:us-east-1:1234567890:repository/sdi-on-aws-repo",
"registryId": "1234567890",
"repositoryName": "sdi-on-aws-repo",
"repositoryUri": "1234567890.dkr.ecr.us-east-1.amazonaws.com/sdi-on-aws-repo",
"createdAt": 1637998573.0,
"imageTagMutability": "MUTABLE",
"imageScanningConfiguration": {
"scanOnPush": false
}
}
}
Step 3: Plan a new system in SAP Maintenance Planner
For this step, you need to go to SAP Service Marketplace. The detailed steps are in
SAP documentation, and it is very much the same steps as the SAP Netweaver installation that most readers would be familiar with. The output for this step is the download of the SLC bridge software and the Stack.xml.
Step 4: Initialise Software Life Cycle Bridge
Set up the
SLC bridge base by simply running the command below.
slcb.EXE init
You will need to use the
repositoryUri from Step 2. The output of this step is an URL pointing to the Elastic Load Balancer (ELB) with the SLC bridge service in the backend.
Deployment "slcbridgebase" has 1 available replicas in namespace "sap-slcbridge"
Service "slcbridgebase-service" is listening on
"https://a1234567891012345-12345678.us-east-1.elb.amazonaws.com:9000/docs/index.html"
Step 5: Execute installation using Software Life Cycle Bridge (SLCB)
slcb.EXE execute --useStackXML MP_Stack.xml -u shell
Select the parameters you need, and it takes about 1-2 hours to complete the installation.
Step 6: Connecting to SAP Data Intelligence
Run the following commands deploy an ingress controller for Kubernetes using Amazon Elastic Load Balancer. First, create a YAML file as below.
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
annotations:
kubernetes.io/ingress.class: nginx
nginx.ingress.kubernetes.io/force-ssl-redirect: "true"
nginx.ingress.kubernetes.io/secure-backends: "true"
nginx.ingress.kubernetes.io/backend-protocol: "HTTPS"
nginx.ingress.kubernetes.io/proxy-body-size: "0"
nginx.ingress.kubernetes.io/proxy-buffer-size: 16k
nginx.ingress.kubernetes.io/proxy-connect-timeout: "30"
nginx.ingress.kubernetes.io/proxy-read-timeout: "1800"
nginx.ingress.kubernetes.io/proxy-send-timeout: "1800"
name: vsystem
spec:
rules:
- host: sapdatahub
http:
paths:
- path: /
backend:
serviceName: vsystem
servicePort: 8797
tls:
- hosts:
- sapdatahub
secretName: vsystem-tls-certs
Then just deploy.
kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/nginx-0.24.1/deploy/mandatory.yaml
kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/nginx-0.24.1/deploy/provider/aws/service-...
kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/nginx-0.24.1/deploy/provider/aws/patch-co...
kubectl -n sapdi3 create -f ingress.yaml
Go to the hosts file or your DNS and add an entry for the IP address of the Elastic Load Balancer, and that's it.
Conclusion
In this blog post, I show how the combination of eksctl, kubectl, awscli and slcb can be used to deploy SAP Data Intelligence on AWS. These are small, yet handy, productivity hack that will help make you loads more efficient when using the command line.
I hope you that you find this interesting and have as much fun as I did. Give SAP Data Intelligence a try in your AWS account. If you have questions, feel free to comment down below. Start building and have fun!