UNCLASSIFIED - NO CUI

Skip to content
Snippets Groups Projects
Commit 3c5abbbd authored by Micah Nagel's avatar Micah Nagel
Browse files

Merge branch 'k3d-dev-script-updates' into 'master'

K3d dev script updates

See merge request platform-one/big-bang/bigbang!1939
parents b0eef4de ad4c657b
No related branches found
No related tags found
1 merge request!1939K3d dev script updates
#!/bin/bash
#### Global variables - These allow the script to be run by non-bigbang devs easily
VPC_ID=vpc-065ffa1c7b2a2b979
AMI_ID=ami-84556de5
if [[ -z "${VPC_ID}" ]]; then
# default
VPC_ID=vpc-065ffa1c7b2a2b979
fi
if [[ -z "${AMI_ID}" ]]; then
# default
AMI_ID=ami-84556de5
fi
#### Preflight Checks
# Check that the VPC is available
EXISTING_VPC=$(aws ec2 describe-vpcs | grep ${VPC_ID})
......@@ -426,7 +434,7 @@ then
echo
echo
echo "copy kubeconfig"
echo "copying kubeconfig to workstation..."
scp -i ~/.ssh/${KeyName}.pem -o StrictHostKeyChecking=no ubuntu@${PublicIP}:/home/ubuntu/.kube/config ~/.kube/${AWSUSERNAME}-dev-config
if [[ "$PRIVATE_IP" == true ]]
then
......@@ -434,6 +442,7 @@ then
else # default is to use public ip
$sed_gsed -i "s/0\.0\.0\.0/${PublicIP}/g" ~/.kube/${AWSUSERNAME}-dev-config
fi
echo
elif [[ "$PRIVATE_IP" == true ]]
then
echo "using private ip for k3d"
......@@ -442,21 +451,21 @@ then
ssh -i ~/.ssh/${KeyName}.pem -o StrictHostKeyChecking=no ubuntu@${PublicIP} "kubectl cluster-info"
echo
echo
echo "copy kubeconfig"
echo "copying kubeconfig to workstation..."
scp -i ~/.ssh/${KeyName}.pem -o StrictHostKeyChecking=no ubuntu@${PublicIP}:/home/ubuntu/.kube/config ~/.kube/${AWSUSERNAME}-dev-config
$sed_gsed -i "s/0\.0\.0\.0/${PrivateIP}/g" ~/.kube/${AWSUSERNAME}-dev-config
echo
else # default is public ip
echo "using public ip for k3d"
ssh -i ~/.ssh/${KeyName}.pem -o StrictHostKeyChecking=no ubuntu@${PublicIP} "k3d cluster create --servers 1 --agents 3 --volume /etc/machine-id:/etc/machine-id@server:0 --volume /etc/machine-id:/etc/machine-id@agent:0,1,2 --k3s-arg "--disable=traefik@server:0" --k3s-arg "--disable=metrics-server@server:0" --k3s-arg "--tls-san=${PublicIP}@server:0" --port 80:80@loadbalancer --port 443:443@loadbalancer --api-port 6443"
ssh -i ~/.ssh/${KeyName}.pem -o StrictHostKeyChecking=no ubuntu@${PublicIP} "kubectl config use-context k3d-k3s-default"
ssh -i ~/.ssh/${KeyName}.pem -o StrictHostKeyChecking=no ubuntu@${PublicIP} "kubectl cluster-info"
echo
echo
echo "copy kubeconfig"
echo "copying kubeconfig to workstation..."
scp -i ~/.ssh/${KeyName}.pem -o StrictHostKeyChecking=no ubuntu@${PublicIP}:/home/ubuntu/.kube/config ~/.kube/${AWSUSERNAME}-dev-config
$sed_gsed -i "s/0\.0\.0\.0/${PublicIP}/g" ~/.kube/${AWSUSERNAME}-dev-config
echo
fi
# add tools
......@@ -473,8 +482,7 @@ if [[ "$METAL_LB" == true ]]; then
sudo sed -i '/bigbang.dev/d' /etc/hosts
sudo bash -c "echo '## begin bigbang.dev section' >> /etc/hosts"
sudo bash -c "echo 172.20.1.240 keycloak.bigbang.dev >> /etc/hosts"
sudo bash -c "echo 172.20.1.241 kiali.bigbang.dev >> /etc/hosts"
sudo bash -c "echo 172.20.1.242 gitlab.bigbang.dev >> /etc/hosts"
sudo bash -c "echo 172.20.1.241 gitlab.bigbang.dev >> /etc/hosts"
sudo bash -c "echo '## end bigbang.dev section' >> /etc/hosts"
ENDSSH
fi
......@@ -489,61 +497,61 @@ echo "SAVE THE FOLLOWING INSTRUCTIONS INTO A TEMPORARY TEXT DOCUMENT SO THAT YOU
echo "NOTE: The EC2 instance will automatically terminate at 08:00 UTC unless you delete the cron job"
echo
echo "ssh to instance:"
echo "ssh -i ~/.ssh/${KeyName}.pem ubuntu@${PublicIP}"
echo " ssh -i ~/.ssh/${KeyName}.pem ubuntu@${PublicIP}"
echo
if [[ "$METAL_LB" == true ]]
echo "To use kubectl from your local workstation you must set the KUBECONFIG environment variable:"
echo " export KUBECONFIG=~/.kube/${AWSUSERNAME}-dev-config"
if [[ "$PRIVATE_IP" == true ]]
then
if [[ "$PRIVATE_IP" == true ]]
then
echo "Start sshuttle:"
echo "sshuttle --dns -vr ubuntu@${PublicIP} 172.31.0.0/16 --ssh-cmd 'ssh -i ~/.ssh/${KeyName}.pem -D 127.0.0.1:12345'"
else # using MetalLB and public IP
echo "OPTION 1 TO ACCESS APPLICATIONS"
echo "To access apps from browser start ssh with application-level port forwarding:"
echo "ssh -i ~/.ssh/${KeyName}.pem ubuntu@${PublicIP} -D 127.0.0.1:12345"
echo "OPTION 2 TO ACCESS APPLICATIONS"
echo "To access apps from browser and from the workstation command line start sshuttle"
echo "sshuttle --dns -vr ubuntu@${PublicIP} 172.20.1.0/24 --ssh-cmd 'ssh -i ~/.ssh/${KeyName}.pem'"
fi
elif [[ "$PRIVATE_IP" == true ]]
then
echo "Start sshuttle:"
echo "sshuttle --dns -vr ubuntu@${PublicIP} 172.31.0.0/16 --ssh-cmd 'ssh -i ~/.ssh/${KeyName}.pem'"
echo "The cluster connection will not work until you start sshuttle as described below."
fi
echo
echo "To use kubectl from your local workstation you must set the KUBECONFIG environment variable:"
echo "export KUBECONFIG=~/.kube/${AWSUSERNAME}-dev-config"
echo
if [[ "$METAL_LB" == true ]]
then # using MetalLB and public IP
echo "OPTION 1 TO ACCESS APPLICATIONS"
echo "Do not edit /etc/hosts on your local workstation."
echo "To access apps from a browser edit /etc/hosts on the EC2 instance. Sample /etc/host entries have already been added there."
echo "Manually add more hostnames as needed."
echo "The IPs to use come from the istio-system services of type LOADBALANCER EXTERNAL-IP that are created when Istio is deployed."
echo "You must use Firefox browser with with manual SOCKs v5 proxy configuration to localhost with port 12345."
echo "Also ensure 'Proxy DNS when using SOCKS v5' is checked."
echo "Or, with other browsers like Chrome you could use a browser plugin like foxyproxy to do the same thing as Firefox."
echo "OPTION 2 TO ACCESS APPLICATIONS"
echo "To access apps from a browser and from workstation command line"
echo "edit your workstation /etc/hosts to add the LOADBALANCER EXTERNAL-IPs from the istio-sytem servcies with application hostnames."
echo "Here is an example. You might have to change this depending on the number of gateways you configure for k8s cluster."
echo "# METALLB"
echo "172.20.1.240 keycloak.bigbang.dev vault.bigbang.dev"
echo "172.20.1.241 kiali.bigbang.dev"
echo "172.20.1.242 sonarqube.bigbang.dev prometheus.bigbang.dev nexus.bigbang.dev gitlab.bigbang.dev"
echo
elif [[ "$PRIVATE_IP" == true ]]
if [[ "$METAL_LB" == true ]] # using MetalLB
then
echo "To access apps from a browser edit your /etc/hosts to add the private IP of your instance with application hostnames. Example:"
echo "${PrivateIP} gitlab.bigbang.dev prometheus.bigbang.dev kibana.bigbang.dev"
if [[ "$PRIVATE_IP" == true ]]
then # using MetalLB and private IP
echo "Start sshuttle in a separate terminal window:"
echo " sshuttle --dns -vr ubuntu@${PublicIP} 172.31.0.0/16 --ssh-cmd 'ssh -i ~/.ssh/${KeyName}.pem -D 127.0.0.1:12345'"
echo "Do not edit /etc/hosts on your local workstation."
echo "Edit /etc/hosts on the EC2 instance. Sample /etc/host entries have already been added there."
echo "Manually add more hostnames as needed."
echo "The IPs to use come from the istio-system services of type LOADBALANCER EXTERNAL-IP that are created when Istio is deployed."
echo "You must use Firefox browser with with manual SOCKs v5 proxy configuration to localhost with port 12345."
echo "Also ensure 'Proxy DNS when using SOCKS v5' is checked."
echo "Or, with other browsers like Chrome you could use a browser plugin like foxyproxy to do the same thing as Firefox."
else # using MetalLB and public IP
echo "OPTION 1: ACCESS APPLICATIONS WITH WEB BROWSER ONLY"
echo "To access apps from browser only start ssh with application-level port forwarding:"
echo " ssh -i ~/.ssh/${KeyName}.pem ubuntu@${PublicIP} -D 127.0.0.1:12345"
echo "Do not edit /etc/hosts on your local workstation."
echo "Edit /etc/hosts on the EC2 instance. Sample /etc/host entries have already been added there."
echo "Manually add more hostnames as needed."
echo "The IPs to use come from the istio-system services of type LOADBALANCER EXTERNAL-IP that are created when Istio is deployed."
echo "You must use Firefox browser with with manual SOCKs v5 proxy configuration to localhost with port 12345."
echo "Also ensure 'Proxy DNS when using SOCKS v5' is checked."
echo "Or, with other browsers like Chrome you could use a browser plugin like foxyproxy to do the same thing as Firefox."
echo
echo "OPTION 2: ACCESS APPLICATIONS WITH WEB BROWSER AND COMMAND LINE"
echo "To access apps from browser and from the workstation command line start sshuttle in a separate terminal window."
echo " sshuttle --dns -vr ubuntu@${PublicIP} 172.20.1.0/24 --ssh-cmd 'ssh -i ~/.ssh/${KeyName}.pem'"
echo "Edit your workstation /etc/hosts to add the LOADBALANCER EXTERNAL-IPs from the istio-sytem servcies with application hostnames."
echo "Here is an example. You might have to change this depending on the number of gateways you configure for k8s cluster."
echo " # METALLB ISTIO INGRESS IPs"
echo " 172.20.1.240 keycloak.bigbang.dev vault.bigbang.dev"
echo " 172.20.1.241 sonarqube.bigbang.dev prometheus.bigbang.dev nexus.bigbang.dev gitlab.bigbang.dev"
fi
elif [[ "$PRIVATE_IP" == true ]] # not using MetalLB
then # Not using MetalLB and using private IP
echo "Start sshuttle in a separate terminal window:"
echo " sshuttle --dns -vr ubuntu@${PublicIP} 172.31.0.0/16 --ssh-cmd 'ssh -i ~/.ssh/${KeyName}.pem'"
echo
else # default is to use the public ip
echo "To access apps from a browser edit your /etc/hosts to add the public IP of your instance with application hostnames."
echo "To access apps from a browser edit your /etc/hosts to add the private IP of your EC2 instance with application hostnames. Example:"
echo " ${PrivateIP} gitlab.bigbang.dev prometheus.bigbang.dev kibana.bigbang.dev"
echo
else # Not using MetalLB and using pubilc IP. This is the default
echo "To access apps from a browser edit your /etc/hosts to add the public IP of your EC2 instance with application hostnames."
echo "Example:"
echo "${PublicIP} gitlab.bigbang.dev prometheus.bigbang.dev kibana.bigbang.dev"
echo " ${PublicIP} gitlab.bigbang.dev prometheus.bigbang.dev kibana.bigbang.dev"
echo
fi
......@@ -54,6 +54,22 @@ k3d-dev.sh -b -p -m -d -h
-d destroy related AWS resources
-h output help
```
## To use a different AWS profile, VPC, or AMI
The script uses the default AWS profile and defaults the VPC id and AMI id.
To change this default behavior you can export environment variables before running the script.
Run the script with a specifc AWS profile by first exporting the AWS_PROFILE environment variable
```
export AWS_PROFILE=my-aws-profile
```
To run the script with a specific VPC
```
export VPC_ID=vpc-XXXXXXXXXXXX
```
To run the script with a specific AMI
```
export AMI_ID=ami-XXXXXXXXXX
```
## After Running The Script
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment