Close

Nginxコンテナに、Let’s Encryptで証明書を自動更新で当てたい場合

サクッとDocker始める docker事始め で作成したnginxコンテナに、Let’s Encryptで証明書を当てたい場合 Let’s Encryptの証明書を更新する(Bitnami on AWS) Let’s Encryptの証明書を更新する(EC2) AmazonLinuxのSSL化対応 この辺りで言及している通り、一度Apache/Nginxを停止してから更新する必要があある 止めていないと以下のようなエラーが出る 通信ルールで遮断している場合も同じエラーがでる模様 参考: Let’s Encryptの証明書を更新する(Bitnami on AWS) 当たり前だけど、DockerでNginxを動かしている場合は、コンテナを止めなければいけない 自動で更新されるように、crontabに入れるなkらこんな感じ

Kubernetes超入門(Vagrant・CentOS7)〜(4)Pod作成〜

Podを作る Kubernetes超入門(Vagrant・CentOS7)〜(3)ノード設定〜の続き 作成したkubernetesの環境でhttpサービスを提供するPodを作成してみる PodはvSphere的に言うとクラスタと理解 Podの中にコンテナたちがいるイメージ Podはyamlファイルで作成できる まずはyamlファイルを格納する適当なワークディレクトリ作成 yamlファイル作成 yamlファイルはpodを作るための設計図 今回は、「httpd」と言うイメージ(redhatのサイトから取得)を元にPodを作成する 先ほど作成したyamlファイルを元にPod作成 確認したところ、作成中(「ContainerCreating」)のまま進まない 状況確認 「/etc/docker/certs.d/registry.access.redhat.com/redhat-ca.crt: no such file or directory」とのこと こちらを参考にエラー対処 http://hylom.net/centos-redhat-registry-certs-error 証明書を入れる必要がある ※「python-rhsm」を入れるという記事もあったがうまくいかなかった ※これをマスターサーバと全てのノードに対して実施しておく 証明書を全てのノードに入れたら、マスターサーバの作業に戻る 先ほど作成したPodを削除して再トライ しばらくすると「Running」のステータスとなった 先ほどのエラーも無くなっている 「Node: kubenodeb/192.168.33.12」からkubenodebで起動していることがわかる kubenodebにログインしてコンテナたちを確認 「kubectl get pod」コマンドでPod情報を拾ってこれる ※kubectlの設定をしている(今回はマスターサーバ)で確認する 「podIP: 172.17.41.2」からPodのIPがわかる Podにhttpアクセスをしてみる httpが無事に起動していることがわかる

Kubernetes超入門(Vagrant・CentOS7)〜(3)ノード設定〜

ノードの設定 Kubernetes超入門(Vagrant・CentOS7)〜(2)マスターサーバ設定〜の続き ここからはコンテナが稼働するノードの設定 「flannel」と「kubernetes」の設定をして、マスターサーバからノードが見えてくればOK 今回は、コンテナ稼働ノードを2台用意しているので2台それぞれに設定が必要 まずはログイン。kubenodeaの方に入る まずは、hostsの設定をしておく これを設定しておかないと、マスターサーバが、ノードを見つけられない 必要なものをインストール funnel設定 マスターサーバー上のetcdを参照するよう「/etc/sysconfig/flanneld」の「FLANNEL_ETCD_ENDPOINTS」を設定する 「flanneld」と「docker」を起動 kubernetes関連設定 「/etc/kubernetes/config」の「KUBE_MASTER」を設定 「/etc/kubernetes/kubelet」の「KUBELET_ADDRESS」「KUBELET_HOSTNAME」「KUBELET_API_SERVER」を設定 「kube-proxy」と「kubelet」を起動 ログアウト ※「kubenodea」と同様にもう一つのコンテナ稼働ノードの「kubenodeb」にも設定しておく (手順省略) マスターサーバからノードが見えるか確認 マスターサーバからノードが見えるか確認する マスターノードにログイン 2ノードとも見えた これでkubernetesの環境は完成! 続きはKubernetes超入門(Vagrant・CentOS7)〜(4)Pod作成〜

Kubernetes超入門(Vagrant・CentOS7)〜(2)マスターサーバ設定〜

マスターサーバの設定 Kubernetes超入門(Vagrant・CentOS7)〜(1)環境づくり〜の続き 先ほど作成したマスターサーバ「kubemaster」の設定をしていく マスターサーバにログイン 必要なものをインストール ざっくりしか理解していないが etcdは設定情報を複数サーバで共有するもの flannelはサーバ間のネットワーク通信を可能にするもの インストールできているか確認 etcdの設定 etcdの設定をする 設定ファイルは「/etc/etcd/etcd.conf」 「ETCD_LISTEN_CLIENT_URLS」の値を変更する 設定できたので、etcdサービスを起動する flannelの設定 flannelの設定をしていく ノード間のネットワーク設定をするということ 「/etc/sysconfig/flanneld」の「FLANNEL_ETCD_PREFIX」の値を確認しておく 先ほど確認した「/atomic.io/network」のkeyを設定しにいく 設定されたか確認 設定できたのでflannelを起動 kubernetesの設定 一旦「/etc/kubernetes/」配下の設定ファイルを確認する 「apiserver」は、文字通りapiを提供しているサービス。Kubernetesを操作するために必要なサービス 「controller-manager」は、コントローラたちを管理するサービス。コントローラはリソースがうまいこと使われるように管理するもの、とざっくり理解 「kubelet」はpodの状態を管理するサービス。マスターサーバでは使わないので今回は起動しない 「proxy」はノードのルーティングを管理するサービス 「scheduler」は、podをどのノードで起動するかなどを決めるサービス ここでやることは 鍵を作成して「apiserver」「controller-manager」「config」に鍵の場所に付いて設定を追加すること まずは鍵の作成 「/etc/kubernetes/apiserver」の設定変更 「KUBE_API_ADDRESS」「KUBE_API_ARGS」に設定追加 「/etc/kubernetes/controller-manager」の設定変更 「KUBE_CONTROLLER_MANAGER_ARGS」に設定追加 「/etc/kubernetes/config」の設定変更 「KUBE_MASTER」に設定追加 設定ができたので起動していく kubectlの設定 「kubectl」はkubernetesを操作するためのコマンドツール これが先ほど起動した「kube-apiserver」経由でapiを叩きにいく コマンドを打つユーザーや場所で設定をする 必ずしもマスターサーバでなくても良いが、今回はマスターサーバで設定する ユーザーはvagrantユーザーで設定してみる ※環境に合わせて設定ください まずはvagrantユーザーに移動 設定していく kubectlコマンドが打てるか確認 うまくいった SSL/TLS証明書の設定 いまいちなぜ必要か理解していないが、 ここでSSL/TLS証明書の設定が必要らしいので淡々と設定していく 独自証明書作成(「ca.key」「ca.crt」) サーバー鍵作成(「server.key」) KubernetesサービスIPアドレス確認…

Kubernetes超入門(Vagrant・CentOS7)〜(1)環境づくり〜

とうとうvSphereでKubernetesが管理できる時代になるということで、 重い腰を上げてKubernetesを触ってみた 参考にしたのはこちらのページ(ありがとうございます) https://knowledge.sakura.ad.jp/3681/ Vagrant環境でKubernetesを動かしたためVagrantならではの設定も記載しています。 前提条件 Mac OS Vagrant Virtualbox 構成図 Vagrant環境づくり どこでも良いが、作業用のディレクトリを作る Vagrantfileを作成 Kubernetesを管理するマスターサーバとして「kubemaster」 コンテナを動かすノードとして「kubenodea」「kubenodeb」を作成する ※名前とIPは環境に合わせて調整ください ※「centos/7」のboxは入れておいてください VMを起動 VMが起動されているか確認 続きはKubernetes超入門(Vagrant・CentOS7)〜(2)マスターサーバ設定〜