argocd藍(lán)綠/金絲雀發(fā)布之rollout

封面

簡介: 藍(lán)綠發(fā)布金絲雀發(fā)布是當(dāng)下互聯(lián)網(wǎng)發(fā)布系統(tǒng)不可繞過的話題。本文演示基于argocd的藍(lán)綠/金絲雀發(fā)布的組件rollout

系列文章同步更新中:

argocd的secret管理之SealedSecret:在git里面加密敏感配置
argocd告警管理之notification服務(wù):讓你第一時(shí)間得到argocd app的狀態(tài)信息
argocd藍(lán)綠/金絲雀發(fā)布之rollout: 快速方便的啟用基于gitops的藍(lán)綠/金絲雀發(fā)布
gitops之a(chǎn)rgocd

一,安裝

rollout是一個(gè)管理k8s副本集的實(shí)現(xiàn)燥透,也是一個(gè)Operator ,部署的時(shí)候需要每個(gè)目標(biāo)集群上都部署,不能像argocd一樣管理多集群。
rollout官網(wǎng)
安裝命令:

kubectl create namespace argo-rollouts
kubectl apply -n argo-rollouts -f https://raw.githubusercontent.com/argoproj/argo-rollouts/stable/manifests/install.yaml

一如既往的像其他argocd組件一樣方便快捷的安裝方式。


rollout deployment
二猜惋,藍(lán)綠發(fā)布啟用

詳情請看清單文件注釋

apiVersion: argoproj.io/v1alpha1
kind: Rollout  ##部署完rollout后就有了這個(gè)kind 資源,這個(gè)資源和deployment類似也是管理你的副本集的培愁,所以不能像deployment那樣在k8s界面看見著摔,只能通過kubectl命令行
metadata:
  name: rollout-bluegreen
  namespace: rollout-test
spec:
  template:
    spec:
      terminationGracePeriodSeconds: 30
      containers:
      - resources: #{}
          requests:
            cpu: "1"
            memory: "2Gi"
          limits:
            cpu: "2"
            memory: "2Gi"
        terminationMessagePolicy: File
        imagePullPolicy: Always
        name: rollout-bluegreen
        image: argoproj/rollouts-demo:green #nginx:1.17.1
      schedulerName: default-scheduler
      securityContext: {}
      dnsPolicy: ClusterFirst
      restartPolicy: Always
    metadata:
      labels:
        app: rollout-bluegreen
  selector:
    matchLabels:
      app: rollout-bluegreen
  replicas: 2
  strategy:
    blueGreen:  ##藍(lán)綠啟用配置
      activeService: rollout-bluegreen-active   #生效的服務(wù),需要自己創(chuàng)建建本代碼最下面service資源竭钝。
      previewService: rollout-bluegreen-preview  #配置預(yù)覽服務(wù)梨撞,同理需要自己創(chuàng)建
      autoPromotionEnabled: true  ##是否直接切換雹洗,如為true,會在新版本變綠后直接切換到對外服務(wù)卧波。
      scaleDownDelayRevisionLimit: 0
      previewReplicaCount: 1  #新版本的pod數(shù)量时肿,設(shè)為一個(gè)從而控制資源消耗
    rollingUpdate:
      maxUnavailable: 25%
      maxSurge: 25%
    type: RollingUpdate
  revisionHistoryLimit: 2
  progressDeadlineSeconds: 600

---
apiVersion: v1
kind: Service
metadata:
  name: rollout-bluegreen-active
  namespace: rollout-test
spec:
  sessionAffinity: None
  selector:
    app: rollout-bluegreen
  ports:
  - protocol: TCP
    port: 80
    targetPort: 8080
  type: LoadBalancer

三,金絲雀發(fā)布啟用

詳情請看清單文件注釋

apiVersion: argoproj.io/v1alpha1
kind: Rollout  ##部署完rollout后就有了這個(gè)kind 資源港粱,這個(gè)資源和deployment類似也是管理你的副本集的螃成,所以不能像deployment那樣在k8s界面看見,只能通過kubectl命令行
metadata:
  name: rollout-bluegreen
  namespace: rollout-test
spec:
  template:
    spec:
      terminationGracePeriodSeconds: 30
      containers:
      - resources: #{}
          requests:
            cpu: "1"
            memory: "2Gi"
          limits:
            cpu: "2"
            memory: "2Gi"
        terminationMessagePolicy: File
        imagePullPolicy: Always
        name: rollout-bluegreen
        image: argoproj/rollouts-demo:green #nginx:1.17.1
      schedulerName: default-scheduler
      securityContext: {}
      dnsPolicy: ClusterFirst
      restartPolicy: Always
    metadata:
      labels:
        app: rollout-bluegreen
  selector:
    matchLabels:
      app: rollout-bluegreen
  replicas: 2
  strategy:
    canary:  #啟用金絲雀發(fā)布
      maxSurge: "25%"
      maxUnavailable: 0
      steps:     ##分步驟階段(每個(gè)階段可以設(shè)置持續(xù)時(shí)間)
      - setWeight: 50   #此階段新版本的比重
      - pause:
          duration: 600  #持續(xù)時(shí)間秒查坪,單位默認(rèn)秒  s/m/h  -->秒/分/小時(shí)
      - setWeight: 100  ##第二個(gè)階段  階段可以多設(shè)置寸宏,canary發(fā)布會自動完成你設(shè)置的所以步驟
      - pause: {}   
    rollingUpdate:
      maxUnavailable: 25%
      maxSurge: 25%
    type: RollingUpdate
  revisionHistoryLimit: 2
  progressDeadlineSeconds: 600

---
apiVersion: v1
kind: Service
metadata:
  name: rollout-bluegreen-active
  namespace: rollout-test
spec:
  sessionAffinity: None
  selector:
    app: rollout-bluegreen
  ports:
  - protocol: TCP
    port: 80
    targetPort: 8080
  type: LoadBalancer

四,總結(jié)

以上就是argocd 基于gitops理念的藍(lán)綠/灰度發(fā)布實(shí)現(xiàn)偿曙。如果想詳細(xì)了解請移步官方文檔氮凝。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市望忆,隨后出現(xiàn)的幾起案子罩阵,更是在濱河造成了極大的恐慌,老刑警劉巖启摄,帶你破解...
    沈念sama閱讀 212,884評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件稿壁,死亡現(xiàn)場離奇詭異,居然都是意外死亡歉备,警方通過查閱死者的電腦和手機(jī)傅是,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,755評論 3 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來蕾羊,“玉大人喧笔,你說我怎么就攤上這事《遣颍” “怎么了溃斋?”我有些...
    開封第一講書人閱讀 158,369評論 0 348
  • 文/不壞的土叔 我叫張陵界拦,是天一觀的道長吸申。 經(jīng)常有香客問我,道長享甸,這世上最難降的妖魔是什么截碴? 我笑而不...
    開封第一講書人閱讀 56,799評論 1 285
  • 正文 為了忘掉前任,我火速辦了婚禮蛉威,結(jié)果婚禮上日丹,老公的妹妹穿的比我還像新娘。我一直安慰自己蚯嫌,他們只是感情好哲虾,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,910評論 6 386
  • 文/花漫 我一把揭開白布丙躏。 她就那樣靜靜地躺著,像睡著了一般束凑。 火紅的嫁衣襯著肌膚如雪晒旅。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 50,096評論 1 291
  • 那天汪诉,我揣著相機(jī)與錄音废恋,去河邊找鬼。 笑死扒寄,一個(gè)胖子當(dāng)著我的面吹牛鱼鼓,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播该编,決...
    沈念sama閱讀 39,159評論 3 411
  • 文/蒼蘭香墨 我猛地睜開眼迄本,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了课竣?” 一聲冷哼從身側(cè)響起岸梨,我...
    開封第一講書人閱讀 37,917評論 0 268
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎稠氮,沒想到半個(gè)月后曹阔,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,360評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡隔披,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,673評論 2 327
  • 正文 我和宋清朗相戀三年赃份,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片奢米。...
    茶點(diǎn)故事閱讀 38,814評論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡抓韩,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出鬓长,到底是詐尸還是另有隱情谒拴,我是刑警寧澤,帶...
    沈念sama閱讀 34,509評論 4 334
  • 正文 年R本政府宣布涉波,位于F島的核電站英上,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏啤覆。R本人自食惡果不足惜苍日,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,156評論 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望窗声。 院中可真熱鬧相恃,春花似錦、人聲如沸笨觅。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,882評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至杀糯,卻和暖如春幽邓,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背火脉。 一陣腳步聲響...
    開封第一講書人閱讀 32,123評論 1 267
  • 我被黑心中介騙來泰國打工牵舵, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人倦挂。 一個(gè)月前我還...
    沈念sama閱讀 46,641評論 2 362
  • 正文 我出身青樓畸颅,卻偏偏與公主長得像,于是被迫代替她去往敵國和親方援。 傳聞我的和親對象是個(gè)殘疾皇子没炒,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,728評論 2 351