kubernetes

外部サービスをIngress backendとして使用する

TL;DR Service type: ExternalNameを使用する External Service Kubernetesでは、Ingressを使用することで、ホスト名ベースのロードバランシング/リバースプロキシを行うことが出来ます。その際、プロキシ先としてKubernetes上のServiceを指定するのですが、場合によってはKubernetesクラスタ外のサービスをプロキシ先としたい場合があります。例えば、弊宅の環境では、次の様にプロキシしています。 基盤であるOpenNebulaのダッシュボード以外は*.web-apps.techとして、Kubernetesへとルーティングしています。 ところで、本ブログは現在Kubernetes上へ移行作業中です。今のところはまだ、Kubernetes上へ載せていません。

外部サービスをIngress backendとして使用する
Read more...

ingress-nginxを使用してオンプレでもIngressを使用する

TL;DR ingress-nginxを使用するとオンプレでもIngressを使用出来る MetalLBと組み合わせる Ingress IngressはKubernetesの機能の一つで、L7 LoadBalancerの機能を持ちます。先日紹介したtype LoadBalancerは、L4 LoadBalancerで、クラスタ内のDNSで名前解決をし、IP制限などをすることが出来ます。それに対し、Ingressでは、HTTPSの終端となることが出来、ホスト名ベース・パスベースのルーティングを行うことが出来ます。 通常、オンプレでKubernetesを構築した場合、Ingress Controllerと呼ばれる、Ingressを作成する機能が無いためにIngressを使用することが出来ません。 しかし、

ingress-nginxを使用してオンプレでもIngressを使用する
Read more...

MetalLBを使用してオンプレでもtype: LoadBalancerを使用する

TL;DR MetalLBを使用することでオンプレ(not on OpenStack)に構築したk8sでもtype: LoadBalancerを使用できる type: LoadBalancer kubespray等を使用して、Kubernetesをオンプレ(on OpenStackを除く)で構築した場合、通常、type: LoadBalancerを使用することができません。これは、type: LoadBalancerは通常CloudProviderにより管理されており、オンプレ(on OpenStackを除く)でk8sを構築した場合にはCloudProvider連携が無いためです。

MetalLBを使用してオンプレでもtype: LoadBalancerを使用する
Read more...

Liveness/Readiness Probe

Kubernetesによるヘルスチェックには、Liveness ProbeとReadiness Probeと呼ばれる二つのものがあります。これらは混乱しがちな一方、日本語による情報が多くない(2018/07/26現在で、Google検索の1ページ目にヒットするのが4件ほど)ため、ここで一つ情報をまとめておきます。 共通 Liveness ProbeとReadiness Probeの設定は共通で、DeploymentやPodのマニフェスト内で、containersの中にlivenessProbeとreadinessProbeとしてそれぞれProbe specを記述します。 次の項目を設定することが出来ます。 failureThreshold Success状態の時、何回失敗したらFailureになるか。最小で1回。 Default:

Liveness/Readiness Probe
Read more...

Amazon EKSがGAだと言うので触ってみた

AWSのmanaged Kubernetesで、これまでプライベートベータだったElastic Container Service for KubernetesがGAになったということなので、さくっとクラスタを作成してみました。[1] 参考にしたのはAWS公式、EKSのGetting Started Guideです。 まずはEKSのページを見てみようとしたところ・・・ ぶっ壊れてますね!これはなんかアレですね。 gettext的なのが上手くいっていないように見えるので、画面下から英語にしてみます。 無事、正しいと思われるページが表示されました。 なんか、How it worksの説明の図がちょっとぼやけて見えるのは環境のせいでしょうか。 扨、

Amazon EKSがGAだと言うので触ってみた
Read more...

Kubernetesのセキュリティのベストプラクティス by Ian Lewis

Japan Container Days v18.04で表題のセッションを聞いたので、まとめました。 スライド資料 Kubernetesのセキュリティのベストプラクティス(SpeakerDeck) APIサーバへの攻撃を防ぐ RBACでPodに付与される権限を絞る Podにはシークレットが自動でマウントされるため、不正アクセスにより読み込まれてしまうと危ない FirewallでAPIサーバへのアクセスについてIP制限を付与する いざ、シークレットが漏れた場合でも、APIサーバにアクセスされてしまわないように、ファイアウォールでIP制限をかけておくと良い NetworkPolicyでDBへの接続が許可されるPodを制限する 大体の場合、重要なデータはDBに有るため、DBへのアクセスを絞ることで安全性を上げる example: kind: NetworkPolicy

Kubernetesのセキュリティのベストプラクティス by Ian Lewis
Read more...

kubesprayを使用してkubernetes clusterを構築する(2)

3ヶ月ほど前に、kubesprayを使用してkubernetes clusterを構築するという、kubesprayとkubespray-cliを使用してKubernetesクラスタを構築する記事を書きました。 しかし、kubespray-cliはすでにdeprecatedだということなので、kubespray-cliを使用せずにkubesprayでクラスタを構築する手順をまとめておきます。 要件 kubesprayを使用してkubernetesクラスタを構築するための要件は以下のようになっています。 ansible 2.4以降とpython-netaddr (python-netaddrを忘れがちなので注意) pip install ansible netaddr Jinja 2.9以降(ansibleの依存でインストールされると思います) 構築先サーバがインターネットに接続できること 構築先サーバでswapが無効化されていること 構築先サーバでIPv4 forwardingが有効になっていること

kubesprayを使用してkubernetes clusterを構築する(2)
Read more...

Kubernetes-powered Docker for mac is released!

DockerCon EU 2017で、DockerがKubernetesを統合・サポートすると発表されましたが、本日ついにKubernetesサポート版Docker for macが(Edgeリリースですが)リリースされました! これにより、macを使用している場合は(おそらく過去最も簡単に)開発用Kubernetesクラスタを起動することができるようになりました! この記事では、Docker for macでKubernetesを立ちあげる手順をまとめておきます。 Kubernetesの起動手順 Docker for macのStable版を利用している場合、Edge版をインストールする必要があります。 Install Docker

Kubernetes-powered Docker for mac is released!
Read more...

kubesprayを使用してkubernetes clusterを構築する

注意: 情報が古くなっています。新しい情報にあわせて記事を書いたので、そちらをご覧ください。 kubesprayはproduction readyなkubernetes(k8s)クラスタを構成できるツールです。 Ansibleをベースに作られているため、任意のサーバでk8sクラスタを構成できます。 今回は、3台のVMを用意してクラスタを構成してみます[1]。 検証環境 今回用意したVMは以下の構成です。 2Core 8GB RAM 80GB HDD CentOS 7 IPアドレスは以下の様になっているものとします。 192.168.

kubesprayを使用してkubernetes clusterを構築する
Read more...
Load more