概要
k8sを一つのEC2
(オンプレ)に構築する場合(会社の開発環境構築など)
- 例) Aさんは
dev1.xxx
、Bさんはdev2.xxx
を利用してください
簡単手順
-
golang
、Docker
とk8s
をダウンロードし、手順に沿ってインストールすること-
cri-dockerd
をインストールすること - ダウンロード直後にノードが
NotReady
とk8sの状況でDNS
が動作されてないのでCalico
をインストールすること -
kubeadm
を初期化する段階で--cri-socket=unix:///var/run/cri-dockerd.sock
のオプションが必要になる
-
-
nginx-ingress
をダウンロードする、設定を行う -
nginx-ingress
をダウンロードしたときに、nginx-ingress-controller
のEXTERNAL-IP
はpending
状況になるNAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE ingress-nginx-controller LoadBalancer X.X.X.X <pending> 80:X/TCP,443:X/TCP 4h59m
-
metallb
をダウンロードする、MetallbのLayer2の設定を行う - 設定するときに、昔のバージョンは、IPアドレスの設定をConfigMapですると記載されているが、バージョンアップで変わったので新しく対応する必要ある
- layer2モードのため、
IPAddressPool
を作成し、適応するlayer2Conf.yamlapiVersion: metallb.io/v1beta1 kind: IPAddressPool metadata: name: first-pool namespace: metallb-system spec: addresses: - X.X.X.1-X.X.X.2 # こちらのIPアドレスはプライベートIPアドレスの範囲を設定すること
- 上記を設定するようになると、EC2に
セカンダリプライベート IPv4 アドレス
を追加する必要がある(ひとつずつ追加する) - 上記のIPの設定を行うと、
EXTERNAL-IP
が表示される - EC2のユーザを作成(
sudo useradd -G wheel <username>
)し、作成したユーザに交換すること(下記の手順からは各自のユーザから対応です) - 上記で作成したユーザでKubeConfigを適応すること
mkdir -p $HOME/.kube sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config sudo chown $(id -u):$(id -g) $HOME/.kube/config
- ユーザの権限や設定(Namespaceなど)を各自で設定すること
-
Deployment
、Service
を作成する(k8s公式ホームページを参考) -
Ingress
を作成する、Host
とALB
と連結する- Ingressのホスト欄はRoute53で設定する値と合わせること
この段階で、
Aさんはdev1.xxx、Bさんはdev2.xxxを利用してください
などの要件に対応できます - ALBのターゲットグループは
IP
を指定EXTERNAL-IP
を設定すること - EC2のユーザ作成し、
Ingress
のところを人によって変える - Route53や、ACMの設定もアスタ(*)を活用すること
ALBの設定で、HTTPポートで入った場合、HTTPSでリダイレクトする
HTTPS://#{host}:443/#{path}?#{query}
参考にした記事
各自のNsを設定できるようにするKrew
追記
- calicoインストール手順として
Taintを削除すること
kubectl taint nodes --all node-role.kubernetes.io/control-plane- kubectl taint nodes --all node-role.kubernetes.io/master-
- ingress 適応するときに、うまくできてない場合、ログを確認すること
kubectl logs ingress-nginx-controller-xxxxx-xxxxx -n ingress-nginx
- golang最新版をインストールすると、ダメみたい