Created
March 11, 2020 18:26
-
-
Save yukiarrr/df476d0928c358ea01052f8226231e2f to your computer and use it in GitHub Desktop.
Create cluster on EKS, and install ALB Ingress Controller
This file contains hidden or 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
#!/bin/bash -e | |
# Step1: Get env | |
if [ ! -e $CLUSTER_YAML_PATH ]; then | |
echo "Not found ${CLUSTER_YAML_PATH}." | |
exit 1 | |
fi | |
cluster_name=$(yq r $CLUSTER_YAML_PATH metadata.name) | |
region=$(yq r $CLUSTER_YAML_PATH metadata.region) | |
# Step2: Create cluster | |
eksctl create cluster -f $CLUSTER_YAML_PATH | |
# Step3: Create policy | |
eksctl utils associate-iam-oidc-provider \ | |
--region $region \ | |
--cluster $cluster_name \ | |
--approve | |
policy_name='ALBIngressControllerIAMPolicy' | |
policy_arn=$(aws iam list-policies --output json | jq -r ".Policies[] | select(.PolicyName == \"${policy_name}\").Arn") | |
if [ -z "$policy_arn" ]; then | |
policy_arn=$(aws iam create-policy \ | |
--policy-name $policy_name \ | |
--policy-document https://raw.githubusercontent.com/kubernetes-sigs/aws-alb-ingress-controller/v1.1.4/docs/examples/iam-policy.json \ | |
--output json | jq -r .Policy.Arn) | |
fi | |
kubectl apply -f https://raw.githubusercontent.com/kubernetes-sigs/aws-alb-ingress-controller/v1.1.4/docs/examples/rbac-role.yaml | |
eksctl create iamserviceaccount \ | |
--region $region \ | |
--name alb-ingress-controller \ | |
--namespace kube-system \ | |
--cluster $cluster_name \ | |
--attach-policy-arn $policy_arn \ | |
--override-existing-serviceaccounts \ | |
--approve | |
# Step4: Install ALB Ingress Controller | |
vpc_id=$(eksctl get cluster \ | |
--name $cluster_name \ | |
--output json | jq -r .[].ResourcesVpcConfig.VpcId) | |
helm repo add incubator http://storage.googleapis.com/kubernetes-charts-incubator | |
helm install incubator/aws-alb-ingress-controller \ | |
--set clusterName=$cluster_name \ | |
--set awsRegion=$region \ | |
--set awsVpcID=$vpc_id \ | |
--set rbac.create=false \ | |
--set rbac.serviceAccountName=alb-ingress-controller \ | |
--generate-name \ | |
--namespace kube-system \ | |
--version 0.1.12 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment