全部產品
Search
文件中心

Compute Nest:通過容器部署物建立並更新服務

更新時間:Nov 22, 2024

本文介紹服務商如何通過容器部署物管理容器鏡像版本,建立關聯部署物的服務,向使用者提供建立和更新服務執行個體功能。

準備工作

  1. 本樣本中,將在ACK叢集中建立容器資源。因此需要提前準備一個可用的ACK叢集。關於建立ACK叢集操作,請參見建立ACK託管叢集

  2. 本樣本中,使用Nginx鏡像模擬部署物升級流程,並將鏡像版本從nginx 1.7升級至nginx 1.8。您需要將鏡像提前下載到本地。

    docker pull nginx:1.7
    docker pull nginx:1.8

流程介紹

5.png

步驟一:建立和發布部署物

建立服務前,需要先完成部署物的建立和發布。

  1. 登入計算巢控制台

  2. 在左側導覽列中,選擇服務部署物,在部署物頁簽中單擊建立部署物

    2024-05-16_16-17-55.png

  3. 在建立部署物介面,填寫部署物資訊,然後根據頁面提示,擷取訪問憑證並推送nginx:1.7鏡像。更多資訊,請參見建立部署物

    image

  4. 單擊發布部署物

    可在部署物管理頁面單擊部署物名稱。進入部署物詳情介面後即可看到部署物版本1已經是可用狀態了。2.jpeg

步驟二:建立服務

  1. 登入計算巢控制台

  2. 在左側導覽列中,選擇我的服務,並在我的服務頁面中選擇我建立的服務,然後單擊建立新服務

  3. 建立新服務介面,根據規劃配置相關參數。

    此處只列舉建立服務需要特別配置的參數,其他參數配置,請參見建立私人部署服務

    1. 錄入模板地區的模板內容,填寫使用自訂鏡像建立單ECS執行個體的服務範本。模板內容,請參見模板樣本

    2. 部署物關聯處,設定容器鏡像關聯。

      關聯已建立的容器鏡像部署物,並選擇部署物的版本為版本1。2024-05-16_16-22-08.png

  4. 單擊儲存服務

  5. 測試服務。

    服務儲存後,您需要對建立的服務進行測試,保證其正常可用。更多資訊,請參見測試服務

  6. 發布服務。

    服務測試通過後,再提交審核,審核通過後即可發布上線。更多資訊,請參見上線服務

步驟三:建立和查看服務執行個體

  1. 建立服務執行個體。

    更多資訊,請參見建立私人部署服務執行個體

  2. 查看服務執行個體的版本資訊。

    在計算巢控制台,找到您建立的服務執行個體,然後單擊服務執行個體ID進入服務執行個體詳情頁,查看服務執行個體的版本資訊。3.jpeg

  3. 在ACKContainer Service控制台查看容器鏡像資訊。4.jpeg

步驟四:更新部署物

  1. 登入計算巢控制台

  2. 在左側導覽列,單擊服務部署物,進入部署物管理頁面。

  3. 找到已建立的部署物,單擊建立新版本,進入建立新版本頁面,擷取訪問憑證推送nginx:1.8鏡像。p749799.jpeg

  4. 單擊發布部署物

步驟五:更新服務

  1. 登入計算巢控制台

  2. 到需要更新的服務,單擊建立新版本,進入建立新版本介面,更新參數。

    此處只列舉更新鏡像需要特別配置的參數,其他參數配置,請參見更新服務

    1. 部署物關聯設定容器鏡像關聯處,將關聯鏡像修改為部署物更新後的鏡像版本。2024-05-16_16-25-01.png

    2. 升級配置地區的升級資訊處,配置升級資訊。

      配置項

      配置樣本值

      是否支援升級

      支援使用者升級服務執行個體

      是否支援復原

      支援使用者復原服務執行個體

      升級描述

      nginx1.8版本

      支援升級版本

      全部版本

      升級服務元件

      服務配置

  3. 單擊提交審核

步驟六:升級服務執行個體

  1. 登入計算巢控制台

  2. 在左側導覽列中選擇服務執行個體

  3. 單擊服務執行個體ID,進入服務執行個體詳情頁面。單擊右上方的升級服務執行個體。進入升級服務執行個體彈窗。

  4. 選擇升級版本,然後單擊開始升級7.jpeg

步驟七:查看升級後的服務執行個體版本和鏡像資訊

  1. 登入計算巢控制台

  2. 在左側導覽列中,單擊服務執行個體

  3. 找到您建立的服務執行個體,單擊服務執行個體ID,進入服務執行個體詳情頁,查看服務執行個體版本是否更新。在Container Service控制台查看Nginx鏡像是否已經更新。8.jpeg

模板樣本

ROSTemplateFormatVersion: '2015-09-01'
Description:
  en: A simple demo that deploys a MySQL and a container-base app into ack. 
  zh-cn: 在ACK中部署容器應用和MySQL。
Parameters:
  ClusterId:
    Type: String
    Description:
      en: >-
        The ID of Kubernetes ClusterId in which application deployed.
      zh-cn: >-
        部署應用程式的K8s叢集ID
    AllowedPattern: '[0-9a-z]+$'
    Label:
      en: Kubernetes ClusterId
      zh-cn: K8s叢集ID
    ConstraintDescription:
      en: >-
        must be lowercase letters or numbers
      zh-cn: '叢集ID必須由小寫字母或者數字組成'
Resources:
  ClusterApplication:
    Type: ALIYUN::CS::ClusterApplication
    Properties:
      ClusterId:
        Ref: ClusterId
      DefaultNamespace:
        Ref: ALIYUN::StackName
      YamlContent: |
        apiVersion: v1
        data:
          .dockerconfigjson: {{ computenest::acr::dockerconfigjson }}
        kind: Secret
        metadata:
          name: computenest
        type: kubernetes.io/dockerconfigjson
        ---
        apiVersion: apps/v1
        kind: Deployment
        metadata:
          name: nginx
          labels:
            app: nginx
        spec:
          replicas: 1
          selector:
            matchLabels:
              app: nginx
          template:
            metadata:
              labels:
                app: nginx
            spec:
              containers:
              - name: nginx
                image: {{ computenest::acrimage::nginx }}
                ports:
                - containerPort: 80
              imagePullSecrets:
              - name: computenest
        ---
        apiVersion: v1
        kind: Service
        metadata:
          labels:
            app: nginx
          name: nginx-svc
        spec:
          ports:
          - port: 80
            protocol: TCP
            targetPort: 80
          selector:
            app: nginx
          type: LoadBalancer
Metadata:
  ALIYUN::ROS::Interface:
    ParameterGroups:
      - Parameters:
          - ClusterId
        Label:
          en: ACK Configuration
          zh-cn: ACK參數配置