• Choerodon CLI工具

    Choerodon CLI工具主要面向开发人员,支持使用命令行的方式来执行平台中的页面操作。在使用Choerodon的CLI工具前,需要做以下准备。

    准备操作

    1、下载CLI工具

    2、创建client

    由于cli工具在访问choerodon平台的时候需要授权,所以采用password类型的oauth2方式去获取  token

    需要去choerodon平台的组织下创建客户端,具体设置如下 image

    .c7n.yaml 配置文件

    Contexts:
    - Name: staging
      Server: http://exapmle.hand-china.com
      User:
        OrganizationCode: ""
        OrganizationId: 0
        ProjectCode: ""
        ProjectId: 0
        Token: ""
        UserName: ""
    - Name: uat
      Server: http://exapmle2.hand-china.com
      User:
        OrganizationCode: ""
        OrganizationId: 0
        ProjectCode: ""
        ProjectId: 0
        Token: ""
        UserName: ""
    CurrentContext: staging
    
    配置 说明 是否可选
    Contexts [] 上下文
    Contexts [].Name 上下文名称 必须配置
    Contexts [].Server 猪齿鱼平台地址 必须配置
    Contexts [].User 操作用户
    Contexts [].User.OrganizationCode 组织code 可选,用户可在命令行中操作回写
    Contexts [].User.OrganizationId 组织ID 可选,用户可在命令行中操作回写
    Contexts [].User.ProjectCode 项目code 可选,用户可在命令行中操作回写
    Contexts [].User.ProjectId 项目ID 可选,用户可在命令行中操作回写
    Contexts [].User.Token aouth验证token 不用配置,用户登录后自动回写
    Contexts [].User.UserName 用户名 不用配置,用户登录后自动回写
    CurrentContext 当前命令行所处上下文 必须配置,与Contexts[].Name对应

    登录

    使用c7nctl登录之前,必须在用户根目录下创建.c7n.yaml配置文件

        ./c7nctl login
    

    -U  用户名  -P 密码  –url  平台gateway地址

    登陆完之后,会在用户根目录的回写部分信息,该文件为当前用户的信息,用于后续操作的授权,如果没有登陆然后去操作命令,会提示需要登陆,文件内容为:

        OrganizationCode: choerodon-01
        OrganizationId: 507
        ProjectCode: devops-19-b2
        ProjectId: 999
        Token: d4d92f34-57bd-4ce0-a7f5-2de31ef92750
        UserName: "25147"
    

    image

    登出

        ./c7nctl logout
    

    登出之后,会清空.c7n.yaml文件,登出之后进行命令操作会提示需要 登陆 image

    查询用户有权限的组织

        ./c7nctl get org
    

    结果如下:

    image

    修改上下文中用户默认的组织,默认的组织用于后续命令的默认组织

        ./c7nctl use org -o xxx
    

    image

    查询用户有权限的项目

        ./c7nctl get proj
    

    image

    修改上下文中用户默认的项目,默认的项目用于后续命令的默认项目

        ./c7nctl use proj -p xxx
    

    image

    查询运维项目集群

        ./c7nctl get cluster -p xxx(-p 非必输)
    

    image

    创建运维项目集群

        ./c7nctl create cluster --name xxx --code xxx --description xxx  -p xxx(-p 非必输)
    

    image

    查询集群节点

       ./c7nctl get node -c xxx -p xxx(-p 非必输)
       
       -c: 集群code
    

    image

    查询项目应用服务

       ./c7nctl get app -p xxx(-p 非必输)
    

    image

    查询应用服务版本

       ./c7nctl get app-version -c xxx -p xxx(-p 非必输)
       
       -c: 应用code
    

    image

    创建项目应用服务

        ./c7nctl create app --name xxx --code xxx --type xxx --templateAppServiceId xxx  --templateAppServiceVersionId xxx(--templateAppServiceId --templateAppServiceVersionId 非必须)
    

    如果要从其他已经存在的应用进行引用,那么需要指定templateAppServiceId和templateAppServiceVersionId

    参数 解释
    env 环境code
    type 应用类型 normal或者test
    templateAppServiceId 应用id
    templateAppServiceVersionId 应用发布的版本id

    image

    查询环境列表

        ./c7nctl get env -p xxx(-p 非必输)
    

    image

    创建环境

        ./c7nctl create env --name xxx --code xxx --cluster xxx --description(非必须) -p xxx(-p 非必输)
    

    image

    查询实例列表

        ./c7nctl get instance -e xxx -p xxx(-p 非必输)
    

    image

    查询实例部署的value列表,并下载到本地

        ./c7nctl get value -e xxx -p xxx(-p 非必输)
        
        保存路径是用户目录下的 c7nctl/value/
    

    image image

    创建实例

        ./c7nctl create instance --env xxx --appServiceId xxx --appServiceVersionId xxx --instanceName xxx --valueFile xxx -p xxx(-p 非必输)
    
    参数 解释
    env 环境code
    instanceName 实例名称
    appServiceId 应用ID
    appServiceVersionId 应用实例版本ID
    valueFile 部署配置文件,填写绝对路径

    查询网络

        ./c7nctl get service --env xxx -p xxx(-p 非必输)
    

    image

    创建网络

        ./c7nctl create service --env xxx --file xxx -p xxx (-p 非必输, file是绝对路径)
    
    ---
    apiVersion: v1
    kind: Service
    metadata:
      annotations:
        choerodon.io/network-service-instances: spring-test-15ae5+spring-test-d43f5+spring-test-97935+spring-test-1234
        choerodon.io/network-service-app: gogo
      labels:
        choerodon.io/network: service
      name: spring-aklfjasdklfjssss
    spec:
      externalIPs:
      - 172.18.2.11
      ports:
      - name: http1
        port: 9999
        protocol: TCP
        targetPort: 9999
      sessionAffinity: None
      type: ClusterIP
      selector:
        app: test
        test: app
    

    注意,创建Service的配置文件中需要两个注解,分别是choerodon.io/network-service-instances和choerodon.io/network-service-app,分别表示实例名称和应用名称

    image

    查询域名

       ./c7nctl get ingress --env xxxx
    

    image

    创建域名

        ./c7nctl create ingress --env xxx --file xxx -p xxx (-p 非必输, file是绝对路径)
    
    apiVersion: networking.k8s.io/v1beta1
    kind: Ingress
    metadata:
      annotations: {}
      labels:
        choerodon.io/network: ingress
      name: c7ncli-test
    spec:
      rules:
      - host: 2223.c7nctl-test.com
        http:
          paths:
          - backend:
              serviceName: test-test
              servicePort: 4321
            path: /
      tls:
      - hosts:
        - 2223.c7nctl-test.com
        secretName: asdf
    

    创建域名的前提是有成功创建的Service,并且serviceName指定为成功创建的service的name

    image

    查询证书

        ./c7nctl get cert  --env xxxx -p xxx(-p 非必输)
    

    image

    创建证书

        ./c7nctl create cert --env xxx --file xxx -p xxx (-p 非必输, file是绝对路径)
    
    ---
    apiVersion: certmanager.k8s.io/v1alpha1
    kind: Certificate
    metadata:
      name: c7nctl-cli-test
      namespace: staging-test
    spec:
      commonName: 1.c7nctl-test.com
      dnsNames:
      - 2.c7nctl-test.com
      - 3.c7nctl-test.com
      - 4.c7nctl-test.com
      existCert:
        cert: |
          -----BEGIN CERTIFICATE-----
          MIICYTCCAcoCCQCs45mePIbzRTANBgkqhkiG9w0BAQUFADB1MQswCQYDVQQGEwJV
          UzENMAsGA1UECAwETWFyczETMBEGA1UEBwwKaVRyYW5zd2FycDETMBEGA1UECgwK
          aVRyYW5zd2FycDETMBEGA1UECwwKaVRyYW5zd2FycDEYMBYGA1UEAwwPd3d3LjU5
          MXdpZmkuY29tMB4XDTE4MTAxNzAyMTA0OFoXDTI4MTAxNDAyMTA0OFowdTELMAkG
          A1UEBhMCVVMxDTALBgNVBAgMBE1hcnMxEzARBgNVBAcMCmlUcmFuc3dhcnAxEzAR
          BgNVBAoMCmlUcmFuc3dhcnAxEzARBgNVBAsMCmlUcmFuc3dhcnAxGDAWBgNVBAMM
          D3d3dy41OTF3aWZpLmNvbTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAtxtP
          cxgppTHrbzWloh26fXfIyLZI+YpNMCnJ+4wcv3jnZZ6OZsvnoo0z/yl/A9kDY9r5
          Rft9fwE4WKMSPNKlGd4psPLw1XNHAXhi8RAy1cHgkBMuwor6ZJhFgnsqKk4Xp68D
          jaCI2oxu2SYIBU67Fxy+h7G5BsWKwARtj5kP8NECAwEAATANBgkqhkiG9w0BAQUF
          AAOBgQC2Pko8q1NicJ0oPuhFTPm7n03LtPhCaV/aDf3mqtGxraYifg8iFTxVyZ1c
          ol0eEJFsibrQrPEwdSuSVqzwif5Tab9dV92PPFm+Sq0D1Uc0xI4ziXQ+a55K9wrV
          TKXxS48TOpnTA8fVFNkUkFNB54Lhh9AwKsx123kJmyaWccbt9Q==
          -----END CERTIFICATE-----
        key: |
          -----BEGIN RSA PRIVATE KEY-----
          MIICXgIBAAKBgQC3G09zGCmlMetvNaWiHbp9d8jItkj5ik0wKcn7jBy/eOdlno5m
          y+eijTP/KX8D2QNj2vlF+31/AThYoxI80qUZ3imw8vDVc0cBeGLxEDLVweCQEy7C
          ivpkmEWCeyoqThenrwONoIjajG7ZJggFTrsXHL6HsbkGxYrABG2PmQ/w0QIDAQAB
          AoGBAIxvTcggSBCC8OciZh6oXlfMfxoxdFavU/QUmO1s0L+pow+1Q9JjoQxy7+ZL
          lTcGQitbzsN11xKJhQW2TE6J4EVimJZQSAE4DDmYpMOrkjnBQhkUlaZkkukvDSRS
          JqwBI/04G7se+RouHyXjRS9U76HnPM8+/IS2h+T6CbXLOpYBAkEA2j0JmyGVs+WV
          I9sG5glamJqTBa4CfTORrdFW4EULoGkUc24ZFFqn9W4e5yfl/pCkPptCenvIrAWp
          /ymnHeLn6QJBANbKGO9uBizAt4+o+kHYdANcbU/Cs3PLj8yOOtjkuMbH4tPNQmB6
          /u3npiVk7/Txfkg0BjRzDDZib109eKbvGKkCQBgMneBghRS7+gFng40Z/sfOUOFR
          WajeY/FZnk88jJlyuvQ1b8IUc2nSZslmViwFWHQlu9+vgF+kiCU8O9RJSvECQQCl
          Vkx7giYerPqgC2MY7JXhQHSkwSuCJ2A6BgImk2npGlTw1UATJJq4Z2jtwBU2Z+7d
          ha6BEU6FTqCLFZaaadKBAkEAxko4hrgBsX9BKpFJE3aUIUcMTJfJQdiAhq0k4DV8
          5GVrcp8zl6mUTPZDaOmDhuAjGdAQJqj0Xo0PZ0fOZPtR+w==
          -----END RSA PRIVATE KEY-----
    

    image

    查找配置映射

        ./c7nctl get cm  --env xxx -p xxx(-p 非必输)
    

    image

    创建配置映射

        ./c7nctl create cm --env xxx --file xxx -p xxx (-p 非必输, file是绝对路径)
    
    apiVersion: v1
    data:
      key: value
    kind: ConfigMap
    metadata:
      name: c7nctl-cli-test2
    

    image

    查询密文

        ./c7nctl get secret  --env xxxx -p xxx(-p 非必输)
    

    image

    创建密文

        ./c7nctl create secret --env xxx --file xxx -p xxx (-p 非必输, file是绝对路径)
    

    apiVersion: v1 kind: Secret metadata: name: secret-c7n-ctl stringData: key1: value1 key2: value2

    apiVersion: v1
    kind: Secret
    metadata:
      name: secret-c7n-ctl
    stringData:
      key1: value1
      key2: value2
    

    image

    查询自定义资源

        ./c7nctl get custom --env xxxx -p xxx(-p 非必输)
    

    image

    创建自定义资源

        ./c7nctl create custom --env xxx --file xxx -p xxx (-p 非必输, file是绝对路径)
    
    apiVersion: v1
    kind: PersistentVolume
    metadata:
      name: pv-12-18-023
    spec:
      accessModes:
      - ReadWriteMany
      capacity:
        storage: 1Gi
      nfs:
        path: /u01/staging
        server: 192.168.16.215
    

    image

    查询PV

        ./c7nctl get pv
    

    image

    创建PV

        ./c7nctl ceate pv --clusterCode xxx --file xxx
    
    apiVersion: v1
    kind: PersistentVolume
    metadata:
      name: pv-12-18-023
    spec:
      accessModes:
      - ReadWriteMany
      capacity:
        storage: 1Gi
      nfs:
        path: /u01/staging
        server: 192.168.16.215
    

    查询PVC

        ./c7nctl get pvc --env xxx
    

    image

    创建PVC

        ./c7nctl create pvc --clusterCode xxx -envCode xxx --file xxx (file是绝对路径)
    
    apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:
      name: pvc-12-18-111
    spec:
      accessModes:
          - ReadWriteMany
      volumeName: pv-12-18-05
      resources:
        requests:
           storage: 1Gi