编译环境(python)
部署环境
user ---> ingress ---> endprints ---> pod # 因为endpoints上面有ingress,所以在写配置清单时要用无头service # ingress URL: www.django.cluster.local.com # endPrints service ---> 8080 # Pod django:2+ ## 构建镜像 :python:3.6.13
[root@k8s-master1 ~]# git clone git@gitee.com:chenyang0910/django_test.git [root@k8s-master1 django_test]# cd django_test/ [root@k8s-master1 django_test]# rm -rf .git/ [root@k8s-master1 django_test]# git init git add .git remote add origin git@192.168.12.82:root/django.git git remote add origin git@192.168.12.82:root/django.git git add . git commit -m 'init' git push -u origin master # 拷贝代码链接 git@192.168.12.82:root/django.git # ssh http://192.168.12.82/root/django.git # http
1.编写Dockerfile [root@k8s-master1 django_test]# cat > Doekerfile <<EOf # 指定基础镜像 FROM python:3.6.13 # 安装django框架 RUN pip3 install django==2.0.7 # 设置需要挂载的目录 VOLUME ['/opt'] # 暴露端口,默认也是8080 EXPOSE 8080 # 设置工作目录 WORKDIR /opt # 启动命令,监听所有ip的8080端口 CMD ["./start"] EOF 2.编写启动脚本 [root@k8s-master1 django_test]# cat > start <<EOF #!/bin/bash # 安装插件 pip3 install -r requirements.txt python manage.py runserver 0.0.0.0:8080 EOF [root@k8s-master1 django_test]# chmod +x start
# 构建 [root@k8s-master1 django_test]# docker build -t 18954354671/jenkins-python:py3.6.13-dj2.0.7 . # 推送 [root@k8s-master1 django_test]# docker push 18954354671/jenkins-python:py3.6.13-dj2.0.7
cat > django-python.yaml <<EOF kind: Namespace apiVersion: v1 metadata: name: python-mysql --- kind: Service apiVersion: v1 metadata: name: python-mysql-svc namespace: python-mysql spec: ports: - port: 3306 targetPort: 3306 selector: app: python-mysql deploy: mysql --- kind: Deployment apiVersion: apps/v1 metadata: namespace: python-mysql name: python-mysql-deployment spec: selector: matchLabels: app: python-mysql deploy: mysql template: metadata: labels: app: python-mysql deploy: mysql spec: nodeName: k8s-master1 containers: - name: mysql image: mysql:5.7 env: - name: MYSQL_ROOT_PASSWORD value: "123456" - name: MYSQL_DATABASE value: "shuibianba" --- kind: Namespace apiVersion: v1 metadata: name: python-django --- kind: Service apiVersion: v1 metadata: name: python-django-svc namespace: python-django spec: ports: - port: 8080 targetPort: 8080 clusterIP: None selector: app: python-django deploy: django --- kind: Deployment apiVersion: apps/v1 metadata: namespace: python-django name: python-django-svc spec: selector: matchLabels: app: python-django deploy: django template: metadata: labels: app: python-django deploy: django spec: nodeName: k8s-master1 containers: - name: django image: 18954354671/jenkins-python:py3.6.13-dj2.0.7 command: [ "/bin/bash", "-ce", "tail -f /dev/null" ] volumeMounts: - mountPath: /opt name: python-django-nfs volumes: - name: python-django-nfs nfs: path: /nfs/v5 server: 172.16.12.11 --- kind: Ingress apiVersion: extensions/v1beta1 metadata: name: python-django-ingress namespace: python-django spec: rules: - host: www.django.cluster.local.com http: paths: - backend: serviceName: python-django-svc servicePort: 8080 path: / EOF
[root@k8s-master1 ~]# kubectl django-python.yaml [root@k8s-master1 ~]# kubectl get ingress -n python-django NAME CLASS HOSTS ADDRESS PORTS AGE python-django-ingress <none> www.django.cluster.local.com 80 2m33s [root@k8s-master1 ~]# kubectl get pod -n python-mysql NAME READY STATUS RESTARTS AGE python-mysql-deployment-7f8c9ff55-srgs6 1/1 Running 0 10m # 查看访问域名 [root@k8s-master1 ~]# kubectl get ingress -n python-django NAME CLASS HOSTS ADDRESS PORTS AGE python-django-ingress <none> www.django.cluster.local.com 80 11m # 查看访问端口:32145 [root@k8s-master1 ~]# kubectl get svc -n ingress-nginx NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE ingress-nginx-controller NodePort 10.111.205.92 <none> 80:32145/TCP,443:32075/TCP 4d22h
www.django.cluster.local.com:32145
编译环境:
1、安装go语言
2、优化测试
部署环境:
1、部署
# 下载Golang wget https://golang.google.cn/dl/go1.16.3.linux-amd64.tar.gz # 安装 [root@jenkins opt]# tar -xf go1.16.3.linux-amd64.tar.gz -C /usr/local/ # 添加环境变量 [root@jenkins ~]# vim /etc/profile export GO_HOME=/usr/local/go export GO_ROOT=/usr/local/go export GO_PATH=/opt/go export GOPROXY=https://mirrors.aliyun.com/goproxy/ PATH=$PATH:$GO_HOME:$GO_ROOT:$GO_PATH:$GO_HOME/bin export PATH [root@jenkins ~]# vim /etc/profile [root@jenkins ~]# source /etc/profile [root@jenkins ~]# printenv | grep GO GO_PATH=/opt/go GOPROXY=https://mirrors.aliyun.com/goproxy/ GO_HOME=/usr/local/go GO_ROOT=/usr/local/go
[root@jenkins go]# mkdir /opt/go [root@jenkins go]# cd /opt/go [root@jenkins go]# go mod init jenkins-go [root@jenkins go]# go get -u github.com/gin-gonic/gin [root@jenkins go]# cat > main.go <<EOF package main import "github.com/gin-gonic/gin" func main() { r := gin.Default() r.GET("/ping", func(c *gin.Context) { c.JSON(200, gin.H{ "message": "pong", }) }) r.Run("0.0.0.0:8888") // listen and serve on 0.0.0.0:8080 } EOF [root@jenkins go]# go run main.go [root@jenkins go]# curl http://192.168.12.83:8888/ping {"message":"pong"}
#!/bin/bash git checkout $GIT_TAG export GOPROXY=https://mirrors.aliyun.com/goproxy/ /usr/local/go/bin/go mod init jenkins-go /usr/local/go/bin/go get -u github.com/gin-gonic/gin rm -rf target && mkdir target cd target /usr/local/go/bin/go build ../main.go
#!/bin/bash chmod +x /nfs/v9/target/main kubectl get pods -n golang | awk '{print $1}' | grep -v "NAME" | xargs -I {} kubectl delete pod -n golang {} /nfs/v9/target/main &>/dev/null &
cat > golang.yaml <<EOF kind: Namespace apiVersion: v1 metadata: name: golang --- kind: Deployment apiVersion: apps/v1 metadata: namespace: golang name: golang-deployment spec: selector: matchLabels: app: golang deploy: main template: metadata: labels: app: golang deploy: main spec: nodeName: k8s-master1 containers: - name: golanbg image: centos:7 command: - "/bin/sh" - "-c" - "/opt/target/main" command: [ "/bin/bash", "-ce", "tail -f /dev/null" ] livenessProbe: exec: command: - "/bin/bash" - "-c" - "cat /opt/target/main" periodSeconds: 2 readinessProbe: tcpSocket: port: 38080 initialDelaySeconds: 30 periodSeconds: 2 volumeMounts: - mountPath: /opt name: golang-data volumes: - name: golang-data nfs: path: /nfs/v6 server: 172.16.12.11 --- kind: Service apiVersion: v1 metadata: name: golang-deployment-svc namespace: golang spec: ports: - port: 38080 targetPort: 38080 selector: app: golang deploy: main clusterIP: None --- kind: Ingress apiVersion: extensions/v1beta1 metadata: namespace: golang name: golang-ingrees spec: rules: - host: www.golang.cluster.local.com http: paths: - backend: serviceName: golang-deployment-svc servicePort: 38080 path: / EOF
http://www.golang.cluster.local.com:38080/user/ user/内容随便跟