【MicroK8s】
公開鍵・秘密鍵 作成
鍵は、ubuntu@master:~$HOME/.CAにあります。
Secretオブジェクトの作成
Secretとは、パスワードやトークン、キーなどの少量の機密データを含むオブジェクト。
ubuntu@master:~$ cd $HOME/.CA
ubuntu@master:~$ kubectl create secret tls ca-key-pair --key=ca.key --cert=ca.crt
secret/ca-key-pair created
ubuntu@master:~$ cd $HOME
ubuntu@master:~$ kubectl get secret
NAME TYPE DATA AGE
ca-key-pair kubernetes.io/tls 2 4h7m
ubuntu@master:~$ kubectl get secret ca-key-pair -o yaml
apiVersion: v1
data:
tls.crt: 02V...
tls.key: LS0...
kind: Secret
metadata:
creationTimestamp: "2023-06-02T02:55:48Z"
name: ca-key-pair
namespace: default
resourceVersion: "4351"
uid: daa9190b-371f-4233-a3a1-5382fc8312ca
type: kubernetes.io/tls
マニフェスト作成
ubuntu@master:~$ mkdir cert
この中にyamlファイルを作成する
Issuer (発行者)
cert/issuer.yaml
apiVersion: cert-manager.io/v1
kind: Issuer
metadata:
name: ca-issuer
namespace: default
spec:
selfSigned: {}
Certificate (証明書)
cert/certificate.yaml
apiVersion: cert-manager.io/v1
kind: Certificate
metadata:
name: microk8s.local
namespace: default
spec:
secretName: microk8s-local-tls
isCA: true
issuerRef:
name: ca-issuer
kind: Issuer
commonName: microk8s.local
dnsNames:
- www.microk8s.local
確認
ubuntu@master:~$ kubectl apply -f cert
certificate.cert-manager.io/minikube.local created
issuer.cert-manager.io/ca-issuer created
ubuntu@master:~$ kubectl get issuer
NAME READY AGE
ca-issuer True 160m
ubuntu@master:~$ kubectl get issuer -o yaml
【ingress.yaml spec:に追記】
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
annotations:
cert-manager.io/issuer: "ca-issuer"
[中略]
spec:
[中略]
tls:
- hosts:
- microk8s.local
secretName: ca-issuer
ubuntu@master:~$ kubectl apply -f ingress.yaml
ingress.networking.k8s.io/sample-ingress configured
サーバ証明書の登録
ubuntu@master:~$ sudo mkdir /usr/share/ca-certificates/mylocal
ubuntu@master:~$ sudo cp $HOME/.CA/server.crt /usr/share/ca-certificates/mylocal
ubuntu@master:~$ sudo vim /etc/ca-certificats.conf
/etc/ca-certificates.confに、/usr/share/ca-certificatesからの相対パスで、ファイル名を追記する。
ubuntu@master:~$ sudo update-ca-certificates
ルート証明書のインストール
masterノード内のサーバ証明書をホストにコピー
【multipass】
$ multipass transfer master:.CA/server.crt ./
【lxc】
$ lxc file pull master/root/.CA/server.crt ./
プライベート認証局のルート証明書をインストールします。
右上のハンバーガーメニューから「設定」を選択します。
保護されていない通信になる!
「詳細設定」をクリックして、
「microk8s.localにアクセスする (安全ではありません)」をクリックすれば開く。
誰からも認証されていない自己署名証明書じゃ仕方ないか…