Rancher API使用总结——自动化部属
目的 :
- 根据 LDAP 中的用户,在 APP 创建一个团队。(此处的APP指的是基于java的控制中心,目的是为了管理团队和LADP中用户的关联关系)
- 在harbor中创建镜像仓库
- 在rancher中创建与团队对应的两个环境(在APP中记录rancher环境相关的name,id)
- 环境初始化 :
- 使对应环境生成注册口令 “ RegistrationToken ”,产生相应的Command
- 连接目标主机,并输入获得的 Command
- 通过Rancher部属KubernetesKubernetes
- 通过Rancher部属Kubernetes
步骤 :
- 与Rancher的相关操作,通过rancher-java-sdk实现。
// rancher
// https://mvnrepository.com/artifact/br.com.basis/rancher-java-sdk
compile group: 'br.com.basis', name: 'rancher-java-sdk', version: '1.0.0'
通过ProjectService来创建环境(UI中的environment = API中的project)
环境初始化:
- 获得对应的注册口令
rancher-java-sdk 中创建对应环境的注册口令的方法提示“method not allow” 所以我们自己写了一个方法。
- 发送post 指令至 http://
: /v2-beta/projects/ /registrationtokens - 相应的在 http://
: /v2-beta/registrationtokens 会产生一个 accountId 等于 projectId 的 RegistrationToken - 通过RegistrationTokenService 得到相应的Command
//为了方便采用了与 rancher-java-sdk 一致的写法,通过rancher.type实现接口。package com.dawnpro.devops.util;
import io.rancher.base.Filters;
import io.rancher.base.TypeCollection;
import io.rancher.type.Account;
import io.rancher.type.Project;
import io.rancher.type.SetProjectMembersInput;
import retrofit2.Call;
import retrofit2.Response;
import retrofit2.http.*;
/** * @Author: Dante
* @Desciption:
*@Date: Created in 2018/4/12 0012 15:23
* @Nodified By: in 2018/4/12 0012 15:23
*/
public interface RancherCustomService {
@POST("projects/{id}/registrationtoken")
Call<Project> createRegistrationToken(@Path("id") String id);
}
- 连接相应主机,并运行得到的command。
Kubernetes需要一段由rancher生成的kubeconfig来完成配置。