43
loading...
This website collects cookies to deliver better user experience
resource "aws_eks_cluster" "main" {
name = "${var.name}-${var.environment}"
role_arn = aws_iam_role.eks_cluster_role.arn
enabled_cluster_log_types = ["api", "audit", "authenticator", "controllerManager", "scheduler"]
vpc_config {
subnet_ids = concat(aws_subnet.public.*.id, aws_subnet.private.*.id)
}
timeouts {
delete = "30m"
}
depends_on = [
aws_cloudwatch_log_group.eks_cluster,
aws_iam_role_policy_attachment.AmazonEKSClusterPolicy,
aws_iam_role_policy_attachment.AmazonEKSServicePolicy
]
}
test.tfvars
para modificar parámetros como el nombre del cluster, o los CIDR de las subredes.git clone https://github.com/BenjaDiaz/aws-sin-vms
cd aws-sin-vms/1-fargate
terraform apply -var-file=test.tfvars
CLUSTER_NAME=pinkiepie-test
aws --region us-east-1 eks update-kubeconfig --name $CLUSTER_NAME
kubectl -n kube-system get pods
ponyville
. Sólo podremos desplegar pods que tengan un perfil de Fargate asociado.eksctl create fargateprofile \
--cluster $CLUSTER_NAME \
--name ponyville \
--namespace ponyville
eksctl create fargateprofile \
--cluster $CLUSTER_NAME \
--name coredns \
--namespace kube-system \
--labels k8s-app=kube-dns
kubectl patch deployment coredns \
-n kube-system \
--type json \
-p='[{"op": "remove", "path": "/spec/template/metadata/annotations/eks.amazonaws.com~1compute-type"}]'
eksctl utils associate-iam-oidc-provider --cluster pinkiepie-test --approve
curl -o alb-ingress-iam-policy.json https://raw.githubusercontent.com/kubernetes-sigs/aws-alb-ingress-controller/master/docs/examples/iam-policy.json
aws iam create-policy --policy-name ALBIngressControllerIAMPolicy --policy-document file://alb-ingress-iam-policy.json
cat > rbac-role.yaml <<-EOF
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
labels:
app.kubernetes.io/name: alb-ingress-controller
name: alb-ingress-controller
rules:
- apiGroups:
- ""
- extensions
resources:
- configmaps
- endpoints
- events
- ingresses
- ingresses/status
- services
verbs:
- create
- get
- list
- update
- watch
- patch
- apiGroups:
- ""
- extensions
resources:
- nodes
- pods
- secrets
- services
- namespaces
verbs:
- get
- list
- watch
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
labels:
app.kubernetes.io/name: alb-ingress-controller
name: alb-ingress-controller
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: alb-ingress-controller
subjects:
- kind: ServiceAccount
name: alb-ingress-controller
namespace: kube-system
EOF
kubectl apply -f rbac-role.yaml
AWS_ACCOUNT_ID=$(aws sts get-caller-identity | jq -r '.Account')
eksctl create iamserviceaccount \
--name alb-ingress-controller \
--namespace kube-system \
--cluster $CLUSTER_NAME \
--attach-policy-arn arn:aws:iam::$AWS_ACCOUNT_ID:policy/ALBIngressControllerIAMPolicy \
--approve
eksctl create fargateprofile \
--cluster $CLUSTER_NAME \
--name alb-ingress-controller \
--namespace kube-system \
--labels "app.kubernetes.io/name"=alb-ingress-controller
VPC_ID=$(aws ec2 describe-vpcs --filters "Name=tag:Name,Values=$CLUSTER_NAME-vpc" | jq -r '.Vpcs[0].VpcId')
AWS_REGION=us-east-1
cat > alb-ingress-controller.yaml <<-EOF
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
app.kubernetes.io/name: alb-ingress-controller
name: alb-ingress-controller
namespace: kube-system
spec:
selector:
matchLabels:
app.kubernetes.io/name: alb-ingress-controller
template:
metadata:
labels:
app.kubernetes.io/name: alb-ingress-controller
spec:
containers:
- name: alb-ingress-controller
args:
- --ingress-class=alb
- --cluster-name=$CLUSTER_NAME
- --aws-vpc-id=$VPC_ID
- --aws-region=$AWS_REGION
image: docker.io/amazon/aws-alb-ingress-controller:v1.1.6
serviceAccountName: alb-ingress-controller
EOF
kubectl apply -f alb-ingress-controller.yaml
kubectl create namespace ponyville
kubectl -n ponyville apply -f 2048.yaml
kubectl -n ponyville get ingresses.networking.k8s.io
43