lib/porkadot/configs/certs/k8s.rb
module Porkadot; module Configs; class Certs class Kubernetes include Porkadot::Configs::CertsUtils attr_reader :config attr_reader :logger def initialize config @config = config @logger = config.logger end def additional_sans dns_names = [] ips = [] if self.config.k8s.control_plane_endpoint host = self.config.k8s.control_plane_endpoint.split(':')[0] self.ipaddr?(host) ? ips << host : dns_names << host end self.config.nodes.each do |_, node| k = node.name v = node next unless v.labels && v.labels.include?(Porkadot::K8S_MASTER_LABEL) self.ipaddr?(k) ? ips << k : dns_names << k if v.hostname self.ipaddr?(v.hostname) ? ips << v.hostname : dns_names << v.hostname end end sans = dns_names.map {|v| "DNS:#{v}"} + ips.map {|v| "IP:#{v}"} default_sans = %W( DNS:kubernetes DNS:kubernetes.default DNS:kubernetes.default.svc DNS:kubernetes.default.svc.#{self.config.k8s.networking.dns_domain} DNS:porkadot-kubernetes DNS:porkadot-kubernetes.kube-system DNS:porkadot-kubernetes.kube-system.svc DNS:porkadot-kubernetes-latest DNS:porkadot-kubernetes-latest.kube-system DNS:porkadot-kubernetes-latest.kube-system.svc DNS:localhost IP:#{self.config.k8s.networking.kubernetes_ip} IP:127.0.0.1 ) return default_sans + sans.uniq end def target_dir File.join(self.certs_root_dir, 'kubernetes') end def ca_key_path File.join(self.target_dir, 'ca.key') end def ca_cert_path File.join(self.target_dir, 'ca.crt') end def apiserver_key_path File.join(self.target_dir, 'apiserver.key') end def apiserver_cert_path File.join(self.target_dir, 'apiserver.crt') end def kubelet_client_key_path File.join(self.target_dir, 'kubelet-client.key') end def kubelet_client_cert_path File.join(self.target_dir, 'kubelet-client.crt') end def admin_key_path File.join(self.target_dir, 'admin.key') end alias_method :client_key_path, :admin_key_path def admin_cert_path File.join(self.target_dir, 'admin.crt') end alias_method :client_cert_path, :admin_cert_path def sa_private_key_path File.join(self.target_dir, 'sa.key') end def sa_public_key_path File.join(self.target_dir, 'sa.pub') end end end; end; end