static Task <int> Main(string[] args) { return(Deployment.RunAsync(() => { var config = new Config(); var isMiniKube = config.GetBoolean("isMiniKube") ?? false; var redisMaster = new ServiceDeployment("redis-master", new ServiceDeploymentArgs { Image = "k8s.gcr.io/redis:e2e", Ports = { 6379 }, }); var redisReplica = new ServiceDeployment("redis-slave", new ServiceDeploymentArgs { Image = "gcr.io/google_samples/gb-redisslave:v1", Ports = { 6379 }, }); var frontend = new ServiceDeployment("frontend", new ServiceDeploymentArgs { Replicas = 3, Image = "gcr.io/google-samples/gb-frontend:v4", Ports = { 80 }, AllocateIPAddress = true, ServiceType = isMiniKube ? "ClusterIP" : "LoadBalancer", }); return new Dictionary <string, object?> { { "frontendIp", frontend.IpAddress }, }; })); }
/// <summary> /// Creates a new RemoteHostPool using the specified system name and liveliness checker. /// </summary> /// <param name="reachabilityChecker">A delegate that checks if a given host is reachable or not. Used for background checks of unreachable hosts. /// Should return true if the host is reachable, or false if it is unreachable. It should not throw an exception.</param> /// <param name="log">An implementation of <see cref="ILog"/> used for logging.</param> public RemoteHostPool( ServiceDeployment serviceDeployment , IServiceDiscoverySource discovery , ReachabilityChecker reachabilityChecker , Func <DiscoveryConfig> getDiscoveryConfig , ILog log , HealthMonitor healthMonitor , MetricsContext metrics ) { DiscoverySource = discovery; ServiceDeployment = serviceDeployment; ReachabilityChecker = reachabilityChecker; GetDiscoveryConfig = getDiscoveryConfig; Log = log; ReachabilityBroadcaster = new BroadcastBlock <ServiceReachabilityStatus>(null); Health = healthMonitor.Get(discovery.Deployment); Health.SetHealthData(HealthData); ReachableHosts = new List <RemoteHost>(); UnreachableHosts = new List <RemoteHost>(); EndPointsChangedBlockLink = discovery.EndPointsChanged.LinkTo(new ActionBlock <EndPointsResult>(_ => ReloadEndpoints(_))); ReloadEndpoints(discovery.Result); Metrics = metrics; var metricsContext = Metrics.Context(DiscoverySource.Deployment); metricsContext.Gauge("ReachableHosts", () => ReachableHosts.Count, Unit.Custom("EndPoints")); metricsContext.Gauge("UnreachableHosts", () => UnreachableHosts.Count, Unit.Custom("EndPoints")); }
public Guestbook() { var config = new Config(); var isMiniKube = config.GetBoolean("isMiniKube") ?? false; var redisLeader = new ServiceDeployment("redis-leader", new ServiceDeploymentArgs { Image = "redis", Ports = { 6379 } }); var redisReplica = new ServiceDeployment("redis-replica", new ServiceDeploymentArgs { Image = "pulumi/guestbook-redis-replica", Ports = { 6379 } }); var frontend = new ServiceDeployment("frontend", new ServiceDeploymentArgs { Replicas = 3, Image = "pulumi/guestbook-php-redis", Ports = { 80 }, AllocateIPAddress = true, ServiceType = isMiniKube ? "ClusterIP" : "LoadBalancer" }); this.FrontendIp = frontend.IpAddress; }
public Guestbook() { var config = new Config(); var isMiniKube = config.GetBoolean("isMiniKube") ?? false; var redisMaster = new ServiceDeployment("redis-master", new ServiceDeploymentArgs { Image = "k8s.gcr.io/redis:e2e", Ports = { 6379 } }); var redisReplica = new ServiceDeployment("redis-slave", new ServiceDeploymentArgs { Image = "gcr.io/google_samples/gb-redisslave:v1", Ports = { 6379 } }); var frontend = new ServiceDeployment("frontend", new ServiceDeploymentArgs { Replicas = 3, Image = "gcr.io/google-samples/gb-frontend:v4", Ports = { 80 }, AllocateIPAddress = true, ServiceType = isMiniKube ? "ClusterIP" : "LoadBalancer" }); this.FrontendIp = frontend.IpAddress; }
private async Task GetFirstResult() { var config = new ServiceDiscoveryConfig { Scope = _serviceScope, ReloadInterval = _reloadInterval }; var sourceFactory = Kernel.Get <Func <ServiceDeployment, ServiceDiscoveryConfig, ConsulDiscoverySource> >(); var serviceContext = new ServiceDeployment(SERVICE_NAME, ENV); _consulDiscoverySource = sourceFactory(serviceContext, config); await WaitUntilConsulRespondsOrTimeout().ConfigureAwait(false); }
private async Task GetFirstResult() { var config = new ServiceDiscoveryConfig { Scope = _serviceScope, }; var sourceFactory = Kernel.Get <Func <ServiceDeployment, ServiceDiscoveryConfig, ConsulDiscoverySource> >(); var serviceContext = new ServiceDeployment(SERVICE_NAME, ENV); _consulDiscoverySource = sourceFactory(serviceContext, config); _consulDiscoverySource.Init(); await GetNewResult(); }
public override bool Equals(object obj) { if (ReferenceEquals(null, obj)) { return(false); } if (ReferenceEquals(this, obj)) { return(true); } ServiceDeployment other = obj as ServiceDeployment; if (other == null) { return(false); } return(DeploymentEnvironment == other.DeploymentEnvironment && ServiceName == other.ServiceName); }
public IServiceDiscoverySource GetDiscoverySource(ServiceDeployment serviceDeployment, ServiceDiscoveryConfig serviceDiscoveryConfig) { return(new LocalDiscoverySource(serviceDeployment)); }
public ServiceDiscoverySourceBase GetDiscoverySource(ServiceDeployment serviceDeployment, ServiceDiscoveryConfig serviceDiscoveryConfig) { return(new LocalDiscoverySource(serviceDeployment.ServiceName)); }