k8s部署python3项目,并使用gitlab-ci实现自动化发布

  1. git拉取python项目代码仓库代码dockerfile文件放在里面requirements.txt文件写需要的模块
  2. dockerfile制作:
FROM  fnndsc/ubuntu-python3:latest
USER root
WORKDIR /opt/app
COPY  ./  /opt/app/
RUN  pip  install -r  requirements.txt -i https://pypi.mirrors.ustc.edu.cn/simple/
  1. k8s文件comfigmap、service、deployment、hpa
---
#cat configmap.yaml
apiVersion: v1
kind: ConfigMap
metadata:
  name: python-config
  namespace: default
  labels:
    name: python




data:
  app.conf: |
    #基础配置
    [base]
     host_root = "192.168.99.1"
     port = "8118"

#cat deployment.yaml
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name:  python
  namespace: default
  labels:
    name: python
spec:
  replicas: 1
  selector:
    matchLabels:
      name: python
  template:
    metadata:
      labels:
        name: python
    spec:
      containers:
        - name: python
          securityContext:
            runAsNonRoot: false
            runAsUser: 0
          image: "harborip-python:base"
          command: ["/bin/bash"]
          args: ["-c", "/usr/bin/python3 /opt/app/main.py"]
          volumeMounts:
          - name: config
            mountPath: /opt/app/conf/
          ports:
            - name: http
              containerPort: 8118
              protocol: TCP
          livenessProbe:
            tcpSocket:
              port: 8118
            initialDelaySeconds: 5
            periodSeconds: 20
            timeoutSeconds: 3
          readinessProbe:
            tcpSocket:
              port: 8118
            initialDelaySeconds: 5
            periodSeconds: 10
            timeoutSeconds: 3
          resources:
            requests:
              cpu: 1000m
              memory: 1024Mi
            limits:
              cpu: 2000m
              memory: 2048Mi

      volumes:
      - name: config
        configMap:
          name: python-config
 
---
#cat service.yaml
apiVersion: v1
kind: Service
metadata:
  name: python
  namespace: default
spec:
  ports:
    - port: 8118
      targetPort: 8118
      protocol: TCP
  selector:
    name: python
---
#cat hpa.yaml
apiVersion: autoscaling/v1
kind: HorizontalPodAutoscaler
metadata:
  name: python
spec:
  maxReplicas: 3
  minReplicas: 1
  scaleTargetRef:
    apiVersion: extensions/v1beta1
    kind: Deployment
    name: python
  targetCPUUtilizationPercentage: 80
  1. 启动应用
kubectl apply -f ./
  1. gitlab配置ci
#cat .gitlab-ci.yml
stages:
  - docker
  - deploy


docker:
  stage: docker
  image: kaniko-executor:debug
  script:
  - mkdir -p /kaniko/.docker
  - echo "${DOCKER_AUTH_CONFIG}" > /kaniko/.docker/config.json
  - /kaniko/executor --context $CI_PROJECT_DIR --dockerfile $CI_PROJECT_DIR/Dockerfile --destination 192.168.10.100:8080/test/${CI_PROJECT_NAME}:$CI_COMMIT_SHORT_SHA  
  only:
    - master
    
deploy:
  stage: deploy
  image: kubectl:1.18.1
  variables:
    GIT_STRATEGY: none
    K8S_NAME_SPACE: default
  script:
  - mkdir -p $HOME/.kube
  - echo "$KUBERNETES_SECRET" >> "$HOME/.kube/config"
  - kubectl version
  - kubectl get deployments.apps -n ${K8S_NAME_SPACE}
  - kubectl set image deployment/${CI_PROJECT_NAME}  python=192.168.10.100:8080/test/test2:${CI_COMMIT_SHORT_SHA} 
  only:
    - master
    

在这里插入图片描述

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值