Choerodon CLI工具
Choerodon CLI工具主要面向开发人员,支持使用命令行的方式来执行平台中的页面操作。在使用Choerodon的CLI工具前,需要做以下准备。
准备操作
1、下载CLI工具
- 首先需要下载CLI安装包,请下载0.17.0版本或者更高版本,下载地址如下:https://file.choerodon.com.cn/choerodon-install/c7nctl
- 下载至本地后,将其解压至可执行文件bin目录下即可。
2、创建client
由于cli工具在访问choerodon平台的时候需要授权,所以采用password类型的oauth2方式去获取 token
需要去choerodon平台的组织下创建客户端,具体设置如下
.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"
登出
./c7nctl logout
登出之后,会清空.c7n.yaml文件,登出之后进行命令操作会提示需要 登陆
查询用户有权限的组织
./c7nctl get org
结果如下:
修改上下文中用户默认的组织,默认的组织用于后续命令的默认组织
./c7nctl use org -o xxx
查询用户有权限的项目
./c7nctl get proj
修改上下文中用户默认的项目,默认的项目用于后续命令的默认项目
./c7nctl use proj -p xxx
查询运维项目集群
./c7nctl get cluster -p xxx(-p 非必输)
创建运维项目集群
./c7nctl create cluster --name xxx --code xxx --description xxx -p xxx(-p 非必输)
查询集群节点
./c7nctl get node -c xxx -p xxx(-p 非必输)
-c: 集群code
查询项目应用服务
./c7nctl get app -p xxx(-p 非必输)
查询应用服务版本
./c7nctl get app-version -c xxx -p xxx(-p 非必输)
-c: 应用code
创建项目应用服务
./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 |
查询环境列表
./c7nctl get env -p xxx(-p 非必输)
创建环境
./c7nctl create env --name xxx --code xxx --cluster xxx --description(非必须) -p xxx(-p 非必输)
查询实例列表
./c7nctl get instance -e xxx -p xxx(-p 非必输)
查询实例部署的value列表,并下载到本地
./c7nctl get value -e xxx -p xxx(-p 非必输)
保存路径是用户目录下的 c7nctl/value/
创建实例
./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 非必输)
创建网络
./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
查询域名
./c7nctl get ingress --env xxxx
创建域名
./c7nctl create ingress --env xxx --file xxx -p xxx (-p 非必输, file是绝对路径)
apiVersion: extensions/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
查询证书
./c7nctl get cert --env xxxx -p xxx(-p 非必输)
创建证书
./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-----
查找配置映射
./c7nctl get cm --env xxx -p xxx(-p 非必输)
创建配置映射
./c7nctl create cm --env xxx --file xxx -p xxx (-p 非必输, file是绝对路径)
apiVersion: v1
data:
key: value
kind: ConfigMap
metadata:
name: c7nctl-cli-test2
查询密文
./c7nctl get secret --env xxxx -p xxx(-p 非必输)
创建密文
./c7nctl create secret --env xxx --file xxx -p xxx (-p 非必输, file是绝对路径)
apiVersion: v1kind: Secretmetadata:name: secret-c7n-ctlstringData:key1: value1key2: value2
apiVersion: v1
kind: Secret
metadata:
name: secret-c7n-ctl
stringData:
key1: value1
key2: value2
查询自定义资源
./c7nctl get custom --env xxxx -p xxx(-p 非必输)
创建自定义资源
./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
查询PV
./c7nctl get pv
创建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
创建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