日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

創(chuàng)建包含容器應(yīng)用和RDS數(shù)據(jù)庫(kù)的服務(wù)

更新時(shí)間:

本文介紹如何在計(jì)算巢創(chuàng)建容器應(yīng)用+RDS數(shù)據(jù)庫(kù)的場(chǎng)景的服務(wù)。

前提條件

已創(chuàng)建ACK集群。更多信息,請(qǐng)參見創(chuàng)建ACK集群

操作流程

本示例使用一個(gè)基本的容器鏡像,并在該鏡像中預(yù)置了數(shù)據(jù)庫(kù)初始化腳本,在服務(wù)創(chuàng)建的過程中自動(dòng)初始化數(shù)據(jù)庫(kù)并在數(shù)據(jù)庫(kù)初始化完成后,向數(shù)據(jù)庫(kù)中插入一條包含ComputeNest名字的數(shù)據(jù)。服務(wù)實(shí)例創(chuàng)建完成后,可以使用API名稱查詢數(shù)據(jù)庫(kù)并返回結(jié)果Hello ComputeNest。步驟如下:

步驟一:準(zhǔn)備容器鏡像

創(chuàng)建服務(wù)前,您需要先準(zhǔn)備容器鏡像并將已準(zhǔn)備好的容器鏡像上傳至計(jì)算巢用于服務(wù)商托管鏡像的私有鏡像倉(cāng)庫(kù)中。

  1. 準(zhǔn)備容器鏡像。

    使用以下任一方法準(zhǔn)備本地容器鏡像。

    • 直接使用阿里云提供的容器鏡像。

      docker pull compute-nest-registry.cn-hangzhou.cr.aliyuncs.com/bestpractice/springboot-demo:demo
    • 重新編寫源代碼創(chuàng)建容器鏡像。

      1. 獲取鏡像源代碼,根據(jù)業(yè)務(wù)需求完成編寫。

      2. 在源代碼根目錄(即pom.xml所在目錄)下,使用Maven將程序打包為Jar包,Jar包會(huì)自動(dòng)生成到target目錄中。

        mvn install
      3. 構(gòu)建鏡像。

        完成構(gòu)建后,鏡像會(huì)自動(dòng)下載到您本地電腦。

        docker build --build-arg JAR_FILE=target/\*.jar -t <your-image-tag> .
  2. 上傳容器鏡像至計(jì)算巢鏡像倉(cāng)庫(kù)。

    1. 獲取計(jì)算巢鏡像倉(cāng)庫(kù)訪問憑證、打標(biāo)鏡像和推送鏡像Docker命令。

      1. 登錄計(jì)算巢控制臺(tái)

      2. 在左側(cè)導(dǎo)航欄中選擇服務(wù)部署物,然后單擊創(chuàng)建部署物

      3. 在創(chuàng)建部署物界面的部署物類型下,單擊獲取訪問憑證。在彈出的界面中獲取登錄鏡像倉(cāng)庫(kù)、打標(biāo)鏡像和推送鏡像的命令。獲取命令

      4. 在Docker命令行工具,登錄鏡像倉(cāng)庫(kù)、打標(biāo)鏡像和推送鏡像。運(yùn)行命令

步驟二:創(chuàng)建容器鏡像部署物

創(chuàng)建服務(wù)前,需要先完成容器鏡像部署物的創(chuàng)建和發(fā)布。

  1. 登錄計(jì)算巢控制臺(tái)

  2. 在左側(cè)導(dǎo)航欄中,單擊服務(wù)部署物。然后在部署物管理界面,單擊創(chuàng)建部署物

  3. 在創(chuàng)建部署物界面,填寫部署物信息部署物內(nèi)容設(shè)置分發(fā)的信息。

    配置項(xiàng)

    配置示例

    部署物名稱

    springboot容器部署

    部署物版本名稱

    springboot容器部署版本1

    部署物描述

    springboot鏡像容器部署物

    部署物類型

    容器鏡像

    選擇鏡像

    • 部署物名稱:springbootdemo

    • 部署物版本:latest

  4. 單擊發(fā)布部署物

    單擊發(fā)布部署物后,可在部署物管理頁(yè)面,單擊部署物名稱,進(jìn)入部署物詳情界面,查看部署物的部署進(jìn)度。

    當(dāng)部署物狀態(tài)為可用時(shí),表示部署物發(fā)布成功。

    部署物詳情

步驟三:創(chuàng)建服務(wù)

  1. 登錄計(jì)算巢控制臺(tái)

  2. 在左側(cè)導(dǎo)航欄中,單擊我的服務(wù),并在我的服務(wù)頁(yè)面中選擇我創(chuàng)建的服務(wù),然后單擊創(chuàng)建新服務(wù)

  3. 創(chuàng)建新服務(wù)界面,根據(jù)需求配置相關(guān)參數(shù)。

    此處只列舉創(chuàng)建服務(wù)需要特別配置的參數(shù),其他參數(shù)配置,請(qǐng)參見創(chuàng)建私有部署服務(wù)

    • 錄入模板區(qū)域的模板內(nèi)容處,填寫服務(wù)模板內(nèi)容。此處描述模板內(nèi)容中特別配置的參數(shù),詳細(xì)的模板內(nèi)容,請(qǐng)參見模板示例

      • 在容器部署時(shí),需要拉取計(jì)算巢私有鏡像倉(cāng)庫(kù)中的鏡像。ACK集群需要具備訪問計(jì)算巢私有鏡像倉(cāng)庫(kù)的能力。因此在模板中定義了一個(gè)dockerconfigjson類型的Secret,并使用計(jì)算巢標(biāo)識(shí)符{{ computenest::acr::dockerconfigjson }}。

        ClusterApplication:
          DependsOn: Database
          Type: ALIYUN::CS::ClusterApplication
          Properties:
            ClusterId:
              Ref: ClusterId
            YamlContent:
              Fn::Sub:
                - |
                # 省略...
                  apiVersion: v1
                  data:
                    .dockerconfigjson: {{ computenest::acr::dockerconfigjson }}
                  kind: Secret
                  metadata:
                    name: computenestrepo
                    namespace: ${NameSpace}
                  type: kubernetes.io/dockerconfigjson
                # 省略...
      • 在模板中通過{{ computenest::acrimage::springbootdemo }}標(biāo)識(shí)符將模板中的image關(guān)聯(lián)至計(jì)算巢部署物。

        ClusterApplication:
          DependsOn: Database
          Type: ALIYUN::CS::ClusterApplication
          Properties:
            ClusterId:
              Ref: ClusterId
            YamlContent:
              Fn::Sub:
                - |
                # 省略...
                  apiVersion: apps/v1
                  kind: Deployment
                  metadata:
                    labels:
                      app: springboot-demo-deployment
                    name: springboot-demo-deployment
                    namespace: ${NameSpace}
                  spec:
                    progressDeadlineSeconds: 600
                    replicas: 2
                    revisionHistoryLimit: 10
                    selector:
                      matchLabels:
                        app: springboot-demo-pod
                    template:
                      metadata:
                        labels:
                          app: springboot-demo-pod
                      spec:
                        containers:
                          - env:
                              - name: DB_HOST
                                value: ${RdsConnectString}
                              - name: DB_USER
                                value: ${DbUser}
                              - name: DB_PASSWORD
                                value: ${DbPassword}
                            image: {{ computenest::acrimage::springbootdemo }}
                            imagePullPolicy: Always
                            name: springboot-demo-container
                            ports:
                              - containerPort: 8080
                                protocol: TCP
                        imagePullSecrets:
                          - name: computenestrepo
                        restartPolicy: Always
                # 省略...
    • 部署應(yīng)用區(qū)域的容器鏡像關(guān)聯(lián)處,關(guān)聯(lián)已創(chuàng)建的鏡像部署物,并選擇部署物的版本。管理容器鏡像

  4. 單擊保存服務(wù)

  5. 測(cè)試服務(wù)。

    服務(wù)保存后,您需要對(duì)創(chuàng)建的服務(wù)實(shí)例進(jìn)行測(cè)試,保證其正常可用。更多信息,請(qǐng)參見測(cè)試服務(wù)功能

  6. 發(fā)布服務(wù)。

    服務(wù)測(cè)試通過后,再提交審核,審核通過后即可發(fā)布上線。更多信息,請(qǐng)參見上線服務(wù)

步驟四:創(chuàng)建服務(wù)實(shí)例并查詢數(shù)據(jù)庫(kù)

該步驟是服務(wù)商以用戶的身份驗(yàn)證服務(wù)中配置的容器鏡像是否能夠在服務(wù)實(shí)例中正確部署。

  1. 創(chuàng)建服務(wù)實(shí)例。

    更多信息,請(qǐng)參考創(chuàng)建私有部署服務(wù)實(shí)例

    服務(wù)實(shí)例部署成功,則表示鏡像部署物也已經(jīng)在服務(wù)實(shí)例中部署成功。

  2. 查詢數(shù)據(jù)庫(kù)。

    使用kubectl命令行工具查詢LoadBalancer訪問端點(diǎn),并使用獲取到的公網(wǎng)IP訪問應(yīng)用,并查看返回結(jié)果。返回結(jié)果

模板示例

您可以通過如下內(nèi)容,查看本場(chǎng)景中必須的ROS資源和函數(shù)。

本場(chǎng)景詳細(xì)的模板示例如下。

ROSTemplateFormatVersion: '2015-09-01'
Description:
  en: A simple demo that deploys a RDS instance and a container-base app into ack. The app use RDS instance as a persistence storage.
  zh-cn: 新建一個(gè)RDS實(shí)例并向ACK中部署容器應(yīng)用。容器應(yīng)用使用RDS實(shí)例作為數(shù)據(jù)庫(kù)。
Parameters:
  ZoneId:
    Type: String
    AssociationProperty: ALIYUN::ECS::Instance:ZoneId
    Description:
      en: Availability zone ID,<br><b>note: <font color='blue'>Before selecting, please confirm that the Availability Zone supports the specification of creating ECS resources</font></b>
      zh-cn: 可用區(qū)ID
    Label:
      en: VSwitch Available Zone
      zh-cn: 可用區(qū)
  VpcId:
    Type: String
    AssociationProperty: ALIYUN::ECS::VPC::VPCId
  VSwitchId:
    Type: String
    AssociationProperty: ALIYUN::ECS::VSwitch::VSwitchId
    AssociationPropertyMetadata:
      VpcId: ${VpcId}
      ZoneId: ${ZoneId}
  PayType:
    AssociationProperty: ChargeType
    Type: String
    Label:
      en: ECS Instance Charge Type
      zh-cn: 付費(fèi)類型
    Default: PostPaid
    AllowedValues:
      - PostPaid
      - PrePaid
  PayPeriod:
    Type: Number
    Description:
      en: The subscription period. Unit is months.
      zh-cn: 購(gòu)買時(shí)長(zhǎng),單位(月)
    Label:
      en: The subscription period. Unit is months.
      zh-cn: 購(gòu)買時(shí)長(zhǎng),單位(月)
    Default: 1
    AllowedValues:
      - 1
      - 2
      - 3
      - 4
      - 5
      - 6
      - 7
      - 8
      - 9
      - 12
      - 24
      - 36
    AssociationPropertyMetadata:
      Visible:
        Condition:
          Fn::Or:
            - Fn::Equals:
                - ${PayType}
                - PrePaid
            - Fn::Equals:
                - ${PayType}
                - undefined
  RdsInstanceClass:
    Label: MySQL 實(shí)例規(guī)格
    Type: String
    Description:
      zh-cn: 根據(jù)數(shù)據(jù)庫(kù)引擎的類型和可用的區(qū)域支持選擇實(shí)例規(guī)格
      en: 'Select the instance specification based on the type of database engine and the available area support'
    Default: rds.mysql.s2.large
  RdsInstanceStorage:
    Label: 磁盤大小
    Type: Number
    Description:
      zh-cn: RDS 實(shí)例大小,范圍為 20 - 2000,每 5 個(gè)增量,單位為 GB
      en: The size range of RDS instances is 20 - 2000, Incrementing in every 5, unit GB
    MinValue: 20
    MaxValue: 2000
    ConstraintDescription: The size range of RDS instances is 20 - 2000, Incrementing in every 5, unit GB
    Default: 30
  RdsAccountName:
    Type: String
    Label:
      zh-cn: 用戶名稱
      en: Account Name
    Description:
      zh-cn: MySQL 管理員用戶名稱
      en: Account Name
    Default: db_root
  RdsAccountPassword:
    Type: String
    NoEcho: true
    Label:
      zh-cn: 用戶密碼
      en: DB Account Password
    Description:
      zh-cn: |-
        長(zhǎng)度為8~32個(gè)字符。由大寫英文字母、小寫英文字母、數(shù)字、特殊字符中的任意三種組成。支持的特殊字符如下:
        !@#$&amp;%^*()_+-= 。
      en: |-
        The length is 8 ~ 32 characters. It is composed of uppercase English letters, lowercase English letters, numbers and special characters. The special characters supported are as follows:
        !@#$& amp;%^* ()_+-=  .
  ClusterId:
    Type: String
    Description:
      en: >-
        The ID of Kubernetes ClusterId in which application deployed.
      zh-cn: >-
        部署應(yīng)用程序的K8s集群ID
    AllowedPattern: '[0-9a-z]+$'
    Label:
      en: Kubernetes ClusterId
      zh-cn: K8s集群ID
    AssociationProperty: ALIYUN::CS::Cluster::ClusterId
    ConstraintDescription:
      en: >-
        must be lowercase letters or numbers
      zh-cn: '集群ID必須由小寫字母或者數(shù)字組成'
  NameSpace:
    Type: String
    Description:
      en: >-
        The NameSpace in which application deployed.
      zh-cn: >-
        部署應(yīng)用程序的K8s命名空間
Resources:
  EcsSecurityGroup:
    Type: ALIYUN::ECS::SecurityGroup
    Properties:
      VpcId:
        Ref: VpcId
      SecurityGroupIngress:
        - PortRange: '-1/-1'
          Priority: 1
          SourceCidrIp: 0.0.0.0/0
          IpProtocol: all
          NicType: intranet
      SecurityGroupEgress:
        - PortRange: '-1/-1'
          Priority: 1
          IpProtocol: all
          DestCidrIp: 0.0.0.0/0
          NicType: intranet
  DBInstance:
    Type: ALIYUN::RDS::DBInstance
    Properties:
      ZoneId:
        Ref: ZoneId
      VPCId:
        Ref: VpcId
      VSwitchId:
        Ref: VSwitchId
      Engine: MySQL
      EngineVersion: "5.7"
      DBInstanceClass:
        Ref: RdsInstanceClass
      DBInstanceStorage:
        Ref: RdsInstanceStorage
      PayType:
        Ref: PayType
      PeriodType: Month
      Period:
        Ref: PayPeriod
      SecurityIPList: '0.0.0.0/0'
  RdsAccount:
    DependsOn: DBInstance
    Type: ALIYUN::RDS::Account
    Properties:
      DBInstanceId:
        Ref: DBInstance
      AccountType: Super
      AccountName:
        Ref: RdsAccountName
      AccountPassword:
        Ref: RdsAccountPassword
  RdsParameter:
    Type: ALIYUN::RDS::DBInstanceParameterGroup
    Properties:
      DBInstanceId:
        Ref: DBInstance
      Parameters:
        - Key: innodb_large_prefix
          Value: 'ON'
        - Key: innodb_adaptive_flushing_lwm
          Value: '10'
  Database:
    Type: ALIYUN::RDS::Database
    Properties:
      CharacterSetName: UTF8
      DBInstanceId:
        Ref: DBInstance
      DBName: springboot_demo
    DependsOn:
      - DBInstance
  ClusterApplication:
    DependsOn: Database
    Type: ALIYUN::CS::ClusterApplication
    Properties:
      ClusterId:
        Ref: ClusterId
      YamlContent:
        Fn::Sub:
          - |
            apiVersion: v1
            kind: Namespace
            metadata:
              name: ${NameSpace}
            ---
            apiVersion: v1
            data:
              .dockerconfigjson: {{ computenest::acr::dockerconfigjson }}
            kind: Secret
            metadata:
              name: computenestrepo
              namespace: ${NameSpace}
            type: kubernetes.io/dockerconfigjson
            ---
            apiVersion: apps/v1
            kind: Deployment
            metadata:
              labels:
                app: springboot-demo-deployment
              name: springboot-demo-deployment
              namespace: ${NameSpace}
            spec:
              progressDeadlineSeconds: 600
              replicas: 2
              revisionHistoryLimit: 10
              selector:
                matchLabels:
                  app: springboot-demo-pod
              template:
                metadata:
                  labels:
                    app: springboot-demo-pod
                spec:
                  containers:
                    - env:
                        - name: DB_HOST
                          value: ${RdsConnectString}
                        - name: DB_USER
                          value: ${DbUser}
                        - name: DB_PASSWORD
                          value: ${DbPassword}
                      image: {{ computenest::acrimage::springbootdemo }}
                      imagePullPolicy: Always
                      name: springboot-demo-container
                      ports:
                        - containerPort: 8080
                          protocol: TCP
                  imagePullSecrets:
                    - name: computenestrepo
                  restartPolicy: Always
            ---
            apiVersion: v1
            kind: Service
            metadata:
              labels:
                app: springboot-demo-svc
              name: springboot-demo-svc
              namespace: ${NameSpace}
            spec:
              ports:
                - name: http
                  port: 80
                  protocol: TCP
                  targetPort: 8080
              selector:
                app: springboot-demo-pod
              type: LoadBalancer
          - NameSpace:
              Ref: NameSpace
            DbUser:
              Ref: RdsAccountName
            DbPassword:
              Ref: RdsAccountPassword
            RdsConnectString:
              Fn::GetAtt:
                - DBInstance
                - InnerConnectionString
  AppExternalIp:
    Type: DATASOURCE::CS::ClusterApplicationResources
    Properties:
      Kind: Service
      Name: springboot-demo-svc
      ClusterId:
        Ref: ClusterApplication
      Namespace:
        Ref: NameSpace
      JsonPath: $.status.loadBalancer.ingress
      FirstMatch: true
    DependsOn: ClusterApplication
Outputs:
  ExternalIp:
    Value:
      Ref: AppExternalIp
Metadata:
  ALIYUN::ROS::Interface:
    ParameterGroups:
      - Parameters:
          - VpcId
          - ZoneId
          - VSwitchId
        Label:
          en: Network Configuration
          zh-cn: 網(wǎng)絡(luò)參數(shù)配置
      - Parameters:
          - ClusterId
          - NameSpace
        Label:
          en: ACK Configuration
          zh-cn: ACK參數(shù)配置
      - Parameters:
          - RdsInstanceClass
          - RdsInstanceStorage
          - RdsAccountName
          - RdsAccountPassword
        Label:
          en: Database Configuration
          zh-cn: 數(shù)據(jù)庫(kù)參數(shù)配置
      - Parameters:
          - PayType
          - PayPeriod
        Label:
          en: Payment Configuration
          zh-cn: 支付配置