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 <CONTAINER ID> bash
aws cli 安装
kubectl 安装
kubectl 连接 eks:使用aws更新kubeconfig
aws eks --region <region_code> update-kubeconfig --name <eks_name>
aws eks --region us-west-1 update-kubeconfig --name server-122
关于使用jenkins中出现的问题
- 打包时自动挂掉
ec2内存不足,虽然官方推荐1g可以,但是我这边4g的就不会挂了 - 新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
- 考虑到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命令