2022-04-19 aws ec2 搭建jenkins

jenkins搭建

jenkins官网

关于可以怎么选

虽然可以用 linux原生,又或者eks搭建,但是最后选在 ec2上安装docker搭建
原因:1.使用原生或者eks创建的jenkins需要一台远程docker,连接上才能用,与其这样不如直接在有docker容器的机器上部署jenkins
2.官方文档也安装第一个也是docker部署

环境搭建

1.ec2启动docker
2.docker部署jenkins
可选操作:
如果觉得ec2磁盘小可以申请挂载efs,挂载后可以将efs再挂载在jenkins_home
3.启动jenkins后进入容器内安装aws和kubectl
进入容器

docker exec -it  bash

aws cli 安装
kubectl 安装
kubectl 连接 eks:使用aws更新kubeconfig

aws eks --region  update-kubeconfig --name 
aws eks --region us-west-1 update-kubeconfig --name server-122

关于使用jenkins中出现的问题

  1. 打包时自动挂掉
    ec2内存不足,虽然官方推荐1g可以,但是我这边4g的就不会挂了
  2. 新iam用户 kubectl无法访问eks
    kubectl edit configmap aws-auth --namespace kube-system
mapUsers: |
  - userarn: arn:aws:iam::xxxxxxxxxxx:user/eks-user
    username: eks-user
    groups:
      - system:masters
  1. 考虑到jenkins的宿主机之前安装过aws cli 和 kubectl,在想是否可以简化jenkins的配置
    简单的想法是把所有的程序全部挂载,结果在aws cli的时候失败了,挂载进去的aws cli无法运行
    所以对jenkins进行了二次打包
FROM jenkins/jenkins:lts-jdk11

USER root
RUN  curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
RUN  unzip awscliv2.zip
RUN  ./aws/install

再次运行

docker build -t aws:jenkins .
docker run -u root -d -p 8080:8080 -p 50000:50000  -v /efs/jenkins:/var/jenkins_home -v /etc/localtime:/etc/localtime -v /var/run/docker.sock:/var/run/docker.sock -v $(which docker):/usr/bin/docker -v $(which kubectl):/usr/bin/kubectl -v /home/ec2-user/.kube/:/root/.kube/   -v /home/ec2-user/.aws/:/root/.aws/ --restart=always --name=jenkins aws/jenkins

这样启动的jenkins脚本里可以直接运行 docker,kubect,aws命令

你可能感兴趣的:(2022-04-19 aws ec2 搭建jenkins)