周日在家里计划的。

俺不加班,但在家学习的时间一样没少!

还没弄完,只粗粗弄了etcd证书。

#! /usr/bin/env bash

set -e
set -u
set -x

THIS_HOST=$

 ]; then
  echo "wrong args."
  echo "usage `basename $0` [ip_address]"
  exit
fi

cs="/usr/bin/cfssl"
csj="/usr/bin/cfssljson"
pki_dir="/etc/kubernetes/pki"
LOCAL_IP=$(hostname -I)
CUR_DIR=$(cd $(); pwd)

if ! [[ ${LOCAL_IP} =~ ${THIS_HOST} ]]; then
  echo "ip not in the local ip."
  exit
fi

function caCsr() {
    cat<<EOF>ca-csr.json
{
  "CN": "kubernetes",
  "key": {
    "algo": "rsa",

  },
  "ca": {
    "expiry": "438000h"
  },
  "names": [
  {
    "C": "CN",
    "ST": "ShangHai",
    "L": "ShangHai",
    "O": "kubernetes",
    "OU": "system"
  }
  ]
}
EOF
}

function caConfig() {
    cat<<EOF>ca-config.json
{
    "signing": {
        "default": {
            "expiry": "438000h"
        },
        "profiles": {
            "server": {
                "expiry": "438000h",
                "usages": [
                    "signing",
                    "key encipherment",
                    "server auth"
                ]
            },
            "client": {
                "expiry": "438000h",
                "usages": [
                    "signing",
                    "key encipherment",
                    "client auth"
                ]
            },
            "peer": {
                "expiry": "438000h",
                "usages": [
                    "signing",
                    "key encipherment",
                    "server auth",
                    "client auth"
                ]
            }
        }
    }
}
EOF
}

function etcdServer() {
    cat<<EOF>etcd-server.json
{
    "CN": "etcdServer",
    "hosts": [
        "127.0.0.1",
        "localhost",
        "${THIS_HOST}"
    ],
    "key": {
        "algo": "rsa",

    },
    "names": [
        {
            "O": "etcd",
            "OU": "etcd Security",
            "C": "CN",
            "L": "ShangHai",
            "ST": "ShangHai"
        }
    ]
}
EOF
}

function etcdPeer() {
    cat<<EOF>etcd-peer.json
{
    "CN": "etcdPeer",
    "hosts": [
    "127.0.0.1",
    "localhost",
    "${THIS_HOST}"
    ],
    "key": {
        "algo": "rsa",

    },
    "names": [
        {
        "O": "etcd",
        "OU": "etcd Security",
            "C": "CN",
            "L": "ShangHai",
            "ST": "ShangHai"
        }
    ]
}
EOF
}

function etcdClient() {
    cat<<EOF>etcd-client.json
{
    "CN": "etcdClient",
    "key": {
        "algo": "rsa",

    },
    "names": [
        {
        "O": "etcd",
        "OU": "etcd Security",
            "C": "CN",
            "L": "ShangHai",
            "ST": "ShangHai"
        }
    ]
}
EOF
}

function initCert() {
    caCsr
    caConfig
    etcdServer
    etcdPeer
    etcdClient
    $cs gencert -initca  ca-csr.json |$csj -bare ca
    mv ca.pem ca.crt&&mv ca-key.pem ca.key
    $cs gencert -ca=ca.crt -ca-key=ca.key -config=ca-config.json -profile=server etcd-server.json|$csj -bare server
    $cs gencert -ca=ca.crt -ca-key=ca.key -config=ca-config.json -profile=client etcd-client.json|$csj -bare client
    $cs gencert -ca=ca.crt -ca-key=ca.key -config=ca-config.json -profile=peer etcd-peer.json|$csj -bare peer

    cp server.pem $pki_dir/etcd/server.crt&cp server-key.pem $pki_dir/etcd/server.key
    cp client.pem $pki_dir/etcd/healthcheck-client.crt&&cp client-key.pem $pki_dir/etcd/healthcheck-client.key
    cp client.pem $pki_dir/apiserver-etcd-client.crt&&cp client-key.pem $pki_dir/apiserver-etcd-client.key
    cp peer.pem $pki_dir/etcd/peer.crt&&cp peer-key.pem $pki_dir/etcd/peer.key
    cp ca.crt $pki_dir/etcd/ca.crt&&cp ca.key $pki_dir/etcd/ca.key

    rm *.csr&&rm *.json&&rm *.crt&&rm *.key

}

initCert 

关于K8S证书生成方面的脚本草稿的更多相关文章

  1. Centos7 Docker配置TLS认证的远程端口的证书生成教程(shell脚本一键生成)

    通过 TLS来进行远程访问 百度百科 - TLS.我们需要在远程 docker 服务器(运行 docker 守护进程的服务器)生成 CA 证书,服务器证书,服务器密钥,然后自签名,再颁发给需要连接远程 ...

  2. kubespray续签k8s证书

    查看证书过期时期 [root@node1 ~]# openssl x509 -in /etc/kubernetes/pki/apiserver.crt -noout -text |grep ' Not ...

  3. Windows下Nginx配置SSL实现Https访问(包含证书生成)

    Vincent.李   Windows下Nginx配置SSL实现Https访问(包含证书生成) Windows下Nginx配置SSL实现Https访问(包含证书生成) 首先要说明为什么要实现https ...

  4. X509 证书生成

    X509证书介绍X.509 是由国际电信联盟(ITU-T)制定的数字证书标准,相信这是人尽皆知的了,目前X.509证书据我所知有三个版本,.net中使用的是x.509-2,X.509-2 版引入了主体 ...

  5. 苹果Xcode 证书生成、设置、应用完整图文教程

    Xcode 证书生成.设置.应用,与大家分享. 为了能够在iPhone或iPod Touch上运行iPhone应用程序,必须使用有效的数字证书签名.这个证书用于将您的开发者身份与在注册期间所提供的已确 ...

  6. SQL SERVER 生成建表脚本

    /****** Object: StoredProcedure [dbo].[GET_TableScript_MSSQL] Script Date: 06/15/2012 11:59:00 ***** ...

  7. Xcode 证书生成、设置、应用

    Xcode 证书生成.设置.应用,与大家分享.如果按下面步骤还不能编译成功,我手把手教你. 开发环境: Mac OS lion 10.7.4 XCode 4.3.3 1         点击钥匙图标 ...

  8. PowerDesigner 如何生成数据库更新脚本

    最近在学习使用PowerDesigner 这个数据库设计工具,发现真的很强大,可以做很多事情,其中就涉及到如果数据库要进行更新了怎么办,主要是增加表,最麻烦的是修改字段名称,增加字段等操作,遇到主要的 ...

  9. HTTPS证书生成原理和部署细节

    看看下面,部分电信用户访问京东首页的时候,会看到右下角有一个浮动广告: 小白用户以为是京东有意放置的,细心的用户会发现,这个 iframe 一层嵌一层的恶心广告很明显是电信/中间人通过 DNS 劫持注 ...

随机推荐

  1. input[type=file]上传文件(格式判断、文件大小、上传成功后操作)

    var isUploadImg = false; //在input file内容改变的时候触发事件******************上传图片 $('#filed').change(function( ...

  2. vue 选城市三级联动

    <div id="example"> <select v-model="prov"> <option v-for="op ...

  3. unity实现剧情对话

    using UnityEngine; using System.Collections; public class Test : MonoBehaviour { private string show ...

  4. 微信小程序-WebSocket应用

    为何有 HTTP 协议还需要 WebSocket ? Http协议 有个缺陷:通信只能由客户端发起.举例来说,我们想了解今天的天气,只能是客户端向服务器发出请求,服务器返回查询结果.HTTP 协议做不 ...

  5. ES--05

    第四十一讲!分词器内部组成 内置分词器 课程大纲 1.什么是分词器 切分词语,normalization(提升recall召回率) 给你一段句子,然后将这段句子拆分成一个一个的单个的单词,同时对每个单 ...

  6. (常用)os模块

    os.getcwd() 获取当前工作目录,即当前python脚本工作的目录路径os.chdir("dirname")  改变当前脚本工作目录:相当于shell下cdos.curdi ...

  7. HashMap遍历的两种方式,推荐使用entrySet()

    第一种: Map map = new HashMap(); Iterator iter = map.entrySet().iterator(); while (iter.hasNext()) {    ...

  8. liunx contos 7.4 安装redis集群

    前前后后安装了几次redis集群,基本上每次安装都会采坑,耗时伤神. 安装redis依赖gcc环境,安装前先检查liunx上面有没有安装GCC 命令:gcc -v 上传redis-4.0.1.tar. ...

  9. Confluence 6 查看系统属性

    当你添加了内存,设置了代理(proxy)或者修改了 Java 的选项,通常比较难判断系统是否已经按照你的修改进行了配置和启动.这个页面将会帮助你查看 Confluence 站点运行使用的系统属性. 你 ...

  10. Confluence 6 自定义 Decorator 模板的宏和针对高级用户

    宏 页面的某些部分使用的是 Velocity  宏进行创建的,包括导航栏.有关宏的创建,你可以参考页面 Working With Decorator Macros 页面中的内容. 针对高级用户 vel ...