AWS 几种部署方式

IAM上用户权限策略 添加上以下

AdministratorAccess

AmazonEC2ContainerRegistryFullAccess

AmazonEC2ContainerRegistryPowerUser

AmazonEC2ContainerRegistryReadOnly

IAMUserChangePassword

进入用户详情页面

选择命令行界面 (CLI)

在EC2 机器上输入 aws configure 进行配置

在创建eks以后需要在ec2上

可以通过 yum 安装 AWS_CLI

sudo yum install aws-cli -y

安装eksctl, 参考https://docs.aws.amazon.com/zh_cn/emr/latest/EMR-on-EKS-DevelopmentGuide/setting-up-eksctl.html

# 使用以下命令下载并提取最新版本的 eksctl。

curl --silent --location "https://github.com/weaveworks/eksctl/releases/latest/download/eksctl_$(uname -s)_amd64.tar.gz" | tar xz -C /tmp

# 将提取的二进制文件移动到 /usr/local/bin

sudo mv /tmp/eksctl /usr/local/bin

# 使用以下命令测试您的安装是否成功。您必须使用 eksctl 0.34.0 版本或更高版本。

eksctl version

安装kubectl

curl -O https://s3.us-west-2.amazonaws.com/amazon-eks/1.26.4/2023-05-11/bin/linux/amd64/kubectl

curl -O https://s3.us-west-2.amazonaws.com/amazon-eks/1.26.4/2023-05-11/bin/linux/amd64/kubectl.sha256 sha256sum -c kubectl.sha256 chmod +x ./kubectl sudo

mv kubectl /usr/bin/kubectl

在aws 上创建eks和计算节点

参考 https://blog.csdn.net/zgpeace/article/details/139584256

在aws 更新kubeconfig后会出现的问题

 

aws eks update-kubeconfig --region us-west-2 --name k8s
kubectl get nodes
kubectl get cs
kubectl config get-contexts
cd .aws
cat credentials

eksctl 的使用当你直接使用kubectil相关的命令时候,报错:

couldn't get current server API group list: the server has asked for the client to provide credentials

这说明的kubectl,还没有配置到访问 EKS 集群的凭证。

主体ARN 填写用户名

选择AmazonEKSAdminPolicy, 点下一步然后创建

访问策略需要添加上下面两项(AmazonEKSAdminPolicy, AmazonEKSClusterAdminPolicy)

完成后查看集群的详情

编写部署的yml文件, 使用kubectl apply -f xxx.yml

准备deployment 部署文件

mysql-secret.yml

apiVersion: v1
kind: Secret
metadata:
  name: mysql-credentials
  namespace: springboot
type: Opaque
data:
  username: YWRtaW4K
  password: ZGVuZzEyMzQ1Ngo=

spring-backend-dplm.yml 文件

---
apiVersion: v1
kind: Service
metadata:
  name: springboot-app-service
  namespace: springboot
spec:
  selector:
    app: springboot-app
  ports:
  - port: 8080
    targetPort: 8080
  type: LoadBalancer
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: springboot-app
  namespace: springboot
spec:
  replicas: 3
  selector:
    matchLabels:
      app: springboot-app
  template:
    metadata:
      labels:
        app: springboot-app
    spec:
      containers:
      - name: springboot-app
        image: 043942809940.dkr.ecr.ap-south-1.amazonaws.com/springboot/backend:latest
        imagePullPolicy: Always
        env:
        - name: SPRING_DATASOURCE_URL
          value: jdbc:mysql://internet-db-1.cfiee6wg8md5.ap-south-1.rds.amazonaws.com:3306/springboot
        - name: SPRING_DATASOURCE_USERNAME
          value: 'admin'
        - name: SPRING_DATASOURCE_PASSWORD
          value: 'xxx'

部署成功后检查LoadBalancer的DNS 地址

浏览器上检查,接口通的

构造前端镜像并推送到

利用apprunner创建服务 进行部署

https://blog.csdn.net/keeppractice/article/details/132916879

利用 ECS创建服务 进行部署 例子

https://blog.csdn.net/SinnetCloud/article/details/100231237

通过 ECS 进行部署

创建task-definition.json

{
  "family": "dev-springboot-backend-task",
  "executionRoleArn": "ecsTaskExecutionRole",
  "networkMode": "awsvpc",
  "containerDefinitions": [
    {
      "name": "springboot-backend",
      "image": "043942809940.dkr.ecr.ap-south-1.amazonaws.com/springboot/backend:latest",
      "portMappings": [
        {
          "containerPort": 8080,
          "hostPort": 8080,
          "protocol": "tcp"
        }
      ],
      "environment": [
        {"name": "SPRING_DATASOURCE_URL", "value": "jdbc:mysql://internet-db-1.cfiee6wg8md5.ap-south-1.rds.amazonaws.com:3306/springboot"},
        {"name": "SPRING_DATASOURCE_USERNAME", "value": "admin"},
        {"name": "SPRING_DATASOURCE_PASSWORD", "value": "deng123456"}
      ],
      "logConfiguration": {
        "logDriver": "awslogs",
        "options": {
          "awslogs-create-group": "true",
          "awslogs-group": "/ecs/dev-springboot",
          "awslogs-region": "ap-south-1",
          "awslogs-stream-prefix": "springboot"
        }
      }
    }
  ],
  "requiresCompatibilities": [
    "FARGATE"
  ],
  "cpu": "2048",
  "memory": "4096"
}

使用下面命令进行创建


aws ecs register-task-definition --cli-input-json file:task-definition.json

executionRoleArn的创建在IAM Role里

指定服务为Elastic Container Service Task

添加权限AmazonECSTaskExecutionRolePolicy

运行新任务

ECS 创建service

利用CodeCommit实现CICD

1, 添加AWSCodeCommitPowerUser的IAM user权限策略

2 创建 Git 凭据,以便通过 HTTPS 连接到 CodeCommit

使用HTTPS连接和 Git 凭据,您可以在中生成静态用户名和密码IAM。然后,您可以在 Git 和支持 Git 用户名及密码身份验证的任何第三方工具中使用这些凭证。大多数IDEs开发工具都支持这种方法。这是最简单、最简单的连接方法 CodeCommit。

生成凭证

在codeBuild 里创建一个项目, 添加和构建相关的环境变量和使用buildspec.yml文件作为构建文件

进入IAM管理页面,在角色中找到第一步中角色名称。在权限中添加AmazonS3FullAccess

CodeBuild

buildspec.yml里内容

version: 0.2

env:
  variables:
    AWS_ACCOUNT_ID: "xxx"
    AWS_REGION: "ap-northeast-2"
    IMAGE_REPO_NAME: "springboot/hello"

phases:
  install:
    commands:
      - echo "Installing Maven..."
      - yum install -y maven
      - echo "Installing Docker..."
      - yum install -y docker
      - docker info
      - docker pull maven:3.8.5-openjdk-17

  pre_build:
    commands:
      - echo "Building the Maven project..."
      - docker run --rm -v $(pwd)/springTest2:/usr/src/mymaven -w /usr/src/mymaven maven:3.8.5-openjdk-17 mvn clean install

  build:
    commands:
      - echo "Building the Docker image..."
      - docker build -t $IMAGE_REPO_NAME:latest .
      - echo "Logging in to Amazon ECR..."
      - aws ecr get-login-password --region $AWS_REGION | docker login --username AWS --password-stdin $AWS_ACCOUNT_ID.dkr.ecr.$AWS_REGION.amazonaws.com
      - echo "Tagging the Docker image..."
      - docker tag $IMAGE_REPO_NAME:latest $AWS_ACCOUNT_ID.dkr.ecr.$AWS_REGION.amazonaws.com/$IMAGE_REPO_NAME:latest

  post_build:
    commands:
      - echo "Pushing the Docker image to ECR..."
      - docker push $AWS_ACCOUNT_ID.dkr.ecr.$AWS_REGION.amazonaws.com/$IMAGE_REPO_NAME:latest
      - echo "Updating ECS service with the new image..."
artifacts:
  files:
    - '**/*'

CodePipline

利用CodePipline 把CodeCommit-> CodeBuild -> deploy to ECS 串起来可以做到CI/CD 部署, 关于EKS 部署aws没有提供配置的地方需要手写shell脚本去实现

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

CHEN_RUI_2200

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值