安装 cli 安装或更新最新版本的 AWS CLI
1 2 aws configure aws configure list
总体设计看这个
最终看这个
然后输入:aws_access_key_id =
,aws_secret_access_key
,Default region name: us-east-1
,output format 选 json。
推送 ECR
首先创建一个 ECR 的repo 。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 docker build -t namespace/reponame:v${{BK_CI_BUILD_NUM} } .echo "aws sts get-caller-identity" aws sts get-caller-identityecho "docker push ima-accountid(去掉-).dkr.ecr.us-east-1.amazonaws.com/namespace/reponame:latest" docker push ima-accountid(去掉-).dkr.ecr.us-east-1.amazonaws.com/namespace/reponame:v${{BK_CI_BUILD_NUM} } docker build -t namespace/reponame:latest . docker save mkt-api-gateway:latest -o /tmp/image/mkt-api-gateway-image.tar docker tag namespace/reponame:latest ima-accountid(去掉-).dkr.ecr.us-east-1.amazonaws.com/namespace/reponame:latest docker push ima-accountid(去掉-).dkr.ecr.us-east-1.amazonaws.com/namespace/reponame:latest
podman 配置 1 2 3 aws ecr get-login-password --region us-east-1 | \ podman login --username AWS --password-stdin accountid.dkr.ecr.us-east-1.amazonaws.com
eks prerequisite 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 sudo yum install -y unzipsudo yum update -ysudo yum install -y curl unzip wget tar git python3 python3-pip\ncd curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip" \nunzip awscliv2.zip\n./aws/install\naws --versionrm awscliv2.zip curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt) /bin/linux/amd64/kubectl" \nchmod +x kubectl\nsudo mv kubectl /usr/local/bin/\nmv kubectl /usr/local/bin/\n kubectl version --client curl --silent --location "https://github.com/weaveworks/eksctl/releases/latest/download/eksctl_$(uname -s) _amd64.tar.gz" | tar xz -C /tmp\nsudo mv /tmp/eksctl /usr/local/bin\n eksctl version ll /usr/local/bin/mv /tmp/eksctl /usr/local/bin\n eksctl version
cluster.yaml 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 apiVersion: eksctl.io/v1alpha5 kind: ClusterConfig metadata: name: myapp-cluster region: us-east-1 version: "1.32" managedNodeGroups: - name: myapp-cluster-nodes instanceType: t3.medium desiredCapacity: 3 minSize: 3 maxSize: 30 iam: withAddonPolicies: imageBuilder: true iam: withOIDC: true
eksctl create cluster -f cluster.yaml
myapp-deployment.yaml 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 apiVersion: apps/v1 kind: Deployment metadata: name: myapp labels: app: myapp spec: replicas: 3 selector: matchLabels: app: myapp template: metadata: labels: app: myapp spec: containers: - name: myapp image: ima-accountid(去掉-).dkr.ecr.us-east-1.amazonaws.com/namespace/reponame:latest ports: - containerPort: 8111 --- apiVersion: v1 kind: Service metadata: name: myapp-service spec: selector: app: myapp ports: - port: 80 targetPort: 8111 type: LoadBalancer
kubectl apply -f myapp-deployment.yaml
deployment 和 service 是两种不同的 kind。service 本质上是一组规则,不是任何实体运行的进程。
校验部署状态 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 aws eks update-kubeconfig --name myapp-cluster --region us-east-1 kubectl apply -f myapp-deployment.yaml kkubectl config current-context kubectl get deployments kubectl get nodes kubectl get deployments kubectl get services kubectl get pods kubectl glogs pod-name kubectl exec -it podname -- /bin/bash\n kubectl set image deployment/myapp myapp=680522723063.dkr.ecr.us-east-1.amazonaws.com/namespace/reponame:v40 kubectl apply -f myapp-deployment.yaml kubectl edit deployment myapp kubectl rollout restart deployment/myapp kubectl rollout status deployment/myapp kubectl scale deployment mkt-api-gateway2 --replicas=0 kubectl wait --for =delete pod -l app=mkt-api-gateway2 --timeout =60s kubectl delete deployment mkt-api-gateway2 kubectl delete service mkt-api-gateway2-service
路由表补充节点组 通常一个账户能够创建的 vpc 有5个。假设我们创建了一个集群,挂靠到一个vpc,4个subnet。
假设有一个路由表 a。
我们要在vpc里面专门新建一个 internetgateway(互联网网关) igw-df。vpc关联路由表。加了一则新的路由,目标地址为 0.0.0.0/0,并且在目标选择「互联网网关」,填入 igw-df 后保存更改。
回到了 VPC 服务,点选子网,并且选中以下四个子网。编辑子网配置,在自动分配 IP 设置中,我们勾选了「启用自动分配公有 IPv4 地址」选项,并保存。
然后重新建立节点组。