Cert Manager

【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にアクセスする (安全ではありません)」をクリックすれば開く。


誰からも認証されていない自己署名証明書じゃ仕方ないか…

タイトルとURLをコピーしました