国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

基于kubernetes+docker+jenkins的DevOps實踐

paulli3 / 781人閱讀

摘要:一個小服務器加本地一個閑置從機撐進去這么多東西很顯然爆了,于是把拆出來,用上了公共的云服務容器鏡像服務。使用對集群外暴露服務這里使用的是在中部署有官方部署手冊,基本按著走一遍就能部署上去了。

基于kubernetes+docker+jenkins的DevOps實踐

之前自己的項目開發就搭了個cicd的環境,那時候是在本就小的可憐的服務器上搭了一套
jenkins + docker registry + docker
見之前的筆記 docker學習下面
總的差不多這樣:



之后對kubernetes的接觸后,就在之前的基礎上加入kubernetes,其實也就是在服務器拉取鏡像docker run的時候改變為通知kubernetesapiServer對提前配置好的項目配置文件xx.yaml進行更新kubectl appply -f xx.yaml,它會對配置里的鏡像拉取在多個pod里運行,當然還需要對應的service,如果需要暴露給外部還可以添個ingress



一個小服務器加本地一個閑置從機撐進去這么多東西很顯然爆了,于是把jenkins , docker registry拆出來,用上了公共的ali云服務CodePipeline,容器鏡像服務
這里記錄一下。

docker搭建

ubuntu安裝docker官方教程

kubernetes搭建

之前寫的kubernetes學習下面有

使用ali云CodePipeline替代jenkins創建任務
配置->項目名稱:最好為github上代碼的demo項目名稱,這里以bootshiro為例
配置->源碼管理->Git:URL為github上的項目clone url,下面默認master分支
配置->構建觸發器->填寫代碼分支:eg:master 點擊生成觸發器地址留下備用(github webhook配置會用到)


配置->構建項目類型可選maven項目 node python等(按自己需求改編譯打包冊測試腳本)
eg: maven項目 編譯打包: mvn package -B -DskipTests 用例測試: mvn test

配置->鏡像構建和發布: 這里使用ali云的免費docker鏡像倉庫
鏡像版本號最好用jenkins環境變量標記,registry地址證書等就是自己開通的ali云registry地址和賬戶,docker路徑是相對于當前代碼倉庫的Dcokerfile文件路徑,用這個Dockefile文件來生成鏡像。
eg: bootshiro的Dockefile
#VERSION 1.1.0
#基礎鏡像為openjdk:12-alpine

FROM openjdk:12-alpine

#簽名
MAINTAINER tomsun28 "tomsun28@outlook.com"


RUN rm -rf /opt/running/bootshiro*
ADD ./target/bootshiro.jar /opt/running/bootshiro.jar

EXPOSE 8080
WORKDIR /opt/running/

CMD ["java", "-jar", "bootshiro.jar","--spring.profiles.active=prod"]

配置->部署Kubernetes(新): 這里配置對搭建好的k8s環境的apiServer連接,之后好使用apiServer對kubernetes操作
認證方式:選擇認證證書
API服務器地址:為apiServer通訊地址
證書:使用docker授權模式,客戶端Key(key.pem)和客戶端證書(cert.pem)在/etc/kubernetes/admin.conf,服務端CA證書(ca.pem)在/etc/kubernetes/pki/ca.crt
部署配置文件:為k8s部署這個項目的配置文件位置,也是以當前項目代碼倉庫為相對路徑,eg :bootshiro.yaml

# ----------------------bootshiro--------------------- #

# ------bootshiro deployment------ #
kind: Deployment
apiVersion: apps/v1beta2
metadata:
 name: bootshiro-deployment
 labels: 
  app: bootshiro
spec:
 replicas: 1
 selector:
  matchLabels:
   app: bootshiro
 template:
  metadata:
   labels:
    app: bootshiro
  spec:
   containers:
   - name: nginx
     image: registry.cn-hangzhou.aliyuncs.com/tomsun28/bootshiro:${BUILD_NUMBER}
     ports:
     - containerPort: 8080

---

# -------nginx-service--------- #
apiVersion: v1
kind: Service
metadata:
 name: bootshiro-service
spec:
# type: NodePort
 ports:
 - name: server
   port: 8080
   targetPort: 8080
 selector:
  app: bootshiro

# !----------------------bootshiro--------------------- #

這里配置部署文件創建了一個pod實例,創建了與其想對應的service在集群內部暴露服務。
如果部署的應用需要對集群外提供服務,這里還要創建對應的暴露服務的方式,如ingress, nodeport等


-

到此cicd就差不多了,我們開發代碼push到github倉庫上,跟著DevOps流程走,最后項目就會自己運行到kubernetes集群里面了,pod掛了或者從機掛了,k8s會重新啟保證設定數量的pod。

使用ingress對集群外暴露服務

這里使用的是traefik-ingress,在kubernetes中部署traefik有官方部署手冊,基本按著走一遍就能部署上去了。

整合部署的traefik.yaml:

---
kind: ClusterRole
apiVersion: rbac.authorization.k8s.io/v1beta1
metadata:
  name: traefik-ingress-controller
rules:
  - apiGroups:
      - ""
    resources:
      - services
      - endpoints
      - secrets
    verbs:
      - get
      - list
      - watch
  - apiGroups:
      - extensions
    resources:
      - ingresses
    verbs:
      - get
      - list
      - watch
---
kind: ClusterRoleBinding
apiVersion: rbac.authorization.k8s.io/v1beta1
metadata:
  name: traefik-ingress-controller
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: traefik-ingress-controller
subjects:
- kind: ServiceAccount
  name: traefik-ingress-controller
  namespace: kube-system
---
apiVersion: v1
kind: ServiceAccount
metadata:
  name: traefik-ingress-controller
  namespace: kube-system
---
kind: DaemonSet
apiVersion: extensions/v1beta1
metadata:
  name: traefik-ingress-controller
  namespace: kube-system
  labels:
    k8s-app: traefik-ingress-lb
spec:
  template:
    metadata:
      labels:
        k8s-app: traefik-ingress-lb
        name: traefik-ingress-lb
    spec:
      serviceAccountName: traefik-ingress-controller
      terminationGracePeriodSeconds: 60
      containers:
      - image: traefik
        name: traefik-ingress-lb
        ports:
        - name: http
          containerPort: 80
          hostPort: 80
        - name: admin
          containerPort: 8080
        securityContext:
          capabilities:
            drop:
            - ALL
            add:
            - NET_BIND_SERVICE
        args:
        - --api
        - --kubernetes
        - --logLevel=INFO
---
apiVersion: v1
kind: Service
metadata:
  name: traefik-web-ui
  namespace: kube-system
spec:
  selector:
    k8s-app: traefik-ingress-lb
  ports:
  - name: web
    port: 80
    targetPort: 8080
---
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: traefik-web-ui
  namespace: kube-system
  annotations:
    kubernetes.io/ingress.class: traefik
    traefik.frontend.rule.type: PathPrefixStrip

spec:
  rules:
  - host: tom.usthe.com
    http:
      paths:
      - path: /ingress
        backend:
          serviceName: traefik-web-ui
          servicePort: web

使用traefik來暴露service:

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: chess
  namespace: default
  annotations:
    kubernetes.io/ingress.class: traefik
    traefik.frontend.rule.type: PathPrefixStrip
spec:
  rules:
  - host: tom.usthe.com
    http:
      paths:
      - path: /usthe
        backend:
          serviceName: usthe-service
          servicePort: http
      - path: /nginx
        backend:
          serviceName: nginx
          servicePort: http



分享一波阿里云代金券快速上云


轉載請注明 from tomsun28

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/32838.html

相關文章

  • 基于kubernetes+docker+jenkinsDevOps實踐

    摘要:一個小服務器加本地一個閑置從機撐進去這么多東西很顯然爆了,于是把拆出來,用上了公共的云服務容器鏡像服務。使用對集群外暴露服務這里使用的是在中部署有官方部署手冊,基本按著走一遍就能部署上去了。 基于kubernetes+docker+jenkins的DevOps實踐 之前自己的項目開發就搭了個cicd的環境,那時候是在本就小的可憐的服務器上搭了一套 jenkins + docker...

    zhichangterry 評論0 收藏0
  • 優勢+工具+實踐=DevOps&Docker企業級落地

    摘要:的設計模式的設計模式以持續集成持續測試持續交付和持續部署為中心,自動化協作和持續監控是中使用的一些其他設計模式。持續集成持續集成是不斷地將源代碼集成到一個新的構建或發布的過程,源代碼可以在本地存儲中,也可以在或中。 showImg(https://segmentfault.com/img/remote/1460000010452455); 識別二維碼報名活動 8月19日,來自微軟、數人...

    stormjun 評論0 收藏0
  • 構建與定制:唯品會 PaaS 基于 Kubernetes 實踐

    摘要:基于年底或年初沒有推廣的現狀,唯品會部門目前已經做了兩年的時間。唯品會現狀唯品會目前線上有一千多個域,每個域之間相互的依賴比較復雜,每次的部署發布困難。這是唯品會的架構,主要包含持續集成和持續部署。 數人云上海&深圳兩地容器之Mesos/K8S/Swarm三國演義的嘉賓精彩實錄第三更來啦。唯品會是數人云Meetup的老朋友,去年曾做過RPC服務框架和Mesos容器化的分享。本次分享中,...

    JackJiang 評論0 收藏0
  • DevOps 基于Walle小型持續集成實戰(一)概述

    摘要:該文章用于概述一個小型持續集成環境的搭建的方案什么是持續集成持續集成作為當今軟件開發實踐,可以簡單理解為團隊開發相對頻繁的集成他們的工作,一般讓每個成員每天至少集成一次,而這回造成每天會有多次的版本發布。 該文章用于概述一個小型持續集成環境的搭建的方案 什么是持續集成? 持續集成作為當今軟件開發實踐,可以簡單理解為團隊開發相對頻繁的集成他們的工作,一般讓每個成員每天至少集成一次,而這回...

    Yangyang 評論0 收藏0
  • 容器 PaaS 新技術架構下運維實踐

    摘要:王磊此次演講的題目為容器新技術架構下的運維實踐,詳細為大家講解了在基于構建容器的過程中,如何以應用為中心,通過新的技術工具對服務節點集群平臺等多個方面進行管理運維,提高系統的自動化運維能力。 2018年11月16-17日,運維&容器技術盛會 CNUTCon 全球運維技術大會在上海·光大會展中心成功舉辦。時速云聯合創始人兼 CTO 王磊受邀參加此次大會,并發表主題演講。王磊此次演講的題目...

    BaronZhang 評論0 收藏0

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<